Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- config = plugin.getStorageObject( "config.yml" )
- lang = plugin.getStorageObject( "lang.yml" )
- server = plugin.getServer()
- sversion = "1.0.0_#001"
- version = "Project: Antimony, v"..sversion
- function f(entry, tags)
- local text = lang:getValue( entry )
- if not tags then return text end
- if type( tags ) == "string" or type( tags ) == "number" then
- return string.gsub( text, "$"..tostring(1), tostring(tags))
- elseif type( tags ) == "table" then
- for e = 1, #tags do
- text = string.gsub( text, "$"..tostring(e), tostring(tags[e]))
- end
- end
- return text
- end
- plugin.onLoad(
- function()
- -- Set language options
- lang:setDefaultValue( "onEnable", "§7Project: §2Antimony §7version §fv$1 §7has been enabled")
- lang:setDefaultValue( "onDisable", "§7Project: §2Antimony §7version §fv$1 §7has been disabled")
- lang:setDefaultValue( "msgPrefix", "§2[§7Sb§2]")
- lang:setDefaultValue( "msgPrefixHeavy", "§2[§fSb§2]" )
- lang:setDefaultValue( "cmdFail", "Unknown command argument §f$1§7. Try §f/sb help §7for help" )
- lang:setDefaultValue( "permFail", "You need the permission §f$1 §7to do that")
- lang:setDefaultValue( "usageFail", "§7You didn't use that properly. See §f$1 §7for help" )
- lang:setDefaultValue( "title", "§7---------- §2Antimony §7--- §2$1 §7----------" )
- lang:setDefaultValue( "titlePaged", "§7---------- §2Antimony §7--- §2Page §f$1 §2of §f$2 §7----------" )
- lang:setDefaultValue( "topicPerm", "§2Permission: §7$1" )
- lang:setDefaultValue( "topicUsage", "§2Usage: §7$1" )
- lang:setDefaultValue( "topicDesc", "§2Description: §7$1" )
- lang:setDefaultValue( "entryLast", "§7There are no more entries to display")
- lang:setDefaultValue( "entryMore", "§7Type §f/sb help $1 §7for more")
- lang:setDefaultValue( "emptyPage", "§7This page does not have any entries")
- lang:setDefaultValue( "kickAll", "You have kicked ALL online players from the server" )
- lang:setDefaultValue( "kickReason", "§7You have been §6kicked §7by §a$1\n \n§7Reason: §2$2" )
- lang:setDefaultValue( "banReason", "§7You have been §4banned §7by §a$1\n \n§7Reason: §2$2" )
- lang:setDefaultValue( "noKickAllReason", "You must provide a reason to kick all players" )
- lang:setDefaultValue( "noKickReason", "You must provide a reason to kick a player")
- lang:setDefaultValue( "noBanReason", "You must provide a reason to ban a player")
- lang:setDefaultValue( "kickSilent", "You have kicked $1 from the server silently")
- lang:setDefaultValue( "kickBroadcast", "§2$1 §ahas §6kicked §2$2§a for: §7$3" )
- lang:setDefaultValue( "banBroadcast", "§2$1 §ahas §4banned §2$2§a for: §7$3" )
- lang:setDefaultValue( "nobodyOnline", "§7There are no players online" )
- lang:setDefaultValue( "likeThis", "Usage: §f$1" )
- lang:setDefaultValue( "cannotSelfKick", "You cannot kick yourself" )
- lang:setDefaultValue( "cannotKickOffline", "That player is not online" )
- lang:setDefaultValue( "alreadyBanned", "§2$1 §aalready banned by §2$2 §aat §2$3§a, Expires $4.\n§7Reason: §f$5")
- -- Save language file
- lang:save()
- p = lang:getValue( "msgPrefix" ) .. " §7"
- ph = lang:getValue( "msgPrefixHeavy" ) .. " §a"
- pe = lang:getValue( "msgPrefixHeavy" ) .. " §7Error: §a"
- config:setDefaultValue( "allowSelfKick", true )
- config:setDefaultValue( "allowNoReasonKick", true )
- config:setDefaultValue( "defaultKickReason", "Kicked from server" )
- config:save()
- server:broadcastMessage( f("onEnable", sversion ))
- end
- )
- plugin.onEnable(
- function()
- end
- )
- plugin.onDisable(
- function()
- server:broadcastMessage( f("onDisable", sversion ))
- end
- )
- plugin.addCommand(
- {
- name = "sb",
- description = "Main command for Project: Antimony",
- },
- function( cmd )
- local sender, args = cmd.getSender(), cmd.getArgs()
- if args[1] == "help" or args[1] == "?" or not args[1] then
- if not sender == server:getConsoleSender() and not sender:isOp() and not sender:hasPermission( "sb.cmd.help" ) then
- sender:sendMessage( pe .. f("permFail", "sb.cmd.help"))
- return end
- local topics = {
- {
- name = "help",
- short = "Display a list of commands",
- long = "Display's a list of command arguments for Project: Antinomy. You can show more information on a topic by specifying the argument.",
- perm = "sb.cmd.help",
- usage = "/sb help [page=1|topic]",
- },
- {
- name = "kick",
- short = "Kick a player from the server",
- long = "Forces a player to exit the server, with the reason specified.",
- perm = "sb.cmd.kick",
- usage = "/sb kick [username] [reason...]",
- },
- {
- name = "kickall",
- short = "Kick all online players from the server",
- long = "Forces all online players to exit the server with the reason specified.",
- perm = "sb.cmd.kickall",
- usage = "/sb kickall [reason...]",
- },
- }
- if args[2] then
- for n = 1, #topics do
- if string.lower( topics[n].name ) == string.lower( args[2] ) then
- sender:sendMessage( f( "title", topics[n].name ))
- sender:sendMessage( f( "topicPerm", topics[n].perm ))
- sender:sendMessage( f( "topicUsage", topics[n].usage ))
- sender:sendMessage( f( "topicDesc", topics[n].long ))
- return end
- end
- end
- if not args[2] then
- args[2] = 1
- elseif not tonumber( args[2] ) then
- sender:sendMessage( pe .. f("usageFail", "/sb help help") )
- return else
- args[2] = tonumber( args[2] )
- end
- local page = tonumber( args[2] )
- local names = {}
- for e = 1, #topics do
- if not sender:hasPermission( topics[e].perm ) and not sender:isOp() and not sender == server:getConsoleSender() then
- names[ e ] = "§7/§8§msb " .. topics[e].name .. " §7You need §f" .. topics[e].perm .." to use this"
- else
- names[ e ] = "§7/§2sb " .. topics[e].name .. " §7" .. topics[e].short
- end
- end
- table.sort( names )
- local maxpage = math.ceil( #names / 10 )
- sender:sendMessage( f( "titlePaged", {tostring(page), tostring(maxpage)} ))
- for entry = ( page * 10 ) - 9, ( page * 10 ) do
- if entry <= #names then
- sender:sendMessage( names[entry] )
- if entry == #names then
- sender:sendMessage( f( "entryLast" ))
- return elseif entry == page * 10 then
- sender:sendMessage( f( "entryMore", tostring( page+1 ) ))
- end
- elseif entry > #names then
- sender:sendMessage( f("emptyPage", tostring( maxpage ) ))
- return end
- end
- elseif args[1] == "kickall" then
- if not sender == server:getConsoleSender() and not sender:isOp() and not sender:hasPermission( "sb.cmd.kickall" ) then
- sender:sendMessage( pe .. f("permFail", "sb.cmd.kickall"))
- return end
- if not args[2] then
- sender:sendMessage( pe .. f("noKickAllReason") )
- return end
- -- WATCH FOR ANY ERRORS HERE IF THEY POP UP SEND CODE TO LUKKIT DEVS
- print( "[DEBUG] type( server:getOnlinePlayers() ) = '"..type(server:getOnlinePlayers()).."'")
- local players = util.getTableFromList( server:getOnlinePlayers() )
- if not players or #players == 0 then
- sender:sendMessage( pe .. f("nobodyOnline"))
- return end
- for player = 1, #players do
- players[player]:kickPlayer( f("kickReason", { sender:getName(), table.concat( args, " ", 2 ) }) )
- end
- server:broadcast( p .. f("kickAll" ), "sb.notify.kickall" )
- if not sender:hasPermission( "sb.notify.kickall" ) or sender == server:getConsoleSender() then
- sender:sendMessage( p .. f("kickAll"))
- end
- elseif args[1] == "kick" then
- if not sender == server:getConsoleSender() and not sender:isOp() and not sender:hasPermission( "sb.cmd.kickall" ) then
- sender:sendMessage( pe .. f("permFail", "sb.cmd.kickall"))
- return end
- if not args[2] then
- sender:sendMessage( pe .. f("likeThis", "§f/sb kick §a[username] §f[reason...]" ))
- return end
- if not args[3] and config:getValue("allowNoReasonKick") == false then
- sender:sendMessage( pe .. f("noKickReason") )
- return end
- local target = server:getOfflinePlayer( args[2] )
- local reason
- if config:getValue("allowNoReasonKick") == true and not args[3] then
- reason = config:getValue("defaultKickReason")
- else
- reason = table.concat( args, " ", 3 )
- end
- if target:isOnline() == false then
- sender:sendMessage( pe .. f("cannotKickOffline"))
- return end
- if target == sender then
- if config:getValue("allowSelfKick") == false then
- sender:sendMessage( pe .. f("cannotSelfKick") )
- return end
- end
- target:kickPlayer( f( "kickReason", {sender:getName(), reason}) )
- server:broadcastMessage( ph .. f("kickBroadcast", {sender:getName(), target:getName(), reason}) )
- elseif args[1] == "ban" then
- if not sender == server:getConsoleSender() and not sender:isOp() and not sender:hasPermission( "sb.cmd.ban" ) then
- sender:sendMessage( pe .. f("permFail", "sb.cmd.ban"))
- return end
- if not args[2] then
- sender:sendMessage( pe .. f("likeThis", "§f/sb ban §a[username] §f[reason...]" ))
- return end
- if not args[3] and config:getValue("allowNoReasonBan") == false then
- sender:sendMessage( pe .. f("noBanReason") )
- return end
- local offline = server:getOfflinePlayer( args[2] )
- if offline:isOnline() then
- offline:kickPlayer( f("banReason", {sender:getName(), table.concat( args, " ", 3 )}))
- end
- local banlist = import("$.BanList")
- -- THIS LINE SEEMS TO BE AN ISSUE
- local entry = banlist.getBanEntry( args[2].tojstring() )
- if entry then
- sender:sendMessage( pe .. f("alreadyBanned", {args[2], banner, date, expires, reason}) )
- return end
- local newban = banlist.addBan( args[2], table.concat( args, " ", 3 ), nil, sender:getName())
- server:broadcastMessage( ph .. f("banBroadcast", { offline:getName(), sender:getName(), table.concat( args, " ", 3 ) } ))
- else
- sender:sendMessage( p .. f("cmdFail", tostring( args[1] )) )
- end
- end
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement