-------------------->> Execution Check <<-------------------- local Places = { [136431686349723] = "lobby"; [102181577519757] = "monkeybusiness"; } local scriptLinks = { [136431686349723] = "https://pastebin.com/raw/93h9PUk2"; [102181577519757] = "https://pastebin.com/raw/93h9PUk2"; } local function getScriptLink() return scriptLinks[game.PlaceId] end if Places[game.PlaceId] == nil then print("GigaHub: unsupported game!") return else print(Places[game.PlaceId]) end if getgenv().Ran == true then print("GigaHub: script already got ran!") return end getgenv().Ran = true -------------------->> Loading Starts <<-------------------- local LoadingTime = DateTime.now().UnixTimestamp print("-------------------->> Loading GigaHub: Hunted Auto Win <<--------------------") print("Loading Start Time: 0") repeat task.wait() until game:IsLoaded() -------------------->> Services <<-------------------- local cloneref = cloneref or function (...) return ... end local Services = setmetatable({}, { __index = function(self, service) return cloneref(game:FindService(service)) or cloneref(game:GetService(service)) or cloneref(game:service(service)) end }) local Players = Services.Players local WorkSpace = Services.Workspace local ReplicatedStorage = Services.ReplicatedStorage -------------------->> Variables <<-------------------- local Player = Players.LocalPlayer local PlayerGui = Player.PlayerGui local Bridges = ReplicatedStorage:WaitForChild("Bridges") local Components = ReplicatedStorage:WaitForChild("Components") local Notifications = require(Components:WaitForChild("Notifications")) -------------------->> Functions <<-------------------- local function GetHumanoid() local Character = Player.Character local Humanoid = Character:FindFirstChild("Humanoid") if Humanoid ~= nil and Humanoid.Health > 0 then return Character.Humanoid end end -- local function GetLastCFrame() -- local Character = Player.Character -- local Humanoid = GetHumanoid() -- if Humanoid ~= nil and Humanoid.Health > 0 then -- return Character.HumanoidRootPart.CFrame -- end -- end local function GetHumanoidRootPart() local Character = Player.Character local Humanoid = GetHumanoid() if Humanoid ~= nil and Humanoid.Health > 0 then return Character.HumanoidRootPart end end local function getAttribute(checkObject:Instance, attribute: string, lowerString: boolean) if typeof(checkObject) ~= "Instance" or typeof(attribute) ~= "string" then return end local value = checkObject:GetAttribute(attribute) if typeof(value) == "string" and lowerString == true then return string.lower(value) end return value end local function setAttribute(checkObject:Instance, attribute: string, value: any) if typeof(checkObject) ~= "Instance" or typeof(attribute) ~= "string" then return end checkObject:SetAttribute(attribute, value) end local function queueScriptCheck(notificationFunction) if typeof(queue_on_teleport) ~= "function" then notificationFunction({Text = ("%s doesn't support 'queue_on_teleport'!"):format(identifyexecutor() or "Your executor"); Duration = 5;}) notificationFunction({Text = "Make sure you put this script in the 'AutoExecute' folder! (If you have it)"; Duration = 5;}) task.wait(5) elseif typeof(queue_on_teleport) == "function" then if getScriptLink() ~= nil then notificationFunction({Text = "Queued script for auto load on teleport."; Duration = 5;}) queue_on_teleport(('loadstring(game:HttpGet("%s", true))()'):format(getScriptLink())) task.wait(5) end end end -------------------->> Main <<-------------------- print("Loading End Time: "..tostring(DateTime.now().UnixTimestamp - LoadingTime)) if Places[game.PlaceId] == "lobby" then --getgenv().Portal = getgenv().Portal or "MonkeyBusiness" future getgenv().Difficulty = getgenv().Difficulty or "Hard" -- Easy, Normal, Hard -------------------->> local variables <<-------------------- local lobbyRemote = Bridges:FindFirstChild("Lobby") -------------------->> local functions <<-------------------- local function getBindableFunction(callBack: (buttonName: string) -> ()) local bind if Bridges:FindFirstChild("GigaHub-BindableFunction") == nil then bind = Instance.new("BindableFunction", Bridges) bind.Name = "GigaHub-BindableFunction" else bind = Bridges:FindFirstChild("GigaHub-BindableFunction") end if typeof(callBack) == "function" then bind.OnInvoke = function(buttonName: string) callBack(buttonName) bind:Destroy() end end return bind end local function notification( arg:{ Title: string; Text: string; Duration: number; Callback: BindableFunction; Button1: string; Button2: string; }) Services.StarterGui:SetCore("SendNotification", { Title = arg.Title or "[GigaHub]:"; Text = arg.Text or "PlaceHolder."; Duration = arg.Duration or 5; Callback = arg.Callback or getBindableFunction(function(buttonName) print(buttonName) end); Button1 = arg.Button1 or nil; Button2 = arg.Button2 or nil; }) end -------------------->> local main <<-------------------- queueScriptCheck(notification) if lobbyRemote == nil then notification({Text = "Lobby remote not found!"; Duration = math.huge;}) notification({Text = "Please rejoin!"; Duration = math.huge;}) return end notification({Text = "Waiting for game to load!"}) repeat task.wait() until getAttribute(WorkSpace, "LoadingStopped") == true local Queue = PlayerGui.Queue local Difficulties = Queue.Difficulty.Banner notification({Text = "Searching for difficulty!"}) for i, v in pairs(Difficulties:GetChildren()) do if string.lower(v.Name) == string.lower(getgenv().Difficulty) then notification({Text = "Queuing Up!"}) while task.wait(0.5) do local trys = 0 local success, result = pcall(function() lobbyRemote:FireServer("Teleport", getgenv().Difficulty) end) if success ~= true then trys += 1 if trys > 5 then notification({Text = "Teleport failed, rejoin! 5/5"}) break end notification({Text = ("Error occured, retrying! %/5"):format(trys)}) end end return end end notification({Text = ("Did not find difficulty: '%s'!"):format(getgenv().Difficulty); Duration = math.huge;}) notification({Text = "Please put a valid difficulty & rejoin!"; Duration = math.huge;}) --[[ for future updates to the lobby local Hallways = WorkSpace.Hallways local Queue = PlayerGui.Queue local Difficulties = Queue.Difficulty.Banner local Gamemodes = Queue.Gamemodes.Banner -- for future updates to the lobby if Gamemodes.Parent.Visible ~= true then if Hallways:FindFirstChild(getgenv().Portal) ~= nil then local Portal = Hallways:FindFirstChild(getgenv().Portal) if Portal:FindFirstChild("Zone") ~= nil then HumanoidRootPart.CFrame = Portal.Zone.CFrame repeat task.wait() until Gamemodes.Parent.Visible == true end end end for i, v in pairs(Gamemodes:GetChildren()) do if string.lower(v.Name) == "singleplayer" then firesignal(v.Activated) repeat task.wait() until Gamemodes.Parent.Visible ~= true break end end for i, v in pairs(Difficulties:GetChildren()) do if string.lower(v.Name) == string.lower(getgenv().Difficulty) then while task.wait(0.5) do firesignal(v.Activated) end end end ]] elseif Places[game.PlaceId] == "monkeybusiness" then local function notification( arg:{ Title: string; Text: string; Duration: number; }) Notifications:SendNotification({ Title = arg.Title or "[GigaHub]:"; Text = arg.Text or "PlaceHolder."; Duration = arg.Duration or 5; }) end -------------------->> local variables <<-------------------- queueScriptCheck(notification) notification({Text = "Loading Auto Win!"}) local HumanoidRootPart = GetHumanoidRootPart() if HumanoidRootPart == nil then repeat HumanoidRootPart = GetHumanoidRootPart() until HumanoidRootPart ~= nil end local NotificationStack = PlayerGui:WaitForChild("Notifications"):WaitForChild("NotificationStack") local Shards = WorkSpace:WaitForChild("Shards") local Hotel = WorkSpace:WaitForChild("Hotel") local Portals = WorkSpace:WaitForChild("Portals") local EntrancePortal = Portals.EntrancePortal local Elevator = Hotel.Elevator local InsideElevator = Elevator.ElevatorInside if getAttribute(WorkSpace, "GameStarted") == nil then notification({Text = "Teleporting to Elevator!"}) HumanoidRootPart.CFrame = InsideElevator.CFrame end repeat task.wait() until Hotel:FindFirstChild("Maze") ~= nil -------------------->> local variables Part 2 <<-------------------- local Maze = Hotel.Maze local Interactable = Maze.Interactable local RingAltarModel = Maze.Rooms.Main.RingAltar local RingAltar = RingAltarModel.Parts.RingAltar -------------------->> local functions <<-------------------- local function getClosestShard(objects: {any}, objectRef: Instance) local closestShard = nil local shortestDistance = math.huge for _, object in ipairs(objects) do if object:IsA("BasePart") then local distance = (object.Position - objectRef.Position).Magnitude if distance < shortestDistance then shortestDistance = distance closestShard = object end end end return closestShard end local function notifyCurrentQuest(quest: string) notification({Text = ("Waiting for current quest: %s!"):format(quest or getAttribute(WorkSpace, "CurrentQuest"))}) end local function printCurrentQuest(quest: string) print(("Waiting for current quest: %s!"):format(quest or getAttribute(WorkSpace, "CurrentQuest"))) end local function getCurrentQuest(lowerString: boolean) return getAttribute(WorkSpace, "CurrentQuest", lowerString) end local function interactWithRingAltar() if RingAltarModel:FindFirstChild("Interact") ~= nil then if RingAltarModel.Interact:FindFirstChildOfClass("RemoteEvent") ~= nil then RingAltarModel.Interact:FindFirstChildOfClass("RemoteEvent"):FireServer() end end end -------------------->> auto win <<-------------------- if getAttribute(WorkSpace, "GameStarted") == nil then notification({Text = "Teleporting to RingAltar!"}) HumanoidRootPart.CFrame = RingAltar.CFrame end if WorkSpace:GetAttribute("Skipped") == nil then local Button:TextButton = nil for i, v in pairs(NotificationStack:GetChildren()) do if v:IsA("Frame") and v:FindFirstChild("Buttons") ~= nil then if v.Buttons:FindFirstChild("Button1_Clone") == nil then continue end Button = v.Buttons.Button1_Clone firesignal(Button.MouseButton1Click) notification({Text = "Skipping Tutorial!"}) end end if Button == nil then local Connection Connection = NotificationStack.ChildAdded:Connect(function(Child:Frame) if Child:IsA("Frame") and Child:FindFirstChild("Buttons") ~= nil then if Child.Buttons:FindFirstChild("Button1_Clone") == nil then return end Button = Child.Buttons.Button1_Clone firesignal(Button.MouseButton1Click) notification({Text = "Skipping Tutorial!"}) Connection:Disconnect() Connection = nil end end) end end notification({Text = "Waiting for game to start!"}) repeat print("Waiting for game to start") task.wait() until getAttribute(WorkSpace, "GameStarted") == true repeat task.wait() until getAttribute(WorkSpace, "CurrentQuest") ~= nil notifyCurrentQuest("BREAK THE BOARDS") repeat task.wait() printCurrentQuest("BREAK THE BOARDS") until getCurrentQuest(true) == "break the boards" notification({Text = "Breaking the boards!"}) for _, v in pairs(Interactable:GetDescendants()) do if v.Name == "Interact" and v:FindFirstChildOfClass("RemoteEvent") ~= nil then v:FindFirstChildOfClass("RemoteEvent"):FireServer() end end task.wait(4) -- notification({Text = "Attempting to trigger next quest!"}) -- for i = 1, 20 do -- if getCurrentQuest(true) == "collect all shards" then break end -- task.wait(1) -- local closest = getClosestShard(Shards:GetChildren(), RingAltar) -- HumanoidRootPart.CFrame = closest.CFrame -- end -- notifyCurrentQuest("COLLECT ALL SHARDS") -- repeat task.wait() printCurrentQuest("COLLECT ALL SHARDS") until getCurrentQuest(true) == "collect all shards" notification({Text = "Collecting all shards..."}) for _, v in pairs(Shards:GetChildren()) do if v:FindFirstChild("TouchInterest") ~= nil then firetouchinterest(HumanoidRootPart, v, 0) firetouchinterest(HumanoidRootPart, v, 1) end end notifyCurrentQuest("GET BACK TO THE RING ALTAR") repeat task.wait() printCurrentQuest("GET BACK TO THE RING ALTAR") until getCurrentQuest(true) == "get back to the ring altar" notification({Text = "Teleporting to RingAltar..."}) for i = 1, 5 do HumanoidRootPart.CFrame = RingAltar.CFrame task.wait(0.4) end notifyCurrentQuest("RETURN TO THE PORTAL") repeat task.wait() interactWithRingAltar() if getAttribute(WorkSpace, "RingPieceCollected") ~= true then interactWithRingAltar() RingAltar.Attachment:Destroy() setAttribute(WorkSpace, "RingPieceCollected", true) end printCurrentQuest("RETURN TO THE PORTAL") until getCurrentQuest(true) == "return to the portal" notification({Text = "Teleporting to Elevator..."}) repeat task.wait() HumanoidRootPart.CFrame = InsideElevator.CFrame until Hotel:FindFirstChild("Entrance") ~= nil and (HumanoidRootPart.Position - Hotel.Entrance.Lobby.MiddleCarpet.Position).Magnitude <= 120 --repeat task.wait() HumanoidRootPart.CFrame = Hotel.Events.MonkeysSpawn.Object.CFrame until #WorkSpace.Terrain.Enemies:GetChildren() > 2 --repeat task.wait() until Hotel.Events:FindFirstChild("MonkeyJumpReception") ~= nil notification({Text = "Teleporting to Reception..."}) repeat task.wait() HumanoidRootPart.CFrame = Hotel.Events.MonkeyJumpReception.Object.CFrame until EntrancePortal.Portal.Locked.Visible ~= true notification({Text = "Teleporting to Portal..."}) repeat task.wait() HumanoidRootPart.CFrame = EntrancePortal.Zone.CFrame until PlayerGui.Escape.InitialPopup.BackgroundTransparency == 0 -- or getAttribute(Player, "BeingChased") ~= true notification({Text = ("ESCAPED!!! Difficulty: %s"):format(getAttribute(WorkSpace, "Difficulty")); Duration = 30;}) end