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

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

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

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

Плагин выбора команды c автовыбором класса

Статус пользователя BaJIepbI4
сообщение 14.9.2014, 18:28
Сообщение #1


Стаж: 11 лет

Сообщений: 457
Благодарностей: 115
Полезность: 456

Всем привет. Помогите пожалуйста допилить плагин.
Изначально плагин не подразумевал автовыбор класса, поэтому я добавил Код:
engclient_cmd(id, "menuselect","5");
. В результате при выборе команды происходит атовыбор класса, но меню для выбора класса все равно показывается:




Скрытый текст
Код:
#include <amxmodx> 
#include <fakemeta>

new bool:ChooseTeam_Used[33];
new bool:DetectVIPMap[33];

public plugin_init()
{
register_plugin("Players Count in Team Menu" , "2.0" , "kramesa" );

register_message(get_user_msgid("ShowMenu"), "MenuTeam");
register_message(get_user_msgid("VGUIMenu"), "VGUITeam");

register_clcmd("chooseteam", "OpenMenu");

register_event("HLTV", "Event_HLTV_New_Round", "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 Event_HLTV_New_Round(id)
{
arrayset(ChooseTeam_Used, false, sizeof(ChooseTeam_Used));
}

public client_authorized(id)
{
ChooseTeam_Used[id] = false;
}

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

public MenuTeam(msg, des, rec)
{
if(DetectVIPMap[0] == false)
{
static const TeamSelect[] = "#Team_Select";

static sz_Menu[sizeof(TeamSelect)];

get_msg_arg_string(4, sz_Menu, charsmax(sz_Menu));

if(!equal( sz_Menu, TeamSelect))
{
return PLUGIN_CONTINUE;
}

set_pdata_int(rec, 205, 0);

TeamMenu(rec);

return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}

public VGUITeam(msg, des, rec)
{
if(get_msg_arg_int(1) != 2)
{
return PLUGIN_CONTINUE;
}

TeamMenu(rec);

return PLUGIN_HANDLED;
}

public TeamMenu(id)
{
if(ChooseTeam_Used[id] == true)
{
client_print(id, print_center, "Only 1 team change is allowed.");
return PLUGIN_HANDLED;
}

new iPlayers[32], iNumCT , iNumT;
get_players(iPlayers, iNumCT, "e", "CT" );
get_players(iPlayers, iNumT, "e", "TERRORIST");

new menu = menu_create("\ySelect a Team", "TeamMenu_Handler");

new szTittle[124];

formatex(szTittle, charsmax(szTittle), "\wТеррористы \r[%d]", iNumT);
menu_additem(menu, szTittle, "1")

formatex(szTittle, charsmax(szTittle), "\wКонтр-террористы \r[%d]^n", iNumCT);
menu_additem(menu, szTittle, "2")

menu_additem(menu, "\wАвыто-выбор", "3");
menu_additem(menu, "\wНаблюдатели", "4");

menu_setprop(menu, MPROP_EXITNAME, "Exit");

menu_display(id, menu, 0);

return PLUGIN_CONTINUE;
}

public TeamMenu_Handler(id, menu, item)
{
if(item == MENU_EXIT)
{
return PLUGIN_HANDLED;
}

new Name[64], Data[6], Access, Callback;

menu_item_getinfo(menu, item, Access, Data, 5, Name, 63, Callback);

static choose[4][2] = {"1","2","5","6"};
engclient_cmd(id, "jointeam", choose[Data[0] - '1']);
engclient_cmd(id, "menuselect","5");


ChooseTeam_Used[id] = true;

menu_destroy(menu);
return PLUGIN_HANDLED;
}



Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя BaJIepbI4
сообщение 15.9.2014, 14:37
Сообщение #2


Стаж: 11 лет

Сообщений: 457
Благодарностей: 115
Полезность: 456

Никак не могу самостоятельно решить эту проблему. Убрал пока автовыбор класса.
Скриптеры, помогите пожалуйста.

ps.gif Может у кого есть плагин выбора команды с автовыбором класса? Поделитесь пожалуйста.



Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 15.9.2014, 14:44
Сообщение #3


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

Villlenka, тут посмотри
Код:
#include <amxmodx>
#include <fakemeta>

#pragma semicolon 1
new bool:iGame[33], bool:g_biFirstSpawn[33];

public plugin_init()
{
register_plugin("Auto Join", "1.2.1", "neygomon");
register_clcmd("chooseteam", "ShowMenu");
register_menucmd(register_menuid("Team Menu"), MENU_KEY_0|MENU_KEY_1|MENU_KEY_2, "HandleMenu");
register_message(96, "MessageMenu");
register_message(114, "MessageMenu");
}

public client_putinserver(id) iGame[id] = g_biFirstSpawn[id] = false;

public ShowMenu(id)
{
new szMenu[512], iLen = formatex(szMenu, charsmax(szMenu), "\yВыберите действие^n^n"), iKeys = MENU_KEY_0;
if(iGame[id]) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y1. \dВойти в игру^n^n");
else
{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y1. \wВойти в игру^n^n");
iKeys |= MENU_KEY_1;
}
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y2. \wСмотреть за игрой^n^n^n");
iKeys |= MENU_KEY_2;
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y0. \wВыход");
return show_menu(id, iKeys, szMenu, -1, "Team Menu");
}

public HandleMenu(id, iKey)
{
switch(iKey)
{
case 0:
{
set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8));
set_team(id);
iGame[id] = true;
}
case 1:
{
user_kill(id, 1);
engclient_cmd(id, "jointeam", "6");
iGame[id] = false;
}
}
return PLUGIN_HANDLED;
}

public MessageMenu(iMsgId, iMsgDest, iReceiver)
{
static szArg4[20]; get_msg_arg_string(4, szArg4, charsmax(szArg4));
if(get_msg_arg_int(1) == 2 || (equal(szArg4, "#Team_Select", 12) || equal(szArg4, "#IG_Team_Select", 15) || equal(szArg4, "#IG_VIP_Team_Select", 19)))
{
set_pdata_int(iReceiver, 205, 0);
return ShowMenu(iReceiver);
}
return PLUGIN_CONTINUE;
}

set_team(id)
{
static iNumTT, iNumCT, players[32], iTeam;
get_players(players, iNumCT, "eh", "CT"); get_players(players, iNumTT, "eh", "TERRORIST");
set_msg_block(96|114, BLOCK_SET);
if(iNumCT >= iNumTT) { engclient_cmd(id, "jointeam", "1"); engclient_cmd(id, "joinclass", "1"); iTeam = 1; }
else if(iNumTT > iNumCT) { engclient_cmd(id, "jointeam", "2"); engclient_cmd(id, "joinclass", "7"); iTeam = 2; }
set_hudmessage(255, 0, 0, -1.0, 0.5, 0, 1.5, 3.0, 0.0, 0.0, -1);
show_hudmessage(id, "Ваша команда: %s", iTeam == 1 ? "Terrorists" : "Counter-Terrorists");
if(!g_biFirstSpawn[id])
{
set_task(2.0, "SpawnPlayer", id);
g_biFirstSpawn[id] = true;
}
}

public SpawnPlayer(id)
{
if(is_user_alive(id)) return;
dllfunc(DLLFunc_Spawn, id);
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя BaJIepbI4
сообщение 15.9.2014, 14:59
Сообщение #4


Стаж: 11 лет

Сообщений: 457
Благодарностей: 115
Полезность: 456

Цитата(Bloo @ 15.9.2014, 15:44) *
Villlenka, тут посмотри
Скрытый текст
Код:
#include <amxmodx>
#include <fakemeta>

#pragma semicolon 1
new bool:iGame[33], bool:g_biFirstSpawn[33];

public plugin_init()
{
register_plugin("Auto Join", "1.2.1", "neygomon");
register_clcmd("chooseteam", "ShowMenu");
register_menucmd(register_menuid("Team Menu"), MENU_KEY_0|MENU_KEY_1|MENU_KEY_2, "HandleMenu");
register_message(96, "MessageMenu");
register_message(114, "MessageMenu");
}

public client_putinserver(id) iGame[id] = g_biFirstSpawn[id] = false;

public ShowMenu(id)
{
new szMenu[512], iLen = formatex(szMenu, charsmax(szMenu), "\yВыберите действие^n^n"), iKeys = MENU_KEY_0;
if(iGame[id]) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y1. \dВойти в игру^n^n");
else
{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y1. \wВойти в игру^n^n");
iKeys |= MENU_KEY_1;
}
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y2. \wСмотреть за игрой^n^n^n");
iKeys |= MENU_KEY_2;
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y0. \wВыход");
return show_menu(id, iKeys, szMenu, -1, "Team Menu");
}

public HandleMenu(id, iKey)
{
switch(iKey)
{
case 0:
{
set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8));
set_team(id);
iGame[id] = true;
}
case 1:
{
user_kill(id, 1);
engclient_cmd(id, "jointeam", "6");
iGame[id] = false;
}
}
return PLUGIN_HANDLED;
}

