· 8 years ago · Feb 06, 2018, 04:42 PM
1#include <a_samp>
2#include <a_mysql>
3
4#define host "localhost"
5#define usuario "root"
6#define database "db"
7#define senha "" // No caso estou usando wamp e não precisa de senha :P
8
9#define DIALOG_REGISTRO 1
10#define DIALOG_LOGIN 2
11
12#define KickZ(%0) SetTimerEx("KickP", 500, false, "i", %0)
13
14forward KickP(playerid);
15forward KickP2(playerid);
16
17enum PlayerD
18{
19 ID,
20 Senha,
21 Dinheiro,
22 Nivel,
23 Logado
24}
25new Player[MAX_PLAYERS][PlayerD];
26
27main(){}
28
29new MySQL:Conexao;
30new query[250];
31
32public OnGameModeInit()
33{
34 Conexao = mysql_connect(host, usuario, senha, database);
35 if(mysql_errno() != 0) print("Nao foi possivel conectar na database MySQL"), SendRconCommand("exit");
36 else print("Conectado com sucesso na database MySQL");
37 mysql_tquery(Conexao, "CREATE TABLE IF NOT EXISTS usuarios(ID int AUTO_INCREMENT PRIMARY KEY, Nick varchar(20) NOT NULL,Senha int(20) NOT NULL,Dinheiro int NOT NULL DEFAULT 5000, Nivel int NOT NULL DEFAULT 1)");
38 return 1;
39}
40
41public OnGameModeExit()
42{
43 return 1;
44}
45
46public OnPlayerConnect(playerid)
47{
48 format(query, sizeof(query), "SELECT * FROM usuarios WHERE Nick='%s' LIMIT 1", PlayerName(playerid));
49 mysql_tquery(Conexao, query, "OnPlayerRegistrado", "d", playerid);
50 return 1;
51}
52
53public OnPlayerDisconnect(playerid, reason)
54{
55 if(Player[playerid][Logado])
56 {
57 SalvarConta(playerid);
58 LimparVariaveis(playerid);
59 }
60 return 1;
61}
62
63public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
64{
65 switch(dialogid)
66 {
67 case DIALOG_REGISTRO:
68 {
69 if(!response)
70 {
71 KickZ(playerid);
72 }
73 if(strlen(inputtext) < 4 || strlen(inputtext) > 20)
74 {
75 SendClientMessage(playerid, -1, "Digite uma senha de mais de 4 caracteres e menos de 20");
76 ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Registro no servidor", "Você não é registrado, digite uma senha abaixo", "Registrar", "Sair");
77 return 1;
78 }
79 if(!strval(inputtext))
80 {
81 ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Registro no servidor", "Você não é registrado, digite uma senha abaixo", "Registrar", "Sair");
82 SendClientMessage(playerid, -1, "Digite apenas numeros");
83 return 1;
84 }
85 CriarConta(playerid, inputtext);
86 SetSpawnInfo( playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 26, 36, 28, 150, 0, 0 );
87 SpawnPlayer(playerid);
88 }
89 case DIALOG_LOGIN:
90 {
91 if(!response)
92 {
93 KickZ(playerid);
94 }
95 if(strlen(inputtext) < 4 || strlen(inputtext) > 20)
96 {
97 SendClientMessage(playerid, -1, "Digite uma senha de mais de 4 caracteres e menos de 20");
98 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login no servidor", "Você é registrado, digite sua senha abaixo", "Logar", "Sair");
99 return 1;
100 }
101 if(strval(inputtext) == Player[playerid][Senha])
102 {
103 SendClientMessage(playerid, -1, "Logado com sucesso");
104 CarregarConta(playerid);
105 SetSpawnInfo(playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 26, 36, 28, 150, 0, 0 );
106 SpawnPlayer(playerid);
107 }
108 else
109 {
110 SendClientMessage(playerid, -1, "Senha incorreta");
111 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login no servidor", "Você é registrado, digite sua senha abaixo", "Logar", "Sair");
112 return 1;
113 }
114 }
115 }
116 return 1;
117}
118//
119
120forward OnPlayerRegistrado(playerid);
121public OnPlayerRegistrado(playerid) // Ingles + Portugues. HEHEHE
122{
123 new row;
124 cache_get_row_count(row);
125 cache_get_value_name_int(0, "Senha", Player[playerid][Senha]);
126 if(row > 0)
127 {
128 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login no servidor", "Você é registrado, digite sua senha abaixo", "Logar", "Sair");
129 }
130 else
131 {
132 ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Registro no servidor", "Você não é registrado, digite uma senha abaixo", "Registrar", "Sair");
133 }
134 return 1;
135}
136
137forward OnPlayerCarregar(playerid);
138public OnPlayerCarregar(playerid)
139{
140 cache_get_value_name_int(0, "ID", Player[playerid][ID]);
141 cache_get_value_name_int(0, "Dinheiro", Player[playerid][Dinheiro]);
142 cache_get_value_name_int(0, "Nivel", Player[playerid][Nivel]);
143
144 SetPlayerScore(playerid, Player[playerid][Nivel]);
145 GivePlayerMoney(playerid, Player[playerid][Dinheiro]);
146 Player[playerid][Logado] = 1;
147 SendClientMessage(playerid, -1, "Dados da conta foram carregados na database MySQL carregado");
148 return 1;
149}
150
151public KickP(playerid)
152{
153 SetTimerEx("KickP2", 1, false, "i", playerid);
154 return 1;
155}
156
157public KickP2(playerid)
158{
159 Kick(playerid);
160 return 1;
161}
162
163//
164
165PlayerName(playerid)
166{
167 new nome[24];
168 GetPlayerName(playerid, nome, 24);
169 return nome;
170}
171
172CriarConta(playerid, senhaz[])
173{
174 query[0] = EOS;
175 format(query, sizeof(query), "INSERT INTO usuarios(Nick, Senha) VALUES ('%s', '%s')", PlayerName(playerid), senhaz);
176 mysql_tquery(Conexao, query);
177 SendClientMessage(playerid, -1, "Conta criada com sucesso na database MySQL");
178 CarregarConta(playerid);
179 return 1;
180}
181
182SalvarConta(playerid)
183{
184 if(!Player[playerid][Logado]) return 0;
185 format(query, sizeof(query), "UPDATE usuarios SET Nick='%s', Nivel=%d, Dinheiro=%d WHERE ID=%d", PlayerName(playerid), GetPlayerScore(playerid), GetPlayerMoney(playerid), Player[playerid][ID]);
186 mysql_pquery(Conexao, query);
187 return 1;
188}
189
190CarregarConta(playerid)
191{
192 format(query, sizeof(query), "SELECT * FROM usuarios WHERE Nick='%s'", PlayerName(playerid));
193 mysql_tquery(Conexao,query, "OnPlayerCarregar", "d", playerid);
194 return 1;
195}
196
197LimparVariaveis(playerid)
198{
199 Player[playerid][ID] = 0;
200 Player[playerid][Dinheiro] = 0;
201 Player[playerid][Senha] = 0;
202 Player[playerid][Nivel] = 0;
203 Player[playerid][Logado] = 0;
204 return 1;
205}