
Key RequiredUniversal
![[EVENT UPD] ESPs, auto skill check, and more features](https://cdn.kocakz.me/images/3655a48509a3ff0805e1a05416e52f54acb42924307acb783e3dfa38bf7d7256.webp)
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, "<font color=\"" .. colorStr .. "\">" .. d.player.Name .. ": " .. chance .. "%</font>")
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)

what's digga on about lmao 😭✌ that's a nice script with good custom UI. I would totaly recomend.
Doesnt even fcking work