09/11/2023 15:22
(Esta mensagem foi modificada pela última vez a: 09/11/2023 16:51 por L10motos.)
Alguém me ajuda a organizar e otimizar esse código abaixo, o problema que estou tendo é o seguinte, quando o jogador registra no servidor e loga normalmente a conta dele e resetada depois de um tempo ae ele tem que registrar tudo de novo, resumindo, a conta do jogador é resetada e ele tem que registrar tudo novamente, abaixo deixei o código inteiro, sou novato em pwn e não sei onde esta o problema, a gm é cheia de códigos então achar esse bug vai ser uma missão impossível, quem me ajudar vou reputar!
Código PHP:
public OnPlayerDisconnect(playerid, reason)
if(IsPlayerNPC(playerid)) return 1;
SaveAccount(playerid);
}
forward SaveAccount(playerid);
public SaveAccount(playerid)
{
new file[39];
format(file, sizeof file, "account/%s.ini",Name(playerid));
if(!fexist(file)) return 0;
if(gPlayerLogged[playerid] && fexist(file))
{
if(!CheckWeaponsCheat(playerid)) UpdateWeapons(playerid);
dini_Remove(file);
dini_Create(file);
SavePlayerInformations(playerid);
if(PlayerInfo[playerid][pAdmin] > 5 && PlayerInfo[playerid][pAdmin] != 3000) KickPlayer(playerid, "kicked reason: invalid admin level.");
}
return 1;
}
forward SavePlayerInformations(playerid);
public SavePlayerInformations(playerid)
{
if(IsPlayerNPC(playerid)) return 1;
new file[128]; new string[128];
format(file, sizeof(file), "account/%s.ini", Name(playerid));
if(fexist(file))
{
dini_Remove(file); dini_Create(file);
DOF2_Set(file,"Key",PlayerInfo[playerid][pKey]);
DOF2_IntSet(file,"Registro",PlayerInfo[playerid][pRegistro]);
DOF2_IntSet(file,"Level",PlayerInfo[playerid][pLevel]);
forward OnPlayerRegister(playerid, password[]);
public OnPlayerRegister(playerid, password[])
{
new file[39];
format(file, sizeof file, "account/%s.ini",Name(playerid));
if(dini_Exists(file)) return SCM(playerid, COLOR_GREY, "O nome escolhido para o personagem já existe.");
if(IsPlayerConnected(playerid))
{
dini_Create(file);
format(PlayerInfo[playerid][pKey], 64, "%s", password);
PlayerInfo[playerid][pLevel] = 1;
PlayerInfo[playerid][pConnectedPayday] = 3600;
PlayerInfo[playerid][pMaxHealth] = 30.0;
PlayerInfo[playerid][pHealth] = 10.0;
PlayerInfo[playerid][pLocal] = 255;
PlayerInfo[playerid][pModel] = 7;
new randphone = 100000 + random(899999);
PlayerInfo[playerid][pPnumber] = randphone;
Celular[playerid] = 1;
PlayerInfo[playerid][pPhousekey] = INVALID_HOUSE;
SetPVarInt(playerid, "Phousekey", INVALID_HOUSE);
PlayerInfo[playerid][pReg] = 1;
PlayerInfo[playerid][pIdent] = 1;
PlayerInfo[playerid][pAccount] = 10000;
PlayerReborn[playerid] = 1;
SavePlayerInformations(playerid);
cmd_logar(playerid, " ");
}
return 1;
}
forward OnPlayerLogin(playerid, password[]);
public OnPlayerLogin(playerid, password[])
{
new file[64]; new string[128];
format(file, sizeof file, "account/%s.ini", Name(playerid));
if(!fexist(file)) return SCM(playerid, -1, "Você não tem uma conta registrada (/registrar).");
LoadPlayerInformations(playerid);
if(isnull(PlayerInfo[playerid][pKey]))
return SCM(playerid, COLOR_GREY, "Peça a um administrador para excluir a sua conta."); //mensagem que aparece toda vez que a conta é resetada