SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Español/Spanish

 
 
Thread Tools Display Modes
Old 27/03/2010, 05:41 AM   #1
Gw-platinum
Big Clucker
 
Join Date: Mar 2010
Posts: 101
Reputation: 0
Default [TUT]Crear sistema de registro usando ShowPlayerDialog.

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):

pawn Code:
new registro 0
new logueo 1
new fallopass 2

Despues tenemos que definir un estado que identificara si el usuario esta logueado o no:

pawn Code:
new gPlayerLogged[MAX_PLAYER_NAME];

Bien, ahora nos tenemos que dirigir al public OnPlayerRequestClass y ahi agregamos la primera parte de nuestro sistema de registro:

pawn Code:
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");
        }

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

pawn Code:
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");
                }
            }

Ahora vamos al callback public OnPlayerRegister y agregamos esto al final del public:

pawn Code:
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");

Ahora vamos al callback public OnPlayerLogin y agregamos esto al final:

pawn Code:
}
        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;
        }

Y por ultimo vamos al callback public OnDialogResponse, si no lo tenemos lo creamos y agregamos esto:

pawn Code:
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;
  }

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:

pawn Code:
#pragma tabsize 0

Si teneis algun fallo con este sistema preguntarlo en este post y os ayudare a solucionarlo.

Creditos:

-DoJi(Yo)
__________________
Gw-platinum is offline  
Old 27/03/2010, 06:27 AM   #2
Roymer
Huge Clucker
 
Roymer's Avatar
 
Join Date: Dec 2009
Posts: 287
Reputation: 0
Default Re: [TUT]Crear sistema de registro usando ShowPlayerDialog.

Esto ya esta posteado :S
Roymer is offline  
Old 27/03/2010, 08:56 AM   #3
laborgward
Huge Clucker
 
Join Date: Dec 2009
Posts: 223
Reputation: 0
Default Re: [TUT]Crear sistema de registro usando ShowPlayerDialog.

Me parece Doble post >O

salu2
__________________

[FS]Sistema de Niveles/Premios


----------------------------------


Sistema de Warnings para TeamKill
Crear menus
laborgward is offline  
Old 27/03/2010, 01:32 PM   #4
xenowort
High-roller
 
xenowort's Avatar
 
Join Date: Nov 2009
Location: en mi casa
Posts: 1,767
Reputation: 1
Default Re: [TUT]Crear sistema de registro usando ShowPlayerDialog.

mnm no se pero bueno... Esta bien explicado.
__________________
Esta cuenta esta cerrada, ya que no juego mas samp.
xenowort is offline  
Old 28/03/2010, 05:55 AM   #5
SenseiRD
Little Clucker
 
Join Date: Mar 2010
Posts: 8
Reputation: 0
Default Re: [TUT]Crear sistema de registro usando ShowPlayerDialog.

Y en donde se almacenan los datos de los jugadores registrados?
SenseiRD is offline  
Old 28/03/2010, 06:50 AM   #6
Roymer
Huge Clucker
 
Roymer's Avatar
 
Join Date: Dec 2009
Posts: 287
Reputation: 0
Default Re: [TUT]Crear sistema de registro usando ShowPlayerDialog.

fijate en OnDialogResponse
Roymer is offline  
Old 28/03/2010, 10:41 PM   #7
Earth
Big Clucker
 
Join Date: Jan 2010
Posts: 73
Reputation: 0
Default Re: [TUT]Crear sistema de registro usando ShowPlayerDialog.

Hola man, una pregunta, yo tengo un sistema de registro pero con comando, necesito saber como pasarlo a dialogo, nose como hacer se me complica
Earth is offline  
Old 15/05/2010, 09:13 PM   #8
aRvaroMetal
Big Clucker
 
Join Date: Feb 2010
Posts: 114
Reputation: 0
Default Re: [TUT]Crear sistema de registro usando ShowPlayerDialog.

