Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --== Services ==--
- local SStorage = game:GetService("ServerStorage")
- local RStorage = game:GetService("ReplicatedStorage")
- local RunService = game:GetService("RunService")
- local Players = game:GetService("Players")
- --== Variables & Functions ==--
- local Modules = SStorage.Modules
- local Config = require(script.Parent)
- local CharacterAdded = require(Modules.CharacterAdded)
- local Remotes = RStorage.Relief
- local CommandEvent = Remotes.CommandEvent
- local GetCommands = Remotes.GetCommands
- local Notify = Remotes.Notify
- local Commands = {}
- local function addCommand(Aliases, RequiredArgs, Callback)
- Commands[#Commands + 1] = {
- ["Aliases"] = Aliases,
- ["Callback"] = Callback,
- ["RequiredArgs"] = RequiredArgs
- }
- end
- local function getCommand(Alias)
- for _, cmd in next, Commands do
- local Aliases = cmd.Aliases
- for _, tAlias in next, Aliases do
- if tAlias:lower() == Alias:lower() then
- return cmd
- end
- end
- end
- end
- local function getOthers(Player)
- local Others = {}
- for _, plr in next, Players:GetPlayers() do
- if plr == Player then continue end
- Others[#Others + 1] = plr
- end
- return Others
- end
- local function getPlayer(Player, String)
- if not Player or not String then return end
- String = String:lower()
- if table.find(Config.chatIndicators.Self, String) then
- return {Player}
- elseif table.find(Config.chatIndicators.All, String) then
- return Players:GetPlayers()
- elseif table.find(Config.chatIndicators.Others, String) then
- return getOthers(Player)
- end
- local Targets = {}
- for _, target in next, Players:GetPlayers() do
- if string.find(target.Name:lower(), String) or string.find(target.DisplayName:lower(), String) then
- Targets[#Targets + 1] = target
- end
- end
- return Targets
- end
- --== Main ==--
- addCommand({"speed", "ws", "walkspeed"}, 2, function(Player, Args)
- local Targets = getPlayer(Player, Args[1]) or {Player}
- local Speed = Args[2] or 16
- for _, Target in next, Targets do
- local Character = Target.Character
- if not Character then return string.format("Error 1 : No Character : %s", Target.DisplayName) end
- local Humanoid = Character:FindFirstChildOfClass("Humanoid")
- if not Humanoid then return string.format("Error 2 : No Humanoid : %s", Target.DisplayName) end
- Humanoid.WalkSpeed = Speed
- end
- if #Targets > 1 then
- return string.format("Targets speed changed to %d.", Speed)
- elseif #Targets == 1 then
- return string.format("%s's speed changed to %d.", Targets[1].DisplayName, Speed)
- end
- end)
- addCommand({"kill", "beatup"}, 1, function(Player, Args)
- local Targets = getPlayer(Player, Args[1]) or {Player}
- for _, Target in next, Targets do
- local Character = Target.Character
- if not Character then return string.format("Error 1 : No Character : %s", Target.DisplayName) end
- Character:BreakJoints()
- end
- if #Targets > 1 then
- return string.format("Targets killed.")
- elseif #Targets == 1 then
- return string.format("%s killed.", Targets[1].DisplayName)
- end
- end)
- addCommand({"setmoney", "sm"}, 2, function(Player, Args)
- local Targets = getPlayer(Player, Args[1]) or {Player}
- for _, Target in next, Targets do
- local Leaderstats = Target:FindFirstChild("leaderstats")
- if Leaderstats then
- Leaderstats.Money.Value = Args[2]
- end
- end
- if #Targets > 1 then
- return string.format("Targets set money to %s.", Args[2])
- elseif #Targets == 1 then
- return string.format("%s set money to %s.", Targets[1].DisplayName, Args[2])
- end
- end)
- addCommand({"setlevel", "sl"}, 2, function(Player, Args)
- local Targets = getPlayer(Player, Args[1]) or {Player}
- for _, Target in next, Targets do
- local Leaderstats = Target:FindFirstChild("leaderstats")
- if Leaderstats then
- Leaderstats.Level.Value = Args[2]
- end
- end
- if #Targets > 1 then
- return string.format("Targets set level to %s.", Args[2])
- elseif #Targets == 1 then
- return string.format("%s set level to %s.", Targets[1].DisplayName, Args[2])
- end
- end)
- addCommand({"refresh", "re"}, 1, function(Player, Args)
- local Targets = getPlayer(Player, Args[1]) or {Player}
- for _, Target in next, Targets do
- local oldCFrame = Target.Character.PrimaryPart.CFrame
- CharacterAdded.init(Target)
- CharacterAdded.add(function(Character)
- Character.PrimaryPart.CFrame = oldCFrame
- end)
- Target:LoadCharacter()
- end
- end)
- addCommand({"respawn"}, 1, function(Player, Args)
- local Targets = getPlayer(Player, Args[1]) or {Player}
- for _, Target in next, Targets do
- Target:LoadCharacter()
- end
- if #Targets > 1 then
- return string.format("Targets respawned.")
- elseif #Targets == 1 then
- return string.format("%s respawned.", Targets[1].DisplayName)
- end
- end)
- addCommand({"freeze", "anchor"}, 1, function(Player, Args)
- local Targets = getPlayer(Player, Args[1]) or {Player}
- for _, Target in next, Targets do
- local Character = Target.Character
- if not Character or not Character.PrimaryPart then return end
- Character.PrimaryPart.Anchored = true
- end
- if #Targets > 1 then
- return string.format("Targets frozen.")
- elseif #Targets == 1 then
- return string.format("%s frozen.", Targets[1].DisplayName)
- end
- end)
- addCommand({"unfreeze", "thaw", "unanchor"}, 1, function(Player, Args)
- local Targets = getPlayer(Player, Args[1]) or {Player}
- for _, Target in next, Targets do
- local Character = Target.Character
- if not Character or not Character.PrimaryPart then return end
- Character.PrimaryPart.Anchored = false
- end
- if #Targets > 1 then
- return string.format("Targets thawed.")
- elseif #Targets == 1 then
- return string.format("%s thawed.", Targets[1].DisplayName)
- end
- end)
- addCommand({"commands", "cmds", "help"}, 0, function(Player, Args)
- local comp = ""
- for _, cmd in next, Commands do
- comp = comp .. table.concat(cmd["Aliases"], "/") .. "|"
- end
- return comp
- end)
- CommandEvent.OnServerEvent:Connect(function(Player, Message)
- if not Message then return end
- local isWhitelisted = false
- for _, id in Config.whitelist do
- if id == Player.UserId then
- isWhitelisted = true
- break
- end
- end
- if not isWhitelisted then return Notify:FireClient(Player, "You do not have permission for this command.") end
- local Args = Message:split(" ")
- local Command = getCommand(Args[1])
- if Command then
- table.remove(Args, 1)
- local RequiredArgs = Command.RequiredArgs
- if #Args < RequiredArgs then Notify:FireClient(Player, "Missing arguments.") return end
- local Return = Command.Callback(Player, Args)
- if Return then
- Notify:FireClient(Player, Return)
- end
- end
- end)
- GetCommands.OnServerEvent:Connect(function(Player)
- GetCommands:FireClient(Player, Commands)
- end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement