Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Меню На М

Статус пользователя xopoIIIuu
сообщение 1.5.2015, 19:32
Сообщение #1


Стаж: 12 лет

Сообщений: 169
Благодарностей: 70
Полезность: < 0

Добрый день, помогите исправить ошибку.
Суть ошибки: Когда впервые заходит игрок и выбирает команду Наблюдателей то у него отображается по 1 игроку в каждой команде (Показывает что в кт-1 игрок, в т-1 игрок, в наблюдателях тоже один игрок). Проверялся на пустом сервере. Баг не критичен, но хотелось бы его убрать.

Исходник
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <cstrike>

new bool:DetectVIPMap[33];


new act_menu[33] = 1; // Т.е. Вкл.
new bool: g_bChange[33];

// 1 2 5 6
#define MENU_KEYS (1<<0 | 1<<1 | 1<<4 | 1<<5)

public plugin_init()
{
register_plugin("Choose Menu" , "1.0" , "unnamed" );

register_message(get_user_msgid("ShowMenu"), "MessageShowMenu");
register_message(get_user_msgid("VGUIMenu"), "MessageVGUIMenu");

register_menucmd(register_menuid("\wВыберите команду:"), MENU_KEYS, "Menu_Team");
register_clcmd("chooseteam", "OpenMenu");
//register_clcmd("say /menu", "OpenMenu");
//register_clcmd("menu", "OpenMenu");
//register_event("HLTV", "event_HLTV", "a", "1=0", "2=0");


new entity = -1;
if((engfunc(EngFunc_FindEntityByString, entity, "classname", "info_vip_start")) > 0)
{
DetectVIPMap[0] = true;
}
else
{
DetectVIPMap[0] = false;
}
}

public ShowMenu(id)
{
new iPlayers[32], iNumCT , iNumT, iNumSP;
get_players(iPlayers, iNumCT, "e", "CT" );
get_players(iPlayers, iNumT, "e", "TERRORIST");
get_players(iPlayers, iNumSP, "e", "SPECTATOR");
static szMenu[256]
static iLen;

iLen = formatex(szMenu, charsmax(szMenu), "\wВыберите команду:^n^n");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1].\wТеррористы [%d]^n", iNumT)
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2].\wКонтр-Террористы [%d]^n^n^n", iNumCT)
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5].\wАвто-Выбор^n^n")
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6].\wНаблюдатель [%d]^n", iNumSP)
show_menu(id, MENU_KEYS, szMenu, -1, "");
return PLUGIN_HANDLED;
}

public Menu_Team(id, key)
{
g_bChange[id] = true;
set_task(2.0, "Clear", id)


switch(++key)
{
case 1:
{
engclient_cmd(id, "jointeam", "1");
engclient_cmd(id, "joinclass", "1");
}
case 2:
{
engclient_cmd(id, "jointeam", "2");
engclient_cmd(id, "joinclass", "1");
}
case 5:
{
engclient_cmd(id, "jointeam", "5");
engclient_cmd(id, "joinclass", "1");
}
case 6:
{
engclient_cmd(id, "jointeam", "6");
engclient_cmd(id, "joinclass", "1");
}
}


return PLUGIN_HANDLED;
}

public Clear(id) g_bChange[id] = false;
public client_putinserver(id) g_bChange[id] = false;

public OpenMenu(id)
{

if(DetectVIPMap[0] == false)
{
menu_cancel(id);
TeamMenu(id);
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}

public MessageShowMenu(iMsgID, iDest, iReceiver)
{
if(g_bChange[iReceiver])
{
set_pdata_int(iReceiver, 205, 0);
return PLUGIN_HANDLED;
}

new const Team_Select[] = "#Team_Select";

new szMenu[sizeof(Team_Select)];
get_msg_arg_string(4, szMenu, charsmax(szMenu));

if(!equal(szMenu, Team_Select))
{
return PLUGIN_CONTINUE;
}

// reset CS menu code
set_pdata_int(iReceiver, 205, 0);

// show your own menu
TeamMenu(iReceiver);
return PLUGIN_HANDLED;
}

public MessageVGUIMenu(iMsgID, iDest, iReceiver)
{
if(g_bChange[iReceiver])
{
return PLUGIN_HANDLED;
}

if(get_msg_arg_int(1) != 2)
{
return PLUGIN_CONTINUE;
}

// show your own menu
TeamMenu(iReceiver);
return PLUGIN_HANDLED;
}

public TeamMenu(id)
{
if (act_menu[id] == 1)
{

ShowMenu(id);
act_menu[id] = 0;

}
else
{
new menu = menu_create("\dc-s.net.ua","func_menu");
menu_setprop( menu,MPROP_NUMBER_COLOR,"\w")
menu_additem( menu,"\rВыбрать команду")
menu_additem( menu,"\yМеню сервера^nновая строка")
menu_additem( menu,"\rПодпишись:^nновая строка^n")
menu_setprop( menu, MPROP_EXITNAME, "Выход");
menu_display(id, menu, 0);

}
act_menu[id] = 0;
return PLUGIN_HANDLED;
}


public func_menu(id, menu, key)
{
key++

if(key==1)
{
act_menu[id] = 1;
TeamMenu(id)
}

if(key==2) client_cmd(id,"amx_menu")

return PLUGIN_HANDLED;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: