[Ajuda] Nгo carrega os dados do Player
#1

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(Arquivosizeof(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(stringsizeof(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(playeridpuPosX[playerid], puPosY[playerid], puPosZ[playerid]);
        
GetPlayerFacingAngle(playeridpuPosA[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(Arquivosizeof(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;

Reply
#2

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
Reply
#3

Blz, vou retirar.
Reply
#4

Estou ainda com o mesmo problema, alguйm pode me ajudar?
Reply
#5

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.
Reply
#6

Reseta tudo, apenas a senha salva
Reply
#7

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(playeridclassid)
{
    new 
File[50];
    
format(Filesizeof(File), "Contas/%s.ini"Nome(playerid));
    if(!
DOF2::FileExists(File))
    {
        
ShowPlayerDialog(playeridDIALOG_REGISTRODIALOG_STYLE_INPUT"REGISTRO""- Insira sua senha para Registrar-se:""Registrar""Sair");
    }
    else if(
DOF2::FileExists(File))
    {
        
ShowPlayerDialog(playeridDIALOG_LOGINDIALOG_STYLE_PASSWORD"LOGIN""- Insira sua senha para Logar-se:""Logar""Sair");
    }
    return 
1;
}
public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    new 
File[50];
    
format(Filesizeof(File), "Contas/%s.ini"Nome(playerid));
    if(
dialogid == DIALOG_REGISTRO)
    {
        if(
response)
        {
            if(
strlen(inputtext) < || strlen(inputtext) > 20)
            {
                
SendClientMessage(playeridVermelho"| ERRO | Insira uma senha entre 5 e 20 caracters!");
                
ShowPlayerDialog(playeridDIALOG_REGISTRODIALOG_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(playeridPlayer[playerid][Dinheiro]);
            
SetPlayerScore(playeridPlayer[playerid][Level]);
            
SetPlayerWantedLevel(playeridPlayer[playerid][Procurado]);
            
SetSpawnInfo(playerid0Player[playerid][Skin], Player[playerid][pX], Player[playerid][pY], Player[playerid][pZ], Player[playerid][pA], 000000);
            
Player[playerid][Logado] = true;
            
SpawnPlayer(playerid);
        }
        else
        {
            
Kick(playerid);
            return 
1;
        }
        return 
1;
    }
    if(
dialogid == DIALOG_LOGIN)
    {
        if(
response)
        {
            if(!
strlen(inputtext))
            {
                 
ShowPlayerDialog(playeridDIALOG_LOGINDIALOG_STYLE_PASSWORD"LOGIN""- Insira sua senha para Logar-se:""Logar""Sair");
                return 
1;
            }
            if(
strcmp(inputtextDOF2::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(playeridPlayer[playerid][Dinheiro]);
                
SetPlayerScore(playeridPlayer[playerid][Level]);
                
SetPlayerWantedLevel(playeridPlayer[playerid][Procurado]);
                
SetSpawnInfo(playerid0Player[playerid][Skin], Player[playerid][pX], Player[playerid][pY], Player[playerid][pZ], Player[playerid][pA], 000000);
                
Player[playerid][Logado] = true;
                
SpawnPlayer(playerid);
            }
            else
            {
                 
ShowPlayerDialog(playeridDIALOG_LOGINDIALOG_STYLE_PASSWORD"LOGIN""- Insira sua senha para Logar-se:""Logar""Sair");
                return 
1;
            }
        }
        else
        {
            
Kick(playerid);
            return 
1;
        }
        return 
1;
    }
    return 
0;

Reply
#8

Daquia pouco eu vou colocar esse sistema ai, vlw <3
Reply
#9

Meu login estб quase igual ao seu, mas ainda continua resetando algumas contas, por que serб?
Reply
#10

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
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)