[Ajuda] Salvamento
#1

Segui um tutorial de DOF2 aqui no forum e consegui fazer isso

pawn Код:
#include a_samp
#include DOF2

#define DIALOG_REGISTRO 1
#define DIALOG_LOGAR 2

enum Informacoes
{
    Senha,
    Dinheiro,
    Admin,
    Score
}
new Player[MAX_PLAYERS][Informacoes];
new Erro[MAX_PLAYERS];

public OnGameModeInit()
{
    DOF2_Exit();
    return 1;
}
public OnPlayerConnect(playerid)
{
    new arquivo[40],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, 32);
    format(arquivo, 40, "Contas/%s.ini", name);
    if(DOF2_FileExists(arquivo))
    {
        ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Seja bem vindo!\nConta: Registrada\nDigite sua senha para logar:", "Logar", "Cancelar");
    }
    else  
    {
        ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "Registro", "Seja bem vindo!\nConta: Nгo Registrada\nDigite uma senha para registrar:", "Registrar", "Cancelar");
    }
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    new arquivo[40], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, 32);
    format(arquivo, 40, "Contas/%s.ini", name);
    if(dialogid == DIALOG_REGISTRO)
    {
        if(!strval(inputtext))
        {
            ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "Registro", "Digite sua senha para se registrar\nA senha deve conter somente numeros:", "Registrar", "Cancelar");
            return 1;
        }
        if(!response)
        {
            Kick(playerid);
            return 1;
        }
        else
        {
            Player[playerid][Senha] = DOF2_GetInt(arquivo, "Senha");
            if(strval(inputtext) == Player[playerid][Senha])
            {
                Player[playerid][Dinheiro] = DOF2_GetInt(arquivo, "Dinheiro");
                Player[playerid][Admin] = DOF2_GetInt(arquivo, "Admin");
                Player[playerid][Score] = DOF2_GetInt(arquivo, "Score");
                GivePlayerMoney(playerid, Player[playerid][Dinheiro]);
                }
                else
                {
                ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк digitou sua senha errado, digite-a novamente para logar!\nSe errar 5 vezes sua conta serб banida!", "Confirma", "Cancelar");
                Erro[playerid]++;
                if(Erro[playerid] == 5)
                {
                    SendClientMessage(playerid, -1, "[INFO]: Vocк foi banido por errar a senha 5 vezes.");
                    Kick(playerid);
                    return 1;
                }
            }
        }
    }
    return 1;
}

public OnPlayerDisconnect(playerid)
{
    new arquivo[40], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, 32);
    format(arquivo, 40, "Contas/%s.ini", name);
    if(DOF2_FileExists(arquivo))
    {
        Player[playerid][Dinheiro] = GetPlayerMoney(playerid);
        DOF2_SetInt(arquivo, "Senha", Player[playerid][Senha]);
        DOF2_SetInt(arquivo, "Dinheiro", Player[playerid][Dinheiro]);
        DOF2_SetInt(arquivo, "Admin", Player[playerid][Admin]);
        DOF2_SetInt(arquivo, "Score", Player[playerid][Score]);
        DOF2_SaveFile();
        }
    return 1;
}
Sу que o arquivo nao esta sendo criado e quando digito a senha para registrar depois era pra aparecer a dialog de login, mais aparece a dialog de senha errada, sera que o tutorial esta correto?
https://sampforum.blast.hk/showthread.php?tid=350855

(Obs: Estou aprendendo DOF2)
Reply
#2

Cara eu usava esse sistema de registro, mais sу que ele dava muito bug dai eu criei outro, se eu achar o link do outro eu te mando.
Reply
#3

Ok, faz este favor pra min
Reply
#4

Aqui esta o link https://sampforum.blast.hk/showthread.php?tid=281736
Reply
#5

Isso funciona sem bug nenhum?
Reply
#6

Sim.
Reply
#7

Concordo com o Matheus tambйm uso este sistema!
Reply
#8

