· 9 years ago · Nov 24, 2016, 03:14 PM
1#include a_samp
2#include a_mysql
3
4#define MY_SERVER "127.0.0.1"
5#define MY_DATABASE "server_samp"
6#define MY_USER "root"
7#define MY_PASSWORD ""
8
9#define INTERVALO_TIMER 10 // minutos
10
11new
12 MySqlConnection,
13 TimerPlayer[MAX_PLAYERS],
14 String[200],
15 Cache: Resultado
16;
17
18public OnFilterScriptInit()
19{
20 MySqlConnection = mysql_connect(MY_SERVER, MY_USER, MY_DATABASE, MY_PASSWORD);
21
22 mysql_query(MySqlConnection, "CREATE TABLE IF NOT EXISTS `whitelist` (`ID` INT(10) PRIMARY KEY AUTO_INCREMENT, `IP` VARCHAR(20), `TIME` DATETIME)");
23 mysql_query(MySqlConnection, "CREATE TABLE IF NOT EXISTS `blacklist` (`ID` INT(10) PRIMARY KEY AUTO_INCREMENT, `IP` VARCHAR(20))");
24
25 return true;
26}
27
28public OnPlayerConnect(playerid)
29{
30 mysql_format(MySqlConnection, String, sizeof String, "SELECT `IP` FROM `blacklist` WHERE `IP` = '%s'", gip(playerid));
31 Resultado = mysql_query(MySqlConnection, String);
32 if(cache_num_rows())
33 {
34 SendClientMessage(playerid, -1, "Você está proibido de entrar neste servidor por ter cometido uma infração.");
35 KickEx(playerid);
36
37 return false;
38 }
39 cache_delete(Resultado);
40
41 mysql_format(MySqlConnection, String, sizeof String, "SELECT `IP` FROM `whitelist` WHERE `IP` = '%s'", gip(playerid));
42 Resultado = mysql_query(MySqlConnection, String);
43 if(!cache_num_rows())
44 {
45 SendClientMessage(playerid, -1, "Você precisa abrir o Launcher deste servidor para poder jogar.");
46 KickEx(playerid);
47
48 return false;
49 }
50 cache_delete(Resultado);
51
52 return true;
53}
54
55public OnPlayerSpawn(playerid)
56{
57 TimerPlayer[playerid] = SetTimerEx("DateTime", INTERVALO_TIMER * 60 * 1000, true, "d", playerid);
58
59 return true;
60}
61
62public OnPlayerDisconnect(playerid, reason)
63{
64 KillTimer(TimerPlayer[playerid]);
65
66 mysql_format(MySqlConnection, String, sizeof String, "DELETE FROM `whitelist` WHERE `IP` = '%s'", gip(playerid));
67 mysql_query(MySqlConnection, String);
68
69 return true;
70}
71
72public OnFilterScriptExit()
73{
74 mysql_close(MySqlConnection);
75
76 return true;
77}
78
79forward DateTime(playerid);
80public DateTime(playerid)
81{
82 mysql_query(MySqlConnection, "DELETE FROM `whitelist` WHERE `TIME` < NOW()");
83
84 mysql_format(MySqlConnection, String, sizeof String, "SELECT `IP` FROM `whitelist` WHERE `IP` = '%s'", gip(playerid));
85 Resultado = mysql_query(MySqlConnection, String);
86 if(!cache_num_rows())
87 {
88 if(IsPlayerConnected(playerid))
89 {
90 Kick(playerid);
91 }
92 }
93 cache_delete(Resultado);
94
95 return true;
96}
97
98gip(playerid)
99{
100 new pip[16];
101 GetPlayerIp(playerid, pip, 16);
102 return pip;
103}
104
105stock KickEx(playerid)
106{
107 SetTimerEx("KickEx_", 200, false, "d", playerid);
108}
109
110forward KickEx_(playerid);
111public KickEx_(playerid) return Kick(playerid);