· 8 years ago · Nov 16, 2017, 12:52 AM
1//------------------------------------Include ----------------------------------
2
3#include <a_samp>
4#include <a_mysql>
5#include <sscanf2>
6#include <zcmd>
7#include <foreach>
8#include <a_http>
9#define MAILER_URL "extrapolative-hamme.000webhostapp.com/mailer.php" // Altere
10#include <mailer>
11//------------------------------------ Define ----------------------------------
12//Configuracoes
13#define NOMESERVER "MEU RPG" //ALTERE
14#define SERVEREMAIL "marlonallvezz@gmail.com" //ALTERE
15
16//conexão Mysql
17
18#define host "localhost"
19#define usuario "root"
20#define database "samp"
21#define senha ""
22
23//Dialogs ID
24
25#define REGISTRO 1
26#define LOGIN 2
27#define MDSNAOSABEASENHA 3
28#define EMAIL 4
29#define SEXO 5
30#define EMAIL 4
31#define MDSNAOSABEASENHA 3
32//Settime ao kika o player
33
34#define KickZ(%0) SetTimerEx("KickP", 500, false, "i", %0)
35
36#define SalvaRT SetTimer("SalvarInformacoes", 15000, true)
37
38//------------------------------------ forwards --------------------------------
39
40forward KickP(playerid);
41forward KickP2(playerid);
42forward SalvarInformacoes(playerid);
43
44//------------------------------------ Variáveis -------------------------------
45new MySQL:Conexao;
46new query[900];
47new zsl[90];
48
49enum PlayerD
50{
51 ID,
52 Senha,
53 Dinheiro,
54 Skin,
55 Matou,
56 Email,
57 Morreu,
58 Nivel,
59 bool:Logado,
60 float:IP,
61 Admin,
62}
63
64static
65Float:pPosX[MAX_PLAYERS],
66Float:pPosY[MAX_PLAYERS],
67Float:pPosZ[MAX_PLAYERS],
68Float:pPosA[MAX_PLAYERS],
69SpawnarInPos[MAX_PLAYERS],
70Player[MAX_PLAYERS][PlayerD],
71Logadoo[MAX_PLAYERS],
72szString[30],
73pInterior[MAX_PLAYERS],
74Invalido[MAX_PLAYERS],
75id,
76Logou[MAX_PLAYERS]= 0,
77PrimeiraVezOn[MAX_PLAYERS],
78SS[350]
79;
80
81public OnFilterScriptInit()
82{
83 print("\n--------------------------------------------------------------------------------");
84 print("Fs beta por Marllun agradecimentos IlanZ pelo gamemode, SammyJ por tira as dúvidas");
85 print("--------------------------------------------------------------------------------\n");
86 SalvaRT;
87 Conexao = mysql_connect(host, usuario, senha, database);
88
89 if(mysql_errno() != 0) print("Nao foi possivel conectar na database MySQL"), SendRconCommand("exit");
90 else print("Conectado com sucesso na database MySQL");
91 query[0] = EOS;
92 strcat(query, "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,Skin int NOT NULL DEFAULT 299,Admin int NOT NULL DEFAULT 0,Morreu int NOT NULL DEFAULT 0,Matou int NOT NULL DEFAULT 0,PosX float NOT NULL DEFAULT 1958.3783,PosY float NOT NULL DEFAULT 1343.1572,PosZ float NOT NULL DEFAULT 15.3746,PosA float NOT NULL DEFAULT 269.1425,Interior int NOT NULL DEFAULT 0,Logou int NOT NULL DEFAULT 0,Email varchar(90) NOT NULL DEFAULT 0,IP varchar(15) NOT NULL DEFAULT 0)");
93 mysql_query(Conexao, query, false);
94 return 1;
95}
96
97public OnPlayerDeath(playerid, killerid, reason)
98{
99 if(IsPlayerConnected(killerid))
100 {
101
102 Player[playerid][Morreu] ++;
103 Player[playerid][Nivel] ++;
104 GameTextForPlayer(killerid,"~>~~r~Matou + 1 Level.!!!",2000,3);
105 }
106 if(IsPlayerConnected(playerid))
107 {
108
109 Player[playerid][Morreu] ++;
110 GameTextForPlayer(playerid,"~>~~r~Morto - 1 Level!!!",2000,3);
111 Player[playerid][Nivel] --;
112 }
113 return 1;
114}
115
116public OnPlayerConnect(playerid)
117{
118 new row;
119 Logadoo[playerid] = 0;
120
121 SpawnarInPos[playerid] = 1;
122 format(query, sizeof(query), "SELECT * FROM usuarios WHERE Nick='%s' LIMIT 1", PlayerName(playerid));
123 mysql_query(Conexao, query, true);
124 cache_get_row_count(row);
125 cache_get_value_name_int(0, "Senha", Player[playerid][Senha]);
126
127 if(row > 0)
128 {
129
130 PlayAudioStreamForPlayer(playerid, "https://dl.dropboxusercontent.com/s/n31l22dw0vejwwq/11%20Queen%20-%20Under%20Pressure.mp3");
131 format(SS, sizeof(SS), "{FFFFFF}Bem-vindo(a) ao {FF1E1E}NOME DO SERVER \n\nConta: %s\nStatus: {FF0000}registrado{FFFFFF} \n Insira sua senha abaixo para registrar-se", PlayerName(playerid));
132 ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "Login", SS, "Logar", "Sair");
133
134 }else{
135
136 PlayAudioStreamForPlayer(playerid, "https://dl.dropboxusercontent.com/s/n31l22dw0vejwwq/11%20Queen%20-%20Under%20Pressure.mp3");
137 format(SS, sizeof(SS), "{FFFFFF}Bem-vindo(a) ao {FF1E1E}NOME DO SERVER \n\nConta: %s\nStatus: {FF0000}Não registrada{FFFFFF} \n Insira sua senha abaixo para registrar-se", PlayerName(playerid));
138 ShowPlayerDialog(playerid,REGISTRO, DIALOG_STYLE_PASSWORD, "Registro", SS, "Registrar", "Sair");
139 }
140
141 for(new a = 0; a < 20; a++)
142 {
143
144 SendClientMessageToAll(0x33CCFFAA, " ");
145 }
146
147 return 1;
148}
149
150
151public OnPlayerDisconnect(playerid, reason)
152{
153 if(Player[playerid][Logado]) SalvarConta(playerid);
154 return 1;
155}
156
157public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
158{
159 if(dialogid == REGISTRO)
160 {
161
162
163 if(response)
164 {
165
166
167 if(strlen(inputtext) < 4 || strlen(inputtext) > 20)
168 {
169
170
171 new niss[255];
172 SendClientMessage(playerid, -1, "Digite uma senha de mais de 4 caracteres e menos de 20");
173 format(niss, sizeof(niss), "{FFFFFF}Bem-vindo(a) ao {FF1E1E}NOME DO SERVER \n\nConta: %s\nStatus: {FF0000}Não registrada{FFFFFF} \n Insira sua senha abaixo para registrar-se", PlayerName(playerid));
174 ShowPlayerDialog(playerid, REGISTRO, DIALOG_STYLE_PASSWORD,"Registro 1/3" ,niss, "Proximo", "Sair");
175 return 1;
176 }
177
178 CriarConta(playerid, inputtext);
179
180 ShowPlayerDialog(playerid, EMAIL, DIALOG_STYLE_INPUT, "{FFFFFF}Registro 2/3", "{FF1E1E}Digite seu email a baixo\n{A52A2A}UM VALIDO!! ", "Proximo", "Sair");
181 return true;
182 }
183 else
184 {
185
186 SendClientMessage(playerid, 0xFF0000AA, "Você Foi Kickado Porque Não Quis Se Registrar!!");
187 KickZ(playerid);
188 return true;
189 }
190 }
191 if(dialogid == EMAIL)
192 {
193
194
195 if(response)
196 {
197
198
199 if(!strlen(inputtext))
200 {
201 ShowPlayerDialog(playerid, EMAIL, DIALOG_STYLE_INPUT, "{FFFFFF}Registro 2/3", "{FF1E1E}Digite seu email a baixo\n{A52A2A}UM VALIDO!! ", "Proximo", "Sair");
202 SendClientMessage(playerid, 0xFF0000AA, "| ERRO | Email inválido!");
203 return 1;
204 }
205 format(zsl, sizeof(zsl), "%s", inputtext);
206 SendClientMessage(playerid, -1, zsl),
207 ShowPlayerDialog(playerid, SEXO, DIALOG_STYLE_MSGBOX, "{9400D3}SEXO 3/3", "Selecione seu sexo a baixo", "Homem", "Mulher");
208 return 1;
209 }
210 else
211 {
212
213
214 SendClientMessage(playerid, 0xFF0000AA, "Você Foi Kickado Porque Não Quis Se Registrar!!");
215 KickZ(playerid);
216 return true;
217 }
218 }
219 if(dialogid == SEXO)
220 {
221
222
223 if(response)
224 {
225
226
227 Player[playerid][Skin]=7;
228 cache_get_value_name_int(0, "Skin", Player[playerid][Skin]);
229 SetPlayerSkin(playerid,Player[playerid][Skin]);
230 Registrando(playerid);
231 return 1;
232 }
233 else
234 {
235
236
237 Player[playerid][Skin]=11;
238 cache_get_value_name_int(0, "Skin", Player[playerid][Skin]);
239 SetPlayerSkin(playerid,Player[playerid][Skin]);
240 Registrando(playerid);
241 return true;
242 }
243 }
244 if(dialogid == MDSNAOSABEASENHA)
245 {
246
247
248 if(response)
249 {
250
251
252 SendClientMessage(playerid, -1, "O enviamos um email para sua caixa de email!!");
253 new enemls[300];
254 cache_get_value_name_int(0, "Senha",Player[playerid][Senha]);
255 format(enemls, sizeof(enemls),"Depois de logar troque a senha! n/n/ {4169E1} Senha: %s",Player[playerid][Senha]);
256 cache_get_value_name_int(0, "Email",Player[playerid][Email]);
257 format(zsl, sizeof(zsl), "%s", Player[playerid][Email]);
258 SendMail(SERVEREMAIL, zsl, "NOME DO SERVER", NOMESERVER, enemls);
259 KickZ(playerid);
260 return 1;
261 }
262 else
263 {
264
265
266 SendClientMessage(playerid, 0xFF0000FF, "Você Foi Kickado Porque Não Quis recuperar a senha!!");
267 KickZ(playerid);
268 return true;
269 }
270 }
271 if(dialogid == LOGIN)
272 {
273
274
275 if(!response)
276 {
277
278 KickZ(playerid);
279 }
280 if(strlen(inputtext) < 4 || strlen(inputtext) > 20)
281 {
282
283
284 SendClientMessage(playerid, -1, "Digite uma senha de mais de 4 caracteres e menos de 20");
285 format(SS, sizeof(SS), "{FFFFFF}Bem-vindo(a) ao {FF1E1E}NOME DO SERVER \n\nConta: %s\nStatus: {FF0000}Registrada{FFFFFF} \n Insira sua senha abaixo para registrar-se", PlayerName(playerid));
286 ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "Login no servidor", SS, "Logar", "Sair");
287 return 1;
288 }
289 if(strval(inputtext) == Player[playerid][Senha])
290 {
291
292
293 Logandoo(playerid);
294 SpawnPlayer(playerid);
295 Logou[playerid] ++;
296 Logadoo[playerid] = 1;
297 SendClientMessage(playerid, -1, "Logado com sucesso");
298 }
299 else
300 {
301
302
303 Invalido[playerid] += 1;
304 if(Invalido[playerid] == 3)
305 {
306
307
308 ShowPlayerDialog(playerid, MDSNAOSABEASENHA, DIALOG_STYLE_MSGBOX, "Recuperação de senha", "Aperte em 'Enviar para enviar um email para o seu email contendo sua senha", "Enviar", "Cancelar");
309 return 1;
310 }
311 if(Invalido[playerid] == 1)
312 {
313
314
315 SendClientMessage(playerid,0xFF0000AA,"| CONTA | Senha errada!");
316 format(SS, sizeof(SS), "{FFFFFF}Bem-vindo(a) ao {FF1E1E}NOME DO SERVER \n\nConta: %s\nStatus: {FF0000}Registrada{FFFFFF} \n Insira sua senha abaixo para registrar-se", PlayerName(playerid));
317 ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "Login no servidor", SS, "Logar", "Sair");
318 }
319 if(Invalido[playerid] == 2)
320 {
321
322
323 SendClientMessage(playerid, 0xFF0000AA, "| CONTA | Próxima vez que você errar será kickado!");
324 ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "Login no servidor", "", "Logar", "Sair");
325 }
326 ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "Login no servidor", SS, "Logar", "Sair");
327 return 1;
328 }
329 }
330 return 1;
331}
332
333public OnPlayerSpawn(playerid)
334{
335 SetCameraBehindPlayer(playerid);
336 StopAudioStreamForPlayer(playerid);
337
338 SetPlayerPos(playerid, pPosX[playerid], pPosY[playerid], pPosZ[playerid]);
339 SetPlayerFacingAngle(playerid, pPosA[playerid]);
340 SetCameraBehindPlayer(playerid);
341
342 SetPlayerSkin(playerid, Player[playerid][Skin]);
343 SetPlayerScore(playerid, Player[playerid][Nivel]);
344 return 1;
345}
346
347public OnPlayerRequestSpawn(playerid)
348{
349 if(Logadoo[playerid] == 0)
350 {
351 SendClientMessage(playerid, -1, "Registre-se/logue para spawnar!");
352 return 0;
353 }
354 if(Logadoo[playerid] == 1)
355 {
356 return 1;
357 }
358 return 1;
359}
360
361PlayerName(playerid)
362{
363 new nome[24];
364 GetPlayerName(playerid, nome, 24);
365 return nome;
366}
367
368
369stock CriarConta(playerid, senhaz[])
370{
371 query[0] = EOS;
372 format(query, sizeof(query), "INSERT INTO usuarios(Nick, Senha) VALUES ('%s', '%s')", PlayerName(playerid), senhaz);
373 mysql_query(Conexao, query, true);
374 return 1;
375}
376
377
378stock SalvarConta(playerid)
379{
380
381 format(query, sizeof(query), "SELECT * FROM usuarios WHERE Nick='%s'", PlayerName(playerid));
382 mysql_query(Conexao,query,true);
383
384 format(query, sizeof(query), "UPDATE usuarios SET Nick='%s', Admin='%d', Nivel='%d', Skin='%d' ,Dinheiro='%d', Matou='%d', Morreu='%d', PosX='%f', PosY='%f', PosZ='%f', PosA='%f',Interior='%d',IP='%s',Logou='%d',Email='%s' WHERE ID='%d'", PlayerName(playerid),Player[playerid][Admin] ,GetPlayerScore(playerid), GetPlayerSkin(playerid),GetPlayerMoney(playerid),Player[playerid][Matou],Player[playerid][Morreu],pPosX[playerid],pPosY[playerid],pPosZ[playerid],pPosA[playerid],pInterior[playerid],szString,Logou[playerid],zsl,Player[playerid][ID]);
385 mysql_query(Conexao, query, false);
386 GetPlayerIp(playerid, szString, MAX_PLAYER_NAME);
387 pInterior[playerid] = GetPlayerInterior(playerid);
388 return 1;
389}
390stock CarregarConta(playerid)
391{
392 format(query, sizeof(query), "SELECT * FROM usuarios WHERE Nick='%s'", PlayerName(playerid));
393 mysql_query(Conexao,query,true);
394
395 cache_get_value_name_int(0, "ID", Player[playerid][ID]);
396 cache_get_value_name_int(0, "Nivel", Player[playerid][Nivel]);
397 cache_get_value_name_int(0, "Admin", Player[playerid][Admin]);
398 cache_get_value_name_int(0, "Matou", Player[playerid][Matou]);
399 cache_get_value_name_int(0, "Email", Player[playerid][Email]);
400 cache_get_value_name_int(0, "Morreu", Player[playerid][Morreu]);
401 cache_get_value_name_int(0, "Logou", Logou[playerid]);
402 cache_get_value_name_int(0, "Dinheiro", Player[playerid][Dinheiro]);
403 cache_get_value_name_int(0, "Interior", pInterior[playerid]);
404 cache_get_value_name_float(0, "PosX", pPosX[playerid]);
405 cache_get_value_name_float(0, "PosY", pPosY[playerid]);
406 cache_get_value_name_float(0, "PosZ", pPosZ[playerid]);
407 cache_get_value_name_float(0, "PosA", pPosA[playerid]);
408 SetPlayerPos(playerid, pPosX[playerid], pPosY[playerid], pPosZ[playerid]);
409 GetPlayerFacingAngle(playerid, pPosA[playerid]);
410
411
412 GivePlayerMoney(playerid, Player[playerid][Dinheiro]);
413
414
415 if(PrimeiraVezOn[playerid] == 1)
416 {
417
418 if(Player[playerid][Skin] == 7) return SetPlayerSkin(playerid,7);
419 if(Player[playerid][Skin] == 14) return SetPlayerSkin(playerid, 14);
420 }else{
421 if(PrimeiraVezOn[playerid] != 1) return cache_get_value_name_int(0, "Skin", Player[playerid][Skin]), SetPlayerSkin(playerid,Player[playerid][Skin]);
422 }
423
424 SpawnarInPos[playerid] = 0;
425 SpawnPlayer(playerid);
426
427 return 1;
428}
429
430
431stock Logandoo(playerid)
432{
433 CarregarConta(playerid);
434 SpawnPlayer(playerid);
435
436 if(PrimeiraVezOn[playerid] != 1)
437 {
438 //Coloque aqui os sistemas de quando ele logar
439 }
440 else format(SS, sizeof(SS), "Bem Vindo na sua Primeira Vez no Servidor ! Você Começou com 5000 reias e Level 1"),
441 SendClientMessage(playerid, -1, SS),
442 PrimeiraVezOn[playerid] = 0;
443
444
445 SendClientMessage(playerid, -1, "autenticado com sucesso.");
446 return true;
447}
448stock Registrando(playerid)//Coloque aqui o sistema de primeira vez no server
449{
450 new row;
451 format(query, sizeof(query), "SELECT * FROM usuarios WHERE Nick='%s' LIMIT 1", PlayerName(playerid));
452 mysql_query(Conexao, query, true);
453 cache_get_row_count(row);
454 cache_get_value_name_int(0, "Senha", Player[playerid][Senha]);
455
456 if(row > 0)
457 {
458 format(SS, sizeof(SS), "{FFFFFF}Bem-vindo(a) ao {FF1E1E}NOME DO SERVER \n\nConta: %s\nStatus: {FF0000}registrada{FFFFFF} \n Insira sua senha abaixo para registrar-se", PlayerName(playerid));
459 ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "Login", SS, "Logar", "Sair");
460 }
461 PrimeiraVezOn[playerid] = 1;
462 return 1;
463}
464
465public SalvarInformacoes(playerid)
466{
467 foreach(Player, i) SalvarConta(i);
468 if(IsPlayerAdmin(playerid))
469 {
470 if(Player[playerid][Admin] == 5)
471 return SendClientMessage(playerid, -1,"Salvando todas as contas online");
472 }
473 mysql_query(Conexao, query, true);
474 return 1;
475}
476
477
478
479CMD:daradministrador(playerid, params[])
480{
481 new levelAdmin;
482 if(!IsPlayerAdmin(playerid))
483 {
484
485 if(Player[playerid][Admin] < 5) return SendClientMessage(playerid, -1,"Seu nÃvel é insuficiente para setar como admin");
486 }
487 if(sscanf(params, "ui",id,levelAdmin)) return SendClientMessage(playerid,-1,"Use: /DarAdministrador [id] [level 1 - 5]");
488 if(levelAdmin > 5 ||levelAdmin < 1) return SendClientMessage(playerid, -1,"Bote um nivel maior que 1 e menor que 5!");
489 if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "Jogador(a) não está conectado!");
490 Player[playerid][Admin] = levelAdmin;
491 format(SS, sizeof(SS), "O administrador %s setou admin nivel %d ao jogador %s",PegarNome(playerid),levelAdmin,PegarNome(playerid));
492 SendClientMessageToAll(0x4169E1,SS);
493 return 1;
494}
495
496CMD:status(playerid, params[])
497{
498 static DialogStatus[250];
499 static String[550];
500
501 format(String, sizeof(String),"{FFFFFF}Status De {1E90FF}%s\n\n",PegarNome(playerid));
502 strcat(DialogStatus, String);
503 format(String, sizeof(String),"{FFFFFF}Email: {1E90FF}%s\n", zsl);
504 strcat(DialogStatus, String);
505 format(String, sizeof(String),"{FFFFFF}Level: {1E90FF}%d\n", Player[playerid][Nivel]);
506 strcat(DialogStatus, String);
507 format(String, sizeof(String),"{FFFFFF}Skin: {1E90FF}%d\n", Player[playerid][Skin]);
508 strcat(DialogStatus, String);
509 format(String, sizeof(String),"{FFFFFF}Dinheiro: {1E90FF}%d\n", Player[playerid][Dinheiro]);
510 strcat(DialogStatus, String);
511 format(String, sizeof(String),"{FFFFFF}Matou: {1E90FF}%d\n", Player[playerid][Matou]);
512 strcat(DialogStatus, String);
513 format(String, sizeof(String),"{FFFFFF}Morreu: {1E90FF}%d\n",Player[playerid][Morreu]);
514 strcat(DialogStatus, String);
515 format(String, sizeof(String),"{FFFFFF}Você Já Logou {1E90FF}%d{FFFFFF} Vezes Neste Servidor",Logou[playerid]);
516 strcat(DialogStatus, String);
517 ShowPlayerDialog(playerid, 5732, DIALOG_STYLE_MSGBOX, "{00F6F6}Minhas Informações", DialogStatus, "Fechar", "");
518 return true;
519}
520
521stock PegarNome(playerid)
522{
523 new name[MAX_PLAYER_NAME];
524 GetPlayerName(playerid, name, sizeof(name));
525 return name;
526}
527
528public KickP(playerid) return SetTimerEx("KickP2", 1, false, "i", playerid);
529public KickP2(playerid) return Kick(playerid);