local Players = game:GetService("Players") local RunService = game:GetService("RunService") local Lighting = game:GetService("Lighting") local VirtualInputManager = game:GetService("VirtualInputManager") local GuiService = game:GetService("GuiService") local UserInputService = game:GetService("UserInputService") local ReplicatedStorage = game:GetService("ReplicatedStorage") local mFloor = math.floor local mMax = math.max local mAbs = math.abs local tWait = task.wait local tSpawn = task.spawn local v3 = Vector3.new local v2 = Vector2.new local ud2 = UDim2.new local c3 = Color3.fromRGB local tSort = table.sort local tInsert = table.insert local tTick = tick local localPlayer = Players.LocalPlayer local PlayerGui = localPlayer:WaitForChild("PlayerGui") local MapPath = workspace:WaitForChild("Map") local Challenge = ReplicatedStorage:WaitForChild("Challenge") local isMobile = UserInputService.TouchEnabled and not UserInputService.KeyboardEnabled local isPC = UserInputService.KeyboardEnabled local Settings = { LockersVents = 1, BeastESP = 1, SurvivorESP = 1, ExitESP = 1, ComputerESP = 1, HatchESP = 1, PoisonESP = 1, TrapsESP = 1, EventESP = 2 } local MAX_DISTANCE_LOCKER = 50 local BEAST_WARNING_DISTANCE = 79 local COLORS = { ComputerTable = c3(0, 255, 255), ExitDoor = c3(255, 255, 0), BeastPlayer = c3(255, 93, 108), BeastNear = c3(255, 0, 255), SurvivorPlayer = c3(64, 224, 255), InteractionObj = c3(170, 255, 127), Poison = c3(0, 255, 0), Hatch = c3(255, 170, 0), Trap = c3(255, 0, 0), Event = c3(255, 255, 255) } local indicatorGui = nil local cachedMapObjects = {} local cachedPoisons = {} local cachedTraps = {} local cachedEvents = {} local cachedHatch = nil local lastThrottledUpdate = 0 local lastEventFolderCheck = 0 local CUSTOM_FONT = Font.new("rbxassetid://11702779517", Enum.FontWeight.Bold, Enum.FontStyle.Normal) local function clearESP(obj) if not obj then return end local h = obj:FindFirstChild("H") local b = obj:FindFirstChild("BitchHook") local w = obj:FindFirstChild("WarningTag") if h then h:Destroy() end if b then b:Destroy() end if w then w:Destroy() end end local function applyFullbright() Lighting.Brightness = 2 Lighting.ClockTime = 14 Lighting.FogEnd = 100000 Lighting.GlobalShadows = false Lighting.OutdoorAmbient = c3(255, 255, 255) Lighting.Ambient = c3(255, 255, 255) for _, effect in ipairs(Lighting:GetChildren()) do if effect:IsA("PostProcessEffect") or effect:IsA("Atmosphere") or effect:IsA("Clouds") then effect.Enabled = false end end end local function applyHighlight(obj, color) local h = obj:FindFirstChild("H") if not h then h = Instance.new("Highlight") h.Name = "H" h.Adornee = obj h.FillTransparency = 0.8 h.OutlineTransparency = 0.3 h.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop h.Archivable = false h.Parent = obj end h.FillColor = color h.OutlineColor = color return h end local function checkEventObj(obj) if obj:IsA("Model") or obj:IsA("BasePart") then cachedEvents[obj] = true end end local function refreshEventTracking() local folder = MapPath:FindFirstChild("EventObjects") if folder then for _, obj in ipairs(folder:GetChildren()) do checkEventObj(obj) end folder.ChildAdded:Connect(checkEventObj) end end local function addMapObject(obj) local name = obj.Name if name == "ComputerTable" and obj:IsA("Model") then cachedMapObjects[obj] = "ComputerTable" elseif name == "ExitDoor" then cachedMapObjects[obj] = "ExitDoor" elseif name == "Locker" or name == "Vent" then cachedMapObjects[obj] = "LockerVent" elseif name == "FreezePod" then cachedMapObjects[obj] = "FreezePod" elseif name == "EventObjects" then refreshEventTracking() end end local function removeMapObject(obj) cachedMapObjects[obj] = nil end for _, obj in ipairs(MapPath:GetDescendants()) do addMapObject(obj) end MapPath.DescendantAdded:Connect(addMapObject) MapPath.DescendantRemoving:Connect(removeMapObject) local function checkWorkspaceObj(obj) if obj.Name == "Poison" and obj:IsA("BasePart") then cachedPoisons[obj] = true elseif obj.Name == "BearTrap" then cachedTraps[obj] = true elseif (obj.Name == "Hatch" or obj.Name == "hatch") and (obj:IsA("Model") or obj:IsA("BasePart")) then cachedHatch = obj end end for _, obj in ipairs(workspace:GetDescendants()) do checkWorkspaceObj(obj) end workspace.DescendantAdded:Connect(checkWorkspaceObj) workspace.DescendantRemoving:Connect(function(obj) if cachedPoisons[obj] then cachedPoisons[obj] = nil end if cachedTraps[obj] then cachedTraps[obj] = nil end if cachedHatch == obj then cachedHatch = nil end if cachedEvents[obj] then cachedEvents[obj] = nil end end) local function createBillboard(text, color, name, strokeColor) local billboard = Instance.new("BillboardGui") billboard.Name = name or "BitchHook" billboard.AlwaysOnTop = true billboard.Size = ud2(0, 120, 0, 30) billboard.StudsOffset = v3(0, 2, 0) billboard.MaxDistance = math.huge billboard.Archivable = false local textLabel = Instance.new("TextLabel") textLabel.Name = "BitchHook" textLabel.Size = ud2(1, 0, 1, 0) textLabel.BackgroundTransparency = 1 textLabel.Text = text textLabel.TextColor3 = color textLabel.TextStrokeTransparency = 0 textLabel.TextStrokeColor3 = strokeColor or Color3.new(0, 0, 0) textLabel.Font = Enum.Font.GothamBold textLabel.TextSize = 10 textLabel.TextWrapped = true textLabel.Parent = billboard return billboard end local function updatePlayerNametag(player) if player == localPlayer then return end local function cleanupOffScreenIndicator() if indicatorGui then local ind = indicatorGui:FindFirstChild(player.Name .. "_OffScreen") if ind then ind:Destroy() end end end local function cleanupNametag() local tag = PlayerGui:FindFirstChild(player.Name .. "_BitchHook") if tag then tag:Destroy() end end if not player.Character then cleanupOffScreenIndicator() cleanupNametag() return end local isBeast = player:GetAttribute("Beast") local espState = isBeast and Settings.BeastESP or Settings.SurvivorESP if espState == 0 then clearESP(player.Character) cleanupOffScreenIndicator() cleanupNametag() return end local hrp = player.Character:FindFirstChild("HumanoidRootPart") local myHrp = localPlayer.Character and localPlayer.Character:FindFirstChild("HumanoidRootPart") if not hrp then cleanupOffScreenIndicator() cleanupNametag() return end local distance = myHrp and (hrp.Position - myHrp.Position).Magnitude or 999 local color = COLORS.SurvivorPlayer if isBeast then color = (distance <= BEAST_WARNING_DISTANCE and not localPlayer:GetAttribute("Beast")) and COLORS.BeastNear or COLORS.BeastPlayer end applyHighlight(player.Character, color) local existingTag = PlayerGui:FindFirstChild(player.Name .. "_BitchHook") local chosenPower = player:GetAttribute("ChosenPower") or "Unknown" local prefix = isBeast and ("[" .. tostring(chosenPower):upper() .. "] ") or "" if espState == 2 then if existingTag then existingTag:Destroy() end cleanupOffScreenIndicator() else local nametagText = prefix .. player.Name .. "\n[" .. mFloor(distance) .. " studs]" if existingTag then local label = existingTag:FindFirstChild("BitchHook") if label then label.Text = nametagText; label.TextColor3 = color end else local nametag = createBillboard(nametagText, color, player.Name .. "_BitchHook") nametag.Adornee = hrp nametag.Parent = PlayerGui end if isBeast and not localPlayer:GetAttribute("Beast") then if not indicatorGui or not indicatorGui.Parent then if indicatorGui then indicatorGui:Destroy() end indicatorGui = Instance.new("ScreenGui") indicatorGui.Name = "BeastOffScreenIndicators" indicatorGui.IgnoreGuiInset = true; indicatorGui.Parent = PlayerGui end local indName = player.Name .. "_OffScreen" local indicator = indicatorGui:FindFirstChild(indName) if not indicator then indicator = Instance.new("TextLabel") indicator.Name = indName; indicator.BackgroundTransparency = 1 indicator.Font = Enum.Font.GothamBold; indicator.TextSize = 14 indicator.TextStrokeTransparency = 0; indicator.Size = ud2(0, 100, 0, 40) indicator.AnchorPoint = v2(0.5, 0.5); indicator.Parent = indicatorGui end indicator.Text = prefix .. "\n[" .. mFloor(distance) .. "]" indicator.TextColor3 = color local camera = workspace.CurrentCamera local screenPos, onScreen = camera:WorldToScreenPoint(hrp.Position) if not onScreen then indicator.Visible = true local viewportCenter = camera.ViewportSize / 2 local direction = v2(screenPos.X, screenPos.Y) - viewportCenter if screenPos.Z < 0 then direction = -direction end local maxScale = mMax(mAbs(direction.X) / (viewportCenter.X - 30), mAbs(direction.Y) / (viewportCenter.Y - 30)) if maxScale == 0 then maxScale = 1 end indicator.Position = ud2(0, viewportCenter.X + direction.X / maxScale, 0, viewportCenter.Y + direction.Y / maxScale) else indicator.Visible = false end else cleanupOffScreenIndicator() end end end local function handleSpecialTrackers() local myHrp = localPlayer.Character and localPlayer.Character:FindFirstChild("HumanoidRootPart") local isPoisonerActive = false for _, p in ipairs(Players:GetPlayers()) do if p:GetAttribute("Beast") and p:GetAttribute("ChosenPower") == "Poisoner" then isPoisonerActive = true; break end end for eventObj, _ in pairs(cachedEvents) do if Settings.EventESP == 0 then clearESP(eventObj); continue end if eventObj.Parent then local points = eventObj:GetAttribute("EventPoints") or 0 local textColor = c3(255, 255, 255) local strokeColor = c3(0, 0, 0) if points == 3 then textColor = c3(255, 255, 0) elseif points == 6 then textColor = c3(255, 215, 0) elseif points == 20 then textColor = c3(170, 0, 255) strokeColor = c3(255, 255, 255) end applyHighlight(eventObj, textColor) if Settings.EventESP == 1 then local pos = eventObj:GetPivot().Position local dist = myHrp and mFloor((pos - myHrp.Position).Magnitude) or 0 local tagText = points .. " POINTS\n[" .. dist .. " studs]" local existingTag = eventObj:FindFirstChild("BitchHook") if existingTag then local label = existingTag:FindFirstChild("BitchHook") if label then label.Text = tagText label.TextColor3 = textColor label.TextStrokeColor3 = strokeColor end else local tag = createBillboard(tagText, textColor, "BitchHook", strokeColor) tag.Adornee = eventObj.PrimaryPart or eventObj:FindFirstChildWhichIsA("BasePart") or eventObj tag.Parent = eventObj end elseif Settings.EventESP == 2 then local existingTag = eventObj:FindFirstChild("BitchHook") if existingTag then existingTag:Destroy() end end else cachedEvents[eventObj] = nil end end for poisonPart, _ in pairs(cachedPoisons) do if Settings.PoisonESP == 0 then clearESP(poisonPart); continue end if poisonPart.Parent and isPoisonerActive then applyHighlight(poisonPart, COLORS.Poison) if Settings.PoisonESP == 2 then local existingTag = poisonPart:FindFirstChild("BitchHook") if existingTag then existingTag:Destroy() end else local dist = myHrp and mFloor((poisonPart.Position - myHrp.Position).Magnitude) or 0 local tagText = "POISON\n[" .. dist .. " studs]" local existingTag = poisonPart:FindFirstChild("BitchHook") if existingTag then local label = existingTag:FindFirstChild("BitchHook") if label then label.Text = tagText end else local tag = createBillboard(tagText, COLORS.Poison) tag.Adornee = poisonPart; tag.Parent = poisonPart end end elseif poisonPart.Parent then clearESP(poisonPart) else cachedPoisons[poisonPart] = nil end end for trap, _ in pairs(cachedTraps) do if Settings.TrapsESP == 0 then clearESP(trap); continue end if trap.Parent then applyHighlight(trap, COLORS.Trap) if Settings.TrapsESP == 2 then local existingTag = trap:FindFirstChild("BitchHook") if existingTag then existingTag:Destroy() end else local pos = trap:IsA("Model") and trap:GetPivot().Position or trap.Position local dist = myHrp and mFloor((pos - myHrp.Position).Magnitude) or 0 local tagText = "TRAP\n[" .. dist .. " studs]" local existingTag = trap:FindFirstChild("BitchHook") if existingTag then local label = existingTag:FindFirstChild("BitchHook") if label then label.Text = tagText end else local tag = createBillboard(tagText, COLORS.Trap) tag.Adornee = trap:IsA("Model") and (trap.PrimaryPart or trap:FindFirstChildWhichIsA("BasePart")) or trap tag.Parent = trap end end else cachedTraps[trap] = nil end end if cachedHatch and cachedHatch.Parent then if Settings.HatchESP == 0 then clearESP(cachedHatch) else applyHighlight(cachedHatch, COLORS.Hatch) if Settings.HatchESP == 2 then local existingTag = cachedHatch:FindFirstChild("BitchHook") if existingTag then existingTag:Destroy() end else local pos = cachedHatch:IsA("Model") and cachedHatch:GetPivot().Position or cachedHatch.Position local dist = myHrp and mFloor((pos - myHrp.Position).Magnitude) or 0 local tagText = "HATCH\n[" .. dist .. " studs]" local existingTag = cachedHatch:FindFirstChild("BitchHook") if existingTag then local label = existingTag:FindFirstChild("BitchHook") if label then label.Text = tagText end else local tag = createBillboard(tagText, COLORS.Hatch) tag.Adornee = cachedHatch:IsA("Model") and (cachedHatch.PrimaryPart or cachedHatch:FindFirstChildWhichIsA("BasePart")) or cachedHatch tag.Parent = cachedHatch end end end elseif cachedHatch and not cachedHatch.Parent then cachedHatch = nil end end local function handleBeastWarning() if localPlayer:GetAttribute("Beast") then local tag = localPlayer.Character and localPlayer.Character:FindFirstChild("WarningTag", true) if tag then tag.Enabled = false end return end local myChar = localPlayer.Character local myHrp = myChar and myChar:FindFirstChild("HumanoidRootPart") if not myHrp then return end local beastFoundNear = false for _, p in ipairs(Players:GetPlayers()) do if p ~= localPlayer and p:GetAttribute("Beast") and p.Character then local bHrp = p.Character:FindFirstChild("HumanoidRootPart") if bHrp and (bHrp.Position - myHrp.Position).Magnitude <= BEAST_WARNING_DISTANCE then beastFoundNear = true; break end end end local warningTag = myHrp:FindFirstChild("WarningTag") if beastFoundNear then if not warningTag then warningTag = createBillboard("!", c3(255, 0, 0), "WarningTag") warningTag.Size = ud2(0, 50, 0, 50); warningTag.StudsOffset = v3(0, 4, 0) local lbl = warningTag:FindFirstChild("BitchHook"); lbl.TextSize = 40 warningTag.Parent = myHrp end warningTag.Enabled = true elseif warningTag then warningTag.Enabled = false end end local function handleMapObjects() local char = localPlayer.Character local hrp = char and char:FindFirstChild("HumanoidRootPart") for obj, objType in pairs(cachedMapObjects) do if objType == "ComputerTable" then if Settings.ComputerESP == 0 then clearESP(obj); continue end local progress = obj:GetAttribute("Progress") if not progress or progress >= 100 then clearESP(obj) else applyHighlight(obj, COLORS.ComputerTable) if Settings.ComputerESP == 2 then local existingTag = obj:FindFirstChild("BitchHook") if existingTag then existingTag:Destroy() end else local existingTag = obj:FindFirstChild("BitchHook") if existingTag then local label = existingTag:FindFirstChild("BitchHook") if label then label.Text = mFloor(progress) .. "%" end else local tag = createBillboard(mFloor(progress) .. "%", COLORS.ComputerTable) local screen = obj:FindFirstChild("Screen") tag.Adornee = screen or (obj:IsA("Model") and (obj.PrimaryPart or obj:FindFirstChildWhichIsA("BasePart")) or obj) tag.Parent = obj end end end elseif objType == "ExitDoor" then if Settings.ExitESP == 0 then clearESP(obj) else applyHighlight(obj, COLORS.ExitDoor) end elseif objType == "LockerVent" then if Settings.LockersVents == 0 then clearESP(obj); continue end if hrp then local pos = obj:IsA("Model") and obj:GetPivot().Position or obj.Position if (hrp.Position - pos).Magnitude <= MAX_DISTANCE_LOCKER then applyHighlight(obj, COLORS.InteractionObj) else local h = obj:FindFirstChild("H") if h then h:Destroy() end end end elseif objType == "FreezePod" then local h = obj:FindFirstChild("H") if h then h:Destroy() end end end end local function hookPlayer(player) if player == localPlayer then return end player.CharacterAdded:Connect(function() tWait(0.5) updatePlayerNametag(player) end) end Players.PlayerAdded:Connect(hookPlayer) for _, player in ipairs(Players:GetPlayers()) do hookPlayer(player) end Players.PlayerRemoving:Connect(function(player) if indicatorGui then local ind = indicatorGui:FindFirstChild(player.Name .. "_OffScreen") if ind then ind:Destroy() end end local tag = PlayerGui:FindFirstChild(player.Name .. "_BitchHook") if tag then tag:Destroy() end end) local function getBeastChance(p) local attr = p:GetAttribute("BeastChance") if attr then return attr end local val = p:FindFirstChild("BeastChance") if val and (val:IsA("NumberValue") or val:IsA("IntValue")) then return val.Value end return 0 end local function predictBeast() local players = Players:GetPlayers() for _, p in ipairs(players) do if p:GetAttribute("InRound") then return nil end end local playerData = {} for _, p in ipairs(players) do tInsert(playerData, {player = p, chance = getBeastChance(p)}) end tSort(playerData, function(a, b) return a.chance > b.chance end) if #playerData == 0 then return nil end local highestChance = playerData[1].chance local secondHighestChance = nil for i = 2, #playerData do if playerData[i].chance < highestChance then secondHighestChance = playerData[i].chance; break end end local highestCount = 0 for _, d in ipairs(playerData) do if d.chance == highestChance then highestCount = highestCount + 1 end end local secondHighestCount = 0 if secondHighestChance then for _, d in ipairs(playerData) do if d.chance == secondHighestChance then secondHighestCount = secondHighestChance + 1 end end end local checkSecond = (#players > 5) local lines = {} for _, d in ipairs(playerData) do local colorStr = "#FFFFFF" local chance = d.chance if chance == highestChance then if not checkSecond then colorStr = (highestCount == 1) and "#FF5D6C" or "#FFC0CB" else colorStr = (highestCount <= 2) and "#FF5D6C" or "#FFC0CB" end elseif secondHighestChance and chance == secondHighestChance and checkSecond then if highestCount == 1 then colorStr = (secondHighestCount == 1) and "#FF5D6C" or "#FFC0CB" end end tInsert(lines, "" .. d.player.Name .. ": " .. chance .. "%") end return table.concat(lines, "\n") end local predGui = Instance.new("ScreenGui") predGui.Name = "BeastPredictionGui"; predGui.ResetOnSpawn = false; predGui.Parent = PlayerGui local settingsContainer = Instance.new("Frame") settingsContainer.Name = "SettingsContainer"; settingsContainer.Size = ud2(0, 40, 0, 40); settingsContainer.Position = ud2(0, 10, 0, 10) settingsContainer.BackgroundColor3 = c3(20, 20, 20); settingsContainer.BackgroundTransparency = 0.3 settingsContainer.BorderSizePixel = 1; settingsContainer.BorderColor3 = c3(0, 0, 0); settingsContainer.ZIndex = 1; settingsContainer.Parent = predGui local cornerContainer = Instance.new("UICorner"); cornerContainer.CornerRadius = UDim.new(0, 8); cornerContainer.Parent = settingsContainer local settingsBtn = Instance.new("ImageButton") settingsBtn.Name = "SettingsBtn"; settingsBtn.Size = ud2(0, 26, 0, 26); settingsBtn.Position = ud2(0.5, -13, 0.5, -13) settingsBtn.BackgroundTransparency = 1; settingsBtn.Image = "rbxassetid://9405931578"; settingsBtn.ZIndex = 2; settingsBtn.Parent = settingsContainer local mainFrame = Instance.new("Frame") mainFrame.Name = "MainFrame"; mainFrame.BackgroundColor3 = c3(40, 40, 40); mainFrame.BackgroundTransparency = 0.4; mainFrame.BorderSizePixel = 0 mainFrame.Size = isMobile and ud2(0, 180, 0, 120) or ud2(0, 220, 0, 160) mainFrame.Position = isMobile and ud2(0, 10, 0.5, -60) or ud2(0.5, -110, 0.05, 0) mainFrame.ClipsDescendants = true; mainFrame.ZIndex = 1; mainFrame.Parent = predGui local mainCorner = Instance.new("UICorner"); mainCorner.CornerRadius = UDim.new(0, 10); mainCorner.Parent = mainFrame local tabFrame = Instance.new("Frame") tabFrame.Name = "TabHeader"; tabFrame.BackgroundColor3 = c3(15, 15, 15); tabFrame.BackgroundTransparency = 0.1; tabFrame.BorderSizePixel = 0 tabFrame.Size = ud2(1, 0, 0, 24); tabFrame.Position = ud2(0, 0, 0, 0); tabFrame.ZIndex = 2; tabFrame.Parent = mainFrame local tabCorner = Instance.new("UICorner"); tabCorner.CornerRadius = UDim.new(0, 10); tabCorner.Parent = tabFrame local tabSharpMask = Instance.new("Frame") tabSharpMask.Name = "SharpBottomMask"; tabSharpMask.Size = ud2(1, 0, 0.5, 0); tabSharpMask.Position = ud2(0, 0, 0.5, 0) tabSharpMask.BackgroundColor3 = tabFrame.BackgroundColor3; tabSharpMask.BackgroundTransparency = tabFrame.BackgroundTransparency tabSharpMask.BorderSizePixel = 0; tabSharpMask.ZIndex = 2; tabSharpMask.Parent = tabFrame local tabTitle = Instance.new("TextLabel") tabTitle.Size = ud2(1, 0, 1, 0); tabTitle.BackgroundTransparency = 1; tabTitle.FontFace = CUSTOM_FONT; tabTitle.TextSize = isMobile and 12 or 14 tabTitle.TextColor3 = c3(255, 255, 255); tabTitle.Text = "BEAST CHANCES"; tabTitle.ZIndex = 3; tabTitle.Parent = tabFrame local settingsFrame = Instance.new("Frame") settingsFrame.Name = "SettingsFrame"; settingsFrame.Size = ud2(0, 200, 0, 180); settingsFrame.Position = ud2(0, 60, 0, 10) settingsFrame.BackgroundColor3 = c3(25, 25, 25); settingsFrame.BackgroundTransparency = 0.2; settingsFrame.BorderSizePixel = 0 settingsFrame.Visible = false; settingsFrame.ZIndex = 10; settingsFrame.Parent = predGui local settingsCorner = Instance.new("UICorner"); settingsCorner.CornerRadius = UDim.new(0, 10); settingsCorner.Parent = settingsFrame local settingsHeader = Instance.new("Frame") settingsHeader.Size = ud2(1, 0, 0, 24); settingsHeader.BackgroundColor3 = c3(10, 10, 10); settingsHeader.BackgroundTransparency = 0.1 settingsHeader.BorderSizePixel = 0; settingsHeader.ZIndex = 11; settingsHeader.Parent = settingsFrame local headerCorner = Instance.new("UICorner"); headerCorner.CornerRadius = UDim.new(0, 10); headerCorner.Parent = settingsHeader local headerSharpMask = Instance.new("Frame") headerSharpMask.Name = "SharpBottomMask"; headerSharpMask.Size = ud2(1, 0, 0.5, 0); headerSharpMask.Position = ud2(0, 0, 0.5, 0) headerSharpMask.BackgroundColor3 = settingsHeader.BackgroundColor3; headerSharpMask.BackgroundTransparency = settingsHeader.BackgroundTransparency headerSharpMask.BorderSizePixel = 0; headerSharpMask.ZIndex = 11; headerSharpMask.Parent = settingsHeader local settingsTitle = Instance.new("TextLabel") settingsTitle.Size = ud2(1, 0, 1, 0); settingsTitle.BackgroundTransparency = 1; settingsTitle.Text = "ESP SETTINGS" settingsTitle.TextColor3 = c3(255, 255, 255); settingsTitle.Font = Enum.Font.GothamBold; settingsTitle.TextSize = 12 settingsTitle.TextXAlignment = Enum.TextXAlignment.Center; settingsTitle.ZIndex = 12; settingsTitle.Parent = settingsHeader local settingsScroll = Instance.new("ScrollingFrame") settingsScroll.Size = ud2(1, -10, 1, -34); settingsScroll.Position = ud2(0, 5, 0, 27); settingsScroll.BackgroundTransparency = 1 settingsScroll.BorderSizePixel = 0; settingsScroll.ScrollBarThickness = 0; settingsScroll.CanvasSize = ud2(0, 0, 0, 0) settingsScroll.ScrollingDirection = Enum.ScrollingDirection.Y; settingsScroll.ZIndex = 11; settingsScroll.Parent = settingsFrame local UIList = Instance.new("UIListLayout"); UIList.Padding = UDim.new(0, 5); UIList.HorizontalAlignment = Enum.HorizontalAlignment.Center; UIList.Parent = settingsScroll local function getToggleStateInfo(val, isSimple) if val == 0 then return "OFF", c3(150, 50, 50) end if isSimple then return "ON", c3(50, 150, 50) else if val == 1 then return "ON (FULL)", c3(50, 150, 50) end if val == 2 then return "ON (HL ONLY)", c3(150, 150, 50) end end return "OFF", c3(150, 50, 50) end local function createToggle(name, settingKey) local btn = Instance.new("TextButton") btn.Size = ud2(0, 180, 0, 25) local isSimple = (settingKey == "LockersVents" or settingKey == "ExitESP") local textState, colorState = getToggleStateInfo(Settings[settingKey], isSimple) btn.BackgroundColor3 = colorState; btn.Text = name .. ": " .. textState btn.TextColor3 = c3(255, 255, 255); btn.Font = Enum.Font.GothamBold; btn.TextSize = 11; btn.ZIndex = 12; btn.Parent = settingsScroll local corner = Instance.new("UICorner"); corner.CornerRadius = UDim.new(0, 4); corner.Parent = btn btn.MouseButton1Click:Connect(function() if isSimple then Settings[settingKey] = (Settings[settingKey] == 0) and 1 or 0 else Settings[settingKey] = (Settings[settingKey] + 1) % 3 end local newTextState, newColorState = getToggleStateInfo(Settings[settingKey], isSimple) btn.BackgroundColor3 = newColorState; btn.Text = name .. ": " .. newTextState end) end createToggle("Lockers/Vents", "LockersVents") createToggle("Beast ESP", "BeastESP") createToggle("Survivor ESP", "SurvivorESP") createToggle("Exit ESP", "ExitESP") createToggle("Computer ESP", "ComputerESP") createToggle("Hatch ESP", "HatchESP") createToggle("Poison ESP", "PoisonESP") createToggle("Traps ESP", "TrapsESP") createToggle("Event ESP", "EventESP") settingsScroll.CanvasSize = ud2(0, 0, 0, UIList.AbsoluteContentSize.Y + 10) settingsBtn.MouseButton1Click:Connect(function() settingsFrame.Visible = not settingsFrame.Visible end) local scroll = Instance.new("ScrollingFrame") scroll.Name = "List"; scroll.Size = ud2(1, -10, 1, -34); scroll.Position = ud2(0, 5, 0, 29); scroll.BackgroundTransparency = 1 scroll.BorderSizePixel = 0; scroll.CanvasSize = ud2(0, 0, 0, 0); scroll.ScrollBarThickness = 0; scroll.ScrollingDirection = Enum.ScrollingDirection.Y; scroll.ZIndex = 2; scroll.Parent = mainFrame local predLabel = Instance.new("TextLabel") predLabel.Size = ud2(1, 0, 0, 0); predLabel.AutomaticSize = Enum.AutomaticSize.Y; predLabel.BackgroundTransparency = 1; predLabel.FontFace = CUSTOM_FONT; predLabel.TextSize = isMobile and 14 or 16 predLabel.TextColor3 = c3(255, 255, 255); predLabel.TextXAlignment = Enum.TextXAlignment.Left; predLabel.TextYAlignment = Enum.TextYAlignment.Top; predLabel.RichText = true; predLabel.ZIndex = 3; predLabel.Parent = scroll tSpawn(function() while true do local msg = predictBeast() if msg then predLabel.Text = msg; mainFrame.Visible = true; scroll.CanvasSize = ud2(0, 0, 0, predLabel.TextBounds.Y) else mainFrame.Visible = false end tWait(2) end end) RunService.Heartbeat:Connect(function() for _, player in ipairs(Players:GetPlayers()) do updatePlayerNametag(player) end handleMapObjects(); handleBeastWarning(); handleSpecialTrackers() local now = tTick() if now - lastThrottledUpdate >= 1 then lastThrottledUpdate = now applyFullbright() end if now - lastEventFolderCheck >= 5 then lastEventFolderCheck = now refreshEventTracking() end end) Challenge.OnClientEvent:Connect(function(Type, Computer, Start, End) if Type ~= 'Challenge' then return end local Difference = End - Start; local Time = Start + (Difference / 2) Challenge:FireServer(Computer, Type, Time) local challengeUI = PlayerGui:FindFirstChild("ComputerChallenge", true) if challengeUI then challengeUI:Destroy() end end) local mt = getrawmetatable(game); local oldNewIndex = mt.__newindex; setreadonly(mt, false) mt.__newindex = newcclosure(function(t, k, v) if not checkcaller() and t:IsA("Humanoid") then if k == "WalkSpeed" then v = v + 1 elseif k == "JumpHeight" then v = 4 end end return oldNewIndex(t, k, v) end) setreadonly(mt, true) tSpawn(function() while true do local char = localPlayer.Character; local hum = char and char:FindFirstChildOfClass("Humanoid") if hum then hum.WalkSpeed = hum.WalkSpeed; hum.JumpHeight = 4 end tWait(5) end end)