06.07.2011, 07:40
(
Последний раз редактировалось clavador; 07.07.2011 в 17:04.
)
Este include es similar al de Gamer_Z lanzado en la comunidad inglesa, solo que mas simple.
Hice este include porque el de Gamer_Z no me funciono con JunkBuster.
Es mucho mas simple y va directamente al grano:
Les dejo el post original: https://sampforum.blast.hk/showthread.php?tid=266799
UPDATE 07/07: Reemplazar el script que hayan bajado por este ultimo. Se arreglo un bug que hacia que el codigo se ejecutase varias veces.
Y el include en version espaсol:
Cual es la ventaja de esto?
Si usan el metodo convencional, se van a llenar de switch o if y si tienen 100 dialogos, el servidor va a tener que procesar uno por uno hasta dar con el busca.
Con este metodo directamente se llama al dialogo solicitado, sin necesidad de buscarlo entre una larga lista.
Que lo disfruten!!!
Hice este include porque el de Gamer_Z no me funciono con JunkBuster.
Es mucho mas simple y va directamente al grano:
Les dejo el post original: https://sampforum.blast.hk/showthread.php?tid=266799
UPDATE 07/07: Reemplazar el script que hayan bajado por este ultimo. Se arreglo un bug que hacia que el codigo se ejecutase varias veces.
Y el include en version espaсol:
pawn Код:
//
// Hecho por Clavador
// idea original por
// gamer_Z (Gracias)
// encontralo aca:
// https://sampforum.blast.hk/showthread.php?tid=260298
new DialogToCall[24]; // Debe estar afuera
// REMOVE ESTE CALLBACK DE TODOS TUS FILTERSCRIPTS Y GAMEMODES Y DEJALO SOLAMENTE ACA
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
format(DialogToCall,24,"DialogResponse_%d",dialogid); // NO USAR DIALOGIDS NEGATIVOS
if(isnull(inputtext))format(inputtext,2,"\1");
if(funcidx(DialogToCall) != -1)
return CallLocalFunction(DialogToCall,"iiis",playerid,response,listitem,inputtext);
return 0;
}
// DEFINIMOS LA FUNCION
#define Dialog(%1) forward DialogResponse_%1(playerid, response, listitem, inputtext[]); \
public DialogResponse_%1(playerid, response, listitem, inputtext[])
/*
// ESTA ES LA FUNCION QUE DEBERIAS USAR. COPIALA DE ACA Y PEGALA DONDE MAS TE GUSTE
SOLO HAY QUE REEMPLAZAR dialogid POR EL ID DEL DIALOGO QUE PUSISTE EN ShowPlayerDialog y listo!
si usaramos: ShowPlayerDialog(playerid,201,DIALOG_STYLE_LIST,"Banco de San Andreas","Depositar\nRetirar","Aceptar","Salir");
Deberiamos reemplazar el dialogid en la funcion por 201 por ejemplo.
---------------------------------------------------------------------------------------------------------------------------------------------------
Dialog(dialogid) // (playerid,response,lisitem,inputtext[]) are passed as always
{
if(response)
{
new pinnumber[5];
format(pinnumber,sizeof(pinnumber),"%i",djInt(UserName(playerid),"player/pinnumber"));
if (!strcmp(inputtext, pinnumber, true))
{
TextDrawShowForPlayer(playerid, BANK_BOX);
TextDrawShowForPlayer(playerid, BANK_USUARIO);
TextDrawShowForPlayer(playerid, BANK_BALANCE);
UpdateBankStats(playerid);
ShowPlayerDialog(playerid,201,DIALOG_STYLE_LIST,"Banco de San Andreas","Depositar\nRetirar","Aceptar","Salir");
}
else ShowPlayerDialog(playerid,200,DIALOG_STYLE_INPUT,"Banco de San Andreas ATM","PIN incorrecto.\nPor favor, ingrese su PIN","Aceptar","Cancelar");
}
else
{
ShowPlayerDialog(playerid,32000,DIALOG_STYLE_MSGBOX,"Banco de San Andreas","Gracias por utilizar nuestros servicios!","Cerrar","");
}
return 1;
}
*/
Si usan el metodo convencional, se van a llenar de switch o if y si tienen 100 dialogos, el servidor va a tener que procesar uno por uno hasta dar con el busca.
Con este metodo directamente se llama al dialogo solicitado, sin necesidad de buscarlo entre una larga lista.
Que lo disfruten!!!