27.03.2010, 04:41
Hola, hoy les voy a explicar como hacer un sencillo sistema de registro con la nueva funcion de la 0.3 llamada ShowPlayerDialog.
їQue es el ShowPlayerDialog?
El ShowPlayerDialog, es una nueva funcion de la nueva version de SA-MP (0.3.x), el ShowPlayerDialog tiene 2 estilos, el que se usa para los registros en especial que es el DIALOG_STYLE_INPUT y el que se usa a modo de menu, poner un texto, reglas, etc... es el DIALOG_STYLE_OUTPUT(creo que era asi).
Vamos a proceder a crear nuestro sistema de registro usando el ShowPlayerDialog.
Ahora tenemos que definir cada dialog con un numero que queremos (cada dialog significa que como creamos el registro, el fallo de la pass y el login, tenemos que definir 3 dialogs):
Despues tenemos que definir un estado que identificara si el usuario esta logueado o no:
Bien, ahora nos tenemos que dirigir al public OnPlayerRequestClass y ahi agregamos la primera parte de nuestro sistema de registro:
Ahora Explicare que es cada cosa:
ShowPlayerDialog(playerid, logueo, DIALOG_STYLE_INPUT, "Logueo", "Hola, tu usuario ya existe\n Introduze tu contraseсa para entrar", "Loguearme", "Salir"
-ShowPlayerDialog: Eso esta claro lo que estamos usando
-playerid: tambien esta claro.
-logueo: es la id del dialog que definimos mas arriba que era para recordar "new logueo 1;"
-DIALOG_STYLE_INPUT: El estilo del cuadro del dialog
-Logueo: Lo que nos va a salir arriba del cuadro, se puede cambiar como quieras ej. X Server, inicio de sesion.
"Tu cuenta....\n...": Es el texto que va a salir en el cuadro y para aсadirle un espacio del linea agregamos \n (que significa "new line").
-Loguearme: Es el boton para loguarse.
-Salir: Si pulsas ese boton te sacara del juego.
Ahora vamos al callback public OtherTimer(), y agregamos esto
Ahora vamos al callback public OnPlayerRegister y agregamos esto al final del public:
Ahora vamos al callback public OnPlayerLogin y agregamos esto al final:
Y por ultimo vamos al callback public OnDialogResponse, si no lo tenemos lo creamos y agregamos esto:
Si seguimos correctamente estos pasos tiene que funcionar ala perfecciуn, si les sale algun warning de "loose identification" eso significa que algo no esta bien alineado en el GM para no andar buscando y crearte quebraderos de cabeza vamos arriba de nuestro GM y debajo de "#include <a_samp>" agregamos esto:
Si teneis algun fallo con este sistema preguntarlo en este post y os ayudare a solucionarlo.
Creditos:
-DoJi(Yo)
їQue es el ShowPlayerDialog?
El ShowPlayerDialog, es una nueva funcion de la nueva version de SA-MP (0.3.x), el ShowPlayerDialog tiene 2 estilos, el que se usa para los registros en especial que es el DIALOG_STYLE_INPUT y el que se usa a modo de menu, poner un texto, reglas, etc... es el DIALOG_STYLE_OUTPUT(creo que era asi).
Vamos a proceder a crear nuestro sistema de registro usando el ShowPlayerDialog.
Ahora tenemos que definir cada dialog con un numero que queremos (cada dialog significa que como creamos el registro, el fallo de la pass y el login, tenemos que definir 3 dialogs):
pawn Код:
new registro 0
new logueo 1
new fallopass 2
pawn Код:
new gPlayerLogged[MAX_PLAYER_NAME];
pawn Код:
if(RegistrationStep[playerid] == 0 && gPlayerLogged[playerid] != 1);
{
ClearChatbox(playerid, 10);
{
if (gPlayerAccount[playerid] != 0)
{
new jugador[64];
GetPlayerName(playerid,jugador,sizeof(jugador));
ShowPlayerDialog(playerid,logueo,DIALOG_STYLE_INPUT,"Loguear",Hola, tu usuario ya existe\n Introduze tu contraseсa para entrar,"Loguear","Salir");
}
else
{
new jugador[64];
GetPlayerName(playerid,jugador,sizeof(jugador));
ShowPlayerDialog(playerid,registro,DIALOG_STYLE_INPUT,"Registro",Hola, no tienes cuenta en el servidor\n Por favor introduze una contraseсa para registrarte,"Registro","Salir");
}
ShowPlayerDialog(playerid, logueo, DIALOG_STYLE_INPUT, "Logueo", "Hola, tu usuario ya existe\n Introduze tu contraseсa para entrar", "Loguearme", "Salir"
-ShowPlayerDialog: Eso esta claro lo que estamos usando
-playerid: tambien esta claro.
-logueo: es la id del dialog que definimos mas arriba que era para recordar "new logueo 1;"
-DIALOG_STYLE_INPUT: El estilo del cuadro del dialog
-Logueo: Lo que nos va a salir arriba del cuadro, se puede cambiar como quieras ej. X Server, inicio de sesion.
"Tu cuenta....\n...": Es el texto que va a salir en el cuadro y para aсadirle un espacio del linea agregamos \n (que significa "new line").
-Loguearme: Es el boton para loguarse.
-Salir: Si pulsas ese boton te sacara del juego.
Ahora vamos al callback public OtherTimer(), y agregamos esto
pawn Код:
if(SafeTime[i] == 1)
{
if(gPlayerAccount[i] == 1 && gPlayerLogged[i] == 0)
{
new jugadorlogin[64];
new jugador[128];
GetPlayerName(playerid,jugadorlogin,64);
format(jugador,sizeof(jugador),"Bienvenido, %s\nAhora puede iniciar sesiуn:",jugadorlogin);
ShowPlayerDialog(i,logueo,DIALOG_STYLE_INPUT,"Loguear",loginstring,"Loguear","Salir");
}
}
pawn Код:
new loginstring[128];
new loginname[64];
GetPlayerName(playerid,loginname,sizeof(loginname));
format(loginstring,sizeof(loginstring),"Bienvenido, %s\nAhora puede iniciar sesiуn:",loginname);
ShowPlayerDialog(playerid,logueo,DIALOG_STYLE_INPUT,"Loguear",loginstring,"Loguear","Salir");
pawn Код:
}
else
{
new loginstring[128];
new loginname[64];
GetPlayerName(playerid,loginname,sizeof(loginname));
format(loginstring,sizeof(loginstring),"WRONG PASSWORD \nPor favor introduzca la contraseсa correcta:",loginname);
ShowPlayerDialog(playerid,fallopass,DIALOG_STYLE_INPUT,"Loguear",loginstring,"Loguear","Salir");
fclose(UserFile);
gPlayerLogTries[playerid] += 1;
if(gPlayerLogTries[playerid] == 4) { Ban(playerid); }
return 1;
}
pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new sendername[MAX_PLAYER_NAME];
new string[128];
if(response)
{
if(dialogid == logueo || dialogid == fallopass)
{
if(strlen(inputtext))
{
new tmppass[64];
strmid(tmppass, inputtext, 0, strlen(inputtext), 255);
Encrypt(tmppass);
OnPlayerLogin(playerid,tmppass);
}
else
{
new loginstring[128];
new loginname[64];
GetPlayerName(playerid,loginname,sizeof(loginname));
format(loginstring,sizeof(loginstring),"WRONG PASSWORD \n Por favor introduzca la contraseсa correcta:",loginname);
ShowPlayerDialog(playerid,fallopass,DIALOG_STYLE_INPUT,"Loguear",loginstring,"Loguear","Salir");
gPlayerLogTries[playerid] += 1;
if(gPlayerLogTries[playerid] == 4) { Ban(playerid); }
}
}
if(dialogid == registro)
{
if(strlen(inputtext))
{
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "users/%s.ini", sendername);
new File: hFile = fopen(string, io_read);
if (hFile)
{
SendClientMessage(playerid, COLOR_YELLOW, "Nombre de usuario que ya estб ocupado, por favor, elija uno diferente.");
fclose(hFile);
return 1;
}
new tmppass[64];
strmid(tmppass, inputtext, 0, strlen(inputtext), 255);
Encrypt(tmppass);
OnPlayerRegister(playerid,tmppass);
}
else
{
new regstring[128];
new regname[64];
GetPlayerName(playerid,regname,sizeof(regname));
format(regstring,sizeof(regstring),"Bienvenido, %s\nNo tienes una cuenta.\nPor favor regнstrese:",regname);
ShowPlayerDialog(playerid,registro,DIALOG_STYLE_INPUT,"Registrar",regstring,"Registrar","Salir");
}
}
}
else
{
Kick(playerid);
}
return 1;
}
pawn Код:
#pragma tabsize 0
Creditos:
-DoJi(Yo)