Raised This Month: $30 Target: $400
 7% 

Solved (Request) Add a CT&T player skin in this plugin.


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Robbin
Junior Member
Join Date: May 2020
Location: Aveiro, Portugal
Old 06-06-2022 , 23:16   (Request) Add a CT&T player skin in this plugin.
Reply With Quote #1

Hello,
The plugin below aims to reach level 50 for a total of 5000 points.
Is it possible to add a player skin when I get 5000 points?

PHP Code:
#include <amxmodx>
#include <fvault>
#include <cstrike>
#include <wm_play>

#define maxranks 15
#define maxlevels 50

#define xPrefix "XP System"

#define RANKS_Noobest 0
#define RANKS_Noob 1
#define RANKS_Newbiee 2
#define RANKS_Easy 3
#define RANKS_Normal 4
#define RANKS_Hard 5
#define RANKS_Expert 6
#define RANKS_SuperExpert 7
#define RANKS_Specialist 8
#define RANKS_Leader 9
#define RANKS_Mayor 10
#define RANKS_Pro 11
#define RANKS_SuperPro 12
#define RANKS_Heroic 13
#define RANKS_God 14

new const VERSION[] =  "1.1"

new SzMaxPlayersSzSayText;
new 
playerPrefix,rankLevelBonus,rankSaveType;

new const 
db_save[] = "cs_rank_system"

new level[33], xp[33], rank[33], g_status_sync

new SzGTeam[3][] = {
    
"Spectator",
    
"Terrorist",
    
"Counter-Terrorist"
}

new const 
xp_num[maxlevels+1] = 

    
15701502503504505506507508509501050115012501350145015501650,
    
175018501950205021502250235024502550,26502750285029503050315032503350345035503650
    
375038503950405041504250435044504550465047505000 
}

new const 
ranks_names[maxranks][]=
{
    
"Noobest",
    
"Noob",
    
"Newbiee",
    
"Easy",
    
"Normal",
    
"Hard",
    
"Expert",
    
"SuperExpert",
    
"Specialist",
    
"Leader",
    
"Mayor",
    
"Pro",
    
"SuperPro",
    
"Heroic",
    
"God"
}

