[Ajuda] Salvamento
#1

Eia galera blz? converti meu sistema de salvamento para DOF2 mais ainda estб com erros, eu consigo logar sem senha ou com senha errada, e no arquivo do player salva a senha assim : Senha = я.

Sistema:

pawn Код:
// PINFO //

enum pINFO
{
    Wanted,
    Money,
    Admin,
    Doador,
    Score,
    Matou,
    Morreu,
    Ratio,
    Avisos
};
new Tentativas[MAX_PLAYERS];
new PlayerInfo[MAX_PLAYERS][pINFO];


public OnGameModeExit()
{
    DOF2_Exit();
    return 1;
}

//============================== comandos ======================================
CMD:register(playerid,params[])
{
    new
        Senha[32],
        arquivoplayers[64]
    ;

    format(arquivoplayers,sizeof(arquivoplayers),"GP/Contas/%s.txt",Nome(playerid));

    if(GetPVarInt(playerid,"Registrado") == 1) return SendClientMessage(playerid,red,"You are already registered.");
    if(sscanf(params,"u[32]",Senha)) return SendClientMessage(playerid,red,"USAGE: /register [password]");

    if(DOF2_FileExists(arquivoplayers))
    {
        SendClientMessage(playerid,red,"ERROR: This account is already registered");
    }
    else
    {
        DOF2_CreateFile(arquivoplayers);
        DOF2_SetString(arquivoplayers,"Senha",Senha);
        DOF2_SetInt(arquivoplayers,"Wanted",0);
        DOF2_SetInt(arquivoplayers,"Money",0);
        DOF2_SetInt(arquivoplayers,"Admin",0);
        DOF2_SetInt(arquivoplayers,"Doador",0);
        DOF2_SetInt(arquivoplayers,"Score",0);
        DOF2_SetInt(arquivoplayers,"Matou",0);
        DOF2_SetInt(arquivoplayers,"Morreu",0);
        GivePlayerMoney(playerid,15000);
        PlayerInfo[playerid][Admin] = 1;
        SalvarPlayer(playerid);
        DOF2_SaveFile();

        SendClientMessage(playerid,yellow,"Account registerd!");
    }

    SetPVarInt(playerid,"Registrado",1);
    SetPVarInt(playerid,"Logado",1);
    return 1;
}

//******************************************************************************

CMD:login(playerid,params[])
{
    new
        Senha[32],
        arquivoplayers[64]
    ;

    if(GetPVarInt(playerid, "Logado") == 1) return SendClientMessage(playerid,red,"You are already logged");
    if(GetPVarInt(playerid, "Registrado") == 0) return SendClientMessage(playerid,red,"You are not registered. Try /register");

    format(arquivoplayers,sizeof(arquivoplayers),"GP/Contas/%s.txt",Nome(playerid));

    if(sscanf(params,"u[32]",Senha)) return SendClientMessage(playerid,red,"USAGE: /login [password]");

    if(!DOF2_FileExists(arquivoplayers)) return SendClientMessage(playerid,red,"ERROR: This account is not registered");

    if(strcmp(Senha,DOF2_GetString(arquivoplayers,"Senha"),true))
    {
        GivePlayerMoney(playerid,(ResetPlayerMoney(playerid),DOF2_GetInt(arquivoplayers,"Money")));
        SetPlayerScore(playerid,DOF2_GetInt(arquivoplayers,"Score"));
        SetPlayerWantedLevel(playerid,DOF2_GetInt(arquivoplayers,"Wanted"));

        PlayerInfo[playerid][Admin] = DOF2_GetInt(arquivoplayers,"Admin");
        PlayerInfo[playerid][Doador] = DOF2_GetInt(arquivoplayers,"Doador");
        PlayerInfo[playerid][Matou] = DOF2_GetInt(arquivoplayers,"Matou");
        PlayerInfo[playerid][Morreu] = DOF2_GetInt(arquivoplayers,"Morreu");
        SalvarPlayer(playerid);
        DOF2_SaveFile();

        SendClientMessage(playerid,yellow,"Account logged!");
        SetPVarInt(playerid,"Logado",1);
    }
    else
    if(Tentativas[playerid] == 2)
    {
        SendClientMessage(playerid,red,"You got kicked for missing the password for that account 3 times");
        Kick(playerid);
        return 1;
    }
    else
    {
        SendClientMessage(playerid,red,"Incorret password. Try again.");
        Tentativas[playerid] ++;
    }
    return 1;
}
//==============================================================================
stock SalvarPlayer(playerid)
{
    new arquivoplayers[64];
    format(arquivoplayers,sizeof(arquivoplayers),"GP/Contas/%s.txt",Nome(playerid));

    DOF2_SetInt(arquivoplayers,"Money",GetPlayerMoney(playerid));
    DOF2_SetInt(arquivoplayers,"Score",GetPlayerScore(playerid));
    DOF2_SetInt(arquivoplayers,"Wanted",GetPlayerWantedLevel(playerid));

    DOF2_SetInt(arquivoplayers,"Admin",PlayerInfo[playerid][Admin]);
    DOF2_SetInt(arquivoplayers,"Doador",PlayerInfo[playerid][Doador]);
    DOF2_SetInt(arquivoplayers,"Matou",PlayerInfo[playerid][Matou]);
    DOF2_SetInt(arquivoplayers,"Morreu",PlayerInfo[playerid][Morreu]);
    DOF2_SaveFile();
    return 0;
}
//==============================================================================
Reply
#2

