[Ajuda] Salvar Grana
#1

Bom no GM que to criando fiz o sistema de login porйm so salva a senha e skin, eu criei a enum com dinheiro mas nao ta salvando vou dexar abaixo algumas coisas...

A Enum
pawn Код:
enum pInfo
{
    pSkin,
    pSenha[MAX_SENHA+1],
    pDinheiro
};
new PlayerInfo[MAX_PLAYERS][pInfo];
new Erro[MAX_PLAYERS]
OnPlayerConnected
pawn Код:
PlayerPlaySound(playerid, 1097, 0.0, 0.0, 10.0);
    new str[128];
    new name[MAX_PLAYER_NAME];
    new file[40];
    GetPlayerName(playerid, name, 32);
    format(str,sizeof(str), "»{FFFFFF} Olб %s, seja bem vindo ao GTA Brasil Vida Virtual, aguarde enquanto o servidor estб sendo carregado...", name);
    SendClientMessage(playerid, Vermelho, str);
    format(file, 40, PASTA_CONTAS, name);
    if(DOF2_FileExists(file))
    {
        ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Login", "\n» Informe sua senha para logar:", "Logar", "Cancelar");

    }
    else
    {
        ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Registro", "\n» Informe uma senha para se registrar:", "Registrar", "Cancelar");
    }
    StuntSuperSpeed[playerid] = false;
    return 1;
}
OnPlayerDisconnected
pawn Код:
new file[40], name[MAX_PLAYER_NAME]; // cria a variavel name com 40 celulas e a variavel Name
    GetPlayerName(playerid, name, 32); // Pega o nome do player
    format(file, 40, PASTA_CONTAS, name); // Formata o file que existe na pasta Jogadores
    if(DOF2_FileExists(file)) // se o file existir
    {
        DOF2_SetInt(file, "Senha", PlayerInfo[playerid][pSenha]); // seta a senha do player para o que ele digitou
        DOF2_SetInt(file, "Skin", PlayerInfo[playerid][pSkin]); // seta a skin para o id da skin atual
        DOF2_SetInt(file,"Dinheiro",PlayerInfo[playerid][pDinheiro]);
        DOF2_SaveFile(); // finalmente salvando o file
    }
OnPlayerSpawn

pawn Код:
SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); // Seta a skin do player quando ele spawnar para a skin salva
    GivePlayerMoney(playerid, PlayerInfo[playerid][pDinheiro]);
OnDialogResponse