public 
plugin_init()
{
    
register_plugin("XP + LEVEL + RANK SYSTEM"VERSIONAUTHOR)

    
// system of xp+lvl+rank
    
playerPrefix register_cvar("Player Prefix""1"//1-Prefix by RANK, 2-Prefix by LEVEL
    
rankLevelBonus register_cvar("Level Up Bonus""10000"// Amount of money when passing level.
    
rankSaveType register_cvar("XP Save Type""2"// 1 - IP || 2 - Nick || 3 - SteamID
    
    
register_cvar("XPLvlRankSystem"VERSIONFCVAR_SERVER FCVAR_SPONLY //Search for variable on Gametracker.com

    
register_event("StatusValue""showStatus""be""1=2""2!0")
    
register_event("StatusValue""hideStatus""be""1=1""2=0")
    
    
register_clcmd("say""hook_say");
    
register_clcmd("say_team""hook_say_team");
    
    
register_dictionary("cs_rank_system.txt");

    
SzSayText get_user_msgid ("SayText");
    
SzMaxPlayers get_maxplayers();
    
    
register_message(SzSayText"MsgDuplicate");
    
    
g_status_sync CreateHudSyncObj()
}

/*----------------------------------------------------------------------------------------------------------------
-HUD OF THE GAME
----------------------------------------------------------------------------------------------------------------*/
public hud_status(id)
{
    if(!
is_user_alive(id) ||  !is_user_connected(id) )
    return;
    if(
level[id] >= maxlevels)
    {
        static 
rgbrandom_num(0255), random_num(0255), random_num(0255);
        
set_hudmessage(rgb0.80, -1.001.01.10.00.0, -1)
        
show_hudmessage(id," Level: %d/%d^n Rank: %s^n XP: %d/%d"level[id], maxlevelsranks_names[rank[id]], xp[id], xp[id])
    }
    else
    {
        
set_hudmessage(2552552550.80, -1.001.01.10.00.0, -1)
        
show_hudmessage(id," Level: %d/%d^n Rank: %s^n XP: %d/%d"level[id], maxlevelsranks_names[rank[id]], xp[id], xp_num[level[id]])
    }
}

/*----------------------------------------------------------------------------------------------------------------
-CHAT PREFIX
----------------------------------------------------------------------------------------------------------------*/
public MsgDuplicate(id){ return PLUGIN_HANDLED; }

public 
hook_say(id)
{
    new 
SzMessages[192], SzName[32];
    new 
SzAlive is_user_alive(id);
    
    
read_args(SzMessages191);
    
remove_quotes(SzMessages);
    
get_user_name(idSzName31);
    
    if(!
is_valid_msg(SzMessages))
        return 
PLUGIN_CONTINUE;
    
    switch(
get_pcvar_num(playerPrefix))
    {
        case 
:(SzAlive format(SzMessages191"^4[%s] ^3%s : ^1%s"ranks_names[rank[id]], SzNameSzMessages) : format(SzMessages191"^1*DEAD* ^4[%s] ^3%s : ^1%s"ranks_names[rank[id]], SzNameSzMessages));
        case 
:(SzAlive format(SzMessages191"^4[Level %d] ^3%s : ^1%s"level[id], SzNameSzMessages) : format(SzMessages191"^1*DEAD* ^4[Level %d] ^3%s : ^1%s"level[id], SzNameSzMessages));
    }
    
    for(new 
1<= SzMaxPlayersi++)
    {
        if(!
is_user_connected(i))
            continue;
        
        
message_begin(MSG_ONEget_user_msgid("SayText"), {000}, i);
        
write_byte(id);
        
write_string(SzMessages);
        
message_end();
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
hook_say_team(id)
{
    new 
SzMessages[192], SzName[32];
    new 
SzAlive is_user_alive(id);
    new 
SzGetTeam get_user_team(id);
    
    
read_args(SzMessages191);
    
remove_quotes(SzMessages);
    
get_user_name(idSzName31);
    
    if(!
is_valid_msg(SzMessages))
        return 
PLUGIN_CONTINUE;
    
    switch(
get_pcvar_num(playerPrefix))
    {
        case 
: (SzAlive format(SzMessages191"^1(%s) ^4[%s] ^3%s : ^1%s"SzGTeam[SzGetTeam], ranks_names[rank[id]], SzNameSzMessages) : format(SzMessages191"^1*DEAD* ^1(%s) ^4[%s] ^3%s : ^1%s"SzGTeam[SzGetTeam], ranks_names[rank[id]], SzNameSzMessages));
        case 
: (SzAlive format(SzMessages191"^1(%s) ^4[Level %d] ^3%s : ^1%s"SzGTeam[SzGetTeam], level[id], SzNameSzMessages) : format(SzMessages191"^1*DEAD* ^1(%s) ^4[Level %d] ^3%s : ^1%s"SzGTeam[SzGetTeam], level[id], SzNameSzMessages));
    }
        
    for(new 
1<= SzMaxPlayersi++)
    {
        if(!
is_user_connected(i))
            continue;
        
        if(
get_user_team(i) != SzGetTeam)
            continue;
        
        
message_begin(MSG_ONEget_user_msgid("SayText"), {000}, i);
        
write_byte(id);
        
write_string(SzMessages);
        
message_end();
    }
    
    return 
PLUGIN_CONTINUE;
}

bool:is_valid_msg(const SzMessages[])
{
    if( 
SzMessages[0] == '@'
    
|| !strlen(SzMessages)){ return false; }
    return 
true;
}  

/*----------------------------------------------------------------------------------------------------------------
-EVENT TO ADD XP
----------------------------------------------------------------------------------------------------------------*/

public client_death(killervictimweaponhitplace)
{
    new 
victim_name[32]
    
get_user_name(victimvictim_namecharsmax(victim_name))
    
    new 
killer_team get_user_team(killer)
    new 
victim_team get_user_team(victim)
    
    
//NORMAL KILL
    
if((killer != victim) && !(killer_team == victim_team) && !(hitplace == HIT_HEAD) && !(weapon == CSW_HEGRENADE) && !(weapon == CSW_KNIFE))
    {
        
xp[killer]++
        
client_print_color(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_NORMAL_KILL"victim_name)
    }
    
    
//HEADSHOT
    
if(hitplace == HIT_HEAD && !(weapon == CSW_KNIFE) && !(killer_team == victim_team))
    {
        
xp[killer]+=3
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_HEADSHOT_KILL"victim_name)
    }
    
    
//KNIFE KILL
    
if(weapon == CSW_KNIFE && !(hitplace == HIT_HEAD) && !(killer_team == victim_team))
    {
        
xp[killer]+=5
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_KNIFE_KILL"victim_name)
    }
    
    
//KNIFE + HEADSHOT
    
if(weapon == CSW_KNIFE && (hitplace == HIT_HEAD) && !(killer_team == victim_team))
    {
        
xp[killer]+=7
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_KNIFE_HEAD_KILL"victim_name)
    }
    
    
//GRENADE KILL
    
if(weapon == CSW_HEGRENADE && (killer != victim) && !(killer_team == victim_team))
    {
        
xp[killer]+=5
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_GRENADE_KILL"victim_name)
    }
    
    
//SUICIDE
    
if(killer == victim)
    {
        
xp[killer]-=2
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_SUICIDE")
    }
    
    
//TEAM KILL
    
if(killer != victim && (killer_team == victim_team))
    {
        
xp[killer]-=10
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_TEAM_KILL")
    }
    
    
check_level(killer1)
    
save_data(killer)
}
    

/*----------------------------------------------------------------------------------------------------------------
-CHECK LEVEL OF ADD ++
----------------------------------------------------------------------------------------------------------------*/
public check_level(idsound)
{
    if(!
is_user_connected(id))
        return 
PLUGIN_HANDLED;
    
    new 
name[32]; get_user_name(idname31)
    
    if(
level[id] < maxlevels
    {        
        while(
xp[id] >= xp_num[level[id]])
        {
            
level[id]++
            
            if(
sound)
            {
                if(
level[id] == maxlevels)
                {
                    
client_print_color(id"!g[%s] %L"xPrefixLANG_PLAYER"MSG_MAXLVL_ID"level[id])
                    
client_print_color(0"!g[%s] %L",xPrefixLANG_PLAYER"MSG_MAXLVL_ALL"namelevel[id])
                    
                    
client_cmd(0"spk ambience/wolfhowl02.wav")
                    
                    return 
PLUGIN_HANDLED
                
}
                
                
client_print_color(id,"!g[%s] %L",xPrefix,LANG_PLAYER"MSG_RAISE_LEVEL_ID"get_pcvar_num(rankLevelBonus))
                
client_print_color(0"!g[%s] %L",xPrefix,LANG_PLAYER"MSG_RAISE_LEVEL_ALL"nameget_pcvar_num(rankLevelBonus))
                
cs_set_user_money(idcs_get_user_money(id) + get_pcvar_num(rankLevelBonus))
                
                
client_cmd(0"spk ambience/lv_fruit1.wav")
                
                
set_ranks(id)
            }
        }
    } 
    
    
// Bug Preventions... (Back to top)
    
if(level[id] == maxlevels && xp[id] > xp_num[level[id]-1])
    {
        
xp[id] = xp_num[level[id]-1]
        
save_data(id)
    }
    
    if(
level[id] >= maxlevels
    {    
        
level[id] = maxlevels
        xp
[id] = xp_num[level[id]-1]
        
save_data(id)
    }
    
    return 
PLUGIN_HANDLED
}

/*----------------------------------------------------------------------------------------------------------------
-SET THE RANK POSITION
----------------------------------------------------------------------------------------------------------------*/
public set_ranks(id)
{
    if(
level[id] <= 2rank[id] = RANKS_Noobest
    
if(level[id] >= 2rank[id] = RANKS_Noob
    
if(level[id] >= 5rank[id] = RANKS_Newbiee
    
if(level[id] >= 8rank[id] = RANKS_Easy
    
if(level[id] >= 11rank[id] = RANKS_Normal
    
if(level[id] >= 14rank[id] = RANKS_Hard
    
if(level[id] >= 17rank[id] = RANKS_Expert
    
if(level[id] >= 20rank[id] = RANKS_SuperExpert
    
if(level[id] >= 23rank[id] = RANKS_Specialist
    
if(level[id] >= 26rank[id] = RANKS_Leader
    
if(level[id] >= 29rank[id] = RANKS_Mayor
    
if(level[id] >= 32rank[id] = RANKS_Pro
    
if(level[id] >= 33rank[id] = RANKS_SuperPro
    
if(level[id] >= 36rank[id] = RANKS_Heroic
    
if(level[id] >= 43rank[id] = RANKS_God
}

/*----------------------------------------------------------------------------------------------------------------
-SAVE LEVEL, XP AND RANK
----------------------------------------------------------------------------------------------------------------*/
public save_data(id)
{
    if(!
is_user_connected(id))
        return 
PLUGIN_HANDLED;
    
    new 
auth[40], data[50]
    
    switch(
get_pcvar_num(rankSaveType))
    {
        case 
1get_user_ip(idauthcharsmax(auth), 1)
        case 
2get_user_name(idauthcharsmax(auth))
        case 
3get_user_authid(idauthcharsmax(auth))
    }
    
    
formatex(datacharsmax(data), "%d %d"level[id], xp[id])
    
    
fvault_pset_data(db_saveauthdata)
    
    return 
PLUGIN_HANDLED;
}

/*----------------------------------------------------------------------------------------------------------------
-LOAD DATA
----------------------------------------------------------------------------------------------------------------*/

public client_authorized(id)
{
    new 
auth[40], data[50], x1[10], x2[10]
    
    switch(
get_pcvar_num(rankSaveType))
    {
        case 
1get_user_ip(idauthcharsmax(auth), 1)
        case 
2get_user_name(idauthcharsmax(auth))
        case 
3get_user_authid(idauthcharsmax(auth))
    }
    
    
fvault_get_data(db_saveauthdatacharsmax(data))
    
parse(datax1charsmax(x1), x2charsmax(x2))
    
    
level[id] = str_to_num(x1)
    
xp[id] = str_to_num(x2)
    
    
set_task(2.0"set_ranks"id)
    
check_level(id0)
    
    
set_task(1.1"hud_status"id__"b")
}

/*----------------------------------------------------------------------------------------------------------------
-SHOW XP BY LOOKING AT THE PERSON
----------------------------------------------------------------------------------------------------------------*/

public showStatus(id)
{
    if(!
is_user_bot(id) && is_user_connected(id)) 
    {
        new 
name[32], pid read_data(2)
        
        
get_user_name(pidname31)
        
        new 
xxx get_user_team(id)
        new 
xxx2 get_user_team(pid)
        
        static 
rgb;
        
random_num(0255), random_num(0255), random_num(0255);
        
        if (
xxx == xxx2)    // friend
        
{
            
set_hudmessage(rgb, -1.00.6010.013.00.010.01, -1)
            
ShowSyncHudMsg(idg_status_sync"Name: %s^nRank: %s^nLevel: %d^nXP: %d/%d"nameranks_names[rank[pid]], level[pid], xp[pid], xp_num[level[pid]])
        }
    }
}

public 
hideStatus(id)
{
    
ClearSyncHud(idg_status_sync)
}

/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1046\\ f0\\ fs16 \n\\ par }
*/
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang16393\\ f0\\ fs16 \n\\ par }
*/ 

Original plugin link: https://forums.alliedmods.net/showthread.php?t=294867

Last edited by Robbin; 06-09-2022 at 09:45.
Robbin is offline
lexzor
Senior Member
Join Date: Nov 2020
Old 06-07-2022 , 09:30   Re: (Request) Add a CT&T player skin in this plugin.
Reply With Quote #2

for a unknown reason, i can t compile this plugin, but i added the models for last rank

you must use reapi

PHP Code:
#include <amxmodx>
#include <fvault>
#include <cstrike>
#include <wm_play>
#include <reapi>
#include <hamsandwich>

#define maxranks 15
#define maxlevels 50

#define xPrefix "XP System"

#define RANKS_Noobest 0
#define RANKS_Noob 1
#define RANKS_Newbiee 2
#define RANKS_Easy 3
#define RANKS_Normal 4
#define RANKS_Hard 5
#define RANKS_Expert 6
#define RANKS_SuperExpert 7
#define RANKS_Specialist 8
#define RANKS_Leader 9
#define RANKS_Mayor 10
#define RANKS_Pro 11
#define RANKS_SuperPro 12
#define RANKS_Heroic 13
#define RANKS_God 14

#define LOG_FILE "rank_system.log"
#define CT_MODEL "models/player/ct_model/ct_model.mdl"
#define T_MODEL "models/player/t_model/t_model.mdl"

new const VERSION[] =  "1.1";

new 
SzMaxPlayersSzSayText;
new 
playerPrefix,rankLevelBonus,rankSaveType;

new const 
db_save[] = "cs_rank_system";

new 
level[33], xp[33], rank[33], g_status_sync;

new 
SzGTeam[3][] = {
    
"Spectator",
    
"Terrorist",
    
"Counter-Terrorist"
}

new const 
xp_num[maxlevels+1] = 

    
15701502503504505506507508509501050115012501350145015501650,
    
175018501950205021502250235024502550,26502750285029503050315032503350345035503650
    
375038503950405041504250435044504550465047505000 
}

new const 
ranks_names[maxranks][]=
{
    
"Noobest",
    
"Noob",
    
"Newbiee",
    
"Easy",
    
"Normal",
    
"Hard",
    
"Expert",
    
"SuperExpert",
    
"Specialist",
    
"Leader",
    
"Mayor",
    
"Pro",
    
"SuperPro",
    
"Heroic",
    
"God"
}

public 
plugin_init()
{
    
register_plugin("XP + LEVEL + RANK SYSTEM"VERSIONAUTHOR)

    
// system of xp+lvl+rank
    
playerPrefix register_cvar("Player Prefix""1"//1-Prefix by RANK, 2-Prefix by LEVEL
    
rankLevelBonus register_cvar("Level Up Bonus""10000"// Amount of money when passing level.
    
rankSaveType register_cvar("XP Save Type""2"// 1 - IP || 2 - Nick || 3 - SteamID
    
    
register_cvar("XPLvlRankSystem"VERSIONFCVAR_SERVER FCVAR_SPONLY //Search for variable on Gametracker.com

    
register_event("StatusValue""showStatus""be""1=2""2!0")
    
register_event("StatusValue""hideStatus""be""1=1""2=0")
    
    
register_clcmd("say""hook_say");
    
register_clcmd("say_team""hook_say_team");
    
    
register_dictionary("cs_rank_system.txt");

    
SzSayText get_user_msgid ("SayText");
    
SzMaxPlayers get_maxplayers();
    
    
register_message(SzSayText"MsgDuplicate");

    
RegisterHam(Ham_Spawn"player""player_spawn"1);
    
    
g_status_sync CreateHudSyncObj()
}

public 
player_spawn(id)
{
    if(
is_user_alive(id) && rank[id] == RANKS_God)
    {
        
rg_reset_user_model(id);
        
set_task(0.2"set_user_model"id 4562);
    }
}

public 
set_user_model(id)
{
    
id -= 4562;

    switch(
get_user_team(id))
    {
        case 
1rg_set_user_model(idT_MODELfalse);
        case 
2rg_set_user_model(idCT_MODELfalse);
    }
}

public 
plugin_precache()
{
    if(
file_exists(T_MODEL))
        
precache_player_model(T_MODEL)
    else 
log_to_file(LOG_FILE"T model ^"%s^" does not exists"T_MODEL);

    if(
file_exists(CT_MODEL))
        
precache_player_model(CT_MODEL)
    else 
log_to_file(LOG_FILE"CT model ^"%s^" does not exists"CT_MODEL);
}

/*----------------------------------------------------------------------------------------------------------------
-HUD OF THE GAME
----------------------------------------------------------------------------------------------------------------*/
public hud_status(id)
{
    if(!
is_user_alive(id) ||  !is_user_connected(id) )
    return;
    if(
level[id] >= maxlevels)
    {
        static 
rgbrandom_num(0255), random_num(0255), random_num(0255);
        
set_hudmessage(rgb0.80, -1.001.01.10.00.0, -1)
        
show_hudmessage(id," Level: %d/%d^n Rank: %s^n XP: %d/%d"level[id], maxlevelsranks_names[rank[id]], xp[id], xp[id])
    }
    else
    {
        
set_hudmessage(2552552550.80, -1.001.01.10.00.0, -1)
        
show_hudmessage(id," Level: %d/%d^n Rank: %s^n XP: %d/%d"level[id], maxlevelsranks_names[rank[id]], xp[id], xp_num[level[id]])
    }
}

/*----------------------------------------------------------------------------------------------------------------
-CHAT PREFIX
----------------------------------------------------------------------------------------------------------------*/
public MsgDuplicate(id){ return PLUGIN_HANDLED; }

public 
hook_say(id)
{
    new 
SzMessages[192], SzName[32];
    new 
SzAlive is_user_alive(id);
    
    
read_args(SzMessages191);
    
remove_quotes(SzMessages);
    
get_user_name(idSzName31);
    
    if(!
is_valid_msg(SzMessages))
        return 
PLUGIN_CONTINUE;
    
    switch(
get_pcvar_num(playerPrefix))
    {
        case 
:(SzAlive format(SzMessages191"^4[%s] ^3%s : ^1%s"ranks_names[rank[id]], SzNameSzMessages) : format(SzMessages191"^1*DEAD* ^4[%s] ^3%s : ^1%s"ranks_names[rank[id]], SzNameSzMessages));
        case 
:(SzAlive format(SzMessages191"^4[Level %d] ^3%s : ^1%s"level[id], SzNameSzMessages) : format(SzMessages191"^1*DEAD* ^4[Level %d] ^3%s : ^1%s"level[id], SzNameSzMessages));
    }
    
    for(new 
1<= SzMaxPlayersi++)
    {
        if(!
is_user_connected(i))
            continue;
        
        
message_begin(MSG_ONEget_user_msgid("SayText"), {000}, i);
        
write_byte(id);
        
write_string(SzMessages);
        
message_end();
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
hook_say_team(id)
{
    new 
SzMessages[192], SzName[32];
    new 
SzAlive is_user_alive(id);
    new 
SzGetTeam get_user_team(id);
    
    
read_args(SzMessages191);
    
remove_quotes(SzMessages);
    
get_user_name(idSzName31);
    
    if(!
is_valid_msg(SzMessages))
        return 
PLUGIN_CONTINUE;
    
    switch(
get_pcvar_num(playerPrefix))
    {
        case 
: (SzAlive format(SzMessages191"^1(%s) ^4[%s] ^3%s : ^1%s"SzGTeam[SzGetTeam], ranks_names[rank[id]], SzNameSzMessages) : format(SzMessages191"^1*DEAD* ^1(%s) ^4[%s] ^3%s : ^1%s"SzGTeam[SzGetTeam], ranks_names[rank[id]], SzNameSzMessages));
        case 
: (SzAlive format(SzMessages191"^1(%s) ^4[Level %d] ^3%s : ^1%s"SzGTeam[SzGetTeam], level[id], SzNameSzMessages) : format(SzMessages191"^1*DEAD* ^1(%s) ^4[Level %d] ^3%s : ^1%s"SzGTeam[SzGetTeam], level[id], SzNameSzMessages));
    }
        
    for(new 
1<= SzMaxPlayersi++)
    {
        if(!
is_user_connected(i))
            continue;
        
        if(
get_user_team(i) != SzGetTeam)
            continue;
        
        
message_begin(MSG_ONEget_user_msgid("SayText"), {000}, i);
        
write_byte(id);
        
write_string(SzMessages);
        
message_end();
    }
    
    return 
PLUGIN_CONTINUE;
}

bool:is_valid_msg(const SzMessages[])
{
    if( 
SzMessages[0] == '@'
    
|| !strlen(SzMessages)){ return false; }
    return 
true;
}  

/*----------------------------------------------------------------------------------------------------------------
-EVENT TO ADD XP
----------------------------------------------------------------------------------------------------------------*/

public client_death(killervictimweaponhitplace)
{
    new 
victim_name[32]
    
get_user_name(victimvictim_namecharsmax(victim_name))
    
    new 
killer_team get_user_team(killer)
    new 
victim_team get_user_team(victim)
    
    
//NORMAL KILL
    
if((killer != victim) && !(killer_team == victim_team) && !(hitplace == HIT_HEAD) && !(weapon == CSW_HEGRENADE) && !(weapon == CSW_KNIFE))
    {
        
xp[killer]++
        
client_print_color(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_NORMAL_KILL"victim_name)
    }
    
    
//HEADSHOT
    
if(hitplace == HIT_HEAD && !(weapon == CSW_KNIFE) && !(killer_team == victim_team))
    {
        
xp[killer]+=3
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_HEADSHOT_KILL"victim_name)
    }
    
    
//KNIFE KILL
    
if(weapon == CSW_KNIFE && !(hitplace == HIT_HEAD) && !(killer_team == victim_team))
    {
        
xp[killer]+=5
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_KNIFE_KILL"victim_name)
    }
    
    
//KNIFE + HEADSHOT
    
if(weapon == CSW_KNIFE && (hitplace == HIT_HEAD) && !(killer_team == victim_team))
    {
        
xp[killer]+=7
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_KNIFE_HEAD_KILL"victim_name)
    }
    
    
//GRENADE KILL
    
if(weapon == CSW_HEGRENADE && (killer != victim) && !(killer_team == victim_team))
    {
        
xp[killer]+=5
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_GRENADE_KILL"victim_name)
    }
    
    
//SUICIDE
    
if(killer == victim)
    {
        
xp[killer]-=2
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_SUICIDE")
    }
    
    
//TEAM KILL
    
if(killer != victim && (killer_team == victim_team))
    {
        
xp[killer]-=10
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_TEAM_KILL")
    }
    
    
check_level(killer1)
    
save_data(killer)
}
    

/*----------------------------------------------------------------------------------------------------------------
-CHECK LEVEL OF ADD ++
----------------------------------------------------------------------------------------------------------------*/
public check_level(idsound)
{
    if(!
is_user_connected(id))
        return 
PLUGIN_HANDLED;
    
    new 
name[32]; get_user_name(idname31)
    
    if(
level[id] < maxlevels
    {        
        while(
xp[id] >= xp_num[level[id]])
        {
            
level[id]++
            
            if(
sound)
            {
                if(
level[id] == maxlevels)
                {
                    
client_print_color(id"!g[%s] %L"xPrefixLANG_PLAYER"MSG_MAXLVL_ID"level[id])
                    
client_print_color(0"!g[%s] %L",xPrefixLANG_PLAYER"MSG_MAXLVL_ALL"namelevel[id])
                    
                    
client_cmd(0"spk ambience/wolfhowl02.wav")
                    
                    return 
PLUGIN_HANDLED
                
}
                
                
client_print_color(id,"!g[%s] %L",xPrefix,LANG_PLAYER"MSG_RAISE_LEVEL_ID"get_pcvar_num(rankLevelBonus))
                
client_print_color(0"!g[%s] %L",xPrefix,LANG_PLAYER"MSG_RAISE_LEVEL_ALL"nameget_pcvar_num(rankLevelBonus))
                
cs_set_user_money(idcs_get_user_money(id) + get_pcvar_num(rankLevelBonus))
                
                
client_cmd(0"spk ambience/lv_fruit1.wav")
                
                
set_ranks(id)
            }
        }
    } 
    
    
// Bug Preventions... (Back to top)
    
if(level[id] == maxlevels && xp[id] > xp_num[level[id]-1])
    {
        
xp[id] = xp_num[level[id]-1]
        
save_data(id)
    }
    
    if(
level[id] >= maxlevels
    {    
        
level[id] = maxlevels
        xp
[id] = xp_num[level[id]-1]
        
save_data(id)
    }
    
    return 
PLUGIN_HANDLED
}

/*----------------------------------------------------------------------------------------------------------------
-SET THE RANK POSITION
----------------------------------------------------------------------------------------------------------------*/
public set_ranks(id)
{
    if(
level[id] <= 2rank[id] = RANKS_Noobest
    
if(level[id] >= 2rank[id] = RANKS_Noob
    
if(level[id] >= 5rank[id] = RANKS_Newbiee
    
if(level[id] >= 8rank[id] = RANKS_Easy
    
if(level[id] >= 11rank[id] = RANKS_Normal
    
if(level[id] >= 14rank[id] = RANKS_Hard
    
if(level[id] >= 17rank[id] = RANKS_Expert
    
if(level[id] >= 20rank[id] = RANKS_SuperExpert
    
if(level[id] >= 23rank[id] = RANKS_Specialist
    
if(level[id] >= 26rank[id] = RANKS_Leader
    
if(level[id] >= 29rank[id] = RANKS_Mayor
    
if(level[id] >= 32rank[id] = RANKS_Pro
    
if(level[id] >= 33rank[id] = RANKS_SuperPro
    
if(level[id] >= 36rank[id] = RANKS_Heroic
    
if(level[id] >= 43rank[id] = RANKS_God
}

/*----------------------------------------------------------------------------------------------------------------
-SAVE LEVEL, XP AND RANK
----------------------------------------------------------------------------------------------------------------*/
public save_data(id)
{
    if(!
is_user_connected(id))
        return 
PLUGIN_HANDLED;
    
    new 
auth[40], data[50]
    
    switch(
get_pcvar_num(rankSaveType))
    {
        case 
1get_user_ip(idauthcharsmax(auth), 1)
        case 
2get_user_name(idauthcharsmax(auth))
        case 
3get_user_authid(idauthcharsmax(auth))
    }
    
    
formatex(datacharsmax(data), "%d %d"level[id], xp[id])
    
    
fvault_pset_data(db_saveauthdata)
    
    return 
PLUGIN_HANDLED;
}

/*----------------------------------------------------------------------------------------------------------------
-LOAD DATA
----------------------------------------------------------------------------------------------------------------*/

public client_authorized(id)
{
    new 
auth[40], data[50], x1[10], x2[10]
    
    switch(
get_pcvar_num(rankSaveType))
    {
        case 
1get_user_ip(idauthcharsmax(auth), 1)
        case 
2get_user_name(idauthcharsmax(auth))
        case 
3get_user_authid(idauthcharsmax(auth))
    }
    
    
fvault_get_data(db_saveauthdatacharsmax(data))
    
parse(datax1charsmax(x1), x2charsmax(x2))
    
    
level[id] = str_to_num(x1)
    
xp[id] = str_to_num(x2)
    
    
set_task(2.0"set_ranks"id)
    
check_level(id0)
    
    
set_task(1.1"hud_status"id__"b")
}

/*----------------------------------------------------------------------------------------------------------------
-SHOW XP BY LOOKING AT THE PERSON
----------------------------------------------------------------------------------------------------------------*/

public showStatus(id)
{
    if(!
is_user_bot(id) && is_user_connected(id)) 
    {
        new 
name[32], pid read_data(2)
        
        
get_user_name(pidname31)
        
        new 
xxx get_user_team(id)
        new 
xxx2 get_user_team(pid)
        
        static 
rgb;
        
random_num(0255), random_num(0255), random_num(0255);
        
        if (
xxx == xxx2)    // friend
        
{
            
set_hudmessage(rgb, -1.00.6010.013.00.010.01, -1)
            
ShowSyncHudMsg(idg_status_sync"Name: %s^nRank: %s^nLevel: %d^nXP: %d/%d"nameranks_names[rank[pid]], level[pid], xp[pid], xp_num[level[pid]])
        }
    }
}

public 
hideStatus(id)
{
    
ClearSyncHud(idg_status_sync)
}

precache_player_model(const szModel[], &id 0)
{
    new 
model[128];
    
formatex(modelcharsmax(model), "%sT.mdl"szModel);

    if(
file_exists(model))
        
id precache_generic(model);

    static const 
extension[] = "T.mdl";
    
#pragma unused extension

    
copy(model[strlen(model) - charsmax(extension)], charsmax(model), ".mdl");
    if(!
file_exists(model))
    {
        
server_print("[CSGO Agents] Model ^"%s^" does not exists or the name of the model is wrong!"model);
        return 
PLUGIN_HANDLED;
    }
    return 
precache_model(model);

lexzor is offline
Robbin
Junior Member
Join Date: May 2020
Location: Aveiro, Portugal
Old 06-07-2022 , 12:56   Re: (Request) Add a CT&T player skin in this plugin.
Reply With Quote #3

Ty
I will test with Reapi

Last edited by Robbin; 06-07-2022 at 13:04.
Robbin is offline
Robbin
Junior Member
Join Date: May 2020
Location: Aveiro, Portugal
Old 06-07-2022 , 13:27   Re: (Request) Add a CT&T player skin in this plugin.
Reply With Quote #4

I can't compile, I get these errors.

include\wm_play.inc(93) : warning 209: function "precache_player_model" should return a value
cs_rank_system.sma(460) : error 025: function heading differs from prototype
cs_rank_system.sma(461) : error 021: symbol already defined: "precache_player_model"

Last edited by Robbin; 06-07-2022 at 14:45.
Robbin is offline
lexzor
Senior Member
Join Date: Nov 2020
Old 06-07-2022 , 15:32   Re: (Request) Add a CT&T player skin in this plugin.
Reply With Quote #5

ok try this one

PHP Code:
#include <amxmodx>
#include <fvault>
#include <cstrike>
#include <wm_play>
#include <reapi>
#include <hamsandwich>

#define maxranks 15
#define maxlevels 50

#define xPrefix "XP System"

#define RANKS_Noobest 0
#define RANKS_Noob 1
#define RANKS_Newbiee 2
#define RANKS_Easy 3
#define RANKS_Normal 4
#define RANKS_Hard 5
#define RANKS_Expert 6
#define RANKS_SuperExpert 7
#define RANKS_Specialist 8
#define RANKS_Leader 9
#define RANKS_Mayor 10
#define RANKS_Pro 11
#define RANKS_SuperPro 12
#define RANKS_Heroic 13
#define RANKS_God 14

#define LOG_FILE "rank_system.log"
#define CT_MODEL "models/player/ct_model/ct_model.mdl"
#define T_MODEL "models/player/t_model/t_model.mdl"

new const VERSION[] =  "1.1";

new 
SzMaxPlayersSzSayText;
new 
playerPrefix,rankLevelBonus,rankSaveType;

new const 
db_save[] = "cs_rank_system";

new 
level[33], xp[33], rank[33], g_status_sync;

new 
SzGTeam[3][] = {
    
"Spectator",
    
"Terrorist",
    
"Counter-Terrorist"
}

new const 
xp_num[maxlevels+1] = 

    
15701502503504505506507508509501050115012501350145015501650,
    
175018501950205021502250235024502550,26502750285029503050315032503350345035503650
    
375038503950405041504250435044504550465047505000 
}

new const 
ranks_names[maxranks][]=
{
    
"Noobest",
    
"Noob",
    
"Newbiee",
    
"Easy",
    
"Normal",
    
"Hard",
    
"Expert",
    
"SuperExpert",
    
"Specialist",
    
"Leader",
    
"Mayor",
    
"Pro",
    
"SuperPro",
    
"Heroic",
    
"God"
}

public 
plugin_init()
{
    
register_plugin("XP + LEVEL + RANK SYSTEM"VERSIONAUTHOR)

    
// system of xp+lvl+rank
    
playerPrefix register_cvar("Player Prefix""1"//1-Prefix by RANK, 2-Prefix by LEVEL
    
rankLevelBonus register_cvar("Level Up Bonus""10000"// Amount of money when passing level.
    
rankSaveType register_cvar("XP Save Type""2"// 1 - IP || 2 - Nick || 3 - SteamID
    
    
register_cvar("XPLvlRankSystem"VERSIONFCVAR_SERVER FCVAR_SPONLY //Search for variable on Gametracker.com

    
register_event("StatusValue""showStatus""be""1=2""2!0")
    
register_event("StatusValue""hideStatus""be""1=1""2=0")
    
    
register_clcmd("say""hook_say");
    
register_clcmd("say_team""hook_say_team");
    
    
register_dictionary("cs_rank_system.txt");

    
SzSayText get_user_msgid ("SayText");
    
SzMaxPlayers get_maxplayers();
    
    
register_message(SzSayText"MsgDuplicate");

    
RegisterHam(Ham_Spawn"player""player_spawn"1);
    
    
g_status_sync CreateHudSyncObj()
}

public 
player_spawn(id)
{
    if(
is_user_alive(id) && rank[id] == RANKS_God)
    {
        
rg_reset_user_model(id);
        
set_task(0.2"set_user_model"id 4562);
    }
}

public 
set_user_model(id)
{
    
id -= 4562;

    switch(
get_user_team(id))
    {
        case 
1rg_set_user_model(idT_MODELfalse);
        case 
2rg_set_user_model(idCT_MODELfalse);
    }
}

public 
plugin_precache()
{
    if(
file_exists(T_MODEL))
        
precache_player_models(T_MODEL)
    else 
log_to_file(LOG_FILE"T model ^"%s^" does not exists"T_MODEL);

    if(
file_exists(CT_MODEL))
        
precache_player_models(CT_MODEL)
    else 
log_to_file(LOG_FILE"CT model ^"%s^" does not exists"CT_MODEL);
}

/*----------------------------------------------------------------------------------------------------------------
-HUD OF THE GAME
----------------------------------------------------------------------------------------------------------------*/
public hud_status(id)
{
    if(!
is_user_alive(id) ||  !is_user_connected(id) )
    return;
    if(
level[id] >= maxlevels)
    {
        static 
rgbrandom_num(0255), random_num(0255), random_num(0255);
        
set_hudmessage(rgb0.80, -1.001.01.10.00.0, -1)
        
show_hudmessage(id," Level: %d/%d^n Rank: %s^n XP: %d/%d"level[id], maxlevelsranks_names[rank[id]], xp[id], xp[id])
    }
    else
    {
        
set_hudmessage(2552552550.80, -1.001.01.10.00.0, -1)
        
show_hudmessage(id," Level: %d/%d^n Rank: %s^n XP: %d/%d"level[id], maxlevelsranks_names[rank[id]], xp[id], xp_num[level[id]])
    }
}

/*----------------------------------------------------------------------------------------------------------------
-CHAT PREFIX
----------------------------------------------------------------------------------------------------------------*/
public MsgDuplicate(id){ return PLUGIN_HANDLED; }

public 
hook_say(id)
{
    new 
SzMessages[192], SzName[32];
    new 
SzAlive is_user_alive(id);
    
    
read_args(SzMessages191);
    
remove_quotes(SzMessages);
    
get_user_name(idSzName31);
    
    if(!
is_valid_msg(SzMessages))
        return 
PLUGIN_CONTINUE;
    
    switch(
get_pcvar_num(playerPrefix))
    {
        case 
:(SzAlive format(SzMessages191"^4[%s] ^3%s : ^1%s"ranks_names[rank[id]], SzNameSzMessages) : format(SzMessages191"^1*DEAD* ^4[%s] ^3%s : ^1%s"ranks_names[rank[id]], SzNameSzMessages));
        case 
:(SzAlive format(SzMessages191"^4[Level %d] ^3%s : ^1%s"level[id], SzNameSzMessages) : format(SzMessages191"^1*DEAD* ^4[Level %d] ^3%s : ^1%s"level[id], SzNameSzMessages));
    }
    
    for(new 
1<= SzMaxPlayersi++)
    {
        if(!
is_user_connected(i))
            continue;
        
        
message_begin(MSG_ONEget_user_msgid("SayText"), {000}, i);
        
write_byte(id);
        
write_string(SzMessages);
        
message_end();
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
hook_say_team(id)
{
    new 
SzMessages[192], SzName[32];
    new 
SzAlive is_user_alive(id);
    new 
SzGetTeam get_user_team(id);
    
    
read_args(SzMessages191);
    
remove_quotes(SzMessages);
    
get_user_name(idSzName31);
    
    if(!
is_valid_msg(SzMessages))
        return 
PLUGIN_CONTINUE;
    
    switch(
get_pcvar_num(playerPrefix))
    {
        case 
: (SzAlive format(SzMessages191"^1(%s) ^4[%s] ^3%s : ^1%s"SzGTeam[SzGetTeam], ranks_names[rank[id]], SzNameSzMessages) : format(SzMessages191"^1*DEAD* ^1(%s) ^4[%s] ^3%s : ^1%s"SzGTeam[SzGetTeam], ranks_names[rank[id]], SzNameSzMessages));
        case 
: (SzAlive format(SzMessages191"^1(%s) ^4[Level %d] ^3%s : ^1%s"SzGTeam[SzGetTeam], level[id], SzNameSzMessages) : format(SzMessages191"^1*DEAD* ^1(%s) ^4[Level %d] ^3%s : ^1%s"SzGTeam[SzGetTeam], level[id], SzNameSzMessages));
    }
        
    for(new 
1<= SzMaxPlayersi++)
    {
        if(!
is_user_connected(i))
            continue;
        
        if(
get_user_team(i) != SzGetTeam)
            continue;
        
        
message_begin(MSG_ONEget_user_msgid("SayText"), {000}, i);
        
write_byte(id);
        
write_string(SzMessages);
        
message_end();
    }
    
    return 
PLUGIN_CONTINUE;
}

bool:is_valid_msg(const SzMessages[])
{
    if( 
SzMessages[0] == '@'
    
|| !strlen(SzMessages)){ return false; }
    return 
true;
}  

/*----------------------------------------------------------------------------------------------------------------
-EVENT TO ADD XP
----------------------------------------------------------------------------------------------------------------*/

public client_death(killervictimweaponhitplace)
{
    new 
victim_name[32]
    
get_user_name(victimvictim_namecharsmax(victim_name))
    
    new 
killer_team get_user_team(killer)
    new 
victim_team get_user_team(victim)
    
    
//NORMAL KILL
    
if((killer != victim) && !(killer_team == victim_team) && !(hitplace == HIT_HEAD) && !(weapon == CSW_HEGRENADE) && !(weapon == CSW_KNIFE))
    {
        
xp[killer]++
        
client_print_color(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_NORMAL_KILL"victim_name)
    }
    
    
//HEADSHOT
    
if(hitplace == HIT_HEAD && !(weapon == CSW_KNIFE) && !(killer_team == victim_team))
    {
        
xp[killer]+=3
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_HEADSHOT_KILL"victim_name)
    }
    
    
//KNIFE KILL
    
if(weapon == CSW_KNIFE && !(hitplace == HIT_HEAD) && !(killer_team == victim_team))
    {
        
xp[killer]+=5
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_KNIFE_KILL"victim_name)
    }
    
    
//KNIFE + HEADSHOT
    
if(weapon == CSW_KNIFE && (hitplace == HIT_HEAD) && !(killer_team == victim_team))
    {
        
xp[killer]+=7
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_KNIFE_HEAD_KILL"victim_name)
    }
    
    
//GRENADE KILL
    
if(weapon == CSW_HEGRENADE && (killer != victim) && !(killer_team == victim_team))
    {
        
xp[killer]+=5
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_GRENADE_KILL"victim_name)
    }
    
    
//SUICIDE
    
if(killer == victim)
    {
        
xp[killer]-=2
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_SUICIDE")
    }
    
    
//TEAM KILL
    
if(killer != victim && (killer_team == victim_team))
    {
        
xp[killer]-=10
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_TEAM_KILL")
    }
    
    
check_level(killer1)
    
save_data(killer)
}
    

/*----------------------------------------------------------------------------------------------------------------
-CHECK LEVEL OF ADD ++
----------------------------------------------------------------------------------------------------------------*/
public check_level(idsound)
{
    if(!
is_user_connected(id))
        return 
PLUGIN_HANDLED;
    
    new 
name[32]; get_user_name(idname31)
    
    if(
level[id] < maxlevels
    {        
        while(
xp[id] >= xp_num[level[id]])
        {
            
level[id]++
            
            if(
sound)
            {
                if(
level[id] == maxlevels)
                {
                    
client_print_color(id"!g[%s] %L"xPrefixLANG_PLAYER"MSG_MAXLVL_ID"level[id])
                    
client_print_color(0"!g[%s] %L",xPrefixLANG_PLAYER"MSG_MAXLVL_ALL"namelevel[id])
                    
                    
client_cmd(0"spk ambience/wolfhowl02.wav")
                    
                    return 
PLUGIN_HANDLED
                
}
                
                
client_print_color(id,"!g[%s] %L",xPrefix,LANG_PLAYER"MSG_RAISE_LEVEL_ID"get_pcvar_num(rankLevelBonus))
                
client_print_color(0"!g[%s] %L",xPrefix,LANG_PLAYER"MSG_RAISE_LEVEL_ALL"nameget_pcvar_num(rankLevelBonus))
                
cs_set_user_money(idcs_get_user_money(id) + get_pcvar_num(rankLevelBonus))
                
                
client_cmd(0"spk ambience/lv_fruit1.wav")
                
                
set_ranks(id)
            }
        }
    } 
    
    
// Bug Preventions... (Back to top)
    
if(level[id] == maxlevels && xp[id] > xp_num[level[id]-1])
    {
        
xp[id] = xp_num[level[id]-1]
        
save_data(id)
    }
    
    if(
level[id] >= maxlevels
    {    
        
level[id] = maxlevels
        xp
[id] = xp_num[level[id]-1]
        
save_data(id)
    }
    
    return 
PLUGIN_HANDLED
}

/*----------------------------------------------------------------------------------------------------------------
-SET THE RANK POSITION
----------------------------------------------------------------------------------------------------------------*/
public set_ranks(id)
{
    if(
level[id] <= 2rank[id] = RANKS_Noobest
    
if(level[id] >= 2rank[id] = RANKS_Noob
    
if(level[id] >= 5rank[id] = RANKS_Newbiee
    
if(level[id] >= 8rank[id] = RANKS_Easy
    
if(level[id] >= 11rank[id] = RANKS_Normal
    
if(level[id] >= 14rank[id] = RANKS_Hard
    
if(level[id] >= 17rank[id] = RANKS_Expert
    
if(level[id] >= 20rank[id] = RANKS_SuperExpert
    
if(level[id] >= 23rank[id] = RANKS_Specialist
    
if(level[id] >= 26rank[id] = RANKS_Leader
    
if(level[id] >= 29rank[id] = RANKS_Mayor
    
if(level[id] >= 32rank[id] = RANKS_Pro
    
if(level[id] >= 33rank[id] = RANKS_SuperPro
    
if(level[id] >= 36rank[id] = RANKS_Heroic
    
if(level[id] >= 43rank[id] = RANKS_God
}

/*----------------------------------------------------------------------------------------------------------------
-SAVE LEVEL, XP AND RANK
----------------------------------------------------------------------------------------------------------------*/
public save_data(id)
{
    if(!
is_user_connected(id))
        return 
PLUGIN_HANDLED;
    
    new 
auth[40], data[50]
    
    switch(
get_pcvar_num(rankSaveType))
    {
        case 
1get_user_ip(idauthcharsmax(auth), 1)
        case 
2get_user_name(idauthcharsmax(auth))
        case 
3get_user_authid(idauthcharsmax(auth))
    }
    
    
formatex(datacharsmax(data), "%d %d"level[id], xp[id])
    
    
fvault_pset_data(db_saveauthdata)
    
    return 
PLUGIN_HANDLED;
}

/*----------------------------------------------------------------------------------------------------------------
-LOAD DATA
----------------------------------------------------------------------------------------------------------------*/

public client_authorized(id)
{
    new 
auth[40], data[50], x1[10], x2[10]
    
    switch(
get_pcvar_num(rankSaveType))
    {
        case 
1get_user_ip(idauthcharsmax(auth), 1)
        case 
2get_user_name(idauthcharsmax(auth))
        case 
3get_user_authid(idauthcharsmax(auth))
    }
    
    
fvault_get_data(db_saveauthdatacharsmax(data))
    
parse(datax1charsmax(x1), x2charsmax(x2))
    
    
level[id] = str_to_num(x1)
    
xp[id] = str_to_num(x2)
    
    
set_task(2.0"set_ranks"id)
    
check_level(id0)
    
    
set_task(1.1"hud_status"id__"b")
}

/*----------------------------------------------------------------------------------------------------------------
-SHOW XP BY LOOKING AT THE PERSON
----------------------------------------------------------------------------------------------------------------*/

public showStatus(id)
{
    if(!
is_user_bot(id) && is_user_connected(id)) 
    {
        new 
name[32], pid read_data(2)
        
        
get_user_name(pidname31)
        
        new 
xxx get_user_team(id)
        new 
xxx2 get_user_team(pid)
        
        static 
rgb;
        
random_num(0255), random_num(0255), random_num(0255);
        
        if (
xxx == xxx2)    // friend
        
{
            
set_hudmessage(rgb, -1.00.6010.013.00.010.01, -1)
            
ShowSyncHudMsg(idg_status_sync"Name: %s^nRank: %s^nLevel: %d^nXP: %d/%d"nameranks_names[rank[pid]], level[pid], xp[pid], xp_num[level[pid]])
        }
    }
}

public 
hideStatus(id)
{
    
ClearSyncHud(idg_status_sync)
}

precache_player_models(const szModel[], &id 0)
{
    new 
model[128];
    
formatex(modelcharsmax(model), "%sT.mdl"szModel);

    if(
file_exists(model))
        
id precache_generic(model);

    static const 
extension[] = "T.mdl";
    
#pragma unused extension

    
copy(model[strlen(model) - charsmax(extension)], charsmax(model), ".mdl");
    if(!
file_exists(model))
    {
        
server_print("[CSGO Agents] Model ^"%s^" does not exists or the name of the model is wrong!"model);
        return 
PLUGIN_HANDLED;
    }
    return 
precache_model(model);

lexzor is offline
Old 06-07-2022, 19:29
Naeciof
This message has been deleted by Naeciof.
Robbin
Junior Member
Join Date: May 2020
Location: Aveiro, Portugal
Old 06-07-2022 , 19:58   Re: (Request) Add a CT&T player skin in this plugin.
Reply With Quote #6

Thanks lexzor
The plugin seems to work, with the HUD info and the logging system working, I put the models in the folders but they don't show up after 5000 points.
Maybe the cause is that I don't use reHLDS, in the module folder I have reapi_amxx.dll

Error logs:
[ReAPI] ReGameDll: isn't available
[AMXX] Displaying debug trace (plugin "cs_rank_system.amxx", version "1.1")
[AMXX] Run time error 10: native error (native "rg_reset_user_model")
[AMXX] [0] cs_rank_system.sma::player_spawn (line 107)


Thanks again
Robbin is offline
lexzor
Senior Member
Join Date: Nov 2020
Old 06-08-2022 , 12:06   Re: (Request) Add a CT&T player skin in this plugin.
Reply With Quote #7

you must install regamedll, update rehlds last version and metamod last version
lexzor is offline
Robbin
Junior Member
Join Date: May 2020
Location: Aveiro, Portugal
Old 06-08-2022 , 16:19   Re: (Request) Add a CT&T player skin in this plugin.
Reply With Quote #8

Quote:
Originally Posted by lexzor View Post
you must install regamedll, update rehlds last version and metamod last version
Ok, i installed regamedll, metamod, reHlds seems to exist only for linux.

When I join the server:

Host_Error: no precache: models/player/models/player/ct_model/ct_model/models/player/ct_model/ct_model.mdl
Host_Error: no precache: models/player/models/player/t_model/t_model.m/models/player/t_model/t_model.m.mdl

Last edited by Robbin; 06-08-2022 at 16:20.
Robbin is offline
Supremache
Veteran Member
Join Date: Sep 2019
Location: Egypt
Old 06-08-2022 , 17:13   Re: (Request) Add a CT&T player skin in this plugin.
Reply With Quote #9

Without using reapi or regamedll
Replace:
PHP Code:
#define CT_MODEL "models/player/ct_model/ct_model.mdl"
#define T_MODEL "models/player/t_model/t_model.mdl" 

PHP Code:
new const CT_MODEL[] =  "ct_model";
new const 
T_MODEL[] =  "t_model"
-------------------------------------
PHP Code:
public plugin_precache()
{
    if(
file_exists(T_MODEL))
        
precache_player_model(T_MODEL)
    else 
log_to_file(LOG_FILE"T model ^"%s^" does not exists"T_MODEL);

    if(
file_exists(CT_MODEL))
        
precache_player_model(CT_MODEL)
    else 
log_to_file(LOG_FILE"CT model ^"%s^" does not exists"CT_MODEL);



PHP Code:
public plugin_precache()
{
    
precache_player_model(T_MODEL)
    
precache_player_model(CT_MODEL)

------------------------------------------
PHP Code:
public player_spawn(id)
{
    if(
is_user_alive(id) && rank[id] == RANKS_God)
    {
        
rg_reset_user_model(id);
        
set_task(0.2"set_user_model"id 4562);
    }
}

public 
set_user_model(id)
{
    
id -= 4562;

    switch(
get_user_team(id))
    {
        case 
1rg_set_user_model(idT_MODELfalse);
        case 
2rg_set_user_model(idCT_MODELfalse);
    }



PHP Code:
public player_spawn(id)
{
    if(
is_user_alive(id) && level[id] == maxlevels /* xp[id] == 5000 */)
    {
        switch(
get_user_team(id))
        {
            case 
1cs_set_user_model(idT_MODEL);
            case 
2cs_set_user_model(idCT_MODEL);
            default: 
cs_reset_user_model(id);
        }
    }

---------------------------------------
PHP Code:
precache_player_model(const szModel[], &id 0)
{
    new 
model[128];
    
formatex(modelcharsmax(model), "%sT.mdl"szModel);

    if(
file_exists(model))
        
id precache_generic(model);

    static const 
extension[] = "T.mdl";
    
#pragma unused extension

    
copy(model[strlen(model) - charsmax(extension)], charsmax(model), ".mdl");
    if(!
file_exists(model))
    {
        
server_print("[CSGO Agents] Model ^"%s^" does not exists or the name of the model is wrong!"model);
        return 
PLUGIN_HANDLED;
    }
    return 
precache_model(model);



PHP Code:
precache_player_model(const szModel[], &id 0)
{
    new 
model[128]
    
formatex(modelcharsmax(model), "models/player/%s/%sT.mdl"szModelszModel)

    if(
file_exists(model))
    {
        
id precache_generic(model)
    }

    static const 
extension[] = "T.mdl"
    
#pragma unused extension
    
    
copy(model[strlen(model) - charsmax(extension)], charsmax(model), ".mdl")
    
    if(!
file_exists(model))
    {
        
server_print("Model ^"%s^" does not exists"model);
        return -
1;
    }
    
    return 
precache_generic(model)

----------------------------
__________________
Youtube.com/Supremache

Bank System [Nvault - SQL Support]
VIP System
  • If you think it's that simple, then do it yourself.

Last edited by Supremache; 06-08-2022 at 17:13.
Supremache is offline
Supremache
Veteran Member
Join Date: Sep 2019
Location: Egypt
Old 06-08-2022 , 19:28   Re: (Request) Add a CT&T player skin in this plugin.
Reply With Quote #10

PHP Code:
#include <amxmodx>
#include <fvault>
#include <cstrike>
#include <wm_play>
#include <reapi>
#include <hamsandwich>

#define maxranks 15
#define maxlevels 50

#define xPrefix "XP System"

#define RANKS_Noobest 0
#define RANKS_Noob 1
#define RANKS_Newbiee 2
#define RANKS_Easy 3
#define RANKS_Normal 4
#define RANKS_Hard 5
#define RANKS_Expert 6
#define RANKS_SuperExpert 7
#define RANKS_Specialist 8
#define RANKS_Leader 9
#define RANKS_Mayor 10
#define RANKS_Pro 11
#define RANKS_SuperPro 12
#define RANKS_Heroic 13
#define RANKS_God 14

#define LOG_FILE "rank_system.log"

new const CT_MODEL[] =  "ct_model";
new const 
T_MODEL[] =  "t_model"

new const 
VERSION[] =  "1.1";

new 
SzMaxPlayersSzSayText;
new 
playerPrefix,rankLevelBonus,rankSaveType;

new const 
db_save[] = "cs_rank_system";

new 
level[33], xp[33], rank[33], g_status_sync;

new 
SzGTeam[3][] = {
    
"Spectator",
    
"Terrorist",
    
"Counter-Terrorist"
}

new const 
xp_num[maxlevels+1] = 

    
15701502503504505506507508509501050115012501350145015501650,
    
175018501950205021502250235024502550,26502750285029503050315032503350345035503650
    
375038503950405041504250435044504550465047505000 
}

new const 
ranks_names[maxranks][]=
{
    
"Noobest",
    
"Noob",
    
"Newbiee",
    
"Easy",
    
"Normal",
    
"Hard",
    
"Expert",
    
"SuperExpert",
    
"Specialist",
    
"Leader",
    
"Mayor",
    
"Pro",
    
"SuperPro",
    
"Heroic",
    
"God"
}

public 
plugin_init()
{
    
register_plugin("XP + LEVEL + RANK SYSTEM"VERSIONAUTHOR)

    
// system of xp+lvl+rank
    
playerPrefix register_cvar("Player Prefix""1"//1-Prefix by RANK, 2-Prefix by LEVEL
    
rankLevelBonus register_cvar("Level Up Bonus""10000"// Amount of money when passing level.
    
rankSaveType register_cvar("XP Save Type""2"// 1 - IP || 2 - Nick || 3 - SteamID
    
    
register_cvar("XPLvlRankSystem"VERSIONFCVAR_SERVER FCVAR_SPONLY //Search for variable on Gametracker.com

    
register_event("StatusValue""showStatus""be""1=2""2!0")
    
register_event("StatusValue""hideStatus""be""1=1""2=0")
    
    
register_clcmd("say""hook_say");
    
register_clcmd("say_team""hook_say_team");
    
    
register_dictionary("cs_rank_system.txt");

    
SzSayText get_user_msgid ("SayText");
    
SzMaxPlayers get_maxplayers();
    
    
register_message(SzSayText"MsgDuplicate");

    
RegisterHam(Ham_Spawn"player""player_spawn"1);
    
    
g_status_sync CreateHudSyncObj()
}

public 
player_spawn(id)
{
    if(
is_user_alive(id) && level[id] == maxlevels /* xp[id] == 5000 */)
    {
        switch(
get_user_team(id))
        {
            case 
1: if( T_MODEL] != EOS cs_set_user_model(idT_MODEL);
            case 
2: if( CT_MODEL] != EOS cs_set_user_model(idCT_MODEL);
            default: 
cs_reset_user_model(id);
        }
    }


public 
plugin_precache()
{
    if( 
T_MODEL] != EOS precache_model_ex(T_MODEL)
    if( 
CT_MODEL] != EOS precache_model_ex(CT_MODEL)


/*----------------------------------------------------------------------------------------------------------------
-HUD OF THE GAME
----------------------------------------------------------------------------------------------------------------*/
public hud_status(id)
{
    if(!
is_user_alive(id) ||  !is_user_connected(id) )
    return;
    if(
level[id] >= maxlevels)
    {
        static 
rgbrandom_num(0255), random_num(0255), random_num(0255);
        
set_hudmessage(rgb0.80, -1.001.01.10.00.0, -1)
        
show_hudmessage(id," Level: %d/%d^n Rank: %s^n XP: %d/%d"level[id], maxlevelsranks_names[rank[id]], xp[id], xp[id])
    }
    else
    {
        
set_hudmessage(2552552550.80, -1.001.01.10.00.0, -1)
        
show_hudmessage(id," Level: %d/%d^n Rank: %s^n XP: %d/%d"level[id], maxlevelsranks_names[rank[id]], xp[id], xp_num[level[id]])
    }
}

/*----------------------------------------------------------------------------------------------------------------
-CHAT PREFIX
----------------------------------------------------------------------------------------------------------------*/
public MsgDuplicate(id){ return PLUGIN_HANDLED; }

public 
hook_say(id)
{
    new 
SzMessages[192], SzName[32];
    new 
SzAlive is_user_alive(id);
    
    
read_args(SzMessages191);
    
remove_quotes(SzMessages);
    
get_user_name(idSzName31);
    
    if(!
is_valid_msg(SzMessages))
        return 
PLUGIN_CONTINUE;
    
    switch(
get_pcvar_num(playerPrefix))
    {
        case 
:(SzAlive format(SzMessages191"^4[%s] ^3%s : ^1%s"ranks_names[rank[id]], SzNameSzMessages) : format(SzMessages191"^1*DEAD* ^4[%s] ^3%s : ^1%s"ranks_names[rank[id]], SzNameSzMessages));
        case 
:(SzAlive format(SzMessages191"^4[Level %d] ^3%s : ^1%s"level[id], SzNameSzMessages) : format(SzMessages191"^1*DEAD* ^4[Level %d] ^3%s : ^1%s"level[id], SzNameSzMessages));
    }
    
    for(new 
1<= SzMaxPlayersi++)
    {
        if(!
is_user_connected(i))
            continue;
        
        
message_begin(MSG_ONEget_user_msgid("SayText"), {000}, i);
        
write_byte(id);
        
write_string(SzMessages);
        
message_end();
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
hook_say_team(id)
{
    new 
SzMessages[192], SzName[32];
    new 
SzAlive is_user_alive(id);
    new 
SzGetTeam get_user_team(id);
    
    
read_args(SzMessages191);
    
remove_quotes(SzMessages);
    
get_user_name(idSzName31);
    
    if(!
is_valid_msg(SzMessages))
        return 
PLUGIN_CONTINUE;
    
    switch(
get_pcvar_num(playerPrefix))
    {
        case 
: (SzAlive format(SzMessages191"^1(%s) ^4[%s] ^3%s : ^1%s"SzGTeam[SzGetTeam], ranks_names[rank[id]], SzNameSzMessages) : format(SzMessages191"^1*DEAD* ^1(%s) ^4[%s] ^3%s : ^1%s"SzGTeam[SzGetTeam], ranks_names[rank[id]], SzNameSzMessages));
        case 
: (SzAlive format(SzMessages191"^1(%s) ^4[Level %d] ^3%s : ^1%s"SzGTeam[SzGetTeam], level[id], SzNameSzMessages) : format(SzMessages191"^1*DEAD* ^1(%s) ^4[Level %d] ^3%s : ^1%s"SzGTeam[SzGetTeam], level[id], SzNameSzMessages));
    }
        
    for(new 
1<= SzMaxPlayersi++)
    {
        if(!
is_user_connected(i))
            continue;
        
        if(
get_user_team(i) != SzGetTeam)
            continue;
        
        
message_begin(MSG_ONEget_user_msgid("SayText"), {000}, i);
        
write_byte(id);
        
write_string(SzMessages);
        
message_end();
    }
    
    return 
PLUGIN_CONTINUE;
}

bool:is_valid_msg(const SzMessages[])
{
    if( 
SzMessages[0] == '@'
    
|| !strlen(SzMessages)){ return false; }
    return 
true;
}  

/*----------------------------------------------------------------------------------------------------------------
-EVENT TO ADD XP
----------------------------------------------------------------------------------------------------------------*/

public client_death(killervictimweaponhitplace)
{
    new 
victim_name[32]
    
get_user_name(victimvictim_namecharsmax(victim_name))
    
    new 
killer_team get_user_team(killer)
    new 
victim_team get_user_team(victim)
    
    
//NORMAL KILL
    
if((killer != victim) && !(killer_team == victim_team) && !(hitplace == HIT_HEAD) && !(weapon == CSW_HEGRENADE) && !(weapon == CSW_KNIFE))
    {
        
xp[killer]++
        
client_print_color(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_NORMAL_KILL"victim_name)
    }
    
    
//HEADSHOT
    
if(hitplace == HIT_HEAD && !(weapon == CSW_KNIFE) && !(killer_team == victim_team))
    {
        
xp[killer]+=3
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_HEADSHOT_KILL"victim_name)
    }
    
    
//KNIFE KILL
    
if(weapon == CSW_KNIFE && !(hitplace == HIT_HEAD) && !(killer_team == victim_team))
    {
        
xp[killer]+=5
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_KNIFE_KILL"victim_name)
    }
    
    
//KNIFE + HEADSHOT
    
if(weapon == CSW_KNIFE && (hitplace == HIT_HEAD) && !(killer_team == victim_team))
    {
        
xp[killer]+=7
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_KNIFE_HEAD_KILL"victim_name)
    }
    
    
//GRENADE KILL
    
if(weapon == CSW_HEGRENADE && (killer != victim) && !(killer_team == victim_team))
    {
        
xp[killer]+=5
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_GRENADE_KILL"victim_name)
    }
    
    
//SUICIDE
    
if(killer == victim)
    {
        
xp[killer]-=2
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_SUICIDE")
    }
    
    
//TEAM KILL
    
if(killer != victim && (killer_team == victim_team))
    {
        
xp[killer]-=10
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_TEAM_KILL")
    }
    
    
check_level(killer1)
    
save_data(killer)
}
    

/*----------------------------------------------------------------------------------------------------------------
-CHECK LEVEL OF ADD ++
----------------------------------------------------------------------------------------------------------------*/
public check_level(idsound)
{
    if(!
is_user_connected(id))
        return 
PLUGIN_HANDLED;
    
    new 
name[32]; get_user_name(idname31)
    
    if(
level[id] < maxlevels
    {        
        while(
xp[id] >= xp_num[level[id]])
        {
            
level[id]++
            
            if(
sound)
            {
                if(
level[id] == maxlevels)
                {
                    
client_print_color(id"!g[%s] %L"xPrefixLANG_PLAYER"MSG_MAXLVL_ID"level[id])
                    
client_print_color(0"!g[%s] %L",xPrefixLANG_PLAYER"MSG_MAXLVL_ALL"namelevel[id])
                    
                    
client_cmd(0"spk ambience/wolfhowl02.wav")
                    
                    return 
PLUGIN_HANDLED
                
}
                
                
client_print_color(id,"!g[%s] %L",xPrefix,LANG_PLAYER"MSG_RAISE_LEVEL_ID"get_pcvar_num(rankLevelBonus))
                
client_print_color(0"!g[%s] %L",xPrefix,LANG_PLAYER"MSG_RAISE_LEVEL_ALL"nameget_pcvar_num(rankLevelBonus))
                
cs_set_user_money(idcs_get_user_money(id) + get_pcvar_num(rankLevelBonus))
                
                
client_cmd(0"spk ambience/lv_fruit1.wav")
                
                
set_ranks(id)
            }
        }
    } 
    
    
// Bug Preventions... (Back to top)
    
if(level[id] == maxlevels && xp[id] > xp_num[level[id]-1])
    {
        
xp[id] = xp_num[level[id]-1]
        
save_data(id)
    }
    
    if(
level[id] >= maxlevels
    {    
        
level[id] = maxlevels
        xp
[id] = xp_num[level[id]-1]
        
save_data(id)
    }
    
    return 
PLUGIN_HANDLED
}

/*----------------------------------------------------------------------------------------------------------------
-SET THE RANK POSITION
----------------------------------------------------------------------------------------------------------------*/
public set_ranks(id)
{
    if(
level[id] <= 2rank[id] = RANKS_Noobest
    
if(level[id] >= 2rank[id] = RANKS_Noob
    
if(level[id] >= 5rank[id] = RANKS_Newbiee
    
if(level[id] >= 8rank[id] = RANKS_Easy
    
if(level[id] >= 11rank[id] = RANKS_Normal
    
if(level[id] >= 14rank[id] = RANKS_Hard
    
if(level[id] >= 17rank[id] = RANKS_Expert
    
if(level[id] >= 20rank[id] = RANKS_SuperExpert
    
if(level[id] >= 23rank[id] = RANKS_Specialist
    
if(level[id] >= 26rank[id] = RANKS_Leader
    
if(level[id] >= 29rank[id] = RANKS_Mayor
    
if(level[id] >= 32rank[id] = RANKS_Pro
    
if(level[id] >= 33rank[id] = RANKS_SuperPro
    
if(level[id] >= 36rank[id] = RANKS_Heroic
    
if(level[id] >= 43rank[id] = RANKS_God
}

/*----------------------------------------------------------------------------------------------------------------
-SAVE LEVEL, XP AND RANK
----------------------------------------------------------------------------------------------------------------*/
public save_data(id)
{
    if(!
is_user_connected(id))
        return 
PLUGIN_HANDLED;
    
    new 
auth[40], data[50]
    
    switch(
get_pcvar_num(rankSaveType))
    {
        case 
1get_user_ip(idauthcharsmax(auth), 1)
        case 
2get_user_name(idauthcharsmax(auth))
        case 
3get_user_authid(idauthcharsmax(auth))
    }
    
    
formatex(datacharsmax(data), "%d %d"level[id], xp[id])
    
    
fvault_pset_data(db_saveauthdata)
    
    return 
PLUGIN_HANDLED;
}

/*----------------------------------------------------------------------------------------------------------------
-LOAD DATA
----------------------------------------------------------------------------------------------------------------*/

public client_authorized(id)
{
    new 
auth[40], data[50], x1[10], x2[10]
    
    switch(
get_pcvar_num(rankSaveType))
    {
        case 
1get_user_ip(idauthcharsmax(auth), 1)
        case 
2get_user_name(idauthcharsmax(auth))
        case 
3get_user_authid(idauthcharsmax(auth))
    }
    
    
fvault_get_data(db_saveauthdatacharsmax(data))
    
parse(datax1charsmax(x1), x2charsmax(x2))
    
    
level[id] = str_to_num(x1)
    
xp[id] = str_to_num(x2)
    
    
set_task(2.0"set_ranks"id)
    
check_level(id0)
    
    
set_task(1.1"hud_status"id__"b")
}

/*----------------------------------------------------------------------------------------------------------------
-SHOW XP BY LOOKING AT THE PERSON
----------------------------------------------------------------------------------------------------------------*/

public showStatus(id)
{
    if(!
is_user_bot(id) && is_user_connected(id)) 
    {
        new 
name[32], pid read_data(2)
        
        
get_user_name(pidname31)
        
        new 
xxx get_user_team(id)
        new 
xxx2 get_user_team(pid)
        
        static 
rgb;
        
random_num(0255), random_num(0255), random_num(0255);
        
        if (
xxx == xxx2)    // friend
        
{
            
set_hudmessage(rgb, -1.00.6010.013.00.010.01, -1)
            
ShowSyncHudMsg(idg_status_sync"Name: %s^nRank: %s^nLevel: %d^nXP: %d/%d"nameranks_names[rank[pid]], level[pid], xp[pid], xp_num[level[pid]])
        }
    }
}

public 
hideStatus(id)
{
    
ClearSyncHud(idg_status_sync)
}

precache_model_ex(const szModel[], &id 0)
{
    new 
model[128]
    
formatex(modelcharsmax(model), "models/player/%s/%sT.mdl"szModelszModel)

    if(
file_exists(model))
    {
        
id precache_generic(model)
    }

    static const 
extension[] = "T.mdl"
    
#pragma unused extension
    
    
copy(model[strlen(model) - charsmax(extension)], charsmax(model), ".mdl")
    
    if(!
file_exists(model))
    {
        
server_print("Model ^"%s^" does not exists"model);
        return -
1;
    }
    
    return 
precache_generic(model)

__________________
Youtube.com/Supremache

Bank System [Nvault - SQL Support]
VIP System
  • If you think it's that simple, then do it yourself.

Last edited by Supremache; 06-09-2022 at 07:37.
Supremache is offline
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 01:23.


Powered by vBulletin®
Copyright ©2000 - 2023, vBulletin Solutions, Inc.
Theme made by Freecode