2021-02-16, 02:39 AM
(This post was last modified: 2021-02-16, 02:50 AM by Nikolay_Staggs.)
tengo dos días tratando de resolver el problema pero no puedo, por que no se guardan los datos de los usuarios :)
este es el código"
//_____Enum______//
enum DATA_PLAYER
{
GAME_IDENTIFICADO,
GAME_REGISTRADO,
GAME_EXP,
GAME_ADMIN_LEVEL,
GAME_SCORE,
GAME_MONEY
};
new PLAYER_INFO[MAX_PLAYERS][DATA_PLAYER];
//_________News__________//
new GAME_PASSWORD_INCORRECTA[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
GAME_PASSWORD_INCORRECTA[playerid] = 0;
new string[250];
if (fexist(ac_ARCHIBO_USER(playerid)))
{
PLAYER_INFO[playerid][GAME_REGISTRADO] = 1;
}
if (PLAYER_INFO[playerid][GAME_REGISTRADO])
{
format(string, sizeof(string), "{CCCCCC}- Bienvenido %s.\n- Escribe tu contraseña para identificarte", NAME_USER(playerid));
ShowPlayerDialog(playerid, DIALOG_INGRESO, DIALOG_STYLE_PASSWORD, ""#BLANCO"Ingreso", string, "Ingresar", "Salir");
}
else
{
format(string, sizeof(string), "{CCCCCC}- Bienvenido %s.\n- Escribe una contraseña para Registrarte", NAME_USER(playerid));
ShowPlayerDialog(playerid, DIALOGO_REGISTRO, DIALOG_STYLE_PASSWORD, ""#BLANCO"Registrar", string, "Ok", "Salir");
}
RESET_USER(playerid);
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new string[250];
if(dialogid == DIALOGO_REGISTRO)
{
dini_Create(ac_ARCHIBO_USER(playerid));
dini_IntSet(ac_ARCHIBO_USER(playerid), "contraseña", adler32(inputtext));
dini_IntSet(ac_ARCHIBO_USER(playerid), "Exp", PLAYER_INFO[playerid][GAME_EXP]);
dini_IntSet(ac_ARCHIBO_USER(playerid), "Admin", PLAYER_INFO[playerid][GAME_ADMIN_LEVEL]);
dini_IntSet(ac_ARCHIBO_USER(playerid), "Score", PLAYER_INFO[playerid][GAME_SCORE]);
dini_IntSet(ac_ARCHIBO_USER(playerid), "Dinero", PLAYER_INFO[playerid][GAME_MONEY]);
PLAYER_INFO[playerid][GAME_IDENTIFICADO] = 1;
PLAYER_INFO[playerid][GAME_REGISTRADO] = 1;
}
else if(dialogid == DIALOG_INGRESO)
{
if (dini_Int(ac_ARCHIBO_USER(playerid), "Contraseña") == adler32(inputtext))
{
PLAYER_INFO[playerid][GAME_IDENTIFICADO] = 1;
PLAYER_INFO[playerid][GAME_REGISTRADO] = 1;
PLAYER_INFO[playerid][GAME_EXP] = dini_Int (ac_ARCHIBO_USER(playerid), "Exp");
PLAYER_INFO[playerid][GAME_ADMIN_LEVEL] = dini_Int (ac_ARCHIBO_USER(playerid), "Admin");
SetPlayerScore(playerid, dini_Int (ac_ARCHIBO_USER(playerid), "Score"));
GivePlayerMoney(playerid, dini_Int (ac_ARCHIBO_USER(playerid), "Dinero"));
}
else
{
GAME_PASSWORD_INCORRECTA[playerid]++;
format(string, sizeof(string), "{CCCCCC}- Por favor %s.\n- Ingresa una contraseña correcta", NAME_USER(playerid));
ShowPlayerDialog(playerid, DIALOG_INGRESO, DIALOG_STYLE_PASSWORD, "{6F0000}Error", string, "Ok", "Salir");
if(GAME_PASSWORD_INCORRECTA[playerid] == MAX_PASSWORD_INVALIDA)
{
format(string,sizeof(string),"{6F0000}[Cuentas]: %s fue expulsado (Max intentos de ingresar(Contraseña invalida))", NAME_USER(playerid));
SendClientMessageToAll(-1, string);
SendClientMessage(playerid, -1, "** Haz puesto varias contraseñas incorrectas has sido kickeado del servidor por seguridad.");
Kick(playerid);
}
}
}
return 1;
}
stock NAME_USER(playerid)
{
new User_Name[MAX_PLAYER_NAME];
GetPlayerName(playerid, User_Name, sizeof(User_Name));
return User_Name;
}
stock ac_ARCHIBO_USER(playerid)
{
new User_Name[250];
GetPlayerName(playerid, User_Name, sizeof(User_Name));
format(User_Name, sizeof(User_Name), "DM_FREEROAM/%s.ini", User_Name);
return User_Name;
}
stock SAVE_USER(playerid)
{
if(PLAYER_INFO[playerid][GAME_IDENTIFICADO])
{
dini_IntSet(ac_ARCHIBO_USER(playerid), "Exp", PLAYER_INFO[playerid][GAME_EXP]);
dini_IntSet(ac_ARCHIBO_USER(playerid), "Admin", PLAYER_INFO[playerid][GAME_ADMIN_LEVEL]);
dini_IntSet(ac_ARCHIBO_USER(playerid), "Score", GetPlayerScore(playerid));
dini_IntSet(ac_ARCHIBO_USER(playerid), "Dinero", GetPlayerMoney(playerid));
}
return 1;
}
stock adler32(buf[])
{
new len = strlen(buf), key1 = 1, key2 = 0, n;
for (n = 0; n < len; n ++)
{
key1 = (key1 + buf[n]) % 65521;
key2 = (key2 + key1) % 65521;
}
return (key2 << 16) + key1;
}
stock RESET_USER(playerid)
{
PLAYER_INFO[playerid][GAME_IDENTIFICADO] = 0;
PLAYER_INFO[playerid][GAME_REGISTRADO] = 0;
PLAYER_INFO[playerid][GAME_EXP] = 0;
PLAYER_INFO[playerid][GAME_ADMIN_LEVEL] = 0;
PLAYER_INFO[playerid][GAME_SCORE] = 0;
PLAYER_INFO[playerid][GAME_MONEY] = 0;
return 1;
}
este es el código"
//_____Enum______//
enum DATA_PLAYER
{
GAME_IDENTIFICADO,
GAME_REGISTRADO,
GAME_EXP,
GAME_ADMIN_LEVEL,
GAME_SCORE,
GAME_MONEY
};
new PLAYER_INFO[MAX_PLAYERS][DATA_PLAYER];
//_________News__________//
new GAME_PASSWORD_INCORRECTA[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
GAME_PASSWORD_INCORRECTA[playerid] = 0;
new string[250];
if (fexist(ac_ARCHIBO_USER(playerid)))
{
PLAYER_INFO[playerid][GAME_REGISTRADO] = 1;
}
if (PLAYER_INFO[playerid][GAME_REGISTRADO])
{
format(string, sizeof(string), "{CCCCCC}- Bienvenido %s.\n- Escribe tu contraseña para identificarte", NAME_USER(playerid));
ShowPlayerDialog(playerid, DIALOG_INGRESO, DIALOG_STYLE_PASSWORD, ""#BLANCO"Ingreso", string, "Ingresar", "Salir");
}
else
{
format(string, sizeof(string), "{CCCCCC}- Bienvenido %s.\n- Escribe una contraseña para Registrarte", NAME_USER(playerid));
ShowPlayerDialog(playerid, DIALOGO_REGISTRO, DIALOG_STYLE_PASSWORD, ""#BLANCO"Registrar", string, "Ok", "Salir");
}
RESET_USER(playerid);
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new string[250];
if(dialogid == DIALOGO_REGISTRO)
{
dini_Create(ac_ARCHIBO_USER(playerid));
dini_IntSet(ac_ARCHIBO_USER(playerid), "contraseña", adler32(inputtext));
dini_IntSet(ac_ARCHIBO_USER(playerid), "Exp", PLAYER_INFO[playerid][GAME_EXP]);
dini_IntSet(ac_ARCHIBO_USER(playerid), "Admin", PLAYER_INFO[playerid][GAME_ADMIN_LEVEL]);
dini_IntSet(ac_ARCHIBO_USER(playerid), "Score", PLAYER_INFO[playerid][GAME_SCORE]);
dini_IntSet(ac_ARCHIBO_USER(playerid), "Dinero", PLAYER_INFO[playerid][GAME_MONEY]);
PLAYER_INFO[playerid][GAME_IDENTIFICADO] = 1;
PLAYER_INFO[playerid][GAME_REGISTRADO] = 1;
}
else if(dialogid == DIALOG_INGRESO)
{
if (dini_Int(ac_ARCHIBO_USER(playerid), "Contraseña") == adler32(inputtext))
{
PLAYER_INFO[playerid][GAME_IDENTIFICADO] = 1;
PLAYER_INFO[playerid][GAME_REGISTRADO] = 1;
PLAYER_INFO[playerid][GAME_EXP] = dini_Int (ac_ARCHIBO_USER(playerid), "Exp");
PLAYER_INFO[playerid][GAME_ADMIN_LEVEL] = dini_Int (ac_ARCHIBO_USER(playerid), "Admin");
SetPlayerScore(playerid, dini_Int (ac_ARCHIBO_USER(playerid), "Score"));
GivePlayerMoney(playerid, dini_Int (ac_ARCHIBO_USER(playerid), "Dinero"));
}
else
{
GAME_PASSWORD_INCORRECTA[playerid]++;
format(string, sizeof(string), "{CCCCCC}- Por favor %s.\n- Ingresa una contraseña correcta", NAME_USER(playerid));
ShowPlayerDialog(playerid, DIALOG_INGRESO, DIALOG_STYLE_PASSWORD, "{6F0000}Error", string, "Ok", "Salir");
if(GAME_PASSWORD_INCORRECTA[playerid] == MAX_PASSWORD_INVALIDA)
{
format(string,sizeof(string),"{6F0000}[Cuentas]: %s fue expulsado (Max intentos de ingresar(Contraseña invalida))", NAME_USER(playerid));
SendClientMessageToAll(-1, string);
SendClientMessage(playerid, -1, "** Haz puesto varias contraseñas incorrectas has sido kickeado del servidor por seguridad.");
Kick(playerid);
}
}
}
return 1;
}
stock NAME_USER(playerid)
{
new User_Name[MAX_PLAYER_NAME];
GetPlayerName(playerid, User_Name, sizeof(User_Name));
return User_Name;
}
stock ac_ARCHIBO_USER(playerid)
{
new User_Name[250];
GetPlayerName(playerid, User_Name, sizeof(User_Name));
format(User_Name, sizeof(User_Name), "DM_FREEROAM/%s.ini", User_Name);
return User_Name;
}
stock SAVE_USER(playerid)
{
if(PLAYER_INFO[playerid][GAME_IDENTIFICADO])
{
dini_IntSet(ac_ARCHIBO_USER(playerid), "Exp", PLAYER_INFO[playerid][GAME_EXP]);
dini_IntSet(ac_ARCHIBO_USER(playerid), "Admin", PLAYER_INFO[playerid][GAME_ADMIN_LEVEL]);
dini_IntSet(ac_ARCHIBO_USER(playerid), "Score", GetPlayerScore(playerid));
dini_IntSet(ac_ARCHIBO_USER(playerid), "Dinero", GetPlayerMoney(playerid));
}
return 1;
}
stock adler32(buf[])
{
new len = strlen(buf), key1 = 1, key2 = 0, n;
for (n = 0; n < len; n ++)
{
key1 = (key1 + buf[n]) % 65521;
key2 = (key2 + key1) % 65521;
}
return (key2 << 16) + key1;
}
stock RESET_USER(playerid)
{
PLAYER_INFO[playerid][GAME_IDENTIFICADO] = 0;
PLAYER_INFO[playerid][GAME_REGISTRADO] = 0;
PLAYER_INFO[playerid][GAME_EXP] = 0;
PLAYER_INFO[playerid][GAME_ADMIN_LEVEL] = 0;
PLAYER_INFO[playerid][GAME_SCORE] = 0;
PLAYER_INFO[playerid][GAME_MONEY] = 0;
return 1;
}