pawn Код:
new file[40], name[MAX_PLAYER_NAME], str[128]; // criando a string file com 40 celulas e criando a variavel name
    GetPlayerName(playerid, name, 32); // pegando o nome do player
    format(file, 40, PASTA_CONTAS, name); // formatando o file para a pasta Jogadores
    if(dialogid == DIALOG_REGISTRO) // Dialog registro
    {
        if(strlen(inputtext) < MIN_SENHA || strlen(inputtext) > MAX_SENHA)
    {
        format(str, sizeof(str), "| ERRO | A senha deve ter entre %d e %d caracteres!", MIN_SENHA, MAX_SENHA);
        SendClientMessage(playerid, Vermelho, str);
        ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Registro", "/n» Informe uma senha para se registrar:", "Registrar", "Cancelar");
        return 1;
        }
        if(!strval(inputtext)) // se ele nao digitar numeros da erro e volta no dialog de registro
        {
        ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Registro", "/n» Informe uma senha para se registrar:", "Registrar", "Cancelar");
        SendClientMessage(playerid, -1, "{FF7F24}| ERRO | Digite apenas nъmeros para se registrar");
        return 1;
        }
        if(!response) //se ele apertar o botao Cancelar, kicka ele !
        {
            Kick(playerid);
            return 1;
        }
        else // se ele colocar a senha certa cria os files
        {
            PlayerInfo[playerid][pSenha] = strval(inputtext); // pega a senha que ele digitou no campo do dialog
            DOF2_CreateFile(file); // cria o file na pasta Jogadores
            DOF2_SetInt(file, "Senha", PlayerInfo[playerid][pSenha]); // seta a senha para a que ele digitou no dialog
            DOF2_SetInt(file, "Skin",38); // seta a skin dele para 38, podendo mudar para qualquer numero.
            DOF2_SetInt(file, "Dinheiro",PlayerInfo[playerid][pDinheiro]);
            DOF2_SaveFile(); // salva o file
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "{B9D3EE}| INFO | Conta registrada com sucesso");
            ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Login", "\n» Informe sua senha para logar:", "Logar", "Cancelar");
        }
    }
    if(dialogid == DIALOG_LOGAR)
    {
        if(!strval(inputtext)) // se ele nao digitar apenas numeros volta o dialog de login
        {
            SendClientMessage(playerid, -1, "{FF7F24}| ERRO | Digite apenas nъmeros para se logar.");
            ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Login", "\n» Informe sua senha para logar:", "Logar", "Cancelar");
            return 1;
        }
        if(!response) // se ele clickar em Cancelar kicka ele !
        {
            Kick(playerid);
            return 1;
        }
        else // Se ele colocar a senha certa
        {
            PlayerInfo[playerid][pSenha] = DOF2_GetInt(file, "Senha"); // pega a senha salva dele
            if(strval(inputtext) == PlayerInfo[playerid][pSenha]) // pega a senha que ele digitou
            {

                PlayerInfo[playerid][pSkin] = DOF2_GetInt(file, "Skin"); // pega a skin do player
                SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); // seta a skin do player para a skin salva
                PlayerInfo[playerid][pDinheiro] = DOF2_GetInt(file,"Dinheiro");
                GivePlayerMoney(playerid, PlayerInfo[playerid][pDinheiro]);
                SpawnPlayer(playerid); // em seguida, spawna o player
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, closed, "| INFO | Logado com sucesso");
            }
            else // se ele errar a senha mostra o dialog denovo
            {
               
                SendClientMessage(playerid, Vermelho, "| ERRO | Vocк errou a senha, tente novamente. ( Se errar 3 vezes й kickado )");
                ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Login", "\n» Informe sua senha para logar:", "Logar", "Cancelar");
                Erro[playerid]++;
                if(Erro[playerid] == 3) // se ele errar 3 vezes ele serб kickado !
                {
                    SendClientMessage(playerid, Vermelho, "| INFO | Vocк foi kickado por errar a senha 3 vezes");
                    Kick(playerid);
                    return 1;
                }
            }
        }
    }

Obs: Se vcs verem alguns bugs que nao esta relacionado ao topico tbn por favor me falem
Espero ajudas, vlw xD
Reply
#2

Upp quem puder me ajudar ...

E queria saber como salvar profissao tambйm ...
Reply
#3

