Код:
#include <amxmodx>
#include <fun>
#include <cstrike>
const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(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_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 givingweapon[33]
new g_maxplayers
new can_take_round
new can_take_pistols[33]
new can_take_equipment[33]
new can_take_shotguns[33]
new can_take_smgs[33]
new can_take_assaultrifles[33]
new can_take_sniperrifles[33]
new can_take_machineguns[33]
new bool:g_iBlockPlugin
public plugin_init()
{
register_plugin("Weaponmenu", "1.2", "ill | Ilya Korenkov (Remake)")
register_clcmd("weaponmenu", "cmdmenu")
register_clcmd("say /wpm", "cmdmenu")
register_clcmd("say_team /wpm", "cmdmenu")
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
register_event("TextMsg", "event_restart", "a", "2&#Game_C", "2&#Game_w")
g_maxplayers = get_maxplayers()
new iMap_Name[32], iMap_Prefix[][] = { "awp_", "aim_", "35hp", "fy_" };
get_mapname(iMap_Name, charsmax(iMap_Name))
for(new i; i < sizeof iMap_Prefix; i++)
{
if(containi(iMap_Name, iMap_Prefix[i]) != -1)
g_iBlockPlugin = true
}
}
public event_restart()
{
can_take_round = 0
}
public event_round_start()
{
can_take_round++
for (new id = 1; id <= g_maxplayers; id++)
{
can_take_pistols[id] = 0
can_take_equipment[id] = 0
can_take_shotguns[id] = 0
can_take_smgs[id] = 0
can_take_assaultrifles[id] = 0
can_take_sniperrifles[id] = 0
can_take_machineguns[id] = 0
}
}
public cmdmenu(id)
{
if(g_iBlockPlugin)
{
ChatColor(id,"^4[SERVER] ^3Оружейное меню недоступно на этой карте");
return PLUGIN_HANDLED
}
if (!(get_user_flags(id) & ADMIN_LEVEL_G))
{
ChatColor(id,"^4[SERVER] ^3У вас нет доступа к оружейному меню")
return PLUGIN_HANDLED
}
if(!is_user_alive(id))
{
ChatColor(id,"^4[SERVER] ^3Оружейное меню доступно только живым")
return PLUGIN_HANDLED
}
new menu = menu_create("\rОружейное меню", "g_menu_handler")
menu_additem(menu, "Пистолеты", "1")
menu_additem(menu, "Снаряжение", "2")
menu_additem(menu, "Дробовики", "3")
menu_additem(menu, "Пистолеты-пулеметы", "4")
menu_additem(menu, "Штурмовые винтовки", "5")
menu_additem(menu, "Снайперские винтовки", "6")
menu_additem(menu, "Пулеметы", "7")
menu_setprop(menu, MPROP_EXITNAME, "Выход")
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
public g_menu_handler(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new s_Data[6], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new Key = str_to_num(s_Data)
switch(Key)
{
case 1: cmdpistols(id)
case 2: cmdequipment(id)
case 3: cmdshotguns(id)
case 4: cmdsmgs(id)
case 5: cmdassaultrifles(id)
case 6: cmdsniperrifles(id)
case 7: cmdmachineguns(id)
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
public cmdpistols(id)
{
if(can_take_pistols[id] >= 1)
{
ChatColor(id,"^4[SERVER] ^3Пистолеты можно брать только^4 1 ^3раз за раунд")
return PLUGIN_HANDLED
}
new menu = menu_create("\rПистолеты", "pistols_menu_handler")
menu_additem(menu, "Glock 18", "1")
menu_additem(menu, "USP", "2")
menu_additem(menu, "P228", "3")
menu_additem(menu, "Deagle", "4")
menu_additem(menu, "Five Seven", "5")
menu_additem(menu, "Elite", "6")
menu_setprop(menu, MPROP_EXITNAME, "Выход")
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
public pistols_menu_handler(id, menu, item)
{
new s_Data[6], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new Key = str_to_num(s_Data)
switch(Key)
{
case 1: cmdgivepistol(id, 17)
case 2: cmdgivepistol(id, 16)
case 3: cmdgivepistol(id, 1)
case 4: cmdgivepistol(id, 26)
case 5: cmdgivepistol(id, 11)
case 6: cmdgivepistol(id, 10)
}
}
public cmdgivepistol(id, weapon)
{
givingweapon[id] = weapon
drop_weapons(id, 2)
can_take_pistols[id]++
if (is_user_alive(id))
{
switch(givingweapon[id])
{
case 17:
{
cs_set_user_bpammo(id, givingweapon[id], 120)
give_item(id, "weapon_glock18")
}
case 16:
{
cs_set_user_bpammo(id, givingweapon[id], 100)
give_item(id, "weapon_usp")
}
case 1:
{
cs_set_user_bpammo(id, givingweapon[id], 52)
give_item(id, "weapon_p228")
}
case 26:
{
cs_set_user_bpammo(id, givingweapon[id], 35)
give_item(id, "weapon_deagle")
}
case 11:
{
cs_set_user_bpammo(id, givingweapon[id], 100)
give_item(id, "weapon_fiveseven")
}
case 10:
{
cs_set_user_bpammo(id, givingweapon[id], 120)
give_item(id, "weapon_elite")
}
}
}
}
public cmdequipment(id)
{
if(can_take_equipment[id] >= 1)
{
ChatColor(id,"^4[SERVER] ^3Снаряжение можно брать только^4 1 ^3раз за раунд")
return PLUGIN_HANDLED
}
new menu = menu_create("\rСнаряжение", "equipment_menu_handler")
menu_additem(menu, "Все гранаты", "1")
menu_additem(menu, "Бронежилет", "2")
menu_setprop(menu, MPROP_EXITNAME, "Выход")
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
public equipment_menu_handler(id, menu, item)
{
new s_Data[6], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new Key = str_to_num(s_Data)
switch(Key)
{
case 1: cmdgiveequipment(id, 1)
case 2: cmdgiveequipment(id, 2)
}
}
public cmdgiveequipment(id, item)
{
givingweapon[id] = item
can_take_equipment[id]++
if (is_user_alive(id))
{
switch(givingweapon[id])
{
case 1:
{
give_item(id, "weapon_flashbang")
give_item(id, "weapon_flashbang")
give_item(id, "weapon_hegrenade")
give_item(id, "weapon_smokegrenade")
}
case 2:
{
cs_set_user_armor(id, 100, CsArmorType:2)
}
}
}
}
public cmdshotguns(id)
{
if(can_take_shotguns[id] >= 1)
{
ChatColor(id,"^4[SERVER] ^3Дробовики можно брать только^4 1 ^3раз за раунд")
return PLUGIN_HANDLED
}
if(can_take_round < 2)
{
ChatColor(id,"^4[SERVER] ^3Дробовики доступны только со^4 2-го ^3раунда")
return PLUGIN_HANDLED
}
new menu = menu_create("\rДробовики", "shotguns_menu_handler")
menu_additem(menu, "M3", "1")
menu_additem(menu, "XM1014", "2")
menu_setprop(menu, MPROP_EXITNAME, "Выход")
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
public shotguns_menu_handler(id, menu, item)
{
new s_Data[6], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new Key = str_to_num(s_Data)
switch(Key)
{
case 1: cmdgiveshotgun(id, 21)
case 2: cmdgiveshotgun(id, 5)
}
}
public cmdgiveshotgun(id, weapon)
{
givingweapon[id] = weapon
drop_weapons(id, 1)
can_take_shotguns[id]++
if (is_user_alive(id))
{
switch(givingweapon[id])
{
case 21:
{
cs_set_user_bpammo(id, givingweapon[id], 32)
give_item(id, "weapon_m3")
}
case 5:
{
cs_set_user_bpammo(id, givingweapon[id], 32)
give_item(id, "weapon_xm1014")
}
}
}
}
public cmdsmgs(id)
{
if(can_take_smgs[id] >= 1)
{
ChatColor(id,"^4[SERVER] ^3Пистолеты-пулеметы можно брать только^4 1 ^3раз за раунд")
return PLUGIN_HANDLED
}
if(can_take_round < 2)
{
ChatColor(id,"^4[SERVER] ^3Пистолеты-пулеметы доступны только со^4 2-го ^3раунда")
return PLUGIN_HANDLED
}
new menu = menu_create("\rПистолеты-пулеметы", "smgs_menu_handler")
menu_additem(menu, "Mac 10", "1")
menu_additem(menu, "TMP", "2")
menu_additem(menu, "MP5 Navy", "3")
menu_additem(menu, "UMP 45", "4")
menu_additem(menu, "P90", "5")
menu_setprop(menu, MPROP_EXITNAME, "Выход")
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
public smgs_menu_handler(id, menu, item)
{
new s_Data[6], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new Key = str_to_num(s_Data)
switch(Key)
{
case 1: cmdgivesmg(id, 7)
case 2: cmdgivesmg(id, 23)
case 3: cmdgivesmg(id, 19)
case 4: cmdgivesmg(id, 12)
case 5: cmdgivesmg(id, 30)
}
}
public cmdgivesmg(id, weapon)
{
givingweapon[id] = weapon
drop_weapons(id, 1)
can_take_smgs[id]++
if (is_user_alive(id))
{
switch(givingweapon[id])
{
case 7:
{
cs_set_user_bpammo(id, givingweapon[id], 100)
give_item(id, "weapon_mac10")
}
case 23:
{
cs_set_user_bpammo(id, givingweapon[id], 120)
give_item(id, "weapon_tmp")
}
case 19:
{
cs_set_user_bpammo(id, givingweapon[id], 120)
give_item(id, "weapon_mp5navy")
}
case 12:
{
cs_set_user_bpammo(id, givingweapon[id], 100)
give_item(id, "weapon_ump45")
}
case 30:
{
cs_set_user_bpammo(id, givingweapon[id], 100)
give_item(id, "weapon_p90")
}
}
}
}
public cmdassaultrifles(id)
{
if(can_take_assaultrifles[id] >= 1)
{
ChatColor(id,"^4[SERVER] ^3Штурмовые винтовки можно брать только^4 1 ^3раз за раунд")
return PLUGIN_HANDLED
}
if(can_take_round < 2)
{
ChatColor(id,"^4[SERVER] ^3Штурмовые винтовки доступны только со^4 2-го ^3раунда")
return PLUGIN_HANDLED
}
new menu = menu_create("\rШтурмовые винтовки", "assaultrifles_menu_handler")
menu_additem(menu, "Famas", "1")
menu_additem(menu, "Galil", "2")
menu_additem(menu, "M4A1", "3")
menu_additem(menu, "AK47", "4")
menu_additem(menu, "AUG", "5")
menu_additem(menu, "SG552", "6")
menu_setprop(menu, MPROP_EXITNAME, "Выход")
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
public assaultrifles_menu_handler(id, menu, item)
{
new s_Data[6], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new Key = str_to_num(s_Data)
switch(Key)
{
case 1: cmdgiveassaultrifle(id, 15)
case 2: cmdgiveassaultrifle(id, 14)
case 3: cmdgiveassaultrifle(id, 22)
case 4: cmdgiveassaultrifle(id, 28)
case 5: cmdgiveassaultrifle(id, 8)
case 6: cmdgiveassaultrifle(id, 27)
}
}
public cmdgiveassaultrifle(id, weapon)
{
givingweapon[id] = weapon
drop_weapons(id, 1)
can_take_assaultrifles[id]++
if (is_user_alive(id))
{
switch(givingweapon[id])
{
case 15:
{
cs_set_user_bpammo(id, givingweapon[id], 90)
give_item(id, "weapon_famas")
}
case 14:
{
cs_set_user_bpammo(id, givingweapon[id], 90)
give_item(id, "weapon_galil")
}
case 22:
{
cs_set_user_bpammo(id, givingweapon[id], 90)
give_item(id, "weapon_m4a1")
}
case 28:
{
cs_set_user_bpammo(id, givingweapon[id], 90)
give_item(id, "weapon_ak47")
}
case 8:
{
cs_set_user_bpammo(id, givingweapon[id], 90)
give_item(id, "weapon_aug")
}
case 27:
{
cs_set_user_bpammo(id, givingweapon[id], 90)
give_item(id, "weapon_sg552")
}
}
}
}
public cmdsniperrifles(id)
{
if(can_take_sniperrifles[id] >= 1)
{
ChatColor(id,"^4[SERVER] ^3Снайперские винтовки можно брать только^4 1 ^3раз за раунд")
return PLUGIN_HANDLED
}
if(can_take_round < 3)
{
ChatColor(id,"^4[SERVER] ^3Снайперские винтовки доступны только с^4 3-го ^3раунда")
return PLUGIN_HANDLED
}
new menu = menu_create("\rСнайперские винтовки", "sniperrifles_menu_handler")
menu_additem(menu, "AWP", "1")
menu_setprop(menu, MPROP_EXITNAME, "Выход")
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
public sniperrifles_menu_handler(id, menu, item)
{
new s_Data[6], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new Key = str_to_num(s_Data)
switch(Key)
{
case 1: cmdgivesniperrifle(id, 18)
}
}
public cmdgivesniperrifle(id, weapon)
{
givingweapon[id] = weapon
drop_weapons(id, 1)
can_take_sniperrifles[id]++
if (is_user_alive(id))
{
switch(givingweapon[id])
{
case 18:
{
cs_set_user_bpammo(id, givingweapon[id], 30)
give_item(id, "weapon_awp")
}
}
}
}
public cmdmachineguns(id)
{
if(can_take_machineguns[id] >= 1)
{
ChatColor(id,"^4[SERVER] ^3Пулеметы можно брать только^4 1 ^3раз за раунд")
return PLUGIN_HANDLED
}
if(can_take_round < 3)
{
ChatColor(id,"^4[SERVER] ^3Пулеметы доступны только с^4 3-го ^3раунда")
return PLUGIN_HANDLED
}
new menu = menu_create("\rПулеметы", "machineguns_menu_handler")
menu_additem(menu, "M249", "1")
menu_setprop(menu, MPROP_EXITNAME, "Выход")
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
public machineguns_menu_handler(id, menu, item)
{
new s_Data[6], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new Key = str_to_num(s_Data)
switch(Key)
{
case 1: cmdgivemachinegun(id, 20)
}
}
public cmdgivemachinegun(id, weapon)
{
givingweapon[id] = weapon
drop_weapons(id, 1)
can_take_machineguns[id]++
if (is_user_alive(id))
{
switch(givingweapon[id])
{
case 20:
{
cs_set_user_bpammo(id, givingweapon[id], 200)
give_item(id, "weapon_m249")
}
}
}
}
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") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!team", "^3") // Team Color
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();
}
}
}
}
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)
}
}
}
Установлю и настрою FreshBans, DopBan.
Писать в ЛС.