Code: Select all
#include <amxmodx>
#include <fun>
#include <cstrike>
#include <hamsandwich>
#if AMXX_VERSION_NUM < 183
#define client_disconnected client_disconnect
#endif
#if !defined MAX_PLAYERS
const MAX_PLAYERS = 32
#endif
new const PLUGIN[] = "VIP cu 15 tipuri de vip",
AUTHOR[] = "cine vreti voi ca oricum se pun toti autori peste pluginuri",
VERSION[]= "-1";
enum (+=1)
{
NO_VIP = 0,
VIP_BRONZE,
VIP_SILVER,
VIP_GOLD,
VIP_DIAMONG,
VIP_PLATINUM
}
enum (+=1000)
{
OPEN_MENU = 100,
GODMODE_TASK
}
enum _:VIPS
{
FLAG[2],
CMD[16],
RESPAWNS,
GOD_TIME
}
new g_iVIPLevel[MAX_PLAYERS + 1];
new g_iRespawns[MAX_PLAYERS + 1];
new bool:g_bUsedWeap[MAX_PLAYERS + 1];
new bool:g_bUsedGodmode[MAX_PLAYERS + 1];
new bool:g_bIsInGod[MAX_PLAYERS + 1];
new const TAG[] = "[VIP]";
new const g_eVIPSettings[][VIPS] =
{
//FLAG //CHAT COMMAND //RESPAWNS //GOD MODE TIME
{"m" , "/bmenu", 1, 3}, // VIP_BRONZE
{"n" , "/smenu", 2, 5}, // VIP_SILVER
{"o" , "/gmenu", 3, 7}, // VIP_GOLD
{"p" , "/dmenu", 4, 9}, // VIP_DIAMOND
{"q" , "/pmenu", 5, 12} // VIP_PLATINUM
};
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_clcmd("say", "sayHook");
register_clcmd("say_team", "sayHook");
register_event("HLTV", "event_new_round", "a", "1=0", "2=0")
RegisterHam(Ham_Killed, "player", "player_death", false);
}
public client_authorized(id)
{
if(is_user_bot(id) || is_user_hltv(id))
{
return PLUGIN_CONTINUE;
}
g_iVIPLevel[id] = NO_VIP;
g_iRespawns[id] = 0;
g_bUsedWeap[id] = false;
g_bUsedGodmode[id] = false;
g_bIsInGod[id] = false
static iFlags;
iFlags = get_user_flags(id);
for(new iPos = 1, iVIPFlags = read_flags(g_eVIPSettings[iPos][FLAG]); iPos < sizeof(g_eVIPSettings); iPos++)
{
if(iVIPFlags & iFlags)
{
g_iVIPLevel[id] = iPos;
g_iRespawns[id] = g_eVIPSettings[iPos][RESPAWNS]
}
}
return PLUGIN_CONTINUE;
}
public client_disconnected(id)
{
if(is_user_bot(id) || is_user_hltv(id))
{
return PLUGIN_CONTINUE;
}
if(task_exists(id + GODMODE_TASK))
remove_task(id + GODMODE_TASK)
return PLUGIN_CONTINUE;
}
public sayHook(id)
{
static szArg[192];
read_args(szArg, charsmax(szArg));
remove_quotes(szArg);
for(new i; i < sizeof(g_eVIPSettings); i++)
{
if(equali(g_eVIPSettings[i][CMD], szArg))
{
set_task(0.1, "open_menu", id + OPEN_MENU);
}
}
}
public open_menu(id)
{
id -= OPEN_MENU;
if(cs_get_user_team(id) != CS_TEAM_T || cs_get_user_team(id) != CS_TEAM_CT)
{
client_print_color(id, print_team_default, "^4%s^1 You must be at^3 one team^1!", TAG);
return PLUGIN_HANDLED;
}
if(g_iVIPLevel[id] == NO_VIP)
{
client_print_color(id, print_team_default, "^4%s^1 You don't have^3 acces^1!", TAG);
return PLUGIN_HANDLED;
}
new iMenu = menu_create("\r[VIP]\y Choose", "menu_handler"), szItem[64];
formatex(szItem, charsmax(szItem), "%s\y +\w DEAGLE\y +\w GRENAZI",(cs_get_user_team(id) == CS_TEAM_T) ? "AK47" : "M4A1")
menu_additem(iMenu, szItem);
formatex(szItem, charsmax(szItem), "%s Respawns \r[\y%i\w left]", (g_iRespawns[id] > 0) ? "\w" : "\d", g_iRespawns[id]);
menu_additem(iMenu, szItem);
formatex(szItem, charsmax(szItem), "Godmode\y %s\w second%s", g_eVIPSettings[g_iVIPLevel[id]][GOD_TIME], (g_eVIPSettings[g_iVIPLevel[id]][GOD_TIME] > 1) ? "s" : "");
menu_additem(iMenu, szItem);
if(is_user_connected(id))
menu_display(id, iMenu, 0, -1);
return PLUGIN_CONTINUE;
}
public menu_handler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
switch(item)
{
case 0:
{
if(!is_user_alive(id))
{
client_print_color(id, print_team_default, "^4%s^1 You must be^3 alive^1!", TAG)
return PLUGIN_HANDLED;
}
if(g_bUsedWeap[id] == true)
{
client_print_color(id, print_team_default, "^4%s^1 You must be^3 alive^1!", TAG)
return PLUGIN_HANDLED;
}
strip_user_weapons(id);
give_item(id, "weapon_knife");
give_item(id, (cs_get_user_team(id) == CS_TEAM_T) ? "weapon_m4a1" : "weapon_ak47");
cs_set_user_bpammo(id, (cs_get_user_team(id) == CS_TEAM_T) ? CSW_M4A1 : CSW_AK47, 90);
give_item(id, "weapon_deagle");
cs_set_user_bpammo(id, CSW_DEAGLE, 35);
give_item(id, "weapon_flashbang")
cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
give_item(id, "weapon_hegrenade");
}
case 1:
{
if(!is_user_alive(id))
{
client_print_color(id, print_team_default, "^4%s^1 You must be^3 dead^1!", TAG)
return PLUGIN_HANDLED;
}
if(g_iRespawns[id] == 0)
{
client_print_color(id, print_team_default, "^4%s^1 You have no^3 respawns left^1!", TAG)
return PLUGIN_HANDLED;
}
g_iRespawns[id]--
ExecuteHam(Ham_CS_RoundRespawn, id);
}
case 2:
{
if(g_bUsedGodmode[id] == true)
{
client_print_color(id, print_team_default, "^4%s^1 You already used^3 godmode^1 this round!", TAG)
return PLUGIN_HANDLED;
}
set_user_godmode(id, 1);
set_task(float(g_eVIPSettings[g_iVIPLevel[id]][GOD_TIME]), "remove_godmode", id + GODMODE_TASK);
g_bIsInGod[id] = true;
}
}
return PLUGIN_CONTINUE;
}
public remove_godmode(id)
{
if(is_user_alive(id) && g_bIsInGod[id] == true)
{
set_user_godmode(id, 0);
g_bIsInGod[id] = false;
}
}
public event_new_round()
{
new iPlayers[MAX_PLAYERS], iNum;
get_players(iPlayers, iNum);
for(new i,iPlayer; i < iNum; i++)
{
iPlayer = iPlayers[i];
if(is_user_connected(iPlayer) && g_iVIPLevel[iPlayer] != NO_VIP)
{
g_bUsedWeap[iPlayer] = false;
g_bUsedGodmode[iPlayer] = false;
}
}
}
public player_death(iVictim)
{
if(g_bUsedGodmode[iVictim] == true)
{
set_user_godmode(iVictim, 0)
g_bUsedGodmode[iVictim] = false;
}
}