[Ajuda] Contas sendo resetadas
#1

Bom, sempre que eu deslogo do meu servidor as contas sгo salvas normalmente, mais quando eu logo de novo, tudo й setado pra 0! menos o Admin level. e eu uso dof2.. alguйm sabe oque pode ser?

pawn Код:
// OnPlayerConnect

if(DOF2_FileExists(arq))
    {
        ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Conectando","Bem vindo(a) ao Assassins City!!\n\nEssa conta jб й registrada.\n\nDigite a senha para entrar","Entrar","Sair");
        SendClientMessage(playerid,cor_cinza,"{FF0000}Aviso: {B5B5B5}Se vocк errar a senha 3 vezes serб kickado!");
    }
    else
    {
        ShowPlayerDialog(playerid,DIALOG_REGISTRO,DIALOG_STYLE_PASSWORD,"Registrando","Bem vindo(a) ao Assassins City!!\n\nEssa conta ainda nгo й registrada.\n\nDigite uma senha para se registrar","Registrar","Sair");
    }
   
    if(DOF2_GetInt(arq,"Banido") == 1)
    {
        SendClientMessage(playerid,cor_vermelho,"Esse conta estб banida desse servidor!");
        format(stringa,sizeof(stringa),"[OpServ] %s(%d) Foi kickado automaticamente pelo servidor: CONTA BANIDA",nome(playerid),playerid);
        SendAdminMessage(cor_vermelho,stringa);
        Kick(playerid);
    }

// Tenho uma public que salva as contas de 1 em 1 segundo.

// OnPlayerDisconnect

SalvarConta(playerid);

// Stock que salva as contas:

stock SalvarConta(playerid)
{
    new arq[50];
    format(arq,50,"Contas/%s.ini",nome(playerid));

    DOF2_SetInt(arq,"Score",GetPlayerScore(playerid));
    DOF2_SetInt(arq,"Kills",PlayerInfo[playerid][Kills]);
    DOF2_SetInt(arq,"Deaths",PlayerInfo[playerid][Deaths]);
    DOF2_SetInt(arq,"Money",GetPlayerMoney(playerid));
    DOF2_SetInt(arq,"Vip",PlayerInfo[playerid][Vip]);
    DOF2_SetInt(arq,"Banido",PlayerInfo[playerid][Banido]);
    DOF2_SetInt(arq,"Jailed",PlayerInfo[playerid][Jailed]);
    DOF2_SetInt(arq,"JailedTime",PlayerInfo[playerid][JailedTime]);
    DOF2_SaveFile();
}

// Dialog de loguin:

 if(dialogid == DIALOG_LOGIN)
    {
        if(!response)
        {
            SendClientMessage(playerid,cor_vermelho,"Vocк foi kickado por cancelar o login.");
            Kick(playerid);
        }
        else
        {
            new arq[50];
            format(arq,50,"Contas/%s.ini",nome(playerid));

            if(!strcmp(DOF2_GetString(arq,"Senha"), inputtext, false) && strlen(inputtext) != 0)
            {
                PlayerInfo[playerid][Admin] = DOF2_GetInt(arq, "Admin");
                PlayerInfo[playerid][Score] = DOF2_GetInt(arq, "Score");
                SetPlayerScore(playerid, PlayerInfo[playerid][Score]);
                PlayerInfo[playerid][Kills] = DOF2_GetInt(arq, "Kills");
                PlayerInfo[playerid][Deaths] = DOF2_GetInt(arq, "Deaths");
                PlayerInfo[playerid][Money] = DOF2_GetInt(arq, "Money");
                GivePlayerMoney(playerid, PlayerInfo[playerid][Money]);
                PlayerInfo[playerid][Vip] = DOF2_GetInt(arq, "Vip");
                PlayerInfo[playerid][Banido] = DOF2_GetInt(arq, "Banido");
                PlayerInfo[playerid][Jailed] = DOF2_GetInt(arq, "Jailed");
                PlayerInfo[playerid][JailedTime] = DOF2_GetInt(arq, "JailedTime");
                DOF2_SaveFile();
            }
            else
            {
                ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Conectando","Ops, Senha Incorreta!\n\nDigite a senha certa para entrar:\n\n","Entrar","Sair");
                ErrouASenha[playerid] ++;
                if(ErrouASenha[playerid] == 3)
                {
                    SendClientMessage(playerid,cor_vermelho,"Vocк foi kickado por errar a senha 3 vezes.");
                    Kick(playerid);
                    return 1;
                }
            }
        }
    }
Reply
#2

tem q criar uma funзгo para ele carregar os dados da conta

@edit

exemplo de carregar dados..

pawn Код:
stock CarregarContas(playerid)
{
    new _var[42];
    if(DOF2_FileExists(Contas(playerid)))
    {
        if (IsPlayerConnected(playerid))
        {
            PC_DarDinheiro(playerid, DOF2_GetInt(_var, "Dinheiro"));
            PlayerInfo[playerid][admin] = DOF2_GetInt(_var, "Admin");
            PlayerInfo[playerid][helper] = DOF2_GetInt(_var, "Helper");
            SetPlayerScore(playerid, DOF2_GetInt(_var, "Matou"));
            PlayerInfo[playerid][deaths] = DOF2_GetInt(_var, "Morreu");
            DOF2_SaveFile();
        }
    }
    return 1;
}
Reply
#3

Vlw. Ficaria assim?

pawn Код:
stock CarregarContas(playerid)
{
    new arq[50];
    format(arq,50,"Contas/%s.ini",nome(playerid));
   
    if(DOF2_FileExists(Contas(playerid)))
    {
        if(IsPlayerConnected(playerid))
        {
            PlayerInfo[playerid][Admin] = DOF2_GetInt(arq,"Admin");
            SetPlayerScore(playerid, DOF2_GetInt(arq,"Score");
            PlayerInfo[playerid][Kills] = DOF2_GetInt(arq,"Kills");
            PlayerInfo[playerid][Deaths] = DOF2_GetInt(arq,"Deaths");
            GivePlayerMoney(playerid, OF2_GetInt(arq,"Money");
            PlayerInfo[playerid][Vip] = DOF2_GetInt(arq,"Vip");
            PlayerInfo[playerid][Banido] = DOF2_GetInt(arq,"Banido");
            PlayerInfo[playerid][Jailed] = DOF2_GetInt(arq,"Jailed");
            PlayerInfo[playerid][JailedTime] = DOF2_GetInt(arq,"JailedTime");
            DOF2_SaveFile();
        }
    }
}
Reply
#4

pawn Код:
stock CarregarContas(playerid){
    new arq[50];
    format(arq,50,"Contas/%s.ini",nome(playerid));

    if(DOF2_FileExists(arq)){
        if(IsPlayerConnected(playerid)){
            PlayerInfo[playerid][Admin] = DOF2_GetInt(arq,"Admin");
            SetPlayerScore(playerid, DOF2_GetInt(arq,"Score");
            PlayerInfo[playerid][Kills] = DOF2_GetInt(arq,"Kills");
            PlayerInfo[playerid][Deaths] = DOF2_GetInt(arq,"Deaths");
            GivePlayerMoney(playerid, OF2_GetInt(arq,"Money");
            PlayerInfo[playerid][Vip] = DOF2_GetInt(arq,"Vip");
            PlayerInfo[playerid][Banido] = DOF2_GetInt(arq,"Banido");
            PlayerInfo[playerid][Jailed] = DOF2_GetInt(arq,"Jailed");
            PlayerInfo[playerid][JailedTime] = DOF2_GetInt(arq,"JailedTime");
        }
    }
    return true;
}
para usar a funзгo Contas(playerid)
deveria declara-la em uma stock no exemplo:
pawn Код:
stock CarregarContas(playerid){
    if(DOF2_FileExists(Contas(playerid))){
        if(IsPlayerConnected(playerid)){
            PlayerInfo[playerid][Admin] = DOF2_GetInt(Contas(playerid),"Admin");
            SetPlayerScore(playerid, DOF2_GetInt(Contas(playerid),"Score");
            PlayerInfo[playerid][Kills] = DOF2_GetInt(Contas(playerid),"Kills");
            PlayerInfo[playerid][Deaths] = DOF2_GetInt(Contas(playerid),"Deaths");
            GivePlayerMoney(playerid, OF2_GetInt(Contas(playerid),"Money");
            PlayerInfo[playerid][Vip] = DOF2_GetInt(Contas(playerid),"Vip");
            PlayerInfo[playerid][Banido] = DOF2_GetInt(Contas(playerid),"Banido");
            PlayerInfo[playerid][Jailed] = DOF2_GetInt(Contas(playerid),"Jailed");
            PlayerInfo[playerid][JailedTime] = DOF2_GetInt(Contas(playerid),"JailedTime");
        }
    }
    return true;
}



Contas(playerid){
    new arq[50];
    format(arq,50,"Contas/%s.ini",nome(playerid));
    return arq;
}
Reply
#5

Nгo consegui resolver o problema..

pawn Код:
if(dialogid == DIALOG_LOGIN)
    {
        if(!response)
        {
            SendClientMessage(playerid,cor_vermelho,"Vocк foi kickado por cancelar o login.");
            Kick(playerid);
        }
        else
        {
            if(!strcmp(DOF2_GetString(Contas(playerid),"Senha"), inputtext, false) && strlen(inputtext) != 0)
            {
                CarregarConta(playerid);
            }
            else
            {
                ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Conectando","Ops, Senha Incorreta!\n\nDigite a senha certa para entrar:\n\n","Entrar","Sair");
                ErrouASenha[playerid] ++;
                if(ErrouASenha[playerid] == 3)
                {
                    SendClientMessage(playerid,cor_vermelho,"Vocк foi kickado por errar a senha 3 vezes.");
                    Kick(playerid);
                    return 1;
                }
            }
        }
    }

stock CarregarConta(playerid)
{
    if(DOF2_FileExists(Contas(playerid)))
    {
        if(IsPlayerConnected(playerid))
        {
            PlayerInfo[playerid][Admin] = DOF2_GetInt(Contas(playerid),"Admin");
            SetPlayerScore(playerid, DOF2_GetInt(Contas(playerid),"Score"));
            PlayerInfo[playerid][Kills] = DOF2_GetInt(Contas(playerid),"Kills");
            PlayerInfo[playerid][Deaths] = DOF2_GetInt(Contas(playerid),"Deaths");
            GivePlayerMoney(playerid, DOF2_GetInt(Contas(playerid),"Money"));
            PlayerInfo[playerid][Vip] = DOF2_GetInt(Contas(playerid),"Vip");
            PlayerInfo[playerid][Banido] = DOF2_GetInt(Contas(playerid),"Banido");
            PlayerInfo[playerid][Jailed] = DOF2_GetInt(Contas(playerid),"Jailed");
            PlayerInfo[playerid][JailedTime] = DOF2_GetInt(Contas(playerid),"JailedTime");
        }
    }
    return true;
}
Reply
#6

Alguйm tem alguma sugestгo ?
Reply
#7

o erro estб nessa public de salvar contas de 1 em 1 segundo.

Pois antes do player logar ela jб salva os dados a 0 porque ele nгo logou para carregar os dados, mude o tempo para 10 segundos ou 15 segundos

acho que isso resolverб.

@Ediit

Ou use um
pawn Код:
SetTimerEx(...);
para salvar a conta dele de 1 em 1 segundo, quando ele spawnar
Reply


Forum Jump:


Users browsing this thread: 5 Guest(s)