Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- [RBG] Rocky's Temp-Ban system (v0.1)
- This is completly made by Rocky,
- You are free to use, modify it for your own use.
- Put my name on credits list only if you like my work.
- */
- Credits: TerrorStyles for Editing PM Messages ( Means Nothing :P )
- //Events ->
- function onScriptLoad()
- {
- database <- ConnectSQL( "Data.sqlite" );
- QuerySQL( database, "CREATE TABLE IF NOT EXISTS Banned( ban_nick TEXT, ban_ip TEXT, ban_time TEXT, ban_expire TEXT, ban_expireratio TEXT, ban_admin TEXT, ban_reason TEXT )" );
- print("[RBAN] Rocky's Ban system Loaded (v0.1)");
- }
- function onPlayerCommand( player, cmd, text )
- {
- cmd = cmd.tolower();
- if( cmd == "untempban" )
- {
- if( status[ player.ID ].Registered == false ) MessagePlayer( "[#FFF000]>> You must be registered in to use this command", player );
- else if( status[ player.ID ].LoggedIn == false ) MessagePlayer( "[#FF0000]>> You must be logged in to use this command", player );
- else if ( status[ player.ID ].Level < 6 ) PrivMessage(player,"[#FF8000]You need to be admin of level 6 in order to use this command." );
- else if( !text ) PrivMessage(player, "[#FFFFFF][TempBan] / untempban <Fullname>");
- else if( !IsBanned( text ) ) PrivMessage(player, "[#FFFFFF}[TempBan]Player is not banned.");
- else
- {
- QuerySQL( database, "DELETE TABLE FROM Banned WHERE ban_nick='" + text + "' COLLATE NOCASE" );
- Message("[#FF8000]Unbanned: [ " + text + " ] by Admin: [ " + player.Name + " ]" );
- }
- }
- else if ( cmd == "commands" )
- {
- MessagePlayer( "[#FFFFFF]Available Commands /tempban /untempban", player );
- }
- else if ( cmd == "tempban" )
- {
- local txt_Split;
- if( status[ player.ID ].Registered == false ) MessagePlayer( "[#FFF000]>> You must be registered in to use this command", player );
- else if( status[ player.ID ].LoggedIn == false ) MessagePlayer( "[#FF0000]>> You must be logged in to use this command", player );
- else if ( status[ player.ID ].Level < 6 ) PrivMessage(player,"[#FF8000]You need to be admin of level 6 in order to use this command." );
- else if( !text ) PrivMessage(player, "[#FFFFFF]/ tempban <player> <day:hour:min> <reason>" );
- else
- {
- if( NumTok( text, " " ) == 2 )
- {
- txt_Split = split( text, " " );
- local plr = FindPlayer( txt_Split[ 0 ] ), expire = txt_Split[ 1 ];
- if( plr ) AddBan( player, plr, expire );
- else PrivMessage(player,"[Tempban] No such player." );
- }
- else if( NumTok( text, " " ) >= 3 )
- {
- txt_Split = split( text, " " );
- local plr = FindPlayer( txt_Split[ 0 ] ), expire = txt_Split[ 1 ], reason = txt_Split[ 2 ];
- if( plr ) AddBan( player, plr, expire, reason );
- else PrivMessage(player,"[Tempban] No such player." );
- }
- else PrivMessage(player, "[TempBan] / tempban <player> <day:hour:min> <reason>" );
- }
- }
- else PrivMessage( player, "[#FF8000]Unknown Command Type /commands to see available commands" );
- }
- function onPlayerJoin( player )
- {
- NewTimer( "Banned", 3000, 1, player ); //Check if player is banned.
- }
- //Functions ->
- //Everyone is familiar with this function. :P
- function NumTok(string, separator)
- {
- local tokenized = split(string, separator);
- return tokenized.len();
- }
- //This basically stores the ban info into database reason for ban is optional.
- function AddBan( admin, player, expire, reason = "Not Specified" )
- {
- //Equation = (DAYS*24*60*60) + (HOUR*60*60) + (MIN*60)
- local ban_Expire = split( expire, ":" ); //days:hours:minutes
- if( NumTok( expire, ":" ) == 3 )
- {
- if( IsNum( ban_Expire[ 0 ] ) && IsNum( ban_Expire[ 1 ] ) && IsNum( ban_Expire[ 2 ] ) )
- {
- if( ban_Expire[ 0 ].tointeger() <= 31 && ban_Expire[ 1 ].tointeger() <= 24 && ban_Expire[ 2 ].tointeger() <= 60 )
- {
- local ban_Expires = ( (ban_Expire[ 0 ].tointeger()*24*60*60) + (ban_Expire[ 1 ].tointeger()*60*60) + (ban_Expire[ 2 ].tointeger()*60) ),
- Calc = ban_Expire[ 0 ] + " Day(s), " + ban_Expire[ 1 ] + " Hour(s), " + ban_Expire[ 2 ] + " Minute(s).",
- query = QuerySQL( database, "INSERT INTO Banned( ban_nick, ban_ip, ban_time, ban_expire, ban_expireratio, ban_admin, ban_reason ) VALUES ( '"+ player.Name.tostring() +"','"+ player.IP.tostring() +"','"+ time().tostring() +"', '"+ ban_Expires.tostring() +"', '" + expire.tostring() + "', '"+ admin.Name.tostring() +"', '"+ reason.tostring() +"')");
- FreeSQLQuery( query );
- MessagePlayer("[#FF8000][TempBan]You have been temporarily banned by " + admin.Name, player);
- MessagePlayer("[#FF8000][TempBan]Your ban is set to expire in: " + Calc, player);
- player.Kick();
- }
- }
- else MessagePlayer("[#FF8000][TempBan]Time should be numeric (day:hour:min)", admin );
- }
- else MessagePlayer("[#FF8000][TempBan]Wrong format, day:hour:min (Numeric)", admin );
- }
- //Check if player is banned and Kick him/her.
- function Banned( player )
- {
- local query = QuerySQL( database, "SELECT * FROM Banned WHERE ban_nick='" + player.Name + "' COLLATE NOCASE" ), Ip = player.IP.tostring();
- if( GetSQLColumnData( query, 0 ) )
- {
- if( ( time() - GetSQLColumnData( query, 2 ).tointeger() ) >= GetSQLColumnData( query, 3 ).tointeger() )
- {
- local query2 = QuerySQL( database, "DELETE FROM Banned WHERE ban_nick='" + player.Name.tostring() + "'" );
- FreeSQLQuery( query2 );
- MessagePlayer("[#FF8000][TempBan]Your ban has been expired.", player );
- MessagePlayer("[#FF8000][TempBan]Stick to the rules or you will get permanently banned.", player );
- }
- else
- {
- local Time_Left = TimeRem( GetSQLColumnData( query, 2 ).tointeger(), GetSQLColumnData( query, 4 ) );
- //local splitban = split( GetSQLColumnData( query, 4 ), ":" ), Calc = splitban[ 0 ] + " Day(s), " + splitban[ 1 ] + " Hour(s), " + splitban[ 2 ] + " Minute(s).";
- MessagePlayer("[#FF8000][TempBan]Your ban has not expired.", player );
- MessagePlayer("[#FF8000][TempBan]Your ban is set to expire in. " + Time_Left, player );
- player.Kick();
- }
- }
- else if( GetSQLColumnData( QuerySQL( database, "SELECT * FROM Banned WHERE ban_ip='" + Ip + "'" ), 0 ) )
- {
- local query = QuerySQL( database, "SELECT * FROM Banned WHERE ban_ip='" + Ip + "'" );
- if( ( time() - GetSQLColumnData( query, 2 ).tointeger() ) >= GetSQLColumnData( query, 3 ).tointeger() )
- {
- local query2 = QuerySQL( database, "DELETE FROM Banned WHERE ban_ip='" + player.IP.tostring() + "'" );
- FreeSQLQuery( query2 );
- MessagePlayer("[#FF8000][TempBan]Your ban has been expired.", player );
- MessagePlayer("[#FF8000][TempBan]Stick to the rules or you will get permanently banned.", player );
- }
- else
- {
- local Time_Left = TimeRem( GetSQLColumnData( query, 2 ).tointeger(), GetSQLColumnData( query, 4 ).tostring() );
- //local splitban = split( GetSQLColumnData( query, 4 ), ":" ), Calc = splitban[ 0 ] + " Day(s), " + splitban[ 1 ] + " Hour(s), " + splitban[ 2 ] + " Minute(s).";
- MessagePlayer("[#FF8000][TempBan] Your ban has not expired.", player );
- MessagePlayer("[#FF8000][TempBan] Your ban is set to expire in. " + Time_Left , player );
- player.Kick();
- }
- }
- FreeSQLQuery( query );
- }
- //This returns the time left for ban in Day:hour:minute format.
- //GeTok function
- function GetTok(string, separator, n, ...)
- {
- local m = vargv.len() > 0 ? vargv[0] : n,
- tokenized = split(string, separator),
- text = "";
- if (n > tokenized.len() || n < 1) return null;
- for (; n <= m; n++)
- {
- text += text == "" ? tokenized[n-1] : separator + tokenized[n-1];
- }
- return text;
- }
- //Check is player is banned.
- function IsBanned( fullname )
- {
- local query = QuerySQL( database, "SELECT ban_ip FROM Banned WHERE ban_nick='" + fullname + "' COLLATE NOCASE" );
- if( GetSQLColumnData( query, 0 ) ) return true;
- return false;
- }
- //This returns the time left for ban in Day:hour:minute format.
- function TimeRem( bantime, banratio )
- {
- local ban_current = time()-bantime, sp = split(banratio,":"), ban_Days, ban_Hours, ban_Minutes,
- ban_Day = sp[ 0 ].tointeger(),
- ban_Hour = sp[ 1 ].tointeger(),
- ban_Minute = sp[ 2 ].tointeger();
- ban_Days = ban_current/86400;
- ban_current = ban_current%86400;
- ban_Hours = ban_current/3600;
- ban_current = ban_current%3600;
- ban_Minutes = ban_current/60;
- ban_current = ban_current%60;
- ban_Day -= ban_Days;
- ban_Hour -= ban_Hours;
- ban_Minute -= ban_Minutes;
- return ban_Day + " Day(s), " + ban_Hour + " Hour(s), " + ban_Minute + " Minutes.";
- }
- /*
- ~End of the code~
- */
Add Comment
Please, Sign In to add comment