Ir al contenido
  • Crear una cuenta

[TUT] Crear menú simple


Oops!

Posts recomendados

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

 

 

  • Me gusta 1
Enlace al comentario
Compartir en otros sitios

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 por SkylarK
Faltó agregar algo
  • Me gusta 1
Enlace al comentario
Compartir en otros sitios

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).

  • Me gusta 1
Enlace al comentario
Compartir en otros sitios

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

Invitado
Este tema se encuentra cerrado a nuevas respuestas.
  • Navegando Recientemente   0 miembros

    • No hay usuarios registrados viendo esta página
×
×
  • Crear nuevo...