[Guia] Sistema de registro/guardado/cargado INI [COMPLETA]

Aprende lo que no sabes de este lenguaje y encuentra herramientas y códigos útiles.

Moderador: Ayudantes

Reglas del Foro
  • Si tu código es corto, no crees un tema nuevo para liberarlo, publica un mensaje en el tema [Funciones] ¡Publica tu código aquí!.
  • Si creas una guía, debes explicar el código claramente. Evita poner la explicación en forma de comentarios dentro del mismo y no olvides utilizar el BBCode correspondiente: [Pawn]Código aquí[/Pawn].
  • No postear códigos sin probar. Publicar códigos con errores (que impidan compilar el script para el cual está destinado) en este apartado es motivo de sanción.
  • Si tu código necesita plugins, includes u otros códigos adicionales para funcionar, debes mencionarlo en el mensaje.
  • Si has utilizado códigos de otros autores, recuerda colocar los créditos correspondientes. (El plagio es motivo de sanción).
  • Si tu aporte es para un GameMode en específico, debes publicar el tema en el apartado "Guías y Aportes para GameModes específicos".
Responder
jaimicko
Aprendiz
Aprendiz
Mensajes: 94
Registrado: 18 May 2017 15:48
Reputación: 0

18 Feb 2019 13:34

FailLout escribió:
25 Ene 2017 18:24
Buenas a todos los queridos usuarios de pawnoscript Invitado la guia de hoy tratara de explicar paso a paso como crear un simple guardado y cargado de cuenta en INI primero que nada.

¿Que necesitamos?
Necesitaras lo siguiente:
ncludes:
YSI\y_ini
a_samp


Tener un conocimiento basico de condicionales, si no es asi les recomiendo leer la guia de Matt primero para que tengan un concepto basico de como hacer condicionales y loops -hi

Una vez aclarado eso vamos a ello!

primero debemos crear un "Enum" para almacenar varias variables en una asi nos ahorramos mas trabajo a la hora de programar

un ejemplo de lo que digo
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14

//
new Score[MAX_PLAYERS];
new Admin[MAX_PLAYERS];
new Float:Vida[MAX_PLAYERS];
new Float:Chaleco[MAX_PLAYERS];
//
enum pInfo
{
Score,
Admin,
Float:Vida,
Float:Chaleco
}
new Info[MAX_PLAYERS][pInfo];
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 14
Se puede hacer de ambas formas un guardado y cargado pero si lo hacemos creando variables que se guardaran con "new" el proceso se hara mas largo y desordenado, con enum es mas sencillo y ordenado

Ok una vez aclarado eso empecemos!
 Codigo Pawno:
1
2
3
4
5
6
7
8

enum jInformacion
{
Clave[12], //Tenemos variable clave con string de 12 caracteres
Float:Vida, //Una flotante de vida
Float:Chaleco,//flotante de chaleco
Score//escore INT
}
new Info[MAX_PLAYERS][jInformacion];
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 8
Es muy importante que identifiquen las variables si son Flotantes, int,string,hexa o binario. Este tutorial sera sencillo y abarcara solamente lo mas basico, flotantes, int y string

Luego de eso ¿Que hacemos?

Nos toca crear un guardado pero antes necesitamos hacer una ruta

¿Una ruta? si una ruta asi le llamo a la definicion de donde ira guardada o donde se almacenara en este caso la cuenta
Asi que Abajo de los include pondremos
 Codigo Pawno:
1

#define Ruta_Jugador "Cuentas/%s.ini"
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
Si se preguntan ¿Donde creo la carpeta "Cuentas"? esta carpeta se crea en scriptfiles. Recuerden crearla por que si no les dara bug de guardado y como en scriptfiles no hay una carpeta con dicho nombre no se guardara la misma

Una vez echo eso vamos a crear los siguientes forward. Es muy importante esto. Hay gente que le gusta hacer el guardado como stock. A mi personalmente me gusta hacerla tipo funcion
 Codigo Pawno:
1
2
3

forward Guardarcuenta(playerid);
forward Cargarcuenta_data(playerid,name[],value[]);//Es muy importante que pongan name[],value[] aca por que esas variables ayudan a cargar cada dato al jugador. Si no se crean dara "error"
forward Cargarcuenta(playerid);//Esta es para llamar el cargado...
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 3
Ok perfecto ya vamos un paso adelante!! ahora vamos a hacer el guardado de cuentas. Es muy importante que tengan en cuenta la "Clave" no se guarda con las otras variables ya que esta variable Solo se guarda 1 ves y se carga. El guardado y cargado de ella esta aparte para no provocar bugs en el "Lobby"
Asi que crearemos estos forwards !
 Codigo Pawno:
1
2

forward CargarClave_data(playerid,name[],value[]);
forward Cargarclave(playerid);
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 2

Ahora vamos a lo nuestro a realizar el guardado de cuenta

Para guardar las variables, hay varias formas pero en el INI es de la siguiente
para las int
INI_WriteInt(ARCHIVO,"NOMBREVARIABLE",VARIABLE);
//float
INI_WriteFloat(ARCHIVO,"NOMBREVARIABLE",VARIABLE);
//string
INI_WriteString(ARCHIVO,"NOMBREVARIABLE",VARIABLE);
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

//crearemos este stock para ahorrarme algo de tiempo
stock Name(playerid)
{
new N[MAX_PLAYER_NAME];
GetPlayerName(playerid,N,sizeof(N));
return N;
}
public Guardarcuenta(playerid)
{
new st[128];
format(st,128,Ruta_Jugador,Name(playerid));//Marcamos el numero
new INI:File = INI_Open(st);//Hacemos la llamada
Info[playerid][Score] = GetPlayerScore(playerid);//Tenemos que hacer esto para que nuestro score se guarde
INI_WriteInt(File,"Score",Info[playerid][Score]);
GetPlayerHealth(playerid,Info[playerid][Vida]);//Tenemos que hacer esto para que nuestra vida se guarde
INI_WriteFloat(File,"Vida",Info[playerid][Vida]);
GetPlayerArmour(playerid,Info[playerid][Chaleco]);//Tenemos que hacer esto para que nuestro chaleco se guarde
INI_WriteFloat(File,"Chaleco",Info[playerid][Chaleco]);
INI_Close(File);//colgamos la llamada
return 1;
}
  Cantidad de llaves: Abiertas(2)-Cerradas(2) | Lineas Totales: 21
Para los que no entienden, La referencia a marcamos el numero, alli le digo asi por que gracias a eso es que podemos llamar la cuenta cuando pongo la funcion INI_Open que es en sentido figurado el "Telefono" por eso digo que hacemos la llamda por que llamamos a la cuenta. El INI_Close hago referencia en colgamos la llamada por que esta funcion cierra y almacena nuestra cuenta

Ahora vamos al cargado
Como para guardar se hace con unas funciones para cargar son otras funciones
Int
INI_Int("NOMBREVARIABLE",Variable);
Float
INI_Float("NOMBREVARIABLE",Variable);
String
INI_String("NOMBREVARIABLE",Variable,TAMAÑO STRING);
 Codigo Pawno:
1
2
3
4
5
6
7

public Cargarcuenta_data(playerid,name[],value[])
{
INI_Int("Score",Info[playerid][Score]);
INI_Float("Vida",Info[playerid][Vida]);
INI_Float("Chaleco",Info[playerid][Chaleco]);
return 1;
}
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 7
Aca no necesitamos llamar a la cuenta aun por que estamos haciendo cargado a variables pero no le integramos valores de el guardado aun! para ello necesitamos la siguiente funcion INI_ParseFile
INI_ParseFile(filename[], remoteFormat[], bool:bFileFirst = false, bool:bExtra = false, extra = 0, bool:bLocal = false, bool:bPassTag = false) //Salido de wiki ... No necesitaremos mucho solamente lo siguiente
 Codigo Pawno:
1
2
3
4
5
6
7

public Cargarcuenta(playerid)
{
new st[128];
format(st,128,Ruta_Jugador,Name(playerid));
INI_ParseFile(st,"Cargarcuenta_data", .bExtra = false, .extra = playerid);// Asi creamos un cargado de cuenta eh ingresamos las variables al jugador, llamando Cargarcuenta_data
return 1;
}
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 7
Hasta aca llega esta guia Nos vemos en la parte dos!!

-hi

Edit-

Retomando la guia pasada ..... Quedamos en crear el cargado de clave, guardado de clave y el resto del registro.

Ok crearemos el cargado de clave. Te preguntaras ¿POR QUE CREAR Este cargado si no has creado el guardado? ... Es una pregunta facil el guardado se creara en su debido tiempo, cuando ya creemos el log del registro. mientras crearemos su cargado.
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12

public CargarClave_data(playerid,name[],value[])
{
INI_String("Clave",Info[playerid][Clave],12);
return 1;
}
public Cargarclave(playerid)
{
new st[128];
format(st,128,Ruta_Jugador,Name(playerid));
INI_ParseFile(st,"CargarClave_data", .bExtra = false, .extra = playerid);
return 1;
}
  Cantidad de llaves: Abiertas(2)-Cerradas(2) | Lineas Totales: 12
