SA-MP Forums Archive
[Ajuda] Login/Registro senha = 0 (Como resolver) - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Login/Registro senha = 0 (Como resolver) (/showthread.php?tid=496640)



Login/Registro senha = 0 (Como resolver) - eNtinityGaming - 23.02.2014

Tipo eu vi um tutorial de login/registro em dof2 achei interessante e tals, coloquei no meu gm, dei umas modificadas pois ele estava aceitando somente numeros na senha, coloquei pra aceitar caracteres tambйm, ok atй ai tudo bem, ai eu registrei, e dei login normalmente com a senha teste123 ou seja numeros e letras, funfou de boa, ai fui na scriptfiles > contas, abri minha conta e quando me deparo com a senha, esta assim:

Senha = 0

ou seja no lugar de 0 era pra ficar o teste123 (Lembrando que isso sу ocorreu dps q eu fiz as modificaзхes pra tirar o '' Somente numeros na senha ''

Olha aqui o code:

pawn Код:
// Meu Servidor sendo criado do ZERO


#include <a_samp>
#include <zcmd>
#include <DOF2>


// Sistema de Registro e Login
#define DIALOG_LOGAR 1
#define DIALOG_REGISTRO 2

enum pInfo //criando o enum
{
    pSkin, // Variavel da skin
    pSenha // variavel da senha, Lembrando que o Ultimo Item nao precisa da Vнrgula
};
new PlayerInfo[MAX_PLAYERS][pInfo]; //Significa que cada vez que vocк digitar "PlayerInfo" Vai entender que й pra executar as variaveis da enum "pInfo".

new Erro[MAX_PLAYERS];

main()
{
    print("\n----------------------------------");
    print(" Servidor do henrique FODA CHUPA DODY");
    print("----------------------------------\n");
}

public OnGameModeInit()
{
    SetGameModeText("RPG Brasil");
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    return 1;
}

public OnGameModeExit()
{
    DOF2_Exit(); // Para desligar a Include DOF2
    return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
    SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
    return 1;
}

public OnPlayerConnect(playerid)
{
    new name[MAX_PLAYER_NAME]; // Cria a variavel de nome
    new arquivo[40]; // variavel arquivo
    GetPlayerName(playerid, name, 32);// Serve para pegar o nome do player
    format(arquivo, 40, "Contas/%s.ini", name); // formata a string arquivo e cria um arquivo na pasta "Contas"
    if(DOF2_FileExists(arquivo)) // se tiver registrado
    {
        ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "{00FF00}[{00FF00}B{00FF00}B{FFFF00}S{FFFF00}]{FFFFFF} - Login", "Status da conta : Registrada\n digite sua senha para logar!\nSe errar 5 vezes sua conta serб banida!", "Logar", "Cancelar");
    }
    else // se nao tiver registrado
    {
        ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "{00FF00}[{00FF00}B{00FF00}B{FFFF00}S{FFFF00}]{FFFFFF} - Registro", "Status da conta : Nгo Registrada\n digite uma senha para se registrar!", "Registrar", "Cancelar");
    }
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    new arquivo[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(arquivo, 40, "Contas/%s.ini", name); // Formata o arquivo que existe na pasta Contas
    if(DOF2_FileExists(arquivo)) // se o arquivo existir
    {
        DOF2_SetInt(arquivo, "Senha", PlayerInfo[playerid][pSenha]); // seta a senha do player para o que ele digitou
        DOF2_SetInt(arquivo, "Skin", PlayerInfo[playerid][pSkin]); // seta a skin para o id da skin atual
        DOF2_SaveFile(); // finalmente salvando o arquivo
    }
    return 1;
}

