Jump to content
Sign in to follow this  
totopizza

[TUT] Tutorial completo de menues

Recommended Posts

Nombre: Tutorial de menues

Author: [Anti]

Imágenes: No hay..

Fuente: [TUT] Tutorial de menues

 

Resto del tutorial:

 

Les dejo un tuto de como hacer varios tipos de menu y otras herramientas.

Tienen que tener una base en scripting de pawn.

 

Creo que esta bastante bien explicado, cualquier duda consulten.

 

Sistema Nuevo

#include <amxmodx>

public plugin_init()
{
   register_plugin("Menu Basico", "1.0", "[Anti]");
   register_clcmd( "say /menu", "cmdMenu" );
}

public cmdMenu(id)
{
   new gMenu = menu_create("\rHola soy un menu", "handlerMenu")
   //creamos el menu en la variable 'Menu' con el titulo 'Hola soy un menu'
   //que segun la opcion que elija el usuario va a llamar a la funcion 'handlerMenu'

   menu_additem(gMenu, "\wOpcion #1", "1")    //Blanco = \w
   menu_additem(gMenu, "\dOpcion #2", "2")    //Transparente = \d
   menu_additem(gMenu, "\yOpcion #3", "3")    //Amarillo = \y
                                           //Rojo = \r
   //adderimos opciones al menu 'Menu' y le ponemos el numero de opcion

   menu_display(id, gMenu, 0)
   //aca le mostramos el menu 'Menu' al 'id'(indice de player) que queramos.
   //el '0' es la pagina del menu que le vamos a mostrar.
}

public handlerMenu(id, menu, item)        //los parametros deben ir en este orden
{
   if ( item == MENU_EXIT )    //si el item seleccionado es igual a '0'(Exit[salir])
   {
       menu_destroy(menu)        //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 MUAJAJAJA(?.")
       }
   }
   return PLUGIN_HANDLED;    // returnamos la funcion...
} 

 

Sistema Viejo

#include <amxmodx>
#include <amxmisc>

new KEYSMENU = MENU_KEY_0 | MENU_KEY_1 | MENU_KEY_2;

public plugin_init()
{
   register_plugin("Menu con Len", "1.0", "[Anti]");
   register_clcmd( "say /menu", "cmdOtroMenu");
   register_menu("Menu", KEYSMENU, "HandMenu");
   //registramos el menu 'Menu', con las teclas KEYSMENU
   //y el handler que al que va a llamar 'HandMenu'
}

public cmdOtroMenu(id)
{
   new menu[100], len;
   // 'menu' es donde se va a alojar el string del menu,
   // en este caso le damos 99 celdas para sus caracteres

   len = 0;

   len += formatex(menu[len], sizeof menu - 1 - len, "\r Menu:^n");
   len += formatex(menu[len], sizeof menu - 1 - len, "\y[1]\wOpcion #1^n");
   len += formatex(menu[len], sizeof menu - 1 - len, "\y[2]\wOpcion #2^n^n");
   len += formatex(menu[len], sizeof menu - 1 - len, "\r[0]\wSalir");

   show_menu(id, KEYSMENU, menu, -1, "Menu");
   //mostramos el menu al 'id' deseado, con las teclas ya definidas, el menu 'menu'
   //el timpo es lo que tarda el menu en cerrarse en este caso -1 que es infinito, como lo registre en el init 'Menu')
}

public HandMenu(id, keys, menu)        //los parametros deben ir en este orden
{
   switch(keys)    //hacemos un swicheo de los posibles resultados:
   {
       case 0:    client_print(id, print_chat, "HOLA SOY LA OPCION #1");        //en caso de que precione 1: le mostramos el menu 'gMenu', en la pagina '0'
       case 1:    client_print(id, print_center, "HOLA SOY LA OPCION #2");    //en caso de que precione 2: le mandamos un msj
       case 9:    menu_destroy(menu)        //en caso de que precione 0: le destruimos el menu...
   }
} 

 

2 Menús 1 Handled

#include <amxmodx>

public plugin_init()
{
   register_plugin( "2 Menus 1 Handled", "1.0", "[Anti]" );
   register_clcmd("say /menu", "cmdMenu");
}

