print("SCRIPT STARTED") -- SETTINGS task.wait(5) --for auto execute _G.maxWaitTimeInLobby = 3 _G.collect_daily_reward = false _G.auto_join_dungeon = true _G.dungeon = "Desert Temple" _G.difficulty = "Easy" _G.hardcore = true _G.auto_choose_dungeon_and_difficulty = true _G.boss_raid = false _G.auto_choose_raid_boss_tier = false _G.boss_raid_tier = 1 _G.wavedefense = false _G.wait_for_friends = true _G.friends = { "example1", "example2", "example3" } _G.wait_for_friends_to_host = true _G.host_name = "hostname" _G.multi_roblox = true _G.host_name_key = {"hostname"} _G.name_key_list = { {"example1"}, {"example2"}, {"example3"}, } -- ============================================================================ -- SERVICES -- ============================================================================ local Services = { Players = game:GetService("Players"), ReplicatedStorage = game:GetService("ReplicatedStorage"), PathfindingService = game:GetService("PathfindingService"), Workspace = game:GetService("Workspace") } local LocalPlayer = Services.Players.LocalPlayer local LOBBY_PLACE_IDS = { [77649408247578] = true, [3220968688] = true, [2414851778] = true } local function isLobby() return LOBBY_PLACE_IDS[game.PlaceId] == true end -- ============================================================================ -- LOBBY LOGIC -- ============================================================================ local function autoChooseDungeon() if not _G.auto_choose_dungeon_and_difficulty then return end local level = LocalPlayer:WaitForChild("leaderstats"):WaitForChild("Level").Value if level <= 5 then _G.dungeon = "Desert Temple"; _G.difficulty = "Easy" elseif level <= 11 then _G.dungeon = "Desert Temple"; _G.difficulty = "Medium" elseif level <= 19 then _G.dungeon = "Desert Temple"; _G.difficulty = "Hard" elseif level <= 26 then _G.dungeon = "Desert Temple"; _G.difficulty = "Insane" elseif level <= 32 then _G.dungeon = "Desert Temple"; _G.difficulty = "Nightmare" elseif level <= 39 then _G.dungeon = "Winter Outpost"; _G.difficulty = "Easy" elseif level <= 44 then _G.dungeon = "Winter Outpost"; _G.difficulty = "Medium" elseif level <= 49 then _G.dungeon = "Winter Outpost"; _G.difficulty = "Hard" elseif level <= 54 then _G.dungeon = "Winter Outpost"; _G.difficulty = "Insane" elseif level <= 59 then _G.dungeon = "Winter Outpost"; _G.difficulty = "Nightmare" elseif level <= 64 then _G.dungeon = "Pirate Island"; _G.difficulty = "Insane" elseif level <= 69 then _G.dungeon = "Pirate Island"; _G.difficulty = "Nightmare" elseif level <= 74 then _G.dungeon = "King's Castle"; _G.difficulty = "Insane" elseif level <= 79 then _G.dungeon = "King's Castle"; _G.difficulty = "Nightmare" elseif level <= 84 then _G.dungeon = "The Underworld"; _G.difficulty = "Insane" elseif level <= 89 then _G.dungeon = "The Underworld"; _G.difficulty = "Nightmare" elseif level <= 94 then _G.dungeon = "Samurai Palace"; _G.difficulty = "Insane" elseif level <= 99 then _G.dungeon = "Samurai Palace"; _G.difficulty = "Nightmare" elseif level <= 104 then _G.dungeon = "The Canals"; _G.difficulty = "Insane" elseif level <= 109 then _G.dungeon = "The Canals"; _G.difficulty = "Nightmare" elseif level <= 114 then _G.dungeon = "Ghastly Harbor"; _G.difficulty = "Insane" elseif level <= 119 then _G.dungeon = "Ghastly Harbor"; _G.difficulty = "Nightmare" elseif level <= 124 then _G.dungeon = "Steampunk Sewers"; _G.difficulty = "Insane" elseif level <= 139 then _G.dungeon = "Steampunk Sewers"; _G.difficulty = "Nightmare" elseif level <= 145 then _G.dungeon = "Orbital Outpost"; _G.difficulty = "Insane" elseif level <= 149 then _G.dungeon = "Orbital Outpost"; _G.difficulty = "Nightmare" elseif level <= 154 then _G.dungeon = "Volcanic Chambers"; _G.difficulty = "Insane" else _G.dungeon = "Volcanic Chambers"; _G.difficulty = "Nightmare" end end local function loadPlayerCharacter() while not Services.Workspace:FindFirstChild(LocalPlayer.Name) do task.wait(0.1) pcall(function() Services.ReplicatedStorage.remotes.loadPlayerCharacter:FireServer() end) end return Services.Workspace:FindFirstChild(LocalPlayer.Name) end local function waitForHumanoid(character) if not character then return nil end while not character:FindFirstChild("Humanoid") do task.wait(0.1) end return character:FindFirstChild("Humanoid") end local function removeLobbyIntroAndBlur(character) pcall(function() while not game.Lighting:FindFirstChild("Blur") do task.wait(0.1) end while not LocalPlayer.PlayerGui:FindFirstChild("introGui") do task.wait(0.1) end local introGui = LocalPlayer.PlayerGui:FindFirstChild("introGui") if introGui then introGui:Destroy() end local camera = Services.Workspace.CurrentCamera if camera and character then local humanoid = character:FindFirstChild("Humanoid") if humanoid then camera.CameraType = Enum.CameraType.Track camera.CameraSubject = humanoid end end local blur = game.Lighting:FindFirstChild("Blur") if blur then blur:Destroy() end end) end local function AIMovementInLobby() local clock = 0 local doneMoving = false _G.ai_done = false local character = LocalPlayer.Character or Services.Workspace:FindFirstChild(LocalPlayer.Name) if not character then _G.ai_done = true return end local humanoid = character:FindFirstChild("Humanoid") local rootPart = character:FindFirstChild("HumanoidRootPart") if not humanoid or not rootPart then _G.ai_done = true return end task.spawn(function() local randomWayPoints = { { Vector3.new(29.4448986, 10.6809521, 1005.28198) }, { Vector3.new(120.158272, 5.05413818, 1005.26672) }, { Vector3.new(145.121567, 4.79999876, 1028.203) }, { Vector3.new(138.910416, 4.85120726, 1080.46936) }, { Vector3.new(50.0033913, 5.40119982, 1025.59448), Vector3.new(12.7496023, 4.94986296, 1046.24768) }, { Vector3.new(56.9857826, 5.10824966, 1066.79846), Vector3.new(40.124321, 5, 1055.27551) }, { Vector3.new(28.1154366, 4.8208971, 1041.24829) }, { Vector3.new(8.27422428, 4.80000019, 1034.32092), Vector3.new(-36.9196014, 4.80000019, 1022.45972), Vector3.new(-93.4016876, 5.84888077, 1107.07776), Vector3.new(-134.147461, 5.84888077, 1080.1228) }, { Vector3.new(8.27422428, 4.80000019, 1034.32092), Vector3.new(-36.9196014, 4.80000019, 1022.45972), Vector3.new(-69.0564728, 5.87887812, 1101.21545) }, { Vector3.new(8.27422428, 4.80000019, 1034.32092), Vector3.new(-36.9196014, 4.80000019, 1022.45972), Vector3.new(-57.2358208, 5.81887817, 1059.91345) }, { Vector3.new(104.851845, 4.80013657, 1029.08655), Vector3.new(66.5649185, 11.1366758, 981.947205), Vector3.new(58.9183998, 15.5042267, 969.327759) }, { Vector3.new(106.917046, 5.1029253, 1033.20129), Vector3.new(126.421371, 4.80742407, 1017.41754), Vector3.new(109.249374, 4.99999857, 998.975525) }, { Vector3.new(37.6123543, 5.1142168, 1041.55664), Vector3.new(8.08811092, 11.3835154, 1087.04956), Vector3.new(3.8377471, 4.81672573, 1051.76331) }, { Vector3.new(74.2765732, 4.79785824, 1034.74109), Vector3.new(59.2142448, 5, 1081.58557), Vector3.new(23.250845, 5.6657753, 1021.79108) }, { Vector3.new(75.4334259, 5.07404947, 1048.54626), Vector3.new(59.5415268, 9.24949932, 1002.75214), Vector3.new(21.7118225, 26.9064331, 982.54895) }, { Vector3.new(86.8510361, 4.95114946, 1012.60217), Vector3.new(78.8645248, 5.21786928, 1063.84338), Vector3.new(39.1454849, 5, 1062.37744) }, { Vector3.new(85.5781631, 5.19999838, 1044.32336), Vector3.new(7.32494354, 4.79999876, 1031.84668), Vector3.new(-16.918314, 7.10381889, 999.609253) }, { Vector3.new(85.5781631, 5.19999838, 1044.32336), Vector3.new(7.32494354, 4.79999876, 1031.84668), Vector3.new(-60.5333252, 4.90647602, 1025.54321) }, { Vector3.new(85.5781631, 5.19999838, 1044.32336), Vector3.new(7.32494354, 4.79999876, 1031.84668), Vector3.new(-76.8479233, 4.87704134, 1009.79724) }, { Vector3.new(116.443657, 5.34364605, 1031.54187), Vector3.new(136.55043, 4.80000019, 1068.89758), Vector3.new(96.5291367, 5.04907751, 1055.71301) }, { Vector3.new(136.55043, 4.80000019, 1068.89758), Vector3.new(96.5291367, 5.04907751, 1055.71301), Vector3.new(116.443657, 5.34364605, 1031.54187) }, { Vector3.new(84.3650131, 4.95895767, 1011.05023), Vector3.new(28.3323727, 5.77999735, 1021.42993), Vector3.new(32.4552689, 5, 1067.22888) } } local selectedSet = randomWayPoints[math.random(1, #randomWayPoints)] for _, destination in pairs(selectedSet) do if _G.ai_done then break end local path = Services.PathfindingService:CreatePath() path:ComputeAsync(rootPart.Position, destination) local waypoints = path:GetWaypoints() for i, waypoint in pairs(waypoints) do if _G.ai_done then break end humanoid:MoveTo(waypoint.Position) humanoid.MoveToFinished:Wait() end end doneMoving = true end) while not (doneMoving or clock > _G.maxWaitTimeInLobby) do clock = clock + 0.1 task.wait(0.1) end _G.ai_done = true if rootPart then humanoid:MoveTo(rootPart.Position) end end -- ============================================================================ -- PARTY LOGIC -- ============================================================================ local function startLobbyDungeon() if not _G.auto_join_dungeon then return end if _G.multi_roblox then if LocalPlayer.Name == _G.host_name_key[1] then -- HOST if _G.boss_raid then Services.ReplicatedStorage.remotes.createBossLobby:InvokeServer(_G.boss_raid_tier, true, 0) task.wait(1.0) for _, v in pairs(_G.name_key_list) do Services.ReplicatedStorage.remotes.addPlayerToBossWhitelist:FireServer(v[1]) task.wait(0.5) end task.wait(1.0) local expectedNames = {} for _, v in pairs(_G.name_key_list) do table.insert(expectedNames, v[1]) end table.insert(expectedNames, LocalPlayer.Name) while true do local lobby = Services.Workspace.bossLobbies:FindFirstChild(LocalPlayer.Name) if lobby then local children = lobby.players:GetChildren() local presentNames = {} for _, child in ipairs(children) do table.insert(presentNames, child.Name) end local allPresent = true for _, name in ipairs(expectedNames) do if not table.find(presentNames, name) then allPresent = false break end end if allPresent then break end end task.wait(1.0) end task.wait(1.0) Services.ReplicatedStorage.remotes.startBossRaid:FireServer() task.wait(1.0) else Services.ReplicatedStorage.remotes.createLobby:InvokeServer(_G.dungeon, _G.difficulty, 0, _G.hardcore, true, _G.wavedefense) task.wait(1.0) for _, v in pairs(_G.name_key_list) do Services.ReplicatedStorage.remotes.addPlayerToWhitelist:FireServer(v[1]) task.wait(0.5) end task.wait(1.0) local expectedNames = {} for _, v in pairs(_G.name_key_list) do table.insert(expectedNames, v[1]) end table.insert(expectedNames, LocalPlayer.Name) while true do local lobby = Services.Workspace.games.inLobby:FindFirstChild(LocalPlayer.Name) if lobby then local children = lobby:GetChildren() local presentNames = {} for _, child in ipairs(children) do table.insert(presentNames, child.Name) end local allPresent = true for _, name in ipairs(expectedNames) do if not table.find(presentNames, name) then allPresent = false break end end if allPresent then break end end task.wait(1.0) end task.wait(1.0) Services.ReplicatedStorage.remotes.startDungeon:FireServer() task.wait(1.0) end else -- CLIENT if _G.boss_raid then local hostName = _G.host_name_key[1] while not Services.Workspace.bossLobbies:FindFirstChild(hostName) do task.wait() end task.wait(1.0) local joinRemote = Services.ReplicatedStorage.remotes.playerJoinBossLobby while true do local lobby = Services.Workspace.bossLobbies:FindFirstChild(hostName) if lobby then local success = pcall(function() joinRemote:InvokeServer(lobby) end) if success then if lobby.players:FindFirstChild(LocalPlayer.Name) then break end end end task.wait(1.0) end else local hostName = _G.host_name_key[1] while not Services.Workspace.games.inLobby:FindFirstChild(hostName) do task.wait() end task.wait(1.0) local joinRemote = Services.ReplicatedStorage.remotes.joinDungeon while true do local lobby = Services.Workspace.games.inLobby:FindFirstChild(hostName) if lobby then local success = pcall(function() joinRemote:InvokeServer(hostName) end) if success then if lobby:FindFirstChild(LocalPlayer.Name) then break end end end task.wait(1.0) end end end return end end -- ============================================================================ -- MAIN LOBBY MODE -- ============================================================================ local function runLobbyMode() local character = loadPlayerCharacter() local humanoid = waitForHumanoid(character) if not humanoid then return end removeLobbyIntroAndBlur(character) pcall(autoChooseDungeon) _G.ai_done = false task.spawn(function() pcall(AIMovementInLobby) end) while not _G.ai_done do task.wait(0.1) end pcall(startLobbyDungeon) end -- ============================================================================ -- ENTRY POINT -- ============================================================================ if isLobby() then runLobbyMode() else task.wait(2) local startevent = game:GetService("ReplicatedStorage").remotes.changeStartValue startevent:FireServer() end print("=== SCRIPT FINISHED ===")