Hola y bienvenidos a este nuevo tutorial, en el que vamos a mostrar como usar la funcion ShowPlayerDialog. Ahora vamos a procesar con el tutorial, presta mucha antencion.
Para crear un dialogo con ShowPlayerDialog, lo primero que tenemos que hacer es definir el ID del dialogo en defines, justo como yo ago a continuacion.
Estilos de dialogos:
Una vez que ayamos definido los dialogos con su id respectiva vamos a la siguente linea:
¿Como ir a esa linea?
Ahora procesamos a la creacion del sistema de cada dialogo, y para eso creamos algo asi dentro de OnDialogResponse:
Una vez que tengamos todo el script de los dialogos definidos anteriormente, procesamos a integrar el script dentro de nuestra funcion de OnDialogResponse, y eso se hace de la siguiente manera:
Ahora, vamos a crear los ShowPlayerDialog's y a ingresarlos en un comando para poder mostrar dicho dialogo. Creare un comando para cada Dialogo definido anteriormente.
Comando de dialogo "DIALOG_LISTA"
Comando de dialogo "DIALOG_MSGBOX"
Comando de dialogo "DIALOG_INPUT"
Comando de dialogo "DIALOG_PASSWORD"
Para finalizar nuesto dialogo, ingresamos nuestro comando la siguiente funcion:
¿Como ir a esa funcion/linea?
Cuando estemos en el public de OnPlayerCommandText ponemos nuestos comandos dentro, debe quedar algo asi:
Y ya con eso finalizamos nuesto dialogo. Muchas gracias por mirar este tutorial, espero que te alla servido y que allas aprendido como usar los ShowPlayerDialog.
Cualquier duda aqui estoi para cualquier cosa.
Creditos del tutorial:
Para crear un dialogo con ShowPlayerDialog, lo primero que tenemos que hacer es definir el ID del dialogo en defines, justo como yo ago a continuacion.
- Código:
#define DIALOG_LISTA 1 //este sera un dialogo estilo lista
#define DIALOG_MSGBOX 2 //este sera un mensaje en dialogo
#define DIALOG_INPUT 3 //este sera un dialog input para ingresar algo
#define DIALOG_PASSWORD 4 //este sera un dialog de contraseñas
Estilos de dialogos:
DIALOG_STYLE_MSGBOX
DIALOG_STYLE_INPUT
DIALOG_STYLE_LIST
DIALOG_STYLE_PASSWORD
Una vez que ayamos definido los dialogos con su id respectiva vamos a la siguente linea:
- Código:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
¿Como ir a esa linea?
Presiona las teclas Control+F y ingresa el public mostrado anteriormente.
Ahora procesamos a la creacion del sistema de cada dialogo, y para eso creamos algo asi dentro de OnDialogResponse:
- Código:
if(dialogid == DIALOG_LISTA)
{
if(response)
{
if(listitem == 0) //primer item de la lista
{
SendClientMessage(playerid, -1, "Item lista 1");
}
else if(listitem == 1) //segundo item de la lista
{
SendClientMessage(playerid, -1, "Item lista 2");
}
return 1;
}
else return SendClientMessage(playerid, -1, "Mensaje cerrar en DIALOG_LISTA");
}
if(dialogid == DIALOG_MSGBOX)
{
if(response) //si presiona el primero boton del dialogo "Si presiona la tecla ENTER"
{
SendClientMessage(playerid, -1, "Tecla ENTER o BOTON DERECHA");
return 1;
}
else // si presiona el segundo u otro boton del dialogo "Si presiona la tecla ESC"
{
SendClientMessage(playerid, -1, "Tecla ENTER o BOTON IZQUIERDA");
return 1;
}
}
if(dialogid == DIALOG_INPUT)
{
if(response)
{
if(strlen(inputtext)) //verificamos que el area de texto no este vacio
{
SendClientMessage(playerid, -1, "El area de texto no esta vacio");
return 1;
}
else // si el area de texto esta vacio mostrar
{
SendClientMessage(playerid, -1, "El area de texto si esta vacio");
return 1;
}
}
else return SendClientMessage(playerid, -1, "Mensaje cerrar en DIALOG_INPUT");
}
if(dialogid == DIALOG_PASSWORD)
{
if(response)
{
if(strlen(inputtext)) //verificamos que el area de texto no este vacio
{
SendClientMessage(playerid, -1, "El area de password no esta vacio");
return 1;
}
else // si el area de texto esta vacio mostrar
{
SendClientMessage(playerid, -1, "El area de password si esta vacio");
return 1;
}
}
else return SendClientMessage(playerid, -1, "Mensaje cerrar en DIALOG_PASSWORD");
}
Una vez que tengamos todo el script de los dialogos definidos anteriormente, procesamos a integrar el script dentro de nuestra funcion de OnDialogResponse, y eso se hace de la siguiente manera:
- Código:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_LISTA)
{
if(response)
{
if(listitem == 0) //primer item de la lista
{
SendClientMessage(playerid, -1, "Item lista 1");
}
else if(listitem == 1) //segundo item de la lista
{
SendClientMessage(playerid, -1, "Item lista 2");
}
return 1;
}
else return SendClientMessage(playerid, -1, "Mensaje cerrar en DIALOG_LISTA");
}
if(dialogid == DIALOG_MSGBOX)
{
if(response) //si presiona el primero boton del dialogo "Si presiona la tecla ENTER"
{
SendClientMessage(playerid, -1, "Tecla ENTER o BOTON DERECHA");
return 1;
}
else // si presiona el segundo u otro boton del dialogo "Si presiona la tecla ESC"
{
SendClientMessage(playerid, -1, "Tecla ENTER o BOTON IZQUIERDA");
return 1;
}
}
if(dialogid == DIALOG_INPUT)
{
if(response)
{
if(strlen(inputtext)) //verificamos que el area de texto no este vacio
{
SendClientMessage(playerid, -1, "El area de texto no esta vacio");
return 1;
}
else // si el area de texto esta vacio mostrar
{
SendClientMessage(playerid, -1, "El area de texto si esta vacio");
return 1;
}
}
else return SendClientMessage(playerid, -1, "Mensaje cerrar en DIALOG_INPUT");
}
if(dialogid == DIALOG_PASSWORD)
{
if(response)
{
if(strlen(inputtext)) //verificamos que el area de texto no este vacio
{
SendClientMessage(playerid, -1, "El area de password no esta vacio");
return 1;
}
else // si el area de texto esta vacio mostrar
{
SendClientMessage(playerid, -1, "El area de password si esta vacio");
return 1;
}
}
else return SendClientMessage(playerid, -1, "Mensaje cerrar en DIALOG_PASSWORD");
}
return 1;
}
Ahora, vamos a crear los ShowPlayerDialog's y a ingresarlos en un comando para poder mostrar dicho dialogo. Creare un comando para cada Dialogo definido anteriormente.
Comando de dialogo "DIALOG_LISTA"
- Código:
if (strcmp("/dialogolista", cmdtext, true, 10) == 0)
{
ShowPlayerDialog(playerid, DIALOG_LISTA, DIALOG_STYLE_LIST, "Estilo lista", " > Item 1\n > Item 2", "DER", "IZQ");
return 1;
}
Comando de dialogo "DIALOG_MSGBOX"
- Código:
if (strcmp("/dialogomensaje", cmdtext, true, 10) == 0)
{
ShowPlayerDialog(playerid, DIALOG_MSGBOX, DIALOG_STYLE_MSGBOX, "Estilo mensaje", "aqui ingresas el mensaje", "DER", "IZQ");
return 1;
}
Comando de dialogo "DIALOG_INPUT"
- Código:
if (strcmp("/dialogoinput", cmdtext, true, 10) == 0)
{
ShowPlayerDialog(playerid, DIALOG_INPUT, DIALOG_STYLE_INPUT, "Estilo input", "aqui ingresas el mensaje", "DER", "IZQ");
return 1;
}
Comando de dialogo "DIALOG_PASSWORD"
- Código:
if (strcmp("/dialogopassword", cmdtext, true, 10) == 0)
{
ShowPlayerDialog(playerid, DIALOG_PASSWORD, DIALOG_STYLE_PASSWORD, "Estilo password", "aqui ingresas el mensaje", "DER", "IZQ");
return 1;
}
Para finalizar nuesto dialogo, ingresamos nuestro comando la siguiente funcion:
- Código:
public OnPlayerCommandText(playerid, cmdtext[])
¿Como ir a esa funcion/linea?
Presiona las teclas Control+F y ingresa el public mostrado anteriormente.
Cuando estemos en el public de OnPlayerCommandText ponemos nuestos comandos dentro, debe quedar algo asi:
- Código:
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/dialogolista", cmdtext, true, 10) == 0)
{
ShowPlayerDialog(playerid, DIALOG_LISTA, DIALOG_STYLE_LIST, "Estilo lista", " > Item 1\n > Item 2", "DER", "IZQ");
return 1;
}
if (strcmp("/dialogomensaje", cmdtext, true, 10) == 0)
{
ShowPlayerDialog(playerid, DIALOG_MSGBOX, DIALOG_STYLE_MSGBOX, "Estilo mensaje", "aqui ingresas el mensaje", "DER", "IZQ");
return 1;
}
if (strcmp("/dialogoinput", cmdtext, true, 10) == 0)
{
ShowPlayerDialog(playerid, DIALOG_INPUT, DIALOG_STYLE_INPUT, "Estilo input", "aqui ingresas el mensaje", "DER", "IZQ");
return 1;
}
if (strcmp("/dialogopassword", cmdtext, true, 10) == 0)
{
ShowPlayerDialog(playerid, DIALOG_PASSWORD, DIALOG_STYLE_PASSWORD, "Estilo password", "aqui ingresas el mensaje", "DER", "IZQ");
return 1;
}
return 0;
}
Y ya con eso finalizamos nuesto dialogo. Muchas gracias por mirar este tutorial, espero que te alla servido y que allas aprendido como usar los ShowPlayerDialog.
Cualquier duda aqui estoi para cualquier cosa.
Creditos del tutorial:
- Spoiler:
- Yo (4L3X)