/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#define PLUGIN "XP MOD"
#define VERSION "1.0"
#define AUTHOR "Dakashi d(-.-)b"
#define MAXCLASSES 5
new PlayerXP[33], PlayerLevel[33], PlayerClass[33]
new XP_Kill, XP_Knife, XP_Hs, SaveXP
new g_vault
new const CLASSES[MAXCLASSES] [] =
{
"Jumper",
"Runner",
"Ghost"
}
new const LEVELS[11] =
{
0,
5,
15,
30,
60,
120,
190,
270,
360,
460,
500
}
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("DeathMsg", "eDeath", "a")
SaveXP = register_cvar("xpmod_savexp", "1")
XP_Kill = register_cvar("xpmod_normal_kill", "1")
XP_Knife = register_cvar("xpmod_knife_kill", "1")
XP_Hs = register_cvar("xpmod_hs_kill", "2")
g_vault = nvault_open("drmod")
register_clcmd("say /klasa", "ChangeClass")
register_clcmd("say_team /klasa", "ChangeClass")
register_clcmd("say_team /klasy", "ChangeClass")
register_clcmd("say /klasy", "ChangeClass")
register_clcmd("say /xp", "ShowXP")
register_clcmd("say_team /xp", "ShowXP")
}
public eDeath()
{
new attacker = read_data(1)
if(PlayerClass[attacker] == 0) return PLUGIN_CONTINUE
new headshot = read_data( 3 )
new clip, ammo, weapon = get_user_weapon(clip, ammo)
PlayerXP[attacker] += get_pcvar_num(XP_Kill)
if(headshot) PlayerXP[attacker] += get_pcvar_num(XP_Hs)
if(weapon == CSW_KNIFE) PlayerXP[attacker] += get_pcvar_num(XP_Knife)
while(PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]])
{
client_print(attacker, print_center, "[XPMOD]Gratulacje! Masz %i level $s!", PlayerLevel[attacker], CLASSES[PlayerClass[attacker]]) //Wiadomosc gratulacyjna
PlayerLevel[attacker] += 1
}
ShowXP(attacker)
SaveData(attacker)
return PLUGIN_CONTINUE
}
public ShowXP(id)
{
set_hudmessage(0, 120, 100, 0.75, 0.1, 0, 6.0, 15.0)
show_hudmessage(id, "Twoja klasa
: %s^nLevel: %i, Exp: %i", CLASSES[PlayerClass[id]], PlayerLevel[id], PlayerXP[id])
}
public ChangeClass(id)
{
new ClassMenu = menu_create("Menu klas:","ClassHandler")
menu_additem(ClassMenu, "Jumper", "1", 0);
menu_additem(ClassMenu, "Runner", "2", 0);
menu_additem(ClassMenu, "Ghost", "3", 0);
menu_setprop(ClassMenu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, ClassMenu, 0);
return PLUGIN_CONTINUE
}
public ClassHandler(id, ClassMenu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(ClassMenu)
}
new szCommand[6], szName[64]; new acces, callback;
menu_item_getinfo(ClassMenu, item, acces, szCommand, 5, szName, 63, callback);
new i = str_to_num(szCommand)
if(PlayerClass[id] != i)
{
client_print(id, print_chat, "[XpMod]Juz jestes %s", CLASSES[PlayerClass[id]])
}
else
{
client_print(id, print_chat, "[XpMod]Jestes teraz %s", CLASSES[i])
}
menu_destroy(ClassMenu)
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 name[32]
get_user_name(id, name, 31)
new vaultkey[64], vaultdata[256]
format(vaultkey, 63, "%s-Mod", name)
format(vaultdata, 255, "#%i#%i#", PlayerLevel[id], PlayerXP[id])
nvault_set(g_vault, 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-Mod", name)
format(vaultdata, 255, "#%i#%i#", PlayerLevel[id], PlayerXP[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
}
Otóż mam taki problem... Gdy wpiszę /klasa działa wszystko ładnie i pięknie , klasę mi wybiera i gdy wpisuję /xp widać jaka klasa i expa lecz przy zabiciu wroga nie daje mi expa i cały czas widać gdy się wpisze /xp Klasa: Nazwa Exp: 0 Level : 0
krócej mówiąc - nie daje expa za zabicie ; (
Wie ktoś co jest tego powodem.
Aha i jeszcze jedno , jak dodać do danej klasy jakiś skill typu
, niewidzialność czy szybsze bieganie. ?
Za pomoc rep ++