Ir al contenido
  • Crear una cuenta

[TUT] Crear menú simple


Posts recomendados

Publicado

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
Publicado (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 por SkylarK
Faltó agregar algo
  • Me gusta 1
Publicado
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
Publicado

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

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

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