public MessageMenu(iMsgId, iMsgDest, iReceiver)
{
static szArg4[20]; get_msg_arg_string(4, szArg4, charsmax(szArg4));
if(get_msg_arg_int(1) == 2 || (equal(szArg4, "#Team_Select", 12) || equal(szArg4, "#IG_Team_Select", 15) || equal(szArg4, "#IG_VIP_Team_Select", 19)))
{
set_pdata_int(iReceiver, 205, 0);
return ShowMenu(iReceiver);
}
return PLUGIN_CONTINUE;
}

set_team(id)
{
static iNumTT, iNumCT, players[32], iTeam;
get_players(players, iNumCT, "eh", "CT"); get_players(players, iNumTT, "eh", "TERRORIST");
set_msg_block(96|114, BLOCK_SET);
if(iNumCT >= iNumTT) { engclient_cmd(id, "jointeam", "1"); engclient_cmd(id, "joinclass", "1"); iTeam = 1; }
else if(iNumTT > iNumCT) { engclient_cmd(id, "jointeam", "2"); engclient_cmd(id, "joinclass", "7"); iTeam = 2; }
set_hudmessage(255, 0, 0, -1.0, 0.5, 0, 1.5, 3.0, 0.0, 0.0, -1);
show_hudmessage(id, "Ваша команда: %s", iTeam == 1 ? "Terrorists" : "Counter-Terrorists");
if(!g_biFirstSpawn[id])
{
set_task(2.0, "SpawnPlayer", id);
g_biFirstSpawn[id] = true;
}
}

public SpawnPlayer(id)
{
if(is_user_alive(id)) return;
dllfunc(DLLFunc_Spawn, id);
}


Этот плагин автоматом кидает за какую-то команду, не давая возможности ее выбрать, так?



Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 15.9.2014, 15:06
Сообщение #5


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

Villlenka, да, там автовыбор модели есть, я код для примера дал.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя BaJIepbI4
сообщение 16.9.2014, 7:02
Сообщение #6


Стаж: 11 лет

Сообщений: 457
Благодарностей: 115
Полезность: 456

Цитата(Bloo @ 15.9.2014, 16:06) *
Villlenka, да, там автовыбор модели есть, я код для примера дал.


К сожалению, я не настолько силен в коде... Иначе бы не обратился сюда за помощью pardon.gif



Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: