Hola, tuve que revivir el tema paresia que ya andaba por que no se bugeaban las cuentas pero hoy se empezу a bugear de nuevo, les dejo que hice haber si saben por que pasa, agregue que se reseteen las variables como dijeron al conectarse o desconectarse, anduvo por un dнa pero ahora se empezу a bugear como antes.
pawn Код:
public OnPlayerConnect(playerid)
{
ResetVariables(playerid);
new Nombre[MAX_PLAYER_NAME];
GetPlayerName(playerid, Nombre, MAX_PLAYER_NAME);
if(INI_Exist(Nombre))
{
INI_ParseFile(UserPath(playerid), "LoadUser_pass", .bExtra = true, .extra = playerid);
ShowPlayerDialog(playerid, DIALOGO_INGRESO, DIALOG_STYLE_PASSWORD, "INGRESO", "Ingrese su contraseсa para ingresar al servidor.", "Aceptar", "Salir");
return 1;
}
else
{
ShowPlayerDialog(playerid, DIALOGO_REGISTRO, DIALOG_STYLE_PASSWORD, "REGISTRO", "Bienvenido al servidor, ingrese una contraseсa para registrarte.", "Registrarse", "Salir");
return 1;
}
return 1;
}
pawn Код:
public OnPlayerSpawn(playerid)
{
JugadorLogeado[playerid] = 1;
return 1;
}
pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
GuardarDatos(playerid);
JugadorLogeado[playerid] = 0;
return 1;
}
pawn Код:
forward GuardarDatos(playerid);
public GuardarDatos(playerid)
{
if(JugadorLogeado[playerid] == 1)
{
new Nombre[MAX_PLAYER_NAME], Archivo[13+MAX_PLAYER_NAME+1], Float:Pos[4], Float:VidaChaleco[2];
GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
GetPlayerFacingAngle(playerid, Pos[3]);
GetPlayerHealth(playerid, VidaChaleco[0]);
GetPlayerArmour(playerid, VidaChaleco[1]);
GetPlayerName(playerid, Nombre, sizeof(Nombre));
if(INI_Exist(Nombre))
{
format(Archivo ,sizeof Archivo, DATOS, Nombre);
new INI:File = INI_Open(Archivo);
INI_SetTag(File,"datos");
INI_WriteInt(File,"Admin",Datos[playerid][pAdmin]);
INI_WriteInt(File,"Dinero",Datos[playerid][pDinero]);
INI_WriteInt(File,"Edad",Datos[playerid][pEdad]);
INI_WriteFloat(File,"Pos_x",Pos[0]);
INI_WriteFloat(File,"Pos_y",Pos[1]);
INI_WriteFloat(File,"Pos_z",Pos[2]);
INI_WriteFloat(File,"Pos_a",Pos[3]);
INI_WriteFloat(File,"Vida",Float:VidaChaleco[0]);
INI_WriteFloat(File,"Chaleco",Float:VidaChaleco[1]);
INI_Close(File);
}
}
return 1;
}
pawn Код:
stock ResetVariables(playerid)
{
Datos[playerid][pAdmin] = 0;
Datos[playerid][pDinero] = 0;
Datos[playerid][pEdad] = 0;
Datos[playerid][pPos_x] = 0.0;
Datos[playerid][pPos_y] = 0.0;
Datos[playerid][pPos_z] = 0.0;
Datos[playerid][pPos_a] = 0.0;
Datos[playerid][pVida] = 0.0;
Datos[playerid][pChaleco] = 0.0;
return 1;
}
PD: tambiйn probй poner ResetVariables en OnPlayerDisconnect pero igual se bugea.
Si cambio a otro guardado de datos como sqlite tambiйn deberнa poner que se reinicien las variables?
Pregunto porque cuando usaba dini no tenia reinicio de variables y nunca se bugeo, capaz solo y_ini necesita eso y si cambio a sqlite capaz ya no se bugea, aunque nunca encontrй tutoriales en espaсol de sqlite, pero si no hay de otra voy a tener que intentar aprender a usarlo o volver a dini xd