03.07.2013, 00:00
* 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 :
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
=> Vamos Criar um Enum(Significa "enumerar" os itens) do salvamento.
=> Vamos criar a variavel de erro que vai armazenar quantas vezes o player errou a senha
=> Vamos na public (OnGamemodeExit() - Se for Um gamemode) ou (OnFilterScriptInit() - Se for um filterscript) e adicione isso:
=> Vamos em (OnPlayerConnect(playerid) e adicione isso:
=> Vamos em OnPlayerDisconnect e adicione isso :
=> Vamos na Public OnPlayerSpawn e adicione isso :
=> Vamos na public OnDialogResponde e Adicione isso :
=> No final do GM, crie a stock de pegar o nome do player
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
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>
=> Vamos definir o id dos dialogs
pawn Код:
#define DIALOG_LOGAR 1
#define DIALOG_REGISTRO 2
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".
pawn Код:
new Erro[MAX_PLAYERS];
pawn Код:
DOF2_Exit(); // Para desligar a Include DOF2
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");
}
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
}
pawn Код:
SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); // Seta a skin do player quando ele spawnar para a skin salva
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;
}
pawn Код:
stock ReturnPlayer(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
return name;
}
Login:
Registro:
Spawn:
Arquivo Criado :
Arquivos Salvos :
__________________________________________________ _______________________________________________
UFAAAA !! terminei, como perceberam o tutorial ficou bem grande
OBS: Se tiver algum erro me avisem PORFAVOR