[Tutorial] Como hacer una lista (menъ) bien detallado
#1

Hola mi nombre es Edugta, hoy le enseсare como hacer una lista o menъ

Bien comenzamos


1є Paso
Haciendo el menъ



pawn Код:
ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[])
ShowPlayerDialog es el cуdigo para hacer el menъ


playerid es el ID de la persona que podrб ver el menъ (se sugiere dejarlo en playerid para que todos los jugadores puedan acceder al menъ)

dialogid es la id que tendrб este dialogo, Ej: ID nъmero 69

style es el estilo en el que se mostrara el menъ, como haremos un menъ escogeremos DIALOG_STYLE_LIST

caption[] es el nombre que le pondremos al menъ, el nombre aparecerб en la esquina superior del dialogo

info[] es el texto que aparecerб en nuestro menъ

button1[] es la primera opciуn

button2[] es la segunda opciуn


Comencemos a editar!

Haremos que el menъ aparezca con un comando


pawn Код:
public OnPlayerCommandText(playerid,cmdtext[])
public OnPlayerComandText(playerid,cmdtext)

OnPlayerComandText(playerid,cmdtext) es el codigo especial para hacer que al escribir /menu apareca el menъ

TODOS los Server tienen OnPlayerComandText



Ahora hagamos lo siguiente:

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/menu", cmdtext, true, 10) == 0)
    {
    ShowPlayerDialog(playerid, 69, DIALOG_STYLE_LIST, "Prueba", "Pistola 9MM\nPistola 9MM Silenciada", "Aceptar", "Cancelar");
    }
}
Listo, ya el menъ aparecerб al escribir /menu !

2є Paso
Hacer que el menъ haga una acciуn


їComo que una acciуn?

Hace al clickear una opciуn del menъ haga un acciуn

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
OnDialogResponse es el cуdigo que hace que al clickear una opciуn haga una acciуn

playerid es el ID de la persona que lo va a ver, dejemoslo en playerid

response es la opciуn que clickeamos, osea Aceptar o Cancelar

listitem es el objeto que seleccionaremos, como 9MM (ID 0) o 9MM silenciada (ID 1)

inputtext no importa, estamos usando DIALOG_STYLE_LIST, este parametro solo se usa cuando usamos DIALOG_STYLE_INPUT...

Volvamos a ShowPlayerDialog, y miren la segunda opciуn, que es la ID del menъ, la ID es 69

Entonces hagamos lo siguiente: (en este caso usaremos switch que es mбs fбcil)

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(dialogid == 69)
    {
        case 1:
        {
            if(!response)
            {
                SendClientMessage(playerid, 0xFF0000FF, "Has cancelado"); //Esto dirб si apretar cancelar
                return 1;
            }
 
            switch(listitem)
            {
                case 0: //los items SIEMPRE comienzan de 0 (ejemplo: 0, 1, 2, 3...)
                {
                GivePlayerWeapon(playerid, 22, 500); //Esto nos darб una 9MM con 500 balas (la cantidad de balas se puede cambiar)
                }
                case 1:
                {
                GivePlayerWeapon(playerid, 23, 500); //Lo mismo pero nos darб una 9MM con silenciador
                }                
 
            }
 
        }
       
 
    }
    return 0;
Despuйs de todo nos darб todo esto:

pawn Код:
#include <a_samp>

public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/menu", cmdtext, true, 10) == 0)
    {
    ShowPlayerDialog(playerid, 69, DIALOG_STYLE_LIST, "Prueba", "Pistola 9MM\nPistola 9MM Silenciada", "Aceptar", "Cancelar");
    }
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(dialogid == 69)
    {
        case 1:
        {
            if(!response)
            {
                SendClientMessage(playerid, 0xFF0000FF, "Has cancelado"); //Esto dirб si apretar cancelar
                return 1;
            }
 
            switch(listitem)
            {
                case 0: //los items SIEMPRE comienzan de 0 (ejemplo: 0, 1, 2, 3...)
                {
                GivePlayerWeapon(playerid, 22, 500); //Esto nos darб una 9MM con 500 balas (la cantidad de balas se puede cambiar)
                }
                case 1:
                {
                GivePlayerWeapon(playerid, 23, 500); //Lo mismo pero nos darб una 9MM con silenciador
                }                
 
            }
 
        }
       
 
    }
    return 0;
}
Bang bang! a disfrutar de tus armas!!

