Advertisement
Guest User

Project: Antimony for Lukkit

a guest
Aug 5th, 2018
26
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 9.98 KB | None | 0 0
  1.  
  2. config = plugin.getStorageObject( "config.yml" )
  3. lang = plugin.getStorageObject( "lang.yml" )
  4.  
  5. server = plugin.getServer()
  6.  
  7. sversion = "1.0.0_#001"
  8. version = "Project: Antimony, v"..sversion
  9.  
  10. function f(entry, tags)
  11.     local text = lang:getValue( entry )
  12.     if not tags then return text end
  13.     if type( tags ) == "string" or type( tags ) == "number" then
  14.         return string.gsub( text, "$"..tostring(1), tostring(tags))
  15.   elseif type( tags ) == "table" then
  16.         for e = 1, #tags do
  17.             text = string.gsub( text, "$"..tostring(e), tostring(tags[e]))
  18.         end
  19.     end
  20.     return text
  21. end
  22.  
  23. plugin.onLoad(
  24.     function()
  25.         -- Set language options
  26.         lang:setDefaultValue( "onEnable", "§7Project: §2Antimony §7version §fv$1 §7has been enabled")
  27.         lang:setDefaultValue( "onDisable", "§7Project: §2Antimony §7version §fv$1 §7has been disabled")
  28.         lang:setDefaultValue( "msgPrefix", "§2[§7Sb§2]")
  29.         lang:setDefaultValue( "msgPrefixHeavy", "§2[§fSb§2]" )
  30.         lang:setDefaultValue( "cmdFail", "Unknown command argument §f$1§7. Try §f/sb help §7for help" )
  31.         lang:setDefaultValue( "permFail", "You need the permission §f$1 §7to do that")
  32.         lang:setDefaultValue( "usageFail", "§7You didn't use that properly. See §f$1 §7for help" )
  33.         lang:setDefaultValue( "title", "§7---------- §2Antimony §7--- §2$1 §7----------" )
  34.         lang:setDefaultValue( "titlePaged", "§7---------- §2Antimony §7--- §2Page §f$1 §2of §f$2 §7----------" )
  35.         lang:setDefaultValue( "topicPerm", "§2Permission: §7$1" )
  36.         lang:setDefaultValue( "topicUsage", "§2Usage: §7$1" )
  37.         lang:setDefaultValue( "topicDesc", "§2Description: §7$1" )
  38.         lang:setDefaultValue( "entryLast", "§7There are no more entries to display")
  39.         lang:setDefaultValue( "entryMore", "§7Type §f/sb help $1 §7for more")
  40.         lang:setDefaultValue( "emptyPage", "§7This page does not have any entries")
  41.         lang:setDefaultValue( "kickAll", "You have kicked ALL online players from the server" )
  42.         lang:setDefaultValue( "kickReason", "§7You have been §6kicked §7by §a$1\n \n§7Reason: §2$2" )
  43.         lang:setDefaultValue( "banReason", "§7You have been §4banned §7by §a$1\n \n§7Reason: §2$2" )
  44.         lang:setDefaultValue( "noKickAllReason", "You must provide a reason to kick all players" )
  45.         lang:setDefaultValue( "noKickReason", "You must provide a reason to kick a player")
  46.         lang:setDefaultValue( "noBanReason", "You must provide a reason to ban a player")
  47.         lang:setDefaultValue( "kickSilent", "You have kicked $1 from the server silently")
  48.         lang:setDefaultValue( "kickBroadcast", "§2$1 §ahas §6kicked §2$2§a for: §7$3" )
  49.         lang:setDefaultValue( "banBroadcast", "§2$1 §ahas §4banned §2$2§a for: §7$3" )
  50.         lang:setDefaultValue( "nobodyOnline", "§7There are no players online" )
  51.         lang:setDefaultValue( "likeThis", "Usage: §f$1" )
  52.         lang:setDefaultValue( "cannotSelfKick", "You cannot kick yourself" )
  53.         lang:setDefaultValue( "cannotKickOffline", "That player is not online" )
  54.         lang:setDefaultValue( "alreadyBanned", "§2$1 §aalready banned by §2$2 §aat §2$3§a, Expires $4.\n§7Reason: §f$5")
  55.         -- Save language file
  56.         lang:save()
  57.        
  58.         p = lang:getValue( "msgPrefix" ) .. " §7"
  59.         ph = lang:getValue( "msgPrefixHeavy" ) .. " §a"
  60.         pe = lang:getValue( "msgPrefixHeavy" ) .. " §7Error: §a"
  61.        
  62.         config:setDefaultValue( "allowSelfKick", true )
  63.         config:setDefaultValue( "allowNoReasonKick", true )
  64.         config:setDefaultValue( "defaultKickReason", "Kicked from server" )
  65.         config:save()
  66.        
  67.         server:broadcastMessage( f("onEnable", sversion ))
  68.     end
  69. )
  70.  
  71. plugin.onEnable(
  72.     function()
  73.     end
  74. )
  75.  
  76. plugin.onDisable(
  77.     function()
  78.         server:broadcastMessage( f("onDisable", sversion ))
  79.     end
  80. )
  81.  
  82. plugin.addCommand(
  83.     {
  84.         name = "sb",
  85.         description = "Main command for Project: Antimony",
  86.     },
  87.     function( cmd )
  88.        
  89.         local sender, args = cmd.getSender(), cmd.getArgs()
  90.        
  91.         if args[1] == "help" or args[1] == "?" or not args[1] then
  92.        
  93.             if not sender == server:getConsoleSender() and not sender:isOp() and not sender:hasPermission( "sb.cmd.help" ) then
  94.                 sender:sendMessage( pe .. f("permFail", "sb.cmd.help"))
  95.             return end
  96.            
  97.             local topics = {
  98.                 {
  99.                     name = "help",
  100.                     short = "Display a list of commands",
  101.                     long = "Display's a list of command arguments for Project: Antinomy. You can show more information on a topic by specifying the argument.",
  102.                     perm = "sb.cmd.help",
  103.                     usage = "/sb help [page=1|topic]",
  104.                 },
  105.                 {
  106.                     name = "kick",
  107.                     short = "Kick a player from the server",
  108.                     long = "Forces a player to exit the server, with the reason specified.",
  109.                     perm = "sb.cmd.kick",
  110.                     usage = "/sb kick [username] [reason...]",
  111.                 },
  112.                 {
  113.                     name = "kickall",
  114.                     short = "Kick all online players from the server",
  115.                     long = "Forces all online players to exit the server with the reason specified.",
  116.                     perm = "sb.cmd.kickall",
  117.                     usage = "/sb kickall [reason...]",
  118.                 },
  119.             }
  120.            
  121.             if args[2] then
  122.                 for n = 1, #topics do
  123.                     if string.lower( topics[n].name ) == string.lower( args[2] ) then
  124.                         sender:sendMessage( f( "title", topics[n].name ))
  125.                         sender:sendMessage( f( "topicPerm", topics[n].perm ))
  126.                         sender:sendMessage( f( "topicUsage", topics[n].usage ))
  127.                         sender:sendMessage( f( "topicDesc", topics[n].long ))
  128.                     return end
  129.                 end
  130.             end
  131.            
  132.             if not args[2] then
  133.                 args[2] = 1
  134.             elseif not tonumber( args[2] ) then
  135.                 sender:sendMessage( pe .. f("usageFail", "/sb help help") )
  136.             return else
  137.                 args[2] = tonumber( args[2] )
  138.             end
  139.            
  140.             local page = tonumber( args[2] )
  141.             local names = {}
  142.             for e = 1, #topics do
  143.                 if not sender:hasPermission( topics[e].perm ) and not sender:isOp() and not sender == server:getConsoleSender() then
  144.                     names[ e ] = "§7/§8§msb " .. topics[e].name .. " §7You need §f" .. topics[e].perm .." to use this"
  145.                 else
  146.                     names[ e ] = "§7/§2sb " .. topics[e].name .. " §7" .. topics[e].short
  147.                 end
  148.             end
  149.            
  150.             table.sort( names )
  151.            
  152.             local maxpage = math.ceil( #names / 10 )
  153.             sender:sendMessage( f( "titlePaged", {tostring(page), tostring(maxpage)} ))
  154.            
  155.             for entry = ( page * 10 ) - 9, ( page * 10 ) do
  156.                 if entry <= #names then
  157.                     sender:sendMessage( names[entry] )
  158.                     if entry == #names then
  159.                         sender:sendMessage( f( "entryLast" ))
  160.                     return elseif entry == page * 10 then
  161.                         sender:sendMessage( f( "entryMore", tostring( page+1 ) ))
  162.                     end
  163.                 elseif entry > #names then
  164.                     sender:sendMessage( f("emptyPage", tostring( maxpage ) ))
  165.                 return end
  166.             end
  167.         elseif args[1] == "kickall" then
  168.        
  169.             if not sender == server:getConsoleSender() and not sender:isOp() and not sender:hasPermission( "sb.cmd.kickall" ) then
  170.                 sender:sendMessage( pe .. f("permFail", "sb.cmd.kickall"))
  171.             return end
  172.             if not args[2] then
  173.                 sender:sendMessage( pe .. f("noKickAllReason") )
  174.             return end
  175.            
  176.             -- WATCH FOR ANY ERRORS HERE IF THEY POP UP SEND CODE TO LUKKIT DEVS
  177.             print( "[DEBUG] type( server:getOnlinePlayers() ) = '"..type(server:getOnlinePlayers()).."'")
  178.             local players = util.getTableFromList( server:getOnlinePlayers() )
  179.            
  180.             if not players or #players == 0 then
  181.                 sender:sendMessage( pe .. f("nobodyOnline"))
  182.             return end
  183.            
  184.             for player = 1, #players do
  185.                 players[player]:kickPlayer( f("kickReason", { sender:getName(), table.concat( args, " ", 2 ) }) )
  186.             end
  187.            
  188.             server:broadcast( p .. f("kickAll" ), "sb.notify.kickall" )
  189.             if not sender:hasPermission( "sb.notify.kickall" ) or sender == server:getConsoleSender() then
  190.                 sender:sendMessage( p .. f("kickAll"))
  191.             end
  192.            
  193.         elseif args[1] == "kick" then
  194.        
  195.             if not sender == server:getConsoleSender() and not sender:isOp() and not sender:hasPermission( "sb.cmd.kickall" ) then
  196.                 sender:sendMessage( pe .. f("permFail", "sb.cmd.kickall"))
  197.             return end
  198.             if not args[2] then
  199.                 sender:sendMessage( pe .. f("likeThis", "§f/sb kick §a[username] §f[reason...]" ))
  200.             return end
  201.             if not args[3] and config:getValue("allowNoReasonKick") == false then
  202.                 sender:sendMessage( pe .. f("noKickReason") )
  203.             return end
  204.            
  205.             local target = server:getOfflinePlayer( args[2] )
  206.             local reason
  207.             if config:getValue("allowNoReasonKick") == true and not args[3] then
  208.                 reason = config:getValue("defaultKickReason")
  209.             else
  210.                 reason = table.concat( args, " ", 3 )
  211.             end
  212.            
  213.             if target:isOnline() == false then
  214.                 sender:sendMessage( pe .. f("cannotKickOffline"))
  215.             return end
  216.            
  217.             if target == sender then
  218.                 if config:getValue("allowSelfKick") == false then
  219.                     sender:sendMessage( pe .. f("cannotSelfKick") )
  220.                 return end
  221.             end
  222.            
  223.             target:kickPlayer( f( "kickReason", {sender:getName(), reason}) )
  224.             server:broadcastMessage( ph .. f("kickBroadcast", {sender:getName(), target:getName(), reason}) )
  225.            
  226.         elseif args[1] == "ban" then
  227.            
  228.             if not sender == server:getConsoleSender() and not sender:isOp() and not sender:hasPermission( "sb.cmd.ban" ) then
  229.                 sender:sendMessage( pe .. f("permFail", "sb.cmd.ban"))
  230.             return end
  231.             if not args[2] then
  232.                 sender:sendMessage( pe .. f("likeThis", "§f/sb ban §a[username] §f[reason...]" ))
  233.             return end
  234.             if not args[3] and config:getValue("allowNoReasonBan") == false then
  235.                 sender:sendMessage( pe .. f("noBanReason") )
  236.             return end
  237.            
  238.             local offline = server:getOfflinePlayer( args[2] )
  239.             if offline:isOnline() then
  240.                 offline:kickPlayer( f("banReason", {sender:getName(), table.concat( args, " ", 3 )}))
  241.             end
  242.            
  243.             local banlist = import("$.BanList")
  244.            
  245.             -- THIS LINE SEEMS TO BE AN ISSUE
  246.             local entry = banlist.getBanEntry( args[2].tojstring() )
  247.            
  248.             if entry then
  249.                 sender:sendMessage( pe .. f("alreadyBanned", {args[2], banner, date, expires, reason}) )
  250.             return end
  251.            
  252.             local newban = banlist.addBan( args[2], table.concat( args, " ", 3 ), nil, sender:getName())
  253.             server:broadcastMessage( ph .. f("banBroadcast", { offline:getName(), sender:getName(), table.concat( args, " ", 3 ) } ))
  254.            
  255.         else
  256.        
  257.             sender:sendMessage( p .. f("cmdFail", tostring( args[1] )) )
  258.        
  259.         end
  260.     end
  261. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement