Veteran Member
|
06-07-2022
, 08:30
Re: (Request) Add a CT&T player skin in this plugin.
|
#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 SzMaxPlayers, SzSayText; 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] = { 15, 70, 150, 250, 350, 450, 550, 650, 750, 850, 950, 1050, 1150, 1250, 1350, 1450, 1550, 1650, 1750, 1850, 1950, 2050, 2150, 2250, 2350, 2450, 2550,2650, 2750, 2850, 2950, 3050, 3150, 3250, 3350, 3450, 3550, 3650, 3750, 3850, 3950, 4050, 4150, 4250, 4350, 4450, 4550, 4650, 4750, 5000 }
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", VERSION, AUTHOR)
// 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", VERSION, FCVAR_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 1: rg_set_user_model(id, T_MODEL, false); case 2: rg_set_user_model(id, CT_MODEL, false); } }
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 r, g, b; r = random_num(0, 255), g = random_num(0, 255), b = random_num(0, 255); set_hudmessage(r, g, b, 0.80, -1.0, 0, 1.0, 1.1, 0.0, 0.0, -1) show_hudmessage(id,"» Level: %d/%d^n» Rank: %s^n» XP: %d/%d", level[id], maxlevels, ranks_names[rank[id]], xp[id], xp[id]) } else { set_hudmessage(255, 255, 255, 0.80, -1.0, 0, 1.0, 1.1, 0.0, 0.0, -1) show_hudmessage(id,"» Level: %d/%d^n» Rank: %s^n» XP: %d/%d", level[id], maxlevels, ranks_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(SzMessages, 191); remove_quotes(SzMessages); get_user_name(id, SzName, 31); if(!is_valid_msg(SzMessages)) return PLUGIN_CONTINUE; switch(get_pcvar_num(playerPrefix)) { case 1 :(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^1%s", ranks_names[rank[id]], SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^1%s", ranks_names[rank[id]], SzName, SzMessages)); case 2 :(SzAlive ? format(SzMessages, 191, "^4[Level %d] ^3%s : ^1%s", level[id], SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[Level %d] ^3%s : ^1%s", level[id], SzName, SzMessages)); } for(new i = 1; i <= SzMaxPlayers; i++) { if(!is_user_connected(i)) continue; message_begin(MSG_ONE, get_user_msgid("SayText"), {0, 0, 0}, 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(SzMessages, 191); remove_quotes(SzMessages); get_user_name(id, SzName, 31); if(!is_valid_msg(SzMessages)) return PLUGIN_CONTINUE; switch(get_pcvar_num(playerPrefix)) { case 1 : (SzAlive ? format(SzMessages, 191, "^1(%s) ^4[%s] ^3%s : ^1%s", SzGTeam[SzGetTeam], ranks_names[rank[id]], SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^1(%s) ^4[%s] ^3%s : ^1%s", SzGTeam[SzGetTeam], ranks_names[rank[id]], SzName, SzMessages)); case 2 : (SzAlive ? format(SzMessages, 191, "^1(%s) ^4[Level %d] ^3%s : ^1%s", SzGTeam[SzGetTeam], level[id], SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^1(%s) ^4[Level %d] ^3%s : ^1%s", SzGTeam[SzGetTeam], level[id], SzName, SzMessages)); } for(new i = 1; i <= SzMaxPlayers; i++) { if(!is_user_connected(i)) continue; if(get_user_team(i) != SzGetTeam) continue; message_begin(MSG_ONE, get_user_msgid("SayText"), {0, 0, 0}, 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(killer, victim, weapon, hitplace) { new victim_name[32] get_user_name(victim, victim_name, charsmax(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", xPrefix, LANG_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", xPrefix, LANG_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", xPrefix, LANG_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", xPrefix, LANG_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", xPrefix, LANG_PLAYER, "MSG_GRENADE_KILL", victim_name) } //SUICIDE if(killer == victim) { xp[killer]-=2 client_print_color(killer, "!g[%s] %L", xPrefix, LANG_PLAYER, "MSG_SUICIDE") } //TEAM KILL if(killer != victim && (killer_team == victim_team)) { xp[killer]-=10 client_print_color(killer, "!g[%s] %L", xPrefix, LANG_PLAYER, "MSG_TEAM_KILL") } check_level(killer, 1) save_data(killer) }
/*---------------------------------------------------------------------------------------------------------------- -CHECK LEVEL OF ADD ++ ----------------------------------------------------------------------------------------------------------------*/ public check_level(id, sound) { if(!is_user_connected(id)) return PLUGIN_HANDLED; new name[32]; get_user_name(id, name, 31) 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", xPrefix, LANG_PLAYER, "MSG_MAXLVL_ID", level[id]) client_print_color(0, "!g[%s] %L",xPrefix, LANG_PLAYER, "MSG_MAXLVL_ALL", name, level[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", name, get_pcvar_num(rankLevelBonus)) cs_set_user_money(id, cs_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] <= 2) rank[id] = RANKS_Noobest if(level[id] >= 2) rank[id] = RANKS_Noob if(level[id] >= 5) rank[id] = RANKS_Newbiee if(level[id] >= 8) rank[id] = RANKS_Easy if(level[id] >= 11) rank[id] = RANKS_Normal if(level[id] >= 14) rank[id] = RANKS_Hard if(level[id] >= 17) rank[id] = RANKS_Expert if(level[id] >= 20) rank[id] = RANKS_SuperExpert if(level[id] >= 23) rank[id] = RANKS_Specialist if(level[id] >= 26) rank[id] = RANKS_Leader if(level[id] >= 29) rank[id] = RANKS_Mayor if(level[id] >= 32) rank[id] = RANKS_Pro if(level[id] >= 33) rank[id] = RANKS_SuperPro if(level[id] >= 36) rank[id] = RANKS_Heroic if(level[id] >= 43) rank[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 1: get_user_ip(id, auth, charsmax(auth), 1) case 2: get_user_name(id, auth, charsmax(auth)) case 3: get_user_authid(id, auth, charsmax(auth)) } formatex(data, charsmax(data), "%d %d", level[id], xp[id]) fvault_pset_data(db_save, auth, data) return PLUGIN_HANDLED; }
/*---------------------------------------------------------------------------------------------------------------- -LOAD DATA ----------------------------------------------------------------------------------------------------------------*/
public client_authorized(id) { new auth[40], data[50], x1[10], x2[10] switch(get_pcvar_num(rankSaveType)) { case 1: get_user_ip(id, auth, charsmax(auth), 1) case 2: get_user_name(id, auth, charsmax(auth)) case 3: get_user_authid(id, auth, charsmax(auth)) } fvault_get_data(db_save, auth, data, charsmax(data)) parse(data, x1, charsmax(x1), x2, charsmax(x2)) level[id] = str_to_num(x1) xp[id] = str_to_num(x2) set_task(2.0, "set_ranks", id) check_level(id, 0) 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(pid, name, 31) new xxx = get_user_team(id) new xxx2 = get_user_team(pid) static r, g, b; r = random_num(0, 255), g = random_num(0, 255), b = random_num(0, 255); if (xxx == xxx2) // friend { set_hudmessage(r, g, b, -1.0, 0.60, 1, 0.01, 3.0, 0.01, 0.01, -1) ShowSyncHudMsg(id, g_status_sync, "Name: %s^nRank: %s^nLevel: %d^nXP: %d/%d", name, ranks_names[rank[pid]], level[pid], xp[pid], xp_num[level[pid]]) } } }
public hideStatus(id) { ClearSyncHud(id, g_status_sync) }
precache_player_model(const szModel[], &id = 0) { new model[128]; formatex(model, charsmax(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); }
|
|