Здравствуйте уважаемые .Не моглибы вы мен помоч с плагином.Немно учусь редактировать плагины под себя и свой сервер.Сейчас делаю вип меню.Но в плагине не нравится что например берешь оружие кокое либо,оно взялось,и когда хочешь взять гранаты пишет "Можно взять только раз за раунд".Я так понимаю одна функия идет на все меню и на каждое оружие .Мне нужно чтобы каждое оружие бралось отдельно от каждого.
Собственно сам исходник.
Код
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <cstrike>
#include <fun>
#define VIP ADMIN_LEVEL_H
#define ADMIN ADMIN_BAN
const KEYSMENU = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MEN
U_KEY_8|MENU_KEY_9|MENU_KEY_0
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 can_take_round, can_take[33]
new g_msgSayText, g_maxplayers
public plugin_init()
{
register_plugin("Vip Menu", "2.0", "nextent")
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
register_event("TextMsg", "Event_Restart", "a", "2&#Game_C", "2&#Game_w")
register_clcmd("say /adminka", "ShowMotdAdm")
register_clcmd("say /vipka", "ShowMotdVip")
register_clcmd("say /admin", "print_adminlist")
register_clcmd("amx_vip", "press_menu")
register_menu("Vip Menu", KEYSMENU, "admin_menu")
g_maxplayers = get_maxplayers()
g_msgSayText = get_user_msgid("SayText")
}
public ShowMotdAdm(id)
{
show_motd(id, "adminka.txt")
return PLUGIN_HANDLED
}
public ShowMotdVip(id)
{
show_motd(id, "vip.txt")
return PLUGIN_HANDLED
}
public client_connect(id)
{
client_cmd(id, "bind f3 amx_vip")
}
public Event_Restart()
{
can_take_round = 0
}
public event_round_start()
{
can_take_round++
for (new id = 1; id <= g_maxplayers; id++)
{
can_take[id] = true
}
}
public press_menu(id)
{
if(!(get_user_flags(id) & VIP))
{
colored_print(id, "^x04Недостаточно прав для использования команды")
return PLUGIN_HANDLED
}
show_vip_menu(id)
return PLUGIN_HANDLED
}
public show_vip_menu(id)
{
static menu[450], len
len = 0
len += formatex(menu[len], charsmax(menu) - len, "\rVIP МЕНЮ^n^n")
len += formatex(menu[len], charsmax(menu) - len, "\r1. \wВзять \r[\yM4A1+DGL+HE\r]^n")
len += formatex(menu[len], charsmax(menu) - len, "\r2. \wВзять \r[\yAK47+DGL+HE\r]^n")
len += formatex(menu[len], charsmax(menu) - len, "\r3. \wВзять \r[\yAWP+DGL+HE+ARMOR\r]^n^n")
len += formatex(menu[len], charsmax(menu) - len, "\r4. \wКикнуть^n")
len += formatex(menu[len], charsmax(menu) - len, "\r5. \wГолосование за карту^n")
len += formatex(menu[len], charsmax(menu) - len, "\r0.\y Выход")
show_menu(id, KEYSMENU, menu, -1, "Vip Menu")
return PLUGIN_CONTINUE
}
public admin_menu(id, key)
{
switch (key)
{
case 0:
{
if(can_take_round < 3)
{
colored_print(id, "^x04Доступно только с 3го раунда")
return PLUGIN_CONTINUE
}
if(!can_take[id])
{
colored_print(id, "^x04Можно взять только раз за раунд")
return PLUGIN_HANDLED
}
drop_weapons(id, 1)
drop_weapons(id, 2)
give_item(id,"weapon_hegrenade")
give_item(id,"weapon_deagle")
give_item(id,"weapon_m4a1")
cs_set_user_bpammo(id, CSW_M4A1, 90)
cs_set_user_bpammo(id, CSW_DEAGLE, 35)
can_take[id] = false
}
case 1:
{
if(can_take_round < 3)
{
colored_print(id, "^x04Доступно только с 3го раунда")
return PLUGIN_CONTINUE
}
if(!can_take[id])
{
colored_print(id, "^x04Можно взять только раз за раунд")
return PLUGIN_HANDLED
}
drop_weapons(id, 1)
drop_weapons(id, 2)
give_item(id,"weapon_hegrenade")
give_item(id,"weapon_deagle")
give_item(id,"weapon_ak47")
cs_set_user_bpammo(id, CSW_AK47, 90)
cs_set_user_bpammo(id, CSW_DEAGLE, 35)
can_take[id] = false
}
case 2:
{
if(can_take_round < 5)
{
colored_print(id, "^x04Доступно только с 5го раунда")
return PLUGIN_CONTINUE
}
if(!can_take[id])
{
colored_print(id, "^x04Можно взять только раз за раунд")
return PLUGIN_HANDLED
}
drop_weapons(id, 1)
drop_weapons(id, 2)
give_item(id, "weapon_hegrenade")
set_user_armor(id, 100)
give_item(id,"weapon_deagle")
give_item(id,"weapon_awp")
cs_set_user_bpammo(id, CSW_AWP, 30)
cs_set_user_bpammo(id, CSW_DEAGLE, 35)
can_take[id] = false
}
case 3:
{
client_cmd(id, "amx_kickmenu")
}
case 4:
{
client_cmd(id, "amx_votemapmenu")
}
}
}
return PLUGIN_CONTINUE
}
public print_viplist(user)
{
new adminnames[33][32]
new message[256]
new id, count, x, len
for(id = 1; id <= g_maxplayers; id++)
if(is_user_connected(id))
if(get_user_flags(id) & VIP)
get_user_name(id, adminnames[count++], 31)
len = format(message, 255, "Випы онлайн: ")
if(count > 0) {
for(x = 0; x < count; x++) {
len += format(message[len], 255-len, "%s%s ", adminnames[x], x < (count-1) ? ", ":"")
if(len > 96 ) {
colored_print(user, "^x04%s", message)
len = format(message, 255, "")
}
}
colored_print(user, "^x04%s", message)
}
else {
len += format(message[len], 255-len, "Отсутствуют")
colored_print(user, "^x04%s", message)
}
}
public print_adminlist(user)
{
new adminnames[33][32]
new message[256]
new id, count, x, len
for(id = 1; id <= g_maxplayers; id++)
if(is_user_connected(id))
if(get_user_flags(id) & ADMIN)
get_user_name(id, adminnames[count++], 31)
len = format(message, 255, "Админы онлайн: ")
if(count > 0) {
for(x = 0; x < count; x++) {
len += format(message[len], 255-len, "%s%s ", adminnames[x], x < (count-1) ? ", ":"")
if(len > 96 ) {
colored_print(user, "^x04%s", message)
len = format(message, 255, "")
}
}
colored_print(user, "^x04%s", message)
}
else {
len += format(message[len], 255-len, "Отсутствуют")
colored_print(user, "^x04%s", message)
}
print_viplist(user)
}
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)
}
}
}
stock colored_print( target, const message[], any:... )
{
static buffer[ 512 ]
if( !target )
{
static player
for( player = 1; player <= g_maxplayers; player++ )
{
if ( !is_user_connected( player ) )
continue;
vformat( buffer, charsmax( buffer ), message, 3 )
message_begin( MSG_ONE_UNRELIABLE, g_msgSayText, _, player )
write_byte( player )
write_string( buffer )
message_end()
}
}
else
{
vformat( buffer, charsmax( buffer ), message, 3 )
message_begin( MSG_ONE, g_msgSayText, _, target )
write_byte( target )
write_string( buffer )
message_end()
}
}