Acerca de natives/funciones del menú (Estilo nuevo)
#1
Buenas a todos.

Hace mucho no hago un Tutorial D:
Esta vez es acerca de los menús que son estilo nuevo, como funcionan su natives, sus variables, etc, etc, etceterita...

Una vez que ya hayan repasado el tutorial de [Anti] (Pueden mirar aquí) podemos repasar este tutorial para poder saber más acerca de los menús.

Como utilizar menu_additem:
Esta función sirve para agregar un Item al menú (Es medio obvio porque lo dice el nombre xS)
Para utilizar esta native es muy fácil como al crear un menú.
Código PHP:
menu_additem(iMenu"Hola mundo""1"); 
Esta native posee 5 parámetros, pero aquí usamos solo 3
El primer parámetro ocupamos la variable de nuestro menú cuando la creamos
El segundo parámetro ocupamos el texto de la opción
El tercer parámetro ocupamos el dato de la opción
El cuarto parámetro ocupamos el flag o acceso del menú sobre los admines
El quinto parámetro ocupa la función de "callback" que podemos hacer como una "función dentro de la opción", por así decirlo. Más adelante se explicará

Si tengo esto:
Código PHP:
menu_additem(iMenu"Hola mundo"_ADMIN_KICKmenu_makecallback("HolaMundo")); 
La diferencia con el otro ejemplo es que agregamos una "Restricción" que es que solo los usuarios con el acceso o flag KICK pueden acceder al menú y ubicamos la native menu_makecallback que es como dije antes, le damos una función a la opción, y lo hacemos de la siguiente manera
Código PHP:
public HolaMundo(idiMenuiItem)
    return 
is_user_alive(id) ? ITEM_ENABLED ITEM_DISABLED
Acá decimos si está vivo entonces tiene habilitado la opción, en cambio si NO está vivo entonces la opción queda deshabilitada para usarla
Por último vemos que en vez de "1" en el tercer parámetro, lo tenemos como un "Guión bajo", es porque no vamos a utilizar este parámetro.

