#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <hamsandwich>
#include <nvault>
new const PLUGIN_NAME[] = "Deathrun XP";
new const drxp_version[] = "2.0";
new const LEVELS[100] = {
50,
100,
150,
200,
250,
300,
350,
400,
450,
500,
550,
600,
650,
700,
750,
800,
850,
900,
950,
1000,
1050,
1100,
1150,
1200,
1250,
1300,
1350,
1400,
1450,
1500,
1550,
1600,
1650,
1700,
1750,
1800,
1850,
1900,
1950,
2000,
2050,
2100,
2150,
2200,
2250,
2300,
2350,
2400,
2450,
2500,
2550,
2600,
2650,
2700,
2750,
2800,
2850,
2900,
2950,
3000,
3050,
3100,
3150,
3200,
3250,
3300,
3350,
3400,
3450,
3500,
3550,
3600,
3650,
3700,
3750,
3800,
3850,
3900,
3950,
4000,
4050,
4100,
4150,
4200,
4250,
4300,
4350,
4400,
4450,
4500,
4550,
4600,
4650,
4700,
4750,
4800,
4850,
4900,
4950,
5000
}
new drxp_playerxp[33], drxp_playerlevel[33];
new drxp_kill, drxp_knife, drxp_grenade, drxp_hs, drxp_savexp, g_drxp_vault;
public plugin_init()
{
register_plugin(PLUGIN_NAME, drxp_version, "KronoS");
RegisterHam(Ham_Spawn, "player", "drxp_spawn", 1);
register_event("DeathMsg", "drxp_death", "a");
drxp_savexp = register_cvar("drxp_savexp","1");
drxp_kill = register_cvar("drxp_kill", "10");
drxp_knife = register_cvar("drxp_knife","5");
drxp_grenade = register_cvar("drxp_grenade","15");
drxp_hs = register_cvar("drxp_hs","10");
g_drxp_vault = nvault_open("deathrun_xp");
register_concmd("amx_takexp", "cmd_take_exp", ADMIN_BAN, "<target> <amount>");
register_concmd("amx_givexp", "cmd_give_exp", ADMIN_BAN, "<target> <amount>");
}
public drxp_spawn(id)
{
if((drxp_playerlevel[id] < 10) && (drxp_playerxp[id] >= LEVELS[drxp_playerlevel[id]]))
{
client_print(id,print_chat,"[%s] Gratulalok!Szintet leptel!", PLUGIN_NAME);
while(drxp_playerxp[id] >= LEVELS[drxp_playerlevel[id]])
{
drxp_playerlevel[id] += 1;
}
}
if(drxp_playerlevel[id] > 0)
set_user_health(id, get_user_health(id) + 5*drxp_playerlevel[id]);
}
public drxp_death()
{
new iVictim = read_data(2);
new weapon, hitplace, attacker = get_user_attacker(iVictim,weapon,hitplace);
new victimname[32], wvar[32];
get_user_name(iVictim,victimname,31);
read_data(4, wvar, 31);
if(equal(wvar, "world", 5))
return;
if(attacker < 1 || attacker > 32)
return;
drxp_playerxp[attacker] += get_pcvar_num(drxp_kill);
client_print(attacker,print_chat,"[%s] Kaptal %i XPt olesert, megolted: %s-t!", PLUGIN_NAME, get_pcvar_num(drxp_grenade), victimname);
if(hitplace == HIT_HEAD)
{
drxp_playerxp[attacker] += get_pcvar_num(drxp_hs);
client_print(attacker,print_chat,"[%s] Kaptal %i XPt olesert, megolted: %s-t fejessel!", PLUGIN_NAME, get_pcvar_num(drxp_hs), victimname);
}
if(weapon == CSW_KNIFE)
{
drxp_playerxp[attacker] += get_pcvar_num(drxp_knife);
client_print(attacker,print_chat,"[%s] Kaptal %i XPt olesert, megolted: %s-t kessel!", PLUGIN_NAME, get_pcvar_num(drxp_knife), victimname);
}
else if(weapon == CSW_HEGRENADE)
{
drxp_playerxp[attacker] += get_pcvar_num(drxp_grenade);
client_print(attacker,print_chat,"[%s] Kaptal %i XPt olesert, megolted: %s-t Granattal!", PLUGIN_NAME, get_pcvar_num(drxp_grenade), victimname);
}
drxp_hudinfo(attacker);
}
public drxp_hudinfo(id)
{
set_hudmessage(255, 255, 255, 0.01, 0.2, 0, 3.0, 3.0);
if(drxp_playerlevel[id] < 10)
show_hudmessage(id, "Szint: %i^nXP: %i / %i", drxp_playerlevel[id], drxp_playerxp[id], LEVELS[drxp_playerlevel[id] + 1]);
else
show_hudmessage(id, "Szint: %i^nElerted a maximum szintet!", drxp_playerlevel[id]);
set_task(2.0, "drxp_hudinfo", id);
}
public client_putinserver(id)
{
if(get_pcvar_num(drxp_savexp) == 1)
LoadData(id);
set_task(10.0, "drxp_hudinfo", id);
}
public client_disconnect(id)
{
if(get_pcvar_num(drxp_savexp) == 1)
SaveData(id);
drxp_playerxp[id] = 0;
drxp_playerlevel[id] = 0;
}
public SaveData(id)
{
new PlayerName[35];
get_user_name(id,PlayerName,34);
new vaultkey[64],vaultdata[256];
format(vaultkey,63,"%s",PlayerName);
format(vaultdata,255,"%i#%i#",drxp_playerxp[id],drxp_playerlevel[id]);
nvault_set(g_drxp_vault,vaultkey,vaultdata);
return PLUGIN_CONTINUE;
}
public LoadData(id)
{
new PlayerName[35];
get_user_name(id,PlayerName,34);
new vaultkey[64],vaultdata[256];
format(vaultkey,63,"%s",PlayerName);
format(vaultdata,255,"%i#%i#",drxp_playerxp[id],drxp_playerlevel[id]);
nvault_get(g_drxp_vault,vaultkey,vaultdata,255);
replace_all(vaultdata, 255, "#", " ");
new playerxp[32], playerlevel[32];
parse(vaultdata, playerxp, 31, playerlevel, 31);
drxp_playerxp[id] = str_to_num(playerxp);
drxp_playerlevel[id] = str_to_num(playerlevel);
return PLUGIN_CONTINUE;
}
public cmd_give_exp(id, level, cid)
{
if(!cmd_access(id, level, cid, 3))
return PLUGIN_HANDLED
new target[32], amount[21], reason[21]
read_argv(1, target, 31)
read_argv(2, amount, 20)
read_argv(3, reason, 20)
new player = cmd_target(id, target, 8)
if(!player)
return PLUGIN_HANDLED
new admin_name[32], player_name[32]
get_user_name(id, admin_name, 31)
get_user_name(player, player_name, 31)
new expnum = str_to_num(amount)
client_print(0, print_chat, "ADMIN %s: addot %s xpt, neki: %s", admin_name, amount, player_name)
drxp_playerxp[player] += expnum
SaveData(id)
return PLUGIN_CONTINUE
}
public cmd_take_exp(id, level, cid)
{
if(!cmd_access(id, level, cid, 3))
return PLUGIN_HANDLED
new target[32], amount[21], reason[21]
read_argv(1, target, 31)
read_argv(2, amount, 20)
read_argv(3, reason, 20)
new player = cmd_target(id, target, 8)
if(!player)
return PLUGIN_HANDLED
new admin_name[32], player_name[32]
get_user_name(id, admin_name, 31)
get_user_name(player, player_name, 31)
new expnum = str_to_num(amount)
client_print(0, print_chat, "ADMIN %s: elvett %s xpt, tole: %s", admin_name, amount, player_name)
drxp_playerxp[player] -= expnum
SaveData(id)
return PLUGIN_CONTINUE
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
*/