Nгo carrega os dados do Player -
WiliHacking - 01.02.2019
Pessoal, eu estou com um puta problema, as vezes os dados do player nгo й carregado, eu criei uma funзгo que reseta as coisas do player quando ele conecta, mas quando ele digita a sua senha й pra carregar as coisas salvas, mas isso as vezes acontece de carregar e as vezes nгo, alguйm pode me ajudar?
OBS: Mesmo sem desligar o servidor.
PHP код:
stock SalvarPlayer(playerid)
{
new Arquivo[40];
format(Arquivo, sizeof(Arquivo), "Contas/%s.ini", NomePlayer(playerid));
if(DOF2_FileExists(Arquivo))
{
new string[30],dia,mes,ano,hora,mins,seg;
getdate(ano,mes,dia);
gettime(hora,mins,seg);
format(string, sizeof(string),"%02d/%02d/%d as %02d:%02d:%02d",dia,mes,ano,hora,mins,seg);
strmid(PlayerInfo[playerid][pLaastLogin],string,0,strlen(string),255);
DOF2_SetString(Arquivo,"Email",PlayerInfo[playerid][pEmail]);
DOF2_SetString(Arquivo,"LU",PlayerInfo[playerid][pLaastLogin]);
DOF2_SetInt(Arquivo,"Level", PlayerInfo[playerid][pLevel]);
DOF2_SetInt(Arquivo,"AdminLevel", PlayerInfo[playerid][pAdmin]);
DOF2_SetInt(Arquivo, "Avaliacoes", PlayerInfo[playerid][pAvaliacoes]);
DOF2_SetInt(Arquivo, "AvaFinal", PlayerInfo[playerid][pAFinal]);
DOF2_SetInt(Arquivo,"HelperLevel", PlayerInfo[playerid][pHelper]);
DOF2_SetInt(Arquivo,"Char", PlayerInfo[playerid][pSkin]);
DOF2_SetInt(Arquivo,"Registered", PlayerInfo[playerid][pReg]);
DOF2_SetInt(Arquivo,"Sex",PlayerInfo[playerid][pSex]);
DOF2_SetInt(Arquivo,"Age",PlayerInfo[playerid][pAge]);
DOF2_SetInt(Arquivo,"Muted",PlayerInfo[playerid][pMuted]);
DOF2_SetInt(Arquivo,"Respect",PlayerInfo[playerid][pExp]);
DOF2_SetInt(Arquivo,"ConnectedTime", PlayerInfo[playerid][pConnectTime]);
DOF2_SetInt(Arquivo,"Money",GetPlayerMoney(playerid));
DOF2_SetInt(Arquivo,"Ouros",PlayerInfo[playerid][pOuros]);
DOF2_SetInt(Arquivo,"Bank",PlayerInfo[playerid][pConta]);
DOF2_SetInt(Arquivo,"Salario",PlayerInfo[playerid][pSalario]);
DOF2_SetInt(Arquivo,"Emprego",PlayerInfo[playerid][pEmprego]);
DOF2_SetInt(Arquivo,"PayDay",PlayerInfo[playerid][pPayDay]);
DOF2_SetInt(Arquivo,"Fome",PlayerInfo[playerid][pFome]);
DOF2_SetInt(Arquivo,"Sede",PlayerInfo[playerid][pSede]);
DOF2_SetInt(Arquivo,"DetSkill",PlayerInfo[playerid][pDetSkill]);
DOF2_SetInt(Arquivo,"LawSkill",PlayerInfo[playerid][pLawSkill]);
DOF2_SetInt(Arquivo,"PhoneNr",PlayerInfo[playerid][pPnumber]);
DOF2_SetInt(Arquivo,"Phonebook",PlayerInfo[playerid][pPhoneBook]);
DOF2_SetInt(Arquivo,"Dado",PlayerInfo[playerid][pDice]);
DOF2_SetInt(Arquivo,"Creditos",PlayerInfo[playerid][pCreditos]);
DOF2_SetInt(Arquivo,"DonateRank",PlayerInfo[playerid][pVIP]);
DOF2_SetInt(Arquivo,"NivelProcurado", WantedPoints[playerid]);
DOF2_SetInt(Arquivo,"Crimes",PlayerInfo[playerid][pCrimes]);
DOF2_SetString(Arquivo,"cCrime",PlayerCrime[playerid][pAccusedof]);
DOF2_SetString(Arquivo,"cRelato",PlayerCrime[playerid][pVictim]);
DOF2_SetInt(Arquivo,"Kills",PlayerInfo[playerid][pKills]);
DOF2_SetInt(Arquivo,"Deaths",PlayerInfo[playerid][pDeaths]);
DOF2_SetInt(Arquivo,"Jailed",PlayerInfo[playerid][pJailed]);
DOF2_SetInt(Arquivo,"JailTime",PlayerInfo[playerid][pJailTime]);
DOF2_SetBool(Arquivo,"Ajustado",PlayerInfo[playerid][pAjustado]);
DOF2_SetInt(Arquivo,"BlockNoob",PlayerInfo[playerid][pBloqNoob]);
DOF2_SetInt(Arquivo,"Lider",PlayerInfo[playerid][pLider]);
DOF2_SetInt(Arquivo,"Member",PlayerInfo[playerid][pMembro]);
GetPlayerPos(playerid, puPosX[playerid], puPosY[playerid], puPosZ[playerid]);
GetPlayerFacingAngle(playerid, puPosA[playerid]);
pInterior[playerid] = GetPlayerInterior(playerid);
DOF2_SetFloat(Arquivo, "PosX", puPosX[playerid]);
DOF2_SetFloat(Arquivo, "PosY", puPosY[playerid]);
DOF2_SetFloat(Arquivo, "PosZ", puPosZ[playerid]);
DOF2_SetFloat(Arquivo, "PosA", puPosA[playerid]);
DOF2_SetInt(Arquivo, "Interior", pInterior[playerid]);
DOF2_SaveFile();
}
return 1;
}
stock CarregarPlayer(playerid)
{
new Arquivo[100];
format(Arquivo, sizeof(Arquivo), "Contas/%s.ini", NomePlayer(playerid));
if(DOF2_FileExists(Arquivo))
{
strmid(PlayerInfo[playerid][pEmail],DOF2_GetString(Arquivo,"Email"),0,strlen(DOF2_GetString(Arquivo,"Email")),255);
strmid(PlayerInfo[playerid][pLaastLogin],DOF2_GetString(Arquivo,"LU"),0,strlen(DOF2_GetString(Arquivo,"LU")),255);
PlayerInfo[playerid][pLevel] = DOF2_GetInt(Arquivo, "Level");
PlayerInfo[playerid][pAdmin] = DOF2_GetInt(Arquivo, "AdminLevel");
PlayerInfo[playerid][pAvaliacoes] = DOF2_GetInt(Arquivo, "Avaliacoes");
PlayerInfo[playerid][pHelper] = DOF2_GetInt(Arquivo, "HelperLevel");
PlayerInfo[playerid][pReg] = DOF2_GetInt(Arquivo, "Registered");
PlayerInfo[playerid][pSkin] = DOF2_GetInt(Arquivo, "Char");
PlayerInfo[playerid][pSex] = DOF2_GetInt(Arquivo, "Sex");
PlayerInfo[playerid][pAge] = DOF2_GetInt(Arquivo, "Age");
PlayerInfo[playerid][pMuted] = DOF2_GetInt(Arquivo, "Muted");
PlayerInfo[playerid][pExp] = DOF2_GetInt(Arquivo, "Respect");
PlayerInfo[playerid][pConnectTime] = DOF2_GetInt(Arquivo, "ConnectedTime");
PlayerInfo[playerid][pMoney] = DOF2_GetInt(Arquivo, "Money");
PlayerInfo[playerid][pConta] = DOF2_GetInt(Arquivo, "Bank");
PlayerInfo[playerid][pSalario] = DOF2_GetInt(Arquivo, "Salario");
PlayerInfo[playerid][pOuros] = DOF2_GetInt(Arquivo, "Ouros");
PlayerInfo[playerid][pEmprego] = DOF2_GetInt(Arquivo, "Emprego");
PlayerInfo[playerid][pPayDay] = DOF2_GetInt(Arquivo, "PayDay");
PlayerInfo[playerid][pFome] = DOF2_GetInt(Arquivo, "Fome");
PlayerInfo[playerid][pSede] = DOF2_GetInt(Arquivo, "Sede");
PlayerInfo[playerid][pDetSkill] = DOF2_GetInt(Arquivo,"DetSkill");
PlayerInfo[playerid][pLawSkill] = DOF2_GetInt(Arquivo,"LawSkill");
PlayerInfo[playerid][pPnumber] = DOF2_GetInt(Arquivo, "PhoneNr");
PlayerInfo[playerid][pPhoneBook] = DOF2_GetInt(Arquivo, "Phonebook");
PlayerInfo[playerid][pDice] = DOF2_GetInt(Arquivo, "Dado");
PlayerInfo[playerid][pCreditos] = DOF2_GetInt(Arquivo, "Creditos");
PlayerInfo[playerid][pVIP] = DOF2_GetInt(Arquivo, "DonateRank");
PlayerInfo[playerid][pDiaVIP] = DOF2_GetInt(Arquivo, "DiasVIP");
PlayerInfo[playerid][pMesVIP] = DOF2_GetInt(Arquivo, "MesVIP");
PlayerInfo[playerid][pAnoVIP] = DOF2_GetInt(Arquivo, "AnoVIP");
PlayerInfo[playerid][pWantedPoints] = DOF2_GetInt(Arquivo, "NivelProcurado");
PlayerInfo[playerid][pCrimes] = DOF2_GetInt(Arquivo, "Crimes");
strmid(PlayerCrime[playerid][pAccusedof],DOF2_GetString(Arquivo,"cCrime"),0,strlen(DOF2_GetString(Arquivo,"cCrime")),255);
strmid(PlayerCrime[playerid][pVictim],DOF2_GetString(Arquivo,"cRelato"),0,strlen(DOF2_GetString(Arquivo,"cRelato")),255);
PlayerInfo[playerid][pKills] = DOF2_GetInt(Arquivo, "Kills");
PlayerInfo[playerid][pDeaths] = DOF2_GetInt(Arquivo, "Deaths");
PlayerInfo[playerid][pJailed] = DOF2_GetInt(Arquivo, "Jailed");
PlayerInfo[playerid][pJailTime] = DOF2_GetInt(Arquivo, "JailTime");
PlayerInfo[playerid][pAjustado] = DOF2_GetBool(Arquivo, "Ajustado");
PlayerInfo[playerid][pBloqNoob] = DOF2_GetInt(Arquivo, "BlockNoob");
PlayerInfo[playerid][pLider] = DOF2_GetInt(Arquivo, "Lider");
PlayerInfo[playerid][pMembro] = DOF2_GetInt(Arquivo, "Member");
puPosX[playerid] = DOF2_GetFloat(Arquivo, "PosX");
puPosY[playerid] = DOF2_GetFloat(Arquivo, "PosY");
puPosZ[playerid] = DOF2_GetFloat(Arquivo, "PosZ");
puPosA[playerid] = DOF2_GetFloat(Arquivo, "PosA");
pInterior[playerid] = DOF2_GetInt(Arquivo, "Interior");
DOF2_SaveFile();
}
return 1;
}
Re: Nгo carrega os dados do Player -
AutoMatic2 - 01.02.2019
esse
DOF2_SaveFile(); não era pra tar no
CarregarPlayer(playeird)
Tenta tirá-lo, Vc usa SaveFile só quando cria algo ou seta com dof2
Re: Nгo carrega os dados do Player -
WiliHacking - 02.02.2019
Blz, vou retirar.
Re: Nгo carrega os dados do Player -
WiliHacking - 02.02.2019
Estou ainda com o mesmo problema, alguйm pode me ajudar?
Re: Nгo carrega os dados do Player -
AutoMatic2 - 02.02.2019
Nessas 2 parte nгo tem nada de errado.
Uma pergunta й:
Oq salva e oq nгo salva as "vezes" ? Por exemplo nгo salva level, dinheiro, skin ou nгo salva tudo mesmo '-', se for o caso de nao salvar nada o problema nгo estб nessa parte.
Re: Nгo carrega os dados do Player -
WiliHacking - 02.02.2019
Reseta tudo, apenas a senha salva
Re: Nгo carrega os dados do Player -
AutoMatic2 - 02.02.2019
Talvez seja o REGISTRO. Da uma olhada nesse sistema que eu fiz aqui, ele salva tudo e carrega tudo ja testei e n achei bugs
>=
PHP код:
// INCLUDES
#include <a_samp>
#include <DOF2>
// DIALOGS
#define DIALOG_REGISTRO 1
#define DIALOG_LOGIN 2
#define DIALOG_SEXO 3
// NEWS
enum PlayerInfo
{
Dinheiro,
Level,
Skin,
Procurado,
Admin,
Float:pX,
Float:pY,
Float:pZ,
Float:pA,
bool:Logado
};
new Player[MAX_PLAYERS][PlayerInfo];
main() {}
public OnPlayerRequestClass(playerid, classid)
{
new File[50];
format(File, sizeof(File), "Contas/%s.ini", Nome(playerid));
if(!DOF2::FileExists(File))
{
ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "REGISTRO", "- Insira sua senha para Registrar-se:", "Registrar", "Sair");
}
else if(DOF2::FileExists(File))
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "LOGIN", "- Insira sua senha para Logar-se:", "Logar", "Sair");
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new File[50];
format(File, sizeof(File), "Contas/%s.ini", Nome(playerid));
if(dialogid == DIALOG_REGISTRO)
{
if(response)
{
if(strlen(inputtext) < 5 || strlen(inputtext) > 20)
{
SendClientMessage(playerid, Vermelho, "| ERRO | Insira uma senha entre 5 e 20 caracters!");
ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "REGISTRO", "- Insira sua senha para Registrar-se:", "Registrar", "Sair");
return 1;
}
DOF2::CreateFile(File);
DOF2::SetString(File, "Senha", inputtext);
DOF2::SetInt(File, "Dinheiro", Player[playerid][Dinheiro] = 5000);
DOF2::SetInt(File, "Procurado", Player[playerid][Procurado] = 0);
DOF2::SetInt(File, "Level", Player[playerid][Level] = 0);
DOF2::SetInt(File, "Skin", Player[playerid][Skin] = 60);
DOF2::SetInt(File, "Admin", Player[playerid][Admin] = 0);
DOF2::SetFloat(File, "X", Player[playerid][pX] = 1958.3783);
DOF2::SetFloat(File, "Y", Player[playerid][pY] = 1343.1572);
DOF2::SetFloat(File, "Z", Player[playerid][pZ] = 15.3746);
DOF2::SetFloat(File, "A", Player[playerid][pA] = 270.0000);
DOF2::SaveFile();
GivePlayerMoney(playerid, Player[playerid][Dinheiro]);
SetPlayerScore(playerid, Player[playerid][Level]);
SetPlayerWantedLevel(playerid, Player[playerid][Procurado]);
SetSpawnInfo(playerid, 0, Player[playerid][Skin], Player[playerid][pX], Player[playerid][pY], Player[playerid][pZ], Player[playerid][pA], 0, 0, 0, 0, 0, 0);
Player[playerid][Logado] = true;
SpawnPlayer(playerid);
}
else
{
Kick(playerid);
return 1;
}
return 1;
}
if(dialogid == DIALOG_LOGIN)
{
if(response)
{
if(!strlen(inputtext))
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "LOGIN", "- Insira sua senha para Logar-se:", "Logar", "Sair");
return 1;
}
if(strcmp(inputtext, DOF2::GetString(File, "Senha"), true) == 0)
{
Player[playerid][Dinheiro] = DOF2::GetInt(File, "Dinheiro");
Player[playerid][Procurado] = DOF2::GetInt(File, "Procurado");
Player[playerid][Level] = DOF2::GetInt(File, "Level");
Player[playerid][Skin] = DOF2::GetInt(File, "Skin");
Player[playerid][Admin] = DOF2::GetInt(File, "Admin");
Player[playerid][pX] = DOF2::GetFloat(File, "X");
Player[playerid][pY] = DOF2::GetFloat(File, "Y");
Player[playerid][pZ] = DOF2::GetFloat(File, "Z");
Player[playerid][pA] = DOF2::GetFloat(File, "A");
GivePlayerMoney(playerid, Player[playerid][Dinheiro]);
SetPlayerScore(playerid, Player[playerid][Level]);
SetPlayerWantedLevel(playerid, Player[playerid][Procurado]);
SetSpawnInfo(playerid, 0, Player[playerid][Skin], Player[playerid][pX], Player[playerid][pY], Player[playerid][pZ], Player[playerid][pA], 0, 0, 0, 0, 0, 0);
Player[playerid][Logado] = true;
SpawnPlayer(playerid);
}
else
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "LOGIN", "- Insira sua senha para Logar-se:", "Logar", "Sair");
return 1;
}
}
else
{
Kick(playerid);
return 1;
}
return 1;
}
return 0;
}
Re: Nгo carrega os dados do Player -
WiliHacking - 02.02.2019
Daquia pouco eu vou colocar esse sistema ai, vlw <3
Re: Nгo carrega os dados do Player -
WiliHacking - 09.02.2019
Meu login estб quase igual ao seu, mas ainda continua resetando algumas contas, por que serб?
Re: Nгo carrega os dados do Player -
DanielMatrix - 09.02.2019
E simples de resolver, essa Keyboard ou stock estб sendo solicitada aonde , geralmente vocк solicita ela no Onplayerdisconnect й faz um loop no Ongamemodeexit caso o server caia ele salva as contas.
Essa funзгo que vc disse que criou para resetar , e meio que desnecessбrio caso seja uma variбvel comum, isso e mais usado quando existe um bool na variбvel, e mesmo assim vocк puxa essa funзгo ao player desconectar