local Players = game:GetService("Players") local StarterGui = game:GetService("StarterGui") local RunService = game:GetService("RunService") local LocalPlayer = Players.LocalPlayer local INF = math.huge local DETECTION_RANGE = 10 -- Phạm vi cho các item thông thường local PANEL_RANGE = 10.5 -- Phạm vi riêng cho Pressure Panels local PLACE_N2 = 16667550979 -- ====================== -- 🔔 NOTIFICATION -- ====================== local function notify(title, text, duration) pcall(function() StarterGui:SetCore("SendNotification", { Title = title; Text = text; Duration = duration or 0.1; }) end) end -- ====================== -- 🔍 CHECK OBJECTIVE (MỚI) -- ====================== -- Hàm kiểm tra xem có đang ở phase "Chuẩn bị cho buổi tối" không local function isPreparePhase() local success, result = pcall(function() local gui = LocalPlayer:FindFirstChild("PlayerGui") local dialogue = gui and gui:FindFirstChild("DialogueUI") local objFrame = dialogue and dialogue:FindFirstChild("ObjectiveFrame") local objText = objFrame and objFrame:FindFirstChild("ObjectiveText") if objText then return string.find(objText.Text, "Prepare for the night") ~= nil end return false end) return success and result end -- ====================== -- ♾️ STATS (GIỮ NGUYÊN) -- ====================== local function setupBreath(char) pcall(function() local breath = char:WaitForChild("Breath", 2) if breath then breath:SetAttribute("Max", INF) breath.Value = INF if game.Lighting:FindFirstChild("Blur") then game.Lighting.Blur.Enabled = false end end end) end local function setupStamina(char) pcall(function() local sprint = char:WaitForChild("Sprint", 2) local stam = sprint and sprint:WaitForChild("Stam", 2) if stam then stam:SetAttribute("Max", INF) stam.Value = INF end end) end local function setupFlashlight(char) pcall(function() local flashlight = char:WaitForChild("Flashlight", 1) local battery = flashlight and flashlight:WaitForChild("Battery", 1) if battery then battery:SetAttribute("Max", INF) battery.Value = INF end end) end local function autoFlashlight(char) char.ChildAdded:Connect(function(child) if child.Name == "Flashlight" then task.wait(1) local battery = child:FindFirstChild("Battery") if battery then battery:SetAttribute("Max", INF) battery.Value = INF end end end) end -- ====================== -- ❄️ TEMPERATURE OFF (GIỮ NGUYÊN) -- ====================== local function disableTemperature(char) pcall(function() local temp = char:WaitForChild("Temperature", 1) if temp then temp.Enabled = false end end) char.ChildAdded:Connect(function(child) if child.Name == "Temperature" then child.Enabled = false end end) end -- ====================== -- ⚡ PRESSURE PANELS (CẬP NHẬT KIỂM TRA PHASE) -- ====================== local lastPanelState = {} local activePanelTasks = 0 local MAX_PANEL_THREADS = 3 local function handlePressurePanels(hrp) local panelsFolder = workspace:FindFirstChild("PressurePanels") if not panelsFolder then return end local cachedPanels = panelsFolder:GetChildren() task.spawn(function() while hrp and hrp.Parent do -- Nếu đang trong phase chuẩn bị đêm, bỏ qua vòng lặp click panel if not isPreparePhase() then local success, err = pcall(function() for _, panel in ipairs(cachedPanels) do local textPart = panel:FindFirstChild("TextPart") local textLabel = textPart and textPart:FindFirstChild("SurfaceGui") and textPart.SurfaceGui:FindFirstChild("TextLabel") if textLabel and textPart then local dist = (hrp.Position - textPart.Position).Magnitude if dist <= PANEL_RANGE then local currentText = textLabel.Text if currentText:find("RELEASE #") and lastPanelState[panel] ~= currentText then local num = currentText:match("#(%d+)") local handle = num and panel:FindFirstChild("Handle"..num) local cd = handle and handle:FindFirstChild("ClickDetector") if cd and activePanelTasks < MAX_PANEL_THREADS then lastPanelState[panel] = currentText activePanelTasks = activePanelTasks + 1 task.spawn(function() for i = 1, 5 do if cd and cd.Parent then fireclickdetector(cd, 0) task.wait(0.05) end end activePanelTasks = activePanelTasks - 1 end) end end else lastPanelState[panel] = nil end end end end) if not success then warn("Panel Loop Error: "..tostring(err)) end end task.wait(0.1) end end) end -- ====================== -- 📍 TELEPORT DATA (GIỮ NGUYÊN) -- ====================== local teleportData = { [14896802601] = { Vector3.new(-67,5,-46), Vector3.new(-33,8,-58) }, [16667550979] = { Vector3.new(-238,82,59) } } -- ====================== -- 🔊 AUTO CLICK NORMAL (CẬP NHẬT KIỂM TRA PHASE) -- ====================== local function handleNormal(name, hrp, onDone) task.spawn(function() local obj = workspace:FindFirstChild(name) local detector = obj and obj:FindFirstChild("ClickDetector") local main = obj and obj:FindFirstChild("Main") local skipGui = main and main:FindFirstChild("SkipGui") if not (obj and detector and skipGui) then return end local started = false local done = false skipGui:GetPropertyChangedSignal("Enabled"):Connect(function() if skipGui.Enabled then started = true elseif started and not skipGui.Enabled then done = true if onDone then onDone() end end end) while not done do task.wait(0.2) if done or not detector or not detector.Parent or not hrp.Parent then break end -- Kiểm tra Objective trước khi Click if not isPreparePhase() then local part = obj:IsA("BasePart") and obj or obj:FindFirstChildWhichIsA("BasePart") if part and (hrp.Position - part.Position).Magnitude <= DETECTION_RANGE then pcall(function() fireclickdetector(detector, 0) end) end end end end) end -- ====================== -- 🧾 PUNCH IN (CẬP NHẬT KIỂM TRA PHASE) -- ====================== local function handlePunchIn(hrp) task.spawn(function() local obj = workspace:FindFirstChild("PunchIn") local detector = obj and obj:FindFirstChild("ClickDetector") local gui = obj and obj:FindFirstChild("Sign") and obj.Sign:FindFirstChild("BillboardGui") if not (obj and detector and gui) then return end local active = false local done = false gui:GetPropertyChangedSignal("Enabled"):Connect(function() if gui.Enabled then active = true elseif active and not gui.Enabled then done = true end end) while not done do task.wait(0.2) if done or not detector or not detector.Parent or not hrp.Parent then break end -- Kiểm tra Objective trước khi Click if not isPreparePhase() then local part = obj:IsA("BasePart") and obj or obj:FindFirstChildWhichIsA("BasePart") if gui.Enabled and part and (hrp.Position - part.Position).Magnitude <= DETECTION_RANGE then pcall(function() fireclickdetector(detector, 0) end) end end end end) end -- ====================== -- 👁️ ESP JERRYCAN (GIỮ NGUYÊN) -- ====================== local espConnection local container local function createESP(part) if part:FindFirstChild("ESP") then return end local gui = Instance.new("BillboardGui") gui.Name = "ESP" gui.Adornee = part gui.Size = UDim2.new(0,80,0,20) gui.AlwaysOnTop = true gui.StudsOffset = Vector3.new(0,1.5,0) gui.Parent = part local txt = Instance.new("TextLabel") txt.Size = UDim2.new(1,0,1,0) txt.BackgroundTransparency = 1 txt.Text = "JerryCan" txt.TextScaled = true txt.TextStrokeTransparency = 0.6 txt.TextColor3 = Color3.fromRGB(255, 80, 20) txt.Parent = gui end local function removeESP(part) local esp = part:FindFirstChild("ESP") if esp then esp:Destroy() end end local function updateESP() if not container then return end for _, model in ipairs(container:GetChildren()) do if model:IsA("Model") then local part = model:FindFirstChild("Main") if part and part:IsA("BasePart") then if part.Transparency == 0 then createESP(part) else removeESP(part) end end end end end local function startESP() container = workspace:FindFirstChild("JerryCans") if not container then return end updateESP() container.ChildAdded:Connect(function(child) if child:IsA("Model") then task.wait(0.05) updateESP() end end) container.ChildRemoved:Connect(function(child) if child:IsA("Model") then local part = child:FindFirstChild("Main") if part then removeESP(part) end end end) if espConnection then espConnection:Disconnect() end espConnection = RunService.Heartbeat:Connect(updateESP) end -- ====================== -- 🧠 MAIN LOGIC (KẾT HỢP) -- ====================== local function onCharacterAdded(char) task.wait(0.5) -- Stats setupBreath(char) setupStamina(char) setupFlashlight(char) autoFlashlight(char) disableTemperature(char) local hrp = char:WaitForChild("HumanoidRootPart", 5) if not hrp then return end local place = game.PlaceId -- Teleport local tpList = teleportData[place] if tpList then for _, pos in ipairs(tpList) do hrp.CFrame = CFrame.new(pos) task.wait(0.5) end end -- JerryCan ESP startESP() -- Auto-Click Logics if place == PLACE_N2 then handlePressurePanels(hrp) handleNormal("VoiceRecorder", hrp, function() if hrp and hrp.Parent then hrp.CFrame = CFrame.new(-295.98, 81.60, 16.83) end end) else handleNormal("VoiceRecorder", hrp) end handleNormal("Radio", hrp) handlePunchIn(hrp) notify("HỆ THỐNG", "Unlimited Oxygen, Stamina & Flashlight…\nTemperature & Anti-Cheat BYPASSED", 3) end -- ====================== -- 🔁 RUN SYSTEM -- ====================== LocalPlayer.CharacterAdded:Connect(onCharacterAdded) if LocalPlayer.Character then onCharacterAdded(LocalPlayer.Character) end