15.08.2017, 01:23
Olб hoje estava vendo a quantidade de tutoriais de "como criar sistema de registro"
Na grande maioria tutoriais poluidos , entгo resolvi trazer o meu modo de cria .
Muito parecido com os demais podem sem poluiзгo.
A primeira coisa e adicionar a include DOF2 no topo de seu game mode
Logo apos e necessario criar uma enum para podermos ter onde guardar informaзoes necessarias.
Meu Exemplo
Vale o aviso que nesta opзгo acima da para colocar mais variaveis das quais queira usar . (foda-se)
Agora vamos criar algumas definiзхes necessarias, junto a elas tera suas explicaзхes
Eu gosto de usar uma stock para getar o nome do jogador e nгo poluir o codigo.
Agora vamos comeзar a dar forma em nosso sistema .
Promeiramente vamos ao OnPlayerConnect (CTRL+F) para poder verificar se o jogador em questгo possui conta em nosso sistema ou nгo.
Agora iremos a parte mais basica deste sistema , localizem a OnDialogResponse (CTRL+F)
Localizado iremos montar um pequeno codigo , exemplo e explicaзгo logo abaixo.
Em montei duas callbacks para poder puxar e salvar os dados facilmente .
Exemplo e explicaзгo
Bom e isso bem simples , qualquer duvida , sugestгo ou ate mesmo algo que eu tenha errado so posta.
Nгo serei tгo ativo quanto antes , mas tarei por ai .
bandeja exposta aos bicho preguiзa.
Na grande maioria tutoriais poluidos , entгo resolvi trazer o meu modo de cria .
Muito parecido com os demais podem sem poluiзгo.
A primeira coisa e adicionar a include DOF2 no topo de seu game mode
Logo apos e necessario criar uma enum para podermos ter onde guardar informaзoes necessarias.
Meu Exemplo
PHP код:
enum pInfo {
pSenha[50]
}
new DonInforma[MAX_PLAYERS][pInfo];
Agora vamos criar algumas definiзхes necessarias, junto a elas tera suas explicaзхes
PHP код:
#define DIALOG_REGISTER 1 // Define para o dialog de registro
#define DIALOG_LOGIN 2 // Define para o dialog de login
#define ContaSalva "DonSpeed/DJogadores/%s.ini"// local onde as contas serгo salvas
new EmGeral[100];
PHP код:
stock DonPegaNome(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
return name;
}
/*Modo de uso */
format(str, sizeof str, "Seu nome e %s",DonPegaNome(playerid));
SendMessageClient(playerid, -1, str);
Promeiramente vamos ao OnPlayerConnect (CTRL+F) para poder verificar se o jogador em questгo possui conta em nosso sistema ou nгo.
PHP код:
format(EmGeral, sizeof(EmGeral), ContaSalva , DonPegaNome(playerid));// Procura no lugar onde fica amarzenado as contas
if(!DOF2_FileExists(EmGeral))// Verifica se o usuario possui conta
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registro", "Registro", "Registro", #);/*Caso nгo possua conta ira aparecer essa dialog*/
else
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Logar", "Logar", "Logar", #);/*Caso possua ira aparecer este dialog*/
Localizado iremos montar um pequeno codigo , exemplo e explicaзгo logo abaixo.
PHP код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case DIALOG_REGISTER:/*Para podermos fazer a resposta do dialog do registro montado em OnPlayerConnect*/
{
if(!response)return Kick(playerid);/*Caso ele aperto o botao da direita*/
format(DonInforma[playerid][pSenha], 50, inputtext);/*Seta nesta variavel o inputtext digitado(Senha)*/
DonSalva(playerid);// Salva a conta do usuario (Mais info abaixo)
}
case DIALOG_LOGIN:/*Para podermos fazer a resposta do dialog do login montado em OnPlayerConnect*/
{
if(!response)return Kick(playerid);/*Caso ele aperto o botao da direita*/
DonCarrega(playerid);/*Carrega senha e outras informaзoes do usuario*/
if(!strcmp(inputtext,DonInforma[playerid][pSenha],true))/*Verifica se a senha digitado e a mesma que foi guardada*/
{
/*Funзoes para quando ele logar esta parte*/
}else ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Logar", "Logar", "Logar", #);/*Caso ele erre a senha voltara ao dialog*/
}
}
return true;
}
Em montei duas callbacks para poder puxar e salvar os dados facilmente .
Exemplo e explicaзгo
PHP код:
forward DonSalva(playerid);
public DonSalva(playerid)
{
format(EmGeral, sizeof(EmGeral), ContaSalva , DonPegaNome(playerid));// Busca do local amarzenado as contas dos usuarios
if(!DOF2_FileExists(EmGeral))// Verifica se o mesmo tem ou nгo conta em nossos dados
{//Resposta caso nгo tenha
DOF2_CreateFile(EmGeral);//Ira criar arquivo em nossa pasta desejada
DOF2_SetString(EmGeral,"Senha",DonInforma[playerid][pSenha]); // Armazenara no arquivo a senha salva na pSenha
DOF2_SaveFile();//Farб uma att do arquivo
}else{// Caso ja tenha conta
DOF2_SetString(EmGeral,"Senha",DonInforma[playerid][pSenha]);// Armazenara no arquivo a senha salva na pSenha
DOF2_SaveFile();//Farб uma att do arquivo
}
return true;
}
PHP код:
forward DonCarrega(playerid);
public DonCarrega(playerid)
{
new Pass[50];// String
format(EmGeral, sizeof(EmGeral), ContaSalva , DonPegaNome(playerid));// Busca do local amarzenado as contas dos usuarios
if(!DOF2_FileExists(EmGeral))// Verifica se o mesmo tem ou nгo conta em nossos dados
{//Resposta nгo caso tenha
DOF2_CreateFile(EmGeral);//Ira criar arquivo em nossa pasta desejada
DOF2_GetString(EmGeral, "Senha", Pass);// Carrega a informaзao de Senha gravada no arquivo
format(DonInforma[playerid][pSenha], 50,Pass); // Passa a informaзгo a variavel pSenha
}
else
{//Resposta caso tenha
DOF2_GetString(EmGeral, "Senha", Pass);// Carrega a informaзao de Senha gravada no arquivo
format(DonInforma[playerid][pSenha], 50,Pass);// Passa a informaзгo a variavel pSenha
}
return true;
}
Nгo serei tгo ativo quanto antes , mas tarei por ai .
bandeja exposta aos bicho preguiзa.