Esta native también se vincula con la native menu_item_getinfo[(b] en los parámetros dos y tres, que más adelante voy a explicar bien
Como utilizar menu_addtext:
Para utilizar esta native siempre hay que tener al menos un [b]menu_additem para evitar que tiren logs y otros errores
Código PHP:
static szText[20];
formatex(szTextcharsmax(szText), "\wHola, no soy una opción \y:(");
menu_addtext(iMenuszText0); 
Como verán tiene 3 parámetros
El primer parámetro ocupa la variable del menú creado
El segundo parámetro ocupa el texto para mostrar
El tercer parámetros ocupamos el slot o lugar donde ubicaremos el texto

Para mostrar un texto debemos tener así el menú
Código PHP:
public ShowMenu_Test(id)
{
    static 
iMenuszText[20];
    
iMenu menu_create("TEST""HandleMenu_Test");

    
menu_additem(iMenu"Hola mundo");

    
menu_addblank(iMenu0); 
    
/** Esta native es simple, solo deja un espacio o renglón en blanco **/
    
formatex(szTextcharsmax(szText), "\wHola, no soy una opción \y:(");
    
menu_addtext(iMenuszText0);

    
menu_display(idiMenu);

La native menu_addtext no debe estar antes que menu_additem porque el menú no se mostrará y podría tirar logs :'(
Como utilizar menu_item_getinfo:
Esta native, solamente la ocupamos si es que utilizamos los parámetros 2 y 3 de la función menu_additem. Tiene varios parámetros que algunos son útiles y otros no tanto y ahora vamos a pasar a explicar.

Les voy a mostrar lo siguiente:
Código PHP:
static iAccessiCallbackszData[2], szItemName[32];
menu_item_getinfo(iMenuiItemiAccessszDatacharsmax(szData), szItemNamecharsmax(szItemName), iCallback); 
Tiene varios parámetros, que son los siguientes:
Primer parámetro: Ocupamos la variable del Handler del menú
Segundo parámetro: Ocupamos la variable del Handler de los Items seleccionados
Tercer y último parámetro: Ocupamos la variable iAccess y iCallback para ocuparla en la función, no sirve de mucho, pero se ocupa igual.
Cuarto y quinto parametro: Esto obtiene (Como un String) el 3er parámetro de la native menu_additem();
Sexto y septimo parámetro: Esto obtiene (Como un String) el 2do parámetro de la native menu_additem();

Esta native nos sirve, por ejemplo, cuando vamos a hacer un men´de jugadores. Así obtenemos el nombre y el dato (Que después se convierte en entero en el Handler) dentro de los 32 jugadores.
Les dejo un ejemplo:
Código PHP:
public ShowMenu_Players(id)
{
    static 
iMenuszName[32], szData[2], iMaxPlayersi;
    
iMenu menu_create("Menú de jugadores""Handler_Players");

    
iMaxPlayers get_maxplayers()
    for (
1<= iMaxPlayersi++) /** Loop para la cantidad máxima de jugadores **/
    
{
        if (!
is_user_connected(i)) /** Si no está conectado, no lo muestra **/
           
continue;
    
        
get_user_name(iszNamecharsmax(szName)); /** Obtenemos el nombre **/
        
num_to_str(iszDatacharsmax(szData)); /** Convertimos la variable szData como String **/
        
menu_additem(iMenuszNameszData); /** Lo mostramos en el menú **/
    
}

    
menu_setprop(iMenuMPROP_NEXTNAME"Siguiente");
    
menu_setprop(iMenuMPROP_BACKNAME"Atrás");
    
menu_setprop(iMenuMPROP_EXITNAME"Salir");
    
menu_display(idiMenu);
}

public 
Handler_Players(idiMenuiItem/** Recordemos que iMenu es el menú que mostramos y iItem son los items del menú **/
{
    if (
iItem == MENU_EXIT)
    {
        
menu_destroy(iMenu);
        return;
    }

    static 
iAccessszData[2], szName[32], iCallbackiSelect;
    
menu_item_getinfo(iMenuiItemiAccessszDatacharsmax(szData), szNamecharsmax(szName), iCallback); /** Obtenemos la posición y el nombre del jugador **/
    
iSelect str_to_num(szData);
    
    
client_print(idprint_center"Seleccionaste al jugador %s en la posición %d"szNameiSelect); /** Lo mostramos por pantalla **/

Por ahora eso es todo.. Y cualquier cosa me dicen y lo corrijo

Espero que le haya servido :3
Suerte a todos.
Free agent - Vendo plugins, mods o apps del foro IPB (Invision community)
Contactarme vía Discord >>> AtselTV#8202
Responder
#2
Muy buen tutorial CSAxel
Nunca supe para que era el menu_item_getinfo Whatdone

Deberia de agregar el aporte del Side^^ xd para los que no les gusta tocar mucho el pawn Ragestart
[Imagen: b_350_20_323957_202743_f19a15_111111.png]

Estudia siempre; el tiempo es oro, lo material se puede recuperar pero el tiempo no se puede recuperar.
(02/10/2016, 05:05 PM)meTaLiCroSS escribió: Siempre me gusta ayudar cuando alguien esta interesado realmente en ver que esta programando.
(08/08/2019, 05:32 PM)meTaLiCroSS escribió: grax x el dato cr4ck


Mis aportes

PLUGINS
MAPAS
Menú LANG [SF] Sistema de Frags
Say System (Admin Prefix)
Responder
#3
(26/01/2015, 09:44 PM)totopizza escribió: Muy buen tutorial CSAxel
Nunca supe para que era el menu_item_getinfo Whatdone

Deberia de agregar el aporte del Side^^ xd para los que no les gusta tocar mucho el pawn Ragestart
Es más preferible y fácil codearlo según por mi parte.
Free agent - Vendo plugins, mods o apps del foro IPB (Invision community)
Contactarme vía Discord >>> AtselTV#8202
Responder
#4
Buen Tutorial(?)/Guia(?) Proud
Estaria bueno que agregaras las explicaciones de las otras natives del nuevo sistema de menus como por ejemplo este
Código PHP:
native menu_item_setcmd(menuitem, const info[]); 
Aunque es tu desicion Whatever
Nuevamente buen Tutorial(?)/Guia(?) pacman
Heber[S]ourcE
Veteran Member
in
Desvirtue
Tatakae
Responder
#5
(26/01/2015, 11:04 PM)Heber[$]ource escribió: Buen Tutorial(?)/Guia(?) Proud
Estaria bueno que agregaras las explicaciones de las otras natives del nuevo sistema de menus como por ejemplo este
Código PHP:
native menu_item_setcmd(menuitem, const info[]); 
Aunque es tu desicion Whatever
Nuevamente buen Tutorial(?)/Guia(?) pacman
Gracias :3

Hay algunas funciones que no me se, pero próximamente agregaré para que puedan aplicarlas cuando las necesiten
Free agent - Vendo plugins, mods o apps del foro IPB (Invision community)
Contactarme vía Discord >>> AtselTV#8202
Responder
#6
Buen aporte, Me saque algunas dudas peroo me quedaron otras xD

EDIT: Anda a cagar HDP we xD ya lo hice gracias igual Guiño
Arroba
Responder
#7
Buena guía!

PD: Acerca de natives del menú (Estlo nuevo)
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)