Oops! Publicado 7 de agosto del 2016 Denunciar Compartir Publicado 7 de agosto del 2016 Este tuto sirve para hacer un menú simple. Explicaciones en el code. Spoiler #include <amxmodx> #include <fun> // este es el .inc que contiene la funcion para dar vida public plugin_init() { register_plugin("Simple Menu", "1.0", "Nadie") //registramos nombre, version y autor del plugin register_clcmd("say /menu", "mostrarmenu") // register_clcmd sirve para captar el momento en el que register_clcmd("say_team /menu", "mostrarmenu") // el usuario ejecuta algun comando; en este caso, // al ejecutar los comandos say o say_team, se llama a la // funcion "mostrarmenu" } public mostrarmenu(id) // aca definimos lo que va a hacer esta funcion { new Menu = menu_create("\y Título", "menuhandler") // creamos la variable "Menu" y le asignamos la funcion // menu_create(), donde el primer parametro es el titulo, y // el segundo es el nombre de la funcion que este menu va a // llamar (que va a pasar cuando se elija tal opcion) // para agregar opciones al menu, se utiliza menu_additem(), donde el 1er param es menu en cuestion, el 2do el nombre de la opcion, y el tercero no es necesario pero sirve como guia para saber cuantos items ya tenemos menu_additem(Menu, "\w+50 HP", "1") menu_additem(Menu, "\w+100 HP (solo adm)", "2", ADMIN_ADMIN) //en este caso se usa un 4to param, que es // para especificar el nivel de acceso (flag) que se requiere //para poder seleccionar la opcion. En este caso, solo //los admines tienen acceso menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL) //menu_setprop() sirve para asignarle una "propiedad" al menu, en //este caso una opcion de "Salir" menu_display(id, Menu, 0) //menu_display() se usa para finalmente mostrarle el menu al player //1er param: id del jugador, es decir un numero del 1 al 32 que lo identifica //2do param: variable del menu en cuestion //numero de pagina en la que se va a abrir el menu (al tener una sola pagina, no hace //falta incluirlo en este caso } public menuhandler(id, Menu, item) //esto va a espeficar que hace cada opcion { if( item == MENU_EXIT ) { menu_destroy( menu ); return PLUGIN_HANDLED; } switch(item) //esto va a analizar a que numero es igual el parametro "item" { case 0: //si item = 0 (seria la opcion #1, siempre se empieza por 0) { set_user_health(id, get_user_health(id) + 50) //set_user_health() establece la vida al player //1er param: id del player //2do param: cantidad de vida que le vamos a setear //en este caso, usamos get_user_health(id) para saber //cuanta vida tiene, para despues sumarle 50. } case 1: //ahora, si item = 1 (opcion #2)... { set_user_health(id, get_user_health(id) + 100) //lo mismo pero 100 en vez de 50 } } menu_destroy(Menu) //elija la opcion que elija, cerramos el menu "Menu" return PLUGIN_HANDLED //con esto se detiene la funcion "menuhandler" } // NOTAS: los colores para los menues son: - \y amarillo - \w blanco - \r rojo - \d gris shiobi reaccionó a esto 1 Enlace al comentario Compartir en otros sitios More sharing options...
Sky^^ Publicado 7 de agosto del 2016 Denunciar Compartir Publicado 7 de agosto del 2016 (editado) Creas la opción para cerrar el menú, pero no le haces uso en el Handler del menú. Por ejemplo podrías agregar así. case MENU_EXIT: { menu_destroy( menu ); return PLUGIN_HANDLED; } o if( item == MENU_EXIT ) { menu_destroy( menu ); return PLUGIN_HANDLED; } // Esto iría antes del switch.. Editado 7 de agosto del 2016 por SkylarK Faltó agregar algo Oops! reaccionó a esto 1 Enlace al comentario Compartir en otros sitios More sharing options...
shiobi Publicado 8 de agosto del 2016 Denunciar Compartir Publicado 8 de agosto del 2016 hace 8 minutos, SkylarK dijo: Creas la opción para cerrar el menú, pero no le haces uso en el Handler del menú. Por ejemplo podrías agregar así. case MENU_EXIT: { menu_destroy( menu ); return PLUGIN_HANDLED; } o if( item == MENU_EXIT ) { menu_destroy( menu ); return PLUGIN_HANDLED; } // Esto iría antes del switch.. Pero no es obligatorio, o sí? el destroy y return se van a llamar de todas formas, al no estar el MENU_EXIT dentro del switch (lo va a ignorar). Oops! reaccionó a esto 1 Enlace al comentario Compartir en otros sitios More sharing options...
Oops! Publicado 8 de agosto del 2016 Autor Denunciar Compartir Publicado 8 de agosto del 2016 Gracias por avisar. Ahora lo agrego para evitar confusiones. Igualmente también se podría directamente obviar lo de menu_setprop( ) ya que aunque no se incluya, la opción "Salir" se agrega sola por default... Enlace al comentario Compartir en otros sitios More sharing options...
Sky^^ Publicado 8 de agosto del 2016 Denunciar Compartir Publicado 8 de agosto del 2016 hace 16 horas, GiOVi dijo: Pero no es obligatorio, o sí? el destroy y return se van a llamar de todas formas, al no estar el MENU_EXIT dentro del switch (lo va a ignorar). Es más para evitar errores o bugs, jamás hice un menú sin darle función a setprop en el Handler.. Revisá acá: https://amxmodx-es.com/Thread-TUT-Tutorial-de-menues Enlace al comentario Compartir en otros sitios More sharing options...
Posts recomendados