PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <cstrike>
#include <fakemeta_util>
#define PLUGIN "LevelUp System XP"
#define VERSION "3.2c"
#define AUTHOR "Re.Act!ve"
new g_level[32], g_level_data, g_frags_level, g_ScreenFade
new g_level_max
new level_exp[32]
new g_level_exp[32], g_exp_data
new bool:g_trime[33]
new sound_level_up[] = { "misc/level_up.wav"}
// Zombie Classes MUST be registered on plugin_precache
public plugin_precache()
{
precache_sound( sound_level_up )
}
public plugin_init()
{
g_frags_level = register_cvar("zp_level_frags", "10")
g_level_max = register_cvar("zp_level_max", "1000")
register_plugin(PLUGIN, VERSION, AUTHOR)
g_level_data = nvault_open("Level_Save")
g_exp_data = nvault_open("Exp_Save")
register_event("DeathMsg", "Frags_Manager", "a", "1>0")
register_event("HLTV", "Round_Start", "a", "1=0", "2=0")
g_ScreenFade = get_user_msgid( "ScreenFade" )
}
public Level_Begin(id)
{
g_trime[id] = false;
new n = 1;
while( n <= g_level[id] )
{
g_level_exp[id] = n * get_pcvar_num(g_frags_level);
n = n + 1;
}
if( g_level[id] == 1)
g_level_exp[id] = get_pcvar_num(g_frags_level);
return PLUGIN_CONTINUE;
}
public client_putinserver(id)
{
Level_Load(id)
Exp_Load(id)
Level_Begin(id)
}
public client_disconnect(id)
{
Level_Save(id)
Exp_Save(id)
remove_task(id)
g_trime[id] = false;
}
public Level_Save(id)
{
new key[64], data[256]
new name[33]
get_user_name(id,name,32)
format(key, 63, "%s-/", name)
format(data, 255, "%i#", g_level[id])
nvault_set(g_level_data, key, data)
return PLUGIN_CONTINUE
}
public Exp_Save(id)
{
new data_exp[256], key_exp[64]
new authid[33];
get_user_authid(id,authid,32)
format(key_exp, 63, "%s-/", authid)
format(data_exp, 255, "%i#", level_exp[id])
nvault_set(g_exp_data, key_exp, data_exp)
return PLUGIN_CONTINUE;
}
public Level_Load(id)
{
new key[64], data[256]
new authid[33];
get_user_authid(id,authid,32)
format(key, 63, "%s-/", authid)
format(data, 255, "%i#", g_level[id])
nvault_get(g_level_data, key, data, 255)
replace_all(data, 255, "#", " ")
new givelevel[32]
parse(data, givelevel, 31)
g_level[id] = str_to_num(givelevel)
if( g_level[id] == 0) g_level[id] = 1;
return PLUGIN_CONTINUE;
}
public Exp_Load(id)
{
new data_exp[256], key_exp[64]
new authid[33];
get_user_authid(id,authid,32)
format(key_exp, 63, "%s-/", authid)
format(data_exp, 255, "%i#", level_exp[id])
nvault_get(g_exp_data, key_exp, data_exp, 255)
replace_all(data_exp, 255, "#", " ")
new give_exp[32]
parse(data_exp, give_exp, 31)
level_exp[id] = str_to_num(give_exp)
return PLUGIN_CONTINUE;
}
public Frags_Manager()
{
new aname[32], attacker; attacker = read_data(1)
new y; y = 1;
get_user_name(attacker, aname, sizeof aname - 1)
if( ( level_exp[attacker] >= (g_level_exp[attacker] - 1) ) && (g_level[attacker] <= get_pcvar_num(g_level_max)) && is_user_alive(attacker) )
{
g_level[attacker] = g_level[attacker] + 1;
level_exp[attacker] = 0;
while( g_level[attacker] != y )
{
y = y + 1;
g_level_exp[attacker] = y * get_pcvar_num(g_frags_level);
}
message_begin(MSG_ONE_UNRELIABLE, g_ScreenFade, _, attacker)
write_short(1<<12) // duration
write_short(1) // hold time
write_short(0x0000) // fade type
write_byte(1) // red
write_byte(200) // green
write_byte(0) // blue
write_byte(205) // alpha
message_end()
emit_sound(attacker, CHAN_STREAM, sound_level_up, 1.0, ATTN_NORM, 0, PITCH_HIGH )
set_hudmessage(0, 200, 0, 0.65, 0.5, 0, 0.0, 3.0, 2.0, 1.0, -1)
show_hudmessage(0, "%s has cut down %i level", aname, g_level[attacker])
Level_Save(attacker);
}
else
{
if(g_level[attacker] == get_pcvar_num(g_level_max))
ChatColor(attacker, "you have reached a maximum level: !g%i", g_level[attacker] )
level_exp[attacker] = level_exp[attacker] + 1;
Level_Save(attacker);
}
}
stock ChatColor(const id, const input[], any:...)
{
new count = 1, players[ 32 ]
static msg[ 191 ]
vformat( msg, 190, input, 3 )
replace_all( msg, 190, "!g", "^4" )
replace_all( msg, 190, "!y", "^1" )
replace_all( msg, 190, "!t", "^3" )
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, get_user_msgid("SayText"), _, players[ i ] )
write_byte( players[ i ] )
write_string( msg )
message_end( )
}
}
}
}