Una vez creado eso vamos a el public onplayerconnect PERO! antes debemos crear un stock
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

//abajo de  Ruta_Jugador crearemos
#define Login 1
#define Regis 2//recuerden que estos son ID 1 - 2 ... Revisen que no choquen con otros ID de DIALOGOS


stock INI_Exist(nickname[])//este stock verificara si existe la cuenta o no
{
  new tmp[128];
  format(tmp,sizeof(tmp),Ruta_Jugador, nickname);
  return fexist(tmp);
}

public OnPlayerConnect(playerid)
{
if(INI_Exist(Name(playerid)))//Si existe la cuenta ... 
{
Cargarclave(playerid);//le cargamos la clave
ShowPlayerDialog(playerid,Login,DIALOG_STYLE_PASSWORD,"Login","Su cuenta esta registrada en nuestra base de datos","Ingresar","");
}
else//Si noo...
{
ShowPlayerDialog(playerid,Regis,DIALOG_STYLE_PASSWORD,"Registro","Su cuenta no esta registrada en nuestra base de datos","Registrar","");
}
return 1;
}
  Cantidad de llaves: Abiertas(4)-Cerradas(4) | Lineas Totales: 25
Luego de crear estos dialogos... Si no sabes crear dialogos busca en el foro hay una guia donde se explican
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
     case Login:
     {
         if(response)
         {
             if(strcmp(inputtext,Info[playerid][Clave],false)==0)//comparamos nuestra clave con la ingresada en el login
            {
                 //Si es igual hara esto
                SpawnPlayer(playerid);
            }
            else Kick(playerid);
         }
         else Kick(playerid);
     }
    case Regis:
    {
        if(response)
        {
            new st[128];
            format(st,sizeof(st),Ruta_Jugador,Name(playerid));
            new INI:File = INI_Open(st);
            INI_WriteString(File,"Clave",Info[playerid][Clave]);
            INI_Close(File);
            SpawnPlayer(playerid);
        }
        else Kick(playerid);
     }
}
return 1;
}
  Cantidad de llaves: Abiertas(7)-Cerradas(7) | Lineas Totales: 33
Ya tenemos nuestro registro listo ahora para que guarde la cuenta ponemos en OnPlayerDisconnect
 Codigo Pawno:
1

Guardarcuenta(playerid);
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1

PD: esta guia no tiene puntos de spawn, sistemas extra solamente lo que ven.

Guias necesarias antes de aprender esto:
guias-aportes/sobre-manejo-dialogos-t19412.html
guias-aportes/loops-while-for-while-got ... 19546.html
guias-aportes/condicionales-operadores- ... 19396.html


-hi
ayuda porfavor el problema es que no me guarda la contraseña, no me da ningun error en pawn que puede ser?
Avatar de Usuario
FailLout
Avanzado
Avanzado
Mensajes: 1385
Registrado: 10 Abr 2014 14:09
Ubicación: Estados Unidos
Contactar:
Reputación: 40

18 Feb 2019 13:45

jaimicko escribió:
18 Feb 2019 13:34
FailLout escribió:
25 Ene 2017 18:24
Buenas a todos los queridos usuarios de pawnoscript Invitado la guia de hoy tratara de explicar paso a paso como crear un simple guardado y cargado de cuenta en INI primero que nada.

¿Que necesitamos?
Necesitaras lo siguiente:
ncludes:
YSI\y_ini
a_samp


Tener un conocimiento basico de condicionales, si no es asi les recomiendo leer la guia de Matt primero para que tengan un concepto basico de como hacer condicionales y loops -hi

Una vez aclarado eso vamos a ello!

primero debemos crear un "Enum" para almacenar varias variables en una asi nos ahorramos mas trabajo a la hora de programar

un ejemplo de lo que digo
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14

//
new Score[MAX_PLAYERS];
new Admin[MAX_PLAYERS];
new Float:Vida[MAX_PLAYERS];
new Float:Chaleco[MAX_PLAYERS];
//
enum pInfo
{
Score,
Admin,
Float:Vida,
Float:Chaleco
}
new Info[MAX_PLAYERS][pInfo];
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 14
Se puede hacer de ambas formas un guardado y cargado pero si lo hacemos creando variables que se guardaran con "new" el proceso se hara mas largo y desordenado, con enum es mas sencillo y ordenado

Ok una vez aclarado eso empecemos!
 Codigo Pawno:
1
2
3
4
5
6
7
8

enum jInformacion
{
Clave[12], //Tenemos variable clave con string de 12 caracteres
Float:Vida, //Una flotante de vida
Float:Chaleco,//flotante de chaleco
Score//escore INT
}
new Info[MAX_PLAYERS][jInformacion];
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 8
Es muy importante que identifiquen las variables si son Flotantes, int,string,hexa o binario. Este tutorial sera sencillo y abarcara solamente lo mas basico, flotantes, int y string

Luego de eso ¿Que hacemos?

Nos toca crear un guardado pero antes necesitamos hacer una ruta

¿Una ruta? si una ruta asi le llamo a la definicion de donde ira guardada o donde se almacenara en este caso la cuenta
Asi que Abajo de los include pondremos
 Codigo Pawno:
1

#define Ruta_Jugador "Cuentas/%s.ini"
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
Si se preguntan ¿Donde creo la carpeta "Cuentas"? esta carpeta se crea en scriptfiles. Recuerden crearla por que si no les dara bug de guardado y como en scriptfiles no hay una carpeta con dicho nombre no se guardara la misma

Una vez echo eso vamos a crear los siguientes forward. Es muy importante esto. Hay gente que le gusta hacer el guardado como stock. A mi personalmente me gusta hacerla tipo funcion
 Codigo Pawno:
1
2
3

forward Guardarcuenta(playerid);
forward Cargarcuenta_data(playerid,name[],value[]);//Es muy importante que pongan name[],value[] aca por que esas variables ayudan a cargar cada dato al jugador. Si no se crean dara "error"
forward Cargarcuenta(playerid);//Esta es para llamar el cargado...
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 3
Ok perfecto ya vamos un paso adelante!! ahora vamos a hacer el guardado de cuentas. Es muy importante que tengan en cuenta la "Clave" no se guarda con las otras variables ya que esta variable Solo se guarda 1 ves y se carga. El guardado y cargado de ella esta aparte para no provocar bugs en el "Lobby"
Asi que crearemos estos forwards !
 Codigo Pawno:
1
2

forward CargarClave_data(playerid,name[],value[]);
forward Cargarclave(playerid);
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 2

Ahora vamos a lo nuestro a realizar el guardado de cuenta

Para guardar las variables, hay varias formas pero en el INI es de la siguiente
para las int
INI_WriteInt(ARCHIVO,"NOMBREVARIABLE",VARIABLE);
//float
INI_WriteFloat(ARCHIVO,"NOMBREVARIABLE",VARIABLE);
//string
INI_WriteString(ARCHIVO,"NOMBREVARIABLE",VARIABLE);
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

//crearemos este stock para ahorrarme algo de tiempo
stock Name(playerid)
{
new N[MAX_PLAYER_NAME];
GetPlayerName(playerid,N,sizeof(N));
return N;
}
public Guardarcuenta(playerid)
{
new st[128];
format(st,128,Ruta_Jugador,Name(playerid));//Marcamos el numero
new INI:File = INI_Open(st);//Hacemos la llamada
Info[playerid][Score] = GetPlayerScore(playerid);//Tenemos que hacer esto para que nuestro score se guarde
INI_WriteInt(File,"Score",Info[playerid][Score]);
GetPlayerHealth(playerid,Info[playerid][Vida]);//Tenemos que hacer esto para que nuestra vida se guarde
INI_WriteFloat(File,"Vida",Info[playerid][Vida]);
GetPlayerArmour(playerid,Info[playerid][Chaleco]);//Tenemos que hacer esto para que nuestro chaleco se guarde
INI_WriteFloat(File,"Chaleco",Info[playerid][Chaleco]);
INI_Close(File);//colgamos la llamada
return 1;
}
  Cantidad de llaves: Abiertas(2)-Cerradas(2) | Lineas Totales: 21
Para los que no entienden, La referencia a marcamos el numero, alli le digo asi por que gracias a eso es que podemos llamar la cuenta cuando pongo la funcion INI_Open que es en sentido figurado el "Telefono" por eso digo que hacemos la llamda por que llamamos a la cuenta. El INI_Close hago referencia en colgamos la llamada por que esta funcion cierra y almacena nuestra cuenta

Ahora vamos al cargado
Como para guardar se hace con unas funciones para cargar son otras funciones
Int
INI_Int("NOMBREVARIABLE",Variable);
Float
INI_Float("NOMBREVARIABLE",Variable);
String
INI_String("NOMBREVARIABLE",Variable,TAMAÑO STRING);
 Codigo Pawno:
1
2
3
4
5
6
7

