/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <fakemeta>
#include <bence98007>
#define MAXCLASSES 5
#define PLUGIN "XP Rendszer"
#define VERSION "1.0"
#define AUTHOR "Bence98007"
new elso[33]=100;
new masodik[33]=200;
new harmadik[33]=400;
new negyedik[33]=800;
new hatodik[33]=1600;
new hetedik[33]=3200;
new nyolcadik[33]=6400;
new kilencedik[33]=7000;
new tizedik[33]=7300;
new tizenegyedik[33]=7600;
new tizenkettedik[33]=7800;
new tizenharmadik[33]=8000;
new tizennegyedik[33]=8300;
new tizenotodik[33]=8600;
new tizenhatodik[33]=9000;
new tizenhetedik[33]=9300;
new tizennyolcadik[33]=9500;
new tizenkilencedik[33]=9700;
new huszadik[33]=10000;
new const CLASSES[MAXCLASSES][] = {
"None",
"1",
"2",
"3",
"4"
}
new const LEVELS[20] = {
100, // 1
200, // 2
400, // 3
800, // 4
1600, // 6
3200, // 7
6400, // 8
7000, // 9
7300, // 10
7600, // 11
7800, // 12
8000, // 13
8300, // 14
8600, // 15
9000, // 16
9300, // 17
9500, // 18
9700, // 19
10000 // 20
}
new PlayerXP[33],PlayerLevel[33],PlayerClass[33],SzuksegesXP[33]
new XP_Kill,XP_Knife,XP_Hs,SaveXP,g_vault
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("DeathMsg", "eDeath", "a")
register_forward( FM_PlayerPreThink, "forward_prethink" )
SaveXP = register_cvar("SaveXP","1")
XP_Kill=register_cvar("XP_per_kill", "15")
XP_Hs=register_cvar("XP_hs_bonus","20")
XP_Knife=register_cvar("XP_knife_bonus","25")
g_vault = nvault_open("animod")
register_clcmd("afadsgfasdgsfdag", "ChangeClass")
register_clcmd("say /xp", "ShowHud")
register_clcmd("say_team /xp", "ShowHud")
}
public client_PreThink(id)
{
set_hudmessage(42, 42, 255, 0.0, 0.90, 0, 6.0, 99999.0)
show_hudmessage(id, "[Szint: %d] [XP: %d] [Szukseges XP: %d]", PlayerLevel[id], PlayerXP[id],SzuksegesXP[id])
}
public forward_prethink(id)
{
if(PlayerLevel[id] = 1)
{
elso[id]-=PlayerXP[id];
if(elso[id]>0)
{
SzuksegesXP[id]=elso[id];
}
else
{
elso[id]=100;
}
}
if(PlayerLevel[id] = 2)
{
masodik[id]-=PlayerXP[id];
if(masodik[id]>0)
{
SzuksegesXP[id]=masodik[id];
}
else
{
masodik[id]=200;
}
}
if(PlayerLevel[id] = 3)
{
harmadik[id]-=PlayerXP[id];
if(harmadik[id]>0)
{
SzuksegesXP[id]=harmadik[id];
}
else
{
harmadik[id]=400;
}
}
if(PlayerLevel[id] = 4)
{
negyedik[id]-=PlayerXP[id];
if(negyedik[id]>0)
{
SzuksegesXP[id]=negyedik[id];
}
else
{
negyedik[id]=800;
}
}
if(PlayerLevel[id] = 6)
{
hatodik[id]-=PlayerXP[id];
if(hatodik[id]>0)
{
SzuksegesXP[id]=hatodik[id];
}
else
{
hatodik[id]=1600;
}
}
if(PlayerLevel[id] = 7)
{
hetedik[id]-=PlayerXP[id];
if(hetedik[id]>0)
{
SzuksegesXP[id]=hetedik[id];
}
else
{
hetedik[id]=3200;
}
}
if(PlayerLevel[id] = 8)
{
nyolcadik[id]-=PlayerXP[id];
if(nyolcadik[id]>0)
{
SzuksegesXP[id]=nyolcadik[id];
}
else
{
nyolcadik[id]=6400;
}
}
if(PlayerLevel[id] = 9)
{
kilencedik[id]-=PlayerXP[id];
if(kilencedik[id]>0)
{
SzuksegesXP[id]=kilencedik[id];
}
else
{
kilencedik[id]=7000;
}
}
if(PlayerLevel[id] = 10)
{
tizedik[id]-=PlayerXP[id];
if(tizedik[id]>0)
{
SzuksegesXP[id]=tizedik[id];
}
else
{
tizedik[id]=7300;
}
}
if(PlayerLevel[id] = 11)
{
tizenegyedik[id]-=PlayerXP[id];
if(tizenegyedik[id]>0)
{
SzuksegesXP[id]=tizenegyedik[id];
}
else
{
tizenegyedik[id]=7600;
}
}
if(PlayerLevel[id] = 12)
{
tizenkettedik[id]-=PlayerXP[id];
if(tizenkettedik[id]>0)
{
SzuksegesXP[id]=tizenkettedik[id];
}
else
{
tizenkettedik[id]=7800;
}
}
if(PlayerLevel[id] = 13)
{
tizenharmadik[id]-=PlayerXP[id];
if(tizenharmadik[id]>0)
{
SzuksegesXP[id]=tizenharmadik[id];
}
else
{
tizenharmadik[id]=8000;
}
}
if(PlayerLevel[id] = 14)
{
tizennegyedik[id]-=PlayerXP[id];
if(tizennegyedik[id]>0)
{
SzuksegesXP[id]=tizennegyedik[id];
}
else
{
tizennegyedik[id]=8300;
}
}
if(PlayerLevel[id] = 15)
{
tizenotodik[id]-=PlayerXP[id];
if(tizenotodik[id]>0)
{
SzuksegesXP[id]=tizenotodik[id];
}
else
{
tizenotodik[id]=8600;
}
}
if(PlayerLevel[id] = 16)
{
tizenhatodik[id]-=PlayerXP[id];
if(tizenhatodik[id]>0)
{
SzuksegesXP[id]=tizenhatodik[id];
}
else
{
tizenhatodik[id]=9000;
}
}
if(PlayerLevel[id] = 17)
{
tizenhetedik[id]-=PlayerXP[id];
if(tizenhetedik[id]>0)
{
SzuksegesXP[id]=tizenhetedik[id];
}
else
{
tizenhetedik[id]=9300;
}
}
if(PlayerLevel[id] = 18)
{
tizennyolcadik[id]-=PlayerXP[id];
if(tizennyolcadik[id]>0)
{
SzuksegesXP[id]=tizennyolcadik[id];
}
else
{
tizennyolcadik[id]=9500;
}
}
if(PlayerLevel[id] = 19)
{
tizenkilencedik[id]-=PlayerXP[id];
if(tizenkilencedik[id]>0)
{
SzuksegesXP[id]=tizenkilencedik[id];
}
else
{
tizenkilencedik[id]=9700;
}
}
if(PlayerLevel[id] = 20)
{
huszadik[id]-=PlayerXP[id];
if(huszadik[id]>0)
{
SzuksegesXP[id]=huszadik[id];
}
else
{
huszadik[id]=10000;
}
}
}
public eDeath( )
{
new attacker = read_data( 1 )
new iVictim = read_data( 2 )
new headshot = read_data( 3 )
new clip, ammo, weapon = get_user_weapon(attacker,clip,ammo);
PlayerXP[attacker] += get_pcvar_num(XP_Kill)
client_print(attacker, print_center, "+%d", get_pcvar_num(XP_Kill))
if(headshot)
{
PlayerXP[attacker] += get_pcvar_num(XP_Hs)
client_print(attacker, print_center, "+%d", get_pcvar_num(XP_Hs))
}
if(weapon == CSW_KNIFE)
{
PlayerXP[attacker] += get_pcvar_num(XP_Knife)
client_print(attacker, print_center, "+%d", get_pcvar_num(XP_Knife))
}
while(PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]])
{
new nev[32]
get_user_name(attacker, nev, 31)
set_hudmessage(42, 255, 0, -1.0, 0.22, 0, 6.0, 12.0)
show_hudmessage(attacker, "..|| SZINTLEPES! ||..^n>>>>Szint %d<<<<", PlayerLevel[attacker])
print_color(0, "!g[DubStepCity] !t%s szintet lépett! Gratulálunk!", nev)
PlayerLevel[attacker] += 1
}
//ShowHud(attacker)
SaveData(attacker)
}
public ShowHud(id)
{
set_hudmessage(255, 0, 0, 0.75, 0.01, 0, 6.0, 15.0)
show_hudmessage(id, "Level: %i^nXP: %i^nClass: %s",PlayerLevel[id],PlayerXP[id],CLASSES[PlayerClass[id]])
}
public ChangeClass(id)
{
new menu = menu_create("Class Menu" , "Class_Handle");
menu_additem(menu ,"Dog", "1" , 0);
menu_additem(menu ,"Cat", "2" , 0);
menu_additem(menu ,"Horse", "3" , 0);
menu_additem(menu ,"Cow", "4" , 0);
menu_setprop(menu , MPROP_EXIT , MEXIT_ALL);
menu_display(id , menu , 0);
return PLUGIN_CONTINUE;
}
public Class_Handle(id , menu , item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
}
new szCommand[6] , szName[64];
new access , callback;
menu_item_getinfo(menu , item , access , szCommand , 5 , szName , 63 , callback);
new i = str_to_num(szCommand)
if(PlayerClass[id] != i)
{
PlayerClass[id] = i
client_print(id,print_chat,"You are now a %s",CLASSES[i])
}
else
{
client_print(id,print_chat,"You are alredy a %s",CLASSES[i])
}
menu_destroy(menu);
return PLUGIN_CONTINUE
}
public client_connect(id)
{
if(get_pcvar_num(SaveXP) == 1)
{
LoadData(id)
}
}
public client_disconnect(id)
{
if(get_pcvar_num(SaveXP) == 1)
{
SaveData(id)
}
PlayerXP[id] = 0
PlayerLevel[id] = 0
PlayerClass[id] = 0
}
public SaveData(id)
{
new AuthID[35]
get_user_authid(id,AuthID,34)
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-Mod",AuthID)
format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id])
nvault_set(g_vault,vaultkey,vaultdata)
return PLUGIN_CONTINUE
}
public LoadData(id)
{
new AuthID[35]
get_user_authid(id,AuthID,34)
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-Mod",AuthID)
format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id])
nvault_get(g_vault,vaultkey,vaultdata,255)
replace_all(vaultdata, 255, "#", " ")
new playerxp[32], playerlevel[32]
parse(vaultdata, playerxp, 31, playerlevel, 31)
PlayerXP[id] = str_to_num(playerxp)
PlayerLevel[id] = str_to_num(playerlevel)
return PLUGIN_CONTINUE
}