Ok, so I thought I fixed this, but I guess not.
Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <vault>
#define CLASS_NOTHING 0
#define CLASS_SHADOW 1
#define CLASS_SWIFT 2
#define CLASS_SHINOBI 3
#define CLASS_SEER 4
#define MAXCLASSES 5
new PlayerClass[33]
new PlayerXP[33]
new PlayerLevel[33]
new CT[] = "models/player/ninja/ninja_ct.mdl"
new T[] = "models/player/ninja/ninja_t.mdl"
new const CLASSES[MAXCLASSES][] =
{
"None",
"Shadow",
"Swift",
"Shinobi",
"Seer"
}
new msgtext
new const LEVELS[10] =
{
100,
200,
400,
800,
1600,
3200,
6400,
12800,
25600,
51200
}
public plugin_init()
{
register_plugin("Ninja Mod","1.1","Ninja Mod Team")
register_cvar("ninja_on","1")
register_cvar("ninja_xppk","20")
register_cvar("ninja_saved","1")
register_concmd("ninja_xp","cmd_xp",ADMIN_KICK,"<user> <xp to add> - Adds XP to the target player")
register_concmd("ninja_class","cmd_class",ADMIN_KICK,"<user> <class> - Sets the target player's class")
register_concmd("ninja_level","cmd_level",ADMIN_KICK,"<user> <level> - Sets the target player's level")
register_clcmd("say /changeninja","ChooseClass")
register_clcmd("say_team /changeninja","ChooseClass")
register_clcmd("say /savexp","SaveXP")
register_clcmd("say_team /savexp","SaveXP")
register_clcmd("say /ninjahelp","Help")
register_clcmd("say_team /ninjahelp","Help")
register_menucmd(register_menuid("menu_ChooseClass"),1023,"DoChooseClass");
register_event("ResetHUD","ResetHUD","b")
register_event("DeathMsg","DeathMsg","a")
msgtext = get_user_msgid("StatusText")
set_task(10.0,"ShowHUD")
}
public plugin_precahce()
{
precache_model(CT)
precache_model(T)
}
public client_connect(id)
{
if(get_cvar_num("ninja_saved") == 1)
{
LoadXP(id)
}
}
public client_disconnect(id)
{
if(get_cvar_num("ninja_saved") == 1)
{
SaveXP(id)
}
}
public SaveXP(id)
{
new authid[32];
get_user_authid(id,authid,31);
new vaultkey[64], vaultdata[64];
format(vaultkey,63,"NINJA-%s-class",authid);
format(vaultdata,63,"%d",PlayerClass[id]);
set_vaultdata(vaultkey,vaultdata);
format(vaultkey,63,"NINJA-%s-xp",authid);
format(vaultdata,63,"%d",PlayerXP[id]);
set_vaultdata(vaultkey,vaultdata);
format(vaultkey,63,"NINJA-%s-level",authid);
format(vaultdata,63,"%d",PlayerLevel[id]);
set_vaultdata(vaultkey,vaultdata);
client_print(id,print_chat,"[Ninja Mod] XP saved successfully.")
}
public LoadXP(id)
{
new authid[32];
get_user_authid(id,authid,31);
new vaultkey[64], vaultdata[64];
format(vaultkey,63,"NINJA-%s-class",authid);
get_vaultdata(vaultkey,vaultdata,63);
PlayerClass[id] = str_to_num(vaultdata);
format(vaultkey,63,"NINJA-%s-xp",authid);
get_vaultdata(vaultkey,vaultdata,63);
PlayerXP[id] = str_to_num(vaultdata);
format(vaultkey,63,"NINJA-%s-level",authid);
get_vaultdata(vaultkey,vaultdata,63);
PlayerLevel[id] = str_to_num(vaultdata);
client_print(id, print_chat, "[Ninja Mod] XP Loaded!")
client_print(id, print_chat, "[Ninja Mod] You are a %s with level %s and %s XP", PlayerClass[id], PlayerLevel[id], PlayerXP[id])
}
public Help(id)
{
if(get_cvar_num("ninja_on") == 0)
return PLUGIN_HANDLED
show_motd(id,"addons/amxmodx/configs/ninjahelp.txt")
return PLUGIN_HANDLED
}
public ChooseClass(id)
{
new menu[192]
format(menu,191,"Ninja Mod: Choose Class^n1. Shadow^n2. Swift^n3. Shinobi^n4. Seer^n^n0. Exit")
new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4
show_menu(id,keys,menu,-1,"menu_ChooseClass")
return PLUGIN_CONTINUE
}
public DoChooseClass(id, key)
{
if(key == 0)
{
if(PlayerClass[id] == CLASS_SHADOW)
{
client_print(id,print_chat,"[Ninja Mod] You are already this Class, please choose another.")
ChooseClass(id)
return PLUGIN_HANDLED
}
PlayerClass[id] = CLASS_SHADOW
find_team(id)
client_print(id,print_chat,"[Ninja Mod] Shadow Class selected.")
}
if(key == 1)
{
if(PlayerClass[id] == CLASS_SWIFT)
{
client_print(id,print_chat,"[Ninja Mod] You are already this Class, please choose another.")
ChooseClass(id)
return PLUGIN_HANDLED
}
PlayerClass[id] = CLASS_SWIFT
find_team(id)
client_print(id,print_chat,"[Ninja Mod] Swift Class selected.")
}
if(key == 2)
{
if(PlayerClass[id] == CLASS_SHINOBI)
{
client_print(id,print_chat,"[Ninja Mod] You are already this Class, please choose another.")
ChooseClass(id)
return PLUGIN_HANDLED
}
PlayerClass[id] = CLASS_SHINOBI
find_team(id)
client_print(id, print_chat, "[Ninja Mod] Shinobi Class selected.")
}
if(key == 3)
{
if(PlayerClass[id] == CLASS_SEER)
{
client_print(id,print_chat,"[Ninja Mod] You are already this Class, please choose another.")
ChooseClass(id)
return PLUGIN_HANDLED
}
PlayerClass[id] = CLASS_SEER
find_team(id)
client_print(id,print_chat,"[Ninja Mod] Seer Class selected.")
}
if(key == 9)
{
return PLUGIN_HANDLED;
}
ShowHUD(id)
return PLUGIN_HANDLED
}
public ResetHUD(id)
{
if(PlayerClass[id] == CLASS_NOTHING)
{
ChooseClass(id)
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED
}
public DeathMsg()
{
if(get_cvar_num("ninja_on") == 0)
{
return PLUGIN_HANDLED;
}
new attacker = read_data(1)
if(PlayerClass[attacker] == CLASS_NOTHING)
{
return PLUGIN_HANDLED;
}
PlayerXP[attacker] += get_cvar_num("ninja_xppk")
if(PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]])
{
PlayerLevel[attacker] += 1
client_print(attacker,print_chat,"[Ninja Mod] Congratulations! You are now level %i!", PlayerLevel[attacker])
if(get_cvar_num("ninja_saved") == 1)
{
SaveXP(attacker)
}
ShowHUD(attacker)
}
ShowHUD(attacker)
return PLUGIN_CONTINUE
}
public ShowHUD(id)
{
new HUD[51]
format(HUD,50,"[%s] Level: %i XP: %i/%i",CLASSES[PlayerClass[id]],PlayerLevel[id],PlayerXP[id],LEVELS[PlayerLevel[id]])
message_begin(MSG_ONE, msgtext, {0,0,0}, id)
write_byte(0)
write_string(HUD)
message_end()
return PLUGIN_CONTINUE
}
public cmd_xp(id,level,cid)
{
if(!cmd_access(id,level,cid,3))
return PLUGIN_HANDLED
new arg[32], arg2[32]
read_argv(1,arg,31)
read_argv(2,arg2,31)
new target=cmd_target(id,arg,2)
if(!target)
return PLUGIN_HANDLED
PlayerXP[target] += str_to_num(arg2)
return PLUGIN_HANDLED
}
public cmd_class(id,level,cid)
{
if(!cmd_access(id,level,cid,3))
return PLUGIN_HANDLED
new arg[32], arg2[32]
read_argv(1,arg,31)
read_argv(2,arg2,31)
new target=cmd_target(id,arg,2)
if(!target)
return PLUGIN_HANDLED
if(equali(arg2,"shadow"))
{
PlayerClass[target] = CLASS_SHADOW
ShowHUD(target)
}
if(equali(arg2,"swift"))
{
PlayerClass[target] = CLASS_SWIFT
ShowHUD(target)
}
if(equali(arg2,"shinobi"))
{
PlayerClass[target] = CLASS_SHINOBI
ShowHUD(target)
}
if(equali(arg2,"seer"))
{
PlayerClass[target] = CLASS_SEER
ShowHUD(target)
}
client_print(target, print_chat, "[Ninja Mod] Admin has set your class to %s",arg2)
SaveXP(target)
return PLUGIN_HANDLED
}
public cmd_level(id,level,cid)
{
if(!cmd_access(id,level,cid,3))
return PLUGIN_HANDLED
new arg[32], arg2[32]
read_argv(1,arg,31)
read_argv(2,arg2,31)
new target=cmd_target(id,arg,2)
if(!target)
return PLUGIN_HANDLED
PlayerLevel[target] = str_to_num(arg2)
client_print(target,print_chat,"[Ninja Mod] Admin has set your level to %i",str_to_num(arg2))
return PLUGIN_HANDLED
}
stock find_team(id)
{
new CsTeams:team = cs_get_user_team(id)
if (team == CS_TEAM_T)
{
cs_set_user_model(id, T)
}
else if(team == CS_TEAM_CT)
{
cs_set_user_model(id, CT)
}
}
P.S. This is specifically for a dedicated server.