· 8 years ago · Jan 07, 2018, 08:10 PM
1#include <a_samp>
2#include <a_mysql>
3
4#define INTERVALO_TIMER 10 // minutos
5
6new
7 MySQL:IDConexao,
8 TimerPlayer[MAX_PLAYERS],
9 String[200],
10 Cache: Resultado
11;
12
13#define HOST "25.22.165.67" // IP de acesso ao phpmyadmin no caso se voce estiver hospedando no pc deixei localhost
14#define USUARIO "user" // Usuario por padrão é root
15#define DATABASE "samp" // nome da database que voce criou.
16#define SENHA "1" // não possue senha caso tenha usado o wamp
17
18
19main(){}
20
21public OnGameModeInit()
22{
23 IDConexao = mysql_connect(HOST, USUARIO, SENHA, DATABASE); // faremos a conexão ao host com as informações definidas acima
24 mysql_tquery(IDConexao, "CREATE TABLE IF NOT EXISTS `whitelist` (`ID` INT(10) PRIMARY KEY AUTO_INCREMENT, `IP` VARCHAR(20), `TIME` DATETIME)");
25 mysql_tquery(IDConexao, "CREATE TABLE IF NOT EXISTS `blacklist` (`ID` INT(10) PRIMARY KEY AUTO_INCREMENT, `IP` VARCHAR(20))");
26
27
28 if(mysql_errno(IDConexao) != 0) // Ultilizo essa maneira para saber se a conexão foi bem sucedida ou não
29 {
30 print("Falha na conexão ao banco de dados Mysql");
31 } else {
32 print("Conexão ao banco de dado Mysql efetuada com sucesso");
33 }
34 return 1;
35}
36
37public OnGameModeExit()
38{
39 mysql_close(IDConexao); // Aqui fecha a conexão com o host
40 return 1;
41}
42
43public OnPlayerConnect(playerid)
44{
45
46 mysql_format(IDConexao, String, sizeof String, "SELECT `IP` FROM `whitelist` WHERE `IP` = '%s'", gip(playerid));
47 Resultado = mysql_query(IDConexao, String);
48 if(!cache_num_rows())
49 {
50 SendClientMessage(playerid, -1, "Você precisa abrir o Launcher deste servidor para poder jogar.");
51 KickEx(playerid);
52 return false;
53 }
54 cache_delete(Resultado);
55
56 mysql_format(IDConexao, String, sizeof String, "SELECT `IP` FROM `whitelist` WHERE `IP` = '%s'", gip(playerid));
57 Resultado = mysql_query(IDConexao, String);
58 if(cache_num_rows())
59 {
60 SendClientMessage(playerid, -1, "Você está sendo Monitorado.");
61 return true;
62 }
63 cache_delete(Resultado);
64
65
66 return true;
67}
68
69public OnPlayerSpawn(playerid)
70{
71 TimerPlayer[playerid] = SetTimerEx("DateTime", INTERVALO_TIMER * 60 * 1000, true, "d", playerid);
72 return true;
73}
74
75
76public OnPlayerDisconnect(playerid, reason)
77{
78 KillTimer(TimerPlayer[playerid]);
79 mysql_format(IDConexao, String, sizeof String, "DELETE FROM `whitelist` WHERE `IP` = '%s'", gip(playerid));
80 mysql_query(IDConexao, String);
81 if(mysql_errno(IDConexao) != 0) // Ultilizo essa maneira para saber se a conexão foi bem sucedida ou não...
82 {
83 print("Não foi excluido");
84 } else {
85 print("foi excluido");
86 }
87 return 1;
88}
89
90
91
92forward DateTime(playerid);
93public DateTime(playerid)
94{
95 mysql_query(IDConexao, "DELETE FROM `whitelist` WHERE `TIME` < NOW()");
96
97 mysql_format(IDConexao, String, sizeof String, "SELECT `IP` FROM `whitelist` WHERE `IP` = '%s'", gip(playerid));
98 Resultado = mysql_query(IDConexao, String);
99 if(!cache_num_rows())
100 {
101 if(IsPlayerConnected(playerid))
102 {
103 Kick(playerid);
104 }
105 }
106 cache_delete(Resultado);
107
108 return true;
109}
110
111gip(playerid)
112{
113 new pip[16];
114 GetPlayerIp(playerid, pip, 16);
115 return pip;
116}
117
118stock KickEx(playerid)
119{
120 SetTimerEx("KickEx_", 200, false, "d", playerid);
121}
122
123forward KickEx_(playerid);
124public KickEx_(playerid) return Kick(playerid);