Mensajes: 51
Temas: 17
Registro en: Jun 2017
Reputación:
0
Buenas tardes!
El plugin que quería era el siguiente.
Cuando el jugador entra en el servidor aparece un menú de elegir equipo de este género:
\r| # WARGAME-CM # |
\yElige tu equipo
\r1. \wEquipo azul
\r2. \wEquipo rojo
\r3. \wEspectador
Y durante el juego cuando se carga en el "M" aparece el mismo menú.
Alguien me puede ayudar por favor?
Mensajes: 688
Temas: 31
Registro en: Nov 2015
Reputación:
7
podes guiarte de este que hice anteriormente https://amxmodx-es.com/Thread-donde-pued...#pid132703
ahora mismo no estoy en mi pc, por lo que no te lo puedo cuadrar como quieres ni mucho menos probar, si no podes aguantate y mas tarde te lo cuadro si no se adelanta otro en hacerte el favor
Mensajes: 51
Temas: 17
Registro en: Jun 2017
Reputación:
0
Es todo bueno, pero cuando el equipo es elegido Yo quería elegir una clase automáticamente.
Por ejemplo, elegía terrorist y iba a quedar con la class leet o elegía counter-terrorist y se quedaba con la gign o entonces las class era elegidas automáticamente.
Porque voy a cambiar los modelos de las class.
Código PHP: #include <amxmodx> #include <amxmisc>
new const g_MsgArgs[][] = { "#Team_Select","#Team_Select_Spect","#IG_Team_Select","#IG_Team_Select_Spect" }
public plugin_init() { register_plugin("Select Team", "1.1", "Manu & mlibre") register_message(get_user_msgid("ShowMenu"),"message_showmenu") register_message(get_user_msgid("VGUIMenu"),"message_vguimenu") register_clcmd("chooseteam","cmd_block"), register_clcmd("jointeam","cmd_block") }
public message_showmenu(msgid,dest,id) { static szMsg[32];get_msg_arg_string(4,szMsg,charsmax(szMsg))
for(new i;i < sizeof g_MsgArgs;i++) { if(equal(szMsg,g_MsgArgs[i])) MainMenu(id) } }
public message_vguimenu(msgid,dest,id) { if(get_msg_arg_int(1) != 2) return PLUGIN_CONTINUE MainMenu(id); return PLUGIN_HANDLED }
public cmd_block(id) { MainMenu(id) return PLUGIN_HANDLED }
public client_connect(id) set_user_info(id, "_vgui_menus", "1")
public MainMenu(id) { new Item[ 51 ] new szText[ 500 char ]; formatex( szText, charsmax( szText ), "\r| # WARGAME-CM # |^n\yEscolhe a equipa");
new Menu = menu_create( szText, "sub_MainMenu" );
formatex(Item, charsmax(Item),"\wEquipa Vermelha") menu_additem(Menu, Item, "1") formatex(Item, charsmax(Item),"\wEquipa Azul^n") menu_additem(Menu, Item, "2") formatex(Item, charsmax(Item),"\wEspectador") menu_additem(Menu, Item, "3") menu_setprop( Menu, MPROP_EXITNAME, "\ySair" ); menu_setprop( Menu, MPROP_NEXTNAME, "\ySeguinte" ); menu_setprop( Menu, MPROP_BACKNAME, "\yAnterior" ); menu_setprop( Menu, MPROP_EXIT, MEXIT_ALL ); menu_display( id, Menu, 0 ); return PLUGIN_HANDLED }
public sub_MainMenu(id, Menu, item) { if( item == MENU_EXIT ) { menu_destroy(Menu) return PLUGIN_HANDLED; } switch( item ) { case 0: engclient_cmd(id, "jointeam", "1"); case 1: engclient_cmd(id, "jointeam", "2"); case 2: engclient_cmd(id, "jointeam", "6"); } return PLUGIN_HANDLED; }
[/code][/quote]
Mensajes: 688
Temas: 31
Registro en: Nov 2015
Reputación:
7
algo asi se auto elije la class
Código PHP: public team_select(id, key) { switch(key) { case 0: engclient_cmd(id, "jointeam", "1"), /*leet*/engclient_cmd(id, "joinclass", "2") case 1: engclient_cmd(id, "jointeam", "2"), /*gign*/engclient_cmd(id, "joinclass", "4") case 2..4: menu_teams(id) case 5: engclient_cmd(id, "jointeam", "6") case 6..8: menu_teams(id) case 9: { } } return PLUGIN_HANDLED }
Mensajes: 51
Temas: 17
Registro en: Jun 2017
Reputación:
0
Sigue apareciendo después de elegir el equipo: http://prntscr.com/foy604
¿Sabes cómo bloquear?
Mensajes: 1,902
Temas: 35
Registro en: Jan 2014
Reputación:
28
Explica un poco más el problema.
Yo hacia tiempo ya pregunte por algo similar, quizá te pueda servir -> Bloquear 'menuselect' [SOLUCIONADO]
.
Mensajes: 684
Temas: 36
Registro en: Oct 2016
Reputación:
2
Código PHP: public MainMenu(id) { new Item[ 51 ] new szText[ 500 char ]; formatex( szText, charsmax( szText ), "\r| # WARGAME-CM # |^n\yEscolhe a equipa");
new Menu = menu_create( szText, "sub_MainMenu" );
formatex(Item, charsmax(Item),"\wEquipa Vermelha") menu_additem(Menu, Item, "1") formatex(Item, charsmax(Item),"\wEquipa Azul^n") menu_additem(Menu, Item, "2") formatex(Item, charsmax(Item),"\wEspectador") menu_additem(Menu, Item, "3") menu_setprop( Menu, MPROP_EXITNAME, "\ySair" ); menu_setprop( Menu, MPROP_NEXTNAME, "\ySeguinte" ); menu_setprop( Menu, MPROP_BACKNAME, "\yAnterior" ); menu_setprop( Menu, MPROP_EXIT, MEXIT_ALL ); menu_display( id, Menu, 0 ); return PLUGIN_HANDLED }
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Código PHP: public MainMenu(id) { new Menu = menu_create( "\r| # WARGAME-CM # |^n\yEscolhe a equipa", "sub_MainMenu" );
menu_additem(Menu, "\wEquipa Vermelha", "1") menu_additem(Menu, "\wEquipa Azul", "2") menu_additem(Menu,"\wEspectador", "3") menu_setprop( Menu, MPROP_EXITNAME, "\ySalir" ); menu_display( id, Menu, 0 ); }
Qué mierda crear un 'Siguiente', 'Anterior' Para 3 opciones... incluso lo de la variable 'Char'... madre mía ...
Java, Mysql, PHP, Python and more.
Mensajes: 51
Temas: 17
Registro en: Jun 2017
Reputación:
0
(27/06/2017, 08:02 PM)Chamo. escribió: Explica un poco más el problema.
Yo hacia tiempo ya pregunte por algo similar, quizá te pueda servir -> Bloquear 'menuselect' [SOLUCIONADO]
.
Voy a tratar de explicarme mejor.
Cuando entro en el servidor o carga en el "M" aparece este menú:
Listo hasta aquí está todo bien.
Después de elegir uno de los equipos (t o ct) aparece esto:
No quería que apareciera esto de elegir la class.
Quisiera que cuando se escoja el equipo el jugador entrara inmediatamente en el juego y la clase se elija automáticamente.
ps: Soy portugués. Lo siento si ha mal traducido.
Mensajes: 1,902
Temas: 35
Registro en: Jan 2014
Reputación:
28
28/06/2017, 03:55 PM
(Última modificación: 28/06/2017, 03:58 PM por Chamo..)
Creo que falto un " RETURN..." en esta parte:
Código PHP: public message_showmenu(msgid,dest,id) { static szMsg[32];get_msg_arg_string(4,szMsg,charsmax(szMsg))
for (new i; i < sizeof g_MsgArgs; i++) { if (equal(szMsg, g_MsgArgs[i])) { MainMenu(id) return PLUGIN_HANDLED; // Este } }
return PLUGIN_CONTINUE; }
Pero ahora que recuerdo, eso no arregla el problema, pero si evita otras cosas por lo que recuerdo.
Prueba esto:
Código PHP: new PI_UserMsgID[33];
public message_showmenu(msgid,dest,id) { static szMsg[32];get_msg_arg_string(4,szMsg,charsmax(szMsg))
for(new i;i < sizeof g_MsgArgs;i++) { if(equal(szMsg,g_MsgArgs[i])) { MainMenu(id) PI_UserMsgID[id] = msgid return PLUGIN_HANDLED; } } return PLUGIN_CONTINUE; }
public message_vguimenu(msgid,dest,id) { if(get_msg_arg_int(1) != 2) return PLUGIN_CONTINUE MainMenu(id); PI_UserMsgID[id] = msgid return PLUGIN_HANDLED }
// Y la parte donde asignas el equipo: "engclient_cmd(id, "jointeam", "1");" >>>>>
// Estos son solo ejemplos.
EnterPlayer(id) // Para equipo y clase al azar EnterPlayer(id, "1") // Para equipo T y clase al azar EnterPlayer(id, "2", "2") // Para equipo CT y clase #2 (No recuerdo el nombre)
EnterPlayer(const Client, const SZ_Team[] = "5", const SZ_Class[] = "5") { static MsgBlockType;
MsgBlockType = get_msg_block(PI_UserMsgID[Client])
set_msg_block(PI_UserMsgID[Client], BLOCK_SET) // Como verán, anteriormente había obtenido el ID del mensaje VGUI/ShowMenu
engclient_cmd(Client, "jointeam", SZ_Team) engclient_cmd(Client, "joinclass", SZ_Class)
set_msg_block(PI_UserMsgID[Client], MsgBlockType)
//SetUserStatus(Client, STATUS_ONLINE) }
Mensajes: 51
Temas: 17
Registro en: Jun 2017
Reputación:
0
Si me pongo así aparece en la misma escena para elegir la clase.
Código PHP: public team_select(id, key) { switch(key) { case 0: engclient_cmd(id, "jointeam", "1"), /*leet*/engclient_cmd(id, "joinclass", "2") case 1: engclient_cmd(id, "jointeam", "2"), /*gign*/engclient_cmd(id, "joinclass", "4") case 2..4: menu_teams(id) case 5: engclient_cmd(id, "jointeam", "6") case 6..8: menu_teams(id) case 9: { } } return PLUGIN_HANDLED }
Mensajes: 684
Temas: 36
Registro en: Oct 2016
Reputación:
2
28/06/2017, 03:58 PM
(Última modificación: 28/06/2017, 03:59 PM por Dieguito.)
Sencillamente porque sólo elijes 'Terrorista' y no cuál...
@Mlibree te pasó el código correcto, y acá te dejo esa línea específica
Código PHP: engclient_cmd(id, "jointeam", "1") >>> engclient_cmd(id, "jointeam", "1"), /*leet*/engclient_cmd(id, "joinclass", "2")
(27/06/2017, 04:52 PM)mlibre escribió: algo asi se auto elije la class
Código PHP: public team_select(id, key) { switch(key) { case 0: engclient_cmd(id, "jointeam", "1"), /*leet*/engclient_cmd(id, "joinclass", "2") case 1: engclient_cmd(id, "jointeam", "2"), /*gign*/engclient_cmd(id, "joinclass", "4") case 2..4: menu_teams(id) case 5: engclient_cmd(id, "jointeam", "6") case 6..8: menu_teams(id) case 9: { } } return PLUGIN_HANDLED }
Java, Mysql, PHP, Python and more.
Mensajes: 51
Temas: 17
Registro en: Jun 2017
Reputación:
0
Estoy teniendo este error:
Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright © 1997-2013 ITB CompuPhase, AMX Mod X Team
Error: Undefined symbol "PVars" on line 129
Warning: Expression has no effect on line 129
Error: Expected token: ";", but found "]" on line 129
Error: Invalid expression, assumed zero on line 129
Error: Too many error messages on one line on line 129
Compilation aborted.
4 Errors.
Could not locate output file C:\Users\Utilizador\Desktop\Plugins\MenuWarGame2.amx (compile failed).
Código PHP: #include < amxmodx > #include < amxmisc > #include < cstrike > #include < colorchat >
new AI_UserMsgID[33];
new const g_MsgArgs[][] = { "#Team_Select","#Team_Select_Spect","#IG_Team_Select","#IG_Team_Select_Spect" }
public plugin_init() { register_plugin("Select Team", "1.1", "Manu & mlibre") register_message(get_user_msgid("ShowMenu"),"message_showmenu") register_message(get_user_msgid("VGUIMenu"),"message_vguimenu") register_clcmd("chooseteam","cmd_block"), register_clcmd("jointeam","cmd_block") register_menu( "MainMenu", 1023, "sub_MainMenu" ); } /* public message_showmenu(msgid,dest,id) { static szMsg[32];get_msg_arg_string(4,szMsg,charsmax(szMsg))
for(new i;i < sizeof g_MsgArgs;i++) { if(equal(szMsg,g_MsgArgs[i])) MainMenu(id) } }
public message_vguimenu(msgid,dest,id) { if(get_msg_arg_int(1) != 2) return PLUGIN_CONTINUE MainMenu(id); return PLUGIN_HANDLED } */ public message_showmenu(msgid,dest,id) { static szMsg[32];get_msg_arg_string(4,szMsg,charsmax(szMsg))
for(new i;i < sizeof g_MsgArgs;i++) { if(equal(szMsg,g_MsgArgs[i])) { MainMenu(id) AI_UserMsgID[id] = msgid return PLUGIN_HANDLED; } } return PLUGIN_CONTINUE; }
public message_vguimenu(msgid,dest,id) { if(get_msg_arg_int(1) != 2) return PLUGIN_CONTINUE MainMenu(id); AI_UserMsgID[id] = msgid return PLUGIN_HANDLED }
public cmd_block(id) { MainMenu(id) return PLUGIN_HANDLED }
public client_connect(id) set_user_info(id, "_vgui_menus", "1")
public MainMenu(id) { new szT,szCT for(new id=1; id<=32; id++) { if(is_user_connected(id)) { switch(cs_get_user_team(id)) { case CS_TEAM_T: { szT++ } case CS_TEAM_CT: { szCT++ } } } } static szMenu[ 512 ], iLen, iKeys
iKeys = MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_5 | MENU_KEY_6 | MENU_KEY_0 iLen = formatex( szMenu, charsmax( szMenu ), "\r| # WARGAME-CM # |^n\yEscolhe a equipa^n^n"); iLen += formatex( szMenu[ iLen ], 511 - iLen, "\r1. \wEquipa Vermelha \r[%i]^n",szT ); iLen += formatex( szMenu[ iLen ], 511 - iLen, "\r2. \wEquipa Azul \r[%i]^n^n",szCT ); iLen += formatex( szMenu[ iLen ], 511 - iLen, "\r5. \wEscolha Automatica^n" ); iLen += formatex( szMenu[ iLen ], 511 - iLen, "\r6. \wEspectador^n^n^n" ); iLen += formatex( szMenu[ iLen ], 511 - iLen, "\r0. \yMenu Principal" ); show_menu( id, iKeys, szMenu, -1, "MainMenu" ); } public sub_MainMenu( id, iKey ) { switch( ( iKey + 1 ) % 10 ) { case 1: { //engclient_cmd(id, "jointeam", "1") EnterPlayer(id, "1", "1") ColorChat(id, RED,"^4[^1-^4WG^1-^4] ^1- Entraste na ^4Equipa ^3Vermelha^1! Bom Jogo!") } case 2: { //engclient_cmd(id, "jointeam", "2") EnterPlayer(id, "2", "2") ColorChat(id, BLUE,"^4[^1-^4WG^1-^4] ^1- Entraste na ^4Equipa ^3Azul^1! Bom Jogo!") } case 5: { //engclient_cmd(id, "jointeam", "5"); EnterPlayer(id, "5", "1") } case 6: { //engclient_cmd(id, "jointeam", "6"); EnterPlayer(id, "6") } } return PLUGIN_HANDLED; }
EnterPlayer(const Client, const SZ_Team[] = "5", const SZ_Class[] = "5") { static MsgBlockType;
MsgBlockType = get_msg_block(PVars[Client][P_MSG_JOIN_ID])
set_msg_block(AI_UserMsgID[id], BLOCK_SET) // Como verán, anteriormente había obtenido el ID del mensaje VGUI/ShowMenu
engclient_cmd(Client, "jointeam", SZ_Team) engclient_cmd(Client, "joinclass", SZ_Class)
set_msg_block(AI_UserMsgID[id], MsgBlockType)
//SetUserStatus(Client, STATUS_ONLINE) }
Mensajes: 1,902
Temas: 35
Registro en: Jan 2014
Reputación:
28
28/06/2017, 04:12 PM
(Última modificación: 28/06/2017, 04:13 PM por Chamo..)
(28/06/2017, 03:58 PM)Dieguito escribió: Sencillamente porque sólo elijes 'Terrorista' y no cuál...
@Mlibree te pasó el código correcto, y acá te dejo esa línea específica
Código PHP: engclient_cmd(id, "jointeam", "1") >>> engclient_cmd(id, "jointeam", "1"), /*leet*/engclient_cmd(id, "joinclass", "2")
(27/06/2017, 04:52 PM)mlibre escribió: algo asi se auto elije la class
Código PHP: public team_select(id, key) { switch(key) { case 0: engclient_cmd(id, "jointeam", "1"), /*leet*/engclient_cmd(id, "joinclass", "2") case 1: engclient_cmd(id, "jointeam", "2"), /*gign*/engclient_cmd(id, "joinclass", "4") case 2..4: menu_teams(id) case 5: engclient_cmd(id, "jointeam", "6") case 6..8: menu_teams(id) case 9: { } } return PLUGIN_HANDLED }
Código PHP: /* Plugin generated by AMXX-Studio */
#include <amxmodx> #include <amxmisc>
#define PLUGIN "New Plug-In" #define VERSION "1.0" #define AUTHOR "author"
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("test", "test") }
public test(const I_Player) { engclient_cmd(I_Player, "jointeam", "1"), /*leet*/engclient_cmd(I_Player, "joinclass", "2") /* Y obvio es lo mismo que esto: engclient_cmd(id, "jointeam", "1") engclient_cmd(id, "joinclass", "2") Por por ciertas razones, dejo el original */ }
Si te da prueba eso con VGUIMenu y ShowMenu ( setinfo _vgui_menus 1/0 respectivamente).
Y luego me dices los resultados .
@MonSter .RUCA error mio como siempre por escribir rápido:
Código PHP: EnterPlayer(const Client, const SZ_Team[] = "5", const SZ_Class[] = "5") { static MsgBlockType;
MsgBlockType = get_msg_block(PVars[Client][P_MSG_JOIN_ID])
set_msg_block(AI_UserMsgID[id], BLOCK_SET) // Como verán, anteriormente había obtenido el ID del mensaje VGUI/ShowMenu
engclient_cmd(Client, "jointeam", SZ_Team) engclient_cmd(Client, "joinclass", SZ_Class)
set_msg_block(AI_UserMsgID[id], MsgBlockType)
//SetUserStatus(Client, STATUS_ONLINE) }
>>>>>>>>>>
Código PHP: EnterPlayer(const Client, const SZ_Team[] = "5", const SZ_Class[] = "5") { static MsgBlockType;
MsgBlockType = get_msg_block(AI_UserMsgID[Client])
set_msg_block(AI_UserMsgID[Client], BLOCK_SET) // Como verán, anteriormente había obtenido el ID del mensaje VGUI/ShowMenu
engclient_cmd(Client, "jointeam", SZ_Team) engclient_cmd(Client, "joinclass", SZ_Class)
set_msg_block(AI_UserMsgID[Client], MsgBlockType)
//SetUserStatus(Client, STATUS_ONLINE) }
Mensajes: 51
Temas: 17
Registro en: Jun 2017
Reputación:
0
¡Funcionó!
Muchas gracias @Chamo.
|