public cmdMenu(id)
{
   if ( get_user_team(id) == 1 )        //Si es del team TT.
       Menu_TT(id);                    //Mandamos al Menu TT.
   else if ( get_user_team(id) == 2 )    //Si es del team CT.
       Menu_CT(id);                    //Mandamos al Menu TT.
}

public Menu_TT(id)
{
   new menu = menu_create("\rMenu TT:", "handMenu");

   menu_additem(menu, "Opcion 1#", "T");
   menu_additem(menu, "Opcion 2#", "T");
   menu_additem(menu, "Opcion 3#", "T");

   menu_display(id, menu, 0);            //Mostramos el menu
}

public Menu_CT(id)
{
   new menu = menu_create("\rMenu CT:", "handMenu");

   menu_additem(menu, "Opcion 1#", "C");
   menu_additem(menu, "Opcion 2#", "C");
   menu_additem(menu, "Opcion 3#", "C");

   menu_display(id, menu, 0);            //Mostramos el menu
}

public handMenu(id, menu, item)
{
   if ( item == MENU_EXIT )            //si el item seleccionado es igual a '0'(Exit[salir])
   {
       menu_destroy( menu );            //destruimos el menu.
       return PLUGIN_HANDLED;            //Returnamos la funcion.
   }

   new szData[2];
   new item_access, item_callback;
   menu_item_getinfo( menu, item, item_access, szData,charsmax( szData ), _, _, item_callback );
   //obtenemos informacion del menu y el item elegido.

   switch( szData[0] )        //Vemos la letra que hay en la primera celda de szData
   {
       case 'T':            //En este caso si es "T".
       {
           switch( item )    //Switch del Menu TT
           {
               case 0:    {}// Opcion 1# TT's
               case 1:    {}// Opcion 2# TT's
               case 2:    {}// Opcion 3# TT's
           }
       }
       case 'C':            //En este caso si es "C".
       {
           switch( item )    //Switch del Menu CT
           {
               case 0:    {}// Opcion 1# CT's
               case 1:    {}// Opcion 2# CT's
               case 2:    {}// Opcion 3# CT's
           }
       }
   }
   menu_destroy(menu);        //Destruimos el menu
   return PLUGIN_HANDLED;    //Returnamos el Handled
} 

 

Diferentes natives(solo para el sistema nuevo)

//Establece propiedades en un menu. Propiedades:
#define MPROP_PERPAGE        /* Numero de items en cada pagina (default 7)*/
#define MPROP_BACKNAME        /* Nombre del boton "Back" */
#define MPROP_NEXTNAME        /* Nombre del boton "Next" */
#define MPROP_EXITNAME        /* Nombre del boton "Exit" */
#define MPROP_TITLE            /* Establece el titulo de un menu */
#define MPROP_EXIT            /* Establece la funcion del exit con MEXIT_NEVER(no aparece la opcion exit) y MEXIT_ALL(aparece la opcion exit[default]) */
#define MPROP_NOCOLORS        /* Establece si los colores son automaticos */
#define MPROP_NUMBER_COLOR    /* Establece el color de los numeros(default rojo) */

menu_setprop(menu, prop, ...);


//Cancela el menu de un player.
menu_cancel(player);

//Adiere una linea de texto al menu.
menu_addtext(menu, const text[], slot=1);

//Adiere un espacio en blanco al menu.
menu_addblank(menu, slot=1);

//Destruye el menu.
menu_destroy(menu);

//Establece un texto para un item.
menu_item_setname(menu, item, const name[]);

//Obtiene el indice de item del menu y la pagina indicada(devuelve menor a 0 si es un item especial como MENU_EXIT)
menu_find_id(menu, page, key);

//Muestra a una player un menu.
menu_display(id, menu, page=0);

//Obtiene la cantidad de items en un menu.
menu_items(menu);

//Obtiene la cantidad de paginas en un menu.
menu_pages(menu); 

Share this post


Link to post
Share on other sites

Guest
This topic is now closed to further replies.
Sign in to follow this  

×
×
  • Create New...