public Cargarcuenta_data(playerid,name[],value[])
{
INI_Int("Score",Info[playerid][Score]);
INI_Float("Vida",Info[playerid][Vida]);
INI_Float("Chaleco",Info[playerid][Chaleco]);
return 1;
}
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 7
Aca no necesitamos llamar a la cuenta aun por que estamos haciendo cargado a variables pero no le integramos valores de el guardado aun! para ello necesitamos la siguiente funcion INI_ParseFile
INI_ParseFile(filename[], remoteFormat[], bool:bFileFirst = false, bool:bExtra = false, extra = 0, bool:bLocal = false, bool:bPassTag = false) //Salido de wiki ... No necesitaremos mucho solamente lo siguiente
 Codigo Pawno:
1
2
3
4
5
6
7

public Cargarcuenta(playerid)
{
new st[128];
format(st,128,Ruta_Jugador,Name(playerid));
INI_ParseFile(st,"Cargarcuenta_data", .bExtra = false, .extra = playerid);// Asi creamos un cargado de cuenta eh ingresamos las variables al jugador, llamando Cargarcuenta_data
return 1;
}
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 7
Hasta aca llega esta guia Nos vemos en la parte dos!!

-hi

Edit-

Retomando la guia pasada ..... Quedamos en crear el cargado de clave, guardado de clave y el resto del registro.

Ok crearemos el cargado de clave. Te preguntaras ¿POR QUE CREAR Este cargado si no has creado el guardado? ... Es una pregunta facil el guardado se creara en su debido tiempo, cuando ya creemos el log del registro. mientras crearemos su cargado.
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12

public CargarClave_data(playerid,name[],value[])
{
INI_String("Clave",Info[playerid][Clave],12);
return 1;
}
public Cargarclave(playerid)
{
new st[128];
format(st,128,Ruta_Jugador,Name(playerid));
INI_ParseFile(st,"CargarClave_data", .bExtra = false, .extra = playerid);
return 1;
}
  Cantidad de llaves: Abiertas(2)-Cerradas(2) | Lineas Totales: 12
Una vez creado eso vamos a el public onplayerconnect PERO! antes debemos crear un stock
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

//abajo de  Ruta_Jugador crearemos
#define Login 1
#define Regis 2//recuerden que estos son ID 1 - 2 ... Revisen que no choquen con otros ID de DIALOGOS


stock INI_Exist(nickname[])//este stock verificara si existe la cuenta o no
{
  new tmp[128];
  format(tmp,sizeof(tmp),Ruta_Jugador, nickname);
  return fexist(tmp);
}

public OnPlayerConnect(playerid)
{
if(INI_Exist(Name(playerid)))//Si existe la cuenta ... 
{
Cargarclave(playerid);//le cargamos la clave
ShowPlayerDialog(playerid,Login,DIALOG_STYLE_PASSWORD,"Login","Su cuenta esta registrada en nuestra base de datos","Ingresar","");
}
else//Si noo...
{
ShowPlayerDialog(playerid,Regis,DIALOG_STYLE_PASSWORD,"Registro","Su cuenta no esta registrada en nuestra base de datos","Registrar","");
}
return 1;
}
  Cantidad de llaves: Abiertas(4)-Cerradas(4) | Lineas Totales: 25
Luego de crear estos dialogos... Si no sabes crear dialogos busca en el foro hay una guia donde se explican
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
     case Login:
     {
         if(response)
         {
             if(strcmp(inputtext,Info[playerid][Clave],false)==0)//comparamos nuestra clave con la ingresada en el login
            {
                 //Si es igual hara esto
                SpawnPlayer(playerid);
            }
            else Kick(playerid);
         }
         else Kick(playerid);
     }
    case Regis:
    {
        if(response)
        {
            new st[128];
            format(st,sizeof(st),Ruta_Jugador,Name(playerid));
            new INI:File = INI_Open(st);
            INI_WriteString(File,"Clave",Info[playerid][Clave]);
            INI_Close(File);
            SpawnPlayer(playerid);
        }
        else Kick(playerid);
     }
}
return 1;
}
  Cantidad de llaves: Abiertas(7)-Cerradas(7) | Lineas Totales: 33
Ya tenemos nuestro registro listo ahora para que guarde la cuenta ponemos en OnPlayerDisconnect
 Codigo Pawno:
1

Guardarcuenta(playerid);
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1

PD: esta guia no tiene puntos de spawn, sistemas extra solamente lo que ven.

Guias necesarias antes de aprender esto:
guias-aportes/sobre-manejo-dialogos-t19412.html
guias-aportes/loops-while-for-while-got ... 19546.html
guias-aportes/condicionales-operadores- ... 19396.html


-hi
ayuda porfavor el problema es que no me guarda la contraseña, no me da ningun error en pawn que puede ser?

Hola te ayudare, podrias pasarme ss de tu codigo y de tu carpeta.

Saludos!
[img]http://i.imgur.com/ewTFkYP.jpg[/img]