Espero que los haya ayudado!

Reply
#2

Bueno xD yo tampoco antes sabia y pues aorendi con unos empujenes q me dieron y leyendo otro cuadro bueno aprendi leyendo el cuadro xd igual me aclareste algo xD aunq yo se hacer menus en menus y adentro otros menus xD muy bueno para el q no sabe!
Reply
#3

Quote:
Originally Posted by jeanpierrevera
Посмотреть сообщение
Bueno xD yo tampoco antes sabia y pues aorendi con unos empujenes q me dieron y leyendo otro cuadro bueno aprendi leyendo el cuadro xd igual me aclareste algo xD aunq yo se hacer menus en menus y adentro otros menus xD muy bueno para el q no sabe!
ЎGracias!

Reply
#4

Quote:
Originally Posted by Edugta.
Посмотреть сообщение
ЎGracias!

xd de nada bueno haber si me animo yo tambien a hacer grandes tutoriales y scripts para q a los q me dicen noob -.- por andar preguntando PARA aclarles q para algo pregunta uno xD
Reply
#5

Quote:
Originally Posted by jeanpierrevera
Посмотреть сообщение
xd de nada bueno haber si me animo yo tambien a hacer grandes tutoriales y scripts para q a los q me dicen noob -.- por andar preguntando PARA aclarles q para algo pregunta uno xD

ЎEstoy seguro de que harбs un excelente trabajo!

Si tienes dudas dime y te ayudo

Nunca pares, almenos no como yo lo ise...
Reply
#6

Sуlo te corrijo 2 errores, son mнnimos, pero pueden marcar error en algunos.

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/menu", cmdtext, true , 5) == 0)//porquй 10? si el numero de carбcteres es 5
    {
    ShowPlayerDialog(playerid, 69, DIALOG_STYLE_LIST, "Prueba", "Pistola 9MM\nPistola 9MM Silenciada", "Aceptar", "Cancelar");
    return 1;//te falto un return xd
    }
   return 0; //En caso de que el comando cierre el callback, de lo contrario no modificarlo
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(dialogid == 69)
    {
        case 1:
        {
            if(!response)
            {
                SendClientMessage(playerid, 0xFF0000FF, "Has cancelado"); //Esto dirб si apretar cancelar
                return 1;
            }
 
            switch(listitem)
            {
                case 0: //los items SIEMPRE comienzan de 0 (ejemplo: 0, 1, 2, 3...)
                {
                GivePlayerWeapon(playerid, 22, 500); //Esto nos darб una 9MM con 500 balas (la cantidad de balas se puede cambiar)
                }
                case 1:
                {
                GivePlayerWeapon(playerid, 23, 500); //Lo mismo pero nos darб una 9MM con silenciador
                }                
 
            }
 
        }
       
 
    }
    return 0;
}//Te falto una llave, esto podrнa marcar error en todo lo que continue debajo del script
Bien hecho, suerte!

P.D Mejoras y tienes inspiraciуn (:
Reply
#7

Buen tutorial dentro de todo, sуlo te hago unas notitas:

Podrнas agregar como usar defines con los dialog id, para hacer las cosas mбs fбciles.
Y... no se llaman "menъs" son "diбlogos" :P
Reply
#8

Buen tuto, creo q ya habia unos sobre dialogos pero en fin, nunca esta de mas un tuto

Mejoras: switch para 1 sola comparacion, es mas lento q if.

Nota: los menus son otra cosa, esos son dialogos.
Reply
#9

Estб bueno man. Se agradece.
Reply
#10

Bien!
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)