public OnPlayerSpawn(playerid)
{
    SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); // Seta a skin do player quando ele spawnar para a skin salva
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    new arquivo[40], name[MAX_PLAYER_NAME]; // criando a string arquivo com 40 celulas e criando a variavel name
    GetPlayerName(playerid, name, 32); // pegando o nome do player
    format(arquivo, 40, "Contas/%s.ini", name); // formatando o arquivo para a pasta Contas
    if(dialogid == DIALOG_REGISTRO) // Dialog registro
    {
        if(!strlen(inputtext)) // se ele nao digitar numeros da erro e volta no dialog de registro
        {
            ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "[{00FF00}NWD]{FFFFFF} - Registro", "Status da conta : Nгo Registrada\n digite uma senha para se registrar!", "Registrar", "Cancelar");
            return 1;
        }
        if(!response)
        {
            Kick(playerid);
            return 1;
        }
        else // se ele colocar a senha certa cria os arquivos
        {
            PlayerInfo[playerid][pSenha] = strlen(inputtext); // pega a senha que ele digitou no campo do dialog
            DOF2_CreateFile(arquivo); // cria o arquivo na pasta Contas
            DOF2_SetInt(arquivo, "Senha", PlayerInfo[playerid][pSenha]); // seta a senha para a que ele digitou no dialog
            DOF2_SetInt(arquivo, "Skin", 23); // seta a skin dele para 23, podendo mudar para qualquer numero.
            DOF2_SaveFile(); // salva o arquivo
            SendClientMessage(playerid, -1, "[BBS] Sua Conta foi Registrada, Agora digite sua senha novamente para logar!");
            ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "{00FF00}[{00FF00}NWD]{FFFFFF} - Login", "Status da conta : Registrada\n digite sua senha para logar!\nSe errar 5 vezes sua conta serб banida!", "Logar", "Cancelar");
        }
    }
    if(dialogid == DIALOG_LOGAR)
    {
        if(!strlen(inputtext)) // se ele nao digitar apenas numeros volta o dialog de login
        {
            SendClientMessage(playerid, -1, "[BBS] Erro, Digite apenas nъmeros para se logar.");
            ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "{00FF00}[{00FF00}B{00FF00}B{FFFF00}S{FFFF00}]{FFFFFF} - Login", "Status da conta : Registrada\n digite sua senha para logar!\nSe errar 5 vezes sua conta serб banida!", "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(arquivo, "Senha"); // pega a senha salva dele
            if (strlen(inputtext) == PlayerInfo[playerid][pSenha]) // pega a senha que ele digitou
            {
                PlayerInfo[playerid][pSkin] = DOF2_GetInt(arquivo, "Skin"); // pega a skin do player
                SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); // seta a skin do player para a skin salva
                SpawnPlayer(playerid); // em seguida, spawna o player
            }
            else // se ele errar a senha mostra o dialog denovo
            {
                ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "{00FF00}[{00FF00}B{00FF00}B{FFFF00}S{FFFF00}]{FFFFFF} - Login", "Status da conta : Registrada\n digite sua senha para logar!\nSe errar 5 vezes sua conta serб banida!", "Logar", "Cancelar");
                Erro[playerid]++; // e adiciona 1 erro
                if(Erro[playerid] == 5) // se ele errar 5 vezes ele serб banido !
                {
                    SendClientMessage(playerid, -1, "Sua conta estб banida por errar 5 vezes a sua senha, contacte o Admin para retirar seu Ban!");
                    Ban(playerid);
                    return 1;
                }
            }
        }
    }
    return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
    return 1;
}

public OnPlayerText(playerid, text[])
{
    return 1;
}

public OnPlayerUpdate(playerid)
{
    return 1;
}

public OnPlayerEnterVehicle(playerid, vehicleid)
{
    return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
    return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
    return 1;
}

stock ReturnPlayer(playerid)
{
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    return name;
}



Re: Login/Registro senha = 0 (Como resolver) - DannielCooper - 23.02.2014

pawn Код:
if (strlen(inputtext) == PlayerInfo[playerid][pSenha]) // pega a senha que ele digitou
            {
                PlayerInfo[playerid][pSkin] = DOF2_GetInt(arquivo, "Skin"); // pega a skin do player
                SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); // seta a skin do player para a skin salva
                SpawnPlayer(playerid); // em seguida, spawna o player
            }
vocк tб spawnando com a skin do cj nй ?