[url=http://pawnscript.com/foro/viewtopic.php?f=41&t=7263&p=42268#p42268]Roleplay Base v0.2 Beta[/url]

Innovando, Imaginando y creando así nacen los mejores sistemas
Luego vienen los bugs
Nacion Zombie RPG
Battlerine Royale SA-MP

jaimicko
Aprendiz
Aprendiz
Mensajes: 94
Registrado: 18 May 2017 15:48
Reputación: 0

18 Feb 2019 13:54

FailLout escribió:
18 Feb 2019 13:45
jaimicko escribió:
18 Feb 2019 13:34
FailLout escribió:
25 Ene 2017 18:24
Buenas a todos los queridos usuarios de pawnoscript Invitado la guia de hoy tratara de explicar paso a paso como crear un simple guardado y cargado de cuenta en INI primero que nada.

¿Que necesitamos?
Necesitaras lo siguiente:
ncludes:
YSI\y_ini
a_samp


Tener un conocimiento basico de condicionales, si no es asi les recomiendo leer la guia de Matt primero para que tengan un concepto basico de como hacer condicionales y loops -hi

Una vez aclarado eso vamos a ello!

primero debemos crear un "Enum" para almacenar varias variables en una asi nos ahorramos mas trabajo a la hora de programar

un ejemplo de lo que digo
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14

//
new Score[MAX_PLAYERS];
new Admin[MAX_PLAYERS];
new Float:Vida[MAX_PLAYERS];
new Float:Chaleco[MAX_PLAYERS];
//
enum pInfo
{
Score,
Admin,
Float:Vida,
Float:Chaleco
}
new Info[MAX_PLAYERS][pInfo];
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 14
Se puede hacer de ambas formas un guardado y cargado pero si lo hacemos creando variables que se guardaran con "new" el proceso se hara mas largo y desordenado, con enum es mas sencillo y ordenado

Ok una vez aclarado eso empecemos!
 Codigo Pawno:
1
2
3
4
5
6
7
8

enum jInformacion
{
Clave[12], //Tenemos variable clave con string de 12 caracteres
Float:Vida, //Una flotante de vida
Float:Chaleco,//flotante de chaleco
Score//escore INT
}
new Info[MAX_PLAYERS][jInformacion];
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 8
Es muy importante que identifiquen las variables si son Flotantes, int,string,hexa o binario. Este tutorial sera sencillo y abarcara solamente lo mas basico, flotantes, int y string

Luego de eso ¿Que hacemos?

Nos toca crear un guardado pero antes necesitamos hacer una ruta

¿Una ruta? si una ruta asi le llamo a la definicion de donde ira guardada o donde se almacenara en este caso la cuenta
Asi que Abajo de los include pondremos
 Codigo Pawno:
1

#define Ruta_Jugador "Cuentas/%s.ini"
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
Si se preguntan ¿Donde creo la carpeta "Cuentas"? esta carpeta se crea en scriptfiles. Recuerden crearla por que si no les dara bug de guardado y como en scriptfiles no hay una carpeta con dicho nombre no se guardara la misma

Una vez echo eso vamos a crear los siguientes forward. Es muy importante esto. Hay gente que le gusta hacer el guardado como stock. A mi personalmente me gusta hacerla tipo funcion
 Codigo Pawno:
1
2
3

forward Guardarcuenta(playerid);
forward Cargarcuenta_data(playerid,name[],value[]);//Es muy importante que pongan name[],value[] aca por que esas variables ayudan a cargar cada dato al jugador. Si no se crean dara "error"
forward Cargarcuenta(playerid);//Esta es para llamar el cargado...
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 3
Ok perfecto ya vamos un paso adelante!! ahora vamos a hacer el guardado de cuentas. Es muy importante que tengan en cuenta la "Clave" no se guarda con las otras variables ya que esta variable Solo se guarda 1 ves y se carga. El guardado y cargado de ella esta aparte para no provocar bugs en el "Lobby"
Asi que crearemos estos forwards !
 Codigo Pawno:
1
2

forward CargarClave_data(playerid,name[],value[]);
forward Cargarclave(playerid);
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 2

Ahora vamos a lo nuestro a realizar el guardado de cuenta

Para guardar las variables, hay varias formas pero en el INI es de la siguiente
para las int
INI_WriteInt(ARCHIVO,"NOMBREVARIABLE",VARIABLE);
//float
INI_WriteFloat(ARCHIVO,"NOMBREVARIABLE",VARIABLE);
//string
INI_WriteString(ARCHIVO,"NOMBREVARIABLE",VARIABLE);
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

//crearemos este stock para ahorrarme algo de tiempo
stock Name(playerid)
{
new N[MAX_PLAYER_NAME];
GetPlayerName(playerid,N,sizeof(N));
return N;
}
public Guardarcuenta(playerid)
{
new st[128];
format(st,128,Ruta_Jugador,Name(playerid));//Marcamos el numero
new INI:File = INI_Open(st);//Hacemos la llamada
Info[playerid][Score] = GetPlayerScore(playerid);//Tenemos que hacer esto para que nuestro score se guarde
INI_WriteInt(File,"Score",Info[playerid][Score]);
GetPlayerHealth(playerid,Info[playerid][Vida]);//Tenemos que hacer esto para que nuestra vida se guarde
INI_WriteFloat(File,"Vida",Info[playerid][Vida]);
GetPlayerArmour(playerid,Info[playerid][Chaleco]);//Tenemos que hacer esto para que nuestro chaleco se guarde
INI_WriteFloat(File,"Chaleco",Info[playerid][Chaleco]);
INI_Close(File);//colgamos la llamada
return 1;
}
  Cantidad de llaves: Abiertas(2)-Cerradas(2) | Lineas Totales: 21
Para los que no entienden, La referencia a marcamos el numero, alli le digo asi por que gracias a eso es que podemos llamar la cuenta cuando pongo la funcion INI_Open que es en sentido figurado el "Telefono" por eso digo que hacemos la llamda por que llamamos a la cuenta. El INI_Close hago referencia en colgamos la llamada por que esta funcion cierra y almacena nuestra cuenta

Ahora vamos al cargado
Como para guardar se hace con unas funciones para cargar son otras funciones
Int
INI_Int("NOMBREVARIABLE",Variable);
Float
INI_Float("NOMBREVARIABLE",Variable);
String
INI_String("NOMBREVARIABLE",Variable,TAMAÑO STRING);
 Codigo Pawno:
1
2
3
4
5
6
7

public Cargarcuenta_data(playerid,name[],value[])
{
INI_Int("Score",Info[playerid][Score]);
INI_Float("Vida",Info[playerid][Vida]);
INI_Float("Chaleco",Info[playerid][Chaleco]);
return 1;
}
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 7
Aca no necesitamos llamar a la cuenta aun por que estamos haciendo cargado a variables pero no le integramos valores de el guardado aun! para ello necesitamos la siguiente funcion INI_ParseFile
INI_ParseFile(filename[], remoteFormat[], bool:bFileFirst = false, bool:bExtra = false, extra = 0, bool:bLocal = false, bool:bPassTag = false) //Salido de wiki ... No necesitaremos mucho solamente lo siguiente
 Codigo Pawno:
1
2
3
4
5
6
7

public Cargarcuenta(playerid)
{
new st[128];
format(st,128,Ruta_Jugador,Name(playerid));
INI_ParseFile(st,"Cargarcuenta_data", .bExtra = false, .extra = playerid);// Asi creamos un cargado de cuenta eh ingresamos las variables al jugador, llamando Cargarcuenta_data
return 1;
}
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 7
Hasta aca llega esta guia Nos vemos en la parte dos!!

-hi

Edit-

Retomando la guia pasada ..... Quedamos en crear el cargado de clave, guardado de clave y el resto del registro.

Ok crearemos el cargado de clave. Te preguntaras ¿POR QUE CREAR Este cargado si no has creado el guardado? ... Es una pregunta facil el guardado se creara en su debido tiempo, cuando ya creemos el log del registro. mientras crearemos su cargado.
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12

public CargarClave_data(playerid,name[],value[])
{
INI_String("Clave",Info[playerid][Clave],12);
return 1;
}
public Cargarclave(playerid)
{
new st[128];
format(st,128,Ruta_Jugador,Name(playerid));
INI_ParseFile(st,"CargarClave_data", .bExtra = false, .extra = playerid);
return 1;
}
  Cantidad de llaves: Abiertas(2)-Cerradas(2) | Lineas Totales: 12
Una vez creado eso vamos a el public onplayerconnect PERO! antes debemos crear un stock
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

//abajo de  Ruta_Jugador crearemos
#define Login 1
#define Regis 2//recuerden que estos son ID 1 - 2 ... Revisen que no choquen con otros ID de DIALOGOS


stock INI_Exist(nickname[])//este stock verificara si existe la cuenta o no
{
  new tmp[128];
  format(tmp,sizeof(tmp),Ruta_Jugador, nickname);
  return fexist(tmp);
}

public OnPlayerConnect(playerid)
{
if(INI_Exist(Name(playerid)))//Si existe la cuenta ... 
{
Cargarclave(playerid);//le cargamos la clave
ShowPlayerDialog(playerid,Login,DIALOG_STYLE_PASSWORD,"Login","Su cuenta esta registrada en nuestra base de datos","Ingresar","");
}
else//Si noo...
{
ShowPlayerDialog(playerid,Regis,DIALOG_STYLE_PASSWORD,"Registro","Su cuenta no esta registrada en nuestra base de datos","Registrar","");
}
return 1;
}
  Cantidad de llaves: Abiertas(4)-Cerradas(4) | Lineas Totales: 25
Luego de crear estos dialogos... Si no sabes crear dialogos busca en el foro hay una guia donde se explican
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
     case Login:
     {
         if(response)
         {
             if(strcmp(inputtext,Info[playerid][Clave],false)==0)//comparamos nuestra clave con la ingresada en el login
            {
                 //Si es igual hara esto
                SpawnPlayer(playerid);
            }
            else Kick(playerid);
         }
         else Kick(playerid);
     }
    case Regis:
    {
        if(response)
        {
            new st[128];
            format(st,sizeof(st),Ruta_Jugador,Name(playerid));
            new INI:File = INI_Open(st);
            INI_WriteString(File,"Clave",Info[playerid][Clave]);
            INI_Close(File);
            SpawnPlayer(playerid);
        }
        else Kick(playerid);
     }
}
return 1;
}
  Cantidad de llaves: Abiertas(7)-Cerradas(7) | Lineas Totales: 33
Ya tenemos nuestro registro listo ahora para que guarde la cuenta ponemos en OnPlayerDisconnect
 Codigo Pawno:
1

Guardarcuenta(playerid);
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1

PD: esta guia no tiene puntos de spawn, sistemas extra solamente lo que ven.

Guias necesarias antes de aprender esto:
guias-aportes/sobre-manejo-dialogos-t19412.html
guias-aportes/loops-while-for-while-got ... 19546.html
guias-aportes/condicionales-operadores- ... 19396.html


-hi
ayuda porfavor el problema es que no me guarda la contraseña, no me da ningun error en pawn que puede ser?

Hola te ayudare, podrias pasarme ss de tu codigo y de tu carpeta.

Saludos!
este es el codigo
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357

// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT

#include <a_samp>
#include <YSI\y_ini>

#define Ruta_Jugador "Cuentas/%s.ini"

//abajo de  Ruta_Jugador crearemos
#define Login 1
#define Regis 2//recuerden que estos son ID 1 - 2 ... Revisen que no choquen con otros ID de DIALOGOS

forward Guardarcuenta(playerid);
forward Cargarcuenta_data(playerid,name[],value[]);//Es muy importante que pongan name[],value[] aca por que esas variables ayudan a cargar cada dato al jugador. Si no se crean dara "error"
forward Cargarcuenta(playerid);//Esta es para llamar el cargado...

forward CargarClave_data(playerid,name[],value[]);
forward Cargarclave(playerid);

enum jInformacion
{
	Clave[12], //Tenemos variable clave con string de 12 caracteres
	Float:Vida, //Una flotante de vida
	Float:Chaleco,//flotante de chaleco
	Score//escore INT
}
new Info[MAX_PLAYERS][jInformacion];

#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
	print("\n--------------------------------------");
	print(" Blank Filterscript by your name here");
	print("--------------------------------------\n");
	return 1;
}

public OnFilterScriptExit()
{
	return 1;
}

#else

main()
{
	print("\n----------------------------------");
	print(" Blank Gamemode by your name here");
	print("----------------------------------\n");
}

#endif

public OnGameModeInit()
{
	// Don't use these lines if it's a filterscript
	SetGameModeText("Blank Script");
	AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
	return 1;
}

public OnGameModeExit()
{
	return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
	SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
	return 1;
}

public OnPlayerConnect(playerid)
{
	if(INI_Exist(Name(playerid)))//Si existe la cuenta ...
	{
		Cargarclave(playerid);//le cargamos la clave
		ShowPlayerDialog(playerid,Login,DIALOG_STYLE_PASSWORD,"Login","Su cuenta esta registrada en nuestra base de datos","Ingresar","");
	}
	else//Si noo...
	{
		ShowPlayerDialog(playerid,Regis,DIALOG_STYLE_PASSWORD,"Registro","Su cuenta no esta registrada en nuestra base de datos","Registrar","");
	}
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    Guardarcuenta(playerid);
	return 1;
}

public OnPlayerSpawn(playerid)
{
	return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
	return 1;
}

public OnVehicleSpawn(vehicleid)
{
	return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
	return 1;
}

public OnPlayerText(playerid, text[])
{
	return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
	if (strcmp("/mycommand", cmdtext, true, 10) == 0)
	{
		// Do something here
		return 1;
	}
	return 0;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
	return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
	return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
	return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
	return 1;
}

public OnPlayerLeaveCheckpoint(playerid)
{
	return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
	return 1;
}

public OnPlayerLeaveRaceCheckpoint(playerid)
{
	return 1;
}

public OnRconCommand(cmd[])
{
	return 1;
}

public OnPlayerRequestSpawn(playerid)
{
	return 1;
}

public OnObjectMoved(objectid)
{
	return 1;
}

public OnPlayerObjectMoved(playerid, objectid)
{
	return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
	return 1;
}

public OnVehicleMod(playerid, vehicleid, componentid)
{
	return 1;
}

public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
	return 1;
}

public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
	return 1;
}

public OnPlayerSelectedMenuRow(playerid, row)
{
	return 1;
}

public OnPlayerExitedMenu(playerid)
{
	return 1;
}

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
	return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
	return 1;
}

public OnRconLoginAttempt(ip[], password[], success)
{
	return 1;
}

public OnPlayerUpdate(playerid)
{
	return 1;
}

public OnPlayerStreamIn(playerid, forplayerid)
{
	return 1;
}

public OnPlayerStreamOut(playerid, forplayerid)
{
	return 1;
}

public OnVehicleStreamIn(vehicleid, forplayerid)
{
	return 1;
}

public OnVehicleStreamOut(vehicleid, forplayerid)
{
	return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	switch(dialogid)
	{
		case Login:
		{
			if(response)
			{
				if(strcmp(inputtext,Info[playerid][Clave],false)==0)//comparamos nuestra clave con la ingresada en el login
	            {
	                 //Si es igual hara esto
	                SpawnPlayer(playerid);
	            }
				else
				{
					Kick(playerid);
				}
			}
			else
			{
				Kick(playerid);
			}
		}
		case Regis:
		{
			if(response)
	        {
	            new st[128];
	            format(st,sizeof(st),Ruta_Jugador,Name(playerid));
	            new INI:File = INI_Open(st);
	            INI_WriteString(File,"Clave",Info[playerid][Clave]);
	            INI_Close(File);
	            SpawnPlayer(playerid);
	        }
	        else Kick(playerid);
	     }
	}
	return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
	return 1;
}

stock Name(playerid)
{
	new N[MAX_PLAYER_NAME];
	GetPlayerName(playerid,N,sizeof(N));
	return N;
}
public Guardarcuenta(playerid)
{
	new st[128];
	format(st,128,Ruta_Jugador,Name(playerid));//Marcamos el numero
	new INI:File = INI_Open(st);//Hacemos la llamada
	Info[playerid][Score] = GetPlayerScore(playerid);//Tenemos que hacer esto para que nuestro score se guarde
	INI_WriteInt(File,"Score",Info[playerid][Score]);
	GetPlayerHealth(playerid,Info[playerid][Vida]);//Tenemos que hacer esto para que nuestra vida se guarde
	INI_WriteFloat(File,"Vida",Info[playerid][Vida]);
	GetPlayerArmour(playerid,Info[playerid][Chaleco]);//Tenemos que hacer esto para que nuestro chaleco se guarde
	INI_WriteFloat(File,"Chaleco",Info[playerid][Chaleco]);
	INI_Close(File);//colgamos la llamada
	return 1;
}

public Cargarcuenta_data(playerid,name[],value[])
{
	INI_Int("Score",Info[playerid][Score]);
	INI_Float("Vida",Info[playerid][Vida]);
	INI_Float("Chaleco",Info[playerid][Chaleco]);
	return 1;
}

public Cargarcuenta(playerid)
{
	new st[128];
	format(st,128,Ruta_Jugador,Name(playerid));
	INI_ParseFile(st,"Cargarcuenta_data", .bExtra = false, .extra = playerid);// Asi creamos un cargado de cuenta eh ingresamos las variables al jugador, llamando Cargarcuenta_data
	return 1;
}

public CargarClave_data(playerid,name[],value[])
{
	INI_String("Clave",Info[playerid][Clave],12);
	return 1;
}
public Cargarclave(playerid)
{
	new st[128];
	format(st,128,Ruta_Jugador,Name(playerid));
	INI_ParseFile(st,"CargarClave_data", .bExtra = false, .extra = playerid);
	return 1;
}

stock INI_Exist(nickname[])//este stock verificara si existe la cuenta o no
{
  new tmp[128];
  format(tmp,sizeof(tmp),Ruta_Jugador, nickname);
  return fexist(tmp);
}
  Cantidad de llaves: Abiertas(60)-Cerradas(60) | Lineas Totales: 357
Avatar de Usuario
FailLout
Avanzado
Avanzado
Mensajes: 1385
Registrado: 10 Abr 2014 14:09
Ubicación: Estados Unidos
Contactar:
Reputación: 40

18 Feb 2019 14:03

jaimicko escribió:
18 Feb 2019 13:54
FailLout escribió:
18 Feb 2019 13:45
jaimicko escribió:
18 Feb 2019 13:34


ayuda porfavor el problema es que no me guarda la contraseña, no me da ningun error en pawn que puede ser?

Hola te ayudare, podrias pasarme ss de tu codigo y de tu carpeta.

Saludos!
este es el codigo
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357

// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT

#include <a_samp>
#include <YSI\y_ini>

#define Ruta_Jugador "Cuentas/%s.ini"

//abajo de  Ruta_Jugador crearemos
#define Login 1
#define Regis 2//recuerden que estos son ID 1 - 2 ... Revisen que no choquen con otros ID de DIALOGOS

forward Guardarcuenta(playerid);
forward Cargarcuenta_data(playerid,name[],value[]);//Es muy importante que pongan name[],value[] aca por que esas variables ayudan a cargar cada dato al jugador. Si no se crean dara "error"
forward Cargarcuenta(playerid);//Esta es para llamar el cargado...

forward CargarClave_data(playerid,name[],value[]);
forward Cargarclave(playerid);

enum jInformacion
{
	Clave[12], //Tenemos variable clave con string de 12 caracteres
	Float:Vida, //Una flotante de vida
	Float:Chaleco,//flotante de chaleco
	Score//escore INT
}
new Info[MAX_PLAYERS][jInformacion];

#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
	print("\n--------------------------------------");
	print(" Blank Filterscript by your name here");
	print("--------------------------------------\n");
	return 1;
}

public OnFilterScriptExit()
{
	return 1;
}

#else

main()
{
	print("\n----------------------------------");
	print(" Blank Gamemode by your name here");
	print("----------------------------------\n");
}

#endif

public OnGameModeInit()
{
	// Don't use these lines if it's a filterscript
	SetGameModeText("Blank Script");
	AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
	return 1;
}

public OnGameModeExit()
{
	return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
	SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
	return 1;
}

public OnPlayerConnect(playerid)
{
	if(INI_Exist(Name(playerid)))//Si existe la cuenta ...
	{
		Cargarclave(playerid);//le cargamos la clave
		ShowPlayerDialog(playerid,Login,DIALOG_STYLE_PASSWORD,"Login","Su cuenta esta registrada en nuestra base de datos","Ingresar","");
	}
	else//Si noo...
	{
		ShowPlayerDialog(playerid,Regis,DIALOG_STYLE_PASSWORD,"Registro","Su cuenta no esta registrada en nuestra base de datos","Registrar","");
	}
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    Guardarcuenta(playerid);
	return 1;
}

public OnPlayerSpawn(playerid)
{
	return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
	return 1;
}

public OnVehicleSpawn(vehicleid)
{
	return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
	return 1;
}

public OnPlayerText(playerid, text[])
{
	return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
	if (strcmp("/mycommand", cmdtext, true, 10) == 0)
	{
		// Do something here
		return 1;
	}
	return 0;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
	return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
	return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
	return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
	return 1;
}

public OnPlayerLeaveCheckpoint(playerid)
{
	return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
	return 1;
}

public OnPlayerLeaveRaceCheckpoint(playerid)
{
	return 1;
}

public OnRconCommand(cmd[])
{
	return 1;
}

public OnPlayerRequestSpawn(playerid)
{
	return 1;
}

public OnObjectMoved(objectid)
{
	return 1;
}

public OnPlayerObjectMoved(playerid, objectid)
{
	return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
	return 1;
}

public OnVehicleMod(playerid, vehicleid, componentid)
{
	return 1;
}

public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
	return 1;
}

public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
	return 1;
}

public OnPlayerSelectedMenuRow(playerid, row)
{
	return 1;
}

public OnPlayerExitedMenu(playerid)
{
	return 1;
}

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
	return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
	return 1;
}

public OnRconLoginAttempt(ip[], password[], success)
{
	return 1;
}

public OnPlayerUpdate(playerid)
{
	return 1;
}

public OnPlayerStreamIn(playerid, forplayerid)
{
	return 1;
}

public OnPlayerStreamOut(playerid, forplayerid)
{
	return 1;
}

public OnVehicleStreamIn(vehicleid, forplayerid)
{
	return 1;
}

