PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <nvault>
#include <hamsandwich>
#define MAXCLASSES 4
#define MAXLEVEL 20
new const CLASSES[MAXCLASSES][] = { "Smoker", "Hunter", "Boomer", "Tank"
}; // Zombie Classes
new const RANKS[MAXLEVEL][] = { "First", "First", "First", "Super Natural", "Super Natural",
"Super Natural", "MeGa", "MeGa", "MeGa", "Posion", "Posion", "Posion", "Runner", "Runner",
"Runner", "Hiper Electro", "Hiper Electro", "Hiper Electro", "Mystic Jumper", "Mystic Jumper"
}; // Ranks
new const LEVELS[MAXLEVEL] = { 100, 300, 600, 1000, 1500, 2100, 2800, 3600, 4500,
5500, 6600, 7800, 9100, 10500, 12000, 13600, 15400, 17300, 19300, 21400
}; // Levels XP
new PlayerXP[33],PlayerLevel[33],PlayerRank[33],PlayerClass[33]
new XP_Kill,SaveXP,g_vault
//============================================================//
// ~[ Plugin Start ]~ //
//============================================================//
public plugin_init()
{
register_plugin("Mystic XP", "1.2", "xFrost")
// Events //
register_event("DeathMsg", "eDeath", "a");
register_event("DeathMsg", "event_deathmsg", "a");
RegisterHam(Ham_Spawn,"player","bacon_spawn", 1)
// Cvars //
SaveXP = register_cvar("SaveXP","1")
XP_Kill=register_cvar("XP_per_kill", "15")
g_vault = nvault_open("animod")
// Comands //
register_clcmd("say zmenu", "ShowMenu")
register_clcmd("say_team zmenu", "ShowMenu")
register_clcmd("say /zmenu", "ShowMenu")
register_clcmd("say_team /zmenu", "ShowMenu")
register_clcmd("say rank", "ShowRank")
register_clcmd("say_team rank", "ShowRank")
register_clcmd("say /rank", "ShowRank")
register_clcmd("say_team /rank", "ShowRank")
register_clcmd("say level", "ShowLevel")
register_clcmd("say_team level", "ShowLevel")
register_clcmd("say /level", "ShowLevel")
register_clcmd("say_team /level", "ShowLevel")
}
public eDeath()
{
new attacker = read_data(1);
PlayerXP[attacker] += get_pcvar_num(XP_Kill)
while(PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]])
{
client_printcolor(attacker, "/g[/ctrMystic/y-/ctrZombies/y-/ctrXP/g] /ctrCongratulations/y! /gYou are a level /ctr%i/y!", PlayerLevel[attacker])
PlayerLevel[attacker] += 0
}
ShowLevel(attacker)
SaveData(attacker)
}
public ShowLevel(id)
{
client_printcolor(0, "/ctrLevel /y- /g[ /ctr%i /g/ /ctr19 /g] /ctrXP /y- /g[ /ctr%i /g] /ctrRank /y- /g[ /ctr%s /g]",PlayerLevel[id],PlayerXP[id],LEVELS[PlayerLevel[id]],RANKS[PlayerRank[id]]);
return PLUGIN_HANDLED;
}
public ShowRank(id)
{
client_printcolor(0, "/gYou /ctrRank /gis /ctr%s/g! ",RANKS[PlayerRank[id]]);
return PLUGIN_HANDLED;
}
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
PlayerRank[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;
}
public ShowMenu(id)
{
new menu = menu_create("Classes Menu" , "Class_Handle");
menu_additem(menu ,"Hunter", "1" , 0);
menu_additem(menu ,"Smoker", "2" , 0);
menu_additem(menu ,"Boomer", "3" , 0);
menu_additem(menu ,"Tank", "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_printcolor(0,"/gYou are now /ya /ctr%s",CLASSES[i])
}
else
{
client_printcolor(0,"/gYou are alredy /ya /ctr%s",CLASSES[i])
}
menu_destroy(menu);
return PLUGIN_CONTINUE
}
//============================================================//
// ~[ Give Item ]~ //
//============================================================//
public fw_PlayerSpawn_Post(id)
{
if (!is_user_alive(id))
return
switch (PlayerLevel[id])
{
case 0:
{
fm_give_item(id, "weapon_ump45")
fm_set_user_bpammo(id, CSW_UMP45, 100)
}
case 1:
{
fm_give_item(id, "weapon_ump45")
fm_set_user_bpammo(id, CSW_UMP45, 100)
}
case 2:
{
fm_give_item(id, "weapon_ump45")
fm_set_user_bpammo(id, CSW_UMP45, 100)
}
case 3:
{
fm_give_item(id, "weapon_ump45")
fm_set_user_bpammo(id, CSW_UMP45, 100)
}
case 4:
{
fm_give_item(id, "weapon_ump45")
fm_set_user_bpammo(id, CSW_UMP45, 100)
}
case 5:
{
fm_give_item(id, "weapon_ump45")
fm_set_user_bpammo(id, CSW_UMP45, 100)
}
case 7:
{
fm_give_item(id, "weapon_ump45")
fm_set_user_bpammo(id, CSW_UMP45, 100)
}
case 7:
{
fm_give_item(id, "weapon_ump45")
fm_set_user_bpammo(id, CSW_UMP45, 100)
}
case 8:
{
fm_give_item(id, "weapon_ump45")
fm_set_user_bpammo(id, CSW_UMP45, 100)
}
case 9:
{
fm_give_item(id, "weapon_ump45")
fm_set_user_bpammo(id, CSW_UMP45, 100)
}
case 10:
{
fm_give_item(id, "weapon_ump45")
fm_set_user_bpammo(id, CSW_UMP45, 100)
}
case 11:
{
fm_give_item(id, "weapon_ump45")
fm_set_user_bpammo(id, CSW_UMP45, 100)
}
case 12:
{
fm_give_item(id, "weapon_ump45")
fm_set_user_bpammo(id, CSW_UMP45, 100)
}
case 13:
{
fm_give_item(id, "weapon_ump45")
fm_set_user_bpammo(id, CSW_UMP45, 100)
}
case 14:
{
fm_give_item(id, "weapon_ump45")
fm_set_user_bpammo(id, CSW_UMP45, 100)
}
case 15:
{
fm_give_item(id, "weapon_ump45")
fm_set_user_bpammo(id, CSW_UMP45, 100)
}
case 16:
{
fm_give_item(id, "weapon_ump45")
fm_set_user_bpammo(id, CSW_UMP45, 100)
}
case 17:
{
fm_give_item(id, "weapon_ump45")
fm_set_user_bpammo(id, CSW_UMP45, 100)
}
case 18:
{
fm_give_item(id, "weapon_ump45")
fm_set_user_bpammo(id, CSW_UMP45, 100)
}
case 19:
{
fm_give_item(id, "weapon_ump45")
fm_set_user_bpammo(id, CSW_UMP45, 100)
}
}
//============================================================//
// ~[ Stocks ]~ //
//============================================================//
stock client_printcolor(const id, const input[], any:...)
{
new msg[191], players[32], count = 1;
vformat(msg,190,input,3);
replace_all(msg,190,"/g","^4");// green clr
replace_all(msg,190,"/y","^1");// orange clr
replace_all(msg,190,"/ctr","^3");// team clr
if (id) players[0] = id; else get_players(players,count,"ch");
for (new i=0;i<count;i++)
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, 76, _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}