Re: Login/Registro senha = 0 (Como resolver) - eNtinityGaming - 23.02.2014

??

Nгo foi culpa minha se tiver algo de errado, pois acompanhei tudo certo do tutorial aqui no fуrum - samp


Re: Login/Registro senha = 0 (Como resolver) - DannielCooper - 23.02.2014

Vocк tб criando GM do 0 e nгo entendeu o erro ainda ?


Re: Login/Registro senha = 0 (Como resolver) - eNtinityGaming - 23.02.2014

Nгo '-'
Queria saber o porque a senha nгo ta aparecendo na pasta contas...

Creio que seja aqui:

pawn Код:
else // se ele colocar a senha certa cria os arquivos
        {
            PlayerInfo[playerid][pSenha] = strlen(inputtext); // pega a senha que ele digitou no campo do dialog
            DOF2_CreateFile(arquivo); // cria o arquivo na pasta Contas
            DOF2_SetInt(arquivo, "Senha", PlayerInfo[playerid][pSenha]); // seta a senha para a que ele digitou no dialog
            DOF2_SetInt(arquivo, "Skin", 23); // seta a skin dele para 23, podendo mudar para qualquer numero.
            DOF2_SaveFile(); // salva o arquivo
            SendClientMessage(playerid, -1, "[BBS] Sua Conta foi Registrada, Agora digite sua senha novamente para logar!");
            ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "{00FF00}[{00FF00}NWD]{FFFFFF} - Login", "Status da conta : Registrada\n digite sua senha para logar!\nSe errar 5 vezes sua conta serб banida!", "Logar", "Cancelar");
        }

pawn Код:
PlayerInfo[playerid][pSenha] = strlen(inputtext); // pega a senha que ele digitou no campo do dialog
tirei o strlen e os dois ( ) que ficavam fechando o inputtext deixando assim:

pawn Код:
PlayerInfo[playerid][pSenha] = inputtext; // pega a senha que ele digitou no campo do dialog
Resultando em um erro:
pawn Код:
error 006: must be assigned to an array



Re: Login/Registro senha = 0 (Como resolver) - DannielCooper - 23.02.2014

Ao ser criada, uma variбvel й setada automaticamente ao valor 0.

pawn Код:
if (strlen(inputtext) == PlayerInfo[playerid][pSenha]) // pega a senha que ele digitou
         {
Atй aqui tudo bem, mais logo abaixo vem o erro:

pawn Код:
PlayerInfo[playerid][pSkin] = DOF2_GetInt(arquivo, "Skin"); // Tб sendo setado б 0, que й a skin do CJ, e que vocк nгo setou б outra em momento algum e na sua senha tambйm.

                SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); // aqui ele pega a skin, que й a 0 (do CJ)
                SpawnPlayer(playerid); // em seguida, spawna o player
            }
nгo sou muito bom pra explicar, mas acho que dб pra entender.

De fato, para ser direto, o erro estб sendo causado porque vocк estб usando 1 verificaзгo pra 2 coisas totalmente diferentes.


Re: Login/Registro senha = 0 (Como resolver) - eNtinityGaming - 23.02.2014

Nгo estou spawnando com a skin de cj, na verdade tou, mas eu logo ai eu fico como cj rapidamente na velocidade da luz eu sou setado automaticamente pra skin 26


Re: Login/Registro senha = 0 (Como resolver) - eNtinityGaming - 23.02.2014

Cara vc n ta entendo, eu quero que aparece a senha na conta do player la na scriptfiles...


Re: Login/Registro senha = 0 (Como resolver) - DannielCooper - 23.02.2014

#Edit

Nгo tava entendendo mesmo.

pawn Код:
new Danniel[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Danniel, sizeof(Danniel));
    format(arquivo, 40, "SuaPasta/%s.txt", Danniel);
    DOF2_SetInt(arquivo, "Senha", PlayerInfo[playerid][pSenha]);



Re: Login/Registro senha = 0 (Como resolver) - eNtinityGaming - 23.02.2014

Й o jeito, nгo estou conseguindo '-'