Nada más y nada menos que 18 Errores + 8 Warnings...! Un record! Jajaja.
Te paso los fallos a ver si me puedes ayudar. Ok?
Code:
(259) : error 001: expected token: ";", but found "-integer value-"
(260) : error 001: expected token: ";", but found "-integer value-"
(261) : error 001: expected token: ";", but found "-integer value-"
(409) : error 021: symbol already defined: "gPlayerLogged"
(4443) : error 010: invalid function or declaration
(4446) : error 055: start of function body without function header
(4447) : error 010: invalid function or declaration
(4450) : error 021: symbol already defined: "GetPlayerName"
(4453) : error 010: invalid function or declaration
(4455) : error 021: symbol already defined: "jugador"
(4672) : error 017: undefined symbol "i"
(4675) : warning 219: local variable "jugador" shadows a variable at a preceding level
(4676) : error 017: undefined symbol "playerid"
(4678) : error 017: undefined symbol "i"
(8636) : warning 219: local variable "loginstring" shadows a variable at a preceding level
(8637) : warning 219: local variable "loginname" shadows a variable at a preceding level
(9093) : error 054: unmatched closing brace ("}")
(9094) : error 010: invalid function or declaration
(9098) : error 021: symbol already defined: "GetPlayerName"
(9103) : error 010: invalid function or declaration
(9104) : error 010: invalid function or declaration
(9142) : warning 219: local variable "loginstring" shadows a variable at a preceding level
(9143) : warning 219: local variable "loginname" shadows a variable at a preceding level
(27696) : warning 235: public function lacks forward declaration (symbol "OnPlayerPrivmsg")
(27744) : warning 203: symbol is never used: "jugador"
(27744) : warning 203: symbol is never used: "loginname"
Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


18 Errors.
aRvaroMetal is offline  
Old 15/05/2010, 09:30 PM   #9
xenowort
High-roller
 
xenowort's Avatar
 
Join Date: Nov 2009
Location: en mi casa
Posts: 1,767
Reputation: 1
Default Re: [TUT]Crear sistema de registro usando ShowPlayerDialog.

Quote:
Originally Posted by Extremaydura
Nada más y nada menos que 18 Errores + 8 Warnings...! Un record! Jajaja.
Te paso los fallos a ver si me puedes ayudar. Ok?
Code:
(259) : error 001: expected token: ";", but found "-integer value-"
(260) : error 001: expected token: ";", but found "-integer value-"
(261) : error 001: expected token: ";", but found "-integer value-"
(409) : error 021: symbol already defined: "gPlayerLogged"
(4443) : error 010: invalid function or declaration
(4446) : error 055: start of function body without function header
(4447) : error 010: invalid function or declaration
(4450) : error 021: symbol already defined: "GetPlayerName"
(4453) : error 010: invalid function or declaration
(4455) : error 021: symbol already defined: "jugador"
(4672) : error 017: undefined symbol "i"
(4675) : warning 219: local variable "jugador" shadows a variable at a preceding level
(4676) : error 017: undefined symbol "playerid"
(4678) : error 017: undefined symbol "i"
(8636) : warning 219: local variable "loginstring" shadows a variable at a preceding level
(8637) : warning 219: local variable "loginname" shadows a variable at a preceding level
(9093) : error 054: unmatched closing brace ("}")
(9094) : error 010: invalid function or declaration
(9098) : error 021: symbol already defined: "GetPlayerName"
(9103) : error 010: invalid function or declaration
(9104) : error 010: invalid function or declaration
(9142) : warning 219: local variable "loginstring" shadows a variable at a preceding level
(9143) : warning 219: local variable "loginname" shadows a variable at a preceding level
(27696) : warning 235: public function lacks forward declaration (symbol "OnPlayerPrivmsg")
(27744) : warning 203: symbol is never used: "jugador"
(27744) : warning 203: symbol is never used: "loginname"
Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


18 Errors.
No es ningun record una vez tube 164 errores y 1240 warnings en un gm todo hecho mal xD

Con respecto a esto

borra el callback onplaterprivmsg

tenes que definir "i"

__________________
Esta cuenta esta cerrada, ya que no juego mas samp.
xenowort is offline  
Old 15/05/2010, 10:03 PM   #10
aRvaroMetal
Big Clucker
 
Join Date: Feb 2010
Posts: 114
Reputation: 0
Default Re: [TUT]Crear sistema de registro usando ShowPlayerDialog.

Lo borre porque necesitaba onnear mi server, si defino [i] funcionara todo?
aRvaroMetal is offline  
 

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[PEDIDO] Sistema de registro DartakousLien Português/Portuguese 2 31/01/2010 04:51 PM


All times are GMT. The time now is 08:35 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.