public OnVehicleStreamOut(vehicleid, forplayerid)
{
	return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	switch(dialogid)
	{
		case Login:
		{
			if(response)
			{
				if(strcmp(inputtext,Info[playerid][Clave],false)==0)//comparamos nuestra clave con la ingresada en el login
	            {
	                 //Si es igual hara esto
	                SpawnPlayer(playerid);
	            }
				else
				{
					Kick(playerid);
				}
			}
			else
			{
				Kick(playerid);
			}
		}
		case Regis:
		{
			if(response)
	        {
	            new st[128];
	            format(st,sizeof(st),Ruta_Jugador,Name(playerid));
	            new INI:File = INI_Open(st);
	            INI_WriteString(File,"Clave",Info[playerid][Clave]);
	            INI_Close(File);
	            SpawnPlayer(playerid);
	        }
	        else Kick(playerid);
	     }
	}
	return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
	return 1;
}

stock Name(playerid)
{
	new N[MAX_PLAYER_NAME];
	GetPlayerName(playerid,N,sizeof(N));
	return N;
}
public Guardarcuenta(playerid)
{
	new st[128];
	format(st,128,Ruta_Jugador,Name(playerid));//Marcamos el numero
	new INI:File = INI_Open(st);//Hacemos la llamada
	Info[playerid][Score] = GetPlayerScore(playerid);//Tenemos que hacer esto para que nuestro score se guarde
	INI_WriteInt(File,"Score",Info[playerid][Score]);
	GetPlayerHealth(playerid,Info[playerid][Vida]);//Tenemos que hacer esto para que nuestra vida se guarde
	INI_WriteFloat(File,"Vida",Info[playerid][Vida]);
	GetPlayerArmour(playerid,Info[playerid][Chaleco]);//Tenemos que hacer esto para que nuestro chaleco se guarde
	INI_WriteFloat(File,"Chaleco",Info[playerid][Chaleco]);
	INI_Close(File);//colgamos la llamada
	return 1;
}

public Cargarcuenta_data(playerid,name[],value[])
{
	INI_Int("Score",Info[playerid][Score]);
	INI_Float("Vida",Info[playerid][Vida]);
	INI_Float("Chaleco",Info[playerid][Chaleco]);
	return 1;
}

public Cargarcuenta(playerid)
{
	new st[128];
	format(st,128,Ruta_Jugador,Name(playerid));
	INI_ParseFile(st,"Cargarcuenta_data", .bExtra = false, .extra = playerid);// Asi creamos un cargado de cuenta eh ingresamos las variables al jugador, llamando Cargarcuenta_data
	return 1;
}

public CargarClave_data(playerid,name[],value[])
{
	INI_String("Clave",Info[playerid][Clave],12);
	return 1;
}
public Cargarclave(playerid)
{
	new st[128];
	format(st,128,Ruta_Jugador,Name(playerid));
	INI_ParseFile(st,"CargarClave_data", .bExtra = false, .extra = playerid);
	return 1;
}

stock INI_Exist(nickname[])//este stock verificara si existe la cuenta o no
{
  new tmp[128];
  format(tmp,sizeof(tmp),Ruta_Jugador, nickname);
  return fexist(tmp);
}
  Cantidad de llaves: Abiertas(60)-Cerradas(60) | Lineas Totales: 357

Creaste la carpeta en scriptfiles llamada Cuentas
[img]http://i.imgur.com/ewTFkYP.jpg[/img]

[url=http://pawnscript.com/foro/viewtopic.php?f=41&t=7263&p=42268#p42268]Roleplay Base v0.2 Beta[/url]

Innovando, Imaginando y creando así nacen los mejores sistemas
Luego vienen los bugs
Nacion Zombie RPG
Battlerine Royale SA-MP

jaimicko
Aprendiz
Aprendiz
Mensajes: 94
Registrado: 18 May 2017 15:48
Reputación: 0

18 Feb 2019 14:07

FailLout escribió:
18 Feb 2019 14:03
jaimicko escribió:
18 Feb 2019 13:54
FailLout escribió:
18 Feb 2019 13:45



Hola te ayudare, podrias pasarme ss de tu codigo y de tu carpeta.

Saludos!
este es el codigo
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357

// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT

#include <a_samp>
#include <YSI\y_ini>

#define Ruta_Jugador "Cuentas/%s.ini"

//abajo de  Ruta_Jugador crearemos
#define Login 1
#define Regis 2//recuerden que estos son ID 1 - 2 ... Revisen que no choquen con otros ID de DIALOGOS

forward Guardarcuenta(playerid);
forward Cargarcuenta_data(playerid,name[],value[]);//Es muy importante que pongan name[],value[] aca por que esas variables ayudan a cargar cada dato al jugador. Si no se crean dara "error"
forward Cargarcuenta(playerid);//Esta es para llamar el cargado...

forward CargarClave_data(playerid,name[],value[]);
forward Cargarclave(playerid);

enum jInformacion
{
	Clave[12], //Tenemos variable clave con string de 12 caracteres
	Float:Vida, //Una flotante de vida
	Float:Chaleco,//flotante de chaleco
	Score//escore INT
}
new Info[MAX_PLAYERS][jInformacion];

#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
	print("\n--------------------------------------");
	print(" Blank Filterscript by your name here");
	print("--------------------------------------\n");
	return 1;
}

public OnFilterScriptExit()
{
	return 1;
}

#else

main()
{
	print("\n----------------------------------");
	print(" Blank Gamemode by your name here");
	print("----------------------------------\n");
}

#endif

public OnGameModeInit()
{
	// Don't use these lines if it's a filterscript
	SetGameModeText("Blank Script");
	AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
	return 1;
}

public OnGameModeExit()
{
	return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
	SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
	return 1;
}

public OnPlayerConnect(playerid)
{
	if(INI_Exist(Name(playerid)))//Si existe la cuenta ...
	{
		Cargarclave(playerid);//le cargamos la clave
		ShowPlayerDialog(playerid,Login,DIALOG_STYLE_PASSWORD,"Login","Su cuenta esta registrada en nuestra base de datos","Ingresar","");
	}
	else//Si noo...
	{
		ShowPlayerDialog(playerid,Regis,DIALOG_STYLE_PASSWORD,"Registro","Su cuenta no esta registrada en nuestra base de datos","Registrar","");
	}
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    Guardarcuenta(playerid);
	return 1;
}

public OnPlayerSpawn(playerid)
{
	return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
	return 1;
}

public OnVehicleSpawn(vehicleid)
{
	return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
	return 1;
}

public OnPlayerText(playerid, text[])
{
	return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
	if (strcmp("/mycommand", cmdtext, true, 10) == 0)
	{
		// Do something here
		return 1;
	}
	return 0;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
	return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
	return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
	return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
	return 1;
}

public OnPlayerLeaveCheckpoint(playerid)
{
	return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
	return 1;
}

public OnPlayerLeaveRaceCheckpoint(playerid)
{
	return 1;
}

public OnRconCommand(cmd[])
{
	return 1;
}

public OnPlayerRequestSpawn(playerid)
{
	return 1;
}

public OnObjectMoved(objectid)
{
	return 1;
}

public OnPlayerObjectMoved(playerid, objectid)
{
	return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
	return 1;
}

public OnVehicleMod(playerid, vehicleid, componentid)
{
	return 1;
}

public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
	return 1;
}

public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
	return 1;
}

public OnPlayerSelectedMenuRow(playerid, row)
{
	return 1;
}

public OnPlayerExitedMenu(playerid)
{
	return 1;
}

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
	return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
	return 1;
}

public OnRconLoginAttempt(ip[], password[], success)
{
	return 1;
}

public OnPlayerUpdate(playerid)
{
	return 1;
}

public OnPlayerStreamIn(playerid, forplayerid)
{
	return 1;
}

public OnPlayerStreamOut(playerid, forplayerid)
{
	return 1;
}

public OnVehicleStreamIn(vehicleid, forplayerid)
{
	return 1;
}

public OnVehicleStreamOut(vehicleid, forplayerid)
{
	return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	switch(dialogid)
	{
		case Login:
		{
			if(response)
			{
				if(strcmp(inputtext,Info[playerid][Clave],false)==0)//comparamos nuestra clave con la ingresada en el login
	            {
	                 //Si es igual hara esto
	                SpawnPlayer(playerid);
	            }
				else
				{
					Kick(playerid);
				}
			}
			else
			{
				Kick(playerid);
			}
		}
		case Regis:
		{
			if(response)
	        {
	            new st[128];
	            format(st,sizeof(st),Ruta_Jugador,Name(playerid));
	            new INI:File = INI_Open(st);
	            INI_WriteString(File,"Clave",Info[playerid][Clave]);
	            INI_Close(File);
	            SpawnPlayer(playerid);
	        }
	        else Kick(playerid);
	     }
	}
	return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
	return 1;
}

stock Name(playerid)
{
	new N[MAX_PLAYER_NAME];
	GetPlayerName(playerid,N,sizeof(N));
	return N;
}
public Guardarcuenta(playerid)
{
	new st[128];
	format(st,128,Ruta_Jugador,Name(playerid));//Marcamos el numero
	new INI:File = INI_Open(st);//Hacemos la llamada
	Info[playerid][Score] = GetPlayerScore(playerid);//Tenemos que hacer esto para que nuestro score se guarde
	INI_WriteInt(File,"Score",Info[playerid][Score]);
	GetPlayerHealth(playerid,Info[playerid][Vida]);//Tenemos que hacer esto para que nuestra vida se guarde
	INI_WriteFloat(File,"Vida",Info[playerid][Vida]);
	GetPlayerArmour(playerid,Info[playerid][Chaleco]);//Tenemos que hacer esto para que nuestro chaleco se guarde
	INI_WriteFloat(File,"Chaleco",Info[playerid][Chaleco]);
	INI_Close(File);//colgamos la llamada
	return 1;
}

public Cargarcuenta_data(playerid,name[],value[])
{
	INI_Int("Score",Info[playerid][Score]);
	INI_Float("Vida",Info[playerid][Vida]);
	INI_Float("Chaleco",Info[playerid][Chaleco]);
	return 1;
}

public Cargarcuenta(playerid)
{
	new st[128];
	format(st,128,Ruta_Jugador,Name(playerid));
	INI_ParseFile(st,"Cargarcuenta_data", .bExtra = false, .extra = playerid);// Asi creamos un cargado de cuenta eh ingresamos las variables al jugador, llamando Cargarcuenta_data
	return 1;
}

public CargarClave_data(playerid,name[],value[])
{
	INI_String("Clave",Info[playerid][Clave],12);
	return 1;
}
public Cargarclave(playerid)
{
	new st[128];
	format(st,128,Ruta_Jugador,Name(playerid));
	INI_ParseFile(st,"CargarClave_data", .bExtra = false, .extra = playerid);
	return 1;
}

stock INI_Exist(nickname[])//este stock verificara si existe la cuenta o no
{
  new tmp[128];
  format(tmp,sizeof(tmp),Ruta_Jugador, nickname);
  return fexist(tmp);
}
  Cantidad de llaves: Abiertas(60)-Cerradas(60) | Lineas Totales: 357

Creaste la carpeta en scriptfiles llamada Cuentas
si esta creada
jaimicko
Aprendiz
Aprendiz
Mensajes: 94
Registrado: 18 May 2017 15:48
Reputación: 0

18 Feb 2019 14:11

FailLout escribió:
18 Feb 2019 14:03
jaimicko escribió:
18 Feb 2019 13:54
FailLout escribió:
18 Feb 2019 13:45



Hola te ayudare, podrias pasarme ss de tu codigo y de tu carpeta.

Saludos!
este es el codigo
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357

// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT

#include <a_samp>
#include <YSI\y_ini>

#define Ruta_Jugador "Cuentas/%s.ini"

//abajo de  Ruta_Jugador crearemos
#define Login 1
#define Regis 2//recuerden que estos son ID 1 - 2 ... Revisen que no choquen con otros ID de DIALOGOS

forward Guardarcuenta(playerid);
forward Cargarcuenta_data(playerid,name[],value[]);//Es muy importante que pongan name[],value[] aca por que esas variables ayudan a cargar cada dato al jugador. Si no se crean dara "error"
forward Cargarcuenta(playerid);//Esta es para llamar el cargado...

forward CargarClave_data(playerid,name[],value[]);
forward Cargarclave(playerid);

enum jInformacion
{
	Clave[12], //Tenemos variable clave con string de 12 caracteres
	Float:Vida, //Una flotante de vida
	Float:Chaleco,//flotante de chaleco
	Score//escore INT
}
new Info[MAX_PLAYERS][jInformacion];

#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
	print("\n--------------------------------------");
	print(" Blank Filterscript by your name here");
	print("--------------------------------------\n");
	return 1;
}

public OnFilterScriptExit()
{
	return 1;
}

#else

main()
{
	print("\n----------------------------------");
	print(" Blank Gamemode by your name here");
	print("----------------------------------\n");
}

#endif

public OnGameModeInit()
{
	// Don't use these lines if it's a filterscript
	SetGameModeText("Blank Script");
	AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
	return 1;
}

public OnGameModeExit()
{
	return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
	SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
	return 1;
}

public OnPlayerConnect(playerid)
{
	if(INI_Exist(Name(playerid)))//Si existe la cuenta ...
	{
		Cargarclave(playerid);//le cargamos la clave
		ShowPlayerDialog(playerid,Login,DIALOG_STYLE_PASSWORD,"Login","Su cuenta esta registrada en nuestra base de datos","Ingresar","");
	}
	else//Si noo...
	{
		ShowPlayerDialog(playerid,Regis,DIALOG_STYLE_PASSWORD,"Registro","Su cuenta no esta registrada en nuestra base de datos","Registrar","");
	}
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    Guardarcuenta(playerid);
	return 1;
}

public OnPlayerSpawn(playerid)
{
	return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
	return 1;
}

public OnVehicleSpawn(vehicleid)
{
	return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
	return 1;
}

public OnPlayerText(playerid, text[])
{
	return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
	if (strcmp("/mycommand", cmdtext, true, 10) == 0)
	{
		// Do something here
		return 1;
	}
	return 0;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
	return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
	return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
	return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
	return 1;
}

public OnPlayerLeaveCheckpoint(playerid)
{
	return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
	return 1;
}

public OnPlayerLeaveRaceCheckpoint(playerid)
{
	return 1;
}

public OnRconCommand(cmd[])
{
	return 1;
}

public OnPlayerRequestSpawn(playerid)
{
	return 1;
}

public OnObjectMoved(objectid)
{
	return 1;
}

public OnPlayerObjectMoved(playerid, objectid)
{
	return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
	return 1;
}

public OnVehicleMod(playerid, vehicleid, componentid)
{
	return 1;
}

public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
	return 1;
}

public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
	return 1;
}

public OnPlayerSelectedMenuRow(playerid, row)
{
	return 1;
}

public OnPlayerExitedMenu(playerid)
{
	return 1;
}

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
	return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
	return 1;
}

public OnRconLoginAttempt(ip[], password[], success)
{
	return 1;
}

public OnPlayerUpdate(playerid)
{
	return 1;
}

public OnPlayerStreamIn(playerid, forplayerid)
{
	return 1;
}

public OnPlayerStreamOut(playerid, forplayerid)
{
	return 1;
}

public OnVehicleStreamIn(vehicleid, forplayerid)
{
	return 1;
}

public OnVehicleStreamOut(vehicleid, forplayerid)
{
	return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	switch(dialogid)
	{
		case Login:
		{
			if(response)
			{
				if(strcmp(inputtext,Info[playerid][Clave],false)==0)//comparamos nuestra clave con la ingresada en el login
	            {
	                 //Si es igual hara esto
	                SpawnPlayer(playerid);
	            }
				else
				{
					Kick(playerid);
				}
			}
			else
			{
				Kick(playerid);
			}
		}
		case Regis:
		{
			if(response)
	        {
	            new st[128];
	            format(st,sizeof(st),Ruta_Jugador,Name(playerid));
	            new INI:File = INI_Open(st);
	            INI_WriteString(File,"Clave",Info[playerid][Clave]);
	            INI_Close(File);
	            SpawnPlayer(playerid);
	        }
	        else Kick(playerid);
	     }
	}
	return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
	return 1;
}

stock Name(playerid)
{
	new N[MAX_PLAYER_NAME];
	GetPlayerName(playerid,N,sizeof(N));
	return N;
}
public Guardarcuenta(playerid)
{
	new st[128];
	format(st,128,Ruta_Jugador,Name(playerid));//Marcamos el numero
	new INI:File = INI_Open(st);//Hacemos la llamada
	Info[playerid][Score] = GetPlayerScore(playerid);//Tenemos que hacer esto para que nuestro score se guarde
	INI_WriteInt(File,"Score",Info[playerid][Score]);
	GetPlayerHealth(playerid,Info[playerid][Vida]);//Tenemos que hacer esto para que nuestra vida se guarde
	INI_WriteFloat(File,"Vida",Info[playerid][Vida]);
	GetPlayerArmour(playerid,Info[playerid][Chaleco]);//Tenemos que hacer esto para que nuestro chaleco se guarde
	INI_WriteFloat(File,"Chaleco",Info[playerid][Chaleco]);
	INI_Close(File);//colgamos la llamada
	return 1;
}

public Cargarcuenta_data(playerid,name[],value[])
{
	INI_Int("Score",Info[playerid][Score]);
	INI_Float("Vida",Info[playerid][Vida]);
	INI_Float("Chaleco",Info[playerid][Chaleco]);
	return 1;
}

public Cargarcuenta(playerid)
{
	new st[128];
	format(st,128,Ruta_Jugador,Name(playerid));
	INI_ParseFile(st,"Cargarcuenta_data", .bExtra = false, .extra = playerid);// Asi creamos un cargado de cuenta eh ingresamos las variables al jugador, llamando Cargarcuenta_data
	return 1;
}

public CargarClave_data(playerid,name[],value[])
{
	INI_String("Clave",Info[playerid][Clave],12);
	return 1;
}
public Cargarclave(playerid)
{
	new st[128];
	format(st,128,Ruta_Jugador,Name(playerid));
	INI_ParseFile(st,"CargarClave_data", .bExtra = false, .extra = playerid);
	return 1;
}