Fiz um teste com este ai desse link mais o arquivo nao esta sendo criado dentro da pasta e a senha nao aparece corretamente, aparece outros numeros totalmente diferentes.
Reply
#9

Foi mal o double post mais eu preciso de ajuda rs.

pawn Код:
#include <a_samp>
#include <DOF2>

#define DIALOG_REGISTER 1
#define DIALOG_LOGIN 2

public OnGameModeInit()
{
    SetGameModeText("Blank Script DOF2");
    return 1;
}
enum pInfo
{
    pMatou,
    pMorreu,
    pDinheiro,
    pAdmin
}
new PlayerInfo[MAX_PLAYERS][pInfo];


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

public OnPlayerRequestClass(playerid, classid)
{
    return 1;
}

public OnPlayerConnect(playerid)
{
    new file[64];
    GetPlayerName(playerid,file,sizeof(file));
    format(file,sizeof(file),DOF2_File(file));
    if(DOF2_FileExists(file))
    {
        ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"Login","Digite sua senha para logar:\n","Logar","Sair");
    }
    else
    {
        ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,"Registro","Conta: Nгo registrada\nDigite uma senha para se registrar:","Registrar","Sair");
    }
    return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(dialogid)
    {
        case DIALOG_REGISTER:
        {
            if(!response) Kick(playerid);
            if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,"Registro","Conta: Nгo registrada\nDigite uma senha para se registrar:","Registrar","Sair");
           
            if(response)
            {
                new file[64];
                GetPlayerName(playerid,file,sizeof(file));
                format(file,sizeof(file),DOF2_File(file));
                DOF2_CreateFile(file, inputtext);
                DOF2_SetInt(file, "Matou",PlayerInfo[playerid][pMatou] = 0);
                DOF2_SetInt(file, "Morreu",PlayerInfo[playerid][pMorreu] = 0);
                DOF2_SetInt(file, "Dinheiro",PlayerInfo[playerid][pDinheiro] = 1000);
                DOF2_SetInt(file, "Admin",PlayerInfo[playerid][pAdmin] = 0);
                DOF2_SaveFile();
            }
        }
        case DIALOG_LOGIN:
        {
            if(!response) Kick(playerid);
            if(response)
            {
                new file[64];
                GetPlayerName(playerid,file,sizeof(file));
                format(file,sizeof(file),DOF2_File(file));
                if(DOF2_FileExists(file))
                {
                    if(DOF2_CheckLogin(file,inputtext))
                    {
                        PlayerInfo[playerid][pMatou] = DOF2_GetInt(file,"Matou");
                        PlayerInfo[playerid][pMorreu] = DOF2_GetInt(file,"Morreu");
                        PlayerInfo[playerid][pDinheiro] = DOF2_GetInt(file,"Dinheiro");
                        PlayerInfo[playerid][pAdmin] = DOF2_GetInt(file,"Admin");
                        return 1;
                    }
                    else
                    {
                        ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"Registro","Senha incorreta\nDigite sua senha para logar:","Logar","Sair");
                        return 1;
                    }
                }
            }
        }
    }
    return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
    new file[64];
    GetPlayerName(playerid,file,sizeof(file));
    format(file,sizeof(file),DOF2_File(file));
    DOF2_SetInt(file, "Matou",PlayerInfo[playerid][pMatou]);
    DOF2_SetInt(file, "Morreu",PlayerInfo[playerid][pMorreu]);
    DOF2_SetInt(file, "Dinheiro",PlayerInfo[playerid][pDinheiro]);
    DOF2_SetInt(file, "Admin",PlayerInfo[playerid][pAdmin]);
    return 1;
}

public OnPlayerSpawn(playerid)
{
    GivePlayerMoney(playerid, PlayerInfo[playerid][pDinheiro]);
    return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
    PlayerInfo[killerid][pMatou]++;
    PlayerInfo[playerid][pMorreu]++;
    return 1;
}
O problema й que o arquivo esta sendo salvo fora da pasta 'Users' e a senha e dinheiro que tem dentro do arquivo nao bate com as informaзoes do jogo.
Reply
#10

