if game.PlaceId ~= 6839171747 or game.ReplicatedStorage.GameData.Floor.Value ~= "Rooms" then return end local PathfindingService = game:GetService("PathfindingService") local RunService = game:GetService("RunService") local Players = game.Players local LocalPlayer = Players.LocalPlayer local LatestRoom = game.ReplicatedStorage.GameData.LatestRoom -- Anti-AFK local GC = getconnections or get_signal_cons if GC then for _, v in pairs(GC(LocalPlayer.Idled)) do v:Disable() end end -- Bypass A-90 local a90 = LocalPlayer.PlayerGui:FindFirstChild("MainUI") and LocalPlayer.PlayerGui.MainUI.Initiator.Main_Game.RemoteListener.Modules:FindFirstChild("A90") if a90 then a90.Name = "lol" end -- Locate nearest available locker local function getLocker() local char = LocalPlayer.Character if not char or not char:FindFirstChild("HumanoidRootPart") then return nil end local root = char.HumanoidRootPart local closest = nil for _, v in ipairs(workspace.CurrentRooms:GetDescendants()) do if v.Name == "Rooms_Locker" and v:FindFirstChild("Door") and v:FindFirstChild("HiddenPlayer") then if v.HiddenPlayer.Value == nil and v.Door.Position.Y > -3 then local dist = (root.Position - v.Door.Position).Magnitude if not closest or dist < (root.Position - closest.Position).Magnitude then closest = v.Door end end end end return closest end -- Get target position local function getTarget() local entity = workspace:FindFirstChild("A60") or workspace:FindFirstChild("A120") if entity and entity.Main.Position.Y > -4 then return getLocker() end local roomNumber = LatestRoom.Value local room = workspace.CurrentRooms:FindFirstChild(tostring(roomNumber)) if room and room:FindFirstChild("Door") and room.Door:FindFirstChild("Door") then return room.Door.Door end return nil end -- Pathfinding and movement state local pathWaypoints = {} local currentWP = 1 local lastPathTime = 0 local MOVE_SPEED = 22 -- studs per second -- Direct movement loop (Heartbeat) RunService.Heartbeat:Connect(function(deltaTime) local char = LocalPlayer.Character if not char or not char:FindFirstChild("HumanoidRootPart") then return end local root = char.HumanoidRootPart local hum = char:FindFirstChild("Humanoid") root.CanCollide = false if char:FindFirstChild("Collision") then char.Collision.CanCollide = false end -- Hide in locker if entity present and we're close local entity = workspace:FindFirstChild("A60") or workspace:FindFirstChild("A120") local target = getTarget() if not target then return end if target.Parent and target.Parent.Name == "Rooms_Locker" and entity and entity.Main.Position.Y > -4 then if (root.Position - target.Position).Magnitude < 7 and not root.Anchored then fireproximityprompt(target.Parent.HidePrompt) end end -- Exit locker if (not entity or entity.Main.Position.Y < -4) and root.Anchored then game.ReplicatedStorage.RemotesFolder.CamLock:FireServer() end if tick() - lastPathTime > 0.5 or #pathWaypoints == 0 or currentWP > #pathWaypoints then local success, waypoints = pcall(function() local path = PathfindingService:CreatePath({ AgentRadius = 1, AgentCanJump = false }) path:ComputeAsync(root.Position, target.Position) return path:GetWaypoints() end) if success and waypoints and #waypoints > 0 then pathWaypoints = waypoints currentWP = 1 else pathWaypoints = { { Position = target.Position, Action = "Walk" } } currentWP = 1 end lastPathTime = tick() end if #pathWaypoints > 0 and currentWP <= #pathWaypoints then local wp = pathWaypoints[currentWP] local direction = (wp.Position - root.Position) direction = Vector3.new(direction.X, 0, direction.Z) local distance = direction.Magnitude if distance < 2 then currentWP = currentWP + 1 else local step = direction.Unit * math.min(distance, MOVE_SPEED * deltaTime) local newPos = root.Position + step local rayOrigin = newPos + Vector3.new(0, 5, 0) local ray = Ray.new(rayOrigin, Vector3.new(0, -10, 0)) local hit = workspace:FindPartOnRayWithIgnoreList(ray, {char}) if hit then newPos = Vector3.new(newPos.X, hit.Position.Y + 2.5, newPos.Z) end root.CFrame = CFrame.new(newPos, newPos + direction.Unit * 10) end end end)