Добрый день. Писал кодик, ну правда не совсем, где-то брал с других форумов. Короче менюшка с выбором команд. В конце концов вроде бы получил желаемый результат, но вот не задача. Переходя за команду я все равно как бы spectator, вот только не летать, ничего не могу, а после окончания раунда возрождаюсь и всё по новой. Вот такой бред короче...
Вот код:
Код:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
public plugin_init()
{
register_message(get_user_msgid("VGUIMenu"), "msg_vguimenu")
register_message(get_user_msgid("ShowMenu"), "msg_showmenu")
register_clcmd( "chooseteam", "ClCmd__ChooseTeam" ) ;
register_clcmd("say /Tteam","set_Tteam")
register_clcmd("say /CTteam","set_CTteam")
}
public set_Tteam(id){
cs_set_user_team(id,CS_TEAM_T)
}
public set_CTteam(id){
cs_set_user_team(id,CS_TEAM_CT)
}
new ct12,t12;
public Balance(id)
{
new players = get_playersnum();
for(new g; g <= players; g++){
if(cs_get_user_team(id) == CS_TEAM_CT)
ct12 = ct12+1;
else
if(cs_get_user_team(id) == CS_TEAM_T)
t12 = t12+1;
else
if(cs_get_user_team(id) == CS_TEAM_SPECTATOR)
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
public JoinMenu(id)
{
new JoinMenu = menu_create("\rJoin menu", "handle_join")
menu_additem(JoinMenu,"Prisioners","1",0)
menu_additem(JoinMenu,"Security","2",0)
menu_addblank(JoinMenu, 1)
menu_additem(JoinMenu,"Spectator","3",0)
menu_setprop(JoinMenu, MPROP_EXIT, MEXIT_ALL)
menu_display(id,JoinMenu,0)
}
public MainMenu(id)
{
new MainMenu = menu_create("\Main menu","handle_menu")
menu_additem(MainMenu,"ResetScore", "1",0)
menu_additem(MainMenu,"Game Menu", "2",0)
menu_additem(MainMenu, "Choose team", "3",0)
menu_setprop(MainMenu,MPROP_EXIT,MEXIT_ALL)
menu_display(id,MainMenu,0)
}
public handle_join(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 Key1 = str_to_num(s_Data)
switch(Key1)
{
case 1:
{
set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8));
engclient_cmd(id, "jointeam", "1");
}
case 2:
{
set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8));
engclient_cmd(id, "jointeam", "2");
}
case 3:
{
user_kill(id, 1);
engclient_cmd(id, "jointeam", "6");
}
}
return PLUGIN_HANDLED
}
public ClCmd__ChooseTeam( iPlayer )
{
JoinMenu(iPlayer) ; // Открываешь своё меню.
return PLUGIN_HANDLED ; // Блокируем стандартное.
}
public msg_vguimenu(msgid, dest, id)
{
new msgarg1 = get_msg_arg_int(1)
if(msgarg1 == 2 || msgarg1 == 26 || msgarg1 == 27)
return PLUGIN_HANDLED
return PLUGIN_CONTINUE
}
public msg_showmenu(msgid, dest, id)
{
new arg[32]
get_msg_arg_string(4, arg, charsmax(arg))
if(equali(arg, "#Team_Select_Spect") || equali(arg, "#IG_Team_Select") || equali(arg, "#IG_Team_Select_Spect") || equali(arg, "#Terrorist_Select") || equali(arg, "#CT_Select"))
return PLUGIN_HANDLED
return PLUGIN_CONTINUE
}