stock INI_Exist(nickname[])//este stock verificara si existe la cuenta o no
{
  new tmp[128];
  format(tmp,sizeof(tmp),Ruta_Jugador, nickname);
  return fexist(tmp);
}
  Cantidad de llaves: Abiertas(60)-Cerradas(60) | Lineas Totales: 357

Creaste la carpeta en scriptfiles llamada Cuentas
y cuando entro al server despues de haberme registrado no me muestra el dialogo de login
Avatar de Usuario
FailLout
Avanzado
Avanzado
Mensajes: 1385
Registrado: 10 Abr 2014 14:09
Ubicación: Estados Unidos
Contactar:
Reputación: 40

18 Feb 2019 17:24

jaimicko escribió:
18 Feb 2019 14:11
FailLout escribió:
18 Feb 2019 14:03
jaimicko escribió:
18 Feb 2019 13:54


este es el codigo
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357

// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT

#include <a_samp>
#include <YSI\y_ini>

#define Ruta_Jugador "Cuentas/%s.ini"

//abajo de  Ruta_Jugador crearemos
#define Login 1
#define Regis 2//recuerden que estos son ID 1 - 2 ... Revisen que no choquen con otros ID de DIALOGOS

forward Guardarcuenta(playerid);
forward Cargarcuenta_data(playerid,name[],value[]);//Es muy importante que pongan name[],value[] aca por que esas variables ayudan a cargar cada dato al jugador. Si no se crean dara "error"
forward Cargarcuenta(playerid);//Esta es para llamar el cargado...

forward CargarClave_data(playerid,name[],value[]);
forward Cargarclave(playerid);

enum jInformacion
{
	Clave[12], //Tenemos variable clave con string de 12 caracteres
	Float:Vida, //Una flotante de vida
	Float:Chaleco,//flotante de chaleco
	Score//escore INT
}
new Info[MAX_PLAYERS][jInformacion];

#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
	print("\n--------------------------------------");
	print(" Blank Filterscript by your name here");
	print("--------------------------------------\n");
	return 1;
}

public OnFilterScriptExit()
{
	return 1;
}

#else

main()
{
	print("\n----------------------------------");
	print(" Blank Gamemode by your name here");
	print("----------------------------------\n");
}

#endif

public OnGameModeInit()
{
	// Don't use these lines if it's a filterscript
	SetGameModeText("Blank Script");
	AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
	return 1;
}

public OnGameModeExit()
{
	return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
	SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
	return 1;
}

public OnPlayerConnect(playerid)
{
	if(INI_Exist(Name(playerid)))//Si existe la cuenta ...
	{
		Cargarclave(playerid);//le cargamos la clave
		ShowPlayerDialog(playerid,Login,DIALOG_STYLE_PASSWORD,"Login","Su cuenta esta registrada en nuestra base de datos","Ingresar","");
	}
	else//Si noo...
	{
		ShowPlayerDialog(playerid,Regis,DIALOG_STYLE_PASSWORD,"Registro","Su cuenta no esta registrada en nuestra base de datos","Registrar","");
	}
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    Guardarcuenta(playerid);
	return 1;
}

public OnPlayerSpawn(playerid)
{
	return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
	return 1;
}

public OnVehicleSpawn(vehicleid)
{
	return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
	return 1;
}

public OnPlayerText(playerid, text[])
{
	return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
	if (strcmp("/mycommand", cmdtext, true, 10) == 0)
	{
		// Do something here
		return 1;
	}
	return 0;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
	return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
	return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
	return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
	return 1;
}

public OnPlayerLeaveCheckpoint(playerid)
{
	return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
	return 1;
}

public OnPlayerLeaveRaceCheckpoint(playerid)
{
	return 1;
}

public OnRconCommand(cmd[])
{
	return 1;
}

public OnPlayerRequestSpawn(playerid)
{
	return 1;
}

public OnObjectMoved(objectid)
{
	return 1;
}

public OnPlayerObjectMoved(playerid, objectid)
{
	return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
	return 1;
}

public OnVehicleMod(playerid, vehicleid, componentid)
{
	return 1;
}

public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
	return 1;
}

public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
	return 1;
}

public OnPlayerSelectedMenuRow(playerid, row)
{
	return 1;
}

public OnPlayerExitedMenu(playerid)
{
	return 1;
}

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
	return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
	return 1;
}

public OnRconLoginAttempt(ip[], password[], success)
{
	return 1;
}

public OnPlayerUpdate(playerid)
{
	return 1;
}

public OnPlayerStreamIn(playerid, forplayerid)
{
	return 1;
}

public OnPlayerStreamOut(playerid, forplayerid)
{
	return 1;
}

public OnVehicleStreamIn(vehicleid, forplayerid)
{
	return 1;
}

public OnVehicleStreamOut(vehicleid, forplayerid)
{
	return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	switch(dialogid)
	{
		case Login:
		{
			if(response)
			{
				if(strcmp(inputtext,Info[playerid][Clave],false)==0)//comparamos nuestra clave con la ingresada en el login
	            {
	                 //Si es igual hara esto
	                SpawnPlayer(playerid);
	            }
				else
				{
					Kick(playerid);
				}
			}
			else
			{
				Kick(playerid);
			}
		}
		case Regis:
		{
			if(response)
	        {
	            new st[128];
	            format(st,sizeof(st),Ruta_Jugador,Name(playerid));
	            new INI:File = INI_Open(st);
	            INI_WriteString(File,"Clave",Info[playerid][Clave]);
	            INI_Close(File);
	            SpawnPlayer(playerid);
	        }
	        else Kick(playerid);
	     }
	}
	return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
	return 1;
}

stock Name(playerid)
{
	new N[MAX_PLAYER_NAME];
	GetPlayerName(playerid,N,sizeof(N));
	return N;
}
public Guardarcuenta(playerid)
{
	new st[128];
	format(st,128,Ruta_Jugador,Name(playerid));//Marcamos el numero
	new INI:File = INI_Open(st);//Hacemos la llamada
	Info[playerid][Score] = GetPlayerScore(playerid);//Tenemos que hacer esto para que nuestro score se guarde
	INI_WriteInt(File,"Score",Info[playerid][Score]);
	GetPlayerHealth(playerid,Info[playerid][Vida]);//Tenemos que hacer esto para que nuestra vida se guarde
	INI_WriteFloat(File,"Vida",Info[playerid][Vida]);
	GetPlayerArmour(playerid,Info[playerid][Chaleco]);//Tenemos que hacer esto para que nuestro chaleco se guarde
	INI_WriteFloat(File,"Chaleco",Info[playerid][Chaleco]);
	INI_Close(File);//colgamos la llamada
	return 1;
}

public Cargarcuenta_data(playerid,name[],value[])
{
	INI_Int("Score",Info[playerid][Score]);
	INI_Float("Vida",Info[playerid][Vida]);
	INI_Float("Chaleco",Info[playerid][Chaleco]);
	return 1;
}

public Cargarcuenta(playerid)
{
	new st[128];
	format(st,128,Ruta_Jugador,Name(playerid));
	INI_ParseFile(st,"Cargarcuenta_data", .bExtra = false, .extra = playerid);// Asi creamos un cargado de cuenta eh ingresamos las variables al jugador, llamando Cargarcuenta_data
	return 1;
}

public CargarClave_data(playerid,name[],value[])
{
	INI_String("Clave",Info[playerid][Clave],12);
	return 1;
}
public Cargarclave(playerid)
{
	new st[128];
	format(st,128,Ruta_Jugador,Name(playerid));
	INI_ParseFile(st,"CargarClave_data", .bExtra = false, .extra = playerid);
	return 1;
}

stock INI_Exist(nickname[])//este stock verificara si existe la cuenta o no
{
  new tmp[128];
  format(tmp,sizeof(tmp),Ruta_Jugador, nickname);
  return fexist(tmp);
}
  Cantidad de llaves: Abiertas(60)-Cerradas(60) | Lineas Totales: 357

Creaste la carpeta en scriptfiles llamada Cuentas
y cuando entro al server despues de haberme registrado no me muestra el dialogo de login
Pasame ss de tu scriptfiles
[img]http://i.imgur.com/ewTFkYP.jpg[/img]

[url=http://pawnscript.com/foro/viewtopic.php?f=41&t=7263&p=42268#p42268]Roleplay Base v0.2 Beta[/url]

Innovando, Imaginando y creando así nacen los mejores sistemas
Luego vienen los bugs
Nacion Zombie RPG
Battlerine Royale SA-MP

Avatar de Usuario
Archy
Aprendiz
Aprendiz
Mensajes: 16
Registrado: 01 Jul 2019 14:07
Ubicación: Miami
Contactar:
Reputación: 0

04 Jul 2019 13:05

Me pasa lo mismo que el amigo, no me da errores y no me guarda la contraseña y al entrar de nuevo el dialog de login no carga.

- Edit solucionado. -punk

(SOLUCIÓN)

En el dialog de registrarse era:
 Codigo Pawno:
1

INI_WriteString(File, "Clave", inputtext);
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1

Imagen

SampPlus RolePlay en desarrollo


Responder