/* ______________________________________
|_____FILTERSCRIPT_TEMP_BAN_SYSTEM___|
|______________BY_F1N4L______________|
|_______Initialized_29_03_2016_______|
|_________Updated_30_03_2016_________|
|___________v_0.3z__v.2.0____________|
STOCKS:
BanirPlayer(Nome[], IP[], Banido_Por[], Data[], Motivo[], GetTime, Tempo[])
BanirIpPlayer(Nome[], IP[], Banido_Por[], Data[], Motivo[], GetTime, Tempo[])
DesbanirPlayer(Conta[])
*/
#include a_samp // By SA:MP Team
#include sscanf2 // By Y_Less
#include zcmd // By Zeex
#define BAN_TABLE "BANIMENTOS"
#define BAN_DB "Bans.db"
#define DIALOG_BAN 222
new
DB:Ban_Database
;
public OnFilterScriptInit()
{
new
BAN_STR[500]
;
Ban_Database = db_open(BAN_DB);
strcat(BAN_STR, "CREATE TABLE IF NOT EXISTS `"BAN_TABLE"` (");
strcat(BAN_STR, "`ID` INTEGER PRIMARY KEY AUTOINCREMENT,");
strcat(BAN_STR, "`NOME` TEXT DEFAULT 'N/A',");
strcat(BAN_STR, "`IP` TEXT DEFAULT '0.0.0.0',");
strcat(BAN_STR, "`BANIDO POR` TEXT DEFAULT 'N/A',");
strcat(BAN_STR, "`DATA` TEXT DEFAULT 'N/A',");
strcat(BAN_STR, "`MOTIVO` TEXT DEFAULT 'N/A',");
strcat(BAN_STR, "`GETTIME` NUMERIC DEFAULT '0',");
strcat(BAN_STR, "`TEMPO` TEXT DEFAULT 'N/A')");
db_free_result(db_query(Ban_Database, BAN_STR));
return 1;
}
public OnFilterScriptExit()
{
db_close(Ban_Database);
return 1;
}
public OnPlayerConnect(playerid)
{
new
String[350],
Strcat[500],
GetTime,
GetIp[30],
DBResult:Resultado
;
format(String,sizeof(String),"SELECT * FROM `"BAN_TABLE"` WHERE `IP` = '%s' OR `NOME` = '%s' COLLATE NOCASE", GetIP(playerid), GetName(playerid));
Resultado = db_query(Ban_Database,String);
if(db_num_rows(Resultado))
{
db_get_field_assoc(Resultado, "GETTIME", String, 40);
GetTime = strval(String);
if(GetTime > gettime())
{
format(String,sizeof(String), "NOME: %s\n", GetName(playerid));strcat(Strcat, String);
db_get_field_assoc(Resultado, "IP", GetIp, 30);
format(String,sizeof(String), "IP: %s\n", GetIp);strcat(Strcat, String);
db_get_field_assoc(Resultado, "BANIDO POR", String, 30);
format(String,sizeof(String), "BANIDO POR: %s\n", String);strcat(Strcat, String);
db_get_field_assoc(Resultado, "MOTIVO", String, 40);
format(String,sizeof(String), "MOTIVO: %s\n", String);strcat(Strcat, String);
db_get_field_assoc(Resultado, "DATA", String, 40);
format(String,sizeof(String), "DATA: %s\n", String);strcat(Strcat, String);
db_get_field_assoc(Resultado, "TEMPO", String, 50);
format(String,sizeof(String), "TEMPO: %s\n", String);strcat(Strcat, String);
format(String,sizeof(String), "TEMPO RESTANTE: %s", ConvertTime(GetTime - gettime()));strcat(Strcat, String);
ShowPlayerDialog(playerid, DIALOG_BAN, DIALOG_STYLE_MSGBOX, "Painel de Banimento:", Strcat, "SAIR","");
SetTimerEx("Kickar", 500, false, "i", playerid);
}
else if(GetTime < gettime())
{
format(String,sizeof(String),"DELETE FROM `"BAN_TABLE"` WHERE `NOME` = '%s'", GetName(playerid));
Resultado = db_query(Ban_Database,String);
SendClientMessage(playerid, 0xFF0000FF, "Sua conta foi desbanida.");
}
}
db_free_result(db_query(Ban_Database, String));
return 1;
}
public OnPlayerSpawn(playerid)
{
return 1;
}
CMD:ban(playerid, params[])
{
new
TARGET,
MOTIVO[30],
DATA[50],
STRING[300],
Data[3],
Hora[3],
GetTime,
TEMPO
;
if(!IsPlayerAdmin(playerid))
return SendClientMessage(playerid, -1, "Você precisa ser Admin RCON para realizar esta ação.");
if(sscanf(params, "us[300]is[30]", TARGET, STRING, TEMPO, MOTIVO))
return SendClientMessage(playerid, -1, "/BAN [ID] [DIAS(D) ou HORAS(H) ou MINUTOS(M)] [TEMPO] [MOTIVO]");
if(strlen(MOTIVO) < 3 || strlen(MOTIVO) > 30)
return SendClientMessage(playerid, -1, "Motivo inválido. Utilize entre 3 - 30 caracteres.");
if(TEMPO < 1 || TEMPO > 1000)
return SendClientMessage(playerid, -1, "Tempo inválido. Utilize entre 1 - 1000 minutos/horas/dias.");
if(!IsPlayerConnected(TARGET))
return SendClientMessage(playerid, -1, "Player não está conectado.");
getdate(Data[0], Data[1], Data[2]);
gettime(Hora[0], Hora[1], Hora[2]);
format(DATA, sizeof(DATA), "%02i/%02i/%02i | %02i:%02i:%02i", Data[2], Data[1], Data[0], Hora[0], Hora[1], Hora[2]);
if(strcmp(STRING, "D", true) == 0)
GetTime = TEMPO * 24 * 60 * 60,
BanirPlayer(GetName(TARGET), GetIP(TARGET), GetName(playerid), DATA, MOTIVO, GetTime, ConvertTime(GetTime)),
db_free_result(db_query(Ban_Database, STRING));
else if(strcmp(STRING, "H", true) == 0)
GetTime = TEMPO * 60 * 60,
BanirPlayer(GetName(TARGET), GetIP(TARGET), GetName(playerid), DATA, MOTIVO, GetTime, ConvertTime(GetTime)),
db_free_result(db_query(Ban_Database, STRING));
else if(strcmp(STRING, "M", true) == 0)
GetTime = TEMPO * 60,
BanirPlayer(GetName(TARGET), GetIP(TARGET), GetName(playerid), DATA, MOTIVO, GetTime, ConvertTime(GetTime)),
db_free_result(db_query(Ban_Database, STRING));
else return SendClientMessage(playerid, -1, "/BAN [ID] [MOTIVO] [DIAS(D) ou HORAS(H) ou MINUTOS(M)] [TEMPO]");
format(STRING,sizeof(STRING), "Admin '%s' baniu temporariamente o jogador '%s [ID: %i]'. Motivo: '%s'. TEMPO: '%s'", GetName(playerid), GetName(TARGET), TARGET, MOTIVO, ConvertTime(GetTime));
SendClientMessageToAll(-1, STRING);
return 1;
}
CMD:banip(playerid, params[])
{
new
IP[30],
MOTIVO[30],
DATA[50],
STRING[300],
Data[3],
Hora[3],
GetTime,
TEMPO
;
if(!IsPlayerAdmin(playerid))
return SendClientMessage(playerid, -1, "Você precisa ser Admin RCON para realizar esta ação.");
if(sscanf(params, "s[30]s[300]is[30]", IP, STRING, TEMPO, MOTIVO))
return SendClientMessage(playerid, -1, "/BANIP [IP] [DIAS(D) ou HORAS(H) ou MINUTOS(H)] [TEMPO] [MOTIVO]");
if(strlen(MOTIVO) < 3 || strlen(MOTIVO) > 30)
return SendClientMessage(playerid, -1, "Motivo inválido. Utilize entre 3 - 30 caracteres.");
if(strlen(IP) < 1 || strlen(IP) > 30)
return SendClientMessage(playerid, -1, "Tamanho de IP inválido.");
if(TEMPO < 1 || TEMPO > 1000)
return SendClientMessage(playerid, -1, "Tempo inválido. Utilize entre 1 - 1000 minutos/horas/dias.");
getdate(Data[0], Data[1], Data[2]);
gettime(Hora[0], Hora[1], Hora[2]);
format(DATA, sizeof(DATA), "%02i/%02i/%02i | %02i:%02i:%02i", Data[2], Data[1], Data[0], Hora[0], Hora[1], Hora[2]);
if(strcmp(STRING, "D", true) == 0)
GetTime = TEMPO * 24 * 60 * 60,
BanirIpPlayer("N/A", IP, GetName(playerid), DATA, MOTIVO, GetTime, ConvertTime(GetTime)),
db_free_result(db_query(Ban_Database, STRING));
else if(strcmp(STRING, "H", true) == 0)
GetTime = TEMPO * 60 * 60,
BanirIpPlayer("N/A", IP, GetName(playerid), DATA, MOTIVO, GetTime, ConvertTime(GetTime)),
db_free_result(db_query(Ban_Database, STRING));
else if(strcmp(STRING, "M", true) == 0)
GetTime = TEMPO * 60,
BanirIpPlayer("N/A", IP, GetName(playerid), DATA, MOTIVO, GetTime, ConvertTime(GetTime)),
db_free_result(db_query(Ban_Database, STRING));
else return SendClientMessage(playerid, -1, "/BAN [ID] [DIAS(D) ou HORAS(H) ou MINUTOS(M)] [TEMPO] [MOTIVO]");
format(STRING,sizeof(STRING), "Admin '%s' baniu temporariamente o IP '%s'. Motivo: '%s'. TEMPO: '%s'", GetName(playerid), IP, MOTIVO, ConvertTime(GetTime));
SendClientMessageToAll(-1, STRING);
return 1;
}
CMD:desban(playerid, params[])
{
new
DESBAN[30],
CONTA[30],
STRING[200],
DBResult:Resultado
;
if(!IsPlayerAdmin(playerid))
return SendClientMessage(playerid, -1, "Você precisa ser Admin RCON para realizar esta ação.");
if(sscanf(params, "s[30]s[30]", DESBAN, CONTA))
return SendClientMessage(playerid, -1, "/DESBAN IP [IP] | /DESBAN NOME [NOME]");
if(strcmp(DESBAN, "IP", true) == 0)
{
format(STRING, sizeof(STRING),"SELECT * FROM `"BAN_TABLE"` WHERE `IP` = '%s'", CONTA);
}
else if(strcmp(DESBAN, "NOME", true) == 0)
{
format(STRING, sizeof(STRING),"SELECT * FROM `"BAN_TABLE"` WHERE `NOME` = '%s' COLLATE NOCASE", CONTA);
}
else return SendClientMessage(playerid, -1, "/DESBAN IP [IP] | /DESBAN NOME [NOME]");
Resultado = db_query(Ban_Database, STRING);
if(db_num_rows(Resultado))
{
DesbanirPlayer(CONTA);
SendClientMessage(playerid, -1, "Conta desbanida com sucesso.");
}
else SendClientMessage(playerid, -1, "Conta inexistente no Banco de Dados.");
db_free_result(db_query(Ban_Database, STRING));
return 1;
}
stock BanirPlayer(xNome[], xIP[], xBanido_Por[], xData[], xMotivo[], xGetTime, xTempo[])
{
new
STRING[500],
STRCAT[300],
DBResult:Resultado
;
format(STRING,sizeof(STRING),"SELECT * FROM `"BAN_TABLE"` WHERE `NOME` = '%s' COLLATE NOCASE", xNome);
Resultado = db_query(Ban_Database,STRING);
if(!db_num_rows(Resultado))
format(STRING, sizeof(STRING), "INSERT INTO `"BAN_TABLE"` (`NOME`, `IP`, `BANIDO POR`, `DATA`, `MOTIVO`, `GETTIME`, `TEMPO`)VALUES('%s', '%s', '%s', '%s', '%s', '%i', '%s')", xNome, xIP, xBanido_Por, xData, xMotivo, xGetTime + gettime(), xTempo);
db_free_result(db_query(Ban_Database, STRING));
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(strcmp(GetName(i), xNome, false) == 0)
{
format(STRING, sizeof(STRING), "NOME: %s\n", xNome);strcat(STRCAT, STRING);
format(STRING, sizeof(STRING), "IP: %s\n", xIP);strcat(STRCAT, STRING);
format(STRING, sizeof(STRING), "BANIDO POR: %s\n", xBanido_Por);strcat(STRCAT, STRING);
format(STRING, sizeof(STRING), "MOTIVO: %s\n", xMotivo);strcat(STRCAT, STRING);
format(STRING, sizeof(STRING), "DATA: %s\n", xData);strcat(STRCAT, STRING);
format(STRING, sizeof(STRING), "TEMPO: %s\n", ConvertTime(xGetTime));strcat(STRCAT, STRING);
format(STRING, sizeof(STRING), "TEMPO RESTANTE: %s", ConvertTime(xGetTime));strcat(STRCAT, STRING);
ShowPlayerDialog(i, DIALOG_BAN, DIALOG_STYLE_MSGBOX, "Painel de Banimento:", STRCAT, "SAIR","");
SetTimerEx("Kickar", 500, false, "i", i);
}
}
return 1;
}
stock BanirIpPlayer(xNome[], xIP[], xBanido_Por[], xData[], xMotivo[], xGetTime, xTempo[])
{
new
STRING[500],
STRCAT[300],
DBResult:Resultado
;
format(STRING, sizeof(STRING),"SELECT * FROM `"BAN_TABLE"` WHERE `IP` = '%s'", xIP);
Resultado = db_query(Ban_Database, STRING);
if(db_num_rows(Resultado))
format(STRING, sizeof(STRING), "UPDATE `"BAN_TABLE"` SET `DATA` = '%s', `MOTIVO` = '%s', `GETTIME` = '%i', `TEMPO` = '%s' WHERE `IP` = '%s'", xData, xMotivo, xGetTime + gettime(), xTempo, xIP);
else
format(STRING, sizeof(STRING), "INSERT INTO `"BAN_TABLE"` (`NOME`, `IP`, `BANIDO POR`, `DATA`, `MOTIVO`, `GETTIME`, `TEMPO`)VALUES('%s', '%s', '%s', '%s', '%s', '%i', '%s')", xNome, xIP, xBanido_Por, xData, xMotivo, xGetTime + gettime(), xTempo);
db_free_result(db_query(Ban_Database, STRING));
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(strcmp(GetIP(i), xIP, true) == 0)
{
format(STRING, sizeof(STRING), "NOME: %s\n", GetName(i));strcat(STRCAT, STRING);
format(STRING, sizeof(STRING), "IP: %s\n", xIP);strcat(STRCAT, STRING);
format(STRING, sizeof(STRING), "BANIDO POR: %s\n", xBanido_Por);strcat(STRCAT, STRING);
format(STRING, sizeof(STRING), "MOTIVO: %s\n", xMotivo);strcat(STRCAT, STRING);
format(STRING, sizeof(STRING), "DATA: %s\n", xData);strcat(STRCAT, STRING);
format(STRING, sizeof(STRING), "TEMPO: %s\n", ConvertTime(xGetTime));strcat(STRCAT, STRING);
format(STRING, sizeof(STRING), "TEMPO RESTANTE: %s", ConvertTime(xGetTime));strcat(STRCAT, STRING);
ShowPlayerDialog(i, DIALOG_BAN, DIALOG_STYLE_MSGBOX, "Painel de Banimento:", STRCAT, "SAIR","");
SetTimerEx("Kickar", 500, false, "i", i);
}
}
return 1;
}
stock DesbanirPlayer(xConta[])
{
new
STRING[500],
DBResult:Resultado
;
format(STRING, sizeof(STRING),"SELECT * FROM `"BAN_TABLE"` WHERE `IP` = '%s' OR `NOME` = '%s' COLLATE NOCASE", xConta, xConta);
Resultado = db_query(Ban_Database, STRING);
if(db_num_rows(Resultado))
format(STRING, sizeof(STRING), "DELETE FROM `"BAN_TABLE"` WHERE `IP` = '%s' OR `NOME` = '%s' COLLATE NOCASE", xConta, xConta),
db_free_result(db_query(Ban_Database, STRING));
return 1;
}
forward Kickar(playerid);
public Kickar(playerid)
{
return Kick(playerid);
}
stock ConvertTime(SEGUNDOS)
{
new
MINUTOS,
HORAS,
DIAS,
String[200]
;
if(SEGUNDOS > 59)
{
MINUTOS = SEGUNDOS / 60;
SEGUNDOS = SEGUNDOS - MINUTOS * 60;
}
if(MINUTOS > 59)
{
HORAS = MINUTOS / 60;
MINUTOS = MINUTOS - HORAS * 60;
}
if(HORAS > 23)
{
DIAS = HORAS / 24;
HORAS = HORAS - DIAS * 24;
}
format(String, sizeof(String), "%02d Dias e %02d Horas e %02d Minutos e %02d Segundos", DIAS, HORAS, MINUTOS, SEGUNDOS);
if(DIAS == 0) format(String, sizeof(String),"%02d Horas e %02d Minutos e %02d Segundos", HORAS, MINUTOS, SEGUNDOS);
if(DIAS == 0 && HORAS == 0) format(String, sizeof(String),"%02d Minutos e %02d Segundos", MINUTOS, SEGUNDOS);
if(DIAS == 0 && HORAS == 0 && MINUTOS == 0) format(String, sizeof(String),"%02d Segundos", SEGUNDOS);
return String;
}
stock GetName(playerid)
{
new
GetName_[24]
;
GetPlayerName(playerid, GetName_, sizeof(GetName_));
return GetName_;
}
stock GetIP(playerid)
{
new
GetIP_[30]
;
GetPlayerIp(playerid, GetIP_, sizeof(GetIP_));
return GetIP_;
}
Comments
0 B
|👍
/👎
0 B
|👍
/👎
0 B
|👍
/👎