Код
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <hamsandwich>
#include <WPMGPrintChatColor>
enum (<<=1)
{
DROP_PRIMARY = 1,
DROP_SECONDARY
}
const WEAPONS_PRIMARY_BITSUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90);
const WEAPONS_SECONDARY_BITSUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
new use_weapon[33]
new round_number
public plugin_init()
{
register_plugin("vipka", "1.1", "?")
register_event("HLTV", "event_start_round", "a", "1=0", "2=0")
register_event("TextMsg", "event_restart_round", "a", "2&#Game_C", "2&#Game_w")
RegisterHam(Ham_Spawn, "player", "player_spawn", 1)
register_clcmd("vipmenu", "handle_menu")
register_clcmd("say /mvip", "handle_menu")
register_clcmd("say /vipmenu", "handle_menu")
}
public event_start_round()
{
round_number++
for(new i; i <= 32; i++)
{
if(!is_user_connected(i)) continue;
use_weapon[i] = false
}
}
public event_restart_round()
{
round_number = 0
for(new i; i <= 32; i++)
{
if(!is_user_connected(i)) continue;
use_weapon[i] = false
}
}
public player_spawn(id)
{
if(!is_user_connected(id))
return HAM_IGNORED
if(get_user_flags(id) & ADMIN_LEVEL_H)
{
give_item(id,"weapon_hegrenade")
give_item(id,"weapon_flashbang")
give_item(id,"weapon_flashbang")
give_item(id,"weapon_smokegrenade")
give_item(id,"item_assaultsuit")
if(round_number >= 3)
cs_set_user_money(id, min(cs_get_user_money(id) + 1500, 16000))
}
return HAM_IGNORED
}
public handle_menu(id)
{
if(!(get_user_flags(id) & ADMIN_LEVEL_H))
{
PrintChatColor(id, PRINT_COLOR_RED, "!tНедостаточно прав.")
return PLUGIN_HANDLED
}
if(!is_user_alive(id))
{
PrintChatColor(id, PRINT_COLOR_RED, "!tВы умерли и не можете использовать это меню.")
return PLUGIN_HANDLED
}
if(use_weapon[id])
{
PrintChatColor(id, PRINT_COLOR_RED, "!tВы не можете использовать это меню, так как уже брали в нем оружие")
return PLUGIN_HANDLED
}
new menu = menu_create("\yВыбирай оружие:", "handle_menu_choise")
if(round_number >= 2)
{
menu_additem(menu, "M4a1", "1", 0)
menu_additem(menu, "Ak-47", "2", 0)
}
else
{
menu_additem(menu, "\dM4a1", "1", 0)
menu_additem(menu, "\dAk-47", "2", 0)
}
if(round_number >= 3)
{
menu_additem(menu, "Awp", "3", 0)
menu_additem(menu, "Aug", "4", 0)
menu_additem(menu, "Sg552", "5", 0)
}
else
{
menu_additem(menu, "\dAwp", "3", 0)
menu_additem(menu, "\dAug", "4", 0)
menu_additem(menu, "\dSg552", "5", 0)
}
if(round_number >= 2)
{
menu_additem(menu, "Famas", "6", 0)
menu_additem(menu, "Galil", "7", 0)
}
else
{
menu_additem(menu, "\dFamas", "6", 0)
menu_additem(menu, "\dGalil", "7", 0)
}
menu_display(id, menu)
return PLUGIN_HANDLED
}
public handle_menu_choise(id, menu, item)
{
if(!(get_user_flags(id) & ADMIN_LEVEL_H))
{
PrintChatColor(id, PRINT_COLOR_RED, "!tНедостаточно прав.")
return PLUGIN_HANDLED
}
if(!is_user_alive(id))
{
PrintChatColor(id, PRINT_COLOR_RED, "!tВы умерли и не можете использовать это меню.")
return PLUGIN_HANDLED
}
new dst[32], data[6], access, callback
menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
menu_destroy(menu)
new key = str_to_num(data)
switch(key)
{
case(1):
{
if(round_number >= 2 && !use_weapon[id])
{
use_weapon[id] = true
drop_weapons(id, 1)
give_item(id,"weapon_m4a1")
cs_set_user_bpammo(id, CSW_M4A1, 90)
PrintChatColor(id, PRINT_COLOR_RED, "!yВы взяли M4a1.")
}
else
handle_menu(id)
}
case(2):
{
if(round_number >= 2 && !use_weapon[id])
{
use_weapon[id] = true
drop_weapons(id, 1)
give_item(id,"weapon_ak47")
cs_set_user_bpammo(id, CSW_AK47, 90)
PrintChatColor(id, PRINT_COLOR_RED, "!yВы взяли Ak47.")
}
else
handle_menu(id)
}
case(3):
{
if(round_number >= 3 && !use_weapon[id])
{
use_weapon[id] = true
drop_weapons(id, 1)
give_item(id,"weapon_awp")
cs_set_user_bpammo(id, CSW_AWP, 30)
PrintChatColor(id, PRINT_COLOR_RED, "!yВы взяли Awp.")
}
else
handle_menu(id)
}
case(4):
{
if(round_number >= 3 && !use_weapon[id])
{
use_weapon[id] = true
drop_weapons(id, 1)
give_item(id,"weapon_aug")
cs_set_user_bpammo(id, CSW_AUG, 90)
PrintChatColor(id, PRINT_COLOR_RED, "!yВы взяли Aug.")
}
else
handle_menu(id)
}
case(5):
{
if(round_number >= 3 && !use_weapon[id])
{
use_weapon[id] = true
drop_weapons(id, 1)
give_item(id,"weapon_sg552")
cs_set_user_bpammo(id, CSW_SG552, 90)
PrintChatColor(id, PRINT_COLOR_RED, "!yВы взяли Sg552.")
}
else
handle_menu(id)
}
case(6):
{
if(round_number >= 2 && !use_weapon[id])
{
use_weapon[id] = true
drop_weapons(id, 1)
give_item(id,"weapon_famas")
cs_set_user_bpammo(id, CSW_FAMAS, 90)
PrintChatColor(id, PRINT_COLOR_RED, "!yВы взяли Famas.")
}
else
handle_menu(id)
}
case(7):
{
if(round_number >= 2 && !use_weapon[id])
{
use_weapon[id] = true
drop_weapons(id, 1)
give_item(id,"weapon_galil")
cs_set_user_bpammo(id, CSW_GALIL, 90)
PrintChatColor(id, PRINT_COLOR_RED, "!yВы взяли Galil.")
}
else
handle_menu(id)
}
}
return PLUGIN_HANDLED
}
stock drop_weapons(id, dropwhat)
{
static weapons[32], num, i, weaponid
num = 0
get_user_weapons(id, weapons, num)
for (i = 0; i < num; i++)
{
weaponid = weapons[i]
if ((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
{
static wname[32]
get_weaponname(weaponid, wname, sizeof wname - 1)
engclient_cmd(id, "drop", wname)
}
}
}