· 8 years ago · Oct 06, 2017, 05:44 PM
1/*
2 Obs: Quando usar o mysql_format, invés de usar %s, deverá ser usado %e
3*/
4
5
6public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
7{
8 if(dialogid == DIALOG_LOGIN)
9 {
10 if(response)
11 {
12 if(!strlen(inputtext))
13 return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login", "Digite sua senha para entrar:", "Entrar", "Sair");
14
15 if(!strcmp(inputtext, Player[playerid][Password]))
16 {
17 SendClientMessage(playerid, -1, "[SERVER]: Login feito com sucesso.");
18 SpawnPlayer(playerid);
19 }
20 else
21 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", "{FF0000}Senha Incorreta!\n\n{FFFFFF}Digite sua senha para entrar:", "Entrar", "Sair");
22 }
23 }
24 else if(dialogid == DIALOG_REGISTER)
25 {
26 if(response)
27 {
28 if(strlen(inputtext) < 5)
29 return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Registro", "Digite uma senha para registrar:", "Registrar", "Sair");
30
31 format(Player[playerid][Password], 80, "%s", inputtext); // Armazenei na variável a senha digitada para inserir depois.
32 ShowPlayerDialog(playerid, DIALOG_EMAIL, DIALOG_STYLE_INPUT, "Email", "Digite seu email para registrar:", "Confirmar", "Sair");
33 }
34 }
35 else if(dialogid == DIALOG_EMAIL)
36 {
37 if(response)
38 {
39 if(!strlen(inputtext))
40 return ShowPlayerDialog(playerid, DIALOG_EMAIL, DIALOG_STYLE_INPUT, "Email", "Digite seu email para registrar:", "Confirmar", "Sair");
41
42 if(!isValidEmail(inputtext)) // Verifica se o email é válido (ex: gmail, hotmail, etc), stock no final do código.
43 return ShowPlayerDialog(playerid, DIALOG_EMAIL, DIALOG_STYLE_INPUT, "Email", "{E44235}Email Inválido!\n{FFFFFF}Digite outro email para registrar:", "Confirmar", "Fechar");
44
45 // Vamos checar se já existe algum email registrado igual o que foi digitado. O resultado será na callback ResultEmail.
46 mysql_format(ConnectMySQL, String, sizeof String, "SELECT `Email` FROM `players` WHERE `Email` = '%e' LIMIT 1", inputtext);
47 mysql_tquery(ConnectMySQL, String, "ResultEmail", "is", playerid, inputtext);
48 // Selecionei todas as colunas email da tabela player, onde o email é igual a inputtext(o que foi digitado na dialog);
49 }
50 }
51 return 1;
52}
53
54ResultEmail(playerid, inputtext[]);
55public ResultEmail(playerid, inputtext[])
56{
57 if(cache_get_row_count()) // Acho resultado, então já existe algum email registrado igual o que foi digitado. Retornaremos para dialog para digitar outro email.
58 return ShowPlayerDialog(playerid, DIALOG_EMAIL, DIALOG_STYLE_INPUT, "Email", "{E44235}Este Email já foi registrado!\n{FFFFFF}Digite outro email para registrar:", "Confirmar", "Fechar");
59
60 else // Não existe nenhum email registrado igual o que foi digitado, então podemos inserir todos os dados e criar a conta.
61 {
62 mysql_format(ConnectMySQL, String, sizeof String, "INSERT INTO `players` (`Nick`, `Password`, `Email`) VALUES ('%e', '%e', '%e')", GetName[playerid], Player[playerid][Password], inputtext);
63 mysql_tquery(ConnectMySQL, String);
64
65 SendClientMessage(playerid, -1, "[SERVER]: Sua conta foi criada com sucesso.");
66 SpawnPlayer(playerid);
67 }
68 return 1;
69}
70
71stock isValidEmail(email[]) // Stock para verificar o domÃnio do email.
72{
73 static const ValidEmails[17][16] =
74 {
75 {"@gmail.com"},
76 {"@hotmail.com.br"},
77 {"@hotmail.com"},
78 {"@globo.com"},
79 {"@globomail.com"},
80 {"@uol.com"},
81 {"@outlook.com"},
82 {"@live.com"},
83 {"@msn.com"},
84 {"@yahoo.com.br"},
85 {"@ymail.com"},
86 {"@rocketmail.com"},
87 {"@ig.com.br"},
88 {"@pop.com.br"},
89 {"@bol.com.br"},
90 {"@oi.com.br"},
91 {"@r7.com"}
92 };
93
94 for(new i; i < sizeof ValidEmails; i++)
95 {
96 if(strfind(email, ValidEmails[i], false) != -1)
97 return true;
98 }
99 return false;
100}