/* ______________________________________ |_____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_; }