Здравствуйте. Проблема в следующем, это вип меню могут открывать даже простые игроки, помоги добавить проверку по флагу "t"
Код:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <engine>
#include <fun>
#include <hamsandwich>
#include <colorchat>
#define PLUGIN "[JB]Med sestra"
#define VERSION "1.0"
#define AUTHOR "Nixon"
new Round1[33]
new Round2[33]
new Round3[33]
new Round4[33]
new Round5[33]
new Round6[33]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_Spawn, "player", "Spawn_player", 1)
register_logevent("round_start", 2, "0=World triggered", "1=Round_Start")
//register_concmd("say /vip","vip",ADMIN_LEVEL_G," - My test command for admin")
register_clcmd("say /vip", "vip")
}
public Spawn_player(id)
{
set_rendering(id,kRenderFxNone,255,255,255,kRenderNormal,16)
}
public round_start()
{
for(new id = 0; id < 33; id++)
{
if(Round1[id] > 0)
{
Round1[id] -= 1
}
if(Round2[id] > 0)
{
Round2[id] -= 1
}
if(Round3[id] > 0)
{
Round3[id] -= 1
}
if(Round4[id] > 0)
{
Round4[id] -= 1
}
if(Round5[id] > 0)
{
Round5[id] -= 1
}
if(Round6[id] > 0)
{
Round6[id] -= 1
}
}
}
public vip(id)
{
if(id != get_user_flags(id) & ADMIN_LEVEL_G)
{
vip_handled(id)
return PLUGIN_HANDLED
}
ColorChat(id, RED, "[VIP]^x01 Это меню только для ^x04VIP")
return PLUGIN_CONTINUE
}
public vip_handled(id)
{
static menu[500]
formatex(menu, 499, "\rМ\yеню \rВ\yипа:")
new i_Menu = menu_create(menu, "vip_sub")
if(Round1[id] == 0)
{
formatex(menu, charsmax(menu), "Взять \r150 \dброни и хп \r[\y1 \rраз в раунд]")
menu_additem(i_Menu, menu, "1")
}
else
{
formatex(menu, charsmax(menu), "\dВзять 150 брони и хп [закончилось]")
menu_additem(i_Menu, menu, "1")
}
if(Round2[id] == 0)
{
formatex(menu, charsmax(menu), "Взять \r16000$ \r[\y1 \rраз в раунд]")
menu_additem(i_Menu, menu, "2")
}
else
{
formatex(menu, charsmax(menu), "\dВзять 16000$ [закончилось]")
menu_additem(i_Menu, menu, "2")
}
if(Round3[id] == 0)
{
formatex(menu, charsmax(menu), "Воскреснуть \r[\y1 \rраз в \y3 \rраунда]")
menu_additem(i_Menu, menu, "3")
}
else
{
formatex(menu, charsmax(menu), "\dВоскреснуть [осталось %d раунд(а)]", Round3[id])
menu_additem(i_Menu, menu, "3")
}
if(Round4[id] == 0)
{
formatex(menu, charsmax(menu), "Гравитация \r[\y1 \rраз в раунд]")
menu_additem(i_Menu, menu, "4")
}
else
{
formatex(menu, charsmax(menu), "\dГравитация [закончилось]")
menu_additem(i_Menu, menu, "4")
}
if(Round5[id] == 0)
{
formatex(menu, charsmax(menu), "Невидимость \r[\y1 \rраз в раунд]")
menu_additem(i_Menu, menu, "5")
}
else
{
formatex(menu, charsmax(menu), "\dНевидимость [закончилось]")
menu_additem(i_Menu, menu, "5")
}
if(Round6[id] == 0)
{
formatex(menu, charsmax(menu), "Воскресить игрока \r[\y1 \rраз в \y5 \rраундов]")
menu_additem(i_Menu, menu, "6")
}
else
{
formatex(menu, charsmax(menu), "\dВоскресить игрока [осталось %d раунд(а)]", Round6[id])
menu_additem(i_Menu, menu, "6")
}
menu_setprop(i_Menu, MPROP_NEXTNAME, "Вперёд")
menu_setprop(i_Menu, MPROP_BACKNAME, "Назад")
menu_setprop(i_Menu, MPROP_EXITNAME, "Выход")
menu_display(id, i_Menu, 0)
return PLUGIN_HANDLED
}
public vip_sub(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new name[32]
get_user_name(id, name, 31)
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 i_Key = str_to_num(s_Data)
switch(i_Key)
{
case 1:
{
if(Round1[id] == 0)
{
Round1[id] = 1
set_user_health(id, 150)
set_user_armor(id, 150)
ColorChat(0, GREEN, "[VIP]^x03 %s ^x01взял^x04 150 ARMOR, HP", name)
vip(id)
}
else
if(Round1[id] > 0)
{
ColorChat(id, RED, "[VIP]^x01 Подождите %d раунда", Round1[id])
}
}
case 2:
{
if(Round2[id] == 0)
{
Round2[id] = 1
cs_set_user_money(id, 16000)
ColorChat(0, GREEN, "[VIP]^x03 %s ^x01взял^x04 16000$", name)
vip(id)
}
else
if(Round2[id] > 0)
{
ColorChat(id, RED, "[VIP]^x01 Подождите %d раунда", Round2[id])
}
}
case 3:
{
if(Round3[id] == 0)
{
Round3[id] = 3
ExecuteHamB(Ham_CS_RoundRespawn,id)
ColorChat(0, GREEN, "[VIP]^x03 %s ^x04возродился", name)
vip(id)
}
else
if(Round3[id] > 0)
{
ColorChat(id, RED, "[VIP]^x01 Подождите %d раунда", Round3[id])
}
}
case 4:
{
if(Round4[id] == 0)
{
Round4[id] = 1
set_user_gravity(id, 0.4)
ColorChat(0, GREEN, "[VIP]^x03 %s ^x01взял^x04 гравитацию", name)
vip(id)
}
else
if(Round4[id] > 0)
{
ColorChat(id, RED, "[VIP]^x01 Подождите %d раунда", Round4[id])
}
}
case 5:
{
if(Round5[id] == 0)
{
Round5[id] = 1
set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,0)
ColorChat(0, GREEN, "[VIP]^x03 %s ^x01взял^x04 невидимость", name)
vip(id)
}
else
if(Round5[id] > 0)
{
ColorChat(id, RED, "[VIP]^x01 Подождите %d раунда", Round5[id])
}
}
case 6:
{
if(Round6[id] == 0)
{
Round6[id] = 5
player_spawn(id)
ColorChat(id, GREEN, "[VIP]^x01 Выберите игрока", name)
}
else
if(Round6[id] > 0)
{
ColorChat(id, RED, "[VIP]^x01 Подождите %d раунда", Round6[id])
}
}
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
public player_spawn(id)
{
// Сперва необходимо создать переменную для меню, с которой мы будем взаимодействовать в дальнейшем
new i_Menu = menu_create("\rВыберите кого возродить:", "player_spawn_sub")
// Необходимые переменные, которые понадобятся нам при выводе меню из игроков
new s_Players[32], i_Num, i_Player
// Переменные для хранения информации об игроках
new s_Name[32], s_Player[10]
// Получаем массив игроков
get_players(s_Players, i_Num)
// Цикл по всем игрокам
for (new i; i < i_Num; i++)
{
// Сохраняем текущего игрока в i_Player
i_Player = s_Players[i]
// Получаем имя и ID игрока
get_user_name(i_Player, s_Name, charsmax(s_Name))
num_to_str(i_Player, s_Player, charsmax(s_Player))
// Добавляем опцию по данному игроку
menu_additem(i_Menu, s_Name, s_Player, 0)
}
menu_setprop(i_Menu, MPROP_EXITNAME, "Выход")
menu_display(id, i_Menu, 0)
return PLUGIN_HANDLED
}
public player_spawn_sub(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)
// Получаем ID игрока, который был выбран в меню
new i_Player = str_to_num(s_Data)
new name[32]
get_user_name(id, name, charsmax(name))
new vname[32]
get_user_name(i_Player, vname, charsmax(vname))
if(!is_user_alive(i_Player))
{
ColorChat(0, GREEN, "[VIP]^x03 %s,^x01 возродил^x03 %s", name, vname)
ExecuteHamB(Ham_CS_RoundRespawn,i_Player)
}
else
{
ColorChat(id, RED, "[VIP]^x01 Данный игрок жив!")
player_spawn(id)
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
Отредактировал: TwinG, - 5.10.2015, 6:57