Choose Menu, Меню сервера нажав M |
Здравствуйте, гость Вход | Регистрация
Наши новости:
|
|
Choose Menu, Меню сервера нажав M |
user.gameover.user |
8.11.2014, 6:36
Сообщение
|
Довольно известный плагин открытия меню сервера нажав кнопку M
Не требуется бинд клавиши. Нет ограничения на количество открытия меню за один раунд Позиции меню выбора команды как в стандартном choosemenu ,а именно: 1 Террорист 2 Спецназ 5 Автовыбор 6 Спектаторы Нет меню выбора класа модели. Choose Menu Код #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; get_players(iPlayers, iNumCT, "e", "CT" ); get_players(iPlayers, iNumT, "e", "TERRORIST"); static szMenu[256] static iLen; iLen = formatex(szMenu, charsmax(szMenu), "\wВыберите команду:^n^n"); formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\w1. \rКрасные \r[%d]^n\w2. Белые \r[%d]^n\w5. \wАвто-выбор^n\w6. \dСерый", iNumT, iNumCT); 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) { /*if(g_bChange[id] && !is_user_admin(id)) { act_menu[id] = 0; client_print(id, print_chat, "Only One time in round!") return PLUGIN_HANDLED; }*/ 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 } */ Плагин предоставляется как есть,настраивается в исходнике который под спойлером ^n = новая строка У меня данный плагин использую в связке с auto_join_on_connect.sma Код /* AMX Mod X * Auto Join on Connect * * (c) Copyright 2007 by VEN * * This file is provided as is (no warranties) * * DESCRIPTION * Plugin allow to players automatically join team/team&class on connect. * * CVARS * ajc_team (0: OFF, N: team index, 5: auto team, default: 5) - controls team join * ajc_class (0: OFF, N: class index, 5: auto class, default: 5) - controls class join * ajc_imm (0: OFF, 1: ON, default: 1) - don't affect on immuned players (ON/OFF) * * CREDITS * Major__ - inquiry */ #include <amxmodx> #define PLUGIN_NAME "Auto Join on Connect" #define PLUGIN_VERSION "0.1" #define PLUGIN_AUTHOR "VEN" #define IMMUNITY_ACCESS_LEVEL ADMIN_IMMUNITY #define AUTO_TEAM_JOIN_DELAY 0.5 #define TEAM_SELECT_VGUI_MENU_ID 2 new g_pcvar_team new g_pcvar_class new g_pcvar_imm public plugin_init() { register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR) register_message(get_user_msgid("ShowMenu"), "message_show_menu") register_message(get_user_msgid("VGUIMenu"), "message_vgui_menu") g_pcvar_team = register_cvar("ajc_team", "5") g_pcvar_class = register_cvar("ajc_class", "5") g_pcvar_imm = register_cvar("ajc_imm", "1") } public message_show_menu(msgid, dest, id) { if (!should_autojoin(id)) return PLUGIN_CONTINUE static team_select[] = "#Team_Select" static menu_text_code[sizeof team_select] get_msg_arg_string(4, menu_text_code, sizeof menu_text_code - 1) if (!equal(menu_text_code, team_select)) return PLUGIN_CONTINUE set_force_team_join_task(id, msgid) return PLUGIN_HANDLED } public message_vgui_menu(msgid, dest, id) { if (get_msg_arg_int(1) != TEAM_SELECT_VGUI_MENU_ID || !should_autojoin(id)) return PLUGIN_CONTINUE set_force_team_join_task(id, msgid) return PLUGIN_HANDLED } bool:should_autojoin(id) { return (get_pcvar_num(g_pcvar_team) && !get_user_team(id) && !task_exists(id) && (!get_pcvar_num(g_pcvar_imm) || !(get_user_flags(id) & IMMUNITY_ACCESS_LEVEL))) } set_force_team_join_task(id, menu_msgid) { static param_menu_msgid[2] param_menu_msgid[0] = menu_msgid set_task(AUTO_TEAM_JOIN_DELAY, "task_force_team_join", id, param_menu_msgid, sizeof param_menu_msgid) } public task_force_team_join(menu_msgid[], id) { if (get_user_team(id)) return static team[2], class[2] get_pcvar_string(g_pcvar_team, team, sizeof team - 1) get_pcvar_string(g_pcvar_class, class, sizeof class - 1) force_team_join(id, menu_msgid[0], team, class) } stock force_team_join(id, menu_msgid, /* const */ team[] = "5", /* const */ class[] = "0") { static jointeam[] = "jointeam" if (class[0] == '0') { engclient_cmd(id, jointeam, team) return } static msg_block, joinclass[] = "joinclass" msg_block = get_msg_block(menu_msgid) set_msg_block(menu_msgid, BLOCK_SET) engclient_cmd(id, jointeam, team) engclient_cmd(id, joinclass, class) set_msg_block(menu_msgid, msg_block) } unlimited_teamchanges.sma Код /* Copyleft 2014 @ HamletEagle Plugin Theard: https://forums.alliedmods.net/showthread.php?t=241943 Unlimited team changes is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Furiens; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ChangeLog: V 1.0: +Initial Release V 1.1: + Added jointeam command V 1.2: + Arranged the code + Added plugin_enabled cvar V 1.3: + Rewrite all code from scratch */ #include < amxmodx > #include < fakemeta > #define PLUGIN "Unlimited Team Changes" #define VERSION "1.3" #define AUTHOR "HamletEagle" #define BITS 1<<8 #define ADMIN_ACCES ADMIN_KICK const m_bHasChangeTeamThisRound = 125 const XO_PLAYER = 5 enum _: eCvarsData { cvar_OnlyAdmins, cvar_Enable } new g_iCvars[ eCvarsData ] new g_iCachedCvars[ eCvarsData ] new _pfnClientCommand public plugin_init( ) { register_plugin ( .plugin_name = PLUGIN, .version = VERSION, .author = AUTHOR ) g_iCvars[ cvar_OnlyAdmins ] = register_cvar( "only_admins_can_use", "1" ) /* 0 - all players 1 - only admins with specified flag */ g_iCvars[ cvar_Enable ] = register_cvar( "plugin_enabled", "1" ) /* 0 - plugin disabled 1 - plugin enabled */ _pfnClientCommand = register_forward( FM_ClientCommand, "pfnClientCommand", false ) register_event( "HLTV", "Event_NewRound", "a", "1=0", "2=0" ) register_clcmd( "chooseteam", "ClientCommand_ChTeam" ) register_clcmd( "jointeam" , "ClientCommand_ChTeam" ) } public plugin_cfg( ) { UTIL_CacheCvars( ) } public pfnClientCommand( id ) { //We need to catch the exact moment, so the cached cvar is not reliable here if( get_pcvar_num( g_iCvars[ cvar_Enable ] ) == 0 ) { log_amx( "Plugin paused by cvar" ) unregister_forward( FM_ClientCommand, _pfnClientCommand, false ) pause( "a" ) } } public Event_NewRound( ) { UTIL_CacheCvars( ) } public ClientCommand_ChTeam( id ) { switch( g_iCachedCvars[ cvar_OnlyAdmins ] ) { case 0 : { set_pdata_int( id, m_bHasChangeTeamThisRound , get_pdata_int( id, m_bHasChangeTeamThisRound, XO_PLAYER ) & ~BITS, XO_PLAYER ) } case 1 : { if( get_user_flags( id ) & ADMIN_ACCES ) { set_pdata_int( id, m_bHasChangeTeamThisRound , get_pdata_int( id, m_bHasChangeTeamThisRound, XO_PLAYER ) & ~BITS, XO_PLAYER ) } } default: { return 0 } } return 0 } UTIL_CacheCvars( ) { for( new i; i < sizeof g_iCvars; i++ ) { g_iCachedCvars[ i ] = get_pcvar_num( g_iCvars[ i ] ) } } menufront.amxx
Отредактировал: user.gameover.user, - 8.11.2014, 6:52
|
|
Поблагодарили 1 раз
|
|
ekkko |
1.3.2015, 15:28
Сообщение
|
Спасибо))
|
|
|
|
rGame |
2.3.2015, 16:00
Сообщение
|
Возможно сделать что бы при входе показывало Выбор команды , а на М было меню сервера?
|
|
|
|
ThePhoenix |
2.3.2015, 16:20
Сообщение
|
|
|
|
|
rGame |
2.3.2015, 16:22
Сообщение
|
|
|
ThePhoenix |
2.3.2015, 16:25
Сообщение
|
|
|
|
|