Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <a_mysql>
- #include <sscanf2>
- #include <zcmd>
- #define MYSQL_HOST "HOST" // e.g (localhost)
- #define MYSQL_USER ""
- #define MYSQL_PASSWORD ""
- #define MYSQL_DATABASE "" // Your database name
- static stock
- Connection,
- bool:Ready = false
- ;
- BanPlayer(playerid, bannerid, time[] = "PERMANENT", reason[] = "No Reasons Given")
- {
- new
- name[MAX_PLAYER_NAME],
- banner[MAX_PLAYER_NAME],
- query[256],
- ip[16]
- ;
- GetPlayerIp(playerid, ip, 16);
- GetPlayerName(playerid, name, MAX_PLAYER_NAME);
- GetPlayerName(bannerid, banner, MAX_PLAYER_NAME);
- mysql_format(Connection, query, 256, "INSERT INTO `bans`(`username`, `banner`, `reason`,`ip`) VALUES('%e', '%e', '%e', '%s')", name, banner, reason, ip);
- mysql_query(Connection, query, false);
- mysql_format(Connection, query, 256, "DROP EVENT IF EXISTS `%e`", name);
- mysql_query(Connection, query, false);
- if(strcmp(time, "PERMANENT", true))
- {
- mysql_format(Connection, query, 256, "CREATE EVENT `%e` ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL %s DO DELETE FROM `bans` WHERE `username` = '%e'", name, time, name);
- mysql_query(Connection, query, false);
- }
- if(!mysql_errno(Connection))
- {
- SendClientMessage(playerid, 0xFF000000, "You have been banned!");
- SetTimerEx("DelayKick", 500, false, "d", playerid);
- }
- else
- {
- SendClientMessage(bannerid, 0xFF000000, "Oops! Something wrong at ban query, please check the console");
- printf("Query : %s", query);
- }
- }
- UnbanPlayer(playerid, name[])
- {
- new query[256];
- mysql_format(Connection, query, 256, "DROP EVENT IF EXISTS `%e`", name);
- mysql_query(Connection, query, false);
- mysql_format(Connection, query, 256, "SELECT * FROM `bans` WHERE `username` = '%e'", name);
- mysql_query(Connection, query, true);
- if(cache_get_row_count(Connection))
- {
- mysql_format(Connection, query, 256, "DELETE FROM `bans` WHERE `username` = '%e'", name);
- mysql_query(Connection, query, false);
- format(query, 256, "%s has been unbanned from this server!", name);
- SendClientMessage(playerid, 0xFFFFFFFF, query);
- }
- else
- {
- SendClientMessage(playerid, 0xFFFFFFFF, "That player isn't banned!");
- }
- }
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print(" Simple Temporary Ban System by Lczy \n");
- print("--------------------------------------\n");
- print("\nInitializing...");
- SetTimer("ConnectSQL", 1000, false);
- return 1;
- }
- public OnFilterScriptExit()
- {
- mysql_close(Connection);
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- if(Ready)
- {
- new
- query[100],
- name[MAX_PLAYER_NAME],
- ip[16]
- ;
- GetPlayerName(playerid, name, MAX_PLAYER_NAME);
- GetPlayerIp(playerid, ip, 16);
- mysql_format(Connection, query, 128, "SELECT * FROM `bans` WHERE `username` = '%e' OR `ip` = '%s'", name, ip);
- mysql_tquery(Connection, query, "OnPlayerCheck", "d", playerid);
- }
- return 1;
- }
- forward OnPlayerCheck(playerid);
- public OnPlayerCheck(playerid)
- {
- if(!!cache_get_row_count(Connection))
- {
- new
- banner[MAX_PLAYER_NAME],
- reason[128],
- str[256],
- query[256],
- name[MAX_PLAYER_NAME],
- unban[16],
- from[16]
- ;
- cache_get_field_content(0, "reason", reason, Connection, 128);
- cache_get_field_content(0, "banner", banner, Connection, MAX_PLAYER_NAME);
- GetPlayerName(playerid, name, MAX_PLAYER_NAME);
- strcat(str, "You are banned from this server!\n\n{FF0000}Ban Information :\n{FFFFFF}");
- format(str, 256, "%sUsername : %s\n", str, name);
- format(str, 256, "%sBanned By : %s\n", str, banner);
- format(str, 256, "%sReason : %s\n", str, reason);
- if(!!cache_get_row_count(Connection))
- {
- mysql_format(Connection, query, 256, "SELECT EXECUTE_AT as `unban`, CREATED as `from` FROM INFORMATION_SCHEMA.EVENTS WHERE `EVENT_NAME` = '%e'", name);
- mysql_query(Connection, query);
- cache_get_field_content(0, "unban", unban, Connection, 16);
- cache_get_field_content(0, "from", from, Connection, 16);
- format(str, 256, "%sUnban Date : %s\n", str, unban);
- format(str, 256, "%sBanned From : %s\n", str, from);
- }
- else
- {
- strcat(str, "Unban Date : Never");
- }
- ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "Banned!", str, "Close", "");
- SetTimerEx("DelayKick", 500, false, "d", playerid);
- }
- }
- forward ConnectSQL();
- public ConnectSQL()
- {
- Connection = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_DATABASE, MYSQL_PASSWORD);
- if(!!mysql_errno(Connection))
- {
- printf("====================================================++");
- printf(" MySQL Error !!!");
- printf(" Lczy FS failed to connect to database!");
- printf(" Gamemode is now exiting...");
- printf("====================================================++");
- SendRconCommand("exit");
- }
- mysql_query(Connection, "CREATE TABLE IF NOT EXISTS `bans` (`id` INT(5) NOT NULL AUTO_INCREMENT PRIMARY KEY, `username` VARCHAR(32) NOT NULL, `banner` VARCHAR(32) NOT NULL, `reason` VARCHAR(128), `ip` VARCHAR(16))", false);
- Ready = true;
- }
- forward DelayKick(playerid);
- public DelayKick(playerid)
- {
- Kick(playerid);
- }
- COMMAND:ban(playerid, params[])
- {
- if(IsPlayerAdmin(playerid))
- {
- new
- id,
- day,
- time[26],
- reason[128]
- ;
- if(sscanf(params, "dds[26]S(No Reasons Given)[128]", id, day, time, reason))
- {
- SendClientMessage(playerid, 0xFF000000, "Usage : /ban <id> <time> [Day/Hour/Minute/Week/Second/Year/Month] <Reason>");
- SendClientMessage(playerid, 0xFF000000, "Example : /ban 0 1 Hour Test");
- }
- else
- {
- if(!strcmp(time, "Day", false) || !strcmp(time, "Hour", false) || !strcmp(time, "Minute", false) || !strcmp(time, "Week", false) || !strcmp(time, "Second", false) || !strcmp(time, "Year", false) || !strcmp(time, "Month", false))
- {
- if(IsPlayerConnected(id))
- {
- if(!IsPlayerAdmin(id))
- {
- if(day > 0 && day < 1000)
- {
- format(time, sizeof(time), "%d %s", day, time);
- BanPlayer(id, playerid, time, reason);
- }
- else
- SendClientMessage(playerid, 0xFF000000, "Time must be between 1 - 999!");
- }
- else
- SendClientMessage(playerid, 0xFF000000, "You can't ban an RCON Admin!");
- }
- else
- SendClientMessage(playerid, 0xFF000000, "That player is not connected!");
- }
- else
- cmd_ban(playerid, "");
- }
- }
- else
- SendClientMessage(playerid, 0xFF000000, "Insuffiecient Authority!");
- return 1;
- }
- COMMAND:permban(playerid, params[])
- {
- if(IsPlayerAdmin(playerid))
- {
- new
- id,
- reason[128]
- ;
- if(sscanf(params, "dS(No Reasons Given)[128]", id, reason))
- {
- SendClientMessage(playerid, 0xFF000000, "Usage : /permban <id> <Reason>");
- SendClientMessage(playerid, 0xFF000000, "Example : /permban 0 Test");
- }
- else
- {
- if(IsPlayerConnected(id))
- {
- if(!IsPlayerAdmin(id))
- {
- BanPlayer(id, playerid, "PERMANENT", reason);
- }
- else
- SendClientMessage(playerid, 0xFF000000, "You can't ban an RCON Admin!");
- }
- else
- SendClientMessage(playerid, 0xFF000000, "That player is not connected!");
- }
- }
- else
- SendClientMessage(playerid, 0xFF000000, "Insuffiecient Authority!");
- return 1;
- }
- COMMAND:unban(playerid, params[])
- {
- if(IsPlayerAdmin(playerid))
- {
- new
- name[32]
- ;
- if(sscanf(params, "s[32]", name))
- {
- SendClientMessage(playerid, 0xFF000000, "Usage : /unban <name>");
- }
- else
- {
- UnbanPlayer(playerid, name);
- }
- }
- else
- SendClientMessage(playerid, 0xFF000000, "Insuffiecient Authority!");
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment