Files
PlaneBuilding/scripts/modules/CommandsModule.lua
T

54 lines
1.5 KiB
Lua

require(game.ReplicatedFirst.ReadyModule)("CommandsModule")
local help = ""
local commands = {}
function invoke(input,player)
local found = false
for index,command in ipairs(commands) do
local result = table.pack(input:match(command.pattern))
if result[1] then
if player then
table.insert(result,1,player)
end
found = true
command.callback(table.unpack(result))
end
end
return found
end
function new(pattern,documentation,callback)
help = help .. documentation .. "\n"
table.insert(commands,{
pattern = pattern,
documentation = documentation,
callback = callback
})
if _G.IsServer then _G.Storage:WaitForChild("CommandsHelp").Value = help end
end
_G.Events.Command.Event:Connect(function(command)
local cFound = invoke(command)
local sFound = _G.Remotes.Command:InvokeServer(command)
if not cFound and not sFound then _G.Events.Notification:Fire("Command Not Found",[[
If you're struggling to type in a command, note that they use pattern matching.
"<userid>" means you should literally type "12345678", no letters or dots.
Check your spelling or type 'help' for some commands.
]]) end
end)
if _G.IsServer then
_G.Remotes.Command.OnServerInvoke = function(player,command)
return invoke(command,player)
end
end
local notification
new("help","help: displays this message",function()
local final = "Client:\n"..help
if _G.IsClient then final = final.."\nServer:\n".._G.Storage.CommandsHelp.Value end
_G.Events.Notification:Fire("Command Help",final)
end)
return getfenv()