--[[ ═══════════════════════════════════════════════════════════════════════════ DOOMSENSE V1 FORSAKEN Target Place ID: 83645629621104 Restored & Verified Master Architecture: • Dual-Mode Noclip Engine • Standalone Self-Cleaning Emote Prop Ghosting • Automatic Round Lifecycle Reset • Combat Followup Strike • Reliable Native Audio Mute & Restore Engine • Strict Character-Ownership Noli Filter • Instant Zero-Latency LMS Engine • Minimalist Text-Only Object ESP • Rigid Center-Locked 2D Box & Tags • Dedicated Persistent LMS Track Memory ═══════════════════════════════════════════════════════════════════════════ ]] -- ── SERVICES ───────────────────────────────────────────────────────────── local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local TweenService = game:GetService("TweenService") local Workspace = game:GetService("Workspace") local CoreGui = game:GetService("CoreGui") local Lighting = game:GetService("Lighting") local ReplicatedStorage = game:GetService("ReplicatedStorage") local StatsService = game:GetService("Stats") local SoundService = game:GetService("SoundService") local VirtualInputManager = game:GetService("VirtualInputManager") local HttpService = game:GetService("HttpService") local TeleportService = game:GetService("TeleportService") local Debris = game:GetService("Debris") local LocalPlayer = Players.LocalPlayer local function GetCamera() return Workspace.CurrentCamera or Workspace:FindFirstChildOfClass("Camera") end local function GetSafeGuiParent() if gethui then return gethui() elseif syn and syn.protect_gui then return CoreGui else return CoreGui end end -- ── SAFE VIRTUAL INPUT EMULATION ───────────────────────────────────────── local function SafeSendKey(keyCode) pcall(function() if VirtualInputManager and typeof(VirtualInputManager.SendKeyEvent) == "function" then VirtualInputManager:SendKeyEvent(true, keyCode, false, game) task.wait(0.02) VirtualInputManager:SendKeyEvent(false, keyCode, false, game) elseif keypress and keyrelease then keypress(keyCode.Value) task.wait(0.02) keyrelease(keyCode.Value) end end) end local function SafeSendClick() pcall(function() if VirtualInputManager and typeof(VirtualInputManager.SendMouseButtonEvent) == "function" then VirtualInputManager:SendMouseButtonEvent(0, 0, 0, true, game, 1) task.wait(0.02) VirtualInputManager:SendMouseButtonEvent(0, 0, 0, false, game, 1) elseif mouse1click then mouse1click() end end) end -- ── FILE SYSTEM & PATHS ────────────────────────────────────────────────── local FOLDER_NAME = "DoomsenseForsaken" local LMS_DIR = FOLDER_NAME .. "/CustomLms" local LMS_CFG_FILE = FOLDER_NAME .. "/LMS_Config.json" local WAYPOINTS_FILE = FOLDER_NAME .. "/Waypoints.json" local MOBILE_POS_FILE = FOLDER_NAME .. "/MobilePositions.json" local TIMEUI_POS_FILE = FOLDER_NAME .. "/TimeUIPos.json" if isfolder and makefolder then if not isfolder(FOLDER_NAME) then makefolder(FOLDER_NAME) end if not isfolder(FOLDER_NAME .. "/cfg") then makefolder(FOLDER_NAME .. "/cfg") end if not isfolder(LMS_DIR) then makefolder(LMS_DIR) end end -- ── DEDICATED LMS TRACK PERSISTENCE & PRE-BOOT SCAN ────────────────────── local CachedTrackAssets = {} local function ResolveTrackAsset(trackName) if not trackName or trackName == "None" or trackName == "" then return nil end if CachedTrackAssets[trackName] then return CachedTrackAssets[trackName] end local p1 = LMS_DIR .. "/" .. trackName .. ".ogg" local p2 = LMS_DIR .. "/" .. trackName .. ".mp3" local finalPath = (isfile and isfile(p1) and p1) or (isfile and isfile(p2) and p2) or nil if finalPath and (getcustomasset or getsynasset) then local func = getcustomasset or getsynasset local s, asset = pcall(func, finalPath) if s and asset then CachedTrackAssets[trackName] = asset return asset end end return nil end local function GetFilesList() local list = { "None" } pcall(function() if isfolder and isfolder(LMS_DIR) then local files = listfiles(LMS_DIR) if files then for _, path in pairs(files) do if path:match("%.ogg$") or path:match("%.mp3$") then local name = path:match("[^/\\]+$"):gsub("%.ogg$", ""):gsub("%.mp3$", "") table.insert(list, name) ResolveTrackAsset(name) end end end end end) table.sort(list) return list end local PreloadedFilesList = GetFilesList() -- ── LIBRARIES ──────────────────────────────────────────────────────────── local Fluent = loadstring(game:HttpGet("https://github.com/dawid-scripts/Fluent/releases/latest/download/main.lua"))() local SaveManager = loadstring(game:HttpGet("https://raw.githubusercontent.com/dawid-scripts/Fluent/master/Addons/SaveManager.lua"))() local InterfaceManager = loadstring(game:HttpGet("https://raw.githubusercontent.com/dawid-scripts/Fluent/master/Addons/InterfaceManager.lua"))() -- ── GLOBAL CONFIG ──────────────────────────────────────────────────────── local GlobalConfig = { SafeMode = false, -- Speedhack Engine IsSpeeding = false, WalkSpeed = 16, SpeedInterval = 0, SpeedMode = "Linear Mover (BodyPhysics)", -- Noclip System Noclip = false, NoclipMode = "Classic Stepped", FixEmoteProps = false, EmoteFixRadius = 7.5, -- 3D Raycast Mouse Teleport MouseTP = { Enabled = false, Mode = "Keybind Instant TP", MaxDistance = 2000, HeightOffset = 0, VisualMarker = false, MarkerColor = Color3.fromRGB(0, 255, 180), MarkerSize = 3.5, }, -- Non-Physical Spawn Safe-Zone Cube Spawn = { Enabled = false, CubeSize = 3000, SpawnPoint = Vector3.new(-3500, 11, 250), ShowEdges = false, EdgeColor = Color3.fromRGB(255, 255, 255), }, Binds = { Speed_Mode = "Toggle", AH_Mode = "Toggle", Noclip_Mode = "Toggle", MouseTP_Mode = "Toggle", Combat_Mode = "Toggle", }, -- Auto Hunt (STRICTLY KILLER ONLY) AH = { Enabled = false, Mode = "Nearest", AttackMethod = "Both", IgnoreSpawn = true, BypassShield = true, Height = 0, Distance = 0, Delay = 0.05, PingLimit = 180, TargetColor = Color3.fromRGB(255, 50, 50), }, -- Combat Module (STRICTLY SURVIVOR ONLY) Combat = { Enabled = false, Guest_ParryQ = true, Guest_FollowupE = true, Guest_FollowupDelay = 1.0, Guest_FollowupRange = 18, Guest_Range = 14, TwoTime_Backstab = false, TwoTime_Dist = 3.5, Shed_SlashDelay = 0.6, }, -- Generator Visuals (Minimalist Text) Gen = { ESP_Enabled = false, ESP_ShowPercent = true, ESP_ShowDist = true, FilterFakes = true, ESP_Color = Color3.fromRGB(0, 200, 255), }, -- Items Visuals (Minimalist Text) Items = { ESP_Enabled = false, ShowDist = true, Chams_Col = Color3.fromRGB(255, 200, 50), }, -- Custom LMS & Audio Engine LMS = { Enabled = false, Volume = 1.0, StartDelay = 0.0, StartEffect = "None", EffectVolume = 1.0, LoopTrack = true, SurvivorTrack = "None", KillerTrack = "None", DOD_SurvCamDist = 4.8, DOD_KillerCamDist = 4.8, }, -- Visuals & 4-Directional 2D Box / Tags Engine Vis = { DoubleCheck = true, Loc_Enabled = false, Loc_Style = {Outline = false, Fill = false}, Loc_Fill = Color3.fromRGB(100, 100, 255), Loc_Out = Color3.fromRGB(255, 255, 255), Loc_LF = 2, Loc_LO = 0, K_Enabled = false, K_Style = {Outline = false, Fill = false}, K_Fill = Color3.fromRGB(255, 40, 40), K_Out = Color3.fromRGB(255, 255, 255), K_LF = 2, K_LO = 0, S_Enabled = false, S_Style = {Outline = false, Fill = false}, S_Fill = Color3.fromRGB(40, 255, 120), S_Out = Color3.fromRGB(255, 255, 255), S_LF = 2, S_LO = 0, Lobby_Enabled = false, Lobby_Style = {Outline = false, Fill = false}, Lobby_Fill = Color3.fromRGB(255, 215, 0), Lobby_Out = Color3.fromRGB(255, 255, 255), Lobby_LF = 2, Lobby_LO = 0, Lobby_Box_Tog = false, Lobby_Box_Fill = Color3.fromRGB(255, 215, 0), Lobby_Box_Out = Color3.fromRGB(255, 255, 255), Lobby_Box_Limp_Fill = 4, Lobby_Box_Limp_Out = 0, Lobby_Role_Tog = false, Lobby_Role_Dir = "Top", Lobby_Role_Order = 1, Lobby_Role_Fill = Color3.fromRGB(255, 220, 60), Lobby_Role_Out = Color3.fromRGB(0, 0, 0), Lobby_Role_Limp = 0, Box_WOffset = 0, Box_HOffset = 0, Surv_Box_Tog = false, Surv_Box_Fill = Color3.fromRGB(40, 255, 120), Surv_Box_Out = Color3.fromRGB(255, 255, 255), Surv_Box_Limp_Fill = 4, Surv_Box_Limp_Out = 0, Killer_Box_Tog = false, Killer_Box_Fill = Color3.fromRGB(255, 40, 40), Killer_Box_Out = Color3.fromRGB(255, 255, 255), Killer_Box_Limp_Fill= 4, Killer_Box_Limp_Out= 0, Tags_GlobalLimp = 0, -- Survivor Tags Surv_Role_Tog = false, Surv_Role_Dir = "Top", Surv_Role_Order = 1, Surv_Role_Fill = Color3.fromRGB(60, 255, 120), Surv_Role_Out = Color3.fromRGB(0, 0, 0), Surv_Role_Limp = 0, Surv_Name_Tog = false, Surv_Name_Dir = "Top", Surv_Name_Order = 2, Surv_Name_Fill = Color3.fromRGB(255, 255, 255), Surv_Name_Out = Color3.fromRGB(0, 0, 0), Surv_Name_Limp = 0, Surv_Skin_Tog = false, Surv_Skin_Dir = "Top", Surv_Skin_Order = 3, Surv_Skin_Fill = Color3.fromRGB(150, 255, 200), Surv_Skin_Out = Color3.fromRGB(0, 0, 0), Surv_Skin_Limp = 0, Surv_Login_Tog = false, Surv_Login_Dir = "Top", Surv_Login_Order = 4, Surv_Login_Fill = Color3.fromRGB(200, 200, 200), Surv_Login_Out = Color3.fromRGB(0, 0, 0), Surv_Login_Limp = 0, Surv_HP_Tog = false, Surv_HP_Dir = "Top", Surv_HP_Order = 5, Surv_HP_Fill = Color3.fromRGB(60, 255, 120), Surv_HP_Out = Color3.fromRGB(0, 0, 0), Surv_HP_Limp = 0, Surv_Status_Tog = false, Surv_Status_Dir = "Top", Surv_Status_Order = 6, Surv_Status_Fill = Color3.fromRGB(255, 180, 0), Surv_Status_Out = Color3.fromRGB(0, 0, 0), Surv_Status_Limp = 0, Surv_Dist_Tog = false, Surv_Dist_Dir = "Bottom", Surv_Dist_Order = 1, Surv_Dist_Fill = Color3.fromRGB(255, 255, 255), Surv_Dist_Out = Color3.fromRGB(0, 0, 0), Surv_Dist_Limp = 0, -- Killer Tags Killer_Role_Tog = false, Killer_Role_Dir = "Top", Killer_Role_Order = 1, Killer_Role_Fill = Color3.fromRGB(255, 60, 60), Killer_Role_Out = Color3.fromRGB(0, 0, 0), Killer_Role_Limp = 0, Killer_Name_Tog = false, Killer_Name_Dir = "Top", Killer_Name_Order = 2, Killer_Name_Fill = Color3.fromRGB(255, 255, 255), Killer_Name_Out = Color3.fromRGB(0, 0, 0), Killer_Name_Limp = 0, Killer_Skin_Tog = false, Killer_Skin_Dir = "Top", Killer_Skin_Order = 3, Killer_Skin_Fill = Color3.fromRGB(255, 150, 150), Killer_Skin_Out = Color3.fromRGB(0, 0, 0), Killer_Skin_Limp = 0, Killer_Login_Tog = false, Killer_Login_Dir = "Top", Killer_Login_Order = 4, Killer_Login_Fill = Color3.fromRGB(255, 180, 180), Killer_Login_Out = Color3.fromRGB(0, 0, 0), Killer_Login_Limp = 0, Killer_HP_Tog = false, Killer_HP_Dir = "Top", Killer_HP_Order = 5, Killer_HP_Fill = Color3.fromRGB(255, 60, 60), Killer_HP_Out = Color3.fromRGB(0, 0, 0), Killer_HP_Limp = 0, Killer_Status_Tog = false, Killer_Status_Dir = "Top", Killer_Status_Order = 6, Killer_Status_Fill = Color3.fromRGB(255, 220, 0), Killer_Status_Out = Color3.fromRGB(0, 0, 0), Killer_Status_Limp = 0, Killer_Dist_Tog = false, Killer_Dist_Dir = "Bottom", Killer_Dist_Order = 1, Killer_Dist_Fill = Color3.fromRGB(255, 60, 60), Killer_Dist_Out = Color3.fromRGB(0, 0, 0), Killer_Dist_Limp = 0, Dist_Unit = "Both", Fullbright = false, AmbCol = Color3.fromRGB(255, 255, 255), RemoveFog = false, }, TimeUI = { Enabled = false }, ShowMobileBtn = false, } pcall(function() if isfile and isfile(LMS_CFG_FILE) then local saved = HttpService:JSONDecode(readfile(LMS_CFG_FILE)) if saved then if saved.SurvivorTrack then GlobalConfig.LMS.SurvivorTrack = saved.SurvivorTrack end if saved.KillerTrack then GlobalConfig.LMS.KillerTrack = saved.KillerTrack end end end end) local function SaveLMSConfig() pcall(function() if writefile then local data = { SurvivorTrack = GlobalConfig.LMS.SurvivorTrack, KillerTrack = GlobalConfig.LMS.KillerTrack, } writefile(LMS_CFG_FILE, HttpService:JSONEncode(data)) end end) end local ButtonSettings = { Menu = { Size = 45, Transp = 0, Enabled = true }, HideUI = { Size = 45, Transp = 0, Enabled = true }, Speed = { Size = 45, Transp = 0, Enabled = false }, AH = { Size = 45, Transp = 0, Enabled = false }, Combat = { Size = 45, Transp = 0, Enabled = false }, WP = { Size = 45, Transp = 0, Enabled = false }, MouseTP = { Size = 45, Transp = 0, Enabled = false }, } -- ── GLOBAL STATE ───────────────────────────────────────────────────────── local GlobalState = { ScriptActive = true, CurrentPing = 60, Waypoints = {}, TP_Target = nil, LastBurstTick = 0, MouseTP_Primed = false, LMS = { IsCapturing = false, VisualPlayed = false, ShadowSound = nil, StartDelayTick = nil, DebouncePending = false, DebounceStart = 0, FadeTween = nil, NativeSoundsTracked = {}, }, Vis = { Highlights = {}, TagCache = {}, GenCache = {}, ItemCache = {}, GeneratorsList = {}, ItemsList = {}, KillerUserId = nil, VisualGUI = Instance.new("Folder") }, AH = { LastAttack = 0, VisualGui = nil, VisualRot = 0 }, Combat = { LastAction = 0, LastSlash = 0 }, UpdateMobileBtn = nil, } local SafeGuiRoot = GetSafeGuiParent() GlobalState.Vis.VisualGUI.Name = "Doomsense_Forsaken_Visuals" GlobalState.Vis.VisualGUI.Parent = SafeGuiRoot local VisualsGui = Instance.new("ScreenGui") VisualsGui.Name = "Doomsense_2D_Overlay" VisualsGui.ResetOnSpawn = false VisualsGui.IgnoreGuiInset = true VisualsGui.DisplayOrder = 999 VisualsGui.Enabled = true VisualsGui.Parent = SafeGuiRoot local FX_Gui = Instance.new("ScreenGui") FX_Gui.Name = "Doomsense_LMS_FX" FX_Gui.ResetOnSpawn = false FX_Gui.IgnoreGuiInset = true FX_Gui.DisplayOrder = 1000 FX_Gui.Parent = SafeGuiRoot -- ── SLEEK TIME UI PILL WIDGET ──────────────────────────────────────────── local TimeScreenGui = Instance.new("ScreenGui") TimeScreenGui.Name = "Doomsense_TimeUI" TimeScreenGui.ResetOnSpawn = false TimeScreenGui.DisplayOrder = 20 TimeScreenGui.Enabled = false TimeScreenGui.Parent = SafeGuiRoot local TimeFrame = Instance.new("Frame", TimeScreenGui) TimeFrame.Name = "TimeFrame" TimeFrame.Size = UDim2.fromOffset(115, 32) TimeFrame.Position = UDim2.new(0.5, -57, 0.04, 0) TimeFrame.BackgroundColor3 = Color3.fromRGB(15, 15, 20) TimeFrame.BackgroundTransparency = 0.15 TimeFrame.BorderSizePixel = 0 TimeFrame.Active = true Instance.new("UICorner", TimeFrame).CornerRadius = UDim.new(1, 0) local TimeStroke = Instance.new("UIStroke", TimeFrame) TimeStroke.Thickness = 1.2 TimeStroke.Color = Color3.fromRGB(96, 205, 255) TimeStroke.Transparency = 0.2 local LiveDot = Instance.new("Frame", TimeFrame) LiveDot.Name = "LiveDot" LiveDot.Size = UDim2.fromOffset(6, 6) LiveDot.Position = UDim2.new(0, 12, 0.5, -3) LiveDot.BackgroundColor3 = Color3.fromRGB(40, 255, 120) Instance.new("UICorner", LiveDot).CornerRadius = UDim.new(1, 0) local TimeLabel = Instance.new("TextLabel", TimeFrame) TimeLabel.Size = UDim2.new(1, -26, 1, 0) TimeLabel.Position = UDim2.new(0, 22, 0, 0) TimeLabel.BackgroundTransparency = 1 TimeLabel.Font = Enum.Font.GothamBold TimeLabel.TextSize = 13 TimeLabel.TextColor3 = Color3.fromRGB(240, 240, 255) TimeLabel.TextXAlignment = Enum.TextXAlignment.Left TimeLabel.Text = os.date("%H:%M:%S") local draggingTime, dragTimeStart, timeStartPos = false, nil, nil TimeFrame.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then draggingTime = true; dragTimeStart = input.Position; timeStartPos = TimeFrame.Position end end) TimeFrame.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then draggingTime = false if writefile then pcall(function() writefile(TIMEUI_POS_FILE, HttpService:JSONEncode({ ScaleX = TimeFrame.Position.X.Scale, OffsetX = TimeFrame.Position.X.Offset, ScaleY = TimeFrame.Position.Y.Scale, OffsetY = TimeFrame.Position.Y.Offset })) end) end end end) UserInputService.InputChanged:Connect(function(input) if draggingTime and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then local delta = input.Position - dragTimeStart TimeFrame.Position = UDim2.new(timeStartPos.X.Scale, timeStartPos.X.Offset + delta.X, timeStartPos.Y.Scale, timeStartPos.Y.Offset + delta.Y) end end) -- ── MOBILE TOUCH OVERLAY ───────────────────────────────────────────────── local MobileScreenGui = Instance.new("ScreenGui") MobileScreenGui.Name = "Doomsense_MobileUI" MobileScreenGui.ResetOnSpawn = false MobileScreenGui.DisplayOrder = 25 MobileScreenGui.Enabled = false MobileScreenGui.Parent = SafeGuiRoot local MOB_ICONS = { Menu = "rbxassetid://10723415766", HideUI = "rbxassetid://10734896206", Speed = "rbxassetid://10734924532", AH = "rbxassetid://10734975692", Combat = "rbxassetid://10734950309", WP = "rbxassetid://10734918507", MouseTP = "rbxassetid://10734900011", } local function GetSavedPos(id, defaultPos) if isfile and isfile(MOBILE_POS_FILE) then local success, res = pcall(function() local decoded = HttpService:JSONDecode(readfile(MOBILE_POS_FILE)) if decoded and decoded[id] then return UDim2.new(decoded[id].ScaleX, decoded[id].OffsetX, decoded[id].ScaleY, decoded[id].OffsetY) end end) if success and res then return res end end return defaultPos end local MobileControl = { Buttons = {}, EditMode = false } function MobileControl:GetSafePosition(pos, btnSize) local vp = GetCamera().ViewportSize local absX = pos.X.Scale * vp.X + pos.X.Offset local absY = pos.Y.Scale * vp.Y + pos.Y.Offset absX = math.clamp(absX, 10, math.max(10, vp.X - btnSize - 10)) absY = math.clamp(absY, 10, math.max(10, vp.Y - btnSize - 10)) return UDim2.fromOffset(absX, absY) end function MobileControl:SavePositions() if not writefile then return end pcall(function() local data = {} for id, btn in pairs(self.Buttons) do if btn.Canvas then data[id] = { ScaleX = btn.Canvas.Position.X.Scale, OffsetX = btn.Canvas.Position.X.Offset, ScaleY = btn.Canvas.Position.Y.Scale, OffsetY = btn.Canvas.Position.Y.Offset } end end writefile(MOBILE_POS_FILE, HttpService:JSONEncode(data)) end) end function MobileControl:CreateButton(id, icon, defaultPos, callback) local cfg = ButtonSettings[id] or { Size = 45, Transp = 0, Enabled = true } local btnFrame = Instance.new("Frame", MobileScreenGui) btnFrame.Name = "MobBtn_" .. id btnFrame.Size = UDim2.fromOffset(cfg.Size, cfg.Size) btnFrame.Position = self:GetSafePosition(defaultPos, cfg.Size) btnFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 20) btnFrame.BackgroundTransparency = cfg.Transp / 100 btnFrame.Visible = cfg.Enabled btnFrame.Active = true Instance.new("UICorner", btnFrame).CornerRadius = UDim.new(0, 10) local stroke = Instance.new("UIStroke", btnFrame) stroke.Thickness = 1.5 stroke.Color = Color3.fromRGB(96, 205, 255) local img = Instance.new("ImageLabel", btnFrame) img.Size = UDim2.fromScale(0.65, 0.65); img.Position = UDim2.fromScale(0.175, 0.175) img.BackgroundTransparency = 1; img.Image = icon or "" img.ImageColor3 = Color3.fromRGB(255, 255, 255) local clickDetector = Instance.new("TextButton", btnFrame) clickDetector.Size = UDim2.fromScale(1, 1); clickDetector.BackgroundTransparency = 1; clickDetector.Text = "" local dragging, dragStart, startPos = false, nil, nil clickDetector.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then if MobileControl.EditMode then dragging = true; dragStart = input.Position; startPos = btnFrame.Position else if callback then callback() end end end end) clickDetector.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then if dragging then dragging = false; MobileControl:SavePositions() end end end) UserInputService.InputChanged:Connect(function(input) if dragging and (input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseMovement) then local delta = input.Position - dragStart local newPos = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) btnFrame.Position = MobileControl:GetSafePosition(newPos, btnFrame.AbsoluteSize.X) end end) local btnObj = { Canvas = btnFrame, Stroke = stroke, Image = img, ApplySettings = function() local curCfg = ButtonSettings[id] btnFrame.Size = UDim2.fromOffset(curCfg.Size, curCfg.Size) btnFrame.BackgroundTransparency = curCfg.Transp / 100 btnFrame.Visible = curCfg.Enabled end, SetState = function(state) stroke.Color = state and Color3.fromRGB(40, 255, 120) or Color3.fromRGB(96, 205, 255) end } self.Buttons[id] = btnObj return btnObj end function MobileControl:SetEditMode(v) self.EditMode = v for _, btn in pairs(self.Buttons) do if btn.Stroke then btn.Stroke.Color = v and Color3.fromRGB(255, 200, 0) or Color3.fromRGB(96, 205, 255) end end end function MobileControl:ToggleVisibility() MobileScreenGui.Enabled = not MobileScreenGui.Enabled end local Options = Fluent.Options -- ── UTILITY HELPERS ────────────────────────────────────────────────────── local function GetRoot(char) if not char or typeof(char) ~= "Instance" then return nil end return char:FindFirstChild("HumanoidRootPart") or char:FindFirstChild("Torso") or char:FindFirstChild("UpperTorso") or char.PrimaryPart end local EmotePropBuffer = { Tracked = {}, -- [BasePart] = os.clock() } function EmotePropBuffer:Add(part) if not part or not part:IsA("BasePart") then return end self.Tracked[part] = os.clock() part.CanCollide = false part.CanTouch = false end function EmotePropBuffer:Clean(rootPos) local now = os.clock() for part, lastSeen in pairs(self.Tracked) do if not part.Parent or not part:IsDescendantOf(Workspace) then self.Tracked[part] = nil else local dist = rootPos and (part.Position - rootPos).Magnitude or 999 if dist > 14 or (now - lastSeen > 2.5) then pcall(function() part.CanCollide = true end) self.Tracked[part] = nil else part.CanCollide = false part.CanTouch = false end end end end function EmotePropBuffer:ClearAll() for part, _ in pairs(self.Tracked) do if part and part.Parent then pcall(function() part.CanCollide = true end) end end table.clear(self.Tracked) end local function RestoreCollisions() local char = LocalPlayer.Character if not GlobalConfig.FixEmoteProps then EmotePropBuffer:ClearAll() end if not char then return end pcall(function() for _, part in ipairs(char:GetDescendants()) do if part:IsA("BasePart") then if part.Name == "HumanoidRootPart" then part.CanCollide = false else part.CanCollide = true end end end local hum = char:FindFirstChildOfClass("Humanoid") if hum then hum:SetStateEnabled(Enum.HumanoidStateType.FallingDown, true) hum:SetStateEnabled(Enum.HumanoidStateType.Ragdoll, true) end end) end RunService.Stepped:Connect(function() if GlobalConfig.SafeMode then return end local char = LocalPlayer.Character if not char then return end local root = GetRoot(char) local hum = char:FindFirstChildOfClass("Humanoid") local shouldGhostEmotes = GlobalConfig.FixEmoteProps or (GlobalConfig.Noclip and GlobalConfig.NoclipMode == "Anti-Ejection Physics") if shouldGhostEmotes and root then if hum and hum.SeatPart then EmotePropBuffer:Add(hum.SeatPart) end pcall(function() for _, connected in ipairs(root:GetConnectedParts(true)) do if connected:IsA("BasePart") and not connected:IsDescendantOf(char) then EmotePropBuffer:Add(connected) end end end) pcall(function() local r = tonumber(GlobalConfig.EmoteFixRadius) or 7.5 local overlap = OverlapParams.new() overlap.FilterType = Enum.RaycastFilterType.Exclude overlap.FilterDescendantsInstances = { char, GlobalState.Vis.VisualGUI } local nearby = Workspace:GetPartBoundsInRadius(root.Position, r, overlap) local mapBuild = Workspace:FindFirstChild("Map") and Workspace.Map:FindFirstChild("Ingame") and Workspace.Map.Ingame:FindFirstChild("Map") and Workspace.Map.Ingame.Map:FindFirstChild("MapBuild") for _, p in ipairs(nearby) do local isStatic = mapBuild and p:IsDescendantOf(mapBuild) if not isStatic and p:IsA("BasePart") and p.Size.Magnitude < 16 then EmotePropBuffer:Add(p) end end end) EmotePropBuffer:Clean(root.Position) else if not GlobalConfig.Noclip and next(EmotePropBuffer.Tracked) then EmotePropBuffer:ClearAll() end end if GlobalConfig.Noclip then if hum then hum:SetStateEnabled(Enum.HumanoidStateType.FallingDown, false) hum:SetStateEnabled(Enum.HumanoidStateType.Ragdoll, false) end -- classic noclip pcall(function() for _, part in ipairs(char:GetDescendants()) do if part:IsA("BasePart") then part.CanCollide = false if GlobalConfig.NoclipMode == "Anti-Ejection Physics" then part.CanTouch = false end end end end) -- for Anti-Ejection if GlobalConfig.NoclipMode == "Anti-Ejection Physics" then local hitboxes = Workspace:FindFirstChild("Hitboxes") if hitboxes then pcall(function() for _, hb in ipairs(hitboxes:GetChildren()) do if hb:IsA("BasePart") and (hb.Name:find(LocalPlayer.Name) or (hb:FindFirstChildWhichIsA("Weld") and hb:FindFirstChildWhichIsA("Weld").Part0 and hb:FindFirstChildWhichIsA("Weld").Part0:IsDescendantOf(char))) then hb.CanCollide = false hb.CanTouch = false end end end) end if root and not GlobalConfig.IsSpeeding then local curVel = root.AssemblyLinearVelocity if curVel.Magnitude > 85 then root.AssemblyLinearVelocity = Vector3.new(0, math.clamp(curVel.Y, -25, 25), 0) end end end end end) local function IsSafeBlocked(featureName) if GlobalConfig.SafeMode then Fluent:Notify({ Title = "Safe Mode", Content = featureName .. " is blocked in Safe Mode.", Duration = 2, Type = "Warning" }) return true end return false end local function IsPlayerAlive(playerOrChar) local char = typeof(playerOrChar) == "Instance" and (playerOrChar:IsA("Player") and playerOrChar.Character or playerOrChar) or nil if not char then return false end local ragFolder = Workspace:FindFirstChild("Ragdolls") if ragFolder and char:IsDescendantOf(ragFolder) then return false end local hum = char:FindFirstChildOfClass("Humanoid") return hum and hum.Health > 0 and char:GetAttribute("Dead") ~= true end local function GetTrans(sliderVal, isEnabled) if not isEnabled or type(sliderVal) ~= "number" then return 1 end return math.clamp(sliderVal / 5, 0, 1) end -- ═════════════════════════════════════════════════════════════════════════ -- SPAWN CUBE -- ═════════════════════════════════════════════════════════════════════════ local SpawnEngine = { CenterPos = GlobalConfig.Spawn.SpawnPoint, InitialLocked = false, Adornment = nil, SelectionBox = nil, } function SpawnEngine:CreateVisualCube() if self.Adornment then pcall(function() self.Adornment:Destroy() end); self.Adornment = nil; self.SelectionBox = nil end local size = tonumber(GlobalConfig.Spawn.CubeSize) or 3000 local adorn = Instance.new("BoxHandleAdornment") adorn.Name = "Doom_SpawnCube_Visual"; adorn.Adornee = Workspace.Terrain adorn.CFrame = CFrame.new(self.CenterPos); adorn.Size = Vector3.new(size, size, size) adorn.Color3 = GlobalConfig.Spawn.EdgeColor; adorn.Transparency = 1; adorn.AlwaysOnTop = false; adorn.ZIndex = 1 adorn.Visible = GlobalConfig.Spawn.ShowEdges and GlobalConfig.Spawn.Enabled adorn.Parent = GlobalState.Vis.VisualGUI local box = Instance.new("SelectionBox") box.Name = "SpawnCube_Edges"; box.Adornee = adorn; box.Color3 = GlobalConfig.Spawn.EdgeColor box.LineThickness = 0.04; box.SurfaceTransparency = 1; box.Transparency = 0 box.Visible = GlobalConfig.Spawn.ShowEdges and GlobalConfig.Spawn.Enabled box.Parent = adorn self.Adornment = adorn; self.SelectionBox = box end function SpawnEngine:SetNewPosition(customPos) local targetPos = customPos if not targetPos then local root = LocalPlayer.Character and GetRoot(LocalPlayer.Character) if root then targetPos = root.Position end end if targetPos then self.CenterPos = targetPos; self.InitialLocked = true GlobalConfig.Spawn.SpawnPoint = targetPos self:CreateVisualCube() return true end return false end function SpawnEngine:UpdateVisual() if self.Adornment and self.SelectionBox then local size = tonumber(GlobalConfig.Spawn.CubeSize) or 3000 self.Adornment.Size = Vector3.new(size, size, size) self.Adornment.CFrame = CFrame.new(self.CenterPos) self.Adornment.Color3 = GlobalConfig.Spawn.EdgeColor self.SelectionBox.Color3 = GlobalConfig.Spawn.EdgeColor self.Adornment.Visible = GlobalConfig.Spawn.ShowEdges and GlobalConfig.Spawn.Enabled self.SelectionBox.Visible = GlobalConfig.Spawn.ShowEdges and GlobalConfig.Spawn.Enabled end end function SpawnEngine:IsInSpawnZone(position) if not GlobalConfig.Spawn.Enabled or not position then return false end local center = self.CenterPos local halfSize = (tonumber(GlobalConfig.Spawn.CubeSize) or 3000) / 2 return (position.X >= center.X - halfSize and position.X <= center.X + halfSize) and (position.Y >= center.Y - halfSize and position.Y <= center.Y + halfSize) and (position.Z >= center.Z - halfSize and position.Z <= center.Z + halfSize) end -- ═════════════════════════════════════════════════════════════════════════ -- ATTRIBUTE & COMBAT STATE RESOLVER -- ═════════════════════════════════════════════════════════════════════════ local function GetCombatState(char) if not char or typeof(char) ~= "Instance" then return { DisplayName = "Unknown", Username = "Unknown", SkinName = "Default", RealHP = 100, MaxHP = 100, Overheal = 0, TotalHP = 100, IsSlateskin = false } end local hum = char:FindFirstChildOfClass("Humanoid") local realHP = hum and hum.Health or 100 local maxHP = (hum and hum.MaxHealth > 0) and hum.MaxHealth or 100 local overHP = (char:GetAttribute("Overheal") or 0) local dName = char:GetAttribute("ActorDisplayName") local uName = char:GetAttribute("Username") local sName = char:GetAttribute("SkinNameDisplay") or char:GetAttribute("SkinName") local p = Players:GetPlayerFromCharacter(char) or Players:FindFirstChild(char.Name) local fallbackName = p and p.DisplayName or char.Name local fallbackUser = p and p.Name or char.Name local finalName = (dName and tostring(dName) ~= "" and tostring(dName)) or fallbackName local isNoobChar = (finalName:lower() == "noob" or char.Name:lower():find("noob") ~= nil) local hasSlateskin = isNoobChar and (char:GetAttribute("Slateskin") == true or char:GetAttribute("SlateskinHP") ~= nil) return { IsInvincible = char:GetAttribute("Invincible") == true, IsStunned = (char:GetAttribute("IsStunned") == true), IsFixingGen = char:GetAttribute("FixingGenerator") == true, IsHelpless = char:GetAttribute("AbilitiesDisabled") == true or char:GetAttribute("Helpless") == true, IsShielded = char:GetAttribute("DusekkarProtected") ~= nil or char:GetAttribute("ShatterpointHP") ~= nil, IsSlateskin = hasSlateskin, Overheal = overHP, TotalHP = realHP + overHP, RealHP = realHP, MaxHP = maxHP, DisplayName = finalName, SkinName = (sName and tostring(sName) ~= "" and tostring(sName)) or "Default", Username = (uName and tostring(uName) ~= "" and tostring(uName)) or fallbackUser, } end local function UpdateDynamicKillerRole() pcall(function() local killersFolder = Workspace:FindFirstChild("Players") and Workspace.Players:FindFirstChild("Killers") if killersFolder then for _, killerModel in ipairs(killersFolder:GetChildren()) do local p = Players:GetPlayerFromCharacter(killerModel) if p and p.Character == killerModel then GlobalState.Vis.KillerUserId = p.UserId return end end end if GlobalState.Vis.KillerUserId then local killerPlr = Players:GetPlayerByUserId(GlobalState.Vis.KillerUserId) if killerPlr and killerPlr.Character then local kRoot = GetRoot(killerPlr.Character) local kHum = killerPlr.Character:FindFirstChildOfClass("Humanoid") if kRoot and kHum and kHum.Health > 0 then local inSpawn = SpawnEngine:IsInSpawnZone(kRoot.Position) local isExactly100 = math.abs(kHum.Health - 100) < 0.05 if inSpawn and isExactly100 then GlobalState.Vis.KillerUserId = nil end else GlobalState.Vis.KillerUserId = nil end else GlobalState.Vis.KillerUserId = nil end end if not GlobalState.Vis.KillerUserId and GlobalConfig.Vis.DoubleCheck then local maxHP, candidateUserId = 0, nil for _, p in pairs(Players:GetPlayers()) do if p.Character and IsPlayerAlive(p) then local pRoot = GetRoot(p.Character) local pHum = p.Character:FindFirstChildOfClass("Humanoid") if pRoot and pHum and not SpawnEngine:IsInSpawnZone(pRoot.Position) then if pHum.Health > maxHP then maxHP = pHum.Health; candidateUserId = p.UserId end end end end if candidateUserId and maxHP > 100 then GlobalState.Vis.KillerUserId = candidateUserId end end end) end local function GetPlayerRole(playerOrChar, forcedRole) if forcedRole and forcedRole ~= "Auto" then return forcedRole end local char = typeof(playerOrChar) == "Instance" and (playerOrChar:IsA("Model") and playerOrChar or playerOrChar.Character) or nil local p = typeof(playerOrChar) == "Instance" and (playerOrChar:IsA("Player") and playerOrChar or Players:GetPlayerFromCharacter(char)) or nil if char then local killersFolder = Workspace:FindFirstChild("Players") and Workspace.Players:FindFirstChild("Killers") if killersFolder and char:IsDescendantOf(killersFolder) then return "Killer" end local survFolder = Workspace:FindFirstChild("Players") and Workspace.Players:FindFirstChild("Survivors") if survFolder and char:IsDescendantOf(survFolder) then return "Survivor" end end if p and p.UserId == GlobalState.Vis.KillerUserId then return "Killer" end return "Survivor" end -- ═════════════════════════════════════════════════════════════════════════ -- 3D RAYCAST MOUSE TELEPORT ENGINE -- ═════════════════════════════════════════════════════════════════════════ local MouseTPEngine = { MarkerPart = nil, SelectionSphere = nil } function MouseTPEngine:GetRaycastHit() local cam = GetCamera() if not cam then return nil, nil end local mousePos = UserInputService:GetMouseLocation() local unitRay = cam:ViewportPointToRay(mousePos.X, mousePos.Y) local params = RaycastParams.new() params.FilterType = Enum.RaycastFilterType.Exclude local ignoreList = { GlobalState.Vis.VisualGUI } if LocalPlayer.Character then table.insert(ignoreList, LocalPlayer.Character) end params.FilterDescendantsInstances = ignoreList params.IgnoreWater = true local maxDist = tonumber(GlobalConfig.MouseTP.MaxDistance) or 2000 local result = Workspace:Raycast(unitRay.Origin, unitRay.Direction * maxDist, params) if result then return result.Position, result.Normal else return unitRay.Origin + (unitRay.Direction * maxDist), Vector3.new(0, 1, 0) end end function MouseTPEngine:CreateMarker() if self.MarkerPart and self.MarkerPart.Parent then return end local size = tonumber(GlobalConfig.MouseTP.MarkerSize) or 3.5 local part = Instance.new("Part") part.Name = "Doom_MouseTP_Marker"; part.Shape = Enum.PartType.Cylinder part.Size = Vector3.new(0.2, size, size); part.Anchored = true; part.CanCollide = false part.Material = Enum.Material.Neon; part.Transparency = 0.4; part.Color = GlobalConfig.MouseTP.MarkerColor part.Parent = GlobalState.Vis.VisualGUI local sphere = Instance.new("SelectionSphere") sphere.Adornee = part; sphere.Color3 = GlobalConfig.MouseTP.MarkerColor; sphere.Transparency = 0.2; sphere.Parent = part self.MarkerPart = part; self.SelectionSphere = sphere end function MouseTPEngine:DestroyMarker() if self.MarkerPart then pcall(function() self.MarkerPart:Destroy() end); self.MarkerPart = nil; self.SelectionSphere = nil end end function MouseTPEngine:Teleport() if IsSafeBlocked("Mouse Teleport") then return end local char = LocalPlayer.Character local root = GetRoot(char) if not root then return end local hitPos, _ = self:GetRaycastHit() if hitPos then local hOffset = tonumber(GlobalConfig.MouseTP.HeightOffset) or 0 root.CFrame = CFrame.new(hitPos + Vector3.new(0, hOffset, 0)) Fluent:Notify({ Title = "Mouse TP", Content = "Teleported to 3D Cursor Target!", Duration = 1.5, Type = "Success" }) end end function MouseTPEngine:Update() if not GlobalConfig.MouseTP.Enabled or not GlobalConfig.MouseTP.VisualMarker or GlobalConfig.SafeMode then if self.MarkerPart then self:DestroyMarker() end return end self:CreateMarker() local hitPos, hitNormal = self:GetRaycastHit() if hitPos and self.MarkerPart then local size = tonumber(GlobalConfig.MouseTP.MarkerSize) or 3.5 self.MarkerPart.Size = Vector3.new(0.2, size, size) self.MarkerPart.Color = GlobalConfig.MouseTP.MarkerColor if self.SelectionSphere then self.SelectionSphere.Color3 = GlobalConfig.MouseTP.MarkerColor end self.MarkerPart.CFrame = CFrame.lookAt(hitPos, hitPos + hitNormal) * CFrame.Angles(0, math.rad(90), 0) end end -- ── WAYPOINT SYSTEM ────────────────────────────────────────────────────── local function SaveWaypoints() pcall(function() local data = {} for name, cf in pairs(GlobalState.Waypoints) do data[name] = {cf:GetComponents()} end writefile(WAYPOINTS_FILE, HttpService:JSONEncode(data)) end) end local function LoadWaypoints() pcall(function() if isfile and isfile(WAYPOINTS_FILE) then local data = HttpService:JSONDecode(readfile(WAYPOINTS_FILE)) if data then for name, comps in pairs(data) do if type(comps) == "table" and #comps == 12 then GlobalState.Waypoints[name] = CFrame.new(unpack(comps)) end end end end end) end LoadWaypoints() -- ── PHYSICAL SPEEDHACK ─────────────────────────────────────────────────── local function DoMovementPhysics(dt) if GlobalConfig.SafeMode or not GlobalConfig.IsSpeeding or GlobalConfig.AH.Enabled then return end local char = LocalPlayer.Character local root = GetRoot(char) local hum = char and char:FindFirstChildOfClass("Humanoid") if not char or not root or not hum then return end pcall(function() if hum.MoveDirection.Magnitude > 0.05 then local moveVec = hum.MoveDirection.Unit local now = os.clock() local speed = tonumber(GlobalConfig.WalkSpeed) or 16 local intervalVal = tonumber(GlobalConfig.SpeedInterval) or 0 if intervalVal == 0 then if GlobalConfig.SpeedMode == "Linear Mover (BodyPhysics)" or GlobalConfig.SpeedMode == "Assembly Velocity" then root.AssemblyLinearVelocity = Vector3.new(moveVec.X * speed, root.AssemblyLinearVelocity.Y, moveVec.Z * speed) elseif GlobalConfig.SpeedMode == "Smooth CFrame (Anti-Lag)" then root.CFrame = root.CFrame + (moveVec * (speed * dt)) elseif GlobalConfig.SpeedMode == "Humanoid WalkSpeed" then hum.WalkSpeed = speed end else local intervalSec = intervalVal / 1000 local sprintDuration = 0.12 local totalCycle = intervalSec + sprintDuration local timeInCycle = (now - GlobalState.LastBurstTick) % totalCycle if timeInCycle <= sprintDuration then if GlobalConfig.SpeedMode == "Linear Mover (BodyPhysics)" or GlobalConfig.SpeedMode == "Assembly Velocity" then root.AssemblyLinearVelocity = Vector3.new(moveVec.X * speed, root.AssemblyLinearVelocity.Y, moveVec.Z * speed) elseif GlobalConfig.SpeedMode == "Smooth CFrame (Anti-Lag)" then root.CFrame = root.CFrame + (moveVec * (speed * dt)) elseif GlobalConfig.SpeedMode == "Humanoid WalkSpeed" then hum.WalkSpeed = speed end else if GlobalConfig.SpeedMode == "Humanoid WalkSpeed" then hum.WalkSpeed = 16 end end end end end) end -- ═════════════════════════════════════════════════════════════════════════ -- SURVIVOR COMBAT ENGINE -- ═════════════════════════════════════════════════════════════════════════ local function DoSurvivorCombatEngine() if not GlobalConfig.Combat.Enabled or GlobalConfig.SafeMode then return end if GetPlayerRole(LocalPlayer) ~= "Survivor" then return end local char = LocalPlayer.Character local myRoot = GetRoot(char) if not char or not myRoot then return end local myCombat = GetCombatState(char) local myNameLow = myCombat.DisplayName:lower() pcall(function() if (myNameLow:find("1337") or myNameLow:find("guest")) and GlobalConfig.Combat.Guest_ParryQ then local maxRange = tonumber(GlobalConfig.Combat.Guest_Range) or 14 for _, p in pairs(Players:GetPlayers()) do if p ~= LocalPlayer and p.Character and IsPlayerAlive(p) and GetPlayerRole(p) == "Killer" then local kRoot = GetRoot(p.Character) if kRoot and (kRoot.Position - myRoot.Position).Magnitude <= maxRange then if tick() - GlobalState.Combat.LastAction >= 0.25 then GlobalState.Combat.LastAction = tick() SafeSendKey(Enum.KeyCode.Q) if GlobalConfig.Combat.Guest_FollowupE then local followupDelay = tonumber(GlobalConfig.Combat.Guest_FollowupDelay) or 1.0 task.delay(followupDelay, function() if not GlobalConfig.Combat.Enabled or GlobalConfig.SafeMode then return end local curChar = LocalPlayer.Character local curRoot = GetRoot(curChar) if not curChar or not curRoot or not IsPlayerAlive(curChar) then return end local eRange = tonumber(GlobalConfig.Combat.Guest_FollowupRange) or 18 if kRoot and kRoot.Parent and (kRoot.Position - curRoot.Position).Magnitude <= eRange then local lookTarget = Vector3.new(kRoot.Position.X, curRoot.Position.Y, kRoot.Position.Z) curRoot.CFrame = CFrame.lookAt(curRoot.Position, lookTarget) task.wait(0.02) SafeSendKey(Enum.KeyCode.E) end end) end end break end end end end if (myNameLow:find("twotime") or myNameLow:find("two time")) and GlobalConfig.Combat.TwoTime_Backstab then for _, p in pairs(Players:GetPlayers()) do if p ~= LocalPlayer and p.Character and IsPlayerAlive(p) and GetPlayerRole(p) == "Killer" then local kRoot = GetRoot(p.Character) if kRoot and (kRoot.Position - myRoot.Position).Magnitude <= 20 then local bDist = tonumber(GlobalConfig.Combat.TwoTime_Dist) or 3.5 local kLook = kRoot.CFrame.LookVector local backPos = kRoot.Position - (kLook * bDist) myRoot.CFrame = CFrame.lookAt(backPos, kRoot.Position) myRoot.AssemblyLinearVelocity = Vector3.zero SafeSendClick() break end end end end if (myNameLow:find("shedletsky") or myNameLow:find("shed")) then local slashDelay = tonumber(GlobalConfig.Combat.Shed_SlashDelay) or 0.6 if tick() - GlobalState.Combat.LastSlash >= slashDelay then for _, p in pairs(Players:GetPlayers()) do if p ~= LocalPlayer and p.Character and IsPlayerAlive(p) and GetPlayerRole(p) == "Killer" then local kRoot = GetRoot(p.Character) if kRoot and (kRoot.Position - myRoot.Position).Magnitude <= 10 then GlobalState.Combat.LastSlash = tick() local tool = char:FindFirstChildOfClass("Tool") if tool then tool:Activate() end SafeSendClick() break end end end end end end) end -- ═════════════════════════════════════════════════════════════════════════ -- KILLER AUTO HUNT ENGINE (STRICTLY KILLER ONLY) -- ═════════════════════════════════════════════════════════════════════════ local function UpdateAHTargetVisual(targetRoot) local vis = GlobalState.AH.VisualGui if not vis then local bg = Instance.new("BillboardGui") bg.Name = "Doom_AH_Target"; bg.Size = UDim2.fromOffset(100, 100); bg.AlwaysOnTop = true bg.Parent = GlobalState.Vis.VisualGUI local img = Instance.new("ImageLabel", bg) img.Size = UDim2.fromScale(1, 1); img.BackgroundTransparency = 1 img.Image = "rbxassetid://10131954007" GlobalState.AH.VisualGui = { Gui = bg, Img = img } vis = GlobalState.AH.VisualGui end if targetRoot then vis.Gui.Enabled = true; vis.Gui.Adornee = targetRoot vis.Img.ImageColor3 = GlobalConfig.AH.TargetColor GlobalState.AH.VisualRot = (GlobalState.AH.VisualRot + 4) % 360 vis.Img.Rotation = GlobalState.AH.VisualRot else vis.Gui.Enabled = false end end local function DoKillerAutoHunt() if not GlobalConfig.AH.Enabled or GlobalConfig.SafeMode then return end if GetPlayerRole(LocalPlayer) ~= "Killer" then UpdateAHTargetVisual(nil) return end local char = LocalPlayer.Character local myRoot = GetRoot(char) if not char or not myRoot then return end local myCombat = GetCombatState(char) if myCombat.IsStunned or myCombat.IsHelpless then return end pcall(function() local target = nil local validPlayers = {} for _, p in pairs(Players:GetPlayers()) do if p ~= LocalPlayer and IsPlayerAlive(p) and GetPlayerRole(p) == "Survivor" then local tChar = p.Character local tRoot = GetRoot(tChar) local tCombat = GetCombatState(tChar) if tRoot and tChar then local inSpawn = SpawnEngine:IsInSpawnZone(tRoot.Position) local canTargetSpawn = not (GlobalConfig.AH.IgnoreSpawn and inSpawn) local isInvul = GlobalConfig.AH.BypassShield and (tCombat.IsInvincible or tCombat.IsShielded) if canTargetSpawn and not isInvul then table.insert(validPlayers, { Player = p, Root = tRoot, TotalHP = tCombat.TotalHP, Distance = (tRoot.Position - myRoot.Position).Magnitude }) end end end end if #validPlayers > 0 then if GlobalConfig.AH.Mode == "Nearest" then table.sort(validPlayers, function(a, b) return a.Distance < b.Distance end) target = validPlayers[1].Root elseif GlobalConfig.AH.Mode == "Lowest HP" then table.sort(validPlayers, function(a, b) return a.TotalHP < b.TotalHP end) target = validPlayers[1].Root elseif GlobalConfig.AH.Mode == "Random" then target = validPlayers[math.random(1, #validPlayers)].Root end end if target then local tVel = target.AssemblyLinearVelocity or target.Velocity or Vector3.zero local predictPos = target.Position + Vector3.new(tVel.X, 0, tVel.Z) * 0.1 local hVal = tonumber(GlobalConfig.AH.Height) or 0 local dVal = tonumber(GlobalConfig.AH.Distance) or 0 local targetCFrame = CFrame.lookAt(predictPos, predictPos + target.CFrame.LookVector) * CFrame.new(0, hVal, dVal) myRoot.AssemblyLinearVelocity = Vector3.zero myRoot.Velocity = Vector3.zero myRoot.CFrame = targetCFrame local attackDelay = tonumber(GlobalConfig.AH.Delay) or 0.05 if tick() - GlobalState.AH.LastAttack >= attackDelay then GlobalState.AH.LastAttack = tick() if GlobalConfig.AH.AttackMethod == "Both" or GlobalConfig.AH.AttackMethod == "Simulated Click" then SafeSendClick() end if GlobalConfig.AH.AttackMethod == "Both" or GlobalConfig.AH.AttackMethod == "Tool Activate" then local tool = char:FindFirstChildOfClass("Tool") if tool then tool:Activate() end end end UpdateAHTargetVisual(target) else UpdateAHTargetVisual(nil) end end) end -- ═════════════════════════════════════════════════════════════════════════ -- SCAN WORLD -- ═════════════════════════════════════════════════════════════════════════ local function GetGeneratorAccurateProgress(genModel) if not genModel or not genModel.Parent then return 0 end local attr = genModel:GetAttribute("Progress") or genModel:GetAttribute("RepairProgress") or genModel:GetAttribute("Percent") or genModel:GetAttribute("CurrentProgress") if attr and type(attr) == "number" then return attr <= 1 and math.floor(attr * 100) or math.floor(attr) end for _, desc in ipairs(genModel:GetDescendants()) do if desc:IsA("SurfaceGui") or desc:IsA("BillboardGui") then for _, bar in ipairs(desc:GetDescendants()) do if (bar:IsA("Frame") or bar:IsA("ImageLabel")) and bar.Size.X.Scale > 0 and bar.Size.X.Scale <= 1 then if bar.BackgroundColor3.G > 0.5 and bar.BackgroundColor3.R < 0.5 then return math.floor(bar.Size.X.Scale * 100) end end end end end local objStorage = Workspace:FindFirstChild("ObjectiveStorage") or ReplicatedStorage:FindFirstChild("ObjectiveStorage") if objStorage then local match = objStorage:FindFirstChild(genModel.Name) if not match then for _, val in ipairs(objStorage:GetChildren()) do if val.Name:find(genModel.Name) or (genModel:GetAttribute("ID") and tostring(val.Name):find(tostring(genModel:GetAttribute("ID")))) then match = val break end end end if match and (match:IsA("IntValue") or match:IsA("NumberValue")) then local v = match.Value return v <= 1 and math.floor(v * 100) or math.floor(v) end end return 0 end local function UpdateCachedWorldObjectsFast() local genList = {} local itmList = {} local seenItems = {} local map = Workspace:FindFirstChild("Map") and Workspace.Map:FindFirstChild("Ingame") if map then for _, obj in ipairs(map:GetDescendants()) do if obj:IsA("Model") and (obj.Name == "Generator" or obj.Name:match("^SetupGenerators")) then local isFake = obj:FindFirstChild("FakeGenerator") ~= nil or obj:GetAttribute("Fake") == true or obj.Name:lower():find("fake") ~= nil local pVal = GetGeneratorAccurateProgress(obj) local rootPart = obj:FindFirstChild("Main") or obj.PrimaryPart or obj:FindFirstChildOfClass("BasePart") table.insert(genList, { Model = obj, Root = rootPart, IsFake = isFake, Progress = pVal }) end end end local pFolder = Workspace:FindFirstChild("Players") local scanFolders = { Workspace } if map then table.insert(scanFolders, map) end for _, folder in ipairs(scanFolders) do for _, obj in ipairs(folder:GetChildren()) do if obj.Name ~= "Players" and obj.Name ~= "Ragdolls" and obj.Name ~= "ItemLocations" then local toolCandidate = obj:IsA("Tool") and obj or obj:FindFirstChildWhichIsA("Tool") if toolCandidate and not seenItems[toolCandidate] then local isEquipped = (pFolder and toolCandidate:IsDescendantOf(pFolder)) or toolCandidate:FindFirstAncestorOfClass("Player") or (toolCandidate.Parent and toolCandidate.Parent:FindFirstChildOfClass("Humanoid")) if not isEquipped then local itemRoot = toolCandidate:FindFirstChild("ItemRoot") or toolCandidate:FindFirstChild("Handle") or toolCandidate:FindFirstChildWhichIsA("MeshPart") or toolCandidate:FindFirstChildWhichIsA("BasePart") local prompt = toolCandidate:FindFirstChildOfClass("ProximityPrompt", true) local nameLower = toolCandidate.Name:lower() local isFake = nameLower:find("fake") ~= nil or toolCandidate:GetAttribute("Fake") == true or toolCandidate:GetAttribute("Trap") == true local itemType = nil if nameLower:find("cola") or nameLower:find("bloxiade") then itemType = "Bloxy Cola" elseif nameLower:find("medkit") then itemType = isFake and "Fake Medkit" or "Medkit" end if itemType and itemRoot then seenItems[toolCandidate] = true table.insert(itmList, { Instance = toolCandidate, Root = itemRoot, Prompt = prompt, Name = itemType, IsFake = isFake, Key = (prompt and prompt.KeyboardKeyCode and prompt.KeyboardKeyCode.Name ~= "Unknown" and prompt.KeyboardKeyCode.Name) or "E" }) end end end end end end GlobalState.Vis.GeneratorsList = genList GlobalState.Vis.ItemsList = itmList end -- ═════════════════════════════════════════════════════════════════════════ -- 2.5D -- ═════════════════════════════════════════════════════════════════════════ local LMS_Visuals = {} local function CreateViewport3DModel(parent, sourceChar, isLeft, customDistance) if not sourceChar or not sourceChar:IsA("Model") then return nil, nil end local vp = Instance.new("ViewportFrame") vp.Size = UDim2.fromScale(1, 1); vp.BackgroundTransparency = 1 vp.LightColor = Color3.fromRGB(255, 235, 235); vp.LightDirection = Vector3.new(isLeft and 1 or -1, 1, -2).Unit vp.Ambient = Color3.fromRGB(130, 130, 130); vp.Parent = parent local wm = Instance.new("WorldModel", vp) local oldArch = sourceChar.Archivable sourceChar.Archivable = true local clonedChar = sourceChar:Clone() sourceChar.Archivable = oldArch if not clonedChar then return vp, nil end for _, v in ipairs(clonedChar:GetDescendants()) do if v:IsA("Script") or v:IsA("LocalScript") or v:IsA("ModuleScript") or v:IsA("Highlight") or v:IsA("BillboardGui") or v:IsA("Sound") then pcall(function() v:Destroy() end) elseif v:IsA("BasePart") then v.Anchored = true; v.CanCollide = false end end clonedChar.Parent = wm local root = clonedChar:FindFirstChild("HumanoidRootPart") or clonedChar.PrimaryPart or clonedChar:FindFirstChild("Torso") if root then local cam = Instance.new("Camera", vp); vp.CurrentCamera = cam local head = clonedChar:FindFirstChild("Head") or root local focusPos = head.Position - Vector3.new(0, 0.6, 0) local distVal = tonumber(customDistance) or 4.8 local camOffset = (isLeft and Vector3.new(2.2, 0.4, -distVal) or Vector3.new(-2.2, 0.4, -distVal)) cam.CFrame = CFrame.lookAt(focusPos + camOffset, focusPos) end return vp, clonedChar end LMS_Visuals["DOD"] = function() local Container = Instance.new("Frame", FX_Gui) Container.Name = "DOD_Container"; Container.Size = UDim2.fromScale(1, 1); Container.BackgroundTransparency = 1 local flash = Instance.new("Frame", Container) flash.Size = UDim2.fromScale(1, 1); flash.BackgroundColor3 = Color3.fromRGB(180, 0, 0); flash.BackgroundTransparency = 0.3 TweenService:Create(flash, TweenInfo.new(0.4, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), { BackgroundTransparency = 1 }):Play() local s = Instance.new("Sound", SoundService) s.SoundId = "rbxassetid://82149378025190"; s.Volume = (tonumber(GlobalConfig.LMS.EffectVolume) or 1) * 0.9; s:Play() Debris:AddItem(s, 6) local killerChar, survChar = nil, nil local killerName, survName = "Killer", "Survivor" local killersFolder = Workspace:FindFirstChild("Players") and Workspace.Players:FindFirstChild("Killers") if killersFolder then for _, c in ipairs(killersFolder:GetChildren()) do local p = Players:GetPlayerFromCharacter(c) if p and p.Character == c and IsPlayerAlive(c) then killerChar = c killerName = tostring(c:GetAttribute("ActorDisplayName") or c.Name) break end end end local survFolder = Workspace:FindFirstChild("Players") and Workspace.Players:FindFirstChild("Survivors") if survFolder then for _, c in ipairs(survFolder:GetChildren()) do local p = Players:GetPlayerFromCharacter(c) if p and p.Character == c and IsPlayerAlive(c) and not SpawnEngine:IsInSpawnZone(GetRoot(c) and GetRoot(c).Position) then survChar = c survName = tostring(c:GetAttribute("ActorDisplayName") or c.Name) break end end end local leftGroup = Instance.new("Frame", Container) leftGroup.Size = UDim2.new(0, 580, 0, 160); leftGroup.Position = UDim2.new(-0.6, 0, 0.02, 0); leftGroup.BackgroundTransparency = 1 local diesHeader = Instance.new("TextLabel", leftGroup) diesHeader.Size = UDim2.new(1, 0, 0, 30); diesHeader.BackgroundTransparency = 1; diesHeader.Text = "Survivor" diesHeader.TextColor3 = Color3.fromRGB(255, 255, 255); diesHeader.TextTransparency = 0.3 diesHeader.FontFace = Font.new("rbxasset://fonts/families/GothamSSm.json", Enum.FontWeight.Medium, Enum.FontStyle.Italic) diesHeader.TextSize = 28; diesHeader.TextXAlignment = Enum.TextXAlignment.Left local survBox = Instance.new("Frame", leftGroup) survBox.Size = UDim2.new(1, 0, 0, 60); survBox.Position = UDim2.new(0, 0, 0, 35) survBox.BackgroundColor3 = Color3.fromRGB(15, 15, 15); survBox.BackgroundTransparency = 0.2 local survStroke = Instance.new("UIStroke", survBox); survStroke.Color = Color3.fromRGB(40, 255, 120); survStroke.Thickness = 2 local survLbl = Instance.new("TextLabel", survBox); survLbl.Size = UDim2.fromScale(1, 1); survLbl.BackgroundTransparency = 1 survLbl.Text = survName; survLbl.TextColor3 = Color3.fromRGB(255, 255, 255); survLbl.Font = Enum.Font.GothamBold; survLbl.TextSize = 36 TweenService:Create(leftGroup, TweenInfo.new(0.65, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), { Position = UDim2.new(0.02, 0, 0.02, 0) }):Play() local rightGroup = Instance.new("Frame", Container) rightGroup.Size = UDim2.new(0, 580, 0, 160); rightGroup.Position = UDim2.new(1.6, -580, 0.02, 0); rightGroup.BackgroundTransparency = 1 local deathsHeader = Instance.new("TextLabel", rightGroup) deathsHeader.Size = UDim2.new(1, 0, 0, 30); deathsHeader.BackgroundTransparency = 1; deathsHeader.Text = "Killer" deathsHeader.TextColor3 = Color3.fromRGB(255, 255, 255); deathsHeader.TextTransparency = 0.3 deathsHeader.FontFace = Font.new("rbxasset://fonts/families/GothamSSm.json", Enum.FontWeight.Medium, Enum.FontStyle.Italic) deathsHeader.TextSize = 28; deathsHeader.TextXAlignment = Enum.TextXAlignment.Right local exeBox = Instance.new("Frame", rightGroup) exeBox.Size = UDim2.new(1, 0, 0, 60); exeBox.Position = UDim2.new(0, 0, 0, 35) exeBox.BackgroundColor3 = Color3.fromRGB(15, 15, 15); exeBox.BackgroundTransparency = 0.2 local exeStroke = Instance.new("UIStroke", exeBox); exeStroke.Color = Color3.fromRGB(255, 40, 40); exeStroke.Thickness = 2 local exeLbl = Instance.new("TextLabel", exeBox); exeLbl.Size = UDim2.fromScale(1, 1); exeLbl.BackgroundTransparency = 1 exeLbl.Text = killerName; exeLbl.TextColor3 = Color3.fromRGB(255, 255, 255); exeLbl.Font = Enum.Font.GothamBold; exeLbl.TextSize = 36 TweenService:Create(rightGroup, TweenInfo.new(0.65, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), { Position = UDim2.new(0.98, -580, 0.02, 0) }):Play() local vsGroup = Instance.new("Frame", Container) vsGroup.Size = UDim2.new(0, 180, 0, 80); vsGroup.AnchorPoint = Vector2.new(0.5, 0); vsGroup.Position = UDim2.new(0.5, 0, -0.3, 0) vsGroup.BackgroundColor3 = Color3.fromRGB(15, 15, 15); vsGroup.BackgroundTransparency = 0.2 local vsStroke = Instance.new("UIStroke", vsGroup); vsStroke.Color = Color3.fromRGB(255, 215, 0); vsStroke.Thickness = 2 local vsCenterLbl = Instance.new("TextLabel", vsGroup); vsCenterLbl.Size = UDim2.fromScale(1, 1); vsCenterLbl.BackgroundTransparency = 1 vsCenterLbl.Text = "VS."; vsCenterLbl.TextColor3 = Color3.fromRGB(255, 220, 0); vsCenterLbl.Font = Enum.Font.FredokaOne; vsCenterLbl.TextSize = 44 TweenService:Create(vsGroup, TweenInfo.new(0.65, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), { Position = UDim2.new(0.5, 0, 0.025, 0) }):Play() local survVPFrame, killerVPFrame if survChar then local sBoxHolder = Instance.new("Frame", Container) sBoxHolder.Size = UDim2.fromScale(0.32, 0.58); sBoxHolder.AnchorPoint = Vector2.new(0, 1) sBoxHolder.Position = UDim2.new(-0.35, 0, 1, 0); sBoxHolder.BackgroundTransparency = 1 CreateViewport3DModel(sBoxHolder, survChar, true, GlobalConfig.LMS.DOD_SurvCamDist) TweenService:Create(sBoxHolder, TweenInfo.new(0.65, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), { Position = UDim2.new(0, 0, 1, 0) }):Play() survVPFrame = sBoxHolder end if killerChar then local kBoxHolder = Instance.new("Frame", Container) kBoxHolder.Size = UDim2.fromScale(0.32, 0.58); kBoxHolder.AnchorPoint = Vector2.new(1, 1) kBoxHolder.Position = UDim2.new(1.35, 0, 1, 0); kBoxHolder.BackgroundTransparency = 1 CreateViewport3DModel(kBoxHolder, killerChar, false, GlobalConfig.LMS.DOD_KillerCamDist) TweenService:Create(kBoxHolder, TweenInfo.new(0.65, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), { Position = UDim2.new(1, 0, 1, 0) }):Play() killerVPFrame = kBoxHolder end task.delay(3.5, function() if leftGroup and leftGroup.Parent then TweenService:Create(leftGroup, TweenInfo.new(0.4, Enum.EasingStyle.Cubic, Enum.EasingDirection.In), { Position = UDim2.new(-0.6, 0, 0.02, 0) }):Play() end if rightGroup and rightGroup.Parent then TweenService:Create(rightGroup, TweenInfo.new(0.4, Enum.EasingStyle.Cubic, Enum.EasingDirection.In), { Position = UDim2.new(1.6, -580, 0.02, 0) }):Play() end if vsGroup and vsGroup.Parent then TweenService:Create(vsGroup, TweenInfo.new(0.4, Enum.EasingStyle.Cubic, Enum.EasingDirection.In), { Position = UDim2.new(0.5, 0, -0.3, 0) }):Play() end if survVPFrame and survVPFrame.Parent then TweenService:Create(survVPFrame, TweenInfo.new(0.4, Enum.EasingStyle.Cubic, Enum.EasingDirection.In), { Position = UDim2.new(-0.35, 0, 1, 0) }):Play() end if killerVPFrame and killerVPFrame.Parent then TweenService:Create(killerVPFrame, TweenInfo.new(0.4, Enum.EasingStyle.Cubic, Enum.EasingDirection.In), { Position = UDim2.new(1.35, 0, 1, 0) }):Play() end task.wait(0.45) if Container and Container.Parent then Container:Destroy() end end) end LMS_Visuals["Pizza Tower"] = function() local img = Instance.new("ImageLabel", FX_Gui) img.BackgroundTransparency = 1; img.Size = UDim2.fromScale(0.55, 0.4); img.SizeConstraint = Enum.SizeConstraint.RelativeYY; img.AnchorPoint = Vector2.new(0.5, 0.5) img.Position = UDim2.fromScale(0.5, 1.5); img.Image = "rbxassetid://77264911614141" local s = Instance.new("Sound", SoundService); s.SoundId = "rbxassetid://96050676918804"; s.Volume = tonumber(GlobalConfig.LMS.EffectVolume) or 1; s:Play() Debris:AddItem(s, 6) TweenService:Create(img, TweenInfo.new(4.5, Enum.EasingStyle.Linear), { Position = UDim2.fromScale(0.5, -0.5) }):Play() task.spawn(function() local toggle = false while img and img.Parent and img.Position.Y.Scale > -0.5 do img.Image = toggle and "rbxassetid://77264911614141" or "rbxassetid://92555127882199" toggle = not toggle; task.wait(0.05) end if img then img:Destroy() end end) end LMS_Visuals["FNF"] = function() local s = Instance.new("Sound", SoundService); s.SoundId = "rbxassetid://6555005549"; s.Volume = (tonumber(GlobalConfig.LMS.EffectVolume) or 1) * 0.4; s:Play() Debris:AddItem(s, 5) local function CreateText(id) local im = Instance.new("ImageLabel", FX_Gui) im.Size = UDim2.fromScale(0.4, 0.2); im.SizeConstraint = Enum.SizeConstraint.RelativeYY im.AnchorPoint = Vector2.new(0.5, 0.5); im.Position = UDim2.fromScale(0.5, 0.5); im.BackgroundTransparency = 1; im.Image = "rbxassetid://" .. id; im.ImageTransparency = 1 return im end task.spawn(function() local r = CreateText("6443228613") TweenService:Create(r, TweenInfo.new(0.1), { ImageTransparency = 0 }):Play(); task.wait(0.6) TweenService:Create(r, TweenInfo.new(0.1), { ImageTransparency = 1, Position = UDim2.fromScale(0.5, 0.4) }):Play(); r:Destroy() local ready = CreateText("6443225217") TweenService:Create(ready, TweenInfo.new(0.1), { ImageTransparency = 0 }):Play(); task.wait(0.6) TweenService:Create(ready, TweenInfo.new(0.1), { ImageTransparency = 1, Position = UDim2.fromScale(0.5, 0.4) }):Play(); ready:Destroy() local go = CreateText("6443224742") TweenService:Create(go, TweenInfo.new(0.1), { ImageTransparency = 0 }):Play(); task.wait(0.8) TweenService:Create(go, TweenInfo.new(0.5), { ImageTransparency = 1, Size = UDim2.fromScale(0.6, 0.3) }):Play(); go:Destroy() end) end local function ResolveActiveTrackAsset() local isLocalKiller = (GetPlayerRole(LocalPlayer) == "Killer") local selectedTrack = isLocalKiller and GlobalConfig.LMS.KillerTrack or GlobalConfig.LMS.SurvivorTrack return ResolveTrackAsset(selectedTrack) end local function EnforceNativeAudioMute(sound) if not sound or not sound:IsA("Sound") then return end if not sound:GetAttribute("DOOM_MUTED") then sound:SetAttribute("DOOM_MUTED", true) sound:SetAttribute("DOOM_ORIG_VOL", sound.Volume > 0 and sound.Volume or 1) end sound.Volume = 0 end local function RestoreNativeAudioMute(sound) if not sound or not sound:IsA("Sound") then return end if sound:GetAttribute("DOOM_MUTED") then local origVol = sound:GetAttribute("DOOM_ORIG_VOL") or 1 sound.Volume = origVol sound:SetAttribute("DOOM_MUTED", nil) sound:SetAttribute("DOOM_ORIG_VOL", nil) end end local function RestoreAllNativeAudio() local L = GlobalState.LMS local themesFolder = Workspace:FindFirstChild("Themes") if themesFolder then for _, snd in ipairs(themesFolder:GetChildren()) do if snd:IsA("Sound") then RestoreNativeAudioMute(snd) end end end for snd, _ in pairs(L.NativeSoundsTracked) do if snd and snd.Parent then RestoreNativeAudioMute(snd) end end table.clear(L.NativeSoundsTracked) end local function IsMatchActive() local map = Workspace:FindFirstChild("Map") local inGame = map and map:FindFirstChild("Ingame") if not inGame then return false end local misc = Workspace:FindFirstChild("Misc") if misc and misc:FindFirstChild("KillerCutsceneBackground") then return false end local spectating = Workspace:FindFirstChild("Players") and Workspace.Players:FindFirstChild("Spectating") if spectating then for _, obj in ipairs(spectating:GetDescendants()) do if obj:IsA("ValueBase") and obj.Name == "EndOfRound" then return false end end end return true end -- ── LMS DETECT ─────────────────────────────────────────────── local function DoLMSAudioEngine() local L = GlobalState.LMS if not GlobalConfig.LMS.Enabled then if L.IsCapturing or (L.ShadowSound and L.ShadowSound.IsPlaying) then L.IsCapturing = false L.VisualPlayed = false L.StartDelayTick = nil RestoreAllNativeAudio() if L.ShadowSound and L.ShadowSound.IsPlaying then L.ShadowSound:Stop() L.ShadowSound.SoundId = "" end end return end pcall(function() if not IsMatchActive() then L.DebouncePending = false L.IsCapturing = false L.VisualPlayed = false L.StartDelayTick = nil RestoreAllNativeAudio() if L.ShadowSound and L.ShadowSound.IsPlaying and not L.FadeTween then L.FadeTween = TweenService:Create(L.ShadowSound, TweenInfo.new(0.8, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), { Volume = 0 }) L.FadeTween:Play() L.FadeTween.Completed:Once(function() if not L.IsCapturing and L.ShadowSound then L.ShadowSound:Stop() L.ShadowSound.SoundId = "" end L.FadeTween = nil end) end return end local activeNativeLmsSounds = {} local hasNativeSoundLms = false local themesFolder = Workspace:FindFirstChild("Themes") -- 1. LastSurvivor if themesFolder then local nativeLms = themesFolder:FindFirstChild("LastSurvivor") if nativeLms and nativeLms:IsA("Sound") then table.insert(activeNativeLmsSounds, nativeLms) L.NativeSoundsTracked[nativeLms] = true hasNativeSoundLms = true EnforceNativeAudioMute(nativeLms) end local countWarn = themesFolder:FindFirstChild("30seconds") if countWarn and countWarn:IsA("Sound") and L.IsCapturing then table.insert(activeNativeLmsSounds, countWarn) L.NativeSoundsTracked[countWarn] = true EnforceNativeAudioMute(countWarn) end end local has3DTrigger = false for _, child in ipairs(Workspace:GetChildren()) do if child:IsA("Model") and child.Name:match("%a+LMS$") and child ~= VisualsGui and child ~= FX_Gui then has3DTrigger = true break end end local hasPlayerCountLms = false local map = Workspace:FindFirstChild("Map") local isRoundLoaded = map and map:FindFirstChild("Ingame") and map.Ingame:FindFirstChild("Map") and map.Ingame.Map:FindFirstChild("ServerTime") if isRoundLoaded then local survCount, killerCount = 0, 0 local pFolder = Workspace:FindFirstChild("Players") local sf = pFolder and pFolder:FindFirstChild("Survivors") local kf = pFolder and pFolder:FindFirstChild("Killers") if sf and kf then for _, c in ipairs(sf:GetChildren()) do local p = Players:GetPlayerFromCharacter(c) if p and p.Character == c and IsPlayerAlive(c) and not SpawnEngine:IsInSpawnZone(GetRoot(c) and GetRoot(c).Position) then survCount = survCount + 1 end end for _, c in ipairs(kf:GetChildren()) do local p = Players:GetPlayerFromCharacter(c) if p and p.Character == c and IsPlayerAlive(c) and not SpawnEngine:IsInSpawnZone(GetRoot(c) and GetRoot(c).Position) then killerCount = killerCount + 1 end end end if survCount == 1 and killerCount >= 1 then hasPlayerCountLms = true end end local isLmsCondition = hasNativeSoundLms or has3DTrigger or hasPlayerCountLms if not isLmsCondition and L.IsCapturing then if not L.DebouncePending then L.DebouncePending = true L.DebounceStart = tick() end if tick() - L.DebounceStart < 2.5 then isLmsCondition = true else L.DebouncePending = false end else L.DebouncePending = false end local trackAsset = ResolveActiveTrackAsset() local hasCustomTrack = (trackAsset ~= nil) if isLmsCondition and hasCustomTrack then if not L.StartDelayTick then L.StartDelayTick = tick() end local delayVal = tonumber(GlobalConfig.LMS.StartDelay) or 0 if tick() - L.StartDelayTick >= delayVal then L.IsCapturing = true for _, snd in ipairs(activeNativeLmsSounds) do EnforceNativeAudioMute(snd) end if not L.VisualPlayed and GlobalConfig.LMS.StartEffect ~= "None" then local fxFunc = LMS_Visuals[GlobalConfig.LMS.StartEffect] if fxFunc then L.VisualPlayed = true task.spawn(fxFunc) end end if not L.ShadowSound then local s = Instance.new("Sound") s.Name = "Doom_LMS_Audio"; s.Parent = SoundService L.ShadowSound = s end if L.ShadowSound.SoundId ~= trackAsset then L.ShadowSound.SoundId = trackAsset L.ShadowSound.Looped = GlobalConfig.LMS.LoopTrack L.ShadowSound:Play() end if not L.ShadowSound.IsPlaying then L.ShadowSound:Play() end L.ShadowSound.Volume = tonumber(GlobalConfig.LMS.Volume) or 1.0 end else L.StartDelayTick = nil L.VisualPlayed = false L.IsCapturing = false RestoreAllNativeAudio() if L.ShadowSound and L.ShadowSound.IsPlaying and not L.FadeTween then L.FadeTween = TweenService:Create(L.ShadowSound, TweenInfo.new(1.0, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), { Volume = 0 }) L.FadeTween:Play() L.FadeTween.Completed:Once(function() if not L.IsCapturing and L.ShadowSound then L.ShadowSound:Stop() L.ShadowSound.SoundId = "" end L.FadeTween = nil end) end end end) end task.spawn(function() local themes = Workspace:WaitForChild("Themes", 5) if themes then themes.ChildAdded:Connect(function(child) if child:IsA("Sound") and child.Name == "LastSurvivor" and IsMatchActive() then EnforceNativeAudioMute(child) pcall(DoLMSAudioEngine) end end) end Workspace.ChildAdded:Connect(function(child) if child:IsA("Model") and child.Name:match("%a+LMS$") and IsMatchActive() then pcall(DoLMSAudioEngine) end end) end) -- ═════════════════════════════════════════════════════════════════════════ -- 2D BOX & 4-DIRECTIONAL TAGS ENGINE -- ═════════════════════════════════════════════════════════════════════════ local function GetHighlight(model) local cache = GlobalState.Vis.Highlights if not cache[model] then local hl = Instance.new("Highlight") hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop hl.Parent = GlobalState.Vis.VisualGUI cache[model] = hl end return cache[model] end local function GetTags(model) local cache = GlobalState.Vis.TagCache if not cache[model] or not cache[model].BoxFrame or not cache[model].BoxFrame.Parent then local boxFrame = Instance.new("Frame") boxFrame.Name = "Doom_2D_Box" boxFrame.BackgroundTransparency = 1 boxFrame.BorderSizePixel = 0 boxFrame.Visible = false boxFrame.ClipsDescendants = false boxFrame.Position = UDim2.fromOffset(-5000, -5000) boxFrame.Size = UDim2.fromOffset(0, 0) boxFrame.ZIndex = 100 boxFrame.Parent = VisualsGui local boxStroke = Instance.new("UIStroke", boxFrame) boxStroke.Name = "BoxStroke" boxStroke.Thickness = 1.5 boxStroke.Transparency = 1 local function MakeHolder(name, anchor, pos, hAlign, vAlign) local h = Instance.new("Frame", boxFrame) h.Name = name h.BackgroundTransparency = 1 h.AnchorPoint = anchor h.Position = pos h.Size = UDim2.new(0, 260, 0, 0) h.AutomaticSize = Enum.AutomaticSize.Y h.ClipsDescendants = false h.ZIndex = 101 local layout = Instance.new("UIListLayout", h) layout.SortOrder = Enum.SortOrder.LayoutOrder layout.HorizontalAlignment = hAlign layout.VerticalAlignment = vAlign layout.Padding = UDim.new(0, 1) return h end local topHolder = MakeHolder("TopHolder", Vector2.new(0.5, 1), UDim2.new(0.5, 0, 0, -3), Enum.HorizontalAlignment.Center, Enum.VerticalAlignment.Bottom) local botHolder = MakeHolder("BottomHolder",Vector2.new(0.5, 0), UDim2.new(0.5, 0, 1, 3), Enum.HorizontalAlignment.Center, Enum.VerticalAlignment.Top) local leftHolder = MakeHolder("LeftHolder", Vector2.new(1, 0), UDim2.new(0, -4, 0, 0), Enum.HorizontalAlignment.Right, Enum.VerticalAlignment.Top) local rightHolder = MakeHolder("RightHolder", Vector2.new(0, 0), UDim2.new(1, 4, 0, 0), Enum.HorizontalAlignment.Left, Enum.VerticalAlignment.Top) local function CreateTagLabel(name) local lbl = Instance.new("TextLabel") lbl.Name = name lbl.Text = "" lbl.BackgroundTransparency = 1 lbl.Font = Enum.Font.GothamBold lbl.TextSize = 12 lbl.TextColor3 = Color3.fromRGB(255, 255, 255) lbl.TextStrokeColor3 = Color3.fromRGB(0, 0, 0) lbl.TextStrokeTransparency = 0 lbl.TextTransparency = 0 lbl.Size = UDim2.new(1, 0, 0, 14) lbl.Visible = false lbl.ZIndex = 102 return lbl end cache[model] = { BoxFrame = boxFrame, BoxStroke = boxStroke, Holders = { Top = topHolder, Bottom = botHolder, Left = leftHolder, Right = rightHolder }, SURV = { Role = CreateTagLabel("SURV_Role"), Name = CreateTagLabel("SURV_Name"), Skin = CreateTagLabel("SURV_Skin"), Login = CreateTagLabel("SURV_Login"), HP = CreateTagLabel("SURV_HP"), Status = CreateTagLabel("SURV_Status"), Dist = CreateTagLabel("SURV_Dist"), }, KILLER = { Role = CreateTagLabel("KILLER_Role"), Name = CreateTagLabel("KILLER_Name"), Skin = CreateTagLabel("KILLER_Skin"), Login = CreateTagLabel("KILLER_Login"), HP = CreateTagLabel("KILLER_HP"), Status = CreateTagLabel("KILLER_Status"), Dist = CreateTagLabel("KILLER_Dist"), }, LOBBY = { Role = CreateTagLabel("LOBBY_Role"), } } end return cache[model] end local function ApplyHighlightESP(model, configPrefix) local cfg = GlobalConfig.Vis local isEnabled = cfg[configPrefix.."_Enabled"] local hl = GetHighlight(model) if isEnabled then hl.Enabled = true; hl.Adornee = model local styleDict = cfg[configPrefix.."_Style"] or {} local hasFill = (styleDict["Fill"] == true) or (table.find(styleDict, "Fill") ~= nil) local hasOut = (styleDict["Outline"] == true) or (table.find(styleDict, "Outline") ~= nil) hl.FillColor = cfg[configPrefix.."_Fill"] hl.OutlineColor = cfg[configPrefix.."_Out"] hl.FillTransparency = hasFill and ((tonumber(cfg[configPrefix.."_LF"]) or 2) / 5) or 1 hl.OutlineTransparency = hasOut and ((tonumber(cfg[configPrefix.."_LO"]) or 0) / 5) or 1 else hl.Enabled = false; hl.Adornee = nil end end local function ClearAllEntityTags(tData) if not tData then return end tData.BoxFrame.Visible = false tData.BoxFrame.Position = UDim2.fromOffset(-5000, -5000) tData.BoxFrame.Size = UDim2.fromOffset(0, 0) tData.BoxStroke.Enabled = false for _, l in pairs(tData.SURV) do l.Visible = false l.Text = "" end for _, l in pairs(tData.KILLER) do l.Visible = false l.Text = "" end for _, l in pairs(tData.LOBBY) do l.Visible = false l.Text = "" end end local function DoVisualsRender() local cam = GetCamera() if not cam then return end if GlobalConfig.Vis.Fullbright then Lighting.Ambient = GlobalConfig.Vis.AmbCol Lighting.OutdoorAmbient = GlobalConfig.Vis.AmbCol end if GlobalConfig.Vis.RemoveFog then for _, v in pairs(Lighting:GetChildren()) do if v:IsA("Atmosphere") then v.Density = 0 end if v:IsA("Fog") or v.Name == "Fog" then v.FogEnd = 100000 end end end local myChar = LocalPlayer.Character if myChar and IsPlayerAlive(myChar) then ApplyHighlightESP(myChar, "Loc") end local cfg = GlobalConfig.Vis local scannedModels = {} local renderedThisFrame = {} local MAX_ENTITY_DIST = 900 local MAX_LOBBY_DIST = 600 local function RenderModelVisuals(char, forcedRole) if not char or typeof(char) ~= "Instance" or not char:IsA("Model") or scannedModels[char] then return end scannedModels[char] = true local tData = GetTags(char) local p = Players:GetPlayerFromCharacter(char) if not p then local cand = Players:FindFirstChild(char.Name) or Players:FindFirstChild(tostring(char:GetAttribute("Username") or "")) if cand and cand.Character == char then p = cand end end if char == LocalPlayer.Character or p == LocalPlayer or char.Name == LocalPlayer.Name then ClearAllEntityTags(tData) return end if not p or p.Character ~= char then ClearAllEntityTags(tData) local hl = GlobalState.Vis.Highlights[char] if hl then hl.Enabled = false; hl.Adornee = nil end return end local root = GetRoot(char) local hum = char:FindFirstChildOfClass("Humanoid") if not root or not hum or hum.Health <= 0 then ClearAllEntityTags(tData) local hl = GlobalState.Vis.Highlights[char] if hl then hl.Enabled = false; hl.Adornee = nil end return end local distStuds = (cam.CFrame.Position - root.Position).Magnitude local inSpawn = SpawnEngine:IsInSpawnZone(root.Position) local distLimit = inSpawn and MAX_LOBBY_DIST or MAX_ENTITY_DIST if distStuds > distLimit then ClearAllEntityTags(tData) local hl = GlobalState.Vis.Highlights[char] if hl then hl.Enabled = false; hl.Adornee = nil end return end local role = forcedRole or (p and GetPlayerRole(p) or "Survivor") local combat = GetCombatState(char) if inSpawn then if cfg.Lobby_Enabled then ApplyHighlightESP(char, "Lobby") else local hl = GetHighlight(char) hl.Enabled = false hl.Adornee = nil end elseif role == "Killer" then ApplyHighlightESP(char, "K") else ApplyHighlightESP(char, "S") end local rootPos = root.Position local root2D, onScreen = cam:WorldToViewportPoint(rootPos) if not onScreen or root2D.Z <= 0 then ClearAllEntityTags(tData) return end local topWorld = rootPos + Vector3.new(0, 2.5, 0) local botWorld = rootPos - Vector3.new(0, 3.0, 0) local top2D = cam:WorldToViewportPoint(topWorld) local bot2D = cam:WorldToViewportPoint(botWorld) if top2D.Z <= 0 or bot2D.Z <= 0 then ClearAllEntityTags(tData) return end local boxHeight = math.abs(bot2D.Y - top2D.Y) boxHeight = math.max(boxHeight, 10) local boxWidth = math.floor(boxHeight * 0.62) local minX = math.floor(root2D.X - (boxWidth / 2)) local minY = math.floor(math.min(top2D.Y, bot2D.Y)) local maxX = minX + boxWidth local maxY = minY + boxHeight minX = minX - (tonumber(cfg.Box_WOffset) or 0) maxX = maxX + (tonumber(cfg.Box_WOffset) or 0) minY = minY - (tonumber(cfg.Box_HOffset) or 0) maxY = maxY + (tonumber(cfg.Box_HOffset) or 0) if distStuds <= 3.5 or minX >= maxX or minY >= maxY then ClearAllEntityTags(tData) return end local isBoxOn, boxFillCol, boxOutCol, fillTransp, outTransp if inSpawn then isBoxOn = cfg.Lobby_Box_Tog boxFillCol = cfg.Lobby_Box_Fill boxOutCol = cfg.Lobby_Box_Out fillTransp = GetTrans(cfg.Lobby_Box_Limp_Fill, isBoxOn) outTransp = GetTrans(cfg.Lobby_Box_Limp_Out, isBoxOn) elseif role == "Killer" then isBoxOn = cfg.Killer_Box_Tog boxFillCol = cfg.Killer_Box_Fill boxOutCol = cfg.Killer_Box_Out fillTransp = GetTrans(cfg.Killer_Box_Limp_Fill, isBoxOn) outTransp = GetTrans(cfg.Killer_Box_Limp_Out, isBoxOn) else isBoxOn = cfg.Surv_Box_Tog boxFillCol = cfg.Surv_Box_Fill boxOutCol = cfg.Surv_Box_Out fillTransp = GetTrans(cfg.Surv_Box_Limp_Fill, isBoxOn) outTransp = GetTrans(cfg.Surv_Box_Limp_Out, isBoxOn) end local function ProcessTagLabel(lbl, isTog, dir, order, fillCol, outCol, limpVal, textStr) if not lbl then return end if isTog and textStr and tostring(textStr) ~= "" then local holder = tData.Holders[dir] or tData.Holders.Top if lbl.Parent ~= holder then lbl.Parent = holder end lbl.Text = tostring(textStr) if dir == "Left" then lbl.TextXAlignment = Enum.TextXAlignment.Right elseif dir == "Right" then lbl.TextXAlignment = Enum.TextXAlignment.Left else lbl.TextXAlignment = Enum.TextXAlignment.Center end lbl.TextColor3 = fillCol lbl.TextStrokeColor3 = outCol local dT = math.clamp((tonumber(cfg.Tags_GlobalLimp) or 0) / 5, 0, 1) if type(limpVal) == "number" and limpVal > 0 then dT = math.max(dT, math.clamp(limpVal / 5, 0, 1)) end lbl.TextTransparency = dT lbl.TextStrokeTransparency = dT lbl.LayoutOrder = tonumber(order) or 1 lbl.Visible = true else lbl.Visible = false lbl.Text = "" end end local hpStr = math.floor(combat.RealHP) .. " / " .. math.floor(combat.MaxHP) .. " HP" if combat.Overheal > 0 then hpStr = hpStr .. " (+" .. math.floor(combat.Overheal) .. " Overheal)" end local distM = math.floor(distStuds / 3.57) local distStr = (cfg.Dist_Unit == "Both" and (math.floor(distStuds) .. " studs (" .. distM .. "m)")) or (cfg.Dist_Unit == "Meters" and (distM .. "m")) or (math.floor(distStuds) .. " studs") local statusBadges = {} if combat.IsFixingGen then table.insert(statusBadges, "[FIXING]") end if combat.IsStunned then table.insert(statusBadges, "[STUNNED]") end if combat.IsInvincible then table.insert(statusBadges, "[INVINCIBLE]") end if combat.IsShielded then table.insert(statusBadges, "[SHIELDED]") end if combat.IsHelpless then table.insert(statusBadges, "[HELPLESS]") end if combat.IsSlateskin then table.insert(statusBadges, "[SLATESKIN]") end local statusStr = table.concat(statusBadges, " ") if inSpawn then for _, l in pairs(tData.SURV) do l.Visible = false; l.Text = "" end for _, l in pairs(tData.KILLER) do l.Visible = false; l.Text = "" end ProcessTagLabel(tData.LOBBY.Role, cfg.Lobby_Role_Tog, cfg.Lobby_Role_Dir, cfg.Lobby_Role_Order, cfg.Lobby_Role_Fill, cfg.Lobby_Role_Out, cfg.Lobby_Role_Limp, "[LOBBY]") if not isBoxOn and not cfg.Lobby_Role_Tog then ClearAllEntityTags(tData) return end elseif role == "Killer" then for _, l in pairs(tData.SURV) do l.Visible = false; l.Text = "" end for _, l in pairs(tData.LOBBY) do l.Visible = false; l.Text = "" end ProcessTagLabel(tData.KILLER.Role, cfg.Killer_Role_Tog, cfg.Killer_Role_Dir, cfg.Killer_Role_Order, cfg.Killer_Role_Fill, cfg.Killer_Role_Out, cfg.Killer_Role_Limp, "[KILLER]") ProcessTagLabel(tData.KILLER.Name, cfg.Killer_Name_Tog, cfg.Killer_Name_Dir, cfg.Killer_Name_Order, cfg.Killer_Name_Fill, cfg.Killer_Name_Out, cfg.Killer_Name_Limp, combat.DisplayName) ProcessTagLabel(tData.KILLER.Skin, cfg.Killer_Skin_Tog, cfg.Killer_Skin_Dir, cfg.Killer_Skin_Order, cfg.Killer_Skin_Fill, cfg.Killer_Skin_Out, cfg.Killer_Skin_Limp, "[" .. combat.SkinName .. "]") ProcessTagLabel(tData.KILLER.Login, cfg.Killer_Login_Tog, cfg.Killer_Login_Dir, cfg.Killer_Login_Order, cfg.Killer_Login_Fill, cfg.Killer_Login_Out, cfg.Killer_Login_Limp, "@" .. combat.Username) ProcessTagLabel(tData.KILLER.HP, cfg.Killer_HP_Tog, cfg.Killer_HP_Dir, cfg.Killer_HP_Order, cfg.Killer_HP_Fill, cfg.Killer_HP_Out, cfg.Killer_HP_Limp, hpStr) ProcessTagLabel(tData.KILLER.Status, cfg.Killer_Status_Tog, cfg.Killer_Status_Dir, cfg.Killer_Status_Order, cfg.Killer_Status_Fill, cfg.Killer_Status_Out, cfg.Killer_Status_Limp, statusStr) ProcessTagLabel(tData.KILLER.Dist, cfg.Killer_Dist_Tog, cfg.Killer_Dist_Dir, cfg.Killer_Dist_Order, cfg.Killer_Dist_Fill, cfg.Killer_Dist_Out, cfg.Killer_Dist_Limp, distStr) else for _, l in pairs(tData.KILLER) do l.Visible = false; l.Text = "" end for _, l in pairs(tData.LOBBY) do l.Visible = false; l.Text = "" end ProcessTagLabel(tData.SURV.Role, cfg.Surv_Role_Tog, cfg.Surv_Role_Dir, cfg.Surv_Role_Order, cfg.Surv_Role_Fill, cfg.Surv_Role_Out, cfg.Surv_Role_Limp, "[SURVIVOR]") ProcessTagLabel(tData.SURV.Name, cfg.Surv_Name_Tog, cfg.Surv_Name_Dir, cfg.Surv_Name_Order, cfg.Surv_Name_Fill, cfg.Surv_Name_Out, cfg.Surv_Name_Limp, combat.DisplayName) ProcessTagLabel(tData.SURV.Skin, cfg.Surv_Skin_Tog, cfg.Surv_Skin_Dir, cfg.Surv_Skin_Order, cfg.Surv_Skin_Fill, cfg.Surv_Skin_Out, cfg.Surv_Skin_Limp, "[" .. combat.SkinName .. "]") ProcessTagLabel(tData.SURV.Login, cfg.Surv_Login_Tog, cfg.Surv_Login_Dir, cfg.Surv_Login_Order, cfg.Surv_Login_Fill, cfg.Surv_Login_Out, cfg.Surv_Login_Limp, "@" .. combat.Username) ProcessTagLabel(tData.SURV.HP, cfg.Surv_HP_Tog, cfg.Surv_HP_Dir, cfg.Surv_HP_Order, cfg.Surv_HP_Fill, cfg.Surv_HP_Out, cfg.Surv_HP_Limp, hpStr) ProcessTagLabel(tData.SURV.Status, cfg.Surv_Status_Tog, cfg.Surv_Status_Dir, cfg.Surv_Status_Order, cfg.Surv_Status_Fill, cfg.Surv_Status_Out, cfg.Surv_Status_Limp, statusStr) ProcessTagLabel(tData.SURV.Dist, cfg.Surv_Dist_Tog, cfg.Surv_Dist_Dir, cfg.Surv_Dist_Order, cfg.Surv_Dist_Fill, cfg.Surv_Dist_Out, cfg.Surv_Dist_Limp, distStr) end tData.BoxFrame.Position = UDim2.fromOffset(minX, minY) tData.BoxFrame.Size = UDim2.fromOffset(maxX - minX, maxY - minY) tData.BoxFrame.BackgroundColor3 = boxFillCol tData.BoxFrame.BackgroundTransparency = fillTransp tData.BoxStroke.Color = boxOutCol tData.BoxStroke.Transparency = outTransp tData.BoxStroke.Enabled = isBoxOn tData.BoxFrame.Visible = true renderedThisFrame[char] = true end for _, p in ipairs(Players:GetPlayers()) do if p ~= LocalPlayer and p.Character then RenderModelVisuals(p.Character, nil) end end for model, tData in pairs(GlobalState.Vis.TagCache) do if not renderedThisFrame[model] then ClearAllEntityTags(tData) local hl = GlobalState.Vis.Highlights[model] if hl then hl.Enabled = false hl.Adornee = nil end if not model or not model.Parent then pcall(function() if tData.BoxFrame and tData.BoxFrame.Parent then tData.BoxFrame:Destroy() end end) GlobalState.Vis.TagCache[model] = nil end end end for model, hl in pairs(GlobalState.Vis.Highlights) do if not renderedThisFrame[model] and model ~= myChar then hl.Enabled = false hl.Adornee = nil if not model or not model.Parent then pcall(function() hl:Destroy() end) GlobalState.Vis.Highlights[model] = nil end end end -- ── GENERATORS ESP ── local activeGensThisFrame = {} if GlobalConfig.Gen.ESP_Enabled then for _, gen in ipairs(GlobalState.Vis.GeneratorsList) do if gen.Root and gen.Model and gen.Model.Parent then local distStuds = (cam.CFrame.Position - gen.Root.Position).Magnitude local bg = GlobalState.Vis.GenCache[gen.Model] if distStuds <= 800 then activeGensThisFrame[gen.Model] = true if not bg or not bg.Gui.Parent then local bGui = Instance.new("BillboardGui") bGui.Name = "Doom_Gen_ESP" bGui.Size = UDim2.fromOffset(200, 20) bGui.AlwaysOnTop = true bGui.LightInfluence = 0 bGui.StudsOffset = Vector3.new(0, 2.0, 0) bGui.Parent = GlobalState.Vis.VisualGUI local lbl = Instance.new("TextLabel", bGui) lbl.Size = UDim2.fromScale(1, 1) lbl.BackgroundTransparency = 1 lbl.Font = Enum.Font.GothamBold lbl.TextSize = 12 lbl.TextStrokeTransparency = 0 lbl.TextStrokeColor3 = Color3.fromRGB(0, 0, 0) GlobalState.Vis.GenCache[gen.Model] = { Gui = bGui, Label = lbl } bg = GlobalState.Vis.GenCache[gen.Model] end bg.Gui.Enabled = true bg.Gui.Adornee = gen.Root local distM = math.floor(distStuds / 3.57) local str = gen.IsFake and "[FAKE GENERATOR]" or "GENERATOR" if GlobalConfig.Gen.ESP_ShowPercent and not gen.IsFake then str = str .. " [" .. math.floor(gen.Progress) .. "%]" end if GlobalConfig.Gen.ESP_ShowDist then str = str .. " • " .. distM .. "m" end bg.Label.Text = str bg.Label.TextColor3 = gen.IsFake and Color3.fromRGB(255, 50, 50) or GlobalConfig.Gen.ESP_Color else if bg then bg.Gui.Enabled = false; bg.Gui.Adornee = nil end end end end end for model, bg in pairs(GlobalState.Vis.GenCache) do if not activeGensThisFrame[model] then if bg.Gui then bg.Gui.Enabled = false; bg.Gui.Adornee = nil end if not model.Parent then pcall(function() bg.Gui:Destroy() end) GlobalState.Vis.GenCache[model] = nil end end end -- ── ITEMS ESP ── local activeItemsThisFrame = {} if GlobalConfig.Items.ESP_Enabled then local myRoot = myChar and GetRoot(myChar) local originPos = myRoot and myRoot.Position or cam.CFrame.Position for _, itm in ipairs(GlobalState.Vis.ItemsList) do if itm.Root and itm.Root.Parent and itm.Instance and itm.Instance.Parent then local distStuds = (originPos - itm.Root.Position).Magnitude if distStuds <= (200 * 3.57) then activeItemsThisFrame[itm.Instance] = true local bg = GlobalState.Vis.ItemCache[itm.Instance] if not bg or not bg.Gui.Parent then local bGui = Instance.new("BillboardGui") bGui.Name = "Doom_Item_ESP" bGui.Size = UDim2.fromOffset(200, 20) bGui.AlwaysOnTop = true bGui.LightInfluence = 0 bGui.StudsOffset = Vector3.new(0, 1.4, 0) bGui.ResetOnSpawn = false bGui.Parent = GlobalState.Vis.VisualGUI local lbl = Instance.new("TextLabel", bGui) lbl.Size = UDim2.fromScale(1, 1) lbl.BackgroundTransparency = 1 lbl.Font = Enum.Font.GothamBold lbl.TextSize = 12 lbl.TextStrokeTransparency = 0 lbl.TextStrokeColor3 = Color3.fromRGB(0, 0, 0) GlobalState.Vis.ItemCache[itm.Instance] = { Gui = bGui, Label = lbl } bg = GlobalState.Vis.ItemCache[itm.Instance] end bg.Gui.Enabled = true bg.Gui.Adornee = itm.Root local mainColor if itm.IsFake then mainColor = Color3.fromRGB(255, 50, 50) elseif itm.Name == "Bloxy Cola" then mainColor = Color3.fromRGB(255, 195, 45) else mainColor = GlobalConfig.Items.Chams_Col or Color3.fromRGB(50, 255, 130) end local distM = math.floor(distStuds / 3.57) local textStr = "[" .. itm.Name:upper() .. "]" if GlobalConfig.Items.ShowDist then textStr = textStr .. " • " .. distM .. "m" end bg.Label.TextColor3 = mainColor bg.Label.Text = textStr end end end end for inst, cacheObj in pairs(GlobalState.Vis.ItemCache) do if not activeItemsThisFrame[inst] then if cacheObj.Gui then cacheObj.Gui.Enabled = false cacheObj.Gui.Adornee = nil end if not inst.Parent or not inst:FindFirstChild("ItemRoot") then if cacheObj.Gui then pcall(function() cacheObj.Gui:Destroy() end) end GlobalState.Vis.ItemCache[inst] = nil end end end end local function WipeAllSessionBuffers() for _, cacheObj in pairs(GlobalState.Vis.ItemCache) do if cacheObj.Gui then pcall(function() cacheObj.Gui:Destroy() end) end end table.clear(GlobalState.Vis.ItemCache) table.clear(GlobalState.Vis.ItemsList) for _, bg in pairs(GlobalState.Vis.GenCache) do if bg.Gui then pcall(function() bg.Gui:Destroy() end) end end table.clear(GlobalState.Vis.GenCache) table.clear(GlobalState.Vis.GeneratorsList) for _, tData in pairs(GlobalState.Vis.TagCache) do ClearAllEntityTags(tData) if tData.BoxFrame and tData.BoxFrame.Parent then pcall(function() tData.BoxFrame:Destroy() end) end end table.clear(GlobalState.Vis.TagCache) for _, hl in pairs(GlobalState.Vis.Highlights) do pcall(function() hl:Destroy() end) end table.clear(GlobalState.Vis.Highlights) EmotePropBuffer:ClearAll() GlobalState.Vis.KillerUserId = nil local L = GlobalState.LMS L.IsCapturing = false L.VisualPlayed = false L.StartDelayTick = nil L.DebouncePending = false RestoreAllNativeAudio() if L.ShadowSound and L.ShadowSound.IsPlaying then L.ShadowSound:Stop() L.ShadowSound.SoundId = "" end end local LastIngameFolder = nil local function CheckRoundLifecycle() local map = Workspace:FindFirstChild("Map") local curIngame = map and map:FindFirstChild("Ingame") if curIngame ~= LastIngameFolder then LastIngameFolder = curIngame WipeAllSessionBuffers() if curIngame then task.delay(0.6, function() pcall(UpdateCachedWorldObjectsFast) pcall(UpdateDynamicKillerRole) end) end end end -- ═════════════════════════════════════════════════════════════════════════ -- UI INITIALIZATION -- ═════════════════════════════════════════════════════════════════════════ local Window = Fluent:CreateWindow({ Title = "DOOMSENSE V1", SubTitle = "Fluent " .. Fluent.Version, TabWidth = 160, Size = UDim2.fromOffset(580, 470), Acrylic = false, Theme = "Dark", MinimizeKey = Enum.KeyCode.Insert }) local Tabs = { Main = Window:AddTab({ Title = "Main", Icon = "home" }), Teleport = Window:AddTab({ Title = "Teleport", Icon = "map-pin" }), AH = Window:AddTab({ Title = "Auto Hunt", Icon = "crosshair" }), Combat = Window:AddTab({ Title = "Combat", Icon = "shield" }), Visuals = Window:AddTab({ Title = "Visuals", Icon = "eye" }), LMS = Window:AddTab({ Title = "Custom LMS", Icon = "music" }), Mobile = Window:AddTab({ Title = "Mobile", Icon = "smartphone" }), Settings = Window:AddTab({ Title = "Settings", Icon = "settings" }), } -- ── MAIN TAB ── local TabMain = Tabs.Main TabMain:AddSection("Safety") TabMain:AddToggle("SafeModeTog", { Title = "Safe Mode", Description = "Disables active movement and combat features.", Default = false, Callback = function(v) GlobalConfig.SafeMode = v if v then if Options.SpeedTog and Options.SpeedTog.Value then Options.SpeedTog:SetValue(false) end if Options.NoclipTog and Options.NoclipTog.Value then Options.NoclipTog:SetValue(false) end if Options.AHTog and Options.AHTog.Value then Options.AHTog:SetValue(false) end if Options.MouseTP_Enabled and Options.MouseTP_Enabled.Value then Options.MouseTP_Enabled:SetValue(false) end if Options.Combat_Tog and Options.Combat_Tog.Value then Options.Combat_Tog:SetValue(false) end RestoreCollisions() end end }) TabMain:AddSection("Movement Speed") TabMain:AddToggle("SpeedTog", { Title = "Enable Speedhack", Default = false, Callback = function(v) if v and IsSafeBlocked("Speedhack") then Options.SpeedTog:SetValue(false); return end GlobalConfig.IsSpeeding = v GlobalState.LastBurstTick = os.clock() if GlobalState.UpdateMobileBtn then GlobalState.UpdateMobileBtn("Speed", v) end end }) TabMain:AddKeybind("SpeedBind", { Title = "Speed Keybind", Default = "None", Mode = "Toggle", Callback = function() if GlobalConfig.Binds.Speed_Mode == "Toggle" and Options.SpeedTog then Options.SpeedTog:SetValue(not Options.SpeedTog.Value) end end }) TabMain:AddDropdown("SpeedBind_Mode", { Title = "Keybind Mode", Values = {"Toggle", "Hold"}, Default = "Toggle", Callback = function(v) GlobalConfig.Binds.Speed_Mode = v end }) TabMain:AddDropdown("SpeedMode", { Title = "Speed Engine", Values = {"Linear Mover (BodyPhysics)", "Smooth CFrame (Anti-Lag)", "Assembly Velocity", "Humanoid WalkSpeed"}, Default = "Linear Mover (BodyPhysics)", Callback = function(v) GlobalConfig.SpeedMode = v end }) TabMain:AddSlider("WalkSpeed", { Title = "Walk Speed", Default = 16, Min = 16, Max = 250, Rounding = 1, Callback = function(v) GlobalConfig.WalkSpeed = v end }) TabMain:AddSlider("SpeedInterval", { Title = "Burst Interval (ms)", Description = "0 = continuous movement. 1-5000 = sprint pulses.", Default = 0, Min = 0, Max = 5000, Rounding = 0, Callback = function(v) GlobalConfig.SpeedInterval = v; GlobalState.LastBurstTick = os.clock() end }) TabMain:AddSection("Noclip System") TabMain:AddToggle("NoclipTog", { Title = "Enable Noclip", Description = "Bypasses walls and obstacles.", Default = false, Callback = function(v) if v and IsSafeBlocked("Noclip") then Options.NoclipTog:SetValue(false); return end GlobalConfig.Noclip = v if not v then RestoreCollisions() end end }) TabMain:AddKeybind("NoclipBind", { Title = "Noclip Keybind", Default = "None", Mode = "Toggle", Callback = function() if GlobalConfig.Binds.Noclip_Mode == "Toggle" and Options.NoclipTog then Options.NoclipTog:SetValue(not Options.NoclipTog.Value) end end }) TabMain:AddDropdown("NoclipBind_Mode", { Title = "Keybind Mode", Values = {"Toggle", "Hold"}, Default = "Toggle", Callback = function(v) GlobalConfig.Binds.Noclip_Mode = v end }) TabMain:AddDropdown("NoclipMode", { Title = "Noclip Engine Mode", Values = {"Classic Stepped", "Anti-Ejection Physics"}, Default = "Classic Stepped", Callback = function(v) GlobalConfig.NoclipMode = v end }) TabMain:AddSection("Emote Props Collision Fix") TabMain:AddToggle("FixEmoteProps", { Title = "Fix Emote Props Collision (Standalone)", Description = "Игнорирует коллизии кресел и пропсов эмоций рядом с телом даже при выключенном ноклипе.", Default = false, Callback = function(v) GlobalConfig.FixEmoteProps = v if not v and not GlobalConfig.Noclip then EmotePropBuffer:ClearAll() end end }) TabMain:AddSlider("EmoteFixRadius", { Title = "Emote Detect Radius", Default = 7.5, Min = 3.0, Max = 15.0, Rounding = 1, Callback = function(v) GlobalConfig.EmoteFixRadius = v end }) -- ── TELEPORT TAB ── local TabTP = Tabs.Teleport TabTP:AddSection("Mouse 3D Teleport") TabTP:AddToggle("MouseTP_Enabled", { Title = "Enable Mouse 3D TP", Default = false, Callback = function(v) if v and IsSafeBlocked("Mouse Teleport") then Options.MouseTP_Enabled:SetValue(false); return end GlobalConfig.MouseTP.Enabled = v if not v then MouseTPEngine:DestroyMarker() end if GlobalState.UpdateMobileBtn then GlobalState.UpdateMobileBtn("MouseTP", v) end end }) TabTP:AddKeybind("MouseTP_Bind", { Title = "Mouse TP Keybind", Default = "None", Mode = "Toggle", Callback = function() if not GlobalConfig.MouseTP.Enabled then return end if GlobalConfig.MouseTP.Mode == "Keybind Instant TP" then MouseTPEngine:Teleport() end end }) TabTP:AddDropdown("MouseTP_Mode", { Title = "Activation Mode", Values = {"Keybind Instant TP", "Keybind + Mouse Click"}, Default = "Keybind Instant TP", Callback = function(v) GlobalConfig.MouseTP.Mode = v end }) TabTP:AddSlider("MouseTP_Height", { Title = "Height Offset", Default = 0, Min = 0, Max = 15, Rounding = 1, Callback = function(v) GlobalConfig.MouseTP.HeightOffset = v end }) TabTP:AddSlider("MouseTP_MaxDist", { Title = "Max Raycast Distance", Default = 2000, Min = 100, Max = 5000, Rounding = 0, Callback = function(v) GlobalConfig.MouseTP.MaxDistance = v end }) TabTP:AddToggle("MouseTP_ShowVisual", { Title = "3D Target Marker", Default = false, Callback = function(v) GlobalConfig.MouseTP.VisualMarker = v end }) TabTP:AddColorpicker("MouseTP_MarkerCol", { Title = "Marker Color", Default = Color3.fromRGB(0, 255, 180), Callback = function(v) GlobalConfig.MouseTP.MarkerColor = v end }) TabTP:AddSlider("MouseTP_MarkerSize", { Title = "Marker Radius", Default = 3.5, Min = 1, Max = 15, Rounding = 1, Callback = function(v) GlobalConfig.MouseTP.MarkerSize = v end }) TabTP:AddSection("Waypoints") local WP_Input = TabTP:AddInput("WP_Name", { Title = "Waypoint Name", Default = "Safe Spot" }) local WP_Drop = TabTP:AddDropdown("WP_Select", { Title = "Saved Waypoints", Values = {}, Default = nil }) local function RefreshWPList() local list = {} for name, _ in pairs(GlobalState.Waypoints) do table.insert(list, name) end table.sort(list); WP_Drop:SetValues(list) end RefreshWPList() TabTP:AddButton({ Title = "Save Position", Callback = function() local name = Options.WP_Name.Value if name == "" then return Fluent:Notify({Title = "Error", Content = "Enter waypoint name!", Duration = 2}) end local root = GetRoot(LocalPlayer.Character) if root then GlobalState.Waypoints[name] = root.CFrame SaveWaypoints(); RefreshWPList(); WP_Drop:SetValue(name) Fluent:Notify({Title = "Waypoint Saved", Content = name, Duration = 2, Type = "Success"}) end end }) TabTP:AddButton({ Title = "Teleport to Point", Callback = function() if IsSafeBlocked("Waypoint Teleport") then return end local name = Options.WP_Select.Value if name and GlobalState.Waypoints[name] then local root = GetRoot(LocalPlayer.Character) if root then root.CFrame = GlobalState.Waypoints[name]; Fluent:Notify({Title="Teleport", Content=name, Duration=2}) end end end }) -- ── AUTO HUNT TAB ── local TabAH = Tabs.AH TabAH:AddSection("Auto Hunt [KILLER ONLY]") TabAH:AddToggle("AHTog", { Title = "Enable Auto Hunt", Description = "Instant zero-velocity tracking. Active only when playing as Killer.", Default = false, Callback = function(v) if v and IsSafeBlocked("Auto Hunt") then Options.AHTog:SetValue(false); return end GlobalConfig.AH.Enabled = v GlobalState.LastBurstTick = os.clock() if not v then UpdateAHTargetVisual(nil) end if GlobalState.UpdateMobileBtn then GlobalState.UpdateMobileBtn("AH", v) end end }) TabAH:AddToggle("AH_IgnoreSpawn", { Title = "Ignore Spawn Cube", Default = true, Callback = function(v) GlobalConfig.AH.IgnoreSpawn = v end }) TabAH:AddToggle("AH_BypassShield", { Title = "Ignore Invincible / Shielded", Default = true, Callback = function(v) GlobalConfig.AH.BypassShield = v end }) TabAH:AddKeybind("AHBind", { Title = "Auto Hunt Keybind", Default = "None", Mode = "Toggle", Callback = function() if GlobalConfig.Binds.AH_Mode == "Toggle" and Options.AHTog then Options.AHTog:SetValue(not Options.AHTog.Value) end end }) TabAH:AddDropdown("AHBind_Mode", { Title = "Keybind Mode", Values = {"Toggle", "Hold"}, Default = "Toggle", Callback = function(v) GlobalConfig.Binds.AH_Mode = v end }) TabAH:AddDropdown("AH_Mode", { Title = "Target Priority", Values = {"Nearest", "Lowest HP", "Random"}, Default = "Nearest", Callback = function(v) GlobalConfig.AH.Mode = v end }) TabAH:AddDropdown("AH_AttackMethod", { Title = "Attack Method", Values = {"Both", "Simulated Click", "Tool Activate"}, Default = "Both", Callback = function(v) GlobalConfig.AH.AttackMethod = v end }) TabAH:AddSlider("AH_Height", { Title = "Height Offset", Default = 0, Min = -15, Max = 15, Rounding = 1, Callback = function(v) GlobalConfig.AH.Height = v end }) TabAH:AddSlider("AH_Distance", { Title = "Distance Offset", Default = 0, Min = -15, Max = 15, Rounding = 1, Callback = function(v) GlobalConfig.AH.Distance = v end }) TabAH:AddSlider("AH_Delay", { Title = "Attack Delay (sec)", Default = 0.05, Min = 0.01, Max = 2, Rounding = 2, Callback = function(v) GlobalConfig.AH.Delay = v end }) TabAH:AddColorpicker("AH_Color", { Title = "Crosshair Color", Default = Color3.fromRGB(255, 50, 50), Callback = function(v) GlobalConfig.AH.TargetColor = v end }) -- ── COMBAT TAB ── local TabCombat = Tabs.Combat TabCombat:AddSection("Combat Suite [SURVIVOR ONLY]") TabCombat:AddToggle("Combat_Tog", { Title = "Enable Combat Suite", Description = "Active only when playing as Survivor.", Default = false, Callback = function(v) if v and IsSafeBlocked("Combat Module") then Options.Combat_Tog:SetValue(false); return end GlobalConfig.Combat.Enabled = v if GlobalState.UpdateMobileBtn then GlobalState.UpdateMobileBtn("Combat", v) end end }) TabCombat:AddParagraph({ Title = "Guest 1337 / Sixer", Content = "Auto Parry on 'Q' -> Followup strike/ram on 'E' (У) after delay." }) TabCombat:AddToggle("Combat_1337_Parry", { Title = "Auto Melee Parry (Q)", Default = true, Callback = function(v) GlobalConfig.Combat.Guest_ParryQ = v end }) TabCombat:AddSlider("Combat_1337_Dist", { Title = "Parry Range (Studs)", Default = 14, Min = 6, Max = 25, Rounding = 1, Callback = function(v) GlobalConfig.Combat.Guest_Range = v end }) TabCombat:AddToggle("Combat_1337_FollowE", { Title = "Auto Strike/Ram on 'E' (У) after Q", Default = true, Callback = function(v) GlobalConfig.Combat.Guest_FollowupE = v end }) TabCombat:AddSlider("Combat_1337_EDelay", { Title = "E (У) Followup Delay (sec)", Default = 1.0, Min = 0.2, Max = 2.5, Rounding = 1, Callback = function(v) GlobalConfig.Combat.Guest_FollowupDelay = v end }) TabCombat:AddSlider("Combat_1337_ERange", { Title = "E (У) Max Distance (Studs)", Default = 18, Min = 6, Max = 35, Rounding = 1, Callback = function(v) GlobalConfig.Combat.Guest_FollowupRange = v end }) TabCombat:AddParagraph({ Title = "TwoTime", Content = "180° Rear positioning for guaranteed backstab critical hits." }) TabCombat:AddToggle("Combat_TwoTime_Back", { Title = "Enable Rear Backstab", Default = false, Callback = function(v) GlobalConfig.Combat.TwoTime_Backstab = v end }) TabCombat:AddSlider("Combat_TwoTime_Dist", { Title = "Back Distance (Studs)", Default = 3.5, Min = 1.0, Max = 8.0, Rounding = 1, Callback = function(v) GlobalConfig.Combat.TwoTime_Dist = v end }) TabCombat:AddParagraph({ Title = "Shedletsky", Content = "Single sword slash with recharge cooldown control (no block)." }) TabCombat:AddSlider("Combat_Shed_Delay", { Title = "Slash Cooldown (sec)", Default = 0.6, Min = 0.2, Max = 2.0, Rounding = 2, Callback = function(v) GlobalConfig.Combat.Shed_SlashDelay = v end }) -- ── VISUALS TAB ── local TabVis = Tabs.Visuals local SecThreshold = TabVis:AddSection("Safe Cube & Dynamic Killer Detector") SecThreshold:AddToggle("SpawnZone_Tog", { Title = "Enable Spawn Safe Cube", Default = false, Callback = function(v) GlobalConfig.Spawn.Enabled = v; SpawnEngine:UpdateVisual() end }) SecThreshold:AddToggle("SpawnZone_ShowEdges", { Title = "Show Cube Edges", Default = false, Callback = function(v) GlobalConfig.Spawn.ShowEdges = v; SpawnEngine:UpdateVisual() end }) SecThreshold:AddSlider("SpawnZone_Size", { Title = "Spawn Size (Studs)", Default = 3000, Min = 500, Max = 10000, Rounding = 0, Callback = function(v) GlobalConfig.Spawn.CubeSize = v; SpawnEngine:UpdateVisual() end }) SecThreshold:AddButton({ Title = "Set Spawn Center Here", Callback = function() if SpawnEngine:SetNewPosition() then Fluent:Notify({Title="Spawn", Content="Center locked to current position!", Duration=2, Type="Success"}) end end }) SecThreshold:AddToggle("DoubleCheck_Tog", { Title = "Dynamic Killer Max-HP Tracker", Default = true, Callback = function(v) GlobalConfig.Vis.DoubleCheck = v end }) -- ── CHAMS player ── local function AddHighlightSection(title, prefix, defOut, defFill) local sec = TabVis:AddSection(title .. " Chams") sec:AddToggle(prefix.."_Enabled", { Title = "Enable "..title, Default = false, Callback = function(v) GlobalConfig.Vis[prefix.."_Enabled"] = v end }) sec:AddDropdown(prefix.."_Style", { Title = "Style", Values = {"Outline", "Fill"}, Multi = true, Default = {}, Callback = function(v) GlobalConfig.Vis[prefix.."_Style"] = v end }) sec:AddColorpicker(prefix.."_Out", { Title = "Outline Color", Default = defOut, Callback = function(v) GlobalConfig.Vis[prefix.."_Out"] = v end }) sec:AddColorpicker(prefix.."_Fill", { Title = "Fill Color", Default = defFill, Callback = function(v) GlobalConfig.Vis[prefix.."_Fill"] = v end }) sec:AddSlider(prefix.."_LO", { Title = "Outline Transparency", Min = 0, Max = 5, Default = 0, Rounding = 1, Callback = function(v) GlobalConfig.Vis[prefix.."_LO"] = v end }) sec:AddSlider(prefix.."_LF", { Title = "Fill Transparency", Min = 0, Max = 5, Default = 2, Rounding = 1, Callback = function(v) GlobalConfig.Vis[prefix.."_LF"] = v end }) end AddHighlightSection("Local Player", "Loc", Color3.fromRGB(255, 255, 255), Color3.fromRGB(100, 100, 255)) AddHighlightSection("Killer", "K", Color3.fromRGB(255, 255, 255), Color3.fromRGB(255, 40, 40)) AddHighlightSection("Survivor", "S", Color3.fromRGB(255, 255, 255), Color3.fromRGB(40, 255, 120)) -- ── LOBBY (SAFE ZONE) ── local SecLobby = TabVis:AddSection("Lobby (Safe Zone) Editor") SecLobby:AddToggle("Lobby_Enabled", { Title = "Enable Lobby Chams", Default = false, Callback = function(v) GlobalConfig.Vis.Lobby_Enabled = v end }) SecLobby:AddDropdown("Lobby_Style", { Title = "Chams Style", Values = {"Outline", "Fill"}, Multi = true, Default = {}, Callback = function(v) GlobalConfig.Vis.Lobby_Style = v end }) SecLobby:AddColorpicker("Lobby_Out", { Title = "Chams Outline Color", Default = Color3.fromRGB(255, 255, 255), Callback = function(v) GlobalConfig.Vis.Lobby_Out = v end }) SecLobby:AddColorpicker("Lobby_Fill", { Title = "Chams Fill Color", Default = Color3.fromRGB(255, 215, 0), Callback = function(v) GlobalConfig.Vis.Lobby_Fill = v end }) SecLobby:AddSlider("Lobby_LO", { Title = "Chams Outline Transparency", Min = 0, Max = 5, Default = 0, Rounding = 1, Callback = function(v) GlobalConfig.Vis.Lobby_LO = v end }) SecLobby:AddSlider("Lobby_LF", { Title = "Chams Fill Transparency", Min = 0, Max = 5, Default = 2, Rounding = 1, Callback = function(v) GlobalConfig.Vis.Lobby_LF = v end }) SecLobby:AddParagraph({ Title = "Lobby 2D Box", Content = "" }) SecLobby:AddToggle("Lobby_Box_Tog", { Title = "Enable Lobby 2D Box", Default = false, Callback = function(v) GlobalConfig.Vis.Lobby_Box_Tog = v end }) SecLobby:AddColorpicker("Lobby_Box_Fill", { Title = "Box Fill Color", Default = GlobalConfig.Vis.Lobby_Box_Fill, Callback = function(v) GlobalConfig.Vis.Lobby_Box_Fill = v end }) SecLobby:AddColorpicker("Lobby_Box_Out", { Title = "Box Outline Color", Default = GlobalConfig.Vis.Lobby_Box_Out, Callback = function(v) GlobalConfig.Vis.Lobby_Box_Out = v end }) SecLobby:AddParagraph({ Title = "Lobby Tag (Only [LOBBY])", Content = "" }) SecLobby:AddToggle("Lobby_Role_Tog", { Title = "Show [LOBBY] Tag", Default = false, Callback = function(v) GlobalConfig.Vis.Lobby_Role_Tog = v end }) SecLobby:AddDropdown("Lobby_Role_Dir", { Title = "Tag Direction", Values = {"Top", "Bottom", "Left", "Right"}, Default = "Top", Callback = function(v) GlobalConfig.Vis.Lobby_Role_Dir = v end }) SecLobby:AddColorpicker("Lobby_Role_Fill", { Title = "Tag Text Color", Default = Color3.fromRGB(255, 220, 60), Callback = function(v) GlobalConfig.Vis.Lobby_Role_Fill = v end }) SecLobby:AddColorpicker("Lobby_Role_Out", { Title = "Tag Outline Color", Default = Color3.fromRGB(0, 0, 0), Callback = function(v) GlobalConfig.Vis.Lobby_Role_Out = v end }) -- ── object world ── local SecGenESP = TabVis:AddSection("Generators ESP") SecGenESP:AddToggle("Gen_ESP_Tog", { Title = "Enable Generator ESP", Default = false, Callback = function(v) GlobalConfig.Gen.ESP_Enabled = v end }) SecGenESP:AddToggle("Gen_ESP_Percent", { Title = "Show Progress %", Default = true, Callback = function(v) GlobalConfig.Gen.ESP_ShowPercent = v end }) SecGenESP:AddToggle("Gen_ESP_Dist", { Title = "Show Distance", Default = true, Callback = function(v) GlobalConfig.Gen.ESP_ShowDist = v end }) SecGenESP:AddToggle("Gen_FilterFakes", { Title = "Filter Fake Generators", Default = true, Callback = function(v) GlobalConfig.Gen.FilterFakes = v end }) SecGenESP:AddColorpicker("Gen_ESP_Col", { Title = "ESP Color", Default = Color3.fromRGB(0, 200, 255), Callback = function(v) GlobalConfig.Gen.ESP_Color = v end }) local SecItemESP = TabVis:AddSection("Items ESP (Medkits & Colas)") SecItemESP:AddToggle("Item_ESP_Tog", { Title = "Enable Items ESP", Default = false, Callback = function(v) GlobalConfig.Items.ESP_Enabled = v end }) SecItemESP:AddToggle("Item_ESP_Dist", { Title = "Show Distance", Default = true, Callback = function(v) GlobalConfig.Items.ShowDist = v end }) SecItemESP:AddColorpicker("Item_ESP_Col", { Title = "Items ESP Color", Default = Color3.fromRGB(255, 200, 50), Callback = function(v) GlobalConfig.Items.Chams_Col = v end }) local Sec2D = TabVis:AddSection("2D Box & Tags System") Sec2D:AddSlider("2D_GlobalLimp", { Title = "Global Text Transparency", Min = 0, Max = 5, Default = 0, Rounding = 1, Callback = function(v) GlobalConfig.Vis.Tags_GlobalLimp = v end }) Sec2D:AddSlider("Box_WOffset", { Title = "Box Width Offset", Min = -15, Max = 15, Default = 0, Rounding = 1, Callback = function(v) GlobalConfig.Vis.Box_WOffset = v end }) Sec2D:AddSlider("Box_HOffset", { Title = "Box Height Offset", Min = -15, Max = 15, Default = 0, Rounding = 1, Callback = function(v) GlobalConfig.Vis.Box_HOffset = v end }) local DirValues = { "Top", "Bottom", "Left", "Right" } -- ── 2D SURVIVORS ── Sec2D:AddParagraph({ Title = "Survivor: 2D Box", Content = "" }) Sec2D:AddToggle("Surv_Box_Tog", { Title = "Enable Survivor Box", Default = false, Callback = function(v) GlobalConfig.Vis.Surv_Box_Tog = v end }) Sec2D:AddColorpicker("Surv_Box_Fill", { Title = "Box Fill Color", Default = GlobalConfig.Vis.Surv_Box_Fill, Callback = function(v) GlobalConfig.Vis.Surv_Box_Fill = v end }) Sec2D:AddColorpicker("Surv_Box_Out", { Title = "Box Outline Color", Default = GlobalConfig.Vis.Surv_Box_Out, Callback = function(v) GlobalConfig.Vis.Surv_Box_Out = v end }) Sec2D:AddParagraph({ Title = "Survivor: Tags", Content = "" }) Sec2D:AddToggle("Surv_Role_Tog", { Title = "Show [SURVIVOR]", Default = false, Callback = function(v) GlobalConfig.Vis.Surv_Role_Tog = v end }) Sec2D:AddDropdown("Surv_Role_Dir", { Title = "Direction", Values = DirValues, Default = "Top", Callback = function(v) GlobalConfig.Vis.Surv_Role_Dir = v end }) Sec2D:AddToggle("Surv_Name_Tog", { Title = "Show Character Name", Default = false, Callback = function(v) GlobalConfig.Vis.Surv_Name_Tog = v end }) Sec2D:AddDropdown("Surv_Name_Dir", { Title = "Direction", Values = DirValues, Default = "Top", Callback = function(v) GlobalConfig.Vis.Surv_Name_Dir = v end }) Sec2D:AddToggle("Surv_Skin_Tog", { Title = "Show Skin Name", Default = false, Callback = function(v) GlobalConfig.Vis.Surv_Skin_Tog = v end }) Sec2D:AddDropdown("Surv_Skin_Dir", { Title = "Direction", Values = DirValues, Default = "Top", Callback = function(v) GlobalConfig.Vis.Surv_Skin_Dir = v end }) Sec2D:AddToggle("Surv_Login_Tog", { Title = "Show Username (@Login)", Default = false, Callback = function(v) GlobalConfig.Vis.Surv_Login_Tog = v end }) Sec2D:AddDropdown("Surv_Login_Dir", { Title = "Direction", Values = DirValues, Default = "Top", Callback = function(v) GlobalConfig.Vis.Surv_Login_Dir = v end }) Sec2D:AddToggle("Surv_HP_Tog", { Title = "Show HP + Overheal", Default = false, Callback = function(v) GlobalConfig.Vis.Surv_HP_Tog = v end }) Sec2D:AddDropdown("Surv_HP_Dir", { Title = "Direction", Values = DirValues, Default = "Top", Callback = function(v) GlobalConfig.Vis.Surv_HP_Dir = v end }) Sec2D:AddToggle("Surv_Status_Tog", { Title = "Show Status Badges ([FIXING], [SLATESKIN])", Default = false, Callback = function(v) GlobalConfig.Vis.Surv_Status_Tog = v end }) Sec2D:AddDropdown("Surv_Status_Dir", { Title = "Direction", Values = DirValues, Default = "Top", Callback = function(v) GlobalConfig.Vis.Surv_Status_Dir = v end }) Sec2D:AddToggle("Surv_Dist_Tog", { Title = "Show Distance", Default = false, Callback = function(v) GlobalConfig.Vis.Surv_Dist_Tog = v end }) Sec2D:AddDropdown("Surv_Dist_Dir", { Title = "Direction", Values = DirValues, Default = "Bottom", Callback = function(v) GlobalConfig.Vis.Surv_Dist_Dir = v end }) -- ── 2D KILLER ── Sec2D:AddParagraph({ Title = "Killer: 2D Box", Content = "" }) Sec2D:AddToggle("Killer_Box_Tog", { Title = "Enable Killer Box", Default = false, Callback = function(v) GlobalConfig.Vis.Killer_Box_Tog = v end }) Sec2D:AddColorpicker("Killer_Box_Fill", { Title = "Box Fill Color", Default = GlobalConfig.Vis.Killer_Box_Fill, Callback = function(v) GlobalConfig.Vis.Killer_Box_Fill = v end }) Sec2D:AddColorpicker("Killer_Box_Out", { Title = "Box Outline Color", Default = GlobalConfig.Vis.Killer_Box_Out, Callback = function(v) GlobalConfig.Vis.Killer_Box_Out = v end }) Sec2D:AddParagraph({ Title = "Killer: Tags", Content = "" }) Sec2D:AddToggle("Killer_Role_Tog", { Title = "Show [KILLER]", Default = false, Callback = function(v) GlobalConfig.Vis.Killer_Role_Tog = v end }) Sec2D:AddDropdown("Killer_Role_Dir", { Title = "Direction", Values = DirValues, Default = "Top", Callback = function(v) GlobalConfig.Vis.Killer_Role_Dir = v end }) Sec2D:AddToggle("Killer_Name_Tog", { Title = "Show Character Name", Default = false, Callback = function(v) GlobalConfig.Vis.Killer_Name_Tog = v end }) Sec2D:AddDropdown("Killer_Name_Dir", { Title = "Direction", Values = DirValues, Default = "Top", Callback = function(v) GlobalConfig.Vis.Killer_Name_Dir = v end }) Sec2D:AddToggle("Killer_Skin_Tog", { Title = "Show Skin Name", Default = false, Callback = function(v) GlobalConfig.Vis.Killer_Skin_Tog = v end }) Sec2D:AddDropdown("Killer_Skin_Dir", { Title = "Direction", Values = DirValues, Default = "Top", Callback = function(v) GlobalConfig.Vis.Killer_Skin_Dir = v end }) Sec2D:AddToggle("Killer_Login_Tog", { Title = "Show Username (@Login)", Default = false, Callback = function(v) GlobalConfig.Vis.Killer_Login_Tog = v end }) Sec2D:AddDropdown("Killer_Login_Dir", { Title = "Direction", Values = DirValues, Default = "Top", Callback = function(v) GlobalConfig.Vis.Killer_Login_Dir = v end }) Sec2D:AddToggle("Killer_HP_Tog", { Title = "Show HP", Default = false, Callback = function(v) GlobalConfig.Vis.Killer_HP_Tog = v end }) Sec2D:AddDropdown("Killer_HP_Dir", { Title = "Direction", Values = DirValues, Default = "Top", Callback = function(v) GlobalConfig.Vis.Killer_HP_Dir = v end }) Sec2D:AddToggle("Killer_Status_Tog", { Title = "Show Status Badges ([INVINCIBLE], [STUNNED])", Default = false, Callback = function(v) GlobalConfig.Vis.Killer_Status_Tog = v end }) Sec2D:AddDropdown("Killer_Status_Dir", { Title = "Direction", Values = DirValues, Default = "Top", Callback = function(v) GlobalConfig.Vis.Killer_Status_Dir = v end }) Sec2D:AddToggle("Killer_Dist_Tog", { Title = "Show Distance", Default = false, Callback = function(v) GlobalConfig.Vis.Killer_Dist_Tog = v end }) Sec2D:AddDropdown("Killer_Dist_Dir", { Title = "Direction", Values = DirValues, Default = "Bottom", Callback = function(v) GlobalConfig.Vis.Killer_Dist_Dir = v end }) -- ── CUSTOM LMS TAB ── local TabLMS = Tabs.LMS TabLMS:AddSection("LMS Audio Controller") TabLMS:AddToggle("LMS_MainTog", { Title = "Enable Custom LMS Music", Default = false, Callback = function(v) GlobalConfig.LMS.Enabled = v if not v then RestoreAllNativeAudio() end DoLMSAudioEngine() end }) local SurvTrackDrop = TabLMS:AddDropdown("LMS_SurvTrack", { Title = "Survivor Track (.mp3/.ogg)", Values = PreloadedFilesList, Default = GlobalConfig.LMS.SurvivorTrack, Callback = function(v) GlobalConfig.LMS.SurvivorTrack = v ResolveTrackAsset(v) SaveLMSConfig() DoLMSAudioEngine() end }) local KillerTrackDrop = TabLMS:AddDropdown("LMS_KillerTrack", { Title = "Killer Track (.mp3/.ogg)", Values = PreloadedFilesList, Default = GlobalConfig.LMS.KillerTrack, Callback = function(v) GlobalConfig.LMS.KillerTrack = v ResolveTrackAsset(v) SaveLMSConfig() DoLMSAudioEngine() end }) TabLMS:AddButton({ Title = "Refresh Local Audio Files", Callback = function() local updated = GetFilesList() SurvTrackDrop:SetValues(updated) KillerTrackDrop:SetValues(updated) Fluent:Notify({Title="LMS Audio", Content="Track list updated successfully!", Duration=1.5}) end }) TabLMS:AddSlider("LMS_Volume", { Title = "Music Volume", Min = 0, Max = 5, Default = 1.0, Rounding = 1, Callback = function(v) GlobalConfig.LMS.Volume = v end }) TabLMS:AddSlider("LMS_StartDelay", { Title = "Start Delay (sec)", Min = 0.0, Max = 10.0, Default = 0.0, Rounding = 1, Callback = function(v) GlobalConfig.LMS.StartDelay = v end }) TabLMS:AddToggle("LMS_LoopTrack", { Title = "Loop Music Track", Default = true, Callback = function(v) GlobalConfig.LMS.LoopTrack = v end }) TabLMS:AddSection("Visual Intro Scene") TabLMS:AddDropdown("LMS_StartEffect", { Title = "Visual Intro Style", Values = {"None", "DOD", "Pizza Tower", "FNF"}, Default = "None", Callback = function(v) GlobalConfig.LMS.StartEffect = v end }) TabLMS:AddSlider("LMS_FXVolume", { Title = "Intro Sound Volume", Min = 0, Max = 5, Default = 1.0, Rounding = 1, Callback = function(v) GlobalConfig.LMS.EffectVolume = v end }) TabLMS:AddSlider("DOD_SurvCamDist", { Title = "Camera Zoom: Survivor", Min = 1.0, Max = 15.0, Default = 4.8, Rounding = 1, Callback = function(v) GlobalConfig.LMS.DOD_SurvCamDist = v end }) TabLMS:AddSlider("DOD_KillerCamDist", { Title = "Camera Zoom: Killer", Min = 1.0, Max = 15.0, Default = 4.8, Rounding = 1, Callback = function(v) GlobalConfig.LMS.DOD_KillerCamDist = v end }) TabLMS:AddButton({ Title = "Preview Intro Scene", Callback = function() local fx = LMS_Visuals[GlobalConfig.LMS.StartEffect] if fx then task.spawn(fx) Fluent:Notify({Title="LMS Preview", Content="Playing intro: " .. GlobalConfig.LMS.StartEffect, Duration=2}) end end }) -- ── MOBILE OVERLAY TAB ── local TabMob = Tabs.Mobile MobileControl:CreateButton("Menu", MOB_ICONS.Menu, GetSavedPos("Menu", UDim2.new(0.9, 0, 0.4, 0)), function() if Window then Window:Minimize() end end) MobileControl:CreateButton("HideUI", MOB_ICONS.HideUI, GetSavedPos("HideUI", UDim2.new(0.82, 0, 0.4, 0)), function() MobileControl:ToggleVisibility() end) MobileControl:CreateButton("Speed", MOB_ICONS.Speed, GetSavedPos("Speed", UDim2.new(0.9, 0, 0.55, 0)), function() if Options.SpeedTog then Options.SpeedTog:SetValue(not Options.SpeedTog.Value) end end) MobileControl:CreateButton("AH", MOB_ICONS.AH, GetSavedPos("AH", UDim2.new(0.82, 0, 0.55, 0)), function() if Options.AHTog then Options.AHTog:SetValue(not Options.AHTog.Value) end end) MobileControl:CreateButton("Combat", MOB_ICONS.Combat, GetSavedPos("Combat", UDim2.new(0.9, 0, 0.70, 0)), function() if Options.Combat_Tog then Options.Combat_Tog:SetValue(not Options.Combat_Tog.Value) end end) MobileControl:CreateButton("MouseTP", MOB_ICONS.MouseTP, GetSavedPos("MouseTP", UDim2.new(0.82, 0, 0.70, 0)), function() MouseTPEngine:Teleport() end) MobileControl:CreateButton("WP", MOB_ICONS.WP, GetSavedPos("WP", UDim2.new(0.74, 0, 0.70, 0)), function() local name = Options.WP_Select and Options.WP_Select.Value local root = GetRoot(LocalPlayer.Character) if name and GlobalState.Waypoints[name] and root then root.CFrame = GlobalState.Waypoints[name] Fluent:Notify({Title="Quick TP", Content="Teleported to: " .. name, Duration=2}) end end) GlobalState.UpdateMobileBtn = function(id, state) if MobileControl.Buttons[id] then MobileControl.Buttons[id].SetState(state) end end TabMob:AddToggle("Mob_Enable", { Title = "Show Mobile Overlay", Default = false, Callback = function(v) MobileScreenGui.Enabled = v; GlobalConfig.ShowMobileBtn = v end }) TabMob:AddToggle("Mob_Edit", { Title = "Drag Buttons Mode", Default = false, Callback = function(v) MobileControl:SetEditMode(v) end }) local EdSection = TabMob:AddSection("Button Editor") local function AddEditorControls(id, hasToggle) EdSection:AddParagraph({ Title = id, Content = "" }) EdSection:AddSlider("Size_" .. id, { Title = "Size (px)", Default = ButtonSettings[id].Size, Min = 20, Max = 100, Rounding = 0, Callback = function(v) ButtonSettings[id].Size = v; if MobileControl.Buttons[id] then MobileControl.Buttons[id].ApplySettings() end end }) EdSection:AddSlider("Transp_" .. id, { Title = "Transparency %", Default = ButtonSettings[id].Transp, Min = 0, Max = 100, Rounding = 0, Callback = function(v) ButtonSettings[id].Transp = v; if MobileControl.Buttons[id] then MobileControl.Buttons[id].ApplySettings() end end }) if hasToggle then EdSection:AddToggle("Enable_" .. id, { Title = "Show Button", Default = ButtonSettings[id].Enabled, Callback = function(v) ButtonSettings[id].Enabled = v; if MobileControl.Buttons[id] then MobileControl.Buttons[id].ApplySettings() end end }) end end AddEditorControls("Menu", false) AddEditorControls("HideUI", false) AddEditorControls("Speed", true) AddEditorControls("AH", true) AddEditorControls("Combat", true) AddEditorControls("MouseTP", true) AddEditorControls("WP", true) -- ── SETTINGS TAB ── local TabSettings = Tabs.Settings SaveManager:SetLibrary(Fluent) InterfaceManager:SetLibrary(Fluent) SaveManager:IgnoreThemeSettings() InterfaceManager:SetFolder(FOLDER_NAME) SaveManager:SetFolder(FOLDER_NAME .. "/cfg") InterfaceManager:BuildInterfaceSection(TabSettings) TabSettings:AddSection("Widget") TabSettings:AddToggle("TimeUIToggle", { Title = "Show System Time UI", Default = false, Callback = function(v) GlobalConfig.TimeUI.Enabled = v; TimeScreenGui.Enabled = v end }) SaveManager:BuildConfigSection(TabSettings) TabSettings:AddButton({ Title = "REJOIN SERVER", Callback = function() if #Players:GetPlayers() <= 1 then TeleportService:Teleport(game.PlaceId, LocalPlayer) else TeleportService:TeleportToPlaceInstance(game.PlaceId, game.JobId, LocalPlayer) end end }) -- ── DYNAMIC KEYBIND LISTENERS ── UserInputService.InputBegan:Connect(function(input, gpe) if gpe or UserInputService:GetFocusedTextBox() then return end if Options.SpeedBind and Options.SpeedBind.Value and Options.SpeedBind.Value ~= "None" then if input.KeyCode.Name == Options.SpeedBind.Value or input.UserInputType.Name == Options.SpeedBind.Value then if GlobalConfig.Binds.Speed_Mode == "Hold" and Options.SpeedTog then Options.SpeedTog:SetValue(true) end end end if Options.NoclipBind and Options.NoclipBind.Value and Options.NoclipBind.Value ~= "None" then if input.KeyCode.Name == Options.NoclipBind.Value or input.UserInputType.Name == Options.NoclipBind.Value then if GlobalConfig.Binds.Noclip_Mode == "Hold" and Options.NoclipTog then Options.NoclipTog:SetValue(true) end end end if Options.AHBind and Options.AHBind.Value and Options.AHBind.Value ~= "None" then if input.KeyCode.Name == Options.AHBind.Value or input.UserInputType.Name == Options.AHBind.Value then if GlobalConfig.Binds.AH_Mode == "Hold" and Options.AHTog then Options.AHTog:SetValue(true) end end end if GlobalConfig.MouseTP.Enabled and GlobalConfig.MouseTP.Mode == "Keybind + Mouse Click" then if Options.MouseTP_Bind and Options.MouseTP_Bind.Value and Options.MouseTP_Bind.Value ~= "None" then if input.KeyCode.Name == Options.MouseTP_Bind.Value or input.UserInputType.Name == Options.MouseTP_Bind.Value then GlobalState.MouseTP_Primed = true end end if GlobalState.MouseTP_Primed and input.UserInputType == Enum.UserInputType.MouseButton1 then MouseTPEngine:Teleport() end end end) UserInputService.InputEnded:Connect(function(input, gpe) if Options.SpeedBind and Options.SpeedBind.Value and Options.SpeedBind.Value ~= "None" then if input.KeyCode.Name == Options.SpeedBind.Value or input.UserInputType.Name == Options.SpeedBind.Value then if GlobalConfig.Binds.Speed_Mode == "Hold" and Options.SpeedTog then Options.SpeedTog:SetValue(false) end end end if Options.NoclipBind and Options.NoclipBind.Value and Options.NoclipBind.Value ~= "None" then if input.KeyCode.Name == Options.NoclipBind.Value or input.UserInputType.Name == Options.NoclipBind.Value then if GlobalConfig.Binds.Noclip_Mode == "Hold" and Options.NoclipTog then Options.NoclipTog:SetValue(false) end end end if Options.AHBind and Options.AHBind.Value and Options.AHBind.Value ~= "None" then if input.KeyCode.Name == Options.AHBind.Value or input.UserInputType.Name == Options.AHBind.Value then if GlobalConfig.Binds.AH_Mode == "Hold" and Options.AHTog then Options.AHTog:SetValue(false) end end end if Options.MouseTP_Bind and Options.MouseTP_Bind.Value and Options.MouseTP_Bind.Value ~= "None" then if input.KeyCode.Name == Options.MouseTP_Bind.Value or input.UserInputType.Name == Options.MouseTP_Bind.Value then GlobalState.MouseTP_Primed = false end end end) -- ── FAST HEARTBEAT LOOP ────────────────────────────────────────────────── local FastTimers = { AH = 0, Combat = 0, LMS = 0 } RunService.Heartbeat:Connect(function(dt) if not GlobalState.ScriptActive then return end pcall(function() DoMovementPhysics(dt) end) pcall(function() MouseTPEngine:Update() end) pcall(function() DoVisualsRender() end) FastTimers.LMS = FastTimers.LMS + dt if FastTimers.LMS >= 0.05 then FastTimers.LMS = 0 pcall(DoLMSAudioEngine) end FastTimers.Combat = FastTimers.Combat + dt if FastTimers.Combat >= 0.05 then FastTimers.Combat = 0 pcall(function() DoSurvivorCombatEngine() end) end FastTimers.AH = FastTimers.AH + dt if FastTimers.AH >= 0.05 then FastTimers.AH = 0 pcall(function() DoKillerAutoHunt() end) end end) task.spawn(function() local phase = 0 while GlobalState.ScriptActive do task.wait(0.25) phase = (phase + 1) % 4 pcall(CheckRoundLifecycle) if phase == 0 then pcall(UpdateDynamicKillerRole) elseif phase == 1 then pcall(UpdateCachedWorldObjectsFast) elseif phase == 2 then pcall(function() local rawPing = StatsService.Network.ServerStatsItem ["Data Ping"]:GetValue() GlobalState.CurrentPing = math.floor(rawPing) local cam = GetCamera() if cam then for _, btn in pairs(MobileControl.Buttons) do if btn.Canvas and btn.Canvas.Parent then local s = btn.Canvas.AbsoluteSize if s.X > 0 and s.Y > 0 then btn.Canvas.Position = MobileControl:GetSafePosition(btn.Canvas.Position, s.X) end end end end end) elseif phase == 3 then pcall(function() for inst, cacheObj in pairs(GlobalState.Vis.ItemCache) do if not inst.Parent or not inst:FindFirstChild("ItemRoot") then if cacheObj.Gui then pcall(function() cacheObj.Gui:Destroy() end) end GlobalState.Vis.ItemCache[inst] = nil end end end) end end end) task.spawn(function() while GlobalState.ScriptActive do task.wait(1) if GlobalConfig.TimeUI.Enabled and TimeScreenGui.Enabled then TimeLabel.Text = os.date("%H:%M:%S") end end end) -- ── INITIALIZATION ── LocalPlayer.CharacterAdded:Connect(function(char) RestoreCollisions() end) pcall(function() UpdateCachedWorldObjectsFast() end) pcall(function() if Tabs and Tabs.Main and typeof(Tabs.Main.Select) == "function" then Tabs.Main:Select() elseif Window and typeof(Window.SelectTab) == "function" then Window:SelectTab(1) end end) Fluent:Notify({ Title = "DOOMSENSE V1", Content = "Forsaken Master Core Loaded. [Insert = Menu]", Duration = 5 }) task.delay(0.5, function() pcall(function() if SaveManager and SaveManager.LoadAutoloadConfig then SaveManager:LoadAutoloadConfig() end end) end) CoreGui.ChildRemoved:Connect(function(child) if child.Name == "ScreenGui" then MouseTPEngine:DestroyMarker() if SpawnEngine.Adornment then pcall(function() SpawnEngine.Adornment:Destroy() end) end if GlobalState.Vis.VisualGUI then pcall(function() GlobalState.Vis.VisualGUI:Destroy() end) end if VisualsGui then pcall(function() VisualsGui:Destroy() end) end if FX_Gui then pcall(function() FX_Gui:Destroy() end) end if MobileScreenGui then pcall(function() MobileScreenGui:Destroy() end) end if TimeScreenGui then pcall(function() TimeScreenGui:Destroy() end) end GlobalState.ScriptActive = false RestoreCollisions() end end) print("[DOOMSENSE V1 FORSAKEN].")