pawn Код:
new file[40], name[MAX_PLAYER_NAME], str[128]; // criando a string file com 40 celulas e criando a variavel name
    GetPlayerName(playerid, name, 32); // pegando o nome do player
    format(file, 40, PASTA_CONTAS, name); // formatando o file para a pasta Jogadores
    if(dialogid == DIALOG_REGISTRO) // Dialog registro
    {
        if(strlen(inputtext) < MIN_SENHA || strlen(inputtext) > MAX_SENHA)
    {
        format(str, sizeof(str), "| ERRO | A senha deve ter entre %d e %d caracteres!", MIN_SENHA, MAX_SENHA);
        SendClientMessage(playerid, Vermelho, str);
        ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Registro", "/n» Informe uma senha para se registrar:", "Registrar", "Cancelar");
        return 1;
        }
        if(!strval(inputtext)) // se ele nao digitar numeros da erro e volta no dialog de registro
        {
        ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Registro", "/n» Informe uma senha para se registrar:", "Registrar", "Cancelar");
        SendClientMessage(playerid, -1, "{FF7F24}| ERRO | Digite apenas nъmeros para se registrar");
        return 1;
        }
        if(!response) //se ele apertar o botao Cancelar, kicka ele !
        {
            Kick(playerid);
            return 1;
        }
        else // se ele colocar a senha certa cria os files
        {
            PlayerInfo[playerid][pSenha] = strval(inputtext); // pega a senha que ele digitou no campo do dialog
            DOF2_CreateFile(file); // cria o file na pasta Jogadores
            DOF2_SetInt(file, "Senha", PlayerInfo[playerid][pSenha]); // seta a senha para a que ele digitou no dialog
            DOF2_SetInt(file, "Skin",38); // seta a skin dele para 38, podendo mudar para qualquer numero.
            DOF2_SetInt(file,"Dinheiro",0);
            DOF2_SaveFile(); // salva o file
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "                                     ");
            SendClientMessage(playerid, -1, "{B9D3EE}| INFO | Conta registrada com sucesso");
            ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Login", "\n» Informe sua senha para logar:", "Logar", "Cancelar");
        }
    }
    if(dialogid == DIALOG_LOGAR)
    {
        if(!strval(inputtext)) // se ele nao digitar apenas numeros volta o dialog de login
        {
            SendClientMessage(playerid, -1, "{FF7F24}| ERRO | Digite apenas nъmeros para se logar.");
            ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Login", "\n» Informe sua senha para logar:", "Logar", "Cancelar");
            return 1;
        }
        if(!response) // se ele clickar em Cancelar kicka ele !
        {
            Kick(playerid);
            return 1;
        }
        else // Se ele colocar a senha certa
        {
            PlayerInfo[playerid][pSenha] = DOF2_GetInt(file, "Senha"); // pega a senha salva dele
            if(strval(inputtext) == PlayerInfo[playerid][pSenha]) // pega a senha que ele digitou
            {

                PlayerInfo[playerid][pSkin] = DOF2_GetInt(file, "Skin"); // pega a skin do player
                SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); // seta a skin do player para a skin salva
                GivePlayerMoney(playerid, DOF2_GetInt(file,"Dinheiro"));
                SpawnPlayer(playerid); // em seguida, spawna o player
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, -1, "                           ");
                SendClientMessage(playerid, closed, "| INFO | Logado com sucesso");
            }
            else // se ele errar a senha mostra o dialog denovo
            {

                SendClientMessage(playerid, Vermelho, "| ERRO | Vocк errou a senha, tente novamente. ( Se errar 3 vezes й kickado )");
                ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Login", "\n» Informe sua senha para logar:", "Logar", "Cancelar");
                Erro[playerid]++;
                if(Erro[playerid] == 3) // se ele errar 3 vezes ele serб kickado !
                {
                    SendClientMessage(playerid, Vermelho, "| INFO | Vocк foi kickado por errar a senha 3 vezes");
                    Kick(playerid);
                    return 1;
                }
            }
        }
    }
#edit , dei uma editada no code e vi que nгo precisa que crie um pDinheiro, exclua..
Reply
#4

E й o seguinte, vo postar o cmd de dar skin e quero que salva a skin dele na pasta pode me ajudar? Fico grato

Comando /skin :
pawn Код:
CMD:skin(playerid, params[]) {
new id;
new skin;
new pName[128];
new file[40], name[MAX_PLAYER_NAME];
new str[128];
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,Laranja,"| ERRO | Vocк nгo й administrador(a)");
if(sscanf(params, "dd", id, skin)) return SendClientMessage(playerid, Vermelho,"| ERRO |{FFFFFF} Digite: /skin [id] [id da skin]");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, Laranja, "| ERRO | ID Invбlido!");
GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
SetPlayerSkin(id, skin);
format(str,sizeof(str),"* O(A) administrador(a) %s lhe deu a skin %d", pName, skin);
SendClientMessage(id, azuladm, str);
GetPlayerName(playerid, name, 32);
format(file, 40, PASTA_CONTAS, name);
if(DOF2_FileExists(file)) {
DOF2_SetInt(file, "Skin", PlayerInfo[playerid][pSkin]);
format(file, 40, PASTA_CONTAS, name);
DOF2_SaveFile();
}
return 1;
}
Tentei colocando algumas coisas maas nao ta salvando
Reply
#5

Entгo como que quando o player logar vai carregar a grana dele ?
Reply
#6

Nгo ta salvando :O
Reply
#7

Bote na public que o player spawn..

pawn Код:
PlayerInfo[playerid][pSkin] = DOF2_GetBool(file, "Skin");
SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
Reply
#8

Jбh tem isso, e aq eu coloqei o dodinheiro e continua sem salvar ;(
Reply
#9

Me adc no face que й melhor, vou te mandar um pvt.
Reply
#10

Quote:
Originally Posted by Lipe_Stronda
Посмотреть сообщение
Bote na public que o player spawn..

pawn Код:
PlayerInfo[playerid][pSkin] = DOF2_GetBool(file, "Skin");
SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
Tem que ser um inteiro, pois bool, й true ou false.

@Face й melhor ? tem certeza
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)