Как блокануть VGUI ClassMenu[РЕШЕНО] |
Здравствуйте, гость Вход | Регистрация
Наши новости:
|
|
Как блокануть VGUI ClassMenu[РЕШЕНО] |
ssx |
23.4.2017, 17:53
Сообщение
|
|
Суть такая, у меня на m (chooseteam) стоит менюшка сервера , в ней пункт 1 = Выбрать команду
VGUI ChooseTeam блокирую вот так: Код: register_message(get_user_msgid("VGUIMenu"), "MessageVGUIMenu"); Затем ShowMenu менюшка предлагает за кого играть ( КТ\ТР\Рандом\Спектаторы ) И вот при выборе за кого играть , если VGU Style то в окне предлагает выбрать класс игрока . Как убрать выбор класса игрока ? Сделать чтобы игроку рандомом класс присваивал плагин.
Отредактировал: ssx, - 23.4.2017, 18:08
[CS 1.6 Public] 78.152.169.100:27014
[CS 1.6 DM FFA] 78.152.169.100:27015 [CS 1.6 DM AIM] 78.152.169.100:27017 [Half-Life DM FFA] 78.152.169.100:27016 |
|
|
LeoBH |
23.4.2017, 19:59
Сообщение
|
|
Вот тут готовый вариант:
Team Join Management by Exolent // forums.alliedmods.net Часть кода, отвечающая именно за блок VGUI: Cкрытый текст Код:
Отредактировал: LeoBH, - 23.4.2017, 20:00
|
Поблагодарили 1 раз
|
|
SISA |
23.4.2017, 21:34
Сообщение
|
Поблагодарили 1 раз
|
|
ssx |
24.4.2017, 10:26
Сообщение
|
|
Таки не понял что нужно добавить в код чтобы автоматически выбирало класс игрока у VGUI Style
Вот сам код плагина: Код:
#include <amxmodx>
Отредактировал: ssx, - 24.4.2017, 10:26
[CS 1.6 Public] 78.152.169.100:27014
[CS 1.6 DM FFA] 78.152.169.100:27015 [CS 1.6 DM AIM] 78.152.169.100:27017 [Half-Life DM FFA] 78.152.169.100:27016 |
|
|
proff_q |
24.4.2017, 10:30
Сообщение
|
|
|
ssx |
24.4.2017, 11:21
Сообщение
|
|
Сделал так выбор ТР Код: set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8)); // снимаем лимит на смену команды Заходит нормально, спавнит игрока но окно VGUI выбора класса игрока продолжает висеть . При выборе любого класса окно исчезает и пишет что команда недоступна (класс то уже выбран) Как заблокировать отображение этого окна ? [CS 1.6 Public] 78.152.169.100:27014
[CS 1.6 DM FFA] 78.152.169.100:27015 [CS 1.6 DM AIM] 78.152.169.100:27017 [Half-Life DM FFA] 78.152.169.100:27016 |
|
|
SISA |
24.4.2017, 11:38
Сообщение
|
Код #include <amxmodx> #include <fakemeta> #include <hamsandwich> enum { SHOWTEAMSELECT = 3, PICKINGTEAM = 4 }; enum { Menu_ChooseTeam = 1 }; #define MENU_TEAM 2 #define IMMUNITY_ACCESS_LEVEL ADMIN_RCON new g_msgShowMenu, g_msgVGUIMenu; new HamHook:g_hamhook; #define m_iJoiningState 121 #define CBASEMONSTER_LINUX_XTRA_OFF 5 #define m_iMenu 205 /*=============================================================================== ================================================================ [Plugin Init] ================================================================================ ================================================================*/ public plugin_init() { register_plugin("Team Join Management", "1.0 Beta", "PRoSToTeM@"); // Think g_hamhook = RegisterHam(Ham_Player_PreThink, "player", "Player_PreThink_Post", 1); // Message IDs g_msgVGUIMenu = get_user_msgid("VGUIMenu"); g_msgShowMenu = get_user_msgid("ShowMenu"); // Message hooks register_message(g_msgVGUIMenu, "Message_Menu"); register_message(g_msgShowMenu, "Message_Menu"); // Client commands register_clcmd("jointeam", "ClCmdJoinTeam"); DisableHamForward(g_hamhook); } public ClCmdJoinTeam(const nClient) { if(get_user_flags(nClient) & IMMUNITY_ACCESS_LEVEL) return PLUGIN_CONTINUE; if (pev_valid(nClient) != 2) return PLUGIN_HANDLED_MAIN; if (get_pdata_int(nClient, m_iJoiningState, CBASEMONSTER_LINUX_XTRA_OFF) != 0) return PLUGIN_HANDLED_MAIN; return PLUGIN_CONTINUE; } public Message_Menu(const msg, const nDest, const nClient) { if(get_user_flags(nClient) & IMMUNITY_ACCESS_LEVEL) return PLUGIN_CONTINUE; if (msg == g_msgShowMenu) { new szMsg[13]; get_msg_arg_string(4, szMsg, charsmax(szMsg)); if (!equal(szMsg, "#Team_Select")) return PLUGIN_CONTINUE; } else { if (get_msg_arg_int(1) != MENU_TEAM || get_msg_arg_int(2) & MENU_KEY_0) return PLUGIN_CONTINUE; } // safe checks if (get_pdata_int(nClient, m_iMenu, CBASEMONSTER_LINUX_XTRA_OFF) == Menu_ChooseTeam || get_pdata_int(nClient, m_iJoiningState, CBASEMONSTER_LINUX_XTRA_OFF) != SHOWTEAMSELECT) return PLUGIN_CONTINUE; EnableHamForward(g_hamhook); return PLUGIN_HANDLED; } public Player_PreThink_Post(const nClient) { DisableHamForward(g_hamhook); new iOldShowMenuBlock = get_msg_block(g_msgShowMenu); new iOldVGUIMenuBlock = get_msg_block(g_msgVGUIMenu); set_msg_block(g_msgShowMenu, BLOCK_SET); set_msg_block(g_msgVGUIMenu, BLOCK_SET); engclient_cmd(nClient, "jointeam", "5"); engclient_cmd(nClient, "joinclass", "5"); set_msg_block(g_msgVGUIMenu, iOldVGUIMenuBlock); set_msg_block(g_msgShowMenu, iOldShowMenuBlock); } Или этот код юзать или портировать всю логику выбора команды из сервера. Всякие "Team Join Management by Exolent" и прочие поделки, можно даже не рассматривать. Они писались в эпоху отсутствия декомпила и сами авторы этих плагинов не особо понимали работу функции.
Отредактировал: SISA, - 24.4.2017, 11:45
|
|
Поблагодарили 1 раз
|
|
BaHeK |
24.4.2017, 17:34
Сообщение
|
|
Код:
26 - выбор класса за теров 27 - выбор класса за кт или наоборот, не помню уже
Отредактировал: BaHeK, - 24.4.2017, 17:35
Чуть-чуть нарушаю http://img-host.su/aoN1.png |
Поблагодарили 1 раз
|
|