[Ajuda] Sistema de salvamento DOF2
#1

й o seguinte ele cria a conta sу que na hora que o jogador sai ele nгo estб salvando a senha digitada na hora do registro

pawn Код:
#define DIALOG_REGISTRO         1
#define DIALOG_LOGAR            2
 
public OnPlayerConnect(playerid)
{
    if(DOF2_FileExists(Contas(playerid))) ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк й Registrado, digite sua senha para logar!\nSe errar 3 vezes sua conta serб banida!", "Confirma", "Cancelar");
    else ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "Registro", "Vocк ainda nгo й Registrado, digite uma senha para se registrar!", "Confirma", "Cancelar");
return 1;
}
 
 
public OnPlayerDisconnect(playerid, reason)
{
    SalvarContas(playerid);
        return true;
}
 
 
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_REGISTRO)
    {
        if(!strval(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "Registro", "Digite apenas nъmeros!\nDigite sua senha novamente para se registrar!", "Confirma", "Cancelar");
        if(!response) return Kick(playerid);
        else
        {
            static _var[100];
            format(_var,sizeof(_var), "Contas", PlayerNome(playerid));
            DOF2_SetString(_var, "Senha",inputtext); // fazer assim com os outros
            DOF2_SaveFile();
            SalvarContas(playerid);
            ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк se cadastrou, agora й sу logar com sua senha registrada!", "Confirma", "Cancelar");
        }
    }
    if(dialogid == DIALOG_LOGAR)
    {
        if(!strval(inputtext)) return ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Digite apenas nъmeros!\nDigite sua senha cadastrada para logar!\nSe errar 5 vezes sua conta serб banida!", "Confirma", "Cancelar");
        if(!response) return Kick(playerid);
        else
        {
            static _var[100];
            format(_var,sizeof(_var), "Contas", PlayerNome(playerid));
            if ( !strcmp ( inputtext , DOF2_GetString(_var,"Senha") , false ))
            {
                PlayerInfo[playerid][kills] = DOF2_GetInt(Contas(playerid), "Matou");
                PlayerInfo[playerid][deaths] = DOF2_GetInt(Contas(playerid), "Morreu");
                PlayerInfo[playerid][dinheiro] = DOF2_GetInt(Contas(playerid), "Dinheiro");
                PC_DarDinheiro(playerid, PlayerInfo[playerid][dinheiro]);
            }
            else
            {
                ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк digitou sua senha errado, digite-a novamente para logar!\nSe errar 3 vezes sua conta serб banida!", "Confirma", "Cancelar");
                Erro[playerid]++;
                if(Erro[playerid] == 3)
                {
                    SendClientMessage(playerid, -1, "Sua conta estб banida por errar 3 vezes a sua senha, contacte o Admin para retirar seu Ban!");
                    Ban(playerid);
                    return 1;
                }
            }
        }
    }
    return 1;
}
 
stock Contas(playerid)
{
    new arquivo[40], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, 32);
    format(arquivo, 40, "Contas/%s.ini", name);
    return arquivo;
}
 
stock SalvarContas(playerid)
{
    if(!DOF2_FileExists(Contas(playerid))) DOF2_CreateFile(Contas(playerid));
    else
    {
        PlayerInfo[playerid][dinheiro] = PC_GetarDinheiro(playerid);
        DOF2_SetInt(Contas(playerid), "Senha", PlayerInfo[playerid][senha]);
        DOF2_SetInt(Contas(playerid), "Matou", PlayerInfo[playerid][kills]);
        DOF2_SetInt(Contas(playerid), "Morreu", PlayerInfo[playerid][deaths]);
        DOF2_SetInt(Contas(playerid), "Dinheiro", PlayerInfo[playerid][dinheiro]);
        DOF2_SaveFile();
    }
    return 1;
}
@edit

eu perguntei para o mau.tito ele disse que o erro estб nessa linha

pawn Код:
DOF2_SetInt(Contas(playerid), "Senha", PlayerInfo[playerid][senha]);
sу que se eu apaga ele nгo vai cria dentro do arquivo

Ex: Senha = suasenha
Reply
#2

Vocк so precisa criar uma vez a linha da senha !
pawn Код:
PlayerInfo[playerid][senha] = strval(inputtext);
            DOF2_SetString(_var, "Senha",PlayerInfo[playerid][senha]);
Reply
#3

Quote:
Originally Posted by Don_Speed
Посмотреть сообщение
Vocк so precisa criar uma vez a linha da senha !
pawn Код:
PlayerInfo[playerid][senha] = strval(inputtext);
            DOF2_SetString(_var, "Senha",PlayerInfo[playerid][senha]);
nгo entendi ainda poderia explicar o motivo de nгo esta salvando a senha?
Reply
#4

Quote:

PlayerInfo[playerid][senha] = strval(inputtext);
DOF2_SetString(_var, "Senha",PlayerInfo[playerid][senha]);

Nгo esta certo isso ai.

Porque vocкs insistem em fazer errado

Use
pawn Код:
if( DOF2_CheckLogin( filedir, pasword ) ) {

    //Se ele digitar a senha de login com hash corretamente sera logado
    //filedir Diretorio da conta do Player
    //Em password coloque inputtext[]
} else {
    //Conta incorreta

}
Reply
#5

Quote:
Originally Posted by Schocc
Посмотреть сообщение
Nгo esta certo isso ai.

Porque vocкs insistem em fazer errado

Use
pawn Код:
if( DOF2_CheckLogin( filedir, pasword ) ) {

    //Se ele digitar a senha de login com hash corretamente sera logado
    //filedir Diretorio da conta do Player
    //Em password coloque inputtext[]
} else {
    //Conta incorreta

}
a questгo й que ele nгo estб salvando a senha e na hora de loga ta dando pra loga com qualquer senha

e no arquivo que salva os dados

a senha fica assim:

Senha = 0
Matou = 0
Morreu = 0
Dinheiro = 0

o certo seria ele fica

Senha = suasenha
Matou = 0
Morreu = 0
Dinheiro = 0
Reply
#6

Seguinte nгo precisa usar senha na enum pois ele vai setar a senha no arquivo e depois ele carrega
,so vai carregar quando ele logar caso contrario a linha vai fica la sem ninguem mecher .

Aconselho a fazer uma stock para carregar os arquivos .


pawn Код:
#define DIALOG_REGISTRO         1
#define DIALOG_LOGAR            2

public OnPlayerConnect(playerid)
{
    if(DOF2_FileExists(Contas(playerid)))
    {
         ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк й Registrado, digite sua senha para logar!\nSe errar 3 vezes sua conta serб banida!", "Confirma", "Cancelar");
    }
    else
    {
         ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "Registro", "Vocк ainda nгo й Registrado, digite uma senha para se registrar!", "Confirma", "Cancelar");
    }
    return 1;
}


public OnPlayerDisconnect(playerid, reason)
{
    SalvarContas(playerid);
    return true;
}


public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_REGISTRO)
    {
        if(!response) return Kick(playerid);
        else
        {
            DOF2_SetString(Contas(playerid), "Senha",inputtext); // fazer assim com os outros
            DOF2_SetInt(Contas(playerid), "Matou", 0);
            DOF2_SetInt(Contas(playerid), "Morreu", 0);
            DOF2_SetInt(Contas(playerid), "Dinheiro", 1000);
            DOF2_SaveFile();
            SalvarContas(playerid);
            ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк se cadastrou, agora й sу logar com sua senha registrada!", "Confirma", "Cancelar");
        }
    }
    if(dialogid == DIALOG_LOGAR)
    {
        if(!response) return Kick(playerid);
        else
        {
            if ( !strcmp ( inputtext , DOF2_GetString(Contas(playerid),"Senha") , false ))
            {
                PlayerInfo[playerid][kills] = DOF2_GetInt(Contas(playerid), "Matou");
                PlayerInfo[playerid][deaths] = DOF2_GetInt(Contas(playerid), "Morreu");
                PlayerInfo[playerid][dinheiro] = DOF2_GetInt(Contas(playerid), "Dinheiro");
                PC_DarDinheiro(playerid, PlayerInfo[playerid][dinheiro]);
            }
            else
            {
                ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк digitou sua senha errado, digite-a novamente para logar!\nSe errar 3 vezes sua conta serб banida!", "Confirma", "Cancelar");
                Erro[playerid]++;
                if(Erro[playerid] == 3)
                {
                    SendClientMessage(playerid, -1, "Sua conta estб banida por errar 3 vezes a sua senha, contacte o Admin para retirar seu Ban!");
                    Ban(playerid);
                    return 1;
                }
                return 1;
            }
        }
    }
    return 1;
}

stock Contas(playerid)
{
    new arquivo[40], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, 32);
    format(arquivo, 40, "Contas/%s.ini", name);
    return arquivo;
}

stock SalvarContas(playerid)
{
    PlayerInfo[playerid][dinheiro] = PC_GetarDinheiro(playerid);
    DOF2_SetInt(Contas(playerid), "Matou", PlayerInfo[playerid][kills]);
    DOF2_SetInt(Contas(playerid), "Morreu", PlayerInfo[playerid][deaths]);
    DOF2_SetInt(Contas(playerid), "Dinheiro", PlayerInfo[playerid][dinheiro]);
    DOF2_SaveFile();
    return 1;
}
Reply
#7

Quote:
Originally Posted by mau.tito
Посмотреть сообщение
Seguinte nгo precisa usar senha na enum pois ele vai setar a senha no arquivo e depois ele carrega
,so vai carregar quando ele logar caso contrario a linha vai fica la sem ninguem mecher .

Aconselho a fazer uma stock para carregar os arquivos .


pawn Код:
#define DIALOG_REGISTRO         1
#define DIALOG_LOGAR            2

public OnPlayerConnect(playerid)
{
    if(DOF2_FileExists(Contas(playerid)))
    {
         ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк й Registrado, digite sua senha para logar!\nSe errar 3 vezes sua conta serб banida!", "Confirma", "Cancelar");
    }
    else
    {
         ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "Registro", "Vocк ainda nгo й Registrado, digite uma senha para se registrar!", "Confirma", "Cancelar");
    }
    return 1;
}


public OnPlayerDisconnect(playerid, reason)
{
    SalvarContas(playerid);
    return true;
}


public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_REGISTRO)
    {
        if(!response) return Kick(playerid);
        else
        {
            DOF2_SetString(Contas(playerid), "Senha",inputtext); // fazer assim com os outros
            DOF2_SetInt(Contas(playerid), "Matou", 0);
            DOF2_SetInt(Contas(playerid), "Morreu", 0);
            DOF2_SetInt(Contas(playerid), "Dinheiro", 1000);
            DOF2_SaveFile();
            SalvarContas(playerid);
            ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк se cadastrou, agora й sу logar com sua senha registrada!", "Confirma", "Cancelar");
        }
    }
    if(dialogid == DIALOG_LOGAR)
    {
        if(!response) return Kick(playerid);
        else
        {
            if ( !strcmp ( inputtext , DOF2_GetString(Contas(playerid),"Senha") , false ))
            {
                PlayerInfo[playerid][kills] = DOF2_GetInt(Contas(playerid), "Matou");
                PlayerInfo[playerid][deaths] = DOF2_GetInt(Contas(playerid), "Morreu");
                PlayerInfo[playerid][dinheiro] = DOF2_GetInt(Contas(playerid), "Dinheiro");
                PC_DarDinheiro(playerid, PlayerInfo[playerid][dinheiro]);
            }
            else
            {
                ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк digitou sua senha errado, digite-a novamente para logar!\nSe errar 3 vezes sua conta serб banida!", "Confirma", "Cancelar");
                Erro[playerid]++;
                if(Erro[playerid] == 3)
                {
                    SendClientMessage(playerid, -1, "Sua conta estб banida por errar 3 vezes a sua senha, contacte o Admin para retirar seu Ban!");
                    Ban(playerid);
                    return 1;
                }
                return 1;
            }
        }
    }
    return 1;
}

stock Contas(playerid)
{
    new arquivo[40], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, 32);
    format(arquivo, 40, "Contas/%s.ini", name);
    return arquivo;
}

stock SalvarContas(playerid)
{
    PlayerInfo[playerid][dinheiro] = PC_GetarDinheiro(playerid);
    DOF2_SetInt(Contas(playerid), "Matou", PlayerInfo[playerid][kills]);
    DOF2_SetInt(Contas(playerid), "Morreu", PlayerInfo[playerid][deaths]);
    DOF2_SetInt(Contas(playerid), "Dinheiro", PlayerInfo[playerid][dinheiro]);
    DOF2_SaveFile();
    return 1;
}
agora ele nгo ta criando o arquivo com o nome do player.
Reply
#8

pawn Код:
#define DIALOG_REGISTRO         1
#define DIALOG_LOGAR            2

public OnPlayerConnect(playerid)
{
    if(DOF2_FileExists(Contas(playerid)))
    {
         ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк й Registrado, digite sua senha para logar!\nSe errar 3 vezes sua conta serб banida!", "Confirma", "Cancelar");
    }
    else
    {
         ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "Registro", "Vocк ainda nгo й Registrado, digite uma senha para se registrar!", "Confirma", "Cancelar");
    }
    return 1;
}


public OnPlayerDisconnect(playerid, reason)
{
    SalvarContas(playerid);
    return true;
}


public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_REGISTRO)
    {
        if(!response) return Kick(playerid);
        else
        {
            DOF2_CreateFile(Contas(playerid));
            DOF2_SetString(Contas(playerid), "Senha",inputtext); // fazer assim com os outros
            DOF2_SetInt(Contas(playerid), "Matou", 0);
            DOF2_SetInt(Contas(playerid), "Morreu", 0);
            DOF2_SetInt(Contas(playerid), "Dinheiro", 1000);
            DOF2_SaveFile();
            SalvarContas(playerid);
            ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк se cadastrou, agora й sу logar com sua senha registrada!", "Confirma", "Cancelar");
        }
    }
    if(dialogid == DIALOG_LOGAR)
    {
        if(!response) return Kick(playerid);
        else
        {
            if ( !strcmp ( inputtext , DOF2_GetString(Contas(playerid),"Senha") , false ))
            {
                PlayerInfo[playerid][kills] = DOF2_GetInt(Contas(playerid), "Matou");
                PlayerInfo[playerid][deaths] = DOF2_GetInt(Contas(playerid), "Morreu");
                PlayerInfo[playerid][dinheiro] = DOF2_GetInt(Contas(playerid), "Dinheiro");
                PC_DarDinheiro(playerid, PlayerInfo[playerid][dinheiro]);
            }
            else
            {
                ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк digitou sua senha errado, digite-a novamente para logar!\nSe errar 3 vezes sua conta serб banida!", "Confirma", "Cancelar");
                Erro[playerid]++;
                if(Erro[playerid] == 3)
                {
                    SendClientMessage(playerid, -1, "Sua conta estб banida por errar 3 vezes a sua senha, contacte o Admin para retirar seu Ban!");
                    Ban(playerid);
                    return 1;
                }
                return 1;
            }
        }
    }
    return 1;
}

stock Contas(playerid)
{
    new arquivo[40], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, 32);
    format(arquivo, 40, "Contas/%s.ini", name);
    return arquivo;
}

stock SalvarContas(playerid)
{
    PlayerInfo[playerid][dinheiro] = PC_GetarDinheiro(playerid);
    DOF2_SetInt(Contas(playerid), "Matou", PlayerInfo[playerid][kills]);
    DOF2_SetInt(Contas(playerid), "Morreu", PlayerInfo[playerid][deaths]);
    DOF2_SetInt(Contas(playerid), "Dinheiro", PlayerInfo[playerid][dinheiro]);
    DOF2_SaveFile();
    return 1;
}
Reply
#9

Tenta ai

pawn Код:
#define DIALOG_REGISTRO         1
#define DIALOG_LOGAR            2

public OnPlayerConnect(playerid)
{
    if(DOF2_FileExists(Contas(playerid)))
    {
         ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк й Registrado, digite sua senha para logar!\nSe errar 3 vezes sua conta serб banida!", "Confirma", "Cancelar");
    }
    else
    {
         ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "Registro", "Vocк ainda nгo й Registrado, digite uma senha para se registrar!", "Confirma", "Cancelar");
    }
    return 1;
}


public OnPlayerDisconnect(playerid, reason)
{
    SalvarContas(playerid);
    return true;
}


public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_REGISTRO)
    {
        if(!response) return Kick(playerid);
        else
        {
            PlayerInfo[playerid][Senha] = inputtext;
            DOF2_CreateFile(Contas(playerid)
            DOF2_SetString(Contas(playerid),"Senha",PlayerInfo[playerid][Senha]);
            DOF2_SetInt(Contas(playerid), "Matou", 0);
            DOF2_SetInt(Contas(playerid), "Morreu", 0);
            DOF2_SetInt(Contas(playerid), "Dinheiro", 1000);
            DOF2_SaveFile();
            SalvarContas(playerid);
            ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк se cadastrou, agora й sу logar com sua senha registrada!", "Confirma", "Cancelar");
        }
    }
    if(dialogid == DIALOG_LOGAR)
    {
        if(!response) return Kick(playerid);
        else
        {
            if(!strcmp(inputtext,DOF2_GetString(Contas(playerid),"Senha") , false ))
            {
                PlayerInfo[playerid][kills] = DOF2_GetInt(Contas(playerid), "Matou");
                PlayerInfo[playerid][deaths] = DOF2_GetInt(Contas(playerid), "Morreu");
                PlayerInfo[playerid][dinheiro] = DOF2_GetInt(Contas(playerid), "Dinheiro");
                PC_DarDinheiro(playerid, PlayerInfo[playerid][dinheiro]);
            }
            else
            {
                ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк digitou sua senha errado, digite-a novamente para logar!\nSe errar 3 vezes sua conta serб banida!", "Confirma", "Cancelar");
                Erro[playerid]++;
                if(Erro[playerid] == 3)
                {
                    SendClientMessage(playerid, -1, "Sua conta estб banida por errar 3 vezes a sua senha, contacte o Admin para retirar seu Ban!");
                    Ban(playerid);
                    return 1;
                }
                return 1;
            }
        }
    }
    return 1;
}

stock Contas(playerid)
{
    new arquivo[40], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, 32);
    format(arquivo, 40, "Contas/%s.ini", name);
    return arquivo;
}

stock SalvarContas(playerid)
{
    if(!DOF2_FileExists(Contas(playerid))) DOF2_CreateFile(Contas(playerid));
    else
    {
        DOF2_SetInt(Contas(playerid), "Senha", PlayerInfo[playerid][Senha]);
        DOF2_SetInt(Contas(playerid), "Matou", PlayerInfo[playerid][kills]);
        DOF2_SetInt(Contas(playerid), "Morreu", PlayerInfo[playerid][deaths]);
        DOF2_SetInt(Contas(playerid), "Dinheiro", PlayerInfo[playerid][dinheiro]);
        DOF2_SaveFile();
    }
    return 1;
}
Reply
#10

funciono

sу que quando erra mais do que 3 vezes ele nгo estб banindo rsrs

+REP
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)