[Tutorial] Sistema de Registro / Login em DOF2
#1

* Introduзгo

Bom galera, sei que jб exitem muitos tutoriais sobre isso mais to aqui mais uma vez porque sei que pode ser ъtil para novatos etc. Hoje vou ensinar como criar um sistema de registro/login com salva
mento em DOF2.

* Mгos a Obra

=> Vamos comeзar com as includes no topo do seu GM adicione :

pawn Код:
#include <DOF2>
OBS: Se nгo tem a include pode baixa-lб no Link : http://www.4shared.com/file/EFmfDfJd/DOF2.html


=> Vamos definir o id dos dialogs

pawn Код:
#define DIALOG_LOGAR 1
#define DIALOG_REGISTRO 2
=> Vamos Criar um Enum(Significa "enumerar" os itens) do salvamento.

pawn Код:
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".
=> Vamos criar a variavel de erro que vai armazenar quantas vezes o player errou a senha

pawn Код:
new Erro[MAX_PLAYERS];
=> Vamos na public (OnGamemodeExit() - Se for Um gamemode) ou (OnFilterScriptInit() - Se for um filterscript) e adicione isso:

pawn Код:
DOF2_Exit(); // Para desligar a Include DOF2
=> Vamos em (OnPlayerConnect(playerid) e adicione isso:

pawn Код:
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, "Jogadores/%s.ini", name); // formata a string arquivo e cria um arquivo na pasta "Jogadores"
    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");
    }
=> Vamos em OnPlayerDisconnect e adicione isso :

pawn Код:
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, "Jogadores/%s.ini", name); // Formata o arquivo que existe na pasta Jogadores
    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
    }
=> Vamos na Public OnPlayerSpawn e adicione isso :

pawn Код:
SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); // Seta a skin do player quando ele spawnar para a skin salva
=> Vamos na public OnDialogResponde e Adicione isso :

pawn Код:
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, "Jogadores/%s.ini", name); // formatando o arquivo para a pasta Jogadores
    if(dialogid == DIALOG_REGISTRO) // Dialog registro
    {
        if(!strval(inputtext)) // se ele nao digitar numeros da erro e volta no dialog de registro
        {
            ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "{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");
        SendClientMessage(playerid, -1, "[BBS] 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 arquivos
        {
            PlayerInfo[playerid][pSenha] = strval(inputtext); // pega a senha que ele digitou no campo do dialog
            DOF2_CreateFile(arquivo); // cria o arquivo na pasta Jogadores
            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}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");
        }
    }
    if(dialogid == DIALOG_LOGAR)
    {
        if(!strval(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(strval(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;
}
=> No final do GM, crie a stock de pegar o nome do player

pawn Код:
stock ReturnPlayer(playerid)
{
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    return name;
}
ScreenShots :

Login:



Registro:



Spawn:



Arquivo Criado :



Arquivos Salvos :



__________________________________________________ _______________________________________________

UFAAAA !! terminei, como perceberam o tutorial ficou bem grande
OBS: Se tiver algum erro me avisem PORFAVOR
Reply


Messages In This Thread
Sistema de Registro / Login em DOF2 - by GabrielSantos - 03.07.2013, 00:00
Re: Sistema de Registro / Login em DOF2 - by iMega - 03.07.2013, 00:17
Re: Sistema de Registro / Login em DOF2 - by GabrielSantos - 03.07.2013, 00:19
Re: Sistema de Registro / Login em DOF2 - by WLSF - 03.07.2013, 00:34
Re: Sistema de Registro / Login em DOF2 - by GabrielSantos - 03.07.2013, 00:45
Re: Sistema de Registro / Login em DOF2 - by WLSF - 03.07.2013, 00:50
Re: Sistema de Registro / Login em DOF2 - by StrondA_ - 03.07.2013, 00:58
Re: Sistema de Registro / Login em DOF2 - by GabrielSantos - 03.07.2013, 01:20
Re: Sistema de Registro / Login em DOF2 - by GabrielSantos - 03.07.2013, 01:22
Re: Sistema de Registro / Login em DOF2 - by maikonk - 03.07.2013, 01:44
Re: Sistema de Registro / Login em DOF2 - by focaximubh - 03.07.2013, 01:53
Re: Sistema de Registro / Login em DOF2 - by GabrielSantos - 03.07.2013, 13:36
Re: Sistema de Registro / Login em DOF2 - by GabrielSantos - 03.07.2013, 13:38
Re: Sistema de Registro / Login em DOF2 - by lucaspilar - 03.07.2013, 14:45
Re: Sistema de Registro / Login em DOF2 - by ProKillerpa - 03.07.2013, 15:11
Re: Sistema de Registro / Login em DOF2 - by GabrielSantos - 03.07.2013, 15:19
Re: Sistema de Registro / Login em DOF2 - by GabrielSantos - 03.07.2013, 15:28
Re: Sistema de Registro / Login em DOF2 - by DarckWilly - 03.07.2013, 16:35
Re: Sistema de Registro / Login em DOF2 - by GabrielSantos - 03.07.2013, 16:58
Re: Sistema de Registro / Login em DOF2 - by Schocc - 03.07.2013, 17:51
Re: Sistema de Registro / Login em DOF2 - by GabrielSantos - 03.07.2013, 18:58
Re: Sistema de Registro / Login em DOF2 - by xxRaioxx - 03.07.2013, 19:33
Re: Sistema de Registro / Login em DOF2 - by GabrielSantos - 04.07.2013, 10:19
Re: Sistema de Registro / Login em DOF2 - by standart - 22.11.2013, 23:54
Re: Sistema de Registro / Login em DOF2 - by Alisson Silva Alves - 06.03.2014, 11:49
Re: Sistema de Registro / Login em DOF2 - by Schocc - 06.03.2014, 20:59
Re: Sistema de Registro / Login em DOF2 - by Noppet - 23.01.2019, 22:12

Forum Jump:


Users browsing this thread: 1 Guest(s)