Advertisement
PeaPattern

Untitled

Apr 18th, 2024
19
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.66 KB | None | 0 0
  1. --== Services ==--
  2.  
  3. local SStorage = game:GetService("ServerStorage")
  4. local RStorage = game:GetService("ReplicatedStorage")
  5. local RunService = game:GetService("RunService")
  6. local Players = game:GetService("Players")
  7.  
  8. --== Variables & Functions ==--
  9.  
  10. local Modules = SStorage.Modules
  11. local Config = require(script.Parent)
  12. local CharacterAdded = require(Modules.CharacterAdded)
  13.  
  14. local Remotes = RStorage.Relief
  15. local CommandEvent = Remotes.CommandEvent
  16. local GetCommands = Remotes.GetCommands
  17. local Notify = Remotes.Notify
  18.  
  19. local Commands = {}
  20. local function addCommand(Aliases, RequiredArgs, Callback)
  21. Commands[#Commands + 1] = {
  22. ["Aliases"] = Aliases,
  23. ["Callback"] = Callback,
  24. ["RequiredArgs"] = RequiredArgs
  25. }
  26. end
  27.  
  28. local function getCommand(Alias)
  29. for _, cmd in next, Commands do
  30. local Aliases = cmd.Aliases
  31. for _, tAlias in next, Aliases do
  32. if tAlias:lower() == Alias:lower() then
  33. return cmd
  34. end
  35. end
  36. end
  37. end
  38.  
  39. local function getOthers(Player)
  40. local Others = {}
  41. for _, plr in next, Players:GetPlayers() do
  42. if plr == Player then continue end
  43. Others[#Others + 1] = plr
  44. end
  45. return Others
  46. end
  47.  
  48. local function getPlayer(Player, String)
  49. if not Player or not String then return end
  50. String = String:lower()
  51.  
  52. if table.find(Config.chatIndicators.Self, String) then
  53. return {Player}
  54. elseif table.find(Config.chatIndicators.All, String) then
  55. return Players:GetPlayers()
  56. elseif table.find(Config.chatIndicators.Others, String) then
  57. return getOthers(Player)
  58. end
  59.  
  60. local Targets = {}
  61. for _, target in next, Players:GetPlayers() do
  62. if string.find(target.Name:lower(), String) or string.find(target.DisplayName:lower(), String) then
  63. Targets[#Targets + 1] = target
  64. end
  65. end
  66.  
  67. return Targets
  68. end
  69.  
  70. --== Main ==--
  71.  
  72. addCommand({"speed", "ws", "walkspeed"}, 2, function(Player, Args)
  73. local Targets = getPlayer(Player, Args[1]) or {Player}
  74. local Speed = Args[2] or 16
  75.  
  76. for _, Target in next, Targets do
  77. local Character = Target.Character
  78. if not Character then return string.format("Error 1 : No Character : %s", Target.DisplayName) end
  79.  
  80. local Humanoid = Character:FindFirstChildOfClass("Humanoid")
  81. if not Humanoid then return string.format("Error 2 : No Humanoid : %s", Target.DisplayName) end
  82.  
  83. Humanoid.WalkSpeed = Speed
  84. end
  85.  
  86. if #Targets > 1 then
  87. return string.format("Targets speed changed to %d.", Speed)
  88. elseif #Targets == 1 then
  89. return string.format("%s's speed changed to %d.", Targets[1].DisplayName, Speed)
  90. end
  91. end)
  92.  
  93. addCommand({"kill", "beatup"}, 1, function(Player, Args)
  94. local Targets = getPlayer(Player, Args[1]) or {Player}
  95.  
  96. for _, Target in next, Targets do
  97. local Character = Target.Character
  98. if not Character then return string.format("Error 1 : No Character : %s", Target.DisplayName) end
  99.  
  100. Character:BreakJoints()
  101. end
  102.  
  103. if #Targets > 1 then
  104. return string.format("Targets killed.")
  105. elseif #Targets == 1 then
  106. return string.format("%s killed.", Targets[1].DisplayName)
  107. end
  108. end)
  109.  
  110. addCommand({"setmoney", "sm"}, 2, function(Player, Args)
  111. local Targets = getPlayer(Player, Args[1]) or {Player}
  112.  
  113. for _, Target in next, Targets do
  114. local Leaderstats = Target:FindFirstChild("leaderstats")
  115. if Leaderstats then
  116. Leaderstats.Money.Value = Args[2]
  117. end
  118. end
  119.  
  120. if #Targets > 1 then
  121. return string.format("Targets set money to %s.", Args[2])
  122. elseif #Targets == 1 then
  123. return string.format("%s set money to %s.", Targets[1].DisplayName, Args[2])
  124. end
  125. end)
  126.  
  127. addCommand({"setlevel", "sl"}, 2, function(Player, Args)
  128. local Targets = getPlayer(Player, Args[1]) or {Player}
  129.  
  130. for _, Target in next, Targets do
  131. local Leaderstats = Target:FindFirstChild("leaderstats")
  132. if Leaderstats then
  133. Leaderstats.Level.Value = Args[2]
  134. end
  135. end
  136.  
  137. if #Targets > 1 then
  138. return string.format("Targets set level to %s.", Args[2])
  139. elseif #Targets == 1 then
  140. return string.format("%s set level to %s.", Targets[1].DisplayName, Args[2])
  141. end
  142. end)
  143.  
  144. addCommand({"refresh", "re"}, 1, function(Player, Args)
  145. local Targets = getPlayer(Player, Args[1]) or {Player}
  146.  
  147. for _, Target in next, Targets do
  148. local oldCFrame = Target.Character.PrimaryPart.CFrame
  149. CharacterAdded.init(Target)
  150. CharacterAdded.add(function(Character)
  151. Character.PrimaryPart.CFrame = oldCFrame
  152. end)
  153. Target:LoadCharacter()
  154. end
  155. end)
  156.  
  157. addCommand({"respawn"}, 1, function(Player, Args)
  158. local Targets = getPlayer(Player, Args[1]) or {Player}
  159.  
  160. for _, Target in next, Targets do
  161. Target:LoadCharacter()
  162. end
  163.  
  164. if #Targets > 1 then
  165. return string.format("Targets respawned.")
  166. elseif #Targets == 1 then
  167. return string.format("%s respawned.", Targets[1].DisplayName)
  168. end
  169. end)
  170.  
  171. addCommand({"freeze", "anchor"}, 1, function(Player, Args)
  172. local Targets = getPlayer(Player, Args[1]) or {Player}
  173.  
  174. for _, Target in next, Targets do
  175. local Character = Target.Character
  176. if not Character or not Character.PrimaryPart then return end
  177.  
  178. Character.PrimaryPart.Anchored = true
  179. end
  180.  
  181. if #Targets > 1 then
  182. return string.format("Targets frozen.")
  183. elseif #Targets == 1 then
  184. return string.format("%s frozen.", Targets[1].DisplayName)
  185. end
  186. end)
  187.  
  188. addCommand({"unfreeze", "thaw", "unanchor"}, 1, function(Player, Args)
  189. local Targets = getPlayer(Player, Args[1]) or {Player}
  190.  
  191. for _, Target in next, Targets do
  192. local Character = Target.Character
  193. if not Character or not Character.PrimaryPart then return end
  194.  
  195. Character.PrimaryPart.Anchored = false
  196. end
  197.  
  198. if #Targets > 1 then
  199. return string.format("Targets thawed.")
  200. elseif #Targets == 1 then
  201. return string.format("%s thawed.", Targets[1].DisplayName)
  202. end
  203. end)
  204.  
  205. addCommand({"commands", "cmds", "help"}, 0, function(Player, Args)
  206. local comp = ""
  207. for _, cmd in next, Commands do
  208. comp = comp .. table.concat(cmd["Aliases"], "/") .. "|"
  209. end
  210. return comp
  211. end)
  212.  
  213. CommandEvent.OnServerEvent:Connect(function(Player, Message)
  214. if not Message then return end
  215.  
  216. local isWhitelisted = false
  217. for _, id in Config.whitelist do
  218. if id == Player.UserId then
  219. isWhitelisted = true
  220. break
  221. end
  222. end
  223. if not isWhitelisted then return Notify:FireClient(Player, "You do not have permission for this command.") end
  224.  
  225. local Args = Message:split(" ")
  226. local Command = getCommand(Args[1])
  227. if Command then
  228. table.remove(Args, 1)
  229. local RequiredArgs = Command.RequiredArgs
  230. if #Args < RequiredArgs then Notify:FireClient(Player, "Missing arguments.") return end
  231. local Return = Command.Callback(Player, Args)
  232. if Return then
  233. Notify:FireClient(Player, Return)
  234. end
  235. end
  236. end)
  237.  
  238. GetCommands.OnServerEvent:Connect(function(Player)
  239. GetCommands:FireClient(Player, Commands)
  240. end)
  241.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement