Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -------------------->> 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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement