Rylenss

raider-v1_edited

Oct 9th, 2025 (edited)
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 89.04 KB | None | 0 0
  1. --  Envision "Raider"
  2. -- 
  3. --  Version: 2.3-3
  4. --  Last edited: 5/21/23 3:19 PM -- canceled 8/2/23
  5. --  Last added: changed global var from _G to shared
  6. --
  7.  
  8. --[[
  9.     removelimbs:bot:all, rl
  10.     removehats:bot:[make hats fly], rh
  11.     orbit:bot:me:spiral, shield, staircase
  12.     staircase:all:spiral, straight, offX, offY, offZ
  13.     trip:all
  14. --]]
  15.  
  16. local TextChatService = game:GetService("TextChatService");
  17. local UserService = game:GetService("UserService");
  18. local HttpService = game:GetService("HttpService");
  19. local RunService = game:GetService("RunService");
  20. local ReplicatedStorage = game:GetService("ReplicatedStorage");
  21. local Players = game:GetService("Players");
  22. local Bot = Players.LocalPlayer;
  23. local BotNumber = table.find(shared["raider/dictionary"]["config/dictionary"]["setup/alts"], Bot.UserId) or 0;
  24.  
  25. local Form = string.format;
  26.  
  27. function Or(Variable, Checks)
  28.     for Int, Value in pairs(Checks) do
  29.         if Variable == Value then
  30.             return true;
  31.         end;
  32.     end;
  33.     return false;
  34. end;
  35. function StringFind(String, Pattern)
  36.     local Results = {};
  37.     if String == Pattern then
  38.         Results[#Results+1] = {["Start"] = 1, ["End"] = #String};
  39.     else
  40.         for Int = 1, #String-#Pattern+1, 1 do
  41.             if string.sub(String, Int, Int+#Pattern-1) == Pattern then
  42.                 Results[#Results+1] = {["Start"] = Int, ["End"] = Int+#Pattern-1};
  43.             end;
  44.         end;
  45.     end;
  46.     return Results;
  47. end;
  48. function Gsub(String, Table)
  49.     for Replacing, Replacement in pairs(Table) do
  50.         local Results = StringFind(String, Replacing);
  51.         for Int, Value in pairs(Results) do
  52.             String = string.sub(String, 0, Value.Start-1)..Replacement..string.sub(String, Value.End+1, -1);
  53.         end;
  54.     end;
  55.     return String;
  56. end;
  57. function RemoveExtraSpaces(String)
  58.     while string.find(String, "  ") ~= nil do
  59.         String = string.gsub(String, "  ", " ");
  60.     end;
  61.     return String;
  62. end;
  63. function IsFiltered(String)
  64.     if #StringFind(game:GetService("Chat"):FilterStringForBroadcast(String, Bot), "#") == 0 then
  65.         return false;
  66.     end;
  67.     return true;
  68. end;
  69. function Token(Layout, Library)
  70.     local Token = "";
  71.     local Library = string.split(Library or "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", "");
  72.     for Int, String in pairs(string.split(Layout, "")) do
  73.         if String == "#" then
  74.             String = Library[math.random(1, #Library)];
  75.         end;
  76.         Token ..= String;
  77.     end;
  78.     return Token;
  79. end;
  80. function TryToken(Layout, Library)
  81.     local Tries = 0;
  82.     while true do
  83.         Tries += 1;
  84.         if Tries >= 20 then
  85.             return "Generated tokens were filtered.";
  86.         end;
  87.         local Token = Token(Layout, Library);
  88.         if IsFiltered(Token) == false then
  89.             return Token;
  90.         end;
  91.         RunService.Heartbeat:Wait();
  92.     end;
  93. end;
  94. function TableFind(Table1, Index, By)
  95.     local Loop = nil;
  96.     Loop = function(Table2)
  97.         for Int, Value in pairs(Table2) do
  98.             if By == "Value" then
  99.                 if typeof(Value) == "table" then
  100.                     return Loop(Value);
  101.                 elseif Value == Index then
  102.                     return true, Int;
  103.                 end;
  104.             elseif By == "Int" then
  105.                 if Int == Index then
  106.                     return true, Value;
  107.                 end;
  108.             end;
  109.         end;
  110.         return false, nil;
  111.     end;
  112.     return Loop(Table1);
  113. end;
  114. function RandomizeTable(Table)
  115.     local Results = {};
  116.     for Int, Value in pairs(Table) do
  117.         Results[tonumber(Form("%s.%s", math.random(1, #Table), math.random(1, 999)))] = Value;
  118.     end;
  119.     return Results;
  120. end;
  121.  
  122. function Request(Contents)
  123.     if Contents.Method == "POST" then
  124.         return game:HttpPost(Contents.Url, HttpService:JSONEncode(Contents.Body), HttpService:JSONEncode(Contents.Headers));
  125.     end;
  126. end;
  127. function Say(String)
  128.     if Or(RemoveExtraSpaces(String), {"", " "}) == false then
  129.         if ReplicatedStorage:FindFirstChild("DefaultChatSystemChatEvents") then
  130.             ReplicatedStorage.DefaultChatSystemChatEvents.SayMessageRequest:FireServer(String, "All");
  131.         else
  132.             TextChatService.TextChannels.RBXGeneral:SendAsync(String);
  133.         end;
  134.     end;
  135. end;
  136. function Animate(Parent, Time, Style, Direction, Animation) --! REMOVE FROM PATHFIND
  137.     game:GetService("TweenService"):Create(Parent, TweenInfo.new(Time, Style, Direction, 0, false, 0), Animation):Play();
  138. end;
  139. function CreateTempPart(Properties)
  140.     local Part = Instance.new("Part", workspace.Camera);
  141.     Part.Name = Token("##############################", "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789");
  142.     Part.Size = Vector3.new(1, 1, 1);
  143.     Part.Anchored = true;
  144.     Part.CanCollide = false;
  145.     Part.Transparency = 0.5;
  146.     if Properties ~=  nil then
  147.         for Property, Value in pairs(Properties) do
  148.             Part[Property] = Value;
  149.         end;
  150.     end;
  151.     return Part;
  152. end;
  153.  
  154. function GetUserShortenedName(String)
  155.     for Index = 1, 2 do
  156.         for Int2, User in pairs(Players:GetPlayers()) do
  157.             local Results = StringFind(string.lower(User[Index == 1 and "Name" or "DisplayName"]), string.lower(String));
  158.             if Results and #Results > 0 then
  159.                 return User;
  160.             end;
  161.         end;
  162.     end;
  163.     return nil;
  164. end;
  165. function GetUserBy(String)
  166.     local Shortened = GetUserShortenedName(String);
  167.     if not Shortened then
  168.         for Int, Player in pairs(Players:GetPlayers()) do
  169.             if typeof(tonumber(String)) == "number" then
  170.                 if Player.UserId == tonumber(String) then
  171.                     return Player;
  172.                 end;
  173.             end;
  174.         end;
  175.     else
  176.         return Shortened;
  177.     end;
  178.     return;
  179. end;
  180. function GetPlayerPart(User, Part, WaitForPart, WaitForRespawn)
  181.     if User ~= nil and User.Character ~= nil then
  182.         if User.Character:FindFirstChild("Humanoid") ~= nil and User.Character.Humanoid.Health <= 0 then
  183.             if WaitForRespawn == true then
  184.                 while User.Character.Humanoid.Health <= 0 do
  185.                     task.wait();
  186.                 end;
  187.             end;
  188.         end;
  189.         if WaitForPart == true then
  190.             if User.Character == nil or User.Character:FindFirstChild(Part) == nil then
  191.                 while task.wait() do
  192.                     if User.Character ~= nil then
  193.                         if User.Character:FindFirstChild(Part) ~= nil then
  194.                             break;
  195.                         end;
  196.                     end;
  197.                 end;
  198.             end;
  199.         end;
  200.         if User.Character ~= nil and User.Character:FindFirstChild(Part) ~= nil then
  201.             return User.Character:FindFirstChild(Part);
  202.         end;
  203.         return nil;
  204.     end;
  205. end;
  206. function GetClosestUser(originUser, list)
  207.     local lowest = math.huge
  208.     local closest = nil
  209.  
  210.     local players = list or Players:GetPlayers()
  211.     local originRoot = GetPlayerPart(originUser, "HumanoidRootPart", false, false)
  212.     if not originRoot then return nil end
  213.  
  214.     for _, otherUser in pairs(players) do
  215.         if otherUser ~= originUser then
  216.             local otherRoot = GetPlayerPart(otherUser, "HumanoidRootPart", false, false)
  217.             if otherRoot then
  218.                 local distance = (originRoot.Position - otherRoot.Position).Magnitude
  219.                 if distance < lowest then
  220.                     lowest = distance
  221.                     closest = otherUser
  222.                 end
  223.             end
  224.         end
  225.     end
  226.     return closest
  227. end
  228.  
  229. function GetUsersExcludingBots()
  230.     local Results = {};
  231.     for Int, User in pairs(Players:GetPlayers()) do
  232.         local Found, Value = TableFind(GetOnlineBots(false), User, "Value");
  233.         if Found == false then
  234.             table.insert(Results, User);
  235.         end;
  236.     end;
  237.     return Results;
  238. end;
  239. function GetRandomUser()
  240.     local User = nil;
  241.     local Tries = 0;
  242.     while true do
  243.         if Tries == #Players:GetPlayers() then
  244.             break;
  245.         end;
  246.         User = Players:GetPlayers()[math.random(1, #Players:GetPlayers())];
  247.         if table.find(GetOnlineBots(false), User.Name) == nil then
  248.             break;
  249.         end;
  250.         Tries += 1;
  251.     end;
  252.     return User;
  253. end;
  254. function FixSelectedUser(SelectedUser, User)
  255.     if SelectedUser ~= nil then
  256.         return (string.lower(SelectedUser) == "me" and User)
  257.             or (string.lower(SelectedUser) == "c" and GetClosestUser())
  258.             or (string.lower(SelectedUser) == "r" and GetUsersExcludingBots()[math.random(1, #GetUsersExcludingBots())])
  259.             or GetUserBy(SelectedUser);
  260.     end;
  261.     return nil;
  262. end;
  263.  
  264. function GetOnlineBots(Ordered) --! !not working with 1 bot?
  265.     local BotsList = {}; --! dont think works
  266.     if Ordered == false then
  267.         for _, User in pairs(Players:GetPlayers()) do
  268.             if typeof(tonumber(table.find(shared["raider/dictionary"]["config/dictionary"]["setup/alts"], User.UserId))) == "number" then
  269.                 table.insert(BotsList, User);
  270.             end;
  271.         end;
  272.     elseif Ordered == true then
  273.         for _, UserId in pairs(shared["raider/dictionary"]["config/dictionary"]["setup/alts"]) do
  274.             local User = Players:GetPlayerByUserId(UserId);
  275.             if User ~= nil then
  276.                 table.insert(BotsList, User);
  277.             end;
  278.         end;
  279.     end;
  280.     return BotsList;
  281. end;
  282. function IsBot(SelectedBot, User)
  283.     for _, Value in pairs(GetArgumentStacking(SelectedBot)) do
  284.         local BotIdentity = (typeof(tonumber(Value)) == "number" and tonumber(Value) == BotNumber)
  285.             or (string.lower(Value) == "all")
  286.             or (string.lower(Value) == "c" and GetClosestUser(User, GetOnlineBots(false)).Name == Bot.Name)
  287.             or (string.lower(Value) == string.lower(Bot.Name));
  288.         if BotIdentity == true then
  289.             return BotIdentity or string.lower(Value);
  290.         end;
  291.     end;
  292. end;
  293. function GetBotOrder()
  294.     for Index, User in pairs(GetOnlineBots(true)) do
  295.         if table.find(shared["raider/dictionary"]["config/dictionary"]["setup/alts"], User.UserId) == BotNumber then
  296.             return Index;
  297.         end;
  298.     end;
  299.     return 0;
  300. end;
  301.  
  302. function HasPermission(UserId, RequiredLevel)
  303.     local Found, Level = TableFind(shared["raider/dictionary"]["config/dictionary"]["setup/whitelisted"], UserId, "Int");
  304.     local UserLevel = Found == true and Level or shared["raider/dictionary"]["config/dictionary"]["setup/whitelisted"].Everyone;
  305.     --! check if Level is > group level then set to group level
  306.     for GroupId, Ranks in pairs(shared["raider/dictionary"]["config/dictionary"]["setup/whitelisted/groups"]) do
  307.         local UserRank = Players:GetPlayerByUserId(UserId):GetRoleInGroup(GroupId);
  308.         if UserRank ~= nil then
  309.             for Rank, Level in pairs(Ranks) do
  310.                 UserLevel = UserRank == Rank and Level or UserLevel;
  311.                 break;
  312.             end;
  313.         else break end;
  314.     end;
  315.     return (RequiredLevel == "A" and Or(UserLevel, {"A", "B", "C"}))
  316.         or (RequiredLevel == "B" and Or(UserLevel, {"B", "C"}))
  317.         or (RequiredLevel == "C" and UserLevel == "C");
  318. end;
  319. function Register(User, Message, CommandAliases)
  320.     for Int1, Command1 in pairs(CommandAliases) do
  321.         if (string.lower(string.sub(Message, 1, #Command1+1)) == Command1..shared["raider/dictionary"]["config/dictionary"]["setup/command/seperator"]) then
  322.             local Found, Level = TableFind((function()
  323.                 local Results = {};
  324.                 for Command2, Level in pairs(shared["raider/dictionary"]["config/dictionary"]["setup/commands/permissionlevels"]) do
  325.                     for Int2, Value in pairs(string.split(string.lower(Command2), "/")) do
  326.                         Results[string.lower(Value)] = Level;
  327.                     end;
  328.                 end;
  329.                 return Results;
  330.             end)(), Command1, "Int");
  331.             return Found and HasPermission(User.UserId, Level);
  332.         end;
  333.     end;
  334.     return false;
  335. end;
  336. function GetArguments(String, Required)
  337.     local Arguments, Results = {}, {};
  338.     local QuoteCharacter, InQuotes, CombinedArg = "", false, "";
  339.     for Int, Value in pairs(string.split(String, shared["raider/dictionary"]["config/dictionary"]["setup/command/seperator"])) do
  340.         if Or(string.sub(Value, 1, 1), {"\"", "\'"}) then
  341.             InQuotes = true;
  342.         end;
  343.         if InQuotes == true then
  344.             CombinedArg ..= Value..shared["raider/dictionary"]["config/dictionary"]["setup/command/seperator"];
  345.         else
  346.             Arguments[#Arguments+1] = Value;
  347.         end;
  348.         if Or(string.sub(Value, #Value, -1), {"\"", "\'"}) then
  349.             InQuotes = false;
  350.             CombinedArg = string.sub(CombinedArg, #CombinedArg, -1) == shared["raider/dictionary"]["config/dictionary"]["setup/command/seperator"] and string.sub(CombinedArg, 1, #CombinedArg-1) or CombinedArg;
  351.             Arguments[#Arguments+1] = string.sub(CombinedArg, 2, #CombinedArg-1);
  352.             CombinedArg = "";
  353.         end;
  354.     end;
  355.     for Int, Value in pairs(Arguments) do
  356.         if Int > 1 and Int <= Required+1 then
  357.             Results[#Results+1] = Value;
  358.         end;
  359.     end;
  360.     return table.unpack(Results)
  361. end;
  362. function GetArgumentStacking(Argument)
  363.     local Results = {};
  364.     local Separator = nil;
  365.     for Int, Value in pairs(shared["raider/dictionary"]["config/dictionary"]["setup/command/stackingseperator"]) do
  366.         if string.find(Argument, Value) ~= nil then
  367.             Separator = Value;
  368.             break;
  369.         end;
  370.     end;
  371.     if Separator ~= nil then
  372.         for Int, Value in pairs(string.split(Argument, Separator)) do
  373.             table.insert(Results, Value);
  374.         end;
  375.     else
  376.         table.insert(Results, Argument);
  377.     end;
  378.     return Results;
  379. end;
  380.  
  381. shared["raider/dictionary"]["config/dictionary"]["general/commands"] = {};
  382. local Directory = {
  383.     ["Functions"] = {
  384.         ["AddCommand"] = function(Aliases, Description, Arguments)
  385.             shared["raider/dictionary"]["config/dictionary"]["general/commands"][#shared["raider/dictionary"]["config/dictionary"]["general/commands"]+1] = {
  386.                 ["Aliases"] = Aliases;
  387.                 ["Description"] = Description,
  388.                 ["Arguments"] = Arguments,
  389.             };
  390.         end,
  391.         ["Disconnect"] = function(Service)
  392.             if Service ~= nil and Service.Connected == true then
  393.                 Service:Disconnect();
  394.             end;
  395.         end,
  396.     },
  397.     ["Utility"] = {
  398.         ["Disabled"] = false,
  399.         ["Services"] = {},
  400.         ["LastMessage"] = "",
  401.         ["DefaultGravity"] = workspace.Gravity;
  402.         ["Frames"] = {["Value"] = 0, ["Start"] = (RunService:IsRunning() and time or os.clock)(), ["Updates"] = {}, ["Iteration"] = 0},
  403.     },
  404.     ["Commands"] = {
  405.         ["Spam"] = {["Running"] = false},
  406.         ["Mock"] = {["User"] = nil},
  407.         ["Sing"] = {["Running"] = false},
  408.         ["Reply"] = {["Running"] = false, ["Answering"] = false, ["ChatDistance"] = 15, ["LastQuestion"] = "", ["History"] = {}},
  409.         ["Advertise"] = {["Running"] = false},
  410.         ["Orbit"] = {["Service"] = nil, ["Part"] = nil, ["Following"] = false, ["Tick"] = tick()},
  411.         ["Spin"] = {["Service"] = nil, ["Thrust"] = nil},
  412.         ["Stack"] = {["Service"] = nil},
  413.         ["Fling"] = {["Running"] = false},
  414.         ["Antifling"] = {["Running"] = false, ["Position"] = nil},
  415.         ["Lookat"] = {["User"] = nil},
  416.         ["Annoy"] = {["Running"] = false, ["Service"] = nil},
  417.         ["Roam"] = {["Running"] = false},
  418.         ["Pathfind"] = {["Running"] = false, ["SessionId"] = Token("##############################", "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")},
  419.         ["Follow"] = {["Service"] = nil},
  420.         ["Server"] = {
  421.             ["RateMyAvatar"] = {
  422.                 ["Claimbooth"] = {
  423.                     ["Waiting"] = false,
  424.                 },
  425.                 ["Blacklist"] = {
  426.                     ["Looping"] = false,
  427.                 },
  428.             },
  429.         },
  430.         ["Dance"] = {["Looping"] = false},
  431.         ["Jump"] = {["Looping"] = false},
  432.     },
  433. };
  434. local OnlineBots = #GetOnlineBots(false);
  435. Players.PlayerAdded:Connect(function()OnlineBots = #GetOnlineBots(false)end);
  436. Players.PlayerRemoving:Connect(function(User)
  437.     OnlineBots = #GetOnlineBots(false);
  438.     for Int, Value in pairs(Directory.Commands) do
  439.         if Value.User ~= nil and Value.User == User then
  440.             Value.User = nil;
  441.         end;
  442.     end;
  443. end);
  444. for _, UserId in shared["raider/dictionary"]["config/dictionary"]["setup/alts"] do
  445.     shared["raider/dictionary"]["config/dictionary"]["setup/whitelisted"][UserId] = "C";
  446. end;
  447.  
  448. function DisableBot()
  449.     shared["raider/dictionary"]["config/dictionary"]["setup/antichatlag"] = false;
  450.     Directory.Utility.Disabled = true;
  451.     Directory.Commands.Spam.Running = false;
  452.     Directory.Commands.Mock.User = nil;
  453.     Directory.Commands.Sing.Running = false;
  454.     Directory.Commands.Reply.Running = false;
  455.     Directory.Commands.Advertise.Running = false;
  456.     Directory.Functions.Disconnect(Directory.Commands.Orbit.Service);
  457.     if Directory.Commands.Orbit.Part ~= nil then
  458.         Directory.Commands.Orbit.Part:Remove();
  459.     end;
  460.     Directory.Functions.Disconnect(Directory.Commands.Stack.Service);
  461.     Directory.Functions.Disconnect(Directory.Commands.Spin.Service);
  462.     if Directory.Commands.Spin.Thrust ~= nil then
  463.         Directory.Commands.Spin.Thrust:Remove();
  464.     end;
  465.     Directory.Commands.Fling.Running = false;
  466.     Directory.Commands.Antifling.Running = false;
  467.     Directory.Commands.Lookat.User = nil;
  468.     Directory.Commands.Annoy.Running = false;
  469.     Directory.Commands.Roam.Running = false;
  470.     Directory.Commands.Pathfind.Running = false;
  471.     Directory.Functions.Disconnect(Directory.Commands.Follow.Service);
  472.     Directory.Commands.Dance.Looping = false;
  473.     Directory.Commands.Jump.Looping = false;
  474.     for Int, Signal in pairs(Directory.Utility.Services) do
  475.         Directory.Functions.Disconnect(Signal);
  476.     end;
  477.     workspace.CurrentCamera.CameraSubject = Bot.Character.Humanoid;
  478.     workspace.Gravity = Directory.Utility.DefaultGravity;
  479. end;
  480. function RunFlingChecksOn(User)
  481.     RunService.Heartbeat:Connect(function()
  482.         if Directory.Commands.Antifling.Running == true then
  483.             local RootPart = GetPlayerPart(User, "HumanoidRootPart", false, false);
  484.             if RootPart ~= nil then
  485.                 if RootPart.AssemblyAngularVelocity.Magnitude > 50 or RootPart.AssemblyLinearVelocity.Magnitude > 100 then
  486.                     for Int, Value in ipairs(User.Character:GetDescendants()) do
  487.                         if Value.ClassName == "BasePart" then
  488.                             Value.CanCollide = false;
  489.                             Value.AssemblyAngularVelocity = Vector3.new(0, 0, 0);
  490.                             Value.AssemblyLinearVelocity = Vector3.new(0, 0, 0);
  491.                             Value.CustomPhysicalProperties = PhysicalProperties.new(0, 0, 0);
  492.                         end;
  493.                     end;
  494.                     RootPart.CanCollide = false;
  495.                     RootPart.AssemblyAngularVelocity = Vector3.new(0, 0, 0);
  496.                     RootPart.AssemblyLinearVelocity = Vector3.new(0, 0, 0);
  497.                     RootPart.CustomPhysicalProperties = PhysicalProperties.new(0, 0, 0);
  498.                 end;
  499.             end;
  500.         end;
  501.     end);
  502. end;
  503.  
  504. --Directory.Functions.AddCommand({"Say"}, "Tell the bots to say something.", {
  505. --  [1] = {
  506. --      ["Aliases"] = {"Message"},
  507. --      ["Expects"] = {"__aliases"},
  508. --      [1] = {
  509. --          ["Aliases"] = {"Sequence"},
  510. --          ["Types"] = {"string", "number"},
  511. --          [1] = {
  512. --              ["Aliases"] = {"Delay"},
  513. --              ["Types"] = {"number"},
  514. --          },
  515. --      },
  516. --  },
  517. --  [2] = {
  518. --      ["Aliases"] = {"Script"},
  519. --      ["Expects"] = {"__aliases"},
  520. --  },
  521. --  [3] = {
  522. --      ["Aliases"] = {"Frames", "Fps"},
  523. --      ["Expects"] = {"__aliases"},
  524. --  },
  525. --  [4] = {
  526. --      ["Aliases"] = {"Ping", "Ms"},
  527. --      ["Expects"] = {"__aliases"},
  528. --  },
  529. --  [5] = {
  530. --      ["Aliases"] = {"Whitelist", "Wl"},
  531. --      ["Expects"] = {"__aliases"},
  532. --      [1] = {
  533. --          ["Aliases"] = {"User"},
  534. --          ["Types"] = {"player"},
  535. --      },
  536. --  },
  537. --  [6] = {
  538. --      ["Aliases"] = {"Indentity", "Id"},
  539. --      ["Expects"] = {"__aliases"},
  540. --  },
  541. --  [7] = {
  542. --      ["Aliases"] = {"Bots"},
  543. --      ["Expects"] = {"__aliases"},
  544. --      [1] = {
  545. --          ["Aliases"] = {"Status"},
  546. --          ["Expects"] = {"Online", "Offline"},
  547. --          [1] = {
  548. --              ["Aliases"] = {"Type"},
  549. --              ["Expects"] = {"Disp", "Id"},
  550. --          },
  551. --      },
  552. --  },
  553. --  [8] = {
  554. --      ["Aliases"] = {"Random", "Stuff", "Rs"},
  555. --      ["Expects"] = {"__aliases"},
  556. --  },
  557. --  [9] = {
  558. --      ["Aliases"] = {"Last"},
  559. --      ["Expects"] = {"__aliases"},
  560. --  },
  561. --  [10] = {
  562. --      ["Aliases"] = {"Token"},
  563. --      ["Expects"] = {"__aliases"},
  564. --      [1] = {
  565. --          ["Aliases"] = {"Pattern"},
  566. --          ["Types"] = {"string"},
  567. --          [1] = {
  568. --              ["Aliases"] = {"Array"},
  569. --              ["Types"] = {"string"},
  570. --          },
  571. --      },
  572. --  },
  573. --  [11] = {
  574. --      ["Aliases"] = {"Solve"},
  575. --      ["Expects"] = {"__aliases"},
  576. --      [1] = {
  577. --          ["Aliases"] = {"Equation"},
  578. --          ["Types"] = {"string"},
  579. --      },
  580. --  },
  581. --});
  582.  
  583. --Directory.Functions.AddCommand({"Spam"}, "Tell the bots to repeatedly say something.", {
  584. --  [1] = {
  585. --      ["Aliases"] = {"Message"},
  586. --      ["Types"] = {"string"},
  587. --      [1] = {
  588. --          ["Aliases"] = {"Amount"},
  589. --          ["Types"] = {"number"},
  590. --          [1] = {
  591. --              ["Aliases"] = {"Delay"},
  592. --              ["Types"] = {"number"},
  593. --          },
  594. --      },
  595. --  },
  596. --  [2] = {
  597. --      ["Aliases"] = {"Last"},
  598. --      ["Expects"] = {"__aliases"},
  599. --  },
  600. --  [3] = {
  601. --      ["Aliases"] = {"Frames", "Fps"},
  602. --      ["Expects"] = {"__aliases"},
  603. --  },
  604. --  [4] = {
  605. --      ["Aliases"] = {"Ping", "Ms"},
  606. --      ["Expects"] = {"__aliases"},
  607. --  },
  608. --  [5] = {
  609. --      ["Aliases"] = {"Random", "Stuff", "Rs"},
  610. --      ["Expects"] = {"__aliases"},
  611. --  },
  612. --  [6] = {
  613. --      ["Aliases"] = {"Token"},
  614. --      ["Expects"] = {"__aliases"},
  615. --  },
  616. --});
  617. --Directory.Functions.AddCommand({"Reply"}, "Chat with ChatGPT.", {
  618. --  [1] = {
  619. --      ["Aliases"] = {"Bot"},
  620. --      ["Types"] = {"bot"},
  621. --      [1] = {
  622. --          ["Aliases"] = {"Toggle"},
  623. --          ["Expects"] = {"Yes", "True", "1"},
  624. --      },
  625. --  },
  626. --});
  627. --Directory.Functions.AddCommand({"Mock", "Swis", "Repeat"}, "Tell the bots to mock a user.", {
  628. --  [1] = {
  629. --      ["Aliases"] = {"Bot"},
  630. --      ["Types"] = {"bot"},
  631. --      [1] = {
  632. --          ["Aliases"] = {"User"},
  633. --          ["Types"] = {"player"},
  634. --      },
  635. --      [2] = {
  636. --          ["Aliases"] = {"Stop"},
  637. --          ["Expects"] = {"__aliases"},
  638. --      },
  639. --  },
  640. --});
  641. --Directory.Functions.AddCommand({"Sing", "Lyrics"}, "Tell the bots sing a song.", {
  642. --  [1] = {
  643. --      ["Aliases"] = {"Song"},
  644. --      ["Expects"] = (function()
  645. --          local Table = {};
  646. --          for Song, Value in pairs(shared["raider/dictionary"]["config/dictionary"]["setup/songlyrics"]) do
  647. --              table.insert(Table, Song);
  648. --          end;
  649. --          return Table;
  650. --      end)(),
  651. --  },
  652. --  [2] = {
  653. --      ["Aliases"] = {"Stop"},
  654. --      ["Expects"] = {"__aliases"},
  655. --  },
  656. --});
  657. --Directory.Functions.AddCommand({"Freeze"}, "Freeze the bots in place.", {
  658. --  [1] = {
  659. --      ["Aliases"] = {"Bot"},
  660. --      ["Types"] = {"bot"},
  661. --      [1] = {
  662. --          ["Aliases"] = {"Stop"},
  663. --          ["Expects"] = {"__aliases"},
  664. --      },
  665. --  },
  666. --});
  667. --Directory.Functions.AddCommand({"Teleport", "Tp"}, "Teleport the bots to a specific player.", {
  668. --  [1] = {
  669. --      ["Aliases"] = {"Bot"},
  670. --      ["Types"] = {"bot"},
  671. --      [1] = {
  672. --          ["Aliases"] = {"User"},
  673. --          ["Types"] = {"player"},
  674. --      },
  675. --  },
  676. --});
  677. --Directory.Functions.AddCommand({"Advertise", "Ad"}, "Tell the bots to advertise anything or random strings.", {
  678. --  [1] = {
  679. --      ["Aliases"] = {"Bot"},
  680. --      ["Types"] = {"bot"},
  681. --      [1] = {
  682. --          ["Aliases"] = {"User"},
  683. --          ["Types"] = {"player"},
  684. --      },
  685. --      [2] = {
  686. --          ["Aliases"] = {"Delay"},
  687. --          ["Types"] = {"number"},
  688. --      },
  689. --      [3] = {
  690. --          ["Aliases"] = {"Stop"},
  691. --          ["Expects"] = {"__aliases"},
  692. --      },
  693. --  },
  694. --});
  695. --Directory.Functions.AddCommand({"Line"}, "Line the bots behind a specific player.", {
  696. --  [1] = {
  697. --      ["Aliases"] = {"User"},
  698. --      ["Types"] = {"player"},
  699. --      [1] = {
  700. --          ["Aliases"] = {"PerRow"},
  701. --          ["Types"] = {"number"},
  702. --          [1] = {
  703. --              ["Aliases"] = {"SpacingX"},
  704. --              ["Types"] = {"number"},
  705. --              [1] = {
  706. --                  ["Aliases"] = {"SpacingZ"},
  707. --                  ["Types"] = {"number"},
  708. --              },
  709. --          },
  710. --      },
  711. --  },
  712. --});
  713. --Directory.Functions.AddCommand({"Orbit"}, "Tell the bots to orbit a specific player.", {
  714. --  [1] = {
  715. --      ["Aliases"] = {"Bot"},
  716. --      ["Types"] = {"bot"},
  717. --      [1] = {
  718. --          ["Aliases"] = {"User"},
  719. --          ["Types"] = {"player"},
  720. --          [1] = {
  721. --              ["Aliases"] = {"Radius"},
  722. --              ["Types"] = {"number"},
  723. --              [1] = {
  724. --                  ["Aliases"] = {"Speed"},
  725. --                  ["Types"] = {"number"},
  726. --                  [1] = {
  727. --                      ["Aliases"] = {"SpeedIncreasementValue"},
  728. --                      ["Types"] = {"number"},
  729. --                  },
  730. --              },
  731. --              [2] = {
  732. --                  ["Aliases"] = {"Mode"},
  733. --                  ["Expects"] = {"m1"},
  734. --                  [1] = {
  735. --                      ["Aliases"] = {"XIncreasement"},
  736. --                      ["Types"] = {"number"},
  737. --                      [1] = {
  738. --                          ["Aliases"] = {"YIncreasement"},
  739. --                          ["Types"] = {"number"},
  740. --                          [1] = {
  741. --                              ["Aliases"] = {"ZIncreasement"},
  742. --                              ["Types"] = {"number"},
  743. --                          },
  744. --                      },
  745. --                  },
  746. --              },
  747. --          },--! m2
  748. --      },
  749. --      [2] = {
  750. --          ["Aliases"] = {"Stay"},
  751. --          ["Expects"] = {"__aliases"},
  752. --      },
  753. --      [3] = {
  754. --          ["Aliases"] = {"Stop"},
  755. --          ["Expects"] = {"__aliases"},
  756. --      },
  757. --  },
  758. --});
  759. --Directory.Functions.AddCommand({"Spin"}, "Tell the bots to spin with a set speed.", {
  760. --  [1] = {
  761. --      ["Aliases"] = {"Bot"},
  762. --      ["Types"] = {"bot"},
  763. --      [1] = {
  764. --          ["Aliases"] = {"Speed"},
  765. --          ["Types"] = {"number"},
  766. --      },
  767. --      [2] = {
  768. --          ["Aliases"] = {"Stop"},
  769. --          ["Expects"] = {"__aliases"},
  770. --      },
  771. --  },
  772. --});
  773. --Directory.Functions.AddCommand({"Stack"}, "Stack the bots on a specific player.", {
  774. --  [1] = {
  775. --      ["Aliases"] = {"Bot"},
  776. --      ["Types"] = {"bot"},
  777. --      [1] = {
  778. --          ["Aliases"] = {"User"},
  779. --          ["Types"] = {"player"},
  780. --          [1] = {
  781. --              ["Aliases"] = {"Sitting"},
  782. --              ["Expects"] = {"Yes", "True", "1"},
  783. --              [1] = {
  784. --                  ["Aliases"] = {"YOffset"}, --!
  785. --                  ["Types"] = {"number"},
  786. --                  [1] = {
  787. --                      ["Aliases"] = {"ZOffset"},
  788. --                      ["Types"] = {"number"},
  789. --                  },
  790. --              },
  791. --          },
  792. --      },
  793. --      [2] = {
  794. --          ["Aliases"] = {"Stop"},
  795. --          ["Expects"] = {"__aliases"},
  796. --      },
  797. --  },
  798. --});
  799. --Directory.Functions.AddCommand({"Walk"}, "Tell the bots to walk in a direction for a specific amount of studs.", {
  800. --  [1] = {
  801. --      ["Aliases"] = {"Bot"},
  802. --      ["Types"] = {"bot"},
  803. --      [1] = {
  804. --          ["Aliases"] = {"Direction"},
  805. --          ["Expects"] = {"F", "Forward", "B", "Backward", "L", "Left", "R", "Right"}, --!
  806. --          [1] = {
  807. --              ["Aliases"] = {"Studs"},
  808. --              ["Types"] = {"numbers"},
  809. --          },
  810. --      },
  811. --  },
  812. --});
  813. --Directory.Functions.AddCommand({"Fling"}, "Fling a specific player with the bots.", {
  814. --  [1] = {
  815. --      ["Aliases"] = {"Bot"},
  816. --      ["Types"] = {"bot"},
  817. --      [1] = {
  818. --          ["Aliases"] = {"User"},
  819. --          ["Types"] = {"player"},
  820. --          [1] = {
  821. --              ["Aliases"] = {"Mode"},
  822. --              ["Expects"] = {"R15", "1", "R6", "2"},
  823. --              [1] = {
  824. --                  ["Aliases"] = {"Time"},
  825. --                  ["Types"] = {"number"},
  826. --              },
  827. --          },
  828. --      },
  829. --  },
  830. --});
  831. --Directory.Functions.AddCommand({"Antifling", "Nofling"}, "Try to stop flings from other exploiters for the bots.", {
  832. --  [1] = {
  833. --      ["Aliases"] = {"Toggle"},
  834. --      ["Expects"] = {"On", "Yes", "True", "1"},
  835. --  },
  836. --});
  837. --Directory.Functions.AddCommand({"Lookat", "Stare"}, "Make the bots look at a specific player.", {
  838. --  [1] = {
  839. --      ["Aliases"] = {"Bot"},
  840. --      ["Types"] = {"bot"},
  841. --      [1] = {
  842. --          ["Aliases"] = {"User"},
  843. --          ["Types"] = {"player"},
  844. --      },
  845. --      [2] = {
  846. --          ["Aliases"] = {"Stop"},
  847. --          ["Expects"] = {"__aliases"},
  848. --      },
  849. --  },
  850. --});
  851. --Directory.Functions.AddCommand({"Annoy"}, "Annoy a specific player with the bots.", {
  852. --  [1] = {
  853. --      ["Aliases"] = {"Bot"},
  854. --      ["Types"] = {"bot"},
  855. --      [1] = {
  856. --          ["Aliases"] = {"User"},
  857. --          ["Types"] = {"player"},
  858. --          [1] = {
  859. --              ["Aliases"] = {"Radius"},
  860. --              ["Types"] = {"number"},
  861. --              [1] = {
  862. --                  ["Aliases"] = {"Delay"},
  863. --                  ["Types"] = {"number"},
  864. --              },
  865. --          },
  866. --      },
  867. --      [2] = {
  868. --          ["Aliases"] = {"Stop"},
  869. --          ["Expects"] = {"__aliases"},
  870. --      },
  871. --  },
  872. --});
  873. --Directory.Functions.AddCommand({"Rocket"}, "Rocket the bots into the air and watch them explode.", {
  874. --  [1] = {
  875. --      ["Aliases"] = {"Bot"},
  876. --      ["Types"] = {"bot"},
  877. --      [1] = {
  878. --          ["Aliases"] = {"User"},
  879. --          ["Types"] = {"player"},
  880. --      },
  881. --  },
  882. --});
  883. --Directory.Functions.AddCommand({"Roam"}, "Tell the bots to walk around aimlessly.", {
  884. --  [1] = {
  885. --      ["Aliases"] = {"Bot"},
  886. --      ["Types"] = {"bot"},
  887. --      [1] = {
  888. --          ["Aliases"] = {"RandomJumps"},
  889. --          ["Expects"] = {"Tp", "Yes", "True", "1"},
  890. --          [1] = {
  891. --              ["Aliases"] = {"MoveSize"},
  892. --              ["Types"] = {"number"},
  893. --              [1] = {
  894. --                  ["Aliases"] = {"MinMoveWait"},
  895. --                  ["Types"] = {"number"},
  896. --                  [1] = {
  897. --                      ["Aliases"] = {"MaxMoveWait"},
  898. --                      ["Types"] = {"number"},
  899. --                  },
  900. --              },
  901. --          },
  902. --      },
  903. --      [2] = {
  904. --          ["Aliases"] = {"Stop"},
  905. --          ["Expects"] = {"__aliases"},
  906. --      },
  907. --  },
  908. --});
  909. --Directory.Functions.AddCommand({"Pathfind", "Path", "Goto"}, "Find a player with pathfind.", {
  910. --  [1] = {
  911. --      ["Aliases"] = {"Bot"},
  912. --      ["Types"] = {"bot"},
  913. --      [1] = {
  914. --          ["Aliases"] = {"User"},
  915. --          ["Types"] = {"player"},
  916. --          [1] = {
  917. --              ["Aliases"] = {"Spacing"},
  918. --              ["Types"] = {"number"},
  919. --          },
  920. --      },
  921. --      [2] = {
  922. --          ["Aliases"] = {"Stop"},
  923. --          ["Expects"] = {"__aliases"},
  924. --      },
  925. --  },
  926. --});
  927. --Directory.Functions.AddCommand({"Follow"}, "Tell the bots to follow a specific player.", {
  928. --  [1] = {
  929. --      ["Aliases"] = {"Bot"},
  930. --      ["Types"] = {"bot"},
  931. --      [1] = {
  932. --          ["Aliases"] = {"User"},
  933. --          ["Types"] = {"player"},
  934. --          [1] = {
  935. --              ["Aliases"] = {"MinFollowDistance"},
  936. --              ["Types"] = {"number"},
  937. --              [1] = {
  938. --                  ["Aliases"] = {"SnakeMode"},
  939. --                  ["Expects"] = {"Yes", "True", "1"},
  940. --              },
  941. --          },
  942. --      },
  943. --      [2] = {
  944. --          ["Aliases"] = {"Stop"},
  945. --          ["Expects"] = {"__aliases"},
  946. --      },
  947. --  },
  948. --});
  949.  
  950. --if game.PlaceId == 118049678120741 then
  951. --  Directory.Functions.AddCommand({"Server", "S"}, "This command is only available for certain games/servers.", {
  952. --      [1] = {
  953. --          ["Aliases"] = {"Bot"},
  954. --          ["Types"] = {"bot"},
  955. --          [1] = {
  956. --              ["Aliases"] = {"Claimbooth", "Claim", "Cb"},
  957. --              ["Expects"] = {"__aliases"},
  958. --              [1] = {
  959. --                  ["Aliases"] = {"Message"},
  960. --                  ["Types"] = {"string"},
  961. --              },
  962. --              [2] = {
  963. --                  ["Aliases"] = {"Stop"},
  964. --                  ["Expects"] = {"__aliases"},
  965. --              },
  966. --          },
  967. --          [2] = {
  968. --              ["Aliases"] = {"Abandombooth", "Abondon", "Ab"},
  969. --              ["Expects"] = {"__aliases"},
  970. --          },
  971. --          [3] = {
  972. --              ["Aliases"] = {"Teleport", "Tp"},
  973. --              ["Expects"] = {"__aliases"},
  974. --          },
  975. --          [4] = {
  976. --              ["Aliases"] = {"Blacklist", "Bl"},
  977. --              ["Expects"] = {"__aliases"},
  978. --              [1] = {
  979. --                  ["Aliases"] = {"User"},
  980. --                  ["Types"] = {"player"},
  981. --                  [1] = {
  982. --                      ["Aliases"] = {"PlayerJoinedAutoBlacklist"},
  983. --                      ["Expects"] = {"Auto", "Loop"},
  984. --                      [1] = {
  985. --                          ["Aliases"] = {"Stop"},
  986. --                          ["Expects"] = {"__aliases"},
  987. --                      },
  988. --                  },
  989. --              },
  990. --          },
  991. --          [5] = {
  992. --              ["Aliases"] = {"Whitelist", "Wl"},
  993. --              ["Expects"] = {"__aliases"},
  994. --              [1] = {
  995. --                  ["Aliases"] = {"User"},
  996. --                  ["Types"] = {"player"},
  997. --              },
  998. --          },
  999. --          [6] = {
  1000. --              ["Aliases"] = {"Change", "Update", "U"},
  1001. --              ["Types"] = {"string"},
  1002. --          },
  1003. --          [7] = {
  1004. --              ["Aliases"] = {"Rate", "R"},
  1005. --              ["Expects"] = {"__aliases"},
  1006. --              [1] = {
  1007. --                  ["Aliases"] = {"User"},
  1008. --                  ["Types"] = {"player"},
  1009. --                  [1] = {
  1010. --                      ["Aliases"] = {"Rating"},
  1011. --                      ["Types"] = {"number"},
  1012. --                  },
  1013. --              },
  1014. --          },
  1015. --      },
  1016. --  });
  1017. --end;
  1018. --Directory.Functions.AddCommand({"Speed"}, "Sets the speed of the bots.", {
  1019. --  [1] = {
  1020. --      ["Aliases"] = {"Bot"},
  1021. --      ["Types"] = {"bot"},
  1022. --      [1] = {
  1023. --          ["Aliases"] = {""},
  1024. --          ["Types"] = {"number"},
  1025. --      },
  1026. --  },
  1027. --});
  1028. --Directory.Functions.AddCommand({"Jump"}, "Tells the bots to jump.", {
  1029. --  [1] = {
  1030. --      ["Aliases"] = {"Bot"},
  1031. --      ["Types"] = {"bot"},
  1032. --      [1] = {
  1033. --          ["Aliases"] = {"Power"},
  1034. --          ["Types"] = {"number"},
  1035. --      },
  1036. --      [2] = {
  1037. --          ["Aliases"] = {"Auto"},
  1038. --          ["Expects"] = {"__aliases"}, --?
  1039. --      },
  1040. --      [3] = {
  1041. --          ["Aliases"] = {"Stop"},
  1042. --          ["Expects"] = {"__aliases"},
  1043. --      },
  1044. --  },
  1045. --});
  1046. --Directory.Functions.AddCommand({"Sit"}, "Tells the bots to sit.", {
  1047. --  [1] = {
  1048. --      ["Aliases"] = {"Bot"},
  1049. --      ["Types"] = {"bot"},
  1050. --  },
  1051. --});
  1052. --Directory.Functions.AddCommand({"Autorotate", "Ar"}, "Enables or disables auto-rotation for the bots.", {
  1053. --  [1] = {
  1054. --      ["Aliases"] = {"Bot"},
  1055. --      ["Types"] = {"bot"},
  1056. --      [1] = {
  1057. --          ["Aliases"] = {"Toggle"},
  1058. --          ["Expects"] = {"Off", "No", "False", "0"},
  1059. --      },
  1060. --  },
  1061. --});
  1062. --Directory.Functions.AddCommand({"Emote", "e"}, "Makes the bots do a specific emote.", {
  1063. --  [1] = {
  1064. --      ["Aliases"] = {"Bot"},
  1065. --      ["Types"] = {"bot"},
  1066. --      [1] = {
  1067. --          ["Aliases"] = {"Emote"},
  1068. --          ["Expects"] = {"Random", "Cheer", "Laugh", "Point", "Wave"},
  1069. --          [1] = {
  1070. --              ["Aliases"] = {"Loop"},
  1071. --              ["Expects"] = {"Yes", "True", "1"},
  1072. --          },
  1073. --      },
  1074. --      [2] = {
  1075. --          ["Aliases"] = {"Stop"},
  1076. --          ["Expects"] = {"__aliases"},
  1077. --      },
  1078. --  },
  1079. --});
  1080. --Directory.Functions.AddCommand({"Dance"}, "Makes the bots do a specific dance.", {
  1081. --  [1] = {
  1082. --      ["Aliases"] = {"Bot"},
  1083. --      ["Types"] = {"bot"},
  1084. --      [1] = {
  1085. --          ["Aliases"] = {"Dance"},
  1086. --          ["Expects"] = {"Random", "Dance1", "Dance2", "Dance3"},
  1087. --          [1] = {
  1088. --              ["Aliases"] = {"Loop"},
  1089. --              ["Expects"] = {"Yes", "True", "1"},
  1090. --          },
  1091. --      },
  1092. --      [2] = {
  1093. --          ["Aliases"] = {"Stop"},
  1094. --          ["Expects"] = {"__aliases"},
  1095. --      },
  1096. --  },
  1097. --});
  1098. --Directory.Functions.AddCommand({"Whitelist", "Wl"}, "Sets the whitelist level of a specific player.", {
  1099. --  [1] = {
  1100. --      ["Aliases"] = {"User"},
  1101. --      ["Types"] = {"player"},
  1102. --      [1] = {
  1103. --          ["Aliases"] = {"Level"},
  1104. --          ["Expects"] = {"A", "B", "C", "D"}, --! d?
  1105. --      },
  1106. --  },
  1107. --});
  1108. --Directory.Functions.AddCommand({"Render"}, "Enables or disables 3D rendering and all gui elements on the clients/bots side.", {
  1109. --  [1] = {
  1110. --      ["Aliases"] = {"Bot"},
  1111. --      ["Types"] = {"bot"},
  1112. --      [1] = {
  1113. --          ["Aliases"] = {"Toggle"},
  1114. --          ["Expects"] = {"Off", "No", "False", "0"},
  1115. --      },
  1116. --  },
  1117. --});
  1118. --Directory.Functions.AddCommand({"Fpscap", "Capfps", "Setfps"}, "Sets the max fps for all bots.", {
  1119. --  [1] = {
  1120. --      ["Aliases"] = {"Bot"},
  1121. --      ["Types"] = {"bot"},
  1122. --  },
  1123. --});
  1124. --Directory.Functions.AddCommand({"Reset"}, "Resets the bots.", {
  1125. --  [1] = {
  1126. --      ["Aliases"] = {"Bot"},
  1127. --      ["Types"] = {"bot"},
  1128. --  },
  1129. --});
  1130. --Directory.Functions.AddCommand({"Reload"}, "Reloads the bots.", {
  1131. --  [1] = {
  1132. --      ["Aliases"] = {"Bot"},
  1133. --      ["Types"] = {"bot"},
  1134. --  },
  1135. --});
  1136. --Directory.Functions.AddCommand({"Disable"}, "Disables the bots.", {
  1137. --  [1] = {
  1138. --      ["Aliases"] = {"Bot"},
  1139. --      ["Types"] = {"bot"},
  1140. --  },
  1141. --});
  1142. --Directory.Functions.AddCommand({"Rejoin"}, "Makes the bots rejoin.", {
  1143. --  [1] = {
  1144. --      ["Aliases"] = {"Bot"},
  1145. --      ["Types"] = {"bot"},
  1146. --  },
  1147. --});
  1148. --Directory.Functions.AddCommand({"Leave"}, "Makes the bots leave.", {
  1149. --  [1] = {
  1150. --      ["Aliases"] = {"Bot"},
  1151. --      ["Types"] = {"bot"},
  1152. --  },
  1153. --});
  1154. --[[    Commands
  1155.     server:all
  1156.     [! L1389, WHEN USING AUTO BLACKLIST ALL AND USING WHITELIST IT WILL JUST BLACKLIST THE WHITELISTED PLAYER AGAIN, USE A TABLE !
  1157.     say:bots:[bot]:info OR say:info
  1158. ]]--
  1159.  
  1160. shared["raider/dictionary"]["config/dictionary"]["general/sessionid"] = Token("##############################", "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789");
  1161. --! DONT NEED ^
  1162.  
  1163. Directory.Utility.Services[#Directory.Utility.Services+1] = RunService.Heartbeat:Connect(function()
  1164.     Directory.Utility.Frames.Iteration = (RunService:IsRunning() and time or os.clock)();
  1165.     for Index = #Directory.Utility.Frames.Updates, 1, -1 do
  1166.         Directory.Utility.Frames.Updates[Index+1] = Directory.Utility.Frames.Updates[Index] >= Directory.Utility.Frames.Iteration-1 and Directory.Utility.Frames.Updates[Index] or nil;
  1167.     end;
  1168.     Directory.Utility.Frames.Updates[1] = Directory.Utility.Frames.Iteration;
  1169.     Directory.Utility.Frames.Value = tostring(math.floor((RunService:IsRunning() and time or os.clock)()-Directory.Utility.Frames.Start >= 1 and #Directory.Utility.Frames.Updates or #Directory.Utility.Frames.Updates/((RunService:IsRunning() and time or os.clock)()-Directory.Utility.Frames.Start)));
  1170. end); --! check if fps is <= 15 (maxfps); if so then say the fps is at max fps
  1171. Bot.Idled:Connect(function()
  1172.     game:GetService("VirtualUser"):CaptureController();
  1173.     game:GetService("VirtualUser"):ClickButton2(Vector2.new());
  1174. end);
  1175.  
  1176. function Run(User, Message)
  1177.     if Register(User, Message, {"say"}) then
  1178.         local String, Arg1, Arg2 = GetArguments(Message, 3);
  1179.         if String ~= nil then
  1180.             String = (function()
  1181.                 if string.lower(String) == "last" then
  1182.                     return Directory.Utility.LastMessage
  1183.                 elseif string.lower(String) == "frames" or string.lower(String) == "fps" then
  1184.                     return Form("Raider-%s's fps is %.2f", tostring(BotNumber), Directory.Utility.Frames.Value)
  1185.                 elseif string.lower(String) == "ping" or string.lower(String) == "ms" then
  1186.                     return Form("Raider-%s's ping is %.2f", tostring(BotNumber), math.ceil(game:GetService("Stats").Network.ServerStatsItem["Data Ping"]:GetValue()))
  1187.                 elseif string.lower(String) == "identity" or string.lower(String) == "id" then
  1188.                     return Form("Raider-%s \"%s\"", tostring(BotNumber), Bot.Name)
  1189.                 elseif string.lower(String) == "random" or string.lower(String) == "stuff" or string.lower(String) == "rs" then
  1190.                     local randomSentences = shared["raider/dictionary"]["config/dictionary"]["setup/randomsentences"]
  1191.                     return randomSentences[math.random(1, #randomSentences)]
  1192.                 elseif string.lower(String) == "whitelist" or string.lower(String) == "wl" then
  1193.                     if Arg1 ~= nil then
  1194.                         local displayName = FixSelectedUser(Arg1, User).DisplayName
  1195.                         local whitelisted = shared["raider/dictionary"]["config/dictionary"]["setup/whitelisted"][FixSelectedUser(Arg1, User).UserId] or shared["raider/dictionary"]["config/dictionary"]["setup/whitelisted"].Everyone
  1196.                         return Form("Whitelist level of \"%s\" is \"%s\"", displayName, whitelisted)
  1197.                     end
  1198.                 elseif string.lower(String) == "token" then
  1199.                     return TryToken(Arg1 or "################################", Arg2 or "abcdefghijklmnopqrstuvwxyz")
  1200.                 elseif string.lower(String) == "bots" then
  1201.                     if string.lower(Arg1) == "online" then
  1202.                         local onlineBots = GetOnlineBots(true)
  1203.                         local v0 = ""
  1204.                         for v1, v2 in pairs(onlineBots) do
  1205.                             v0 ..= ((Arg2 ~= nil) and (string.lower(Arg2) == "id") and table.find(shared["raider/dictionary"]["config/dictionary"]["setup/alts"], v2.UserId or ((string.lower(Arg2) == "disp") and v2.DisplayName))) or (v2.Name .. ", ")
  1206.                         end
  1207.                         delay(0.5, function()
  1208.                             Say(string.sub(v0, 0, #v0 - 2))
  1209.                         end)
  1210.                     elseif string.lower(String) == "offline" then
  1211.                         local v0 = {}
  1212.                         local v1 = ""
  1213.                         for v2, v3 in pairs(shared["raider/dictionary"]["config/dictionary"]["setup/alts"]) do
  1214.                             if GetUserBy(v3) == nil then
  1215.                                 table.insert(v0, v3)
  1216.                             end
  1217.                         end
  1218.                         for v4, v5 in pairs(v0) do
  1219.                             v1 ..= Form("%s, ", ((Arg2 ~= nil) and (string.lower(Arg2) == "id") and table.find(shared["raider/dictionary"]["config/dictionary"]["setup/alts"], v5)) or v5)
  1220.                         end
  1221.                         delay(0.5, function()
  1222.                             Say(string.sub(v1, 0, #v1 - 2))
  1223.                         end)
  1224.                     end
  1225.                 elseif string.lower(String) == "lyric" then
  1226.                     return shared["raider/dictionary"]["config/dictionary"]["setup/songlyrics"][Arg1][tonumber(Arg2)].Lyric
  1227.                 elseif string.lower(String) == "solve" then
  1228.                     if Arg1 ~= nil then
  1229.                         return tostring(loadstring("return " .. Arg1)())
  1230.                     end
  1231.                 end
  1232.                 return String
  1233.             end)();
  1234.             if Arg1 ~= nil and Or(string.lower(Arg1), {"yes", "true", "1"}) then
  1235.                 task.wait(GetBotOrder()-1/10*((Arg2 ~= nil and typeof(tonumber(Arg2)) == "number" and tonumber(Arg2)) or 0.2));
  1236.             end;
  1237.             if typeof(String) == "string" and Or(string.lower(String), {"cmds", "cmd", "commands", "command"}) then
  1238.                 --! closest bot says cmd
  1239.                 local Commands = "";
  1240.                 local function FormatArray(Types, IncludeQuotes)
  1241.                     local Results = "{ ";
  1242.                     for Int, Type in pairs(Types) do
  1243.                         Results ..= (IncludeQuotes == true and "\"" or "")..Type..(IncludeQuotes == true and "\", " or ", ");
  1244.                     end;
  1245.                     return string.sub(Results, 0, #Results-2).." }";
  1246.                 end;
  1247.                 if Arg1 == nil then
  1248.                     --! after 5 lines let another bot say the other 5 lines (for OnlineBots & GetBotOrder()*Line?)
  1249.                     --! if not enough bots then the chat will have cooldown, (then print?)
  1250.                     --! split message by \n and let bot say
  1251.                     for Int1 = 1, #shared["raider/dictionary"]["config/dictionary"]["general/commands"], 1 do
  1252.                         local Command = shared["raider/dictionary"]["config/dictionary"]["general/commands"][Int1];
  1253.                         Commands ..= Form("%s\n    %s\n", table.concat(Command.Aliases, ", "), Form("\"%s\"", Command.Description));
  1254.                         for Int2, Value in pairs(Command.Arguments) do
  1255.                             if Int2 == 4 then
  1256.                                 Commands ..= "    ...\n";
  1257.                                 break;
  1258.                             end;
  1259.                             Commands ..= Form("    %s%s\n", table.concat(Value.Aliases, ", "), (Value.Expects ~= nil and Value.Expects[1] == "__aliases") and " : "..FormatArray(Value.Aliases, true) or " : "..FormatArray((Value.Types ~= nil and Value.Types or Value.Expects), Value.Types == nil));
  1260.                         end;
  1261.                     end;
  1262.                     print("\n"..Commands);
  1263.                 else --! lookat all closest doesnt work
  1264.                     for Int1 = 1, #shared["raider/dictionary"]["config/dictionary"]["general/commands"], 1 do
  1265.                         local Found = TableFind(string.split(string.lower(table.concat(shared["raider/dictionary"]["config/dictionary"]["general/commands"][Int1].Aliases, "/")), "/"), Arg1, "Value");
  1266.                         if Found == true then
  1267.                             print("found comand");
  1268.                             local Command = shared["raider/dictionary"]["config/dictionary"]["general/commands"][Int1];
  1269.                             local Tabs = 0;
  1270.                             Commands = Form("%s\n    %s\n", table.concat(Command.Aliases, ", "), Form("\"%s\"", Command.Description));
  1271.                             local Loop = nil Loop = function(Table)
  1272.                                 Tabs += 1;
  1273.                                 for Int, Value in pairs(Table) do -- table.concat = nil;
  1274.                                     Commands ..= Form("%s%s%s\n", table.concat(table.create(Tabs, "    ")), table.concat(Value.Aliases, ", "), " : "..FormatArray((Value.Types ~= nil and Value.Types or Value.Expects), Value.Types == nil));
  1275.                                     if typeof(tonumber(Int)) == "number" then
  1276.                                         Loop(Value);
  1277.                                         Tabs -= 1;
  1278.                                     end;
  1279.                                 end;
  1280.                             end;
  1281.                             Loop(Command.Arguments);
  1282.                             print("\n"..Commands);
  1283.                             break;
  1284.                         end;
  1285.                     end;
  1286.                 end;
  1287.             else
  1288.                 if typeof(String) == "function" then
  1289.                     String();
  1290.                 else
  1291.                     Say(String);
  1292.                 end;
  1293.             end;
  1294.         end;
  1295.     elseif Register(User, Message, {"spam"}) then
  1296.         local String, Messages, TimeForEachMsg = GetArguments(Message, 3);
  1297.         Directory.Commands.Spam.Running = not (string.lower(String) == "stop"); --? redo this
  1298.         if string.lower(String) ~= "stop" then
  1299.             for Int = 1, (typeof(tonumber(Messages)) == "number" and tonumber(Messages)) or 5, 1 do
  1300.                 if Directory.Commands.Spam.Running == false then break end;
  1301.                 Say((string.lower(String) == "last" and Directory.Utility.LastMessage) or
  1302.                     ((string.lower(String) == "frames" or string.lower(String) == "fps") and "Fps: "..tostring(Directory.Utility.Frames.Value)) or
  1303.                     ((string.lower(String) == "ping" or string.lower(String) == "ms") and "Ping: "..tostring(math.ceil(game:GetService("Stats").Network.ServerStatsItem["Data Ping"]:GetValue()))) or
  1304.                     ((string.lower(String) == "random" or string.lower(String) == "rs") and shared["raider/dictionary"]["config/dictionary"]["setup/randomsentences"][math.random(1, #shared["raider/dictionary"]["config/dictionary"]["setup/randomsentences"])]) or
  1305.                     (string.lower(String) == "token" and TryToken("################################", "abcdefghijklmnopqrstuvwxyz")) or String);
  1306.                 task.wait((typeof(tonumber(TimeForEachMsg)) == "number" and tonumber(TimeForEachMsg)) or 0.5);
  1307.             end;
  1308.         end;
  1309.     elseif Register(User, Message, {"mock", "swis", "repeat"}) then --! ! stopping doesnt work
  1310.         local SelectedBot, SelectedUser = GetArguments(Message, 2)
  1311.         local lower = SelectedUser and string.lower(SelectedUser)
  1312.         if lower == "stop" then
  1313.             Directory.Commands.Mock.User = nil
  1314.         elseif lower == "all" then
  1315.             Directory.Commands.Mock.User = "all"
  1316.         else
  1317.             SelectedUser = FixSelectedUser(SelectedUser, User)
  1318.             if SelectedUser and SelectedUser.Character then
  1319.                 if IsBot(SelectedBot, User) and typeof(SelectedUser) == "Instance" then
  1320.                     Directory.Commands.Mock.User = SelectedUser
  1321.                 end
  1322.             end
  1323.         end
  1324.     elseif Register(User, Message, {"sing", "lyrics"}) then
  1325.         local Lyric = GetArguments(Message, 1);
  1326.         Directory.Commands.Sing.Running = not (string.lower(Lyric) == "stop");
  1327.         if typeof(shared["raider/dictionary"]["config/dictionary"]["setup/songlyrics"][Lyric]) == "table" then
  1328.             local Stopped = false;
  1329.             for Int = 1, #shared["raider/dictionary"]["config/dictionary"]["setup/songlyrics"][Lyric], 1 do
  1330.                 coroutine.resume(coroutine.create(function()
  1331.                     task.wait(shared["raider/dictionary"]["config/dictionary"]["setup/songlyrics"][Lyric][Int].task.wait);
  1332.                     if Directory.Commands.Sing.Running == true and Stopped == false then
  1333.                         Say(shared["raider/dictionary"]["config/dictionary"]["setup/songlyrics"][Lyric][Int].Lyric);
  1334.                         if #shared["raider/dictionary"]["config/dictionary"]["setup/songlyrics"][Lyric] == Int then
  1335.                             Directory.Commands.Sing.Running = false;
  1336.                         end;
  1337.                     else
  1338.                         Stopped = true;
  1339.                     end;
  1340.                 end));
  1341.             end;
  1342.         end;
  1343.     elseif Register(User, Message, {"reply", "chatbot"}) then
  1344.         local SelectedBot, Toggle, ChatDistance = GetArguments(Message, 3);
  1345.         if IsBot(SelectedBot, User) then
  1346.             Say(Or(string.lower(Toggle), {"yes", "true", "1"}) and Directory.Commands.Reply.Running == false and "You can now chat with me." or "Chatting is now disabled.");
  1347.             Directory.Commands.Reply.Running = Or(string.lower(Toggle), {"yes", "true", "1"});
  1348.             Directory.Commands.Reply.ChatDistance = (typeof(tonumber(ChatDistance)) == "number" and (tonumber(ChatDistance) > 0 and tonumber(ChatDistance))) or 15;
  1349.         end;
  1350.     elseif Register(User, Message, {"freeze"}) then --! add perm level
  1351.         local SelectedBot, Arg2 = GetArguments(Message, 2);
  1352.         Bot.Character.HumanoidRootPart.Anchored = IsBot(SelectedBot, User) and string.lower(Arg2) ~= "stop";
  1353.     elseif Register(User, Message, {"teleport", "tp"}) then
  1354.         local SelectedBot, SelectedUser = GetArguments(Message, 2);
  1355.         SelectedUser = FixSelectedUser(SelectedUser, User);
  1356.         if IsBot(SelectedBot, User) then
  1357.             if SelectedUser ~= nil and SelectedUser.Character ~= nil then
  1358.                 if SelectedUser.Character and SelectedUser.Character:FindFirstChild("HumanoidRootPart") then
  1359.                     Bot.Character.HumanoidRootPart.CFrame = SelectedUser.Character.HumanoidRootPart.CFrame;
  1360.                 end;
  1361.             end;
  1362.         end;
  1363.     elseif Register(User, Message, {"advertise", "ad"}) then
  1364.         local SelectedBot, SelectedUser, String = GetArguments(Message, 3);
  1365.         if IsBot(SelectedBot, User) then
  1366.             if SelectedUser ~= nil and string.lower(SelectedUser) == "stop" then
  1367.                 Directory.Commands.Advertise.Running = false;
  1368.             else
  1369.                 Directory.Commands.Advertise.Running = false;
  1370.                 SelectedUser = FixSelectedUser(SelectedUser, User);
  1371.                 task.wait(0.1);
  1372.                 Directory.Commands.Advertise.Running = true;
  1373.                 if SelectedUser == nil or SelectedUser.Character == nil then
  1374.                     coroutine.resume(coroutine.create(function()
  1375.                         while Directory.Commands.Advertise.Running == true do
  1376.                             for Int, User in pairs(RandomizeTable(GetUsersExcludingBots())) do
  1377.                                 if Directory.Commands.Advertise.Running ~= true then break end;
  1378.                                 local Signal = nil Signal = RunService.Heartbeat:Connect(function()
  1379.                                     if (Bot.Character ~= nil and Bot.Character:FindFirstChild("HumanoidRootPart") ~= nil) and (User.Character ~= nil and User.Character:FindFirstChild("HumanoidRootPart") ~= nil) then
  1380.                                         Bot.Character.HumanoidRootPart.CFrame = User.Character.HumanoidRootPart.CFrame;
  1381.                                     end;
  1382.                                     if Directory.Commands.Advertise.Running ~= true then
  1383.                                         Directory.Functions.Disconnect(Signal);
  1384.                                     end;
  1385.                                 end);
  1386.                                 task.wait(0.1);
  1387.                                 Say(String == nil and Form(shared["raider/dictionary"]["config/dictionary"]["setup/adspamlines"][math.random(1, #shared["raider/dictionary"]["config/dictionary"]["setup/adspamlines"])], User.DisplayName) or String);
  1388.                                 task.wait((SelectedUser ~= nil and tonumber(SelectedUser)) or 1.9);
  1389.                                 Directory.Functions.Disconnect(Signal);
  1390.                             end;
  1391.                             RunService.Heartbeat:Wait();
  1392.                         end;
  1393.                     end));
  1394.                 else
  1395.                     local Signal = nil;
  1396.                     Signal = RunService.Heartbeat:Connect(function()
  1397.                         if Directory.Commands.Advertise.Running == false then Directory.Functions.Disconnect(Signal)end;
  1398.                         if (Bot.Character ~= nil and Bot.Character:FindFirstChild("HumanoidRootPart") ~= nil) and (SelectedUser.Character ~= nil and SelectedUser.Character:FindFirstChild("HumanoidRootPart") ~= nil) then
  1399.                             Bot.Character.HumanoidRootPart.CFrame = SelectedUser.Character.HumanoidRootPart.CFrame;
  1400.                         end;
  1401.                     end);
  1402.                 end;
  1403.             end;
  1404.         end;
  1405.     elseif Register(User, Message, {"line"}) then
  1406.         local SelectedUser, PerRow, SpacingX, SpacingZ = GetArguments(Message, 4);
  1407.         SelectedUser = FixSelectedUser(SelectedUser, User);
  1408.         PerRow, SpacingX, SpacingZ = PerRow and tonumber(PerRow) or (OnlineBots < 5 and OnlineBots or 5), tonumber(SpacingX) or 4, tonumber(SpacingZ) or 3;
  1409.         if SelectedUser ~= nil and SelectedUser.Character ~= nil then
  1410.             local LastCFrame = SelectedUser.Character.HumanoidRootPart.CFrame*CFrame.new(-(SpacingX*(PerRow/2))-(SpacingX/2), 0, SpacingZ);
  1411.             local MathZ = math.floor((GetBotOrder()+((GetBotOrder()-1)/PerRow))/(PerRow+1)); --? ?
  1412.             local MathX = (GetBotOrder()*SpacingX-((MathZ*PerRow)*SpacingX));
  1413.             LastCFrame = LastCFrame*CFrame.new(Vector3.new(MathX, 0, MathZ*SpacingZ));
  1414.             if Bot.Character == nil or Bot.Character:FindFirstChild("HumanoidRootPart") == nil then
  1415.                 while true do
  1416.                     if Bot.Character ~= nil and Bot.Character:FindFirstChild("HumanoidRootPart") ~= nil then
  1417.                         task.wait(1);
  1418.                         break;
  1419.                     end;
  1420.                     task.wait();
  1421.                 end;
  1422.             end;
  1423.             Bot.Character.HumanoidRootPart.CFrame = LastCFrame;
  1424.         end;
  1425.     elseif Register(User, Message, {"orbit"}) then
  1426.         local SelectedBot, SelectedUser, Radius, Arg4, Arg5, Arg6, Arg7 = GetArguments(Message, 7);
  1427.         local Speed = 0;
  1428.         if IsBot(SelectedBot, User) then
  1429.             if SelectedUser ~= nil and string.lower(SelectedUser) == "stop" then
  1430.                 if Directory.Commands.Orbit.Service ~= nil and Directory.Commands.Orbit.Service.Connected == true then
  1431.                     Directory.Functions.Disconnect(Directory.Commands.Orbit.Service);
  1432.                     Directory.Commands.Orbit.Part:Remove();
  1433.                     workspace.CurrentCamera.CameraSubject = Bot.Character.Humanoid;
  1434.                     workspace.Gravity = Directory.Utility.DefaultGravity;
  1435.                 end;
  1436.             elseif SelectedUser ~= nil and string.lower(SelectedUser) == "stay" then
  1437.                 Directory.Commands.Orbit.Following = false;
  1438.             else
  1439.                 SelectedUser = FixSelectedUser(SelectedUser, User);
  1440.                 if SelectedUser ~= nil and SelectedUser.Character ~= nil then
  1441.                     if Directory.Commands.Orbit.Service ~= nil and Directory.Commands.Orbit.Service.Connected == true then
  1442.                         Directory.Functions.Disconnect(Directory.Commands.Orbit.Service);
  1443.                         Directory.Commands.Orbit.Part:Remove();
  1444.                         workspace.CurrentCamera.CameraSubject = Bot.Character.Humanoid;
  1445.                     end;
  1446.                     task.wait(0.1);
  1447.                     Directory.Commands.Orbit.Part = CreateTempPart();
  1448.                     local BodyThrust = nil;
  1449.                     if Arg4 ~= nil and string.lower(Arg4) == "m1" then
  1450.                         BodyThrust = Instance.new("BodyThrust", Directory.Commands.Orbit.Part);
  1451.                         BodyThrust.Force = Vector3.new((tonumber(Arg5) or 1)/1000, (tonumber(Arg6) or 0.5)/1000, (tonumber(Arg7) or 0.4)/1000);
  1452.                         Directory.Commands.Orbit.Part.Anchored = false;
  1453.                     end; --> orbit all me 20 m1 5 5 5
  1454.                     Directory.Commands.Orbit.Following = true;
  1455.                     Directory.Commands.Orbit.Tick = tick();
  1456.                     Directory.Commands.Orbit.Service = RunService.Heartbeat:Connect(function(DeltaTime)
  1457.                         if (SelectedUser.Character ~= nil and SelectedUser.Character:FindFirstChild("HumanoidRootPart") ~= nil) and (Bot.Character ~= nil and Bot.Character:FindFirstChild("Humanoid") ~= nil and Bot.Character:FindFirstChild("HumanoidRootPart") ~= nil) and Directory.Commands.Orbit.Part ~= nil then
  1458.                             if (Arg4 ~= nil and string.lower(Arg4) == "m1") and BodyThrust ~= nil then
  1459.                                 BodyThrust.Location = Directory.Commands.Orbit.Part.Position;
  1460.                             else
  1461.                                 Speed += Speed < ((Arg4 ~= nil and typeof(tonumber(Arg4)) == "number" and tonumber(Arg4)) or 60) and 0.1 or 0;
  1462.                             end;
  1463.                             if Directory.Commands.Orbit.Following == true then
  1464.                                 if Arg4 ~= nil and (string.lower(Arg4) == "m2") then
  1465.                                     Speed = tonumber(Arg5) or 60;
  1466.                                     -- orbit all me 10 m2 <bot_speed> <part_speed> <part_radius>
  1467.                                     -- orbit all me 10 m1 <speed_x> <speed_y> <speed_z>
  1468.                                     Directory.Commands.Orbit.Part.CFrame = SelectedUser.Character.HumanoidRootPart.CFrame*CFrame.Angles(0, math.rad((tick()-Directory.Commands.Orbit.Tick)*((typeof(tonumber(Arg6)) == "number" and tonumber(Arg6)) or Speed)), 0)*CFrame.new(0, 0, ((typeof(tonumber(Arg7)) == "number" and tonumber(Arg7)) or (tonumber(Radius/2))));
  1469.                                 else   
  1470.                                     Directory.Commands.Orbit.Part.Position = SelectedUser.Character.HumanoidRootPart.Position;
  1471.                                 end;
  1472.                             end;
  1473.                             workspace.Gravity = 0;
  1474.                             Bot.Character.Humanoid.Sit = false; --! orbit all stay with m1 goes down
  1475.                             Bot.Character.HumanoidRootPart.CFrame = Directory.Commands.Orbit.Part.CFrame*CFrame.Angles(0, math.rad((360/(OnlineBots or 1)*GetBotOrder())+((tick()-Directory.Commands.Orbit.Tick)*(typeof(tonumber(Arg5)) == "number" and tonumber(Arg5) or Speed))), 0)*CFrame.new(0, 0, tonumber(Radius) or 10);
  1476.                             workspace.CurrentCamera.CameraSubject = Directory.Commands.Orbit.Part;
  1477.                         end;
  1478.                     end);
  1479.                 end;
  1480.             end;
  1481.         end;
  1482.     elseif Register(User, Message, {"spin"}) then
  1483.         local SelectedBot, Speed = GetArguments(Message, 2);
  1484.         if IsBot(SelectedBot, User) then
  1485.             Directory.Functions.Disconnect(Directory.Commands.Spin.Service);
  1486.             if Directory.Commands.Spin.Thrust ~= nil then
  1487.                 Directory.Commands.Spin.Thrust:Remove();
  1488.             end;
  1489.             if Speed == nil or (typeof(tonumber(Speed)) == "number" or string.lower(Speed) ~= "stop") then
  1490.                 Speed = Speed ~= nil and Speed*10 or 600;
  1491.                 delay(0.1, function()
  1492.                     Directory.Commands.Spin.Thrust = Instance.new("BodyThrust", Bot.Character.HumanoidRootPart);
  1493.                     Directory.Commands.Spin.Thrust.Force = Vector3.new(Speed, 0, 0);
  1494.                     Directory.Commands.Spin.Thrust.Location = Bot.Character.HumanoidRootPart.Position;
  1495.                 end);
  1496.                 Directory.Commands.Spin.Service = RunService.Stepped:Connect(function()
  1497.                     if Bot.Character ~= nil and Bot.Character:FindFirstChild("Head") ~= nil then
  1498.                         Bot.Character.Head.CanCollide = false;
  1499.                         Bot.Character.HumanoidRootPart.CanCollide = false;
  1500.                         if Bot.Character.Humanoid.RigType == Enum.HumanoidRigType.R15 then
  1501.                             Bot.Character.UpperTorso.CanCollide = false;
  1502.                             Bot.Character.LowerTorso.CanCollide = false;
  1503.                         else
  1504.                             Bot.Character["Left Leg"].CanCollide = false;
  1505.                             Bot.Character["Right Leg"].CanCollide = false;
  1506.                         end;
  1507.                     end;
  1508.                 end);
  1509.             end;
  1510.         end;
  1511.     elseif Register(User, Message, {"stack"}) then
  1512.         local SelectedBot, SelectedUser, Sitting, ZOffset, YOffset = GetArguments(Message, 5);
  1513.         if IsBot(SelectedBot, User) then
  1514.             if string.lower(SelectedUser) == "stop" then
  1515.                 local LastPosition = Bot.Character.HumanoidRootPart.CFrame;
  1516.                 Directory.Functions.Disconnect(Directory.Commands.Stack.Service);
  1517.                 task.wait(1);
  1518.                 Bot.Character.Humanoid.Sit = false;
  1519.                 Bot.Character.HumanoidRootPart.CFrame = LastPosition;
  1520.                 workspace.Gravity = Directory.Utility.DefaultGravity;
  1521.             else
  1522.                 SelectedUser = FixSelectedUser(SelectedUser, User);
  1523.                 if SelectedUser ~= nil and SelectedUser.Character ~= nil then
  1524.                     Directory.Functions.Disconnect(Directory.Commands.Stack.Service);
  1525.                     task.wait(0.1);
  1526.                     Directory.Commands.Stack.Service = RunService.Heartbeat:Connect(function()
  1527.                         if Bot.Character ~= nil and Bot.Character:FindFirstChild("Humanoid") ~= nil and (SelectedUser.Character ~= nil and SelectedUser.Character:FindFirstChild("HumanoidRootPart") ~= nil) then
  1528.                             Bot.Character.Humanoid.Sit = Sitting == nil or Or(string.lower(Sitting), {"yes", "true", "1"});
  1529.                             Bot.Character.HumanoidRootPart.CFrame = ((GetBotOrder() == 1 and SelectedUser.Character.HumanoidRootPart.CFrame) or GetOnlineBots(true)[GetBotOrder()-1].Character.HumanoidRootPart.CFrame)*CFrame.new(0, tonumber(YOffset) or 1.1, tonumber(ZOffset) or 1);
  1530.                             workspace.Gravity = 0;
  1531.                         end;
  1532.                     end);
  1533.                 end;
  1534.             end;
  1535.         end;
  1536.     elseif Register(User, Message, {"walk"}) then --! change lrfb
  1537.         local SelectedBot, Direction, Studs = GetArguments(Message, 3);
  1538.         if IsBot(SelectedBot, User) then
  1539.             Direction, Studs = string.lower(Direction) or "f", Studs or 10;
  1540.             Studs = Or(Direction, {"left", "l", "forward", "f"}) and -Studs or Or(Direction, {"right", "r", "backward", "b"}) and Studs;
  1541.             local Part = CreateTempPart{
  1542.                 ["CFrame"] = Bot.Character.HumanoidRootPart.CFrame*CFrame.new(Vector3.new(Or(Direction, {"left", "l", "right", "r"}) and Studs or 0, 0, Or(Direction, {"forward", "f", "backward", "b"}) and Studs or 0));
  1543.             };
  1544.             Bot.Character.Humanoid:MoveTo(Part.Position, Part);
  1545.             Bot.Character.Humanoid.MoveToFinished:Wait();
  1546.             Part:Remove();
  1547.         end;
  1548.     elseif Register(User, Message, {"fling"}) then
  1549.         local SelectedBot, SelectedUser, Method, Time = GetArguments(Message, 4);
  1550.         SelectedUser = FixSelectedUser(SelectedUser, User);
  1551.         Method, Time = (Method ~= nil and typeof(tonumber(Method)) == "number" and Method) or 2, (Time ~= nil and typeof(tonumber(Time)) == "number" and Time) or 5;
  1552.         if IsBot(SelectedBot, User) then
  1553.             local OriginalPos = Bot.Character.HumanoidRootPart.CFrame;
  1554.             if tonumber(Method) == 1 and Bot.Character.Humanoid.RigType == Enum.HumanoidRigType.R6 then
  1555.                 local Part = CreateTempPart{
  1556.                     ["Parent"] = Bot.Character,
  1557.                     ["Position"] = Bot.Character.Head.Position,
  1558.                 };
  1559.                 _G.ReanimationType = "PDeath";
  1560.                 _G.Velocity = Vector3.new(36, 0, 0);
  1561.                 _G.FlingBlock = true;
  1562.                 _G.FlingBlockTransparency = 0;
  1563.                 _G.HighlightFlingBlock = false;
  1564.                 _G.FlingBlockPosition = Part.Name;
  1565.                 xpcall(function()
  1566.                     loadstring(game:HttpGet("https://raw.githubusercontent.com/GelatekWasTaken/Reanimation.lua/main/Main/Main.lua"))();
  1567.                 end, warn);
  1568.                 task.wait(1);
  1569.                 local Signal = nil;
  1570.                 Signal = RunService.Heartbeat:Connect(function()
  1571.                     xpcall(function()
  1572.                         Bot.Character.Reanimate[Part.Name].Position = SelectedUser.Character.HumanoidRootPart.Position;
  1573.                     end, warn);
  1574.                 end);
  1575.                 delay(tonumber(Time), function()
  1576.                     Directory.Functions.Disconnect(Signal);
  1577.                     Bot.Character:Remove();
  1578.                     GetPlayerPart(Bot, "HumanoidRootPart", true, true).CFrame = OriginalPos;
  1579.                 end);
  1580.             elseif tonumber(Method) == 2 then
  1581.                 local OriginalPos = Bot.Character.HumanoidRootPart.CFrame;
  1582.                 local Thrust = Instance.new("BodyThrust", Bot.Character.Humanoid.RigType == Enum.HumanoidRigType.R6 and Bot.Character.Torso or Bot.Character.UpperTorso);
  1583.                 local Signal = nil;
  1584.                 Signal = RunService.Heartbeat:Connect(function()
  1585.                     xpcall(function()
  1586.                         if Bot.Character.Humanoid.RigType == Enum.HumanoidRigType.R6 then
  1587.                             Bot.Character.HumanoidRootPart.CFrame = SelectedUser.Character.HumanoidRootPart.CFrame+SelectedUser.Character.HumanoidRootPart.Velocity*game:GetService("Stats").Network.ServerStatsItem["Data Ping"]:GetValue()/150;
  1588.                         else
  1589.                             Bot.Character.HumanoidRootPart.CFrame = SelectedUser.Character.HumanoidRootPart.CFrame*CFrame.new(0, 0, 0.3)+SelectedUser.Character.HumanoidRootPart.Velocity*game:GetService("Stats").Network.ServerStatsItem["Data Ping"]:GetValue()/150;
  1590.                         end;
  1591.                         Bot.Character.Head.CanCollide = false;
  1592.                         Bot.Character.HumanoidRootPart.CanCollide = false;
  1593.                         (Bot.Character.Humanoid.RigType == Enum.HumanoidRigType.R6 and Bot.Character.Torso or Bot.Character.UpperTorso).CanCollide = false;
  1594.                         Bot.Character.Humanoid.Sit = false;
  1595.                     end, warn);
  1596.                 end);
  1597.                 Thrust.Force = Vector3.new(2100, 0, 0);
  1598.                 Thrust.Location = Vector3.new(0, 0, 2100);
  1599.                 delay(tonumber(Time), function()
  1600.                     Directory.Functions.Disconnect(Signal);
  1601.                     Bot.Character.Humanoid.Health = 0;
  1602.                     GetPlayerPart(Bot, "HumanoidRootPart", true, true).CFrame = OriginalPos;
  1603.                     GetPlayerPart(Bot, "HumanoidRootPart", true, true).Velocity = Vector3.new(0, 0, 0);
  1604.                 end);
  1605.             end;
  1606.         end;
  1607.     elseif Register(User, Message, {"antifling"}) then
  1608.         local Toggle = GetArguments(Message, 1);
  1609.         Directory.Commands.Antifling.Running = Or(string.lower(Toggle), {"on", "yes", "true", "1"});
  1610.     elseif Register(User, Message, {"rocket"}) then
  1611.         local SelectedBot, SelectedUser = GetArguments(Message, 2);
  1612.         SelectedUser = FixSelectedUser(SelectedUser, User);
  1613.         if IsBot(SelectedBot, User) then
  1614.             if SelectedUser ~= nil then
  1615.                 Bot.Character.HumanoidRootPart.CFrame = SelectedUser.Character.HumanoidRootPart.CFrame;
  1616.             end;
  1617.             if Directory.Commands.Spin.Thrust ~= nil then
  1618.                 Directory.Commands.Spin.Thrust:Remove();
  1619.                 Directory.Commands.Spin.Service:Disconnect();
  1620.             end;
  1621.             delay(0.1, function()
  1622.                 Directory.Commands.Spin.Thrust = Instance.new("BodyThrust", Bot.Character.HumanoidRootPart);
  1623.                 Directory.Commands.Spin.Thrust.Force = Vector3.new(4000, 0, 0);
  1624.                 Directory.Commands.Spin.Thrust.Location = Bot.Character.HumanoidRootPart.Position;
  1625.             end);
  1626.             delay(1.1, function()
  1627.                 Directory.Commands.Spin.Thrust:Remove();
  1628.                 Bot.Character.Humanoid.Health = 0;
  1629.                 task.wait(0.2);
  1630.                 Directory.Commands.Spin.Service:Disconnect();
  1631.                 task.wait(0.4);
  1632.                 workspace.Gravity = Directory.Utility.DefaultGravity;
  1633.             end);
  1634.             Directory.Commands.Spin.Service = RunService.Stepped:Connect(function()
  1635.                 workspace.Gravity = -(workspace.Gravity*2.2);
  1636.                 Bot.Character.Humanoid.Jump = true;
  1637.                 Bot.Character.Head.CanCollide = false;
  1638.                 Bot.Character.HumanoidRootPart.CanCollide = false;
  1639.                 if Bot.Character.Humanoid.RigType == Enum.HumanoidRigType.R15 then
  1640.                     Bot.Character.UpperTorso.CanCollide = false;
  1641.                     Bot.Character.LowerTorso.CanCollide = false;
  1642.                 else
  1643.                     Bot.Character["Left Leg"].CanCollide = false;
  1644.                     Bot.Character["Right Leg"].CanCollide = false;
  1645.                 end;
  1646.             end);
  1647.         end;
  1648.     elseif Register(User, Message, {"lookat", "stare"}) then
  1649.         if HasPermission(User.UserId, "A") then
  1650.             local SelectedBot, SelectedUser = GetArguments(Message, 2);
  1651.             if IsBot(SelectedBot, User) then
  1652.                 local lower = string.lower(SelectedUser)
  1653.                 if lower == "stop" then
  1654.                     Directory.Commands.Lookat.User = nil -- or false, your choice
  1655.                 elseif lower == "c" then
  1656.                     Directory.Commands.Lookat.User = "c"
  1657.                 else
  1658.                     Directory.Commands.Lookat.User = FixSelectedUser(SelectedUser, User) or Directory.Commands.Lookat.User
  1659.                 end
  1660.  
  1661.             end;
  1662.         end;
  1663.     elseif Register(User, Message, {"annoy"}) then
  1664.         local SelectedBot, SelectedUser, Radius, WaitDelay = GetArguments(Message, 4);
  1665.         Radius = typeof(tonumber(Radius)) == "number" and Radius or 10;
  1666.         WaitDelay = typeof(tonumber(WaitDelay)) == "number" and WaitDelay or 0.1;
  1667.         if IsBot(SelectedBot, User) then
  1668.             if string.lower(SelectedUser) == "stop" then --! ? == stop?
  1669.                 Directory.Commands.Annoy.Running = false;
  1670.             end;
  1671.             SelectedUser = FixSelectedUser(SelectedUser, User);
  1672.             if SelectedUser ~= nil and SelectedUser.Character ~= nil then
  1673.                 Directory.Commands.Annoy.Running = false;
  1674.                 task.wait(0.1);
  1675.                 Directory.Commands.Annoy.Running = true;
  1676.                 Directory.Commands.Annoy.Service = RunService.Stepped:Connect(function()
  1677.                     workspace.Gravity = 0;
  1678.                     Bot.Character.Head.CanCollide = false;
  1679.                     Bot.Character.HumanoidRootPart.CanCollide = false;
  1680.                     if Bot.Character.Humanoid.RigType == Enum.HumanoidRigType.R15 then
  1681.                         Bot.Character.UpperTorso.CanCollide = false;
  1682.                         Bot.Character.LowerTorso.CanCollide = false;
  1683.                     else
  1684.                         Bot.Character["Left Leg"].CanCollide = false;
  1685.                         Bot.Character["Right Leg"].CanCollide = false;
  1686.                     end;
  1687.                 end);
  1688.                 while Directory.Commands.Annoy.Running == true do
  1689.                     Bot.Character.HumanoidRootPart.CFrame = CFrame.new(SelectedUser.Character.HumanoidRootPart.Position+Vector3.new(math.random(-Radius, Radius), math.random(-Radius, Radius), math.random(-Radius, Radius)), SelectedUser.Character.HumanoidRootPart.Position);
  1690.                     task.wait(WaitDelay);
  1691.                 end;
  1692.                 Directory.Commands.Annoy.Service:Disconnect();
  1693.                 workspace.Gravity = Directory.Utility.DefaultGravity;
  1694.             end;
  1695.         end;
  1696.     elseif Register(User, Message, {"roam", "npc"}) then
  1697.         local SelectedBot, RandomJumps, MoveSize, MoveWaitMin, MoveWaitMax = GetArguments(Message, 5);
  1698.         MoveSize, MoveWaitMin, MoveWaitMax = MoveSize or 10, MoveWaitMin or 1, MoveWaitMax or 3;
  1699.         if IsBot(SelectedBot, User) then
  1700.             if string.lower(RandomJumps) == "stop" then
  1701.                 Directory.Commands.Roam.Running = false;
  1702.             else
  1703.                 Directory.Commands.Roam.Running = false
  1704.                 task.wait(0.1);
  1705.                 Directory.Commands.Roam.Running = true;
  1706.                 while Directory.Commands.Roam.Running == true do
  1707.                     task.wait(math.random(tonumber(MoveWaitMin), tonumber(MoveWaitMax)));
  1708.                     local MovePosX = math.random(1, 3) == 1 and MoveSize or math.random(1, 2) == 1 and -MoveSize or 0;
  1709.                     local MovePosZ = math.random(1, 3) == 1 and MoveSize or math.random(1, 2) == 1 and -MoveSize or 0;
  1710.                     if Or(string.lower(RandomJumps), {"yes", "true", "1"}) then
  1711.                         if math.random(1, 5) == 2 then
  1712.                             Bot.Character.Humanoid.Jump = true;
  1713.                         end;
  1714.                     end;
  1715.                     if string.lower(RandomJumps) == "tp" then
  1716.                         Bot.Character.HumanoidRootPart.CFrame *= CFrame.new(Vector3.new(MovePosX, 0, MovePosZ));
  1717.                     else
  1718.                         Bot.Character.Humanoid:MoveTo(Bot.Character.HumanoidRootPart.Position+Vector3.new(MovePosX, 0, MovePosZ));
  1719.                     end;
  1720.                 end;
  1721.             end;
  1722.         end;
  1723.     elseif Register(User, Message, {"pathfind", "path", "goto"}) then
  1724.         local SelectedBot, SelectedUser, Spacing = GetArguments(Message, 3);
  1725.         if IsBot(SelectedBot, User) then
  1726.             if string.lower(SelectedUser) == "stop" and Directory.Commands.Pathfind.Running == true and workspace.Camera:FindFirstChild(Directory.Commands.Pathfind.SessionId) ~= nil then
  1727.                 Directory.Commands.Pathfind.Running = false;
  1728.                 workspace.Camera[Directory.Commands.Pathfind.SessionId]:Remove();
  1729.             else
  1730.                 Directory.Commands.Pathfind.Running = true;
  1731.                 SelectedUser = FixSelectedUser(SelectedUser, User);
  1732.                 if SelectedUser ~= nil and SelectedUser.Character ~= nil then
  1733.                     Spacing = Spacing ~= nil and (typeof(tonumber(Spacing)) == "number" and Spacing) or 3;
  1734.                     if workspace.Camera:FindFirstChild(Directory.Commands.Pathfind.SessionId) ~= nil then
  1735.                         workspace.Camera:FindFirstChild(Directory.Commands.Pathfind.SessionId):Remove();
  1736.                     end;
  1737.                     local function Create(Position, Parent)
  1738.                         local Part = CreateTempPart{
  1739.                             ["CastShadow"] = false,
  1740.                             ["Color"] = Color3.fromRGB(255, 70, 80),
  1741.                             ["Material"] = Enum.Material.Neon,
  1742.                             ["Size"] = Vector3.new(0, 0, 0),
  1743.                             ["Position"] = Position,
  1744.                             ["Shape"] = Enum.PartType.Ball,
  1745.                         };
  1746.                         local Index = Instance.new("IntValue", Part);
  1747.                         Index.Name = "Index";
  1748.                         Index.Value = Parent.Index.Value+1;
  1749.  
  1750.                         Animate(Part, 0.4, Enum.EasingStyle.Sine, Enum.EasingDirection.Out, {
  1751.                             Transparency = 0.8,
  1752.                             Size = Vector3.new(1, 1, 1),
  1753.                         });
  1754.                         return Part;
  1755.                     end;
  1756.  
  1757.                     local Start = CreateTempPart{
  1758.                         ["Name"] = Directory.Commands.Pathfind.SessionId,
  1759.                         ["Color"] = Color3.fromRGB(255, 120, 60),
  1760.                         ["Material"] = Enum.Material.Neon,
  1761.                         ["Transparency"] = 0,
  1762.                         ["Size"] = Vector3.new(1.3, 1.3, 1.3),
  1763.                         ["Position"] = Bot.Character.HumanoidRootPart.Position,
  1764.                         ["Shape"] = Enum.PartType.Ball,
  1765.                     };
  1766.                     Instance.new("IntValue", Start).Name = "Index";
  1767.  
  1768.                     local Goal = SelectedUser.Character.HumanoidRootPart;
  1769.                     local Opened = {Start};
  1770.                     local Closed = {};
  1771.                     local OrderedLast = {};
  1772.                     local Directions = {Vector3.new(1, 0, 0), Vector3.new(-1, 0, 0), Vector3.new(1, 0, 1), Vector3.new(-1, 0, -1), Vector3.new(1, 0, -1), Vector3.new(-1, 0, 1), Vector3.new(0, 0, 1), Vector3.new(0, 0, -1),Vector3.new(1, 1, 0), Vector3.new(-1, -1, 0), Vector3.new(1, 1, 1), Vector3.new(-1, -1, -1), Vector3.new(1, 1, -1), Vector3.new(-1, -1, 1), Vector3.new(0, 1, 1), Vector3.new(0, -1, -1), Vector3.new(0, 1, 0), Vector3.new(0, -1, 0)};
  1773.                     local function Trace(Final)
  1774.                         local Current = Final
  1775.                         local LagTime = 0
  1776.                         while true do
  1777.                             LagTime += 1
  1778.                             if LagTime % 25 == 0 then
  1779.                                 LagTime = 0
  1780.                                 task.wait()
  1781.                             end
  1782.  
  1783.                             coroutine.resume(coroutine.create(function()
  1784.                                 local Me = Current
  1785.                                 Animate(Me, 0.4, Enum.EasingStyle.Back, Enum.EasingDirection.Out, {
  1786.                                     Transparency = 0,
  1787.                                     Size = Vector3.new(1.4, 1.4, 1.4),
  1788.                                     Position = Me.Position + Vector3.new(0, 0.6, 0),
  1789.                                 })
  1790.                                 task.wait(0.4)
  1791.                                 Animate(Me, 0.4, Enum.EasingStyle.Quad, Enum.EasingDirection.InOut, {
  1792.                                     Color = Color3.fromRGB(80, 255, 155),
  1793.                                     Size = Vector3.new(1, 1, 1),
  1794.                                     Position = Me.Position - Vector3.new(0, 0.6, 0),
  1795.                                 })
  1796.                             end))
  1797.  
  1798.                             OrderedLast[#OrderedLast + 1] = Current
  1799.  
  1800.                             -- Fixed: Check if Current is the Start part before trying to get parent
  1801.                             if Current == Start then
  1802.                                 break
  1803.                             end
  1804.  
  1805.                             Current = Current.Parent
  1806.  
  1807.                             -- Additional safety check in case Parent is nil
  1808.                             if not Current or not Current:IsA("BasePart") then
  1809.                                 break
  1810.                             end
  1811.                         end
  1812.                     end
  1813.                     local Final = nil;
  1814.                     local LagTime = 0;
  1815.                     repeat
  1816.                         LagTime += 1;
  1817.                         if LagTime%25 == 0 then
  1818.                             LagTime = 0;
  1819.                             task.wait();
  1820.                         end;
  1821.                         local Lowest = math.huge;
  1822.                         local Best = {};
  1823.                         for Int, Node in ipairs(Opened) do
  1824.                             local Distance = (Node.Position-Goal.Position).Magnitude*Spacing;
  1825.                             if Node.Index.Value+Distance < Lowest then
  1826.                                 Lowest = Node.Index.Value+Distance;
  1827.                                 Best = {Node, Int};
  1828.                             end;
  1829.                         end;
  1830.                         table.insert(Closed, Best[1]);
  1831.                         if Best[1] ~= Start then
  1832.                             Best[1].Color = Color3.fromRGB(230, 230, 230);
  1833.                             Best[1].Transparency = 0;
  1834.                         end;
  1835.                         table.remove(Opened, Best[2]);
  1836.                         for Int, Vector in ipairs(Directions) do
  1837.                             local RayPart, RayPosition = workspace:FindPartOnRay(Ray.new(Best[1].Position, Vector*Spacing));
  1838.                             if RayPart == nil then
  1839.                                 table.insert(Opened, Create(RayPosition, Best[1]));
  1840.                             end;
  1841.                         end;
  1842.                         Final = Best[1];
  1843.                     until #Opened <= 0 or (Best[1].Position-Goal.Position).Magnitude <= Spacing*1.5;
  1844.                     Trace(Final);
  1845.                     for Int, Node in pairs(Start:GetDescendants()) do
  1846.                         if Node.ClassName == "Part" then
  1847.                             if Node.Color == Color3.fromRGB(255, 70, 80) then
  1848.                                 Node:Remove();
  1849.                             end;
  1850.                         end;
  1851.                     end;
  1852.                     task.wait(0.3);
  1853.                     for Int1 = 0, #OrderedLast, 1 do
  1854.                         if Directory.Commands.Pathfind.Running == false then break end;
  1855.                         xpcall(function()
  1856.                             local Int2 = #OrderedLast-Int1;
  1857.                             Int2 = OrderedLast[Int2 < 0 and -Int2 or Int2];
  1858.                             local Int2P = Int2.Position;
  1859.                             Bot.Character.Humanoid:MoveTo(Int2P, Int2);
  1860.                             Animate(Int2, 0.5, Enum.EasingStyle.Back, Enum.EasingDirection.Out, {Position = Int2.Position+Vector3.new(0, 0.6, 0)});
  1861.                             Bot.Character.Humanoid.MoveToFinished:Wait();
  1862.                             Animate(Int2, 0.4, Enum.EasingStyle.Back, Enum.EasingDirection.In, {Position = Int2P});
  1863.                         end, function()end);
  1864.                     end;
  1865.                     task.wait(1);
  1866.                     workspace.Camera:FindFirstChild(Directory.Commands.Pathfind.SessionId):Remove();
  1867.                     Directory.Commands.Pathfind.Running = false;
  1868.                 end;
  1869.             end;
  1870.         end;
  1871.     elseif Register(User, Message, {"follow"}) then
  1872.         local SelectedBot, SelectedUser, MinFollowDistance, Snake = GetArguments(Message, 4);
  1873.         if IsBot(SelectedBot, User) then
  1874.             if string.lower(SelectedUser) == "stop" then
  1875.                 Directory.Functions.Disconnect(Directory.Commands.Follow.Service);
  1876.                 Bot.Character.Humanoid:MoveTo(Bot.Character.HumanoidRootPart.Position, Bot.Character.HumanoidRootPart);
  1877.             else
  1878.                 SelectedUser = FixSelectedUser(SelectedUser, User);
  1879.                 MinFollowDistance = MinFollowDistance ~= nil and (typeof(tonumber(MinFollowDistance)) == "number" and tonumber(MinFollowDistance)) or 4;
  1880.                 if SelectedUser ~= nil and SelectedUser.Character ~= nil then
  1881.                     Directory.Functions.Disconnect(Directory.Commands.Follow.Service);
  1882.                     local Following = SelectedUser.Character.HumanoidRootPart;
  1883.                     if Snake ~= nil and Or(string.lower(Snake), {"yes", "true", "1"}) then
  1884.                         Following = ((GetBotOrder() == 1 and SelectedUser.Character.HumanoidRootPart) or GetOnlineBots(true)[GetBotOrder()-1].Character.HumanoidRootPart);
  1885.                     end;
  1886.                     Directory.Commands.Follow.Service = RunService.Heartbeat:Connect(function()
  1887.                         if GetPlayerPart(SelectedUser, "HumanoidRootPart", false, false) ~= nil and GetPlayerPart(Bot, "HumanoidRootPart", false, false) ~= nil then
  1888.                             local Distance = (Bot.Character.HumanoidRootPart.Position-Following.Position).Magnitude;
  1889.                             if Distance > MinFollowDistance then
  1890.                                 Bot.Character.Humanoid:MoveTo(Following.Position, Following);
  1891.                                 Bot.Character.Humanoid:ChangeState(Enum.HumanoidStateType.None);
  1892.                             elseif Distance > 15+(MinFollowDistance-4) then
  1893.                                 Bot.Character.HumanoidRootPart.CFrame = Following.CFrame;
  1894.                             end;
  1895.                         end;
  1896.                     end);
  1897.                 end;
  1898.             end;
  1899.         end;
  1900.     elseif Register(User, Message, {"server", "s"}) then
  1901.         local SelectedBot, Command, Arg3, Arg4 = GetArguments(Message, 4);
  1902.         if IsBot(SelectedBot, User) then
  1903.             if Or(game.PlaceId, {112851296174239, 118049678120741}) then
  1904.                 local function GetMyBooth()
  1905.                     for _, Booth in pairs(workspace.Booths:GetChildren()) do
  1906.                         if Booth:GetAttribute("Owner") == Bot.Name then
  1907.                             return Booth;
  1908.                         end;
  1909.                     end;
  1910.                     return nil;
  1911.                 end;
  1912.                 local Booth = GetMyBooth();
  1913.                 if not Booth and Or(string.lower(Command), {"claimbooth", "claim", "cb"}) then
  1914.                     if not Directory.Commands.Server.RateMyAvatar.Claimbooth.Waiting then
  1915.                         if Arg3 and string.lower(Arg3) == "stop" then
  1916.                             Directory.Commands.Server.RateMyAvatar.Claimbooth.Waiting = false;
  1917.                         else
  1918.                             Directory.Commands.Server.RateMyAvatar.Claimbooth.Waiting = true;
  1919.                         end;
  1920.  
  1921.                         local SayDelay = 0;
  1922.                         while task.wait(1) do
  1923.                             if not Directory.Commands.Server.RateMyAvatar.Claimbooth.Waiting then
  1924.                                 break;
  1925.                             end;
  1926.  
  1927.                             SayDelay += 1;
  1928.                             if SayDelay == 15 then
  1929.                                 Say("Waiting for an unclaimed booth...");
  1930.                                 SayDelay = 0;
  1931.                             end;
  1932.  
  1933.                             for _, Booth in pairs(workspace.Booths:GetChildren()) do
  1934.                                 -- Fixed: Check if booth does NOT have an owner (unclaimed)
  1935.                                 if not Booth:GetAttribute("Owner") then
  1936.                                     task.wait(GetBotOrder() - 1);
  1937.                                     Bot.Character.HumanoidRootPart.CFrame = Booth.Carpet.CFrame * CFrame.new(0, 4, 0) * CFrame.Angles(math.rad(-90), 0, 0);
  1938.  
  1939.                                     task.wait(0.2);
  1940.                                     fireclickdetector(Booth.Banner.ClickDetector, 32);
  1941.                                     --workspace.CurrentCamera.CameraType = Enum.CameraType.Scriptable
  1942.                                     --workspace.CurrentCamera.CFrame = targetPart.CFrame * CFrame.new(0, 5, 10)
  1943.  
  1944.                                     task.wait(0.2);
  1945.                                     Bot.PlayerGui.BoothCustomizer.Visible = false;
  1946.  
  1947.                                     local descText = "envision";
  1948.                                     if Arg3 then
  1949.                                         local lower = string.lower(Arg3);
  1950.                                         if lower == "r" then
  1951.                                             local sentences = shared["raider/dictionary"]["config/dictionary"]["setup/randomsentences"];
  1952.                                             descText = sentences[math.random(1, #sentences)];
  1953.                                         else
  1954.                                             descText = Arg3;
  1955.                                         end;
  1956.                                     end;
  1957.                                    
  1958.                                     ReplicatedStorage.Remotes.UpdateBooth:FireServer{
  1959.                                         ["desc"] = descText,
  1960.                                         ["image"] = tonumber(string.sub(Booth.Banner.SurfaceGui.Frame.Icon.Image, 13, -1)) or 0,
  1961.                                         ["primaryColor"] = Bot.Character.Torso.Color,
  1962.                                         ["accentColor"] = Color3.fromRGB(27, 42, 53),
  1963.                                     };
  1964.  
  1965.                                     Directory.Commands.Server.RateMyAvatar.Claimbooth.Waiting = false;
  1966.                                     break;
  1967.                                 end;
  1968.                             end;
  1969.                         end;
  1970.                     end;
  1971.                 elseif Booth and Or(string.lower(Command), {"abandonbooth", "abandon", "ab"}) then
  1972.                     --ReplicatedStorage.CustomiseBooth:FireServer("Abandon");
  1973.                     ReplicatedStorage.AbandonBooth:FireServer();
  1974.                     --elseif Or(string.lower(Command), {"blacklist", "bl", "b"}) then
  1975.                     --  local SelectedUser = string.lower(Arg3) == "all" and Arg3 or FixSelectedUser(Arg3, User);
  1976.                     --  if SelectedUser ~= false and SelectedUser == "all" then
  1977.                     --      if Or(string.lower(Arg4), {"loop", "auto"}) then
  1978.                     --          Directory.Commands.Server.RateMyAvatar.Blacklist.Looping = true;
  1979.                     --      elseif string.lower(Arg4) == "stop" then
  1980.                     --          Directory.Commands.Server.RateMyAvatar.Blacklist.Looping = false;
  1981.                     --          Directory.Functions.Disconnect(Directory.Utility.Services["BoothBlacklistPlayerAdded"]);
  1982.                     --      end;
  1983.                     --      for Int, User in pairs(GetUsersExcludingBots()) do
  1984.                     --          ReplicatedStorage.CustomiseBooth:FireServer("AddBlacklist", User.Name);
  1985.                     --      end;
  1986.                     --      if Directory.Commands.Server.RateMyAvatar.Blacklist.Looping == true then
  1987.                     --          Directory.Utility.Services["BoothBlacklistPlayerAdded"] = Players.PlayerAdded:Connect(function(User)
  1988.                     --              delay(1, function()
  1989.                     --                  ReplicatedStorage.CustomiseBooth:FireServer("AddBlacklist", User.Name);
  1990.                     --              end);
  1991.                     --          end);
  1992.                     --      end;
  1993.                     --  elseif SelectedUser ~= nil and SelectedUser.Character ~= nil then
  1994.                     --      ReplicatedStorage.CustomiseBooth:FireServer("AddBlacklist", SelectedUser.Name);
  1995.                     --  end;
  1996.                     --elseif Or(string.lower(Command), {"whitelist", "wl"}) then
  1997.                     --  local SelectedUser = string.lower(Arg3) == "all" and Arg3 or FixSelectedUser(Arg3, User);
  1998.                     --  if SelectedUser ~= false and SelectedUser == "all" then
  1999.                     --      Directory.Commands.Server.RateMyAvatar.Blacklist.Looping = false;
  2000.                     --      Directory.Functions.Disconnect(Directory.Utility.Services["BoothBlacklistPlayerAdded"]);
  2001.                     --      for Int, User in pairs(GetUsersExcludingBots()) do
  2002.                     --          ReplicatedStorage.CustomiseBooth:FireServer("RemoveBlacklist", User.Name);
  2003.                     --      end;
  2004.                     --  elseif SelectedUser ~= nil and SelectedUser.Character ~= nil then
  2005.                     --      ReplicatedStorage.CustomiseBooth:FireServer("RemoveBlacklist", User.Name);
  2006.                     --  end;
  2007.                     --elseif Or(string.lower(Command), {"change", "update", "u"}) then
  2008.                     --  if GetMyBooth() ~= nil then
  2009.                     --      ReplicatedStorage.CustomiseBooth:FireServer("Update", {
  2010.                     --          ["DescriptionText"] = Arg3 == nil and "" or ((string.lower(Arg3) == "random" or string.lower(Arg3) == "stuff" or string.lower(Arg3) == "rs") and shared["raider/dictionary"]["config/dictionary"]["setup/randomsentences"][math.random(1, #shared["raider/dictionary"]["config/dictionary"]["setup/randomsentences"])]) or Arg3,
  2011.                     --          ["ImageId"] = tonumber(string.sub(GetMyBooth().Banner.SurfaceGui.Frame.Icon.Image, 13, -1)) or 0,
  2012.                     --      });
  2013.                     --  end;
  2014.                 --elseif Or(string.lower(Command), {"block", "b"}) then
  2015.                 --  ReplicatedStorage.Remotes.BlockedUser:FireServer(Directory.Commands.Server.RateMyAvatar.Blacklist.List)
  2016.                 --elseif Or(string.lower(Command), {"unblock", "unb"}) then
  2017.                 --  ReplicatedStorage.Remotes.BlockedUser:FireServer(Directory.Commands.Server.RateMyAvatar.Blacklist.List)
  2018.                 elseif Booth and Or(string.lower(Command), {"teleport", "tp"}) then
  2019.                     Bot.Character.HumanoidRootPart.CFrame = Booth.Carpet.CFrame*CFrame.new(Vector3.new(0, 4, 0), Vector3.new(-90, 0, 0));
  2020.                 --elseif Or(string.lower(Command), {"rate", "r"}) then --! no work
  2021.                 --  local SelectedUser, Rating = FixSelectedUser(Arg3, User), (Arg4 ~= nil and typeof(tonumber(Arg4)) == "number" and Arg4) or 5;
  2022.                 --  if SelectedUser ~= nil and SelectedUser.Character ~= nil then
  2023.                 --      Bot.Character.HumanoidRootPart.CFrame = SelectedUser.Character.HumanoidRootPart.CFrame;
  2024.                 --      task.wait(0.1);
  2025.                 --      fireproximityprompt(SelectedUser.Character.HumanoidRootPart.ProximityPrompt, 10);
  2026.                 --      task.wait(0.1);
  2027.                 --      ReplicatedStorage.PostRating:FireServer(SelectedUser, Rating);
  2028.                 --      Say(Form("Rated %s %d stars.", SelectedUser.DisplayName, Rating));
  2029.                 --  end;
  2030.                    
  2031.                 elseif Booth and Or(string.lower(Command), {"update", "u"}) then
  2032.                     local descText = "envision";
  2033.                     if Arg3 then
  2034.                         local lower = string.lower(Arg3);
  2035.                         if lower == "r" then
  2036.                             local sentences = shared["raider/dictionary"]["config/dictionary"]["setup/randomsentences"];
  2037.                             descText = sentences[math.random(1, #sentences)];
  2038.                         else
  2039.                             descText = Arg3;
  2040.                         end;
  2041.                     end;
  2042.  
  2043.                     ReplicatedStorage.Remotes.UpdateBooth:FireServer{
  2044.                         ["desc"] = descText,
  2045.                         ["image"] = tonumber(string.sub(Booth.Banner.SurfaceGui.Frame.Icon.Image, 13, -1)) or 0,
  2046.                         ["primaryColor"] = Bot.Character.Torso.Color,
  2047.                         ["accentColor"] = Color3.fromRGB(27, 42, 53),
  2048.                     };
  2049.                 end;
  2050.             end;
  2051.         end;
  2052.     elseif Register(User, Message, {"speed"}) then
  2053.         local SelectedBot, Speed = GetArguments(Message, 2);
  2054.         if IsBot(SelectedBot, User) then
  2055.             if typeof(tonumber(Speed)) == "number" then
  2056.                 Bot.Character.Humanoid.WalkSpeed = Speed;
  2057.             end;
  2058.         end;
  2059.     elseif Register(User, Message, {"jump"}) then
  2060.         local SelectedBot, Power = GetArguments(Message, 2);
  2061.         if IsBot(SelectedBot, User) then
  2062.             if Power ~= nil and typeof(tonumber(Power)) == "number" then
  2063.                 Bot.Character.Humanoid.JumpPower = tonumber(Power);
  2064.             elseif Power ~= nil and string.lower(Power) == "auto" then
  2065.                 Directory.Commands.Jump.Looping = true;
  2066.                 while Directory.Commands.Jump.Looping == true do
  2067.                     Bot.Character.Humanoid.Jump = true;
  2068.                     task.wait();
  2069.                 end;
  2070.             elseif Power ~= nil and string.lower(Power) == "stop" then
  2071.                 Directory.Commands.Jump.Looping = false;
  2072.             else
  2073.                 Bot.Character.Humanoid.Jump = true;
  2074.             end;
  2075.         end;
  2076.     elseif Register(User, Message, {"sit"}) then
  2077.         local SelectedBot = GetArguments(Message, 1);
  2078.         if IsBot(SelectedBot, User) then
  2079.             Bot.Character.Humanoid.Sit = true;
  2080.         end;
  2081.     --elseif Register(User, Message, {"autorotate", "ar"}) then --! fix. (shiftlock)
  2082.     --  local SelectedBot, Toggle = GetArguments(Message, 2);
  2083.     --  Bot.Character.Humanoid.AutoRotate = IsBot(SelectedBot, User) and (not Or(string.lower(Toggle), {"stop", "off", "no", "false", "0"}));
  2084.     elseif Register(User, Message, {"emote", "e"}) then
  2085.         local SelectedBot, Emote, Looped = GetArguments(Message, 3);
  2086.         if IsBot(SelectedBot, User) then
  2087.             if string.lower(Emote) == "stop" then
  2088.                 for Int, Track in pairs(Bot.Character.Humanoid.Animator:GetPlayingAnimationTracks()) do
  2089.                     Track:Stop(0);
  2090.                     Track:Destroy();
  2091.                 end;
  2092.             else
  2093.                 Say(`/e {Emote}`);
  2094.             end;
  2095.         end;
  2096.     elseif Register(User, Message, {"whitelist", "wl"}) then
  2097.         local SelectedUser, Level = GetArguments(Message, 2);
  2098.         shared["raider/dictionary"]["config/dictionary"]["setup/whitelisted"][string.lower(SelectedUser) == "all" and "Everyone" or GetUserBy(SelectedUser) ~= nil and GetUserBy(SelectedUser).UserId or "null"] = Level;
  2099.     elseif Register(User, Message, {"render"}) then
  2100.         local Toggle = GetArguments(Message, 1);
  2101.         if Toggle ~= nil then
  2102.             RunService:Set3dRenderingEnabled(not Or(Toggle, {"off", "no", "false", "0"}));
  2103.             if Or(Toggle, {"off", "no", "false", "0"}) == false then
  2104.                 for Int, Value in pairs(Bot.PlayerGui:GetDescendants()) do
  2105.                     if Value.ClassName == "ScreenGui" then
  2106.                         Value:SetAttribute("Enabled", Value.Enabled);
  2107.                         Value.Enabled = false;
  2108.                     end;
  2109.                 end;
  2110.             else
  2111.                 for Int, Value in pairs(Bot.PlayerGui:GetDescendants()) do --! no work?
  2112.                     if Value.ClassName == "ScreenGui" then
  2113.                         Value.Enabled = Value:GetAttribute("Enabled");
  2114.                         Value:SetAttribute("Enabled", nil);
  2115.                     end;
  2116.                 end;
  2117.             end;
  2118.         end;
  2119.     elseif Register(User, Message, {"capfps", "fpscap", "setfpscap"}) then
  2120.         local SelectedBot, SelectedNumber = GetArguments(Message, 2);
  2121.         if IsBot(SelectedBot, User) then
  2122.             if SelectedNumber ~= nil and typeof(tonumber(SelectedNumber)) == "number" then
  2123.                 if setfpscap ~= nil and typeof(setfpscap) == "function" then
  2124.                     setfpscap(tonumber(SelectedNumber));
  2125.                 end;
  2126.             end;
  2127.         end;
  2128.     elseif Register(User, Message, {"reset"}) then
  2129.         local SelectedBot = GetArguments(Message, 1);
  2130.         if IsBot(SelectedBot, User) then
  2131.             Bot.Character.Humanoid.Health = 0;
  2132.         end;
  2133.     elseif Register(User, Message, {"reload"}) then
  2134.         local SelectedBot = GetArguments(Message, 1);
  2135.         if IsBot(SelectedBot, User) then
  2136.             local LastSessionID = shared["raider/dictionary"]["config/dictionary"]["general/sessionid"];
  2137.             DisableBot();
  2138.             Say("Reloading...");
  2139.             for Int = 1, 5, 1 do
  2140.                 xpcall(function()
  2141.                     loadstring(game:HttpGet("https://pastebin.com/raw/Y6br7a4J"))();
  2142.                 end, function()
  2143.                     Say(Form("Failed to reload. Retrying... (%d/5)", Int));
  2144.                 end);
  2145.                 if shared["raider/dictionary"]["config/dictionary"]["general/sessionid"] ~= LastSessionID then
  2146.                     break;
  2147.                 end;
  2148.                 task.wait(1);
  2149.             end;
  2150.         end;
  2151.     elseif Register(User, Message, {"disable"}) then
  2152.         local SelectedBot = GetArguments(Message, 1);
  2153.         if IsBot(SelectedBot, User) then
  2154.             DisableBot();
  2155.             Say("Disabled.");
  2156.         end;
  2157.     elseif Register(User, Message, {"rejoin"}) then
  2158.         local SelectedBot = GetArguments(Message, 1);
  2159.         if IsBot(SelectedBot, User) then
  2160.             game:GetService("TeleportService"):TeleportToPlaceInstance(game.PlaceId, game.JobId, Bot);
  2161.         end;
  2162.     elseif Register(User, Message, {"leave"}) then
  2163.         local SelectedBot = GetArguments(Message, 1);
  2164.         if IsBot(SelectedBot, User) then
  2165.             game:Shutdown();
  2166.         end;
  2167.     else
  2168.         Directory.Utility.LastMessage = Message;
  2169.         if Directory.Commands.Mock.User and (Directory.Commands.Mock.User == User or (typeof(Directory.Commands.Mock.User) == "string" and string.lower(Directory.Commands.Mock.User) == "all")) then
  2170.             local Found, Value = TableFind(GetOnlineBots(false), User, "Value");
  2171.             if Found == false then
  2172.                 Say(Message);
  2173.             end;
  2174.         end;
  2175.         --if Directory.Commands.Reply.Running == true then
  2176.         --  if (Bot.Character.HumanoidRootPart.Position-User.Character.HumanoidRootPart.Position).Magnitude <= Directory.Commands.Reply.ChatDistance then
  2177.         --      local Found, Value = TableFind(GetOnlineBots(false), User.Name, "Value");
  2178.         --      if Found == false and Bot ~= User and HasPermission(User.UserId, "A") then
  2179.         --          if #Message > 1 and Directory.Commands.Reply.Answering == false then
  2180.         --              if string.lower(Directory.Commands.Reply.LastQuestion) ~= string.lower(Message) then
  2181.         --                  Directory.Commands.Reply.LastQuestion = Message;
  2182.         --                  Directory.Commands.Reply.Answering = true;
  2183.  
  2184.         --                  local Request = Request{
  2185.         --                      ["Url"] = "https://api.openai.com/v1/completions",
  2186.         --                      ["Method"] = "POST",
  2187.         --                      ["Headers"] = {
  2188.         --                          ["Content-Type"] = "application/json",
  2189.         --                          ["Authorization"] =  "Bearer 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",
  2190.         --                      },
  2191.         --                      ["Body"] = {
  2192.         --                          ["model"] = "text-davinci-003",
  2193.         --                          ["prompt"] = Form("%s\n%s", table.concat(Directory.Commands.Reply.History, "\n"), Message),
  2194.         --                          ["temperature"] = 0.2,
  2195.         --                          ["max_tokens"] = 128,
  2196.         --                          ["top_p"] = 1,
  2197.         --                          ["frequency_penalty"] = 1,
  2198.         --                          ["presence_penalty"] = 1,
  2199.         --                      };
  2200.         --                  };
  2201.  
  2202.         --                  if Request.choices == nil or #Request.choices == 0 then
  2203.         --                      Say("Failed to generate answer.");
  2204.         --                  else
  2205.         --                      local Response = RemoveExtraSpaces(Request.choices[1].text);
  2206.         --                      Response = ({string.gsub(Response, "\n", "")})[1];
  2207.  
  2208.         --                      table.insert(Directory.Commands.Reply.History, Message);
  2209.         --                      table.insert(Directory.Commands.Reply.History, Response);
  2210.  
  2211.         --                      if #Response > 128 then
  2212.         --                          local LastBreak = 0;
  2213.         --                          local Parts = {};
  2214.         --                          for Int = 1, #Response, 1 do
  2215.         --                              if Int%128 == 0 then
  2216.         --                                  table.insert(Parts, string.sub(Response, LastBreak+1, Int));
  2217.         --                                  LastBreak = Int;
  2218.         --                              elseif Int == #Response then
  2219.         --                                  table.insert(Parts, string.sub(Response, LastBreak+1, -1)..(Or(string.sub(Response, #Response, -1), {".", "?", "!"}) == false and "." or ""));
  2220.         --                              end;
  2221.         --                          end;
  2222.         --                          for Int, Value in pairs(Parts) do
  2223.         --                              if IsFiltered(Value) == false then
  2224.         --                                  Say(Value);
  2225.         --                                  task.wait(3);
  2226.         --                              else
  2227.         --                                  Say("Some parts of the message were filtered.");
  2228.         --                                  break;
  2229.         --                              end;
  2230.         --                          end;
  2231.         --                      else
  2232.         --                          Say(Response);
  2233.         --                      end;
  2234.         --                      delay(0.5, function()
  2235.         --                          Directory.Commands.Reply.Answering = false;
  2236.         --                      end);
  2237.         --                  end;
  2238.         --              else
  2239.         --                  Say("Try and think of something else to ask.");
  2240.         --              end;
  2241.         --          end;
  2242.         --      end;
  2243.         --  end;
  2244.         --end;
  2245.     end;
  2246. end;
  2247. Directory.Utility.Services[#Directory.Utility.Services+1] = RunService.Heartbeat:Connect(function()
  2248.     if Directory.Commands.Antifling.Running == true then
  2249.         if Bot.Character.HumanoidRootPart.AssemblyLinearVelocity.Magnitude > 250 or Bot.Character.HumanoidRootPart.AssemblyAngularVelocity.Magnitude > 250 then
  2250.             Bot.Character.HumanoidRootPart.AssemblyAngularVelocity = Vector3.new(0, 0, 0);
  2251.             Bot.Character.HumanoidRootPart.AssemblyLinearVelocity = Vector3.new(0, 0, 0);
  2252.             Bot.Character.HumanoidRootPart.CFrame = Directory.Commands.Antifling.Position;
  2253.         elseif Bot.Character.HumanoidRootPart.AssemblyLinearVelocity.Magnitude < 50 or Bot.Character.HumanoidRootPart.AssemblyAngularVelocity.Magnitude > 50 then
  2254.             Directory.Commands.Antifling.Position = Bot.Character.HumanoidRootPart.CFrame;
  2255.         end;
  2256.     end;
  2257.     if Directory.Commands.Lookat.User then
  2258.         if Directory.Commands.Lookat.User == "c" then
  2259.             local ClosestUser = GetClosestUser();
  2260.             if ClosestUser and ClosestUser.Character and ClosestUser.Character:FindFirstChild("HumanoidRootPart") then
  2261.                 local Pos = ClosestUser.Character.HumanoidRootPart.Position;
  2262.                 Bot.Character.HumanoidRootPart.CFrame = CFrame.new(Bot.Character.HumanoidRootPart.Position, Vector3.new(Pos.X, Bot.Character.HumanoidRootPart.Position.Y, Pos.Z));
  2263.             end;
  2264.         elseif GetPlayerPart(Directory.Commands.Lookat.User, "HumanoidRootPart", false, false) ~= nil then
  2265.             local Pos = Directory.Commands.Lookat.User.Character.HumanoidRootPart.Position;
  2266.             Bot.Character.HumanoidRootPart.CFrame = CFrame.new(Bot.Character.HumanoidRootPart.Position, Vector3.new(Pos.X, Bot.Character.HumanoidRootPart.Position.Y, Pos.Z));
  2267.         end;
  2268.     end;
  2269.     if shared["raider/dictionary"]["config/dictionary"]["setup/antichatlag"] then
  2270.         Bot:Chat("/e clear");
  2271.     end;
  2272. end);
  2273. for Int, User in pairs(GetUsersExcludingBots()) do
  2274.     RunFlingChecksOn(User);
  2275. end;
  2276. Directory.Utility.Services[#Directory.Utility.Services+1] = Players.PlayerAdded:Connect(RunFlingChecksOn);
  2277.  
  2278. for Int, User in pairs(game.Players:GetPlayers()) do
  2279.     Directory.Utility.Services[#Directory.Utility.Services+1] = User.Chatted:Connect(function(Message)
  2280.         if Directory.Utility.Disabled == false then
  2281.             Run(User, Message);
  2282.         end;
  2283.     end);
  2284. end;
  2285. Directory.Utility.Services[#Directory.Utility.Services+1] = Players.PlayerAdded:Connect(function(User)
  2286.     Directory.Utility.Services[#Directory.Utility.Services+1] = User.Chatted:Connect(function(Message)
  2287.         if Directory.Utility.Disabled == false then
  2288.             Run(User, Message);
  2289.         end;
  2290.     end);
  2291. end);
  2292.  
  2293. if string.lower(shared["raider/dictionary"]["config/dictionary"]["setup/loaded/responsetype"]) == "say" then
  2294.     Say(Form("Raider-%s loaded. (%s/%s)", tostring(BotNumber), tostring(OnlineBots or 1), tostring(#shared["raider/dictionary"]["config/dictionary"]["setup/alts"] or 1)));
  2295. elseif string.lower(shared["raider/dictionary"]["config/dictionary"]["setup/loaded/responsetype"]) == "console" then
  2296.     warn("envision/raider: Loaded on client.");
  2297. end;
  2298. Run(Bot, Gsub(shared["raider/dictionary"]["config/dictionary"]["setup/loaded/aftercmd"], {
  2299.     ["${id}"] = BotNumber,
  2300.     ["${bots}"] = OnlineBots,
  2301. }));
  2302. coroutine.resume(coroutine.create(function()
  2303.     xpcall(shared["raider/dictionary"]["config/dictionary"]["setup/loaded/afterfunction"], function(Message)
  2304.         warn("envision/raider: Error running \"afterfunction\";");
  2305.         warn(Message);
  2306.     end);
  2307. end));
Advertisement
Add Comment
Please, Sign In to add comment