Quote:
Originally Posted by Tr0jan
Посмотреть сообщение
Foi mal o double post mais eu preciso de ajuda rs.

pawn Код:
#include <a_samp>
#include <DOF2>

#define DIALOG_REGISTER 1
#define DIALOG_LOGIN 2

public OnGameModeInit()
{
    SetGameModeText("Blank Script DOF2");
    return 1;
}
enum pInfo
{
    pMatou,
    pMorreu,
    pDinheiro,
    pAdmin
}
new PlayerInfo[MAX_PLAYERS][pInfo];


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

public OnPlayerRequestClass(playerid, classid)
{
    return 1;
}

public OnPlayerConnect(playerid)
{
    new file[64];
    GetPlayerName(playerid,file,sizeof(file));
    format(file,sizeof(file),DOF2_File(file));
    if(DOF2_FileExists(file))
    {
        ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"Login","Digite sua senha para logar:\n","Logar","Sair");
    }
    else
    {
        ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,"Registro","Conta: Nгo registrada\nDigite uma senha para se registrar:","Registrar","Sair");
    }
    return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(dialogid)
    {
        case DIALOG_REGISTER:
        {
            if(!response) Kick(playerid);
            if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,"Registro","Conta: Nгo registrada\nDigite uma senha para se registrar:","Registrar","Sair");
           
            if(response)
            {
                new file[64];
                GetPlayerName(playerid,file,sizeof(file));
                format(file,sizeof(file),DOF2_File(file));
                DOF2_CreateFile(file, inputtext);
                DOF2_SetInt(file, "Matou",PlayerInfo[playerid][pMatou] = 0);
                DOF2_SetInt(file, "Morreu",PlayerInfo[playerid][pMorreu] = 0);
                DOF2_SetInt(file, "Dinheiro",PlayerInfo[playerid][pDinheiro] = 1000);
                DOF2_SetInt(file, "Admin",PlayerInfo[playerid][pAdmin] = 0);
                DOF2_SaveFile();
            }
        }
        case DIALOG_LOGIN:
        {
            if(!response) Kick(playerid);
            if(response)
            {
                new file[64];
                GetPlayerName(playerid,file,sizeof(file));
                format(file,sizeof(file),DOF2_File(file));
                if(DOF2_FileExists(file))
                {
                    if(DOF2_CheckLogin(file,inputtext))
                    {
                        PlayerInfo[playerid][pMatou] = DOF2_GetInt(file,"Matou");
                        PlayerInfo[playerid][pMorreu] = DOF2_GetInt(file,"Morreu");
                        PlayerInfo[playerid][pDinheiro] = DOF2_GetInt(file,"Dinheiro");
                        PlayerInfo[playerid][pAdmin] = DOF2_GetInt(file,"Admin");
                        return 1;
                    }
                    else
                    {
                        ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"Registro","Senha incorreta\nDigite sua senha para logar:","Logar","Sair");
                        return 1;
                    }
                }
            }
        }
    }
    return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
    new file[64];
    GetPlayerName(playerid,file,sizeof(file));
    format(file,sizeof(file),DOF2_File(file));
    DOF2_SetInt(file, "Matou",PlayerInfo[playerid][pMatou]);
    DOF2_SetInt(file, "Morreu",PlayerInfo[playerid][pMorreu]);
    DOF2_SetInt(file, "Dinheiro",PlayerInfo[playerid][pDinheiro]);
    DOF2_SetInt(file, "Admin",PlayerInfo[playerid][pAdmin]);
    return 1;
}

public OnPlayerSpawn(playerid)
{
    GivePlayerMoney(playerid, PlayerInfo[playerid][pDinheiro]);
    return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
    PlayerInfo[killerid][pMatou]++;
    PlayerInfo[playerid][pMorreu]++;
    return 1;
}
O problema й que o arquivo esta sendo salvo fora da pasta 'Users' e a senha e dinheiro que tem dentro do arquivo nao bate com as informaзoes do jogo.
Alguem...?
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)