22.04.2012, 19:03
Crear cuadros de diбlogo puede parecer bastante difнcil, aunque son en realidad bastante sencillo de hacer. Este breve tutorial te mostrarб cуmo hacer una lista de diбlogo. Este diбlogo es con fines de demostraciуn y serб bastante limitado.
Este tutorial Explicara Los 3 Sencillos Estilos de Dialogos , DIALOG_STYLE_MSGBOX, DIALOG_STYLE_INPUT y DIALOG_STYLE_LIST.
Primera Explicacion
Primero que Todo Vamos a Explicar la Funcion Del ShowPlayerDialog.
Vamos a Ver Cuales Son Los Parametros de Esta Funcion:
LA Funcion Que se Le Regresara al Llamar la Funcion.
Dialogo Estilo Lista
En Primer lugar vamos a mostrar el cuadro de dialogo. Para eso nos Vamos a OnPlayerCommandText:
Listo ya hemos creado el Comando y a la ves el cuadro de dialogo Ahora Tenemos que Configurar OnDialogResponse .
Voy a explicar lo que esto hace, hay dos interruptores. Uno para el dialogid, y una para el listitem. La parte if en la parte superior que se necesita, de lo contrario no se comprueba que el botуn ha hecho click.
Tipo de Dialogo
Este es sencillo es un cuadro con solo 2 botones de Por ejemplo Aceptar o Cancelar
vamos a OnPlayerCommandText.
Esto le mostrara el dilogo
DIALOG_STYLE_MSGBOX.
Ahora Configuraremos la funcion con la que respondera
Explicaciуn:
Esto sуlo comprueba el dialogo, porque ya despues de comprobar si se pulsa el primer botуn que es 'sн', y luego se aplica la animaciуn de 10 segundos.
Input dialog
Este diбlogo tendrб una lнnea de entrada. (como su nombre lo indica). una Linea de Ejecucion
Vamos a hacer un chatdialog (lo que se escribe en el cuadro de diбlogo aparecerб en el chat).
Este Comando sera Creado con strcmp osea ira en la callback OnPlayerCommandText.
Vamos a Poner en Marcha el Comando ira
Esto Imprimira el Mensaje Para Todos
Creditos
Tutorial creado originalmente por Calgon / FreddoX, pero las adiciones implementado por legodude.
Agregadas Nuevas Cosas Por mi Daniel Ruiz Y Hecho Para Forum Samp
Guia: Wiki-samp
Si ven Algun error Avisarme Recuerda Hacer Criticas CONSTRUCTIVAS .
Este tutorial Explicara Los 3 Sencillos Estilos de Dialogos , DIALOG_STYLE_MSGBOX, DIALOG_STYLE_INPUT y DIALOG_STYLE_LIST.
Primera Explicacion
Primero que Todo Vamos a Explicar la Funcion Del ShowPlayerDialog.
Vamos a Ver Cuales Son Los Parametros de Esta Funcion:
pawn Код:
ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[])
Код:
playerid La id Del Jugador al Que se le va a Mostrar. dialogid La id Del Dialogo Definida en Los "define". style El Estilo Del Dialogo . caption[] El Titulo En La Parte Superior Del Dialogo . info[] El Texto a Mostrar en el Dialogo. Usa \n Para Comenzar una Nueva Linea y \t Para tabular. button1[] El texto con el botуn izquierdo. button2[] El texto con el botуn Derecho.
pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
Код:
playerid La id Del Jugador al Que se le va a Mostrar. dialogid La id Del Dialogo Par que el Jugador Clickee la Funcion response boolean, true if first button was pressed, false if second button was pressed listitem Solo se usa en el DIALOG_STYLE_LIST . inputtext[] Solo se usa en el DIALOG_STYLE_INPUT, Es una Cadena De Entrada Con el Dialogo. Bueno Listo Ahora Podemos Proceder
En Primer lugar vamos a mostrar el cuadro de dialogo. Para eso nos Vamos a OnPlayerCommandText:
pawn Код:
if(!strcmp(cmdtext, "/bebidas", true))
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST, "Que Desea ?", "Bebidas ($1)\nCerveza ($2)\nVino ($3)", "Comprar", "Cancelar");
return 1;
}
pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(response)// Si se pulsa el primer botуn.
{
switch(dialogid)// Si sуlo tiene un cuadro de diбlogo, entonces esto no es necesario, pero es mбs Organizado para cuando se implementan mбs cuadros de diбlogo.
{
case 1:// Nuestro dialogo
{
switch(listitem)// Comprueba Si a Sido Seleccionado
{
case 0:// El Primer Boton Incluido
{
if(GetPlayerMoney(playerid) < 1) return SendClientMessage(playerid, 0xFFFFFF, "Usted No Tiene Suficiente Dinero Para pagar Esta Bebida!");//El GetPlayerMoney Significa que mira el Dinero al Jugador. <1 Esto Significa Que Debe Tener mas de 1 Dolar
GivePlayerMoney(playerid, -1);//El GivePLayerMoney -1 Significa Que le Quita 1 Dolar
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_SPRUNK);// Esto es una animacion Despues les paso el link de las animaciones
}
case 1: // Esto es el segundo boton
{
if(GetPlayerMoney(playerid) < 2) return SendClientMessage(playerid, 0xFFFFFF, "Usted No Tiene suficiente Dinero.");
GivePlayerMoney(playerid, -2);
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_BEER);
}
case 2: // El Tercer boton
{
if(GetPlayerMoney(playerid) < 3) return SendClientMessage(playerid, 0xFFFFFF, "No Tiene dinero Para Pagar Esta bebida");
GivePlayerMoney(playerid, -3);
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_WINE);
}
}
}
}
}
return 1;
}
Tipo de Dialogo
Код:
MSGBOX
vamos a OnPlayerCommandText.
pawn Код:
if(!strcmp(cmdtext, "/Dormir", true))
{
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_MSGBOX, "Desea Dormir?", "Tienes Tiempo de Relajarte?", "Si", "No");//el 2 Se Define en #define 2
return 1;
}
DIALOG_STYLE_MSGBOX.
Ahora Configuraremos la funcion con la que respondera
pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(response)// Cuando pulsa el 1 Boton
{
switch(dialogid)// Comprueba el cuadro de dialogo que usamos
{
case 1:// Nuestro primer dialogo
{
switch(listitem)// Comprueba de Que Fue elejido
{
case 0: // la Primera funcion
{
if(GetPlayerMoney(playerid) < 1) return SendClientMessage(playerid, 0xFFFFFF, "Usted no Tiene Suficiente dinero.");
GivePlayerMoney(playerid, -1);
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_SPRUNK);
}
case 1: // Segundo Boton
{
if(GetPlayerMoney(playerid) < 2) return SendClientMessage(playerid, 0xFFFFFF, "Usted No Tiene suficiente dinero.");
GivePlayerMoney(playerid, -2);
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_BEER);
}
case 2: // Tercer boton
{
if(GetPlayerMoney(playerid) < 3) return SendClientMessage(playerid, 0xFFFFFF, "No tienes suficiente dinero.");
GivePlayerMoney(playerid, -3);
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_WINE);
}
}
}
//Apartir de Aca aсadiremos cosas
case 2:// El nuevo dialogo
{
ApplyAnimation(playerid,"BEACH","Lay_Bac_Loop",4.1,1,1,1,1,10);//Esto Aplicara la Animacion Durante 10 segundos
}
// Aca Termina
}
}
return 1;
}
Esto sуlo comprueba el dialogo, porque ya despues de comprobar si se pulsa el primer botуn que es 'sн', y luego se aplica la animaciуn de 10 segundos.
Input dialog
Este diбlogo tendrб una lнnea de entrada. (como su nombre lo indica). una Linea de Ejecucion
Vamos a hacer un chatdialog (lo que se escribe en el cuadro de diбlogo aparecerб en el chat).
Este Comando sera Creado con strcmp osea ira en la callback OnPlayerCommandText.
pawn Код:
if(!strcmp(cmdtext, "/saludar", true))
{
ShowPlayerDialog(playerid, 3, DIALOG_STYLE_INPUT, "Saluda", "Escriba Aca su Saludo.", "Aceptar", "Cancelar");
return 1;
}
pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(response)// Comprueba si se Pulsa Aceptar y Sigue:
{
switch(dialogid)//Si no esta en uso un cuadro de dialogo pero nunca se sabe
{
case 1:// Tu dialogo
{
switch(listitem)// Comprueba Que Fue Elejido
{
case 0: // El Primer Elemento
{
if(GetPlayerMoney(playerid) < 1) return SendClientMessage(playerid, 0xFFFFFF, "Usted no tiene suficiente dinero .");
GivePlayerMoney(playerid, -1);
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_SPRUNK);
}
case 1: // Segundo item
{
if(GetPlayerMoney(playerid) < 2) return SendClientMessage(playerid, 0xFFFFFF, "Usted no tiene suficiente dinero ");
GivePlayerMoney(playerid, -2);
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_BEER);
}
case 2: // El Tercer Item de la Lista
{
if(GetPlayerMoney(playerid) < 3) return SendClientMessage(playerid, 0xFFFFFF, "Usted no tiene suficiente dinero .");
GivePlayerMoney(playerid, -3);
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_WINE);
}
}
}
case 2:// El Nuevo Dialogo
{
ApplyAnimation(playerid,"BEACH","Lay_Bac_Loop",4.1,1,1,1,1,10);// Esto lo Relajara Durante 10 Segundos Osea Aplicara la Animacion.
}
// Nuestro Nuevo Dialogo
case 3:
{
if(strlen(inputtext) > 0)
{
SendPlayerMessageToAll(playerid, inputtext);
}
else
{
SendClientMessage(playerid,0xFFFFFFAA,"Su Mensaje fue Muy Corto");
}
}
// Aca terminamos.
}
}
return 1;
}
Creditos
Tutorial creado originalmente por Calgon / FreddoX, pero las adiciones implementado por legodude.
Agregadas Nuevas Cosas Por mi Daniel Ruiz Y Hecho Para Forum Samp
Guia: Wiki-samp
Si ven Algun error Avisarme Recuerda Hacer Criticas CONSTRUCTIVAS .