pawn Код:
new String[128];
format(String, sizeof(String), "%s", Senha);
DOF2_SetString(arquivoplayers,"Senha",String);
ou

pawn Код:
DOF2_SetInt(arquivoplayers,"Senha",Senha);
Muitos confundem o DOF2_SetString ele sу vai funcionar se vocк usar uma string mais jб o DOF2_SetInt ele nгo precisa de string.
Reply
#3

Po cara valeu pela atenзгo, mais nгo estou conseguindo de forma alguma, pode arrumar o comando para mim por favor?

pawn Код:
CMD:register(playerid,params[])
{
    new
        Senha[32],
        arquivoplayers[64]
    ;
   
    format(arquivoplayers,sizeof(arquivoplayers),"GP/Contas/%s.txt",Nome(playerid));
   
    if(GetPVarInt(playerid,"Registrado") == 1) return SendClientMessage(playerid,red,"You are already registered.");
    if(sscanf(params,"u[32]",Senha)) return SendClientMessage(playerid,red,"USAGE: /register [password]");

    if(DOF2_FileExists(arquivoplayers))
    {
        SendClientMessage(playerid,red,"ERROR: This account is already registered");
    }
    else
    {
        DOF2_CreateFile(arquivoplayers);
        DOF2_SetString(arquivoplayers,"Senha",Senha);
        DOF2_SetInt(arquivoplayers,"Wanted",0);
        DOF2_SetInt(arquivoplayers,"Money",0);
        DOF2_SetInt(arquivoplayers,"Admin",0);
        DOF2_SetInt(arquivoplayers,"Doador",0);
        DOF2_SetInt(arquivoplayers,"Score",0);
        DOF2_SetInt(arquivoplayers,"Matou",0);
        DOF2_SetInt(arquivoplayers,"Morreu",0);
        GivePlayerMoney(playerid,15000);
        PlayerInfo[playerid][Admin] = 1;
        SalvarPlayer(playerid);
        DOF2_SaveFile();

        SendClientMessage(playerid,yellow,"Account registerd.");
    }
   
    SetPVarInt(playerid,"Registrado",1);
    SetPVarInt(playerid,"Logado",1);
    return 1;
}
Reply
#4

pawn Код:
CMD:register(playerid,params[])
{
    new
        Senha[32],
        arquivoplayers[64],
        String[28]
    ;

    format(arquivoplayers,sizeof(arquivoplayers),"GP/Contas/%s.txt",Nome(playerid));

    if(GetPVarInt(playerid,"Registrado") == 1) return SendClientMessage(playerid,red,"You are already registered.");
    if(sscanf(params,"u[32]",Senha)) return SendClientMessage(playerid,red,"USAGE: /register [password]");

    if(DOF2_FileExists(arquivoplayers))
    {
        SendClientMessage(playerid,red,"ERROR: This account is already registered");
    }
    else
    {
        DOF2_CreateFile(arquivoplayers);
        format(String, sizeof(String), "%s", Senha);
        DOF2_SetString(arquivoplayers,"Senha",String);
        DOF2_SetInt(arquivoplayers,"Wanted",0);
        DOF2_SetInt(arquivoplayers,"Money",0);
        DOF2_SetInt(arquivoplayers,"Admin",0);
        DOF2_SetInt(arquivoplayers,"Doador",0);
        DOF2_SetInt(arquivoplayers,"Score",0);
        DOF2_SetInt(arquivoplayers,"Matou",0);
        DOF2_SetInt(arquivoplayers,"Morreu",0);
        GivePlayerMoney(playerid,15000);
        PlayerInfo[playerid][Admin] = 1;
        SalvarPlayer(playerid);
        DOF2_SaveFile();

        SendClientMessage(playerid,yellow,"Account registerd.");
    }

    SetPVarInt(playerid,"Registrado",1);
    SetPVarInt(playerid,"Logado",1);
    return 1;
}
Reply
#5

Tб logando com senha errada(qualquer senha) manow

pawn Код:
CMD:login(playerid,params[])
{
    new
        Senha[32],
        arquivoplayers[64]
    ;
   
    if(GetPVarInt(playerid, "Logado") == 1) return SendClientMessage(playerid,red,"You are already logged");
    if(GetPVarInt(playerid, "Registrado") == 0) return SendClientMessage(playerid,red,"You are not registered. Try /register");
   
    format(arquivoplayers,sizeof(arquivoplayers),"GP/Contas/%s.txt",Nome(playerid));
   
    if(sscanf(params,"u[32]",Senha)) return SendClientMessage(playerid,red,"USAGE: /login [password]");

    if(!DOF2_FileExists(arquivoplayers)) return SendClientMessage(playerid,red,"ERROR: This account is not registered");

    if(strcmp(Senha,DOF2_GetString(arquivoplayers,"Senha"),true))
    {
        GivePlayerMoney(playerid,(ResetPlayerMoney(playerid),DOF2_GetInt(arquivoplayers,"Money")));
        SetPlayerScore(playerid,DOF2_GetInt(arquivoplayers,"Score"));
        SetPlayerWantedLevel(playerid,DOF2_GetInt(arquivoplayers,"Wanted"));
       
        PlayerInfo[playerid][Admin] = DOF2_GetInt(arquivoplayers,"Admin");
        PlayerInfo[playerid][Doador] = DOF2_GetInt(arquivoplayers,"Doador");
        PlayerInfo[playerid][Matou] = DOF2_GetInt(arquivoplayers,"Matou");
        PlayerInfo[playerid][Morreu] = DOF2_GetInt(arquivoplayers,"Morreu");
        SalvarPlayer(playerid);
        DOF2_SaveFile();
       
        SendClientMessage(playerid,yellow,"Account logged!");
        SetPVarInt(playerid,"Logado",1);
    }
    else
    if(Tentativas[playerid] == 2)
    {
        SendClientMessage(playerid,red,"You got kicked for missing the password for that account 3 times");
        Kick(playerid);
        return 1;
    }
    else
    {
        SendClientMessage(playerid,red,"Incorret password. Try again.");
        Tentativas[playerid] ++;
    }
    return 1;
}
Reply
#6

teste essa gambiarra aqui:
pawn Код:
CMD:login(playerid,params[])
{
    new
        Senha[32],
        arquivoplayers[64]
    ;

    if(GetPVarInt(playerid, "Logado") == 1) return SendClientMessage(playerid,red,"You are already logged");
    if(GetPVarInt(playerid, "Registrado") == 0) return SendClientMessage(playerid,red,"You are not registered. Try /register");

    format(arquivoplayers,sizeof(arquivoplayers),"GP/Contas/%s.txt",Nome(playerid));

    if(sscanf(params,"u[32]",Senha)) return SendClientMessage(playerid,red,"USAGE: /login [password]");

    if(!DOF2_FileExists(arquivoplayers)) return SendClientMessage(playerid,red,"ERROR: This account is not registered");

    if(Senha == DOF2_GetString(arquivoplayers,"Senha"))
    {
        GivePlayerMoney(playerid,(ResetPlayerMoney(playerid),DOF2_GetInt(arquivoplayers,"Money")));
        SetPlayerScore(playerid,DOF2_GetInt(arquivoplayers,"Score"));
        SetPlayerWantedLevel(playerid,DOF2_GetInt(arquivoplayers,"Wanted"));

        PlayerInfo[playerid][Admin] = DOF2_GetInt(arquivoplayers,"Admin");
        PlayerInfo[playerid][Doador] = DOF2_GetInt(arquivoplayers,"Doador");
        PlayerInfo[playerid][Matou] = DOF2_GetInt(arquivoplayers,"Matou");
        PlayerInfo[playerid][Morreu] = DOF2_GetInt(arquivoplayers,"Morreu");
        SalvarPlayer(playerid);
        DOF2_SaveFile();

        SendClientMessage(playerid,yellow,"Account logged!");
        SetPVarInt(playerid,"Logado",1);
    }
    else
    if(Tentativas[playerid] == 2)
    {
        SendClientMessage(playerid,red,"You got kicked for missing the password for that account 3 times");
        Kick(playerid);
        return 1;
    }
    else
    {
        SendClientMessage(playerid,red,"Incorret password. Try again.");
        Tentativas[playerid] ++;
    }
    return 1;
}
Reply
#7

error 033: array must be indexed (variable "Senha")

if(Senha == DOF2_GetString(arquivoplayers,"Senha"))
Reply
#8

Usa:

pawn Код:
DOF2_CreateFile(GetConta(playerid));
                DOF2_SetString(GetConta(playerid),"Password", inputtext);
No registo

e no Login usa:
pawn Код:
if(strcmp(DOF2_GetString(GetConta(playerid), "Password", pDados[playerid][Password]), inputtext, true, 10) == 0)
pawn Код:
new
        Senha[32];

    {
        DOF2_CreateFile(arquivoplayers);
        format(String, sizeof(String), "%s", Senha);
        DOF2_SetString(arquivoplayers,"Senha",String);
Em que o meu GetConta(playerid); й o teu arquivoplayers.. Mas й mais simples se criares uma stock..
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)