PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fvault>
#define MaxLevels 51
new Level[33], eXP[33]
new LevelBonus, knife_xp, he_xp, hs_xp, kill_xp
new const g_vault_name[] = "levelsz";
new const Levels[MaxLevels] =
{
90,
180,
300,
450,
700,
1200,
1800,
2800,
4100,
5200,
6000,
6800,
8200,
10200,
12000,
15000,
17500,
20500,
25500,
29000,
35000,
46000,
58000,
71000,
85000,
100000,
116000,
133000,
151000,
170000,
190000,
211000,
233000,
256000,
280000,
305000,
331000,
358000,
386000,
415000,
445000,
476000,
508000,
541000,
575000,
610000,
646000,
683000,
721000,
760000,
9999999
}
public plugin_init()
{
register_plugin("Ranks & XP mod", "1.0", "alt.nick")
register_event("DeathMsg","level_client_death","a")
register_clcmd("say", "hook_say")
register_clcmd("say_team", "hook_say")
register_clcmd("say /xp", "cmdRank")
register_clcmd("say_team /xp", "cmdRank")
register_clcmd("say /level", "cmdRank")
register_clcmd("say_team /level", "cmdRank")
register_clcmd("say /lvl", "cmdRank")
register_clcmd("say_team /lvl", "cmdRank")
LevelBonus = register_cvar("Level Up Bonus", "10000")
knife_xp = register_cvar("knife_xp", "2")
he_xp = register_cvar("he_xp", "1")
hs_xp = register_cvar("hs_xp", "2")
kill_xp = register_cvar("kill_xp", "1")
register_concmd ("amx_give_xp", "CmdAddXP", ADMIN_LEVEL_A, "<nick | ct | t | @all> <xp>")
fvault_load(g_vault_name)
}
public ShowHud(id)
{
set_hudmessage(255, 255, 255, 0.80, -1.0, 0, 1.0, 1.1, 0.0, 0.0, -1)
show_hudmessage(id, "XP: %i / %i ^nLevel: %i", eXP[id], Levels[Level[id]], Level[id])
}
public client_putinserver(id)
{
set_task(1.0, "ShowHud", id, _, _, "b")
if(Level[id] < MaxLevels-1)
while(eXP[id] >= Levels[Level[id]])
Level[id] += 1
}
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))
{
eXP[killer]+= get_pcvar_num(kill_xp)
}
//HEADSHOT
if(hitplace == HIT_HEAD && !(weapon == CSW_KNIFE) && !(killer_team == victim_team))
{
eXP[killer]+= get_pcvar_num(hs_xp)
}
//KNIFE KILL
if(weapon == CSW_KNIFE && !(hitplace == HIT_HEAD) && !(killer_team == victim_team))
{
eXP[killer]+= get_pcvar_num(knife_xp)
}
//KNIFE + HEADSHOT
if(weapon == CSW_KNIFE && (hitplace == HIT_HEAD) && !(killer_team == victim_team))
{
eXP[killer]+= get_pcvar_num(knife_xp)
}
//GRENADE KILL
if(weapon == CSW_HEGRENADE && (killer != victim) && !(killer_team == victim_team))
{
eXP[killer]+=get_pcvar_num(he_xp)
}
CheckLevel(killer)
SaveData(killer)
}
public CheckLevel(id)
{
if(Level[id] < MaxLevels-1)
while(eXP[id] >= Levels[Level[id]])
Level[id] += 1
cs_set_user_money(id, cs_get_user_money(id) + get_pcvar_num(LevelBonus))
client_print(id, print_chat, "Level: %d | You have got %s$ for your level upgrade,",Level[id], LevelBonus)
}
public client_connect(id)
{
LoadData(id)
}
public client_disconnect(id)
{
SaveData(id)
eXP[id] = 0
Level[id] = 0
remove_task(id)
}
public cmdRank(id)
{
if(is_user_connected(id))
client_print(id, print_chat, "XP: %d / %d | Level: %d / 50.", eXP[id], Levels[Level[id]], Level[id])
}
public CmdAddXP (iPlayer, level, cid)
{
if(!cmd_access(iPlayer, level, cid, 3)) return PLUGIN_HANDLED;
new arg [32]
read_argv (1, arg, 31)
new AddXP [32]
read_argv (2, AddXP, charsmax (AddXP))
new XPtoGive = str_to_num (AddXP)
new AdminName [32]
new TargetName [32]
get_user_name (iPlayer, AdminName, charsmax (AdminName))
if(arg[0]=='@')
{
if(equali(arg[1],"All") || equali(arg[1],"ALL"))
{
new players[32], totalplayers, All
get_players(players, totalplayers)
for (new i = 0; i < totalplayers; i++)
{
All = players[i]
eXP[All] += XPtoGive
}
CheckLevel(All)
client_print(0, print_chat, "Admin %s gave %i XP to all players!", AdminName, XPtoGive)
}
else if(equali(arg[1],"T") || equali(arg[1],"t"))
{
new players[32], totalplayers, T
get_players(players, totalplayers)
for (new i = 0; i < totalplayers; i++)
{
if (get_user_team(players[i]) == 1)
{
T = players[i]
eXP[T] += XPtoGive
}
}
CheckLevel(T)
client_print(0, print_chat, "Admin %s gave %i XP to all Zombies.", AdminName, XPtoGive)
}
else if(equali(arg[1],"CT") || equali(arg[1],"ct"))
{
new players[32], totalplayers, CT
get_players(players, totalplayers)
for(new i = 0; i < totalplayers; i++)
{
if(get_user_team(players[i]) == 2)
{
CT = players[i]
eXP[CT] += XPtoGive
}
}
CheckLevel(CT)
client_print(0, print_chat, "Admin %s gave %i XP to all Humans.", AdminName, XPtoGive)
}
}
else
{
new iTarget = cmd_target(iPlayer, arg, 3)
get_user_name (iTarget, TargetName, charsmax (TargetName))
if(iTarget)
{
eXP[iTarget] += XPtoGive
CheckLevel(iTarget)
client_print(0, print_chat, "Admin %s gave %i XP to %s.", AdminName, XPtoGive, TargetName)
}
}
return PLUGIN_HANDLED
}
bool:IsValidMessage( szMessage[ ], iLen )
{
read_args( szMessage, iLen )
remove_quotes( szMessage )
new iPos, cChar
while( 0 <= ( cChar = szMessage[ iPos++ ] ) <= 255 )
{
if( cChar != ' ' && cChar != '%' )
{
return true
}
}
return false
}
public hook_say(id)
{
if(!is_user_connected(id))
return PLUGIN_HANDLED_MAIN
new szArgs[192]
if( !IsValidMessage(szArgs, charsmax(szArgs)))
return PLUGIN_HANDLED_MAIN
if(equal(szArgs,"")) return PLUGIN_HANDLED_MAIN
new szName[32]
get_user_name(id, szName, sizeof szName-1)
if(contain(szArgs,"@") >= 0)
return PLUGIN_HANDLED_MAIN
return PLUGIN_HANDLED_MAIN
}
public SaveData(id)
{
new name[32];
get_user_name(id,name,31);
new vaultkey[64],vaultdata[256];
format(vaultkey,63,"%s", name);
format(vaultdata,255,"%i#%i#",eXP[id],Level[id]);
fvault_set_data(g_vault_name,vaultkey,vaultdata);
return PLUGIN_CONTINUE;
}
public LoadData(id)
{
new name[32];
get_user_name(id,name,31);
new vaultkey[64],vaultdata[256];
format(vaultkey,63,"%s",name);
format(vaultdata,255,"%i#%i#",eXP[id],Level[id]);
fvault_get_data(g_vault_name,vaultkey,vaultdata,charsmax(vaultdata));
replace_all(vaultdata, 255, "#", " ");
new playerxp[32], playerlevel[32];
parse(vaultdata, playerxp, 31, playerlevel, 31);
eXP[id] = str_to_num(playerxp);
Level[id] = str_to_num(playerlevel);
return PLUGIN_CONTINUE;
}
Tell Me if there's anyproblems in this plugin and how to add public client_death codes of thsi plugin to public client_death codes of base builder mod