Код:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <WPMGPrintChatColor>
#define PLUGIN "Weapon Menu"
#define VERSION "0.1"
#define AUTHOR "Subb98"
new g_iKey[33]
new g_iMenuPosition[33]
new g_iMenuPlayers[33][32]
new g_iRoundCounter
new g_pChatInfo
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("TextMsg", "eventTextMsg", "a", "2=#Game_will_restart_in", "2=#Game_Commencing")
register_event("HLTV", "eventHLTV", "a", "1=0", "2=0")
register_clcmd("amx_weaponmenu", "cmdWeaponMenu", ADMIN_MENU, "- show weapon menu")
register_clcmd("weaponmenu", "cmdWeaponMenu", ADMIN_MENU, "- show weapon menu")
register_menucmd(register_menuid("Weapon Menu"), 1023, "handleWeaponMenu")
register_menucmd(register_menuid("Player Menu"), 1023, "handlePlayerMenu")
g_pChatInfo = register_cvar("wm_chatinfo", "1")
}
public eventTextMsg()
g_iRoundCounter = 0
public eventHLTV()
g_iRoundCounter++
public cmdWeaponMenu(id, level, cid)
{
if(cmd_access(id, level, cid, 0))
{
if(g_iRoundCounter >= 3)
showWeaponMenu(id)
else
PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[WEAPONMENU]!y Извините, но эта команда доступна только с третьего раунда.")
}
}
showWeaponMenu(id)
{
new szMenu[512], iKeys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9)
formatex(szMenu, 511, "\yВыберите экипировку:\w^n^n")
add(szMenu, 511, "\r1. \wAK-47^n")
add(szMenu, 511, "\r2. \wM4A1^n")
add(szMenu, 511, "\r3. \wFamas^n")
add(szMenu, 511, "\r4. \wScout^n")
add(szMenu, 511, "\r5. \wAWP^n")
add(szMenu, 511, "\r6. \wDeagle^n")
add(szMenu, 511, "\r7. \wВсе гранаты^n")
add(szMenu, 511, "\r8. \wБроня и шлем^n")
add(szMenu, 511, "\r9. \wНабор сапера^n^n")
add(szMenu, 511, "\r0. \wВыход")
show_menu(id, iKeys, szMenu, -1, "Weapon Menu")
}
public handleWeaponMenu(id, iKey)
{
if(iKey == 9)
return
else
{
g_iKey[id] = iKey
showPlayerMenu(id, g_iMenuPosition[id] = 0)
}
}
showPlayerMenu(id, iPos)
{
if(iPos < 0)
return
new iTotalPlayersNum
get_players(g_iMenuPlayers[id], iTotalPlayersNum)
new szMenu[512], szName[32]
new i, b = 0, iStart = iPos * 7
if(iStart >= iTotalPlayersNum)
iStart = iPos = g_iMenuPosition[id] = 0
new iLen = formatex(szMenu, 511, "\yВыберите игрока:\R%d/%d\w^n^n", iPos + 1, (iTotalPlayersNum / 7 + ((iTotalPlayersNum % 7) ? 1 : 0)))
new iEnd = iStart + 7, iKeys = MENU_KEY_0|MENU_KEY_8
if(iEnd > iTotalPlayersNum)
iEnd = iTotalPlayersNum
for(new a = iStart; a < iEnd; ++a)
{
i = g_iMenuPlayers[id][a]
get_user_name(i, szName, 31)
iKeys |= (1<<b)
if(i == id)
iLen += formatex(szMenu[iLen], 511 - iLen, "\r%d. \y%s^n", ++b, szName)
else
iLen += formatex(szMenu[iLen], 511 - iLen, "\r%d. \w%s^n", ++b, szName)
}
if(iEnd != iTotalPlayersNum)
{
formatex(szMenu[iLen], 511 - iLen, "^n\r9. \wДалее...^n\r0. \wНазад")
iKeys |= MENU_KEY_9
}
else
formatex(szMenu[iLen], 511 - iLen, "^n\r0. \wНазад")
show_menu(id, iKeys, szMenu, -1, "Player Menu")
}
public handlePlayerMenu(id, iKey)
{
switch(iKey)
{
case 8: showPlayerMenu(id, ++g_iMenuPosition[id])
case 9:
{
if(g_iMenuPosition[id])
showPlayerMenu(id, --g_iMenuPosition[id])
else
showWeaponMenu(id)
}
default:
{
new g_iPlayer = g_iMenuPlayers[id][g_iMenuPosition[id] * 7 + iKey]
giveItem(id, g_iPlayer)
showPlayerMenu(id, g_iMenuPosition[id])
}
}
}
giveItem(id, g_iPlayer)
{
new szAdmName[32], szUsrName[32]
get_user_name(id, szAdmName, 31)
get_user_name(g_iPlayer, szUsrName, 31)
new iChatInfo = get_pcvar_num(g_pChatInfo)
switch(g_iKey[id])
{
case 0:
{
give_item(g_iPlayer, "weapon_ak47")
cs_set_user_bpammo(g_iPlayer, CSW_AK47, 90)
if(iChatInfo)
PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "!g[WEAPONMENU]!y Администратор !t%s!y выдал !gAK-47!y игроку !t%s!y.", szAdmName, szUsrName)
}
case 1:
{
give_item(g_iPlayer, "weapon_m4a1")
cs_set_user_bpammo(g_iPlayer, CSW_M4A1, 90)
if(iChatInfo)
PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "!g[WEAPONMENU]!y Администратор !t%s!y выдал !gM4A1!y игроку !t%s!y.", szAdmName, szUsrName)
}
case 2:
{
give_item(g_iPlayer, "weapon_famas")
cs_set_user_bpammo(g_iPlayer, CSW_FAMAS, 90)
if(iChatInfo)
PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "!g[WEAPONMENU]!y Администратор !t%s!y выдал !gFamas!y игроку !t%s!y.", szAdmName, szUsrName)
}
case 3:
{
give_item(g_iPlayer, "weapon_scout")
cs_set_user_bpammo(g_iPlayer, CSW_SCOUT, 90)
if(iChatInfo)
PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "!g[WEAPONMENU]!y Администратор !t%s!y выдал !gScout!y игроку !t%s!y.", szAdmName, szUsrName)
}
case 4:
{
give_item(g_iPlayer, "weapon_awp")
cs_set_user_bpammo(g_iPlayer, CSW_AWP, 30)
if(iChatInfo)
PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "!g[WEAPONMENU]!y Администратор !t%s!y выдал !gAWP!y игроку !t%s!y.", szAdmName, szUsrName)
}
case 5:
{
give_item(g_iPlayer, "weapon_deagle")
cs_set_user_bpammo(g_iPlayer, CSW_DEAGLE, 35)
if(iChatInfo)
PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "!g[WEAPONMENU]!y Администратор !t%s!y выдал !gDeagle!y игроку !t%s!y.", szAdmName, szUsrName)
}
case 6:
{
give_item(g_iPlayer, "weapon_hegrenade")
give_item(g_iPlayer, "weapon_flashbang")
give_item(g_iPlayer, "weapon_smokegrenade")
cs_set_user_bpammo(g_iPlayer, CSW_FLASHBANG, 2)
if(iChatInfo)
PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "!g[WEAPONMENU]!y Администратор !t%s!y выдал набор гранат игроку !t%s!y.", szAdmName, szUsrName)
}
case 7:
{
cs_set_user_armor(g_iPlayer, 100, CS_ARMOR_VESTHELM)
if(iChatInfo)
PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "!g[WEAPONMENU]!y Администратор !t%s!y выдал броню и шлем игроку !t%s!y.", szAdmName, szUsrName)
}
case 8:
{
if(get_user_team(g_iPlayer) == 2)
{
cs_set_user_defuse(g_iPlayer, 1)
if(iChatInfo)
PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "!g[WEAPONMENU]!y Администратор !t%s!y выдал набор сапера игроку !t%s.!y", szAdmName, szUsrName)
}
else
PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[WEAPONMENU]!y Извините, но набор сапера доступен только игрокам команды !tCounter-Terrorist!y.")
}
}
}