PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <fvault>
#include <cstrike>
#include <wm_play>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#define ADMIN_ACCESS ADMIN_LEVEL_B
#define AUTHOR "Fa[ST]eR"
#pragma semicolon 1
#define TOP 10
new key[64], name[65], data_[328];
new g_level[32], g_exp[32], g_exp2[32];
new g_max, g_fade;
const pev_spec = pev_iuser2;
new const file_dir[] = "addons/amxmodx/data/file_vault";
new path[128], data[256], top_level[33], top_exp[33], top_exp2[33], top_name[33][33];
new sound[] = "misc/level_up.wav";
public plugin_precache() precache_sound(sound);
new GetUsedd1[33];
new GetUsedd2[33];
new GetUsedd3[33];
new GetUsedd4[33];
new GetUsedd5[33];
new GetUsedd6[33];
new GetUsedd7[33];
new const g_szFile[] = "addons/amxmodx/configs/users.ini";
new const g_zsFile[] = "addons/amxmodx/configs/ap_prefixes.ini";
new const Grads[][] = {
"Newbie",
"Newbie",
"Newbie",
"Newbie",
"Newbie",
"Newbie",
"Newbie",
"Newbie",
"Newbie",
"Newbie",
"Assassin",
"Assassin",
"Assassin",
"Assassin",
"Assassin",
"Assassin",
"Assassin",
"Assassin",
"Assassin",
"Assassin",
"Mafia",
"Mafia",
"Mafia",
"Mafia",
"Mafia",
"Mafia",
"Mafia",
"Mafia",
"Mafia",
"Mafia",
"Killer",
"Killer",
"Killer",
"Killer",
"Killer",
"Killer",
"Killer",
"Killer",
"Killer",
"Killer",
"Professional",
"Professional",
"Professional",
"Professional",
"Professional",
"Professional",
"Professional",
"Professional",
"Professional",
"Professional",
"Leader",
"Leader",
"Leader",
"Leader",
"Leader",
"Leader",
"Leader",
"Leader",
"Leader",
"Leader",
"Da3ich",
"Da3ich",
"Da3ich",
"Da3ich",
"Da3ich",
"Da3ich",
"Da3ich",
"Da3ich",
"Da3ich",
"Da3ich",
"Big Boss",
"Big Boss",
"Big Boss",
"Big Boss",
"Big Boss",
"Big Boss",
"Big Boss",
"Big Boss",
"Big Boss",
"Big Boss",
"Monster",
"Monster",
"Monster",
"Monster",
"Monster",
"Monster",
"Monster",
"Monster",
"Monster",
"Monster",
"Souvage",
"Souvage",
"Souvage",
"Souvage",
"Souvage",
"Souvage",
"Souvage",
"Souvage",
"Souvage",
"Souvage"
};
public plugin_init()
{
register_plugin("New Level System", "1.0", "Alaska");
register_clcmd("say /toplevel", "show_top");
register_clcmd("say /level", "show_level");
register_clcmd("say /steam", "show_steam");
register_clcmd("say /lvlmenu", "level_menu");
register_clcmd("say /levelmenu", "level_menu");
register_event("StatusValue", "show_hud_pid", "be", "1=2", "2!0");
register_event("DeathMsg", "event_death", "a");
set_task(2.0, "save_data", _, _, _, "b");
g_max = register_cvar("max_level", "100");
g_fade = get_user_msgid("ScreenFade");
RegisterHam( Ham_Spawn,"player","fw_PlayerSpawn",1 );
read_top();
if(!dir_exists(file_dir)) mkdir(file_dir);
}
public plugin_natives()
{
register_native( "get_user_level", "native_get_user_level", 1 );
register_native( "set_user_level", "native_set_user_level", 1 );
}
public native_get_user_level(id)
{
return g_level[id];
}
public native_set_user_level(id,level)
{
g_level[ id ] = level;
}
public client_connected(id) load_data(id);
public client_authorized(id) load_data(id);
public client_disconnect(id) save_data(id), remove_task(id);
public client_putinserver(id)
{
load_data(id);
set_task(1.0 ,"show_hud", id, _, _, "b");
set_task(2.0 ,"check_save", id, _, _, "b");
if(g_level[id] == 0 && !is_user_bot(id))
{
g_level[id] = 1;
g_exp[id] = 0;
g_exp2[id] = 5;
}
}
public event_death()
{
new name[32], attacker = read_data(1);
get_user_name(attacker, name, sizeof name - 1); new y = 1;
if((g_exp[attacker] >= (g_exp2[attacker] - 1)) && (g_level[attacker] <= get_pcvar_num(g_max)) && is_user_alive(attacker))
{
g_level[attacker] ++; g_exp[attacker] = 0;
while(g_level[attacker] != y)
{
y ++; g_exp2[attacker] = y * 5;
}
message_begin(MSG_ONE_UNRELIABLE, g_fade, _, attacker);
write_short(1<<12);
write_short(1);
write_short(0x0000);
write_byte(1);
write_byte(200);
write_byte(0);
write_byte(205);
message_end();
emit_sound(attacker, CHAN_STREAM, sound, 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 Level %d", name, g_level[attacker]);
hs_chat(0, "!g[ES] !nPlayer !t%s !nHas Up Level To !g%d !t!", name, g_level[attacker]);
}
else
{
if(!(g_level[attacker] == get_pcvar_num(g_max))) g_exp[attacker] ++;
}
}
public show_hud(id)
{
new name[33], spec = pev(id, pev_spec);
get_user_name(spec, name, charsmax(name));
if(is_user_alive(id))
{
set_hudmessage(0, 200, 0, -1.0, 0.87, 0, 6.0, 1.1);
show_hudmessage(id, "[ Health : %d | Class : %s ]^n[ Grade: %s | Level: %d | XP: %d/%d | Money: $%d ]", get_user_health(id), get_user_team(id) == 2 ? "Humen":"Furien", Grads[g_level[id]], g_level[id], g_exp[id], g_exp2[id], cs_get_user_money(id));
}
if(is_user_alive(spec))
{
set_hudmessage(200, 30, 200, -1.0, 0.80, 0, 0.0, 1.1);
show_hudmessage(id, "Spectating: %s ^n[ Health: %d | Class: %s ]^n[ Grade: %s | Level: %d | XP: %d/%d | Money: $%d ]", name, get_user_health(spec), get_user_team(spec) == 2 ? "Humen":"Furien", Grads[g_level[spec]], g_level[spec], g_exp[spec], g_exp2[spec], cs_get_user_money(spec));
}
}
public show_hud_pid(id)
{
new name[33], pid = read_data(2); get_user_name(pid, name, charsmax(name));
new aim, body; get_user_aiming(id, aim, body);
if(is_user_alive(aim) && get_user_team(id) == 2 && get_user_team(aim) == 2)
{
set_hudmessage(0, 0, 255, -1.0, 0.60, 0, 0.01, 3.0, 0.01, 0.01, -1);
show_hudmessage(id, "%s ^n[ Level: %d | XP: %d/%d ]", name, g_level[pid], g_exp[pid], g_exp2[pid]);
}
else if(is_user_alive(aim) && get_user_team(id) == 1 && get_user_team(aim) == 1)
{
set_hudmessage(255, 0, 0, -1.0, 0.60, 0, 0.01, 3.0, 0.01, 0.01, -1);
show_hudmessage(id, "%s ^n[ Level: %d | XP: %d/%d ]", name, g_level[pid], g_exp[pid], g_exp2[pid]);
}
}
public save_data(id)
{
if(!is_user_bot(id))
{
get_user_name(id, name, 34);
format(key, 63, "%s", name);
format(data_, 327, "^"%d^" ^"%d^" ^"%d^"", g_level[id], g_exp[id], g_exp2[id]);
}
}
public load_data(id)
{
get_user_name(id, name, 34);
format(key, 63, "%s", name);
format(data_, 327, "^"%d^" ^"%d^" ^"%d^"", g_level[id], g_exp[id], g_exp2[id]);
new level[32], exp[32], exp2[32];
parse(data_, level, sizeof(level) - 1, exp, sizeof(exp) - 1, exp2, sizeof(exp2) - 1);
g_level[id] = str_to_num(level);
g_exp[id] = str_to_num(exp);
g_exp2[id] = str_to_num(exp2);
}
public check_save(id)
{
if(get_user_team(id) == 3 && !is_user_bot(id)) return;
save_data(id); update_top(id, g_level[id], g_exp[id], g_exp2[id]);
}
public save_top()
{
formatex(path, 127, "%s/gtop.txt", file_dir);
if(file_exists(path))
delete_file(path);
new f = fopen(path, "at");
for(new i = 0; i < TOP; i++)
{
formatex(data, 255, "^"%s^" ^"%d^" ^"%d^" ^"%d^"^n", top_name[i], top_level[i], top_exp[i], top_exp2[i]);
fputs(f, data);
}
fclose(f);
}
public read_top()
{
formatex(path, 127, "%s/gtop.txt", file_dir);
new f = fopen(path, "rt");
new i = 0;
new level[25], exp[25], exp2[25];
while(!feof(f) && i < TOP+1)
{
fgets(f, data, 255);
parse(data, top_name[i], 31, level, 25, exp, 25, exp2, 25);
top_level[i] = str_to_num(level);
top_exp[i] = str_to_num(exp);
top_exp2[i] = str_to_num(exp2);
i++;
}
fclose(f);
}
public show_top(id)
{
static buffer[2368], name[131], len, i;
len = format(buffer[len], 2367-len,"<meta charset=UTF-8><style>body{background:#000000;font-family:Tahoma}th{background:#303B4A;color:#FFF}table{padding:6px 2px;background:#EFF1F3;font-size:12px;color:#222;border:1px solid #CCC}h2,h3{color:#222}#c{background:#E9EBEE}img{height:7px;background:#F8931F;margin:0 3px}#r{height:7px;background:#D2232A}#clr{background:none;color:#303B4A;font-size:20px;border:0}</style>");
len += format(buffer[len], 2367-len, "<body><table width=100%% border=0 align=center cellpadding=0 cellspacing=1>");
len += format(buffer[len], 2367-len, "<body><tr><th>%s<th>%s<th>%s<th>%s</tr>","#","Name","Level","Exp");
for(i = 0; i < TOP; i++)
{
name = top_name[i];
if(top_level[i]== 0)
{
len += format(buffer[len], 2367-len, "<tr><td>%d.<td>%s<td>%s<td>%s/%s</tr>", (i+1), "-", "-", "-", "-");
}
else
{
while(containi(name, "<") != -1) replace(name, 129, "<", "<");
while(containi(name, ">") != -1) replace(name, 129, ">", ">");
len += format(buffer[len], 2367-len, "<tr><td>%d<td>%s<td>%d<td>%d/%d</tr>", (i+1), name, top_level[i], top_exp[i], top_exp2[i]);
}
}
static strin[20]; format(strin,33, "Top 10 Level");
show_motd(id, buffer, strin);
}
public update_top(id, level, exp, exp2)
{
static name[32]; get_user_name(id, name, charsmax(name) - 1);
for(new i = 0; i < TOP; i++)
{
if(level > top_level[i] || level == top_level[i] && exp > top_exp[i])
{
new pos = i;
while(!equal(top_name[pos], name) && pos < TOP)
pos++;
for(new j = pos; j > i; j--)
{
formatex(top_name[j], 31, top_name[j-1]);
top_level[j] = top_level[j-1];
top_exp[j] = top_exp[j-1];
}
formatex(top_name[i], charsmax(name) - 1, name);
top_level[i] = level;
top_exp[i] = exp;
top_exp2[i] = exp2;
save_top();
break;
}
else if(equal(top_name[i], name))
break;
}
}
public show_level(id)
{
new menu = menu_create("\d[\rES\d] \yShow Players Level \w:", "level_handle");
new name[32], pid[32], players[32], text[555 char],pnum, tempid;
get_players(players, pnum, "c");
for(new i; i< pnum; i++)
{
tempid = players[i];
get_user_name(tempid, name, charsmax(name));
formatex(text, charsmax(text), "%s \y: \r[ Level: %i | XP: %i/%i ]", name, g_level[tempid], g_exp[tempid], g_exp2[tempid]);
num_to_str(get_user_userid(tempid), pid, 9);
menu_additem(menu, text, pid, 0);
}
menu_display(id, menu);
return PLUGIN_CONTINUE;
}
public MsgDuplicate(id){ return PLUGIN_HANDLED; }
public hook_say(id)
{
new SzMessages[192], SzName[32];
new SzAlive = is_user_alive(id);
read_args(SzMessages, 191);
remove_quotes(SzMessages);
get_user_name(id, SzName, 31);
if(!is_valid_msg(SzMessages))
return PLUGIN_CONTINUE;
switch(get_pcvar_num(playerPrefix)
{
case 1 :(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^1%s", ranks_names[rank[id]], SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^1%s", ranks_names[rank[id]], SzName, SzMessages));
case 2 :(SzAlive ? format(SzMessages, 191, "^4[Level %d] ^3%s : ^1%s", level[id], SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[Level %d] ^3%s : ^1%s", level[id], SzName, SzMessages));
}
for(new i = 1; i <= SzMaxPlayers; i++)
{
if(!is_user_connected(i))
continue;
message_begin(MSG_ONE, get_user_msgid("SayText"), {0, 0, 0}, i);
write_byte(id);
write_string(SzMessages);
message_end();
}
return PLUGIN_CONTINUE;
}
public hook_say_team(id)
{
new SzMessages[192], SzName[32];
new SzAlive = is_user_alive(id);
new SzGetTeam = get_user_team(id);
read_args(SzMessages, 191);
remove_quotes(SzMessages);
get_user_name(id, SzName, 31);
if(!is_valid_msg(SzMessages))
return PLUGIN_CONTINUE;
switch(get_pcvar_num(playerPrefix))
{
case 1 : (SzAlive ? format(SzMessages, 191, "^1(%s) ^4[%s] ^3%s : ^1%s", SzGTeam[SzGetTeam], ranks_names[rank[id]], SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^1(%s) ^4[%s] ^3%s : ^1%s", SzGTeam[SzGetTeam], ranks_names[rank[id]], SzName, SzMessages));
case 2 : (SzAlive ? format(SzMessages, 191, "^1(%s) ^4[Level %d] ^3%s : ^1%s", SzGTeam[SzGetTeam], level[id], SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^1(%s) ^4[Level %d] ^3%s : ^1%s", SzGTeam[SzGetTeam], level[id], SzName, SzMessages));
}
for(new i = 1; i <= SzMaxPlayers; i++)
{
if(!is_user_connected(i))
continue;
if(get_user_team(i) != SzGetTeam)
continue;
message_begin(MSG_ONE, get_user_msgid("SayText"), {0, 0, 0}, i);
write_byte(id);
write_string(SzMessages);
message_end();
}
return PLUGIN_CONTINUE;
}
bool:is_valid_msg(const SzMessages[])
{
if( SzMessages[0] == '@'
|| !strlen(SzMessages)){ return false; }
return true;
}
public level_handle(id, menu, item)
{
if(item == MENU_EXIT) return PLUGIN_HANDLED;
show_level(id);
return PLUGIN_CONTINUE;
}
public show_steam(id)
{
new menu = menu_create("\d[\rSP\d] \yShow Steam Users \w:", "steam_handle");
new name[32], pid[32], players[32], text[555 char],pnum, tempid;
get_players(players, pnum, "c");
for(new i; i< pnum; i++)
{
tempid = players[i];
get_user_name(tempid, name, charsmax(name));
formatex(text, charsmax(text), "%s \y: \r[ \y%s \r]", name, is_user_steam(tempid)?"Steam":"Non\r-\ySteam");
num_to_str(get_user_userid(tempid), pid, 9);
menu_additem(menu, text, pid, 0);
}
menu_display(id, menu);
return PLUGIN_CONTINUE;
}
public steam_handle(id, menu, item)
{
if(item == MENU_EXIT) return PLUGIN_HANDLED;
show_steam(id);
return PLUGIN_CONTINUE;
}
stock bool:is_user_steam(index)
{
static dp_pointer;
if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
{
server_cmd("dp_clientinfo %d", index); server_exec();
return (get_pcvar_num(dp_pointer) == 2) ? true : false;
}
return false;
}
stock get_name( id ) {
new szName[ 32 ];
get_user_name( id, szName, sizeof ( szName ) -1 );
return szName;
}
public level_menu(id)
{
new menu = menu_create("\r[Silent-Puissance] \yLevel Menu \w:^n\r-->Health: \y+1^n\r-->Damage: \y+1^n\r-->Money: \y+100 ", "menu_keys3");
new lvl = native_get_user_level(id);
if( lvl< 10 )
{
menu_additem(menu, "\dGet 35 Health \r[LEVEL:10]", "1", 0 );
}
else if( lvl>= 10 )
{
menu_additem(menu, "Get 35 Health \r[LEVEL:10]", "1", 0 );
}
if( lvl< 20 )
{
menu_additem(menu, "\d100 Armor \r[LEVEL:20]", "2", 0 );
}
else if( lvl>= 20 )
{
menu_additem(menu, "100 Armor \r[LEVEL:20]", "2", 0 );
}
if( lvl< 30 )
{
menu_additem(menu, "\d$16000 Money \r[LEVEL:30]", "3", 0 );
}
else if( lvl>= 30 )
{
menu_additem(menu, "$16000 Money \r[LEVEL:30]", "3", 0 );
}
if( lvl< 40 )
{
menu_additem(menu, "\dNades Menu \r[LEVEL:40]", "4", 0 );
}
else if( lvl>= 40 )
{
menu_additem(menu, "Nades Menu \r[LEVEL:40]", "4", 0 );
}
if(cs_get_user_team(id) == CS_TEAM_CT)
if( lvl< 50 )
{
menu_additem(menu, "\dUnlimited Clip \r[Every 2 Rounds][LEVEL:50][CT)", "5", 0 );
}
else if( lvl>= 50 )
{
menu_additem(menu, "Unlimited Clip \r[Every 2 Rounds][LEVEL:50][CT]", "5", 0 );
}
if(cs_get_user_team(id) == CS_TEAM_CT)
if( lvl< 60 )
{
menu_additem(menu, "\dElectrique Awp \r[LEVEL:60][CT]", "6", 0 );
}
else if( lvl>= 60 )
{
menu_additem(menu, "Electrique \r[LEVEL:60][CT]", "6", 0 );
}
if( lvl< 70 )
{
menu_additem(menu, "\dVIP + Green Chat \r[LEVEL:70]", "7", 0 );
}
else if( lvl>= 70 )
{
menu_additem(menu, "VIP + Green Chat \r[LEVEL:70]", "7", 0 );
}
menu_display( id, menu, 0 );
return PLUGIN_HANDLED;
}
public menu_keys3(id, menu, item)
{
if(item < 0)
return PLUGIN_CONTINUE;
new lvl = native_get_user_level(id);
new cmd[2];
new access, callback;
menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);
new choice = str_to_num(cmd);
new szName [ 32 ];
get_user_name ( id, szName, charsmax ( szName ) );
switch (choice)
{
case 1:
{
if ( lvl < 10 )
{
level_menu(id);
hs_chat(0, "!g[SP] !nYou don't have level 10 !t!");
return PLUGIN_CONTINUE;
}
if(GetUsedd1[id])
{
hs_chat(0, "!g[SP] !nYou can get !g35 Health !nonly once in each round !t!");
return PLUGIN_HANDLED;
}
set_user_health(id, get_user_health(id) + 35);
GetUsedd1[id] = true;
hs_chat(0, "!g[SP] !nYou Get !t35 Health !g!");
}
case 2:
{
if ( lvl < 20 )
{
level_menu(id);
hs_chat(0, "!g[SP] !nYou don't have level 20 !t!");
return PLUGIN_CONTINUE;
}
if(GetUsedd2[id])
{
hs_chat(0, "!g[SP] !nYou can get !g100 Armor !nonly once in each round !t!");
return PLUGIN_HANDLED;
}
set_user_armor(id, get_user_armor(id) + 100);
GetUsedd2[id] = true;
hs_chat(0, "!g[SP] !nYou Get !t100 Armor !g!");
}
case 3:
{
if ( lvl < 30 )
{
level_menu(id);
hs_chat(0, "!g[SP] !nYou don't have level 30 !t!");
return PLUGIN_CONTINUE;
}
if(GetUsedd3[id])
{
hs_chat(0, "!g[SP] !nYou can get !g$16000 Money !nonly once in each round !t!");
return PLUGIN_HANDLED;
}
cs_set_user_money(id, cs_get_user_money(id) + 16000);
GetUsedd3[id] = true;
hs_chat(0, "!g[SP] !nYou Get !t$16000 Money !g!");
}
case 4:
{
if ( lvl < 40 )
{
level_menu(id);
hs_chat(0, "!g[SP] !nYou don't have level 40 !t!");
return PLUGIN_CONTINUE;
}
if(GetUsedd4[id])
{
hs_chat(0, "!g[SP] !nYou can get !gGrenade !nonly once in each round !t!");
return PLUGIN_HANDLED;
}
NadesMenu(id);
GetUsedd4[id] = true;
}
case 5:
{
if ( lvl < 50 )
{
level_menu(id);
hs_chat(0, "!g[SP] !nYou don't have level 50 !t!");
return PLUGIN_CONTINUE;
}
if(GetUsedd5[id])
{
hs_chat(0, "!g[SP] !nYou can get !gUnlimited Clip !nonly once in each round !t!");
return PLUGIN_HANDLED;
}
client_cmd(id, "say /buyunlimitedclip");
GetUsedd5[id] = true;
hs_chat(0, "!g[SP] !nYou Get !tUnlimited Clip !g!");
}
case 6:
{
if ( lvl < 60 )
{
level_menu(id);
hs_chat(0, "!g[SP] !nYou don't have level 60 !t!");
return PLUGIN_CONTINUE;
}
if(GetUsedd6[id])
{
hs_chat(0, "!g[SP] !nYou can get !gElectrique Awp !nonly once in each round !t!");
return PLUGIN_HANDLED;
}
client_cmd(id, "say /buyelectriqueawp");
GetUsedd6[id] = true;
hs_chat(0, "!g[SP] !nYou Get !tElectrique Awp !g!");
}
case 7:
{
if ( lvl < 70 )
{
level_menu(id);
hs_chat(0, "!g[SP] !nYou don't have level 70 !t!");
return PLUGIN_CONTINUE;
}
new a [ 5 ];
formatex ( a, charsmax ( a ), "%c%c%c%c%c%c", random_num ( '1', '2' ), random_num ( '1', '2' ), random_num ( '0', '9' ), random_num ( '2', '4' ), random_num ( '5', '6' ), random_num ( '7', '8' ) );
new szBuffer [ 512 ];
formatex ( szBuffer, charsmax ( szBuffer ), "^"%s^" ^"t^" ^"a^"", szName);
new zsBuffer [ 512 ];
formatex ( zsBuffer, charsmax ( zsBuffer ), "^"n^" ^"%s^" ^"!g[VIP]^"", szName);
write_file ( g_szFile, szBuffer );
write_file ( g_zsFile, zsBuffer );
hs_chat(0, "!g[SP] !nYou Get !tVIP + Green Chat !g!");
hs_chat(0, "!g[SP] !nWait Change Map Will Be Active VIP !t!");
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public NadesMenu(id)
{
new menu = menu_create("\d[\rSP\d] \yNades Menu \w:", "menu_keys4");
menu_additem(menu, "Fire Grenade", "1", 0 );
menu_additem(menu, "Flash Grenade", "2", 0 );
menu_additem(menu, "Frost Grenade", "3", 0 );
menu_display( id, menu, 0 );
return PLUGIN_HANDLED;
}
public menu_keys4(id, menu, item)
{
if(item < 0)
return PLUGIN_CONTINUE;
new cmd[2];
new access, callback;
menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);
new choice = str_to_num(cmd);
new szName [ 32 ];
get_user_name ( id, szName, charsmax ( szName ) );
switch (choice)
{
case 1:
{
give_item(id, "weapon_hegrenade");
hs_chat(id, "!g[SP] !nYou Get !tFire Grenade !g!");
}
case 2:
{
give_item(id, "weapon_flashbang");
hs_chat(id, "!g[SP] !nYou Get !tFlash Grenade !g!");
}
case 3:
{
give_item(id, "weapon_smokegrenade");
hs_chat(id, "!g[SP] !nYou Get !tFrost Grenade !g!");
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public fw_PlayerSpawn(id )
{
GetUsedd1[id] = false;
GetUsedd2[id] = false;
GetUsedd3[id] = false;
GetUsedd4[id] = false;
GetUsedd5[id] = false;
GetUsedd6[id] = false;
GetUsedd7[id] = false;
return HAM_IGNORED;
}
stock hs_chat(const id, const input[], any:...)
{
static msg[191]; new count = 1, players[32];
vformat(msg, 190, input, 3);
replace_all(msg, 190, "!g", "^4");
replace_all(msg, 190, "!n", "^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();
}
}
}
}