Pages

Ads 468x60px


[FilterScript] jigBan - Simples sistema de banimentos (MySQL, zcmd) - My First Release :D

Olá a todos, estou aqui para fazer meu primeiro release no fórum sa-mp, espero que gostem.

Introdução:

Trata-se de um sistema onde pode-se banir e cancelar o banimento de jogadores, com 2 comandos.
Lembrando que é necessário ter o mínimo de conhecimento sobre MySQL para se usar este sistema (criar as tabelas etc...).

Comandos:

/ban - Bane um jogador
/desban - Cancela o banimento

Source - FilterScript
pawn Code:
#include <a_samp> #include <a_mysql> #include <zcmd> #include <sscanf2> #define UNBAN_TYPE_ACCOUNT (1) #define UNBAN_TYPE_IP (2) new     jDB,     jString[200],     jData[MAX_PLAYERS][2][24],     bool:jBlock[MAX_PLAYERS] ; forward @banPlayer(playerid, adminname[], reason[]); forward @checkBan(playerid); forward @checkForUnban(playerid, type, value[]); forward @submitUnban(playerid, type, value[]); public OnFilterScriptInit() {     jDB = mysql_connect("localhost", "root", "jigBanSystem", "");     if(mysql_ping(jDB) < 1)         return SendRconCommand("unloadfs jigBan");     print("\n------------------------------");     print("        Ban System");     print(" Copyright (c) 2012 Jigsaw`");     print("------------------------------\n");     return 1; } public OnFilterScriptExit() {     mysql_close(jDB);     return 1; } public OnPlayerConnect(playerid) {     GetPlayerName(playerid, jData[playerid][0], 24);     GetPlayerIp(playerid, jData[playerid][1], 24);         checkBan(playerid);     return 1; } public OnPlayerSpawn(playerid) {     if(jBlock[playerid])         return Kick(playerid);             return 1; } stock banPlayer(playerid, adminname[], reason[]) {     if(strlen(reason) > 64)         return 0;     getdate(jString[2], jString[1], jString[0]);     gettime(jString[3], jString[4], jString[5]);     format(jString, 32, "%02d/%02d/%d - %02d:%02d:%02d", jString[0], jString[1], jString[2], jString[3], jString[4], jString[5]);     mysql_format(jDB, jString, "INSERT INTO `jigBan` (`Name`,`Admin`,`Reason`,`DateAndHour`,`IP`) VALUES ('%s','%s','%s','%s','%s')",         jData[playerid][0],         adminname,         reason,         jString,         jData[playerid][1]     );     mysql_function_query(jDB, jString, false, "@banPlayer", "iss", playerid, adminname, reason);     return 1; } public @banPlayer(playerid, adminname[], reason[]) {     format(jString, sizeof jString, "%s{FFFFFF} foi banido por {1E90FF}%s {E31919}(%s)", jData[playerid][0], adminname, reason);     SendClientMessageToAll(0x1E90FFFF, jString);     Kick(playerid);     return 1; } stock checkBan(playerid) {     mysql_format(jDB, jString, "SELECT * FROM `jigBan` WHERE `Name` = '%s' OR `IP` = '%s'", jData[playerid][0], jData[playerid][1]);     mysql_function_query(jDB, jString, true, "@checkBan", "i", playerid);     return 1; } public @checkBan(playerid) {     new         jRows,         jFields     ;             cache_get_data(jRows, jFields, jDB);         if(!jRows)         return 1;         SendClientMessage(playerid, 0xE31919FF, "(!) Você possui registros de banimento!");         cache_get_field_content(0, "Name", jString, jDB);     format(jString, sizeof jString, "Conta: {1E90FF}%s", jString);     SendClientMessage(playerid, 0xFFFFFFFF, jString);     cache_get_field_content(0, "Admin", jString, jDB);     format(jString, sizeof jString, "Admin: {1E90FF}%s", jString);     SendClientMessage(playerid, 0xFFFFFFFF, jString);     cache_get_field_content(0, "Reason", jString, jDB);     format(jString, sizeof jString, "Motivo: {1E90FF}%s", jString);     SendClientMessage(playerid, 0xFFFFFFFF, jString);     cache_get_field_content(0, "DateAndHour", jString, jDB);     format(jString, sizeof jString, "Data - Hora: {1E90FF}%s", jString);     SendClientMessage(playerid, 0xFFFFFFFF, jString);     cache_get_field_content(0, "IP", jString, jDB);     format(jString, sizeof jString, "IP: {1E90FF}%s", jString);     SendClientMessage(playerid, 0xFFFFFFFF, jString);     jBlock[playerid] = true;     return 1; } stock checkForUnban(playerid, type, value[]) {     switch(type) {         case UNBAN_TYPE_ACCOUNT: {             mysql_format(jDB, jString, "SELECT * FROM `jigBan` WHERE `Name` = '%s'", value);             mysql_function_query(jDB, jString, true, "@checkForUnban", "iis", playerid, type, value);         }         case UNBAN_TYPE_IP: {             mysql_format(jDB, jString, "SELECT * FROM `jigBan` WHERE `IP` = '%s'", value);             mysql_function_query(jDB, jString, true, "@checkForUnban", "iis", playerid, type, value);         }     }     return 1; } public @checkForUnban(playerid, type, value[]) {     new         jRows,         jFields     ;         cache_get_data(jRows, jFields, jDB);     if(jRows > 0) {         mysql_format(jDB, jString, "DELETE FROM `jigBan` WHERE `%s` = '%s'", (type == 1) ? ("Name") : ("IP"), value);         mysql_function_query(jDB, jString, false, "@submitUnban", "iis", playerid, type, value);         return 1;     }     SendClientMessage(playerid, 0xF6F600FF, "(!) Nenhum registro de banimento encontrado.");     return 1; } public @submitUnban(playerid, type, value[]) {     format(jString, sizeof(jString), "O %s {1E90FF}%s{FFFFFF} foi desbanido por {1E90FF}%s.", (type == 1) ? ("jogador") : ("ip"), value, jData[playerid][0]);     SendClientMessageToAll(0xFFFFFFFF, jString);     return 1; } // Comandos CMD:ban(playerid, params[]) {     if(!IsPlayerAdmin(playerid))         return SendClientMessage(playerid, 0xFFFFFFFF, "(!) Somente admins rcon.");             new         jBanID,         jBanReason[64]     ;         if(sscanf(params, "us[64]", jBanID, jBanReason))         return SendClientMessage(playerid, 0xFFFFFFFF, "(!) Use /ban <ID/Nome> <Motivo>");     if(!IsPlayerConnected(jBanID) || jBanID == INVALID_PLAYER_ID)         return SendClientMessage(playerid, 0xFFFFFFFF, "(!) Jogador inativo.");     if(isnull(jBanReason))         return SendClientMessage(playerid, 0xFFFFFFFF, "(!) Por favor especifique o motivo pelo qual está banindo este jogador.");             banPlayer(jBanID, jData[playerid][0], jBanReason);     return 1; } CMD:desban(playerid, params[]) {     if(!IsPlayerAdmin(playerid))         return SendClientMessage(playerid, 0xFFFFFFFF, "(!) Somente admins rcon.");     new         jBanType,         jBanValue[24]     ;         if(sscanf(params, "is[24]", jBanType, jBanValue))         return SendClientMessage(playerid, 0xFFFFFFFF, "(!) Use /desban <Tipo [1 = Conta] [2 = IP]> <Nome ~ IP>");     if(UNBAN_TYPE_ACCOUNT < jBanType > UNBAN_TYPE_IP)         return 1;     if(isnull(jBanValue))         return SendClientMessage(playerid, 0xFFFFFFFF, "(!) Especifique o Nome/IP");             checkForUnban(playerid, jBanType, jBanValue);     return 1; }

Source - DB (tem tag pra MySQL aqui?)
Code:
drop table if exists `jigBan`;
create table if not exists `jigBan` (
 `Name` varchar(24) NOT NULL,
 `Admin` varchar(24) NOT NULL,
 `Reason` varchar(64) NOT NULL,
 `DateAndHour` varchar(32) NOT NULL,
 `IP` varchar(16) NOT NULL
);
Download
FilterScript: http://pastebin.com/jj8ft2Gq
DB: http://pastebin.com/TPsin5n4

Espero que gostem