local Workspace = game:GetService("Workspace") local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local TweenService = game:GetService("TweenService") local RunService = game:GetService("RunService") local LocalPlayer = Players.LocalPlayer local PlayerGui = LocalPlayer:WaitForChild("PlayerGui") local Camera = Workspace.CurrentCamera local monsterName = "Bon" local bonEspEnabled = false local playerEspEnabled = false local bonAvoiderEnabled = false local scriptActivated = false local bonHighlights = {} local playerHighlights = {} -- Safe open-floor escape coordinates local safeTeleportSpots = { Vector3.new(741.7, 26.2, -879.2), Vector3.new(669.56, 26.2, -665.42), Vector3.new(723.49, 26.2, -592.8), Vector3.new(473.9, 26.2, -693.09) } local lastTeleportTick = 0 -- transparent container and buttons local screenGui = Instance.new("ScreenGui") screenGui.Name = "DeviceSelection" screenGui.ResetOnSpawn = false screenGui.Parent = PlayerGui local mainFrame = Instance.new("Frame") mainFrame.Name = "MainFrame" mainFrame.Size = UDim2.new(0, 310, 0, 160) mainFrame.Position = UDim2.new(0.5, -155, 0.4, -80) mainFrame.BackgroundTransparency = 1 mainFrame.BorderSizePixel = 0 mainFrame.Parent = screenGui local titleLabel = Instance.new("TextLabel") titleLabel.Name = "Title" titleLabel.Size = UDim2.new(1, 0, 0, 30) titleLabel.Position = UDim2.new(0, 0, 0, 10) titleLabel.BackgroundTransparency = 1 titleLabel.Text = "Select Your Platform" titleLabel.TextColor3 = Color3.fromRGB(240, 240, 245) titleLabel.TextSize = 15 titleLabel.Font = Enum.Font.GothamMedium titleLabel.Parent = mainFrame -- PC Button local pcBtn = Instance.new("TextButton") pcBtn.Name = "PC" pcBtn.Size = UDim2.new(0, 130, 0, 60) pcBtn.Position = UDim2.new(0, 15, 0, 55) pcBtn.BackgroundTransparency = 1 pcBtn.BorderSizePixel = 0 pcBtn.Text = "PC" pcBtn.TextColor3 = Color3.fromRGB(240, 240, 245) pcBtn.TextSize = 16 pcBtn.Font = Enum.Font.GothamBold pcBtn.Parent = mainFrame local pcSub = Instance.new("TextLabel") pcSub.Size = UDim2.new(1, 0, 0, 20) pcSub.Position = UDim2.new(0, 0, 1, -20) pcSub.BackgroundTransparency = 1 pcSub.Text = "KeyBinds [I, P, K]" pcSub.TextColor3 = Color3.fromRGB(160, 165, 175) pcSub.TextSize = 12 pcSub.Font = Enum.Font.Gotham pcSub.Parent = pcBtn -- Mobile Button local mobileBtn = Instance.new("TextButton") mobileBtn.Name = "Mobile" mobileBtn.Size = UDim2.new(0, 130, 0, 60) mobileBtn.Position = UDim2.new(1, -145, 0, 55) mobileBtn.BackgroundTransparency = 1 mobileBtn.BorderSizePixel = 0 mobileBtn.Text = "Mobile" mobileBtn.TextColor3 = Color3.fromRGB(240, 240, 245) mobileBtn.TextSize = 16 mobileBtn.Font = Enum.Font.GothamBold mobileBtn.Parent = mainFrame local mobileSub = Instance.new("TextLabel") mobileSub.Size = UDim2.new(1, 0, 0, 20) mobileSub.Position = UDim2.new(0, 0, 1, -20) mobileSub.BackgroundTransparency = 1 mobileSub.Text = "Highlight Default" mobileSub.TextColor3 = Color3.fromRGB(160, 165, 175) mobileSub.TextSize = 12 mobileSub.Font = Enum.Font.Gotham mobileSub.Parent = mobileBtn -- Function to show PC Avoider status popup local function showPcAvoiderStatus(isOn) local oldStatus = PlayerGui:FindFirstChild("PcAvoiderStatusGUI") if oldStatus then oldStatus:Destroy() end local statusGui = Instance.new("ScreenGui") statusGui.Name = "PcAvoiderStatusGUI" statusGui.ResetOnSpawn = false statusGui.DisplayOrder = 999 statusGui.Parent = PlayerGui local statusFrame = Instance.new("Frame") statusFrame.Size = UDim2.new(0, 200, 0, 40) statusFrame.Position = UDim2.new(0.5, -100, 0.25, 0) statusFrame.BackgroundTransparency = 1 statusFrame.BorderSizePixel = 0 statusFrame.Parent = statusGui local statusLabel = Instance.new("TextLabel") statusLabel.Size = UDim2.new(1, 0, 1, 0) statusLabel.BackgroundTransparency = 1 statusLabel.Text = isOn and "Avoider: ON" or "Avoider: OFF" statusLabel.TextColor3 = isOn and Color3.fromRGB(240, 240, 245) or Color3.fromRGB(180, 185, 195) statusLabel.TextTransparency = 1 statusLabel.TextSize = 15 statusLabel.Font = Enum.Font.GothamMedium statusLabel.Parent = statusFrame task.spawn(function() local fadeIn = TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) TweenService:Create(statusLabel, fadeIn, {TextTransparency = 0}):Play() task.wait(1.5) local fadeOut = TweenInfo.new(0.5, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) local tweenOut = TweenService:Create(statusLabel, fadeOut, {TextTransparency = 1}) tweenOut:Play() tweenOut.Completed:Connect(function() statusGui:Destroy() end) end) end -- Smooth toggle fade for Bon ESP local function toggleBonEsp(state) bonEspEnabled = state for _, hl in ipairs(bonHighlights) do if hl and hl.Parent then if state then hl.Enabled = true hl.FillTransparency = 1 hl.OutlineTransparency = 1 task.spawn(function() local duration = 0.5 local elapsed = 0 while elapsed < duration and bonEspEnabled do local alpha = elapsed / duration hl.FillTransparency = 1 - (alpha * (1 - 0.85)) hl.OutlineTransparency = 1 - (alpha * (1 - 0.0)) elapsed = elapsed + RunService.RenderStepped:Wait() end if bonEspEnabled then hl.FillTransparency = 0.85 hl.OutlineTransparency = 0.0 end end) else task.spawn(function() local duration = 0.5 local elapsed = 0 while elapsed < duration and not bonEspEnabled do local alpha = elapsed / duration hl.FillTransparency = 0.85 + (alpha * (1 - 0.85)) hl.OutlineTransparency = 0.0 + (alpha * (1 - 0.0)) elapsed = elapsed + RunService.RenderStepped:Wait() end if not bonEspEnabled then hl.Enabled = false end end) end end end end local function togglePlayerEsp(state) playerEspEnabled = state end -- Teleport function: finds the safe spot furthest away from Bon local function triggerBonAvoiderTeleport() local char = LocalPlayer.Character if not char or not char:FindFirstChild("HumanoidRootPart") then return end local myRoot = char.HumanoidRootPart local bonPosition = nil for _, desc in ipairs(Workspace:GetDescendants()) do if desc.Name == monsterName and desc:IsA("Model") then local monsterRoot = desc:FindFirstChild("HumanoidRootPart") or desc.PrimaryPart if monsterRoot then bonPosition = monsterRoot.Position break end end end local bestSpot = safeTeleportSpots[1] local maxDistance = -1 for _, spot in ipairs(safeTeleportSpots) do local distFromBon = bonPosition and (spot - bonPosition).Magnitude or 0 local distFromMe = (spot - myRoot.Position).Magnitude local score = distFromBon + (distFromMe * 0.2) if score > maxDistance then maxDistance = score bestSpot = spot end end myRoot.CFrame = CFrame.new(bestSpot) end -- Create Custom Mobile Avoider Button with "don't mind me." Floating Animation local function createMobileAvoiderButton(onFullyVisible) local mobGui = Instance.new("ScreenGui") mobGui.Name = "MobileAvoiderGUI" mobGui.ResetOnSpawn = false mobGui.DisplayOrder = 999 mobGui.Parent = PlayerGui local avoidBtn = Instance.new("TextButton") avoidBtn.Name = "AvoidButton" avoidBtn.Size = UDim2.new(0, 56, 0, 56) avoidBtn.Position = UDim2.new(1, -135, 1, -150) avoidBtn.BackgroundColor3 = Color3.fromRGB(25, 25, 30) avoidBtn.BackgroundTransparency = 1 avoidBtn.Text = "AVOID" avoidBtn.TextColor3 = Color3.fromRGB(255, 255, 255) avoidBtn.TextTransparency = 1 avoidBtn.TextSize = 11 avoidBtn.Font = Enum.Font.GothamBlack avoidBtn.AutoButtonColor = false avoidBtn.Parent = mobGui local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(1, 0) corner.Parent = avoidBtn local stroke = Instance.new("UIStroke") stroke.Transparency = 1 stroke.Thickness = 2 stroke.Color = Color3.fromRGB(60, 60, 70) stroke.Parent = avoidBtn local infoBtn = Instance.new("TextButton") infoBtn.Name = "InfoButton" infoBtn.Size = UDim2.new(0, 20, 0, 20) infoBtn.Position = UDim2.new(1, -6, 0, -2) infoBtn.BackgroundColor3 = Color3.fromRGB(90, 95, 105) infoBtn.BackgroundTransparency = 1 infoBtn.Text = "?" infoBtn.TextColor3 = Color3.fromRGB(255, 255, 255) infoBtn.TextTransparency = 1 infoBtn.TextSize = 11 infoBtn.Font = Enum.Font.GothamBold infoBtn.AutoButtonColor = true infoBtn.Parent = avoidBtn local infoCorner = Instance.new("UICorner") infoCorner.CornerRadius = UDim.new(1, 0) infoCorner.Parent = infoBtn local infoPanel = Instance.new("Frame") infoPanel.Name = "InfoPanel" infoPanel.Size = UDim2.new(0, 200, 0, 90) infoPanel.Position = UDim2.new(1, -345, 1, -210) infoPanel.BackgroundTransparency = 1 infoPanel.BorderSizePixel = 0 infoPanel.Visible = false infoPanel.Parent = mobGui local infoText = Instance.new("TextLabel") infoText.Size = UDim2.new(1, 0, 1, 0) infoText.BackgroundTransparency = 1 infoText.Text = "yo so basically this avoid button saves you when bon gets too close (within 35 studs). it teleports you to the safest spot instantly so you don't die!" infoText.TextColor3 = Color3.fromRGB(255, 255, 255) infoText.TextTransparency = 1 infoText.TextSize = 12 infoText.Font = Enum.Font.GothamBold infoText.TextWrapped = true infoText.TextXAlignment = Enum.TextXAlignment.Right infoText.TextYAlignment = Enum.TextYAlignment.Bottom infoText.Parent = infoPanel local textStroke = Instance.new("UIStroke") textStroke.Transparency = 1 textStroke.Thickness = 1.5 textStroke.Color = Color3.fromRGB(0, 0, 0) textStroke.Parent = infoText local funnyText = Instance.new("TextLabel") funnyText.Name = "FunnyFloatingText" funnyText.Size = UDim2.new(0, 100, 0, 25) funnyText.Position = UDim2.new(1, -157, 1, -165) funnyText.BackgroundTransparency = 1 funnyText.Text = "don't mind me." funnyText.TextColor3 = Color3.fromRGB(200, 205, 215) funnyText.TextTransparency = 1 funnyText.TextSize = 11 funnyText.Font = Enum.Font.GothamMedium funnyText.TextXAlignment = Enum.TextXAlignment.Center funnyText.Parent = mobGui local funnyStroke = Instance.new("UIStroke") funnyStroke.Transparency = 1 funnyStroke.Thickness = 1 funnyStroke.Color = Color3.fromRGB(0, 0, 0) funnyStroke.Parent = funnyText local fadeInfo = TweenInfo.new(0.6, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) local tween1 = TweenService:Create(avoidBtn, fadeInfo, {BackgroundTransparency = 0, TextTransparency = 0}) local tween2 = TweenService:Create(stroke, fadeInfo, {Transparency = 0}) local tween3 = TweenService:Create(infoBtn, fadeInfo, {BackgroundTransparency = 0, TextTransparency = 0}) tween1:Play() tween2:Play() tween3:Play() tween1.Completed:Connect(function() if onFullyVisible then onFullyVisible() end task.spawn(function() TweenService:Create(funnyText, TweenInfo.new(0.4, Enum.EasingStyle.Quad), {TextTransparency = 0, Position = UDim2.new(1, -157, 1, -190)}):Play() TweenService:Create(funnyStroke, TweenInfo.new(0.4, Enum.EasingStyle.Quad), {Transparency = 0}):Play() task.wait(1.8) local vanishTween1 = TweenService:Create(funnyText, TweenInfo.new(0.8, Enum.EasingStyle.Quad), {TextTransparency = 1, Position = UDim2.new(1, -157, 1, -215)}) local vanishTween2 = TweenService:Create(funnyStroke, TweenInfo.new(0.8, Enum.EasingStyle.Quad), {Transparency = 1}) vanishTween1:Play() vanishTween2:Play() vanishTween1.Completed:Connect(function() funnyText:Destroy() end) end) end) local infoActiveTask = nil infoBtn.MouseButton1Click:Connect(function() if infoPanel.Visible then infoPanel.Visible = false if infoActiveTask then task.cancel(infoActiveTask) end else infoPanel.Visible = true infoText.TextTransparency = 1 textStroke.Transparency = 1 TweenService:Create(infoText, TweenInfo.new(0.3, Enum.EasingStyle.Quad), {TextTransparency = 0}):Play() TweenService:Create(textStroke, TweenInfo.new(0.3, Enum.EasingStyle.Quad), {Transparency = 0}):Play() if infoActiveTask then task.cancel(infoActiveTask) end infoActiveTask = task.spawn(function() task.wait(4.5) if infoPanel.Visible then local fadeOutText = TweenInfo.new(0.5, Enum.EasingStyle.Quad) TweenService:Create(infoText, fadeOutText, {TextTransparency = 1}):Play() TweenService:Create(textStroke, fadeOutText, {Transparency = 1}):Play() task.wait(0.5) infoPanel.Visible = false end end) end end) avoidBtn.MouseButton1Click:Connect(function() if not scriptActivated then return end bonAvoiderEnabled = not bonAvoiderEnabled if bonAvoiderEnabled then avoidBtn.BackgroundColor3 = Color3.fromRGB(240, 240, 245) avoidBtn.TextColor3 = Color3.fromRGB(15, 15, 20) stroke.Color = Color3.fromRGB(255, 255, 255) else avoidBtn.BackgroundColor3 = Color3.fromRGB(25, 25, 30) avoidBtn.TextColor3 = Color3.fromRGB(255, 255, 255) stroke.Color = Color3.fromRGB(60, 60, 70) end end) end -- fade out picker menu local function closeMenu(isMobile, callback) local tInfo = TweenInfo.new(0.4, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) TweenService:Create(titleLabel, tInfo, {TextTransparency = 1}):Play() TweenService:Create(pcBtn, tInfo, {TextTransparency = 1}):Play() TweenService:Create(pcSub, tInfo, {TextTransparency = 1}):Play() TweenService:Create(mobileBtn, tInfo, {TextTransparency = 1}):Play() TweenService:Create(mobileSub, tInfo, {TextTransparency = 1}):Play() task.wait(0.4) screenGui:Destroy() if callback then callback() end end -- credits popup local function showCredits(isMobile, callback) local creditGui = Instance.new("ScreenGui") creditGui.Name = "ESP_Credits" creditGui.ResetOnSpawn = false creditGui.Parent = PlayerGui local creditFrame = Instance.new("Frame") creditFrame.Size = UDim2.new(0, 280, 0, 90) creditFrame.Position = UDim2.new(0.5, -140, 0.4, -45) creditFrame.BackgroundTransparency = 1 creditFrame.Parent = creditGui local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0, 22) title.BackgroundTransparency = 1 title.Text = "Credits" title.TextColor3 = Color3.fromRGB(240, 240, 245) title.TextSize = 14 title.Font = Enum.Font.GothamMedium title.Parent = creditFrame local desc = Instance.new("TextLabel") desc.Size = UDim2.new(1, 0, 0, 36) desc.Position = UDim2.new(0, 0, 0, 24) desc.BackgroundTransparency = 1 desc.Text = "ScriptBlox User: SkibidigionSpyMega\nYouTube User: misterlolalaka" desc.TextColor3 = Color3.fromRGB(180, 185, 195) desc.TextSize = 12 desc.Font = Enum.Font.Gotham desc.Parent = creditFrame local timer = Instance.new("TextLabel") timer.Size = UDim2.new(1, 0, 0, 18) timer.Position = UDim2.new(0, 0, 1, -18) timer.BackgroundTransparency = 1 timer.Text = "Loading in 5s..." timer.TextColor3 = Color3.fromRGB(130, 135, 145) timer.TextSize = 11 timer.Font = Enum.Font.Gotham timer.Parent = creditFrame task.spawn(function() for i = 5, 1, -1 do timer.Text = "Loading in " .. i .. "s..." task.wait(1) end local fade = TweenInfo.new(1, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) TweenService:Create(title, fade, {TextTransparency = 1}):Play() TweenService:Create(desc, fade, {TextTransparency = 1}):Play() TweenService:Create(timer, fade, {TextTransparency = 1}):Play() task.wait(1) creditGui:Destroy() if isMobile then createMobileAvoiderButton(function() scriptActivated = true toggleBonEsp(true) togglePlayerEsp(true) end) else scriptActivated = true end if callback then callback() end end) end -- pc tip popup local function showPcTip() local tipGui = Instance.new("ScreenGui") tipGui.Name = "ESP_Tip" tipGui.ResetOnSpawn = false tipGui.Parent = PlayerGui local tipFrame = Instance.new("Frame") tipFrame.Size = UDim2.new(0, 260, 0, 105) tipFrame.Position = UDim2.new(0.5, -130, 0.4, -50) tipFrame.BackgroundTransparency = 1 tipFrame.Parent = tipGui local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0, 22) title.BackgroundTransparency = 1 title.Text = "Keybinds" title.TextColor3 = Color3.fromRGB(240, 240, 245) title.TextSize = 14 title.Font = Enum.Font.GothamMedium title.Parent = tipFrame local desc = Instance.new("TextLabel") desc.Size = UDim2.new(1, 0, 0, 50) desc.Position = UDim2.new(0, 0, 0, 24) desc.BackgroundTransparency = 1 desc.Text = "Press [I] for Bon ESP\nPress [P] for Player ESP\nPress [K] for Bon Avoider" desc.TextColor3 = Color3.fromRGB(180, 185, 195) desc.TextSize = 12 desc.Font = Enum.Font.Gotham desc.Parent = tipFrame local timer = Instance.new("TextLabel") timer.Size = UDim2.new(1, 0, 0, 18) timer.Position = UDim2.new(0, 0, 1, -18) timer.BackgroundTransparency = 1 timer.Text = "Disappearing in 7s..." timer.TextColor3 = Color3.fromRGB(130, 135, 145) timer.TextSize = 11 timer.Font = Enum.Font.Gotham timer.Parent = tipFrame task.spawn(function() for i = 7, 1, -1 do timer.Text = "Disappearing in " .. i .. "s..." task.wait(1) end local fade = TweenInfo.new(1.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) TweenService:Create(title, fade, {TextTransparency = 1}):Play() TweenService:Create(desc, fade, {TextTransparency = 1}):Play() TweenService:Create(timer, fade, {TextTransparency = 1}):Play() task.wait(1.2) tipGui:Destroy() end) end -- mobile notification popup local function showMobileTip() local tipGui = Instance.new("ScreenGui") tipGui.Name = "ESP_Tip" tipGui.ResetOnSpawn = false tipGui.Parent = PlayerGui local tipFrame = Instance.new("Frame") tipFrame.Size = UDim2.new(0, 260, 0, 90) tipFrame.Position = UDim2.new(0.5, -130, 0.4, -45) tipFrame.BackgroundTransparency = 1 tipFrame.Parent = tipGui local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0, 22) title.BackgroundTransparency = 1 title.Text = "Mobile Status" title.TextColor3 = Color3.fromRGB(240, 240, 245) title.TextSize = 14 title.Font = Enum.Font.GothamMedium title.Parent = tipFrame local desc = Instance.new("TextLabel") desc.Size = UDim2.new(1, 0, 0, 36) desc.Position = UDim2.new(0, 0, 0, 24) desc.BackgroundTransparency = 1 desc.Text = "Bon ESP is ON\nPlayer ESP is ON" desc.TextColor3 = Color3.fromRGB(180, 185, 195) desc.TextSize = 12 desc.Font = Enum.Font.Gotham desc.Parent = tipFrame local timer = Instance.new("TextLabel") timer.Size = UDim2.new(1, 0, 0, 18) timer.Position = UDim2.new(0, 0, 1, -18) timer.BackgroundTransparency = 1 timer.Text = "Disappearing in 7s..." timer.TextColor3 = Color3.fromRGB(130, 135, 145) timer.TextSize = 11 timer.Font = Enum.Font.Gotham timer.Parent = tipFrame task.spawn(function() for i = 7, 1, -1 do timer.Text = "Disappearing in " .. i .. "s..." task.wait(1) end local fade = TweenInfo.new(1.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) TweenService:Create(title, fade, {TextTransparency = 1}):Play() TweenService:Create(desc, fade, {TextTransparency = 1}):Play() TweenService:Create(timer, fade, {TextTransparency = 1}):Play() task.wait(1.2) tipGui:Destroy() end) end -- button triggers pcBtn.MouseButton1Click:Connect(function() closeMenu(false, function() showCredits(false, function() showPcTip() end) end) end) mobileBtn.MouseButton1Click:Connect(function() closeMenu(true, function() showCredits(true, function() showMobileTip() end) end) end) -- Monster Highlight Setup local function applyMonsterHighlight(model) if model.Name == monsterName and model:IsA("Model") then local oldHl = model:FindFirstChild("MonsterTrackerHighlight") if oldHl then oldHl:Destroy() end local highlight = Instance.new("Highlight") highlight.Name = "MonsterTrackerHighlight" highlight.Adornee = model highlight.FillColor = Color3.fromRGB(255, 0, 0) highlight.OutlineColor = Color3.fromRGB(255, 50, 50) highlight.FillTransparency = 1 highlight.OutlineTransparency = 1 highlight.Enabled = false highlight.Parent = model table.insert(bonHighlights, highlight) end end for _, desc in ipairs(Workspace:GetDescendants()) do if desc.Name == monsterName and desc:IsA("Model") then applyMonsterHighlight(desc) end end Workspace.DescendantAdded:Connect(function(desc) if desc.Name == monsterName and desc:IsA("Model") then applyMonsterHighlight(desc) end end) -- Player ESP Logic local function applyPlayerHighlight(character, player) if not character or character == LocalPlayer.Character then return end local oldHl = character:FindFirstChild("PlayerTrackerHighlight") if oldHl then oldHl:Destroy() end local highlight = Instance.new("Highlight") highlight.Name = "PlayerTrackerHighlight" highlight.Adornee = character highlight.FillColor = Color3.fromRGB(0, 210, 255) highlight.OutlineColor = Color3.fromRGB(200, 240, 255) highlight.FillTransparency = 1 highlight.OutlineTransparency = 1 highlight.Enabled = false highlight.Parent = character table.insert(playerHighlights, highlight) local humanoid = character:WaitForChild("Humanoid", 5) if humanoid then humanoid.Died:Connect(function() -- Quick fade out on death task.spawn(function() while highlight.FillTransparency < 1 do highlight.FillTransparency = math.min(1, highlight.FillTransparency + 0.15) highlight.OutlineTransparency = math.min(1, highlight.OutlineTransparency + 0.15) RunService.RenderStepped:Wait() end highlight.Enabled = false end) end) end end local function setupPlayer(player) if player == LocalPlayer then return end if player.Character then applyPlayerHighlight(player.Character, player) end player.CharacterAdded:Connect(function(char) applyPlayerHighlight(char, player) end) end for _, plr in ipairs(Players:GetPlayers()) do setupPlayer(plr) end Players.PlayerAdded:Connect(setupPlayer) -- Screen-aware view loop (SLOW fade in when looking at players, FAST fade out when looking away) RunService.RenderStepped:Connect(function() if not scriptActivated then return end -- Player ESP Loop (Screen-aware fade) for _, hl in ipairs(playerHighlights) do if hl and hl.Parent and hl.Adornee then local char = hl.Adornee local rootPart = char:FindFirstChild("HumanoidRootPart") or char.PrimaryPart local humanoid = char:FindFirstChildOfClass("Humanoid") local isOnScreen = false if playerEspEnabled and rootPart and humanoid and humanoid.Health > 0 then local _, inViewport = Camera:WorldToViewportPoint(rootPart.Position) isOnScreen = inViewport end if isOnScreen then if not hl.Enabled then hl.Enabled = true end if hl.FillTransparency > 0.6 then hl.FillTransparency = math.max(0.6, hl.FillTransparency - 0.015) hl.OutlineTransparency = math.max(0.2, hl.OutlineTransparency - 0.008) end else if hl.Enabled and hl.FillTransparency < 1 then hl.FillTransparency = math.min(1, hl.FillTransparency + 0.12) hl.OutlineTransparency = math.min(1, hl.OutlineTransparency + 0.12) if hl.FillTransparency >= 1 then hl.Enabled = false end end end end end end) -- Bon Avoider Proximity Check & Teleport Loop (Heartbeat) - Set to 35 studs RunService.Heartbeat:Connect(function() if not scriptActivated or not bonAvoiderEnabled then return end local char = LocalPlayer.Character if not char or not char:FindFirstChild("HumanoidRootPart") then return end local myRoot = char.HumanoidRootPart for _, desc in ipairs(Workspace:GetDescendants()) do if desc.Name == monsterName and desc:IsA("Model") then local monsterRoot = desc:FindFirstChild("HumanoidRootPart") or desc.PrimaryPart if monsterRoot then local distance = (myRoot.Position - monsterRoot.Position).Magnitude if distance < 35 then local now = tick() if now - lastTeleportTick > 1.5 then lastTeleportTick = now triggerBonAvoiderTeleport() end end end end end end) -- PC keybind listener UserInputService.InputBegan:Connect(function(input, gameProcessed) if gameProcessed or not scriptActivated then return end if input.KeyCode == Enum.KeyCode.I then toggleBonEsp(not bonEspEnabled) elseif input.KeyCode == Enum.KeyCode.P then togglePlayerEsp(not playerEspEnabled) elseif input.KeyCode == Enum.KeyCode.K then bonAvoiderEnabled = not bonAvoiderEnabled showPcAvoiderStatus(bonAvoiderEnabled) end end)