Advertisement
Guest User

runCommand

a guest
Dec 11th, 2019
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.23 KB | None | 0 0
  1. RS = game:GetService("ReplicatedStorage")
  2.  
  3. runCommand = Instance.new("RemoteEvent")
  4. runCommand.Parent = RS
  5. runCommand.Name = "runCommand"
  6. r_sendOutput = Instance.new("RemoteEvent")
  7. r_sendOutput.Name = "sendOutput"
  8. r_sendOutput.Parent = RS
  9. text = ""
  10.  
  11. function getParent(arg_parent, v)
  12.    
  13.     local raw_parent = arg_parent .. "."
  14.     local parent
  15.     local prevParentEnd = 0
  16.     local val = v
  17.    
  18.     for i=0, string.len(raw_parent) do
  19.        
  20.         if string.sub(raw_parent, i, i) == "." then
  21.            
  22.             if val == 1 then
  23.                
  24.                 parent = game[string.sub(raw_parent, prevParentEnd, i-1)] -- -1 to remove whitespace
  25.                 prevParentEnd = i
  26.                 val = val + 1
  27.                
  28.             else
  29.                
  30.                 parent = parent[string.sub(raw_parent, prevParentEnd+1, i-1)] -- -1&+1 to remove whitespace
  31.                 prevParentEnd = i
  32.                
  33.             end
  34.            
  35.         end
  36.        
  37.     end
  38.    
  39.     return parent
  40.    
  41. end
  42.  
  43. COMMAND = {
  44.     ["new"] = function(Player, command, args)
  45.        
  46.         local new = Instance.new(args[1])
  47.         new.Name = args[2]
  48.         new.Parent = getParent(args[3], 1)
  49.        
  50.         local EXTRAS = {
  51.             ["Part"] = function ()
  52.                
  53.                 new.Position = Vector3.new(args[4], args[5], args[6])
  54.                 new.Size = Vector3.new(args[7], args[8], args[9])
  55.                 new.BrickColor = BrickColor.new(args[10], args[11], args[12])
  56.                
  57.                 if args[13] == "false" then
  58.                     new.Anchored = false
  59.                 else
  60.                     new.Anchored = true
  61.                 end
  62.                
  63.                 if args[14] == "false" then
  64.                     new.CanCollide = false
  65.                 else
  66.                     new.CanCollide = true
  67.                 end
  68.                
  69.                 new.Transparency = args[15]
  70.                
  71.                 text = "Created a new Part '"..args[2].."' at "..tostring(new.Parent).. "pos ["..args[4]..", "..args[5]..", "..args[6].."] size ["..args[7]..", "..args[8]..", "..args[9].."]"
  72.                 text = text .. "\n    Anchored: "..args[13]..", CanCollide: "..args[14]..", Transparency: "..args[15]
  73.                
  74.                 r_sendOutput:FireClient(Player, "TextLabel", "green", text, 2)
  75.                            
  76.             end
  77.         }
  78.        
  79.         if EXTRAS[args[1]] ~= nil then
  80.             EXTRAS[args[1]]()
  81.         else
  82.             text = "Created a new ["..args[1].."] '"..args[2].."' at "..tostring(new.Parent)
  83.             r_sendOutput:FireClient(Player, "TextLabel", "green", text, 1)
  84.         end
  85.        
  86.     end,
  87.     ["delete"] = function(Player, command, args)
  88.        
  89.         local target = getParent(args[1], 1)
  90.         target:Destroy()
  91.        
  92.         text = "Deleted " .. tostring(target)
  93.         r_sendOutput:FireClient(Player, "TextLabel", "green", text, 1)
  94.        
  95.     end,
  96.     ["move"] = function(Player, command, args)
  97.        
  98.         local target = getParent(args[1], 1)
  99.         local destination = getParent(args[2], 1)
  100.        
  101.         target.Parent = destination
  102.        
  103.         text = "Moved ["..tostring(target).."] to ["..tostring(destination).."]"
  104.         r_sendOutput:FireClient(Player, "TextLabel", "green", text, 1)
  105.        
  106.     end
  107. }
  108.  
  109. function f_runCommand(Player, command, args)
  110.    
  111.     print("Sender: " ..Player.Name)
  112.     print("Command: " ..command .. " ["..string.len(command).."]")
  113.     print("Args: ")
  114.     for _n, _a in pairs(args) do
  115.        
  116.         print("    ".._n.. " " .._a .. " ["..string.len(_a).."]")
  117.        
  118.     end
  119.    
  120.     if COMMAND[command] ~= nil then
  121.         COMMAND[command](Player, command, args)
  122.     else
  123.        
  124.         text = "Command ["..command.."] does not exist. Type !help to view all possible commands and their syntax."
  125.        
  126.         r_sendOutput:FireClient(Player, "TextLabel", "red", text, 1)
  127.     end
  128.    
  129. end
  130.  
  131. runCommand.OnServerEvent:connect(f_runCommand)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement