[AMXMODX] Hacer tu propio menu. - PlayEasymx - 07-07-2017
hoy le vengo a traer un totorial, de como hacer tu propio menu principal.
-Existen 2 tipos de menues.
Menu Nuevo
Código PHP: menu_additem(mxe, "\wOpcion ", "1")
Menu Viejo
Código PHP: len += formatex(menu[len], sizeof menu - 1 - len, "\y[1]\wOpcion^n");
pero en peronal para mi es mejor el Nuevo.
EMPECEMOS
Abrimos el AmxmodxStudio..
-Agregaremos un comando con cual quieras abrir el menu.
Quedaria así
Código PHP: public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /mxemenu", "cmdmenux") // ACA LO AGREGE.. }
Ese es mi caso, tu puedes ponerle cualquier comando para abrir el menu, solo que "say" No tendras que borrarlo, o si quieres, tendras que poner ese comando en consola y no por say (Y)
-Ahora ya que pusismos el comando, donde dice cmdmenu, es donde /mxemenu, llamara esa funcion,
ahora lo que aremos el lo siguiente..
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("say /mxemenu", "cmdmenux") }
public cmdmenux(id) // Donde llama /mxemenu {
}
Listo, una vez puesto esa funcion, procederemos hacer el titulo del menu, y los items que, queremos agregarle.
Código PHP: public cmdmenux(id) { new mxemenu = menu_create("\rTitulo \ddel \ymenu", "hmenu") }
creamos el menu en la variable "mxemenu" con el titulo "Titulo del menu
que segun la opcion que elija el usuario va a llamar a la funcion 'hmenu'
COLORES PARA EL MENU:
\r = rojo
\y = amarillo
\d = Gris
\w = blanco
-Ahora procederemos a agregarle los items que queramos..
Código PHP: public cmdmenux(id) { new mxemenu = menu_create("\rTitulo \ddel \ymenu", "hmenu") menu_additem(mxemenu, "\rArmas", "1") menu_additem(mxemenu, "\wTop15", "2") menu_additem(mxemenu, "\dMis Estadisticas", "3")
menu_display(id, mxemenu, 0) }
En mi cao fueron 3 item, ustedes puedes agregar las que quieran..
Ahora bamos al "hmenu"
-les dejare todo el codigo completo de una vez..
Código PHP: public hmenu(id, mxemenu, item) //los parametros deben ir en este orden { if ( item == MENU_EXIT ) //si el item seleccionado es igual a '0'(Exit[Salir]) { menu_destroy(mxemenu) //destruimos el menu return PLUGIN_HANDLED; //y returnamos la funcion } switch(item) //hacemos un swicheo de los posibles resultados: { case 0: //en caso de que precione 1: le mandamos un msj { client_print(id, print_center, "HOLA SOY LA OPCION #1.") } case 1: //en caso de que precione 2: le mandamos otro msj { client_print(id, print_center, "HOLA SOY LA OPCION #2.") } case 2: //en caso de que precione 3: le mandamos otro msj { client_print(id, print_center, "HOLA SOY LA OPCION #3") } } return PLUGIN_HANDLED; // returnamos la funcion }
Ami me quedo asi..
Código PHP: /* Plugin generated by AMXX-Studio */
#include <amxmodx> #include <amxmisc> #include <cstrike> #include <fakemeta> #include <fun> #include <hamsandwich>
#define PLUGIN "New Plug-In" #define VERSION "1.0" #define AUTHOR "author"
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /mxemenu", "cmdmenux") }
public cmdmenux(id) { new mxemenu = menu_create("\rTitulo \ddel \ymenu", "hmenu") menu_additem(mxemenu, "\rVIDITA HP(100)", "1") menu_additem(mxemenu, "\rSmoke", "2") menu_additem(mxemenu, "\dMenu de admin", "3") menu_destroy(mxemenu) } public hmenu(id, mxemenu, item) { if ( item == MENU_EXIT ) { menu_destroy(mxemenu) return PLUGIN_HANDLED; } switch(item) { case 0: // OPCION 1.. VIDA { if(!is_user_alive(id)) // SI EL PLAYER ESTA MUERTO { client_print(id, print_chat, "ESTAS MUERTO PVTO >:V") return PLUGIN_HANDLED //Returnamos } if(cs_get_user_money(id) >= 2000){ // SI EL PLAYER TIENE 2000 de dinero set_user_health(id, get_user_health(id) + 100) // le damos 100 HP cs_set_user_money(id, cs_get_user_money(id) - 2000) // LE QUITAMOS 2000 de MONEY client_print(id, print_chat, "COMPRASTE VIDA!") // MANDAMOS UN MENSSAJE }else // SI NO TENE 2000 DE MONEY client_print(id, print_chat, "NO TE ALCANSA ALV ") // LE MANAMOS UN MENSAJE QUE NO LE ALCANSA } case 1: // OPCION 2.. DAR SMOKE { if(!is_user_alive(id)) // SI EL PLAYER ESTA MUERTO { client_print(id, print_chat, "ESTAS MUERTO PVTO >:V") return PLUGIN_HANDLED //Returnamos } if(cs_get_user_money(id) >= 4000){ // SI EL PLAYER TIENE 4000 de dinero give_item(id, "weapon_smokegrenade") // LE DAMOS LA BONBA cs_set_user_money(id, cs_get_user_money(id) - 4000) // QUITAMOS 4000 de money client_print(id, print_chat, "COMPRASTE SMOJE") }else // si no trae 4000 de MONEY client_print(id, print_chat, "NO TE ALCANSA") // MANDAMOS UN MSG QUE NO LE ALCANSA } case 2: // OPCION 3, Menu de admin { if(is_user_admin(id)){ // Checamos si el jugador es admin client_cmd(id, "amxmodmenu") // le abrimos este comando }else // si no e admin client_print(id, print_chat, "NO ERES ADMIN") } } return PLUGIN_HANDLED; }
Dudas, preguntas, comentalo!
RE: [AMXMODX] Hacer tu propio menu. - Fury - 07-07-2017
Buen tuto.
PD: 3 Warnings xd
RE: [AMXMODX] Hacer tu propio menu. - PlayEasymx - 07-07-2017
Se me olvido darle indenter xd
RE: [AMXMODX] Hacer tu propio menu. - ChrstopH - 07-08-2017
Con suerte eso compila y dudo que sirva, mejor explícales como hacer un menú con for
[spoiler]
te dejo la base, no lo probé pero seguro sirve.
Código PHP: /* Plugin generated by AMXX-Studio */
#include <amxmodx> #include <amxmisc>
enum eMenu{ iNombre[100], iTypo }; enum{ USER = 0, ADMIN_ORO, ADMIN_PLATA, ADMIN_STAFF };
new const iMenu[][eMenu] = { {"opcion 1", ADMIN_ORO} } new iTipo[ 33 ]; public plugin_init() { register_plugin("", "", "ChrstopH"); // Add your code here... register_clcmd("say /menu", "clcmd_Menu"); } public client_putinserver(index){ if(is_user_admin(index)){ if(get_user_flags(index) & ADMIN_CVAR) iTipo[ index ] = ADMIN_STAFF; if(get_user_flags(index) & ADMIN_BAN) iTipo[ index ] = ADMIN_PLATA; else iTipo[index ] = ADMIN_ORO; } else iTipo[ index ] = USER } public clcmd_Menu(index){ new menu = menu_create("titulo del menu", "handler_menu"); for(new i = 0; i < sizeof(iMenu); ++i){ if(iTipo[ index ] >= iMenu[i][iTypo]) menu_additem(menu, iMenu[i][iNombre]); else menu_additem(menu, iMenu[i][iNombre]); } menu_display(index, menu, 0) return PLUGIN_HANDLED; } public handler_menu(id, menu, item) { if (item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } if(iTipo[id] < iMenu[ item ][ iTypo ]) return PLUGIN_HANDLED; //mandas el switch return PLUGIN_HANDLED; }
[/spoiler]
PD; pesimo tutorial, a pesar de que copiaste y pegaste partes del tutorial de [Anti], no explicas como debería de ser, aparte hablas del estilo nuevo y viejo y no explicas el viejo.
|