-- [[ Rscripts Risk Notice ]] -- This script is not verified by rscripts.net. Deal with caution. -- -- Stay safe: -- • Never log in on unofficial Roblox sites or lookalike domains. -- • Real Roblox links use roblox.com (check the .com ending). -- • Treat fake Roblox login / "claim reward" pages as phishing. -- [[ End Rscripts Risk Notice ]] -- compat: task library if not task then task = { wait = function(n) return wait(n or 0) end, spawn = function(fn, ...) local co = coroutine.wrap(fn); co(...); return co end, delay = function(n, fn, ...) local args, handle = {...}, {} handle.alive = true coroutine.wrap(function() wait(n or 0) if handle.alive then fn(table.unpack(args)) end end)() return handle end, cancel = function(h) if type(h) == "table" then h.alive = false elseif type(h) == "thread" then pcall(coroutine.close, h) end end, } end local function _safeGui() if gethui then local ok, h = pcall(gethui); if ok and h then return h end end local ok, cg = pcall(function() return game:GetService("CoreGui") end) if ok and cg then return cg end return game:GetService("Players").LocalPlayer:WaitForChild("PlayerGui") end -- Eclipse Hub v10.4 — ESP + FlowGame AutoSolve + Stamina + Item Teleport local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local TweenService = game:GetService("TweenService") local ReplicatedStorage = game:GetService("ReplicatedStorage") local LocalPlayer = Players.LocalPlayer local T = { BG0 = Color3.fromRGB(4, 3, 12), BG1 = Color3.fromRGB(8, 6, 20), BG2 = Color3.fromRGB(14, 10, 32), Card = Color3.fromRGB(16, 12, 36), CardHL = Color3.fromRGB(24, 18, 52), Border = Color3.fromRGB(46, 34, 82), Purple = Color3.fromRGB(138, 88, 255), PurpD = Color3.fromRGB(64, 20, 148), PurpL = Color3.fromRGB(196, 166, 255), On = Color3.fromRGB(138, 88, 255), Off = Color3.fromRGB(14, 10, 36), Text = Color3.fromRGB(252, 250, 255), TextD = Color3.fromRGB(186, 178, 220), Dim = Color3.fromRGB(94, 86, 128), Red = Color3.fromRGB(236, 64, 76), Cyan = Color3.fromRGB(40, 210, 242), Gold = Color3.fromRGB(250, 194, 40), Green = Color3.fromRGB(66, 224, 134), Pink = Color3.fromRGB(242, 112, 182), White = Color3.new(1, 1, 1), Black = Color3.new(0, 0, 0), } -- ============================================================ -- FLOWGAME AUTO-SOLVER -- ============================================================ local flowAutoEnabled = false local FlowGameManager = nil local originalSGFn = nil local activeSolveTask = nil local retryTask = nil local cachedFlowRemote = nil local SOLVE_MIN = 3.5 local SOLVE_MAX = 7.0 local function humanDelay() local lo = math.min(SOLVE_MIN, SOLVE_MAX) local hi = math.max(SOLVE_MIN, SOLVE_MAX) if lo >= hi then return lo end return lo + math.random() * (hi - lo) end local function findFlowRemote() if cachedFlowRemote and cachedFlowRemote.Parent then return cachedFlowRemote end local targets = { "CompleteMinigame","FinishPuzzle","PuzzleComplete", "CompletePuzzle","FlowComplete","MinigameComplete", "GeneratorComplete","SolveFlow","FinishMinigame", "PuzzleSolved","CompletedFlow","EndPuzzle", } for _, name in ipairs(targets) do local r = ReplicatedStorage:FindFirstChild(name, true) if r and (r:IsA("RemoteEvent") or r:IsA("RemoteFunction")) then cachedFlowRemote = r; return r end end for _, obj in ipairs(ReplicatedStorage:GetDescendants()) do if obj:IsA("RemoteEvent") or obj:IsA("RemoteFunction") then local n = obj.Name:lower() if n:find("complet") or n:find("puzzle") or n:find("flow") or n:find("finish") or n:find("minigame") or n:find("solve") then cachedFlowRemote = obj; return obj end end end return nil end local function fireFlowRemote(remote) if not remote then return false end if remote:IsA("RemoteEvent") then return pcall(function() remote:FireServer() end) elseif remote:IsA("RemoteFunction") then return pcall(function() remote:InvokeServer() end) end return false end local function skipTutorial() pcall(function() LocalPlayer:SetAttribute("CompletedGenPuzzle", true) end) end local function tryInstanceComplete(inst) if not inst then return end for _, key in ipairs({"completed","isComplete","finished","done","success","IsCompleted"}) do if inst[key] ~= nil then pcall(function() inst[key] = true end) end end if inst.completedEvent then pcall(function() inst.completedEvent:Fire() end) end if typeof(inst.EndGame) == "function" then pcall(function() inst:EndGame(true) end) end end local function solveFlow() skipTutorial() local remote = findFlowRemote() local targetGame = FlowGameManager and FlowGameManager.activeGame fireFlowRemote(remote) if targetGame then tryInstanceComplete(targetGame) end if retryTask then task.cancel(retryTask) end retryTask = task.delay(1.5, function() if FlowGameManager and FlowGameManager.activeGame == targetGame and targetGame then fireFlowRemote(remote) tryInstanceComplete(targetGame) end retryTask = nil end) end local function hookFlow() if originalSGFn then return end local ok, FM = pcall(function() return require(ReplicatedStorage.Modules.Modules.FlowGameManager) end) if not ok or not FM then ok, FM = pcall(function() return require(ReplicatedStorage.Modules.Minigames.FlowGameManager) end) end if not ok or not FM then return end FlowGameManager = FM originalSGFn = FM.startGame FM.startGame = function(self, ...) originalSGFn(self, ...) if not flowAutoEnabled then return end if retryTask then task.cancel(retryTask); retryTask = nil end if activeSolveTask then task.cancel(activeSolveTask) end activeSolveTask = task.delay(humanDelay(), function() solveFlow(); activeSolveTask = nil end) end end local function unhookFlow() if FlowGameManager and originalSGFn then FlowGameManager.startGame = originalSGFn; originalSGFn = nil end if activeSolveTask then task.cancel(activeSolveTask); activeSolveTask = nil end if retryTask then task.cancel(retryTask); retryTask = nil end FlowGameManager = nil end local function flowForceComplete() if activeSolveTask then task.cancel(activeSolveTask) end activeSolveTask = task.delay(0.6 + math.random() * 0.9, function() solveFlow(); activeSolveTask = nil end) end -- ============================================================ -- STAMINA CONTROL -- ============================================================ local staminaMod = nil local staminaActive = false local staminaTarget = 100 local staminaConn = nil local function requireStamina() if staminaMod then return staminaMod end local ok, mod = pcall(function() return require(ReplicatedStorage.Systems.Character.Game.Sprinting) end) if ok and mod then staminaMod = mod end return staminaMod end local function startStaminaHook() if staminaConn then return end staminaConn = RunService.Heartbeat:Connect(function() if not staminaActive then return end local mod = requireStamina() if not mod then return end local target = mod.MaxStamina * (staminaTarget / 100) target = math.clamp(target, mod.MinStamina or 0, mod.MaxStamina) if mod.Stamina < target then mod.Stamina = target end end) end local function stopStaminaHook() if staminaConn then staminaConn:Disconnect(); staminaConn = nil end staminaMod = nil end -- ============================================================ -- DETECTION -- ============================================================ local function isPlaying(player) local char = player.Character if not char then return false end local hum = char:FindFirstChildOfClass("Humanoid") if not hum or hum.Health <= 0 then return false end return true end local function getRole(player) if player == LocalPlayer then return nil end local char = player.Character if not char then return nil end local hum = char:FindFirstChildOfClass("Humanoid") if not hum then return nil end return hum.MaxHealth > 500 and "Killer" or "Survivor" end -- ============================================================ -- ESP STATE -- ============================================================ local ESPState = { KillerESP=false, SurvivorESP=false, GeneratorESP=false, MedkitESP=false, BloxyESP=false, } local espFolder = nil local killerObjects = {} local survivorObjects = {} local genObjects = {} local medkitObjects = {} local bloxyObjects = {} local genDescConn, medkitDescConn, bloxyDescConn = nil, nil, nil local ITEM_NAMES = { medkit = {"medkit","med_kit","firstaidkit","first_aid","firstaid","healthkit","heal"}, bloxy = {"bloxycola","bloxy_cola","bloxacola","cola","bloxycoke"}, } local function matchesItem(name, category) local n = name:lower():gsub("%s+","") for _, pat in ipairs(ITEM_NAMES[category]) do if n == pat or n:find(pat) then return true end end return false end local function isItem(inst, category) if not (inst:IsA("Model") or inst:IsA("BasePart") or inst:IsA("Tool")) then return false end return matchesItem(inst.Name, category) end local function openFolder() if espFolder then return end espFolder = Instance.new("Folder") espFolder.Name = "EclipseESP" espFolder.Parent = _safeGui() end local function removeESP(player) for _, tbl in ipairs({killerObjects, survivorObjects}) do local obj = tbl[player] if obj then if obj.hl and obj.hl.Parent then obj.hl:Destroy() end tbl[player] = nil end end end local function buildESP(player, role) local tbl = (role == "Killer") and killerObjects or survivorObjects local char = player.Character if tbl[player] then if tbl[player].char == char and tbl[player].hl and tbl[player].hl.Parent then return end removeESP(player) end if not espFolder then return end local hl = Instance.new("Highlight") hl.Name="RoleHL_"..player.Name; hl.FillColor=(role=="Killer") and T.Red or T.Cyan hl.OutlineColor=Color3.new(1,1,1); hl.FillTransparency=0.42 hl.OutlineTransparency=0.05; hl.DepthMode=Enum.HighlightDepthMode.AlwaysOnTop hl.Adornee=char; hl.Parent=espFolder tbl[player] = {hl=hl, char=char} end local function isGenerator(inst) if not (inst:IsA("Model") or inst:IsA("BasePart")) then return false end local n = inst.Name:lower() local valid = n=="generator" or n:find("^generator")~=nil or n:find("generator$")~=nil or n=="gen" or n:find("^gen_")~=nil or n:find("_gen$")~=nil if not valid then return false end local p = inst.Parent while p and p ~= game do if p.Name:lower():find("lobby") then return false end p = p.Parent end return true end local function removeGenESP(obj) local entry = genObjects[obj] if entry then if entry.hl and entry.hl.Parent then entry.hl:Destroy() end if entry.conn then entry.conn:Disconnect() end genObjects[obj] = nil end end local function buildGenESP(obj) if genObjects[obj] or not espFolder then return end local hl = Instance.new("Highlight") hl.Name="GenHL"; hl.FillColor=T.Gold; hl.OutlineColor=Color3.fromRGB(255,240,140) hl.FillTransparency=0.35; hl.OutlineTransparency=0 hl.DepthMode=Enum.HighlightDepthMode.AlwaysOnTop; hl.Adornee=obj; hl.Parent=espFolder local conn = obj.AncestryChanged:Connect(function() if not obj:IsDescendantOf(workspace) then removeGenESP(obj) end end) genObjects[obj] = {hl=hl, conn=conn} end local function scanGenerators() for _, obj in ipairs(workspace:GetDescendants()) do if isGenerator(obj) then buildGenESP(obj) end end end local function removeItemESP(obj, tbl) local entry = tbl[obj] if entry then if entry.hl and entry.hl.Parent then entry.hl:Destroy() end if entry.conn then entry.conn:Disconnect() end tbl[obj] = nil end end local function buildItemESP(obj, tbl, fillCol, outlineCol) if tbl[obj] or not espFolder then return end local hl = Instance.new("Highlight") hl.Name="ItemHL_"..obj.Name; hl.FillColor=fillCol; hl.OutlineColor=outlineCol hl.FillTransparency=0.28; hl.OutlineTransparency=0 hl.DepthMode=Enum.HighlightDepthMode.AlwaysOnTop; hl.Adornee=obj; hl.Parent=espFolder local conn = obj.AncestryChanged:Connect(function() if not obj:IsDescendantOf(workspace) then removeItemESP(obj, tbl) end end) tbl[obj] = {hl=hl, conn=conn} end local function scanItems(category, tbl, fillCol, outlineCol) for _, obj in ipairs(workspace:GetDescendants()) do if isItem(obj, category) then buildItemESP(obj, tbl, fillCol, outlineCol) end end end local tickRate = 0 RunService.Heartbeat:Connect(function(dt) tickRate = tickRate + dt if tickRate < 0.1 then return end tickRate = 0 for _, p in ipairs(Players:GetPlayers()) do if p == LocalPlayer then continue end local active = isPlaying(p) local role = active and getRole(p) or nil if ESPState.KillerESP and role=="Killer" then buildESP(p,"Killer") else if killerObjects[p] then removeESP(p) end end if ESPState.SurvivorESP and role=="Survivor" then buildESP(p,"Survivor") else if survivorObjects[p] then removeESP(p) end end end for p, obj in pairs(killerObjects) do if not obj.hl or not obj.hl.Parent then removeESP(p) end end for p, obj in pairs(survivorObjects) do if not obj.hl or not obj.hl.Parent then removeESP(p) end end local lpInRound = isPlaying(LocalPlayer) if ESPState.GeneratorESP then for _, e in pairs(genObjects) do if e.hl then e.hl.Enabled=lpInRound end end end if ESPState.MedkitESP then for _, e in pairs(medkitObjects) do if e.hl then e.hl.Enabled=lpInRound end end end if ESPState.BloxyESP then for _, e in pairs(bloxyObjects) do if e.hl then e.hl.Enabled=lpInRound end end end end) local function onCharacterSpawned(player) task.delay(0.6, function() if player == LocalPlayer then return end local role = getRole(player) if ESPState.KillerESP and role=="Killer" then buildESP(player,"Killer") elseif ESPState.SurvivorESP and role=="Survivor" then buildESP(player,"Survivor") end end) end for _, p in ipairs(Players:GetPlayers()) do if p ~= LocalPlayer then p.CharacterAdded:Connect(function() onCharacterSpawned(p) end) end end Players.PlayerAdded:Connect(function(p) p.CharacterAdded:Connect(function() onCharacterSpawned(p) end) end) Players.PlayerRemoving:Connect(removeESP) local function closeFolder() for p in pairs(killerObjects) do removeESP(p) end for p in pairs(survivorObjects) do removeESP(p) end for obj in pairs(genObjects) do removeGenESP(obj) end for obj in pairs(medkitObjects) do removeItemESP(obj, medkitObjects) end for obj in pairs(bloxyObjects) do removeItemESP(obj, bloxyObjects) end if genDescConn then genDescConn:Disconnect(); genDescConn = nil end if medkitDescConn then medkitDescConn:Disconnect(); medkitDescConn = nil end if bloxyDescConn then bloxyDescConn:Disconnect(); bloxyDescConn = nil end if espFolder then espFolder:Destroy(); espFolder = nil end end -- ============================================================ -- TELEPORT HELPERS -- ============================================================ local function getObjPos(obj) if not obj or not obj.Parent then return nil end if obj:IsA("Model") then local ok, piv = pcall(function() return obj:GetPivot().Position end) if ok then return piv end local pp = obj:FindFirstChildOfClass("BasePart") return pp and pp.Position or nil elseif obj:IsA("BasePart") then return obj.Position end return nil end local function teleportTo(obj) local char = LocalPlayer.Character if not char then return end local hrp = char:FindFirstChild("HumanoidRootPart") if not hrp then return end local pos = getObjPos(obj) if pos then hrp.CFrame = CFrame.new(pos + Vector3.new(0, 4, 0)) end end local function getNearestItem(category) local char = LocalPlayer.Character local hrp = char and char:FindFirstChild("HumanoidRootPart") if not hrp then return nil, nil end local nearest, nearestDist = nil, math.huge for _, obj in ipairs(workspace:GetDescendants()) do if isItem(obj, category) then local pos = getObjPos(obj) if pos then local d = (hrp.Position - pos).Magnitude if d < nearestDist then nearest=obj; nearestDist=d end end end end return nearest, nearestDist end -- ============================================================ -- GUI v10.4 -- ============================================================ local CG = _safeGui() local old = CG:FindFirstChild("EclipseHub") if old then old:Destroy() end local Screen = Instance.new("ScreenGui") Screen.Name="EclipseHub"; Screen.ResetOnSpawn=false Screen.IgnoreGuiInset=true; Screen.ZIndexBehavior=Enum.ZIndexBehavior.Sibling Screen.Parent=CG local PW, PH = 308, 434 local function mkCorner(parent, r) local c = Instance.new("UICorner", parent); c.CornerRadius = UDim.new(0, r or 12); return c end local function mkStroke(parent, color, thick, alpha) local s = Instance.new("UIStroke", parent) s.Color=color; s.Thickness=thick or 1.2; s.Transparency=alpha or 0; return s end local function mkGrad(parent, c0, c1, rot) local g = Instance.new("UIGradient", parent) g.Color=ColorSequence.new({ColorSequenceKeypoint.new(0,c0),ColorSequenceKeypoint.new(1,c1)}) g.Rotation=rot or 145; return g end local function lighten(c, d) return Color3.fromRGB( math.clamp(math.floor(c.R*255+d),0,255), math.clamp(math.floor(c.G*255+d),0,255), math.clamp(math.floor(c.B*255+d),0,255)) end local function tintBG(c) return Color3.fromRGB( math.clamp(math.floor(c.R*255*0.13+8),0,255), math.clamp(math.floor(c.G*255*0.13+6),0,255), math.clamp(math.floor(c.B*255*0.13+24),0,255)) end local Main = Instance.new("Frame") Main.Name="Main"; Main.AnchorPoint=Vector2.new(0.5,0) Main.Size=UDim2.new(0,PW,0,PH); Main.Position=UDim2.new(0.5,0,0,54) Main.BackgroundColor3=T.BG1; Main.BorderSizePixel=0 Main.ClipsDescendants=true; Main.Parent=Screen mkCorner(Main, 22) do local g = Instance.new("UIGradient", Main) g.Color=ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(18,12,44)), ColorSequenceKeypoint.new(0.5, Color3.fromRGB(8, 6,20)), ColorSequenceKeypoint.new(1, Color3.fromRGB(4, 3,12)), }) g.Rotation=150 end local MainStroke = mkStroke(Main, T.Purple, 1.8, 0.38) do local t1=TweenService:Create(MainStroke,TweenInfo.new(3.4,Enum.EasingStyle.Sine,Enum.EasingDirection.InOut),{Transparency=0.0}) local t2=TweenService:Create(MainStroke,TweenInfo.new(3.4,Enum.EasingStyle.Sine,Enum.EasingDirection.InOut),{Transparency=0.76}) t1.Completed:Connect(function() t2:Play() end) t2.Completed:Connect(function() t1:Play() end) t1:Play() end local TopGlow = Instance.new("Frame", Main) TopGlow.AnchorPoint=Vector2.new(0.5,0); TopGlow.Size=UDim2.new(0.62,0,0,2) TopGlow.Position=UDim2.new(0.5,0,0,0); TopGlow.BackgroundColor3=T.Purple TopGlow.BorderSizePixel=0; TopGlow.ZIndex=10 do local g=Instance.new("UIGradient",TopGlow) g.Transparency=NumberSequence.new({ NumberSequenceKeypoint.new(0,1), NumberSequenceKeypoint.new(0.14,0.02), NumberSequenceKeypoint.new(0.86,0.02), NumberSequenceKeypoint.new(1,1), }) end local Header = Instance.new("Frame", Main) Header.Name="Header"; Header.Size=UDim2.new(1,0,0,76) Header.BackgroundColor3=Color3.fromRGB(9,6,24) Header.BorderSizePixel=0; Header.ZIndex=2; Header.ClipsDescendants=true mkCorner(Header, 22) local HFix = Instance.new("Frame", Header) HFix.Size=UDim2.new(1,0,0.5,0); HFix.Position=UDim2.new(0,0,0.5,0) HFix.BackgroundColor3=Color3.fromRGB(9,6,24); HFix.BorderSizePixel=0 do local g=Instance.new("UIGradient", Header) g.Color=ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(96,30,214)), ColorSequenceKeypoint.new(0.38, Color3.fromRGB(48,14,128)), ColorSequenceKeypoint.new(0.75, Color3.fromRGB(12,8,28)), ColorSequenceKeypoint.new(1, Color3.fromRGB(9, 6,24)), }) g.Rotation=124 end local Shimmer = Instance.new("Frame", Header) Shimmer.Size=UDim2.new(0,80,1,0); Shimmer.Position=UDim2.new(-0.4,0,0,0) Shimmer.BackgroundColor3=T.White; Shimmer.BackgroundTransparency=0.86 Shimmer.BorderSizePixel=0; Shimmer.ZIndex=7; Shimmer.Rotation=18 do local g=Instance.new("UIGradient", Shimmer) g.Transparency=NumberSequence.new({ NumberSequenceKeypoint.new(0,1), NumberSequenceKeypoint.new(0.5,0.0), NumberSequenceKeypoint.new(1,1), }) g.Rotation=90 end local function doShimmer() Shimmer.Position=UDim2.new(-0.4,0,0,0) TweenService:Create(Shimmer, TweenInfo.new(1.1,Enum.EasingStyle.Quad,Enum.EasingDirection.InOut),{ Position=UDim2.new(1.3,0,0,0) }):Play() task.delay(8.5, doShimmer) end task.delay(0.8, doShimmer) local HLine = Instance.new("Frame", Header) HLine.Size=UDim2.new(1,0,0,1.5); HLine.Position=UDim2.new(0,0,1,-1.5) HLine.BackgroundColor3=T.PurpL; HLine.BorderSizePixel=0; HLine.ZIndex=5 do local g=Instance.new("UIGradient",HLine) g.Transparency=NumberSequence.new({ NumberSequenceKeypoint.new(0,1), NumberSequenceKeypoint.new(0.05,0), NumberSequenceKeypoint.new(0.95,0), NumberSequenceKeypoint.new(1,1), }) end local BadgeOuter = Instance.new("Frame", Header) BadgeOuter.Size=UDim2.new(0,46,0,46); BadgeOuter.Position=UDim2.new(0,14,0.5,-23) BadgeOuter.BackgroundColor3=Color3.fromRGB(9,6,24); BadgeOuter.BorderSizePixel=0; BadgeOuter.ZIndex=3 mkCorner(BadgeOuter,23); mkStroke(BadgeOuter, T.Purple, 1.5, 0.10) local Badge = Instance.new("Frame", BadgeOuter) Badge.Size=UDim2.new(0,36,0,36); Badge.Position=UDim2.new(0.5,-18,0.5,-18) Badge.BorderSizePixel=0; Badge.ZIndex=4 mkCorner(Badge,18) mkGrad(Badge, Color3.fromRGB(196,140,255), Color3.fromRGB(72,18,220)) local BadgeL = Instance.new("TextLabel", Badge) BadgeL.Size=UDim2.new(1,0,1,0); BadgeL.BackgroundTransparency=1 BadgeL.Text="E"; BadgeL.TextColor3=T.White BadgeL.Font=Enum.Font.GothamBlack; BadgeL.TextSize=15; BadgeL.ZIndex=5 local TitleL = Instance.new("TextLabel", Header) TitleL.Size=UDim2.new(0,158,0,20); TitleL.Position=UDim2.new(0,70,0,14) TitleL.BackgroundTransparency=1; TitleL.TextXAlignment=Enum.TextXAlignment.Left TitleL.TextColor3=T.White; TitleL.Font=Enum.Font.GothamBlack TitleL.TextSize=14; TitleL.Text="ECLIPSE HUB"; TitleL.ZIndex=4 local VerPill = Instance.new("TextLabel", Header) VerPill.Size=UDim2.new(0,38,0,17); VerPill.Position=UDim2.new(0,70,0,40) VerPill.BackgroundColor3=Color3.fromRGB(36,14,96); VerPill.BorderSizePixel=0 VerPill.TextXAlignment=Enum.TextXAlignment.Center VerPill.TextColor3=T.PurpL; VerPill.Font=Enum.Font.GothamBold VerPill.TextSize=9; VerPill.Text="v10.4"; VerPill.ZIndex=4 mkCorner(VerPill,5); mkStroke(VerPill, T.Purple, 1, 0.40) local TagPill = Instance.new("TextLabel", Header) TagPill.Size=UDim2.new(0,74,0,17); TagPill.Position=UDim2.new(0,114,0,40) TagPill.BackgroundColor3=Color3.fromRGB(12,9,30); TagPill.BorderSizePixel=0 TagPill.TextXAlignment=Enum.TextXAlignment.Center TagPill.TextColor3=T.Dim; TagPill.Font=Enum.Font.GothamSemibold TagPill.TextSize=9; TagPill.Text="DBD SURVIVAL"; TagPill.ZIndex=4 mkCorner(TagPill,5); mkStroke(TagPill, T.Border, 1, 0.55) local function mkWinBtn(xOff, bg, label, lCol, sc) local b = Instance.new("TextButton", Header) b.Size=UDim2.new(0,28,0,28); b.Position=UDim2.new(1,xOff,0.5,-14) b.BackgroundColor3=bg; b.BorderSizePixel=0 b.Text=label; b.TextColor3=lCol b.Font=Enum.Font.GothamBold; b.TextSize=11; b.ZIndex=5 mkCorner(b,9) if sc then mkStroke(b,sc,1,0.30) end b.MouseEnter:Connect(function() TweenService:Create(b,TweenInfo.new(0.1),{BackgroundTransparency=0.22}):Play() end) b.MouseLeave:Connect(function() TweenService:Create(b,TweenInfo.new(0.1),{BackgroundTransparency=0}):Play() end) return b end local HideB = mkWinBtn(-64, T.BG2, "—", T.TextD, T.Border) local CloseB = mkWinBtn(-32, Color3.fromRGB(188,34,50), "✕", T.White, Color3.fromRGB(220,72,86)) local DZ = Instance.new("TextButton", Header) DZ.Size=UDim2.new(1,-78,1,0); DZ.BackgroundTransparency=1; DZ.Text=""; DZ.ZIndex=6 local dragging, hasMoved = false, false local dragStart, startPos = Vector2.zero, UDim2.new() DZ.InputBegan:Connect(function(i) if i.UserInputType==Enum.UserInputType.MouseButton1 or i.UserInputType==Enum.UserInputType.Touch then dragging=true; hasMoved=false dragStart=Vector2.new(i.Position.X,i.Position.Y); startPos=Main.Position end end) UserInputService.InputChanged:Connect(function(i) if not dragging then return end if i.UserInputType~=Enum.UserInputType.MouseMovement and i.UserInputType~=Enum.UserInputType.Touch then return end local delta=Vector2.new(i.Position.X,i.Position.Y)-dragStart if delta.Magnitude>6 then hasMoved=true end if hasMoved then Main.Position=UDim2.new(startPos.X.Scale,startPos.X.Offset+delta.X, startPos.Y.Scale,startPos.Y.Offset+delta.Y) end end) UserInputService.InputEnded:Connect(function(i) if i.UserInputType==Enum.UserInputType.MouseButton1 or i.UserInputType==Enum.UserInputType.Touch then dragging=false end end) local vis=true HideB.MouseButton1Click:Connect(function() vis=not vis TweenService:Create(Main,TweenInfo.new(0.28,Enum.EasingStyle.Quint), {Size=vis and UDim2.new(0,PW,0,PH) or UDim2.new(0,PW,0,76)}):Play() HideB.Text=vis and "—" or "▼" end) CloseB.MouseButton1Click:Connect(function() unhookFlow(); stopStaminaHook(); closeFolder(); Screen:Destroy() end) local TAB_F = 0.25 local TabBar = Instance.new("Frame", Main) TabBar.Name="TabBar"; TabBar.Size=UDim2.new(1,0,0,48) TabBar.Position=UDim2.new(0,0,0,76) TabBar.BackgroundColor3=T.BG0; TabBar.BorderSizePixel=0 local TabDivider = Instance.new("Frame", TabBar) TabDivider.Size=UDim2.new(1,0,0,1); TabDivider.Position=UDim2.new(0,0,1,-1) TabDivider.BackgroundColor3=T.Border; TabDivider.BorderSizePixel=0 do local g=Instance.new("UIGradient",TabDivider) g.Transparency=NumberSequence.new({ NumberSequenceKeypoint.new(0,1), NumberSequenceKeypoint.new(0.05,0.15), NumberSequenceKeypoint.new(0.95,0.15), NumberSequenceKeypoint.new(1,1), }) end local TabPill = Instance.new("Frame", TabBar) TabPill.Size=UDim2.new(TAB_F,-8,1,-10); TabPill.Position=UDim2.new(0,4,0,5) TabPill.BackgroundColor3=T.BG2; TabPill.BorderSizePixel=0; TabPill.ZIndex=1 mkCorner(TabPill,10) local TabPillStroke = mkStroke(TabPill, T.Purple, 1.2, 0.26) local TabBar2 = Instance.new("Frame", TabBar) TabBar2.Size=UDim2.new(TAB_F,-20,0,2.5); TabBar2.Position=UDim2.new(0,10,1,-2.5) TabBar2.BackgroundColor3=T.Purple; TabBar2.BorderSizePixel=0; TabBar2.ZIndex=2 mkCorner(TabBar2,2) do local g=Instance.new("UIGradient",TabBar2) g.Color=ColorSequence.new({ ColorSequenceKeypoint.new(0,T.PurpL), ColorSequenceKeypoint.new(0.5,T.Purple), ColorSequenceKeypoint.new(1,T.PurpL), }) end local CA = Instance.new("Frame", Main) CA.Size=UDim2.new(1,0,1,-124); CA.Position=UDim2.new(0,0,0,124) CA.BackgroundTransparency=1; CA.BorderSizePixel=0 local tabs, tabPages, pillX = {}, {}, {} local tabCount = 0 local function switchTab(name) for n, d in pairs(tabs) do local active = (n==name) TweenService:Create(d.btn,TweenInfo.new(0.20),{TextColor3=active and T.Text or T.Dim}):Play() tabPages[n].Visible=false end if tabs[name] then tabPages[name].Visible=true local accent=tabs[name].accent or T.Purple local pillBG=Color3.fromRGB( math.clamp(math.floor(accent.R*255*0.12+10),0,255), math.clamp(math.floor(accent.G*255*0.12+7),0,255), math.clamp(math.floor(accent.B*255*0.12+28),0,255)) TweenService:Create(TabPill,TweenInfo.new(0.32,Enum.EasingStyle.Quint,Enum.EasingDirection.Out),{ Position=UDim2.new(pillX[name],4,0,5), BackgroundColor3=pillBG, }):Play() TweenService:Create(TabPillStroke,TweenInfo.new(0.28),{Color=accent,Transparency=0.20}):Play() TweenService:Create(TabBar2,TweenInfo.new(0.32,Enum.EasingStyle.Quint,Enum.EasingDirection.Out),{ Position=UDim2.new(pillX[name],10,1,-2.5), BackgroundColor3=accent, }):Play() end end local function mkTab(name, icon, accent) local idx=tabCount; tabCount=tabCount+1 pillX[name]=TAB_F*idx local btn=Instance.new("TextButton", TabBar) btn.Size=UDim2.new(TAB_F,0,1,0); btn.Position=UDim2.new(TAB_F*idx,0,0,0) btn.BackgroundTransparency=1; btn.Text=icon.." "..name btn.TextColor3=T.Dim; btn.Font=Enum.Font.GothamSemibold; btn.TextSize=9; btn.ZIndex=3 local page=Instance.new("ScrollingFrame", CA) page.Size=UDim2.new(1,0,1,0); page.BackgroundTransparency=1 page.BorderSizePixel=0; page.ScrollBarThickness=2 page.ScrollBarImageColor3=T.Purple; page.CanvasSize=UDim2.new(0,0,0,0) page.AutomaticCanvasSize=Enum.AutomaticSize.Y; page.Visible=false local lay=Instance.new("UIListLayout", page) lay.Padding=UDim.new(0,7); lay.SortOrder=Enum.SortOrder.LayoutOrder lay.HorizontalAlignment=Enum.HorizontalAlignment.Center local pad=Instance.new("UIPadding", page) pad.PaddingTop=UDim.new(0,11); pad.PaddingBottom=UDim.new(0,18) pad.PaddingLeft=UDim.new(0,4); pad.PaddingRight=UDim.new(0,4) tabs[name]={btn=btn,accent=accent or T.Purple}; tabPages[name]=page btn.MouseButton1Click:Connect(function() switchTab(name) end) return page end local function mkSec(parent, text, col) col = col or T.Purple local con = Instance.new("Frame", parent) con.Size=UDim2.new(0.94,0,0,26); con.BackgroundTransparency=1 local pill = Instance.new("Frame", con) pill.Size=UDim2.new(0,0,0,20); pill.AutomaticSize=Enum.AutomaticSize.X pill.BackgroundColor3=tintBG(col); pill.BorderSizePixel=0 mkCorner(pill,6); mkStroke(pill,col,1,0.44) local lbl = Instance.new("TextLabel", pill) lbl.Size=UDim2.new(0,0,1,0); lbl.AutomaticSize=Enum.AutomaticSize.X lbl.BackgroundTransparency=1; lbl.TextXAlignment=Enum.TextXAlignment.Left lbl.TextColor3=col; lbl.Font=Enum.Font.GothamBold; lbl.TextSize=9 lbl.Text=" "..string.upper(text).." " local sep = Instance.new("Frame", con) sep.Size=UDim2.new(1,0,0,1); sep.Position=UDim2.new(0,0,1,-1) sep.BackgroundColor3=col; sep.BackgroundTransparency=0.72; sep.BorderSizePixel=0 do local g=Instance.new("UIGradient",sep) g.Transparency=NumberSequence.new({ NumberSequenceKeypoint.new(0,0.2), NumberSequenceKeypoint.new(0.45,0.2), NumberSequenceKeypoint.new(1,1), }) end end local function mkCardBase(parent, h, accent) local card = Instance.new("Frame", parent) card.Size=UDim2.new(0.94,0,0,h); card.BackgroundColor3=T.Card card.BorderSizePixel=0; mkCorner(card,14) do local g=Instance.new("UIGradient",card) g.Color=ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(28,20,60)), ColorSequenceKeypoint.new(0.6, Color3.fromRGB(16,12,40)), ColorSequenceKeypoint.new(1, Color3.fromRGB(10, 7,28)), }) g.Rotation=150 end local stroke=mkStroke(card, accent or T.Purple, 1.5, 0.82) local chip = Instance.new("Frame", card) chip.Size=UDim2.new(0,10,0,10); chip.Position=UDim2.new(0,10,0,10) chip.BackgroundColor3=accent or T.Purple; chip.BorderSizePixel=0 mkCorner(chip,5) mkGrad(chip, lighten(accent or T.Purple, 48), accent or T.Purple, 135) local bot = Instance.new("Frame", card) bot.Size=UDim2.new(0,36,0,2); bot.Position=UDim2.new(0,10,1,-2) bot.BackgroundColor3=accent or T.Purple; bot.BorderSizePixel=0 mkCorner(bot,1) do local g=Instance.new("UIGradient",bot) g.Transparency=NumberSequence.new({ NumberSequenceKeypoint.new(0,0.1), NumberSequenceKeypoint.new(1,1), }) end return card, stroke end local function mkToggle(parent, label, sublabel, accent, cb) local state=false local tw=TweenInfo.new(0.28,Enum.EasingStyle.Quint,Enum.EasingDirection.Out) local twF=TweenInfo.new(0.12,Enum.EasingStyle.Quad) local card, stroke = mkCardBase(parent, 66, accent) local lbl=Instance.new("TextLabel",card) lbl.Size=UDim2.new(1,-118,0,18); lbl.Position=UDim2.new(0,28,0,14) lbl.BackgroundTransparency=1; lbl.TextXAlignment=Enum.TextXAlignment.Left lbl.TextColor3=T.Text; lbl.Font=Enum.Font.GothamBold; lbl.TextSize=12; lbl.Text=label if sublabel and sublabel~="" then local sub=Instance.new("TextLabel",card) sub.Size=UDim2.new(1,-118,0,13); sub.Position=UDim2.new(0,28,0,34) sub.BackgroundTransparency=1; sub.TextXAlignment=Enum.TextXAlignment.Left sub.TextColor3=T.Dim; sub.Font=Enum.Font.Gotham; sub.TextSize=10; sub.Text=sublabel end local track=Instance.new("Frame",card) track.Size=UDim2.new(0,50,0,27); track.Position=UDim2.new(1,-62,0.5,-13.5) track.BackgroundColor3=T.Off; track.BorderSizePixel=0 mkCorner(track,14); mkStroke(track,T.Border,1,0.18) local knob=Instance.new("Frame",track) knob.Size=UDim2.new(0,21,0,21); knob.Position=UDim2.new(0,3,0.5,-10.5) knob.BackgroundColor3=T.TextD; knob.BorderSizePixel=0 mkCorner(knob,11) mkGrad(knob, T.White, T.TextD) local hit=Instance.new("TextButton",card) hit.Size=UDim2.new(1,0,1,0); hit.BackgroundTransparency=1; hit.Text=""; hit.ZIndex=5 hit.MouseEnter:Connect(function() TweenService:Create(card,twF,{BackgroundColor3=T.CardHL}):Play() end) hit.MouseLeave:Connect(function() TweenService:Create(card,twF,{BackgroundColor3=T.Card}):Play() end) hit.MouseButton1Click:Connect(function() state=not state TweenService:Create(track,tw,{BackgroundColor3=state and accent or T.Off}):Play() TweenService:Create(knob,tw,{ Position=state and UDim2.new(1,-24,0.5,-10.5) or UDim2.new(0,3,0.5,-10.5), BackgroundColor3=state and T.White or T.TextD, }):Play() TweenService:Create(stroke,tw,{Transparency=state and 0.10 or 0.82}):Play() cb(state) end) end local function mkSlider(parent, label, sublabel, accent, minVal, maxVal, defaultVal, step, suffix, cb) step=step or 0.1; suffix=suffix or "s" local value=defaultVal; local sliderDragging=false local card,_=mkCardBase(parent,82,accent) card.Size=UDim2.new(0.94,0,0,82) local lbl=Instance.new("TextLabel",card) lbl.Size=UDim2.new(1,-118,0,17); lbl.Position=UDim2.new(0,28,0,12) lbl.BackgroundTransparency=1; lbl.TextXAlignment=Enum.TextXAlignment.Left lbl.TextColor3=T.Text; lbl.Font=Enum.Font.GothamBold; lbl.TextSize=12; lbl.Text=label if sublabel and sublabel~="" then local sub=Instance.new("TextLabel",card) sub.Size=UDim2.new(1,-118,0,12); sub.Position=UDim2.new(0,28,0,31) sub.BackgroundTransparency=1; sub.TextXAlignment=Enum.TextXAlignment.Left sub.TextColor3=T.Dim; sub.Font=Enum.Font.Gotham; sub.TextSize=10; sub.Text=sublabel end local valPill=Instance.new("Frame",card) valPill.Size=UDim2.new(0,50,0,23); valPill.Position=UDim2.new(1,-60,0,12) valPill.BackgroundColor3=Color3.fromRGB(12,8,30); valPill.BorderSizePixel=0 mkCorner(valPill,7); mkStroke(valPill,accent,1,0.28) local valL=Instance.new("TextLabel",valPill) valL.Size=UDim2.new(1,0,1,0); valL.BackgroundTransparency=1 valL.TextXAlignment=Enum.TextXAlignment.Center; valL.TextColor3=accent valL.Font=Enum.Font.GothamBold; valL.TextSize=11 local fmt=step>=1 and "%d" or "%.1f" valL.Text=string.format(fmt,value)..suffix local trackBG=Instance.new("Frame",card) trackBG.Size=UDim2.new(1,-40,0,5); trackBG.Position=UDim2.new(0,28,1,-22) trackBG.BackgroundColor3=T.BG0; trackBG.BorderSizePixel=0 mkCorner(trackBG,3); mkStroke(trackBG,T.Border,1,0.42) local initR=math.clamp((defaultVal-minVal)/(maxVal-minVal),0,1) local fill=Instance.new("Frame",trackBG) fill.Size=UDim2.new(initR,0,1,0); fill.BackgroundColor3=accent; fill.BorderSizePixel=0 mkCorner(fill,3); mkGrad(fill, lighten(accent,54), accent, 0) local knob=Instance.new("Frame",trackBG) knob.Size=UDim2.new(0,17,0,17); knob.Position=UDim2.new(initR,-8.5,0.5,-8.5) knob.BackgroundColor3=T.White; knob.BorderSizePixel=0; knob.ZIndex=3 mkCorner(knob,9); mkStroke(knob,accent,1.5,0.08) local hit=Instance.new("TextButton",card) hit.Size=UDim2.new(1,0,1,0); hit.BackgroundTransparency=1; hit.Text=""; hit.ZIndex=5 local function applyX(absX) local tPos=trackBG.AbsolutePosition.X; local tSize=trackBG.AbsoluteSize.X if tSize<=0 then return end local ratio=math.clamp((absX-tPos)/tSize,0,1) value=math.round((minVal+ratio*(maxVal-minVal))/step)*step value=math.clamp(value,minVal,maxVal) local r=(value-minVal)/(maxVal-minVal) fill.Size=UDim2.new(r,0,1,0); knob.Position=UDim2.new(r,-8.5,0.5,-8.5) valL.Text=string.format(fmt,value)..suffix; cb(value) end hit.InputBegan:Connect(function(i) if i.UserInputType==Enum.UserInputType.MouseButton1 or i.UserInputType==Enum.UserInputType.Touch then sliderDragging=true; applyX(i.Position.X) end end) UserInputService.InputChanged:Connect(function(i) if not sliderDragging then return end if i.UserInputType==Enum.UserInputType.MouseMovement or i.UserInputType==Enum.UserInputType.Touch then applyX(i.Position.X) end end) UserInputService.InputEnded:Connect(function(i) if i.UserInputType==Enum.UserInputType.MouseButton1 or i.UserInputType==Enum.UserInputType.Touch then sliderDragging=false end end) end local function mkActionCard(parent, label, sublabel, accent, btnLabel, cb) local card, stroke = mkCardBase(parent, 66, accent) local lbl=Instance.new("TextLabel",card) lbl.Size=UDim2.new(1,-126,0,18); lbl.Position=UDim2.new(0,28,0,14) lbl.BackgroundTransparency=1; lbl.TextXAlignment=Enum.TextXAlignment.Left lbl.TextColor3=T.Text; lbl.Font=Enum.Font.GothamBold; lbl.TextSize=12; lbl.Text=label if sublabel and sublabel~="" then local sub=Instance.new("TextLabel",card) sub.Size=UDim2.new(1,-126,0,13); sub.Position=UDim2.new(0,28,0,34) sub.BackgroundTransparency=1; sub.TextXAlignment=Enum.TextXAlignment.Left sub.TextColor3=T.Dim; sub.Font=Enum.Font.Gotham; sub.TextSize=10; sub.Text=sublabel end local btn=Instance.new("TextButton",card) btn.Size=UDim2.new(0,54,0,28); btn.Position=UDim2.new(1,-66,0.5,-14) btn.BackgroundColor3=accent; btn.BorderSizePixel=0 btn.Text=btnLabel; btn.TextColor3=T.Black btn.Font=Enum.Font.GothamBold; btn.TextSize=11; btn.ZIndex=5 mkCorner(btn,9) mkGrad(btn, lighten(accent,52), accent, 90) btn.MouseButton1Click:Connect(function() TweenService:Create(btn, TweenInfo.new(0.08),{BackgroundColor3=T.Green}):Play() TweenService:Create(stroke,TweenInfo.new(0.08),{Transparency=0.05}):Play() task.delay(0.42,function() TweenService:Create(btn, TweenInfo.new(0.24),{BackgroundColor3=accent}):Play() TweenService:Create(stroke,TweenInfo.new(0.24),{Transparency=0.82}):Play() end) cb() end) return card, stroke end local function mkInfo(parent, txt, col) col=col or T.Dim local row=Instance.new("Frame",parent) row.Size=UDim2.new(0.94,0,0,17); row.BackgroundTransparency=1 local dot=Instance.new("Frame",row) dot.Size=UDim2.new(0,4,0,4); dot.Position=UDim2.new(0,4,0.5,-2) dot.BackgroundColor3=col; dot.BorderSizePixel=0; mkCorner(dot,2) local l=Instance.new("TextLabel",row) l.Size=UDim2.new(1,-14,1,0); l.Position=UDim2.new(0,14,0,0) l.BackgroundTransparency=1; l.TextColor3=col l.TextXAlignment=Enum.TextXAlignment.Left l.Font=Enum.Font.Gotham; l.TextSize=10; l.Text=txt; l.TextWrapped=true end local espPage = mkTab("ESP", "👁", T.Cyan) local tpPage = mkTab("TP", "📍", T.Green) local gamePage = mkTab("Game", "⚡", T.Purple) local infoPage = mkTab("Info", "⚙", T.Dim) -- ============================================================ -- ESP TAB -- ============================================================ mkSec(espPage,"Roles") mkToggle(espPage,"Killer ESP","Through-wall highlight",T.Red,function(on) ESPState.KillerESP=on if on then openFolder() for _,p in ipairs(Players:GetPlayers()) do if isPlaying(p) and getRole(p)=="Killer" then buildESP(p,"Killer") end end else for p in pairs(killerObjects) do removeESP(p) end if not ESPState.SurvivorESP and not ESPState.GeneratorESP and not ESPState.MedkitESP and not ESPState.BloxyESP then closeFolder() end end end) mkToggle(espPage,"Survivor ESP","Highlights all Survivors",T.Cyan,function(on) ESPState.SurvivorESP=on if on then openFolder() for _,p in ipairs(Players:GetPlayers()) do if isPlaying(p) and getRole(p)=="Survivor" then buildESP(p,"Survivor") end end else for p in pairs(survivorObjects) do removeESP(p) end if not ESPState.KillerESP and not ESPState.GeneratorESP and not ESPState.MedkitESP and not ESPState.BloxyESP then closeFolder() end end end) mkSec(espPage,"Objects",T.Gold) mkToggle(espPage,"Generator ESP","Shows generator locations",T.Gold,function(on) ESPState.GeneratorESP=on if on then openFolder(); scanGenerators() genDescConn=workspace.DescendantAdded:Connect(function(obj) if isGenerator(obj) then task.delay(0.5, function() if ESPState.GeneratorESP then buildGenESP(obj) end end) end end) else if genDescConn then genDescConn:Disconnect(); genDescConn=nil end for obj in pairs(genObjects) do removeGenESP(obj) end if not ESPState.KillerESP and not ESPState.SurvivorESP and not ESPState.MedkitESP and not ESPState.BloxyESP then closeFolder() end end end) mkSec(espPage,"Items",T.Green) mkToggle(espPage,"Medkit ESP","Highlights medkits on map",T.Green,function(on) ESPState.MedkitESP=on if on then openFolder(); scanItems("medkit",medkitObjects,T.Green,Color3.fromRGB(140,255,180)) medkitDescConn=workspace.DescendantAdded:Connect(function(obj) if isItem(obj,"medkit") then task.delay(0.3, function() if ESPState.MedkitESP then buildItemESP(obj,medkitObjects,T.Green,Color3.fromRGB(140,255,180)) end end) end end) else if medkitDescConn then medkitDescConn:Disconnect(); medkitDescConn=nil end for obj in pairs(medkitObjects) do removeItemESP(obj,medkitObjects) end if not ESPState.KillerESP and not ESPState.SurvivorESP and not ESPState.GeneratorESP and not ESPState.BloxyESP then closeFolder() end end end) mkToggle(espPage,"Bloxy Cola ESP","Highlights Bloxy Cola items",T.Pink,function(on) ESPState.BloxyESP=on if on then openFolder(); scanItems("bloxy",bloxyObjects,T.Pink,Color3.fromRGB(255,160,210)) bloxyDescConn=workspace.DescendantAdded:Connect(function(obj) if isItem(obj,"bloxy") then task.delay(0.3, function() if ESPState.BloxyESP then buildItemESP(obj,bloxyObjects,T.Pink,Color3.fromRGB(255,160,210)) end end) end end) else if bloxyDescConn then bloxyDescConn:Disconnect(); bloxyDescConn=nil end for obj in pairs(bloxyObjects) do removeItemESP(obj,bloxyObjects) end if not ESPState.KillerESP and not ESPState.SurvivorESP and not ESPState.GeneratorESP and not ESPState.MedkitESP then closeFolder() end end end) mkSec(espPage,"Notes") mkInfo(espPage,"ESP fires on character spawn · Generators hidden in lobby") mkInfo(espPage,"Killer = MaxHP > 500 · Survivor = ≤ 500") mkInfo(espPage,"Items matched by partial substring · TP tab works without ESP") -- ============================================================ -- TP TAB -- ============================================================ mkSec(tpPage,"Quick Teleport",T.Green) mkActionCard(tpPage,"Nearest Medkit","Scans for the closest medkit",T.Green,"TP",function() local obj=getNearestItem("medkit"); if obj then teleportTo(obj) end end) mkActionCard(tpPage,"Nearest Bloxy Cola","Scans for the closest cola",T.Pink,"TP",function() local obj=getNearestItem("bloxy"); if obj then teleportTo(obj) end end) mkSec(tpPage,"Item List",T.Cyan) local tpStatusRow=Instance.new("Frame",tpPage) tpStatusRow.Size=UDim2.new(0.94,0,0,20); tpStatusRow.BackgroundTransparency=1 local tpStatusL=Instance.new("TextLabel",tpStatusRow) tpStatusL.Size=UDim2.new(1,0,1,0); tpStatusL.BackgroundTransparency=1 tpStatusL.TextXAlignment=Enum.TextXAlignment.Center; tpStatusL.TextColor3=T.Dim tpStatusL.Font=Enum.Font.Gotham; tpStatusL.TextSize=10 tpStatusL.Text="Press Scan to find items in the map" local tpListContainer=Instance.new("Frame",tpPage) tpListContainer.Name="TPList"; tpListContainer.Size=UDim2.new(0.94,0,0,0) tpListContainer.AutomaticSize=Enum.AutomaticSize.Y tpListContainer.BackgroundTransparency=1; tpListContainer.BorderSizePixel=0 local tpLL=Instance.new("UIListLayout",tpListContainer) tpLL.Padding=UDim.new(0,4); tpLL.SortOrder=Enum.SortOrder.LayoutOrder tpLL.HorizontalAlignment=Enum.HorizontalAlignment.Center local function mkTPRow(parent, itemName, distStr, accent, obj, order) local row=Instance.new("Frame",parent) row.Size=UDim2.new(1,0,0,44); row.BackgroundColor3=T.Card row.BorderSizePixel=0; row.LayoutOrder=order mkCorner(row,11); mkStroke(row,accent,1,0.64) mkGrad(row,Color3.fromRGB(26,18,54),Color3.fromRGB(14,10,36)) local dot=Instance.new("Frame",row) dot.Size=UDim2.new(0,7,0,7); dot.Position=UDim2.new(0,12,0.5,-3.5) dot.BackgroundColor3=accent; dot.BorderSizePixel=0; mkCorner(dot,4) local nameLbl=Instance.new("TextLabel",row) nameLbl.Size=UDim2.new(1,-114,0,16); nameLbl.Position=UDim2.new(0,26,0,6) nameLbl.BackgroundTransparency=1; nameLbl.TextXAlignment=Enum.TextXAlignment.Left nameLbl.TextColor3=T.Text; nameLbl.Font=Enum.Font.GothamBold nameLbl.TextSize=11; nameLbl.Text=itemName; nameLbl.TextTruncate=Enum.TextTruncate.AtEnd local distLbl=Instance.new("TextLabel",row) distLbl.Size=UDim2.new(1,-114,0,13); distLbl.Position=UDim2.new(0,26,0,24) distLbl.BackgroundTransparency=1; distLbl.TextXAlignment=Enum.TextXAlignment.Left distLbl.TextColor3=T.Dim; distLbl.Font=Enum.Font.Gotham; distLbl.TextSize=9; distLbl.Text=distStr local tpBtn=Instance.new("TextButton",row) tpBtn.Size=UDim2.new(0,42,0,26); tpBtn.Position=UDim2.new(1,-52,0.5,-13) tpBtn.BackgroundColor3=accent; tpBtn.BorderSizePixel=0 tpBtn.Text="TP"; tpBtn.TextColor3=T.Black tpBtn.Font=Enum.Font.GothamBold; tpBtn.TextSize=11; tpBtn.ZIndex=5 mkCorner(tpBtn,8); mkGrad(tpBtn, lighten(accent,52), accent, 90) tpBtn.MouseButton1Click:Connect(function() if obj and obj.Parent then teleportTo(obj) TweenService:Create(tpBtn,TweenInfo.new(0.07),{BackgroundColor3=T.White}):Play() task.delay(0.3,function() TweenService:Create(tpBtn,TweenInfo.new(0.2),{BackgroundColor3=accent}):Play() end) end end) end local function mkListSec(parent, text, col, order) local f=Instance.new("Frame",parent) f.Size=UDim2.new(1,0,0,18); f.BackgroundTransparency=1; f.LayoutOrder=order local l=Instance.new("TextLabel",f) l.Size=UDim2.new(1,-8,1,0); l.Position=UDim2.new(0,4,0,0) l.BackgroundTransparency=1; l.TextXAlignment=Enum.TextXAlignment.Left l.TextColor3=col; l.Font=Enum.Font.GothamBold; l.TextSize=10; l.Text=text end local function refreshTPList() for _,child in ipairs(tpListContainer:GetChildren()) do if not child:IsA("UIListLayout") then child:Destroy() end end local char=LocalPlayer.Character; local hrp=char and char:FindFirstChild("HumanoidRootPart") local medkits,bloxies={},{} for _,obj in ipairs(workspace:GetDescendants()) do if isItem(obj,"medkit") then table.insert(medkits,obj) elseif isItem(obj,"bloxy") then table.insert(bloxies,obj) end end local function sortDist(tbl) if not hrp then return end table.sort(tbl,function(a,b) local pa,pb=getObjPos(a),getObjPos(b) if not pa then return false end; if not pb then return true end return (hrp.Position-pa).Magnitude<(hrp.Position-pb).Magnitude end) end sortDist(medkits); sortDist(bloxies) local total=#medkits+#bloxies tpStatusL.Text=total>0 and ("Found "..(#medkits).." medkit(s) · "..(#bloxies).." cola(s)") or "No items found — are you in a round?" tpStatusL.TextColor3=total>0 and T.TextD or T.Dim local ord=0 if #medkits>0 then mkListSec(tpListContainer,"MEDKITS ("..(#medkits)..")",T.Green,ord); ord=ord+1 for _,obj in ipairs(medkits) do local pos=getObjPos(obj) local ds=pos and hrp and ("~"..math.floor((hrp.Position-pos).Magnitude).." studs") or "dist unknown" mkTPRow(tpListContainer,obj.Name,ds,T.Green,obj,ord); ord=ord+1 end end if #bloxies>0 then mkListSec(tpListContainer,"BLOXY COLA ("..(#bloxies)..")",T.Pink,ord); ord=ord+1 for _,obj in ipairs(bloxies) do local pos=getObjPos(obj) local ds=pos and hrp and ("~"..math.floor((hrp.Position-pos).Magnitude).." studs") or "dist unknown" mkTPRow(tpListContainer,obj.Name,ds,T.Pink,obj,ord); ord=ord+1 end end end mkActionCard(tpPage,"Scan Workspace","Rebuilds list sorted by distance",T.Cyan,"↺ Scan",function() refreshTPList() end) mkSec(tpPage,"Notes",T.Dim) mkInfo(tpPage,"Quick TP uses on-the-fly scan — no ESP required",T.TextD) mkInfo(tpPage,"List sorts closest → farthest by stud distance",T.Dim) mkInfo(tpPage,"Re-scan after round starts for accurate results",T.Dim) -- ============================================================ -- GAME TAB -- ============================================================ mkSec(gamePage,"Flow Puzzle",T.Cyan) mkToggle(gamePage,"Auto Solver","Delay set by sliders below",T.Cyan,function(on) flowAutoEnabled=on if on then hookFlow() if FlowGameManager and FlowGameManager.activeGame then if activeSolveTask then task.cancel(activeSolveTask) end activeSolveTask=task.delay(humanDelay(),function() solveFlow(); activeSolveTask=nil end) end else unhookFlow() end end) mkSec(gamePage,"Delay Range",T.PurpL) mkSlider(gamePage,"Min Delay","Earliest the solver fires",T.Cyan,0,10,3.5,0.1,"s",function(v) SOLVE_MIN=v end) mkSlider(gamePage,"Max Delay","Latest the solver fires",T.Purple,0,10,7.0,0.1,"s",function(v) SOLVE_MAX=v end) mkActionCard(gamePage,"Force Complete","Short jitter then fires",T.Cyan,"RUN",function() flowForceComplete() end) mkSec(gamePage,"Stamina",T.Green) mkToggle(gamePage,"Inf Stamina","Locks stamina at chosen %",T.Green,function(on) staminaActive=on; if on then startStaminaHook() else stopStaminaHook() end end) mkSlider(gamePage,"Stamina %","% of max stamina to hold",T.Green,0,100,100,1,"%",function(v) staminaTarget=v end) mkSec(gamePage,"Notes",T.Dim) mkInfo(gamePage,"Single fire + one retry — no spam loop",T.TextD) mkInfo(gamePage,"Force Complete fires with 0.6–1.5s jitter",T.Dim) -- ============================================================ -- INFO TAB -- ============================================================ local sCard=Instance.new("Frame",infoPage) sCard.Size=UDim2.new(0.94,0,0,134); sCard.BackgroundColor3=T.Card; sCard.BorderSizePixel=0 mkCorner(sCard,16) mkGrad(sCard,Color3.fromRGB(36,24,70),Color3.fromRGB(14,10,36)) mkStroke(sCard,T.Purple,1.5,0.24) local sTopBar=Instance.new("Frame",sCard) sTopBar.Size=UDim2.new(1,0,0,3); sTopBar.BackgroundColor3=T.Purple sTopBar.BorderSizePixel=0; sTopBar.ZIndex=2; mkCorner(sTopBar,16) do local fix=Instance.new("Frame",sTopBar) fix.Size=UDim2.new(1,0,0.5,0); fix.Position=UDim2.new(0,0,0.5,0) fix.BackgroundColor3=T.Purple; fix.BorderSizePixel=0 local g=Instance.new("UIGradient",sTopBar) g.Color=ColorSequence.new({ ColorSequenceKeypoint.new(0,Color3.fromRGB(86,26,210)), ColorSequenceKeypoint.new(1,T.Cyan) }) end local AvatarCircle=Instance.new("Frame",sCard) AvatarCircle.Size=UDim2.new(0,46,0,46); AvatarCircle.Position=UDim2.new(0,12,0,16) AvatarCircle.BorderSizePixel=0; AvatarCircle.ZIndex=3; mkCorner(AvatarCircle,23) mkGrad(AvatarCircle,Color3.fromRGB(175,102,255),Color3.fromRGB(72,18,202)) mkStroke(AvatarCircle,T.PurpL,1.5,0.16) local AvatarL=Instance.new("TextLabel",AvatarCircle) AvatarL.Size=UDim2.new(1,0,1,0); AvatarL.BackgroundTransparency=1 AvatarL.Text=string.upper(string.sub(LocalPlayer.Name,1,1)) AvatarL.TextColor3=T.White; AvatarL.Font=Enum.Font.GothamBlack AvatarL.TextSize=18; AvatarL.ZIndex=4 local pNameL=Instance.new("TextLabel",sCard) pNameL.Size=UDim2.new(1,-72,0,20); pNameL.Position=UDim2.new(0,68,0,18) pNameL.BackgroundTransparency=1; pNameL.TextXAlignment=Enum.TextXAlignment.Left pNameL.TextColor3=T.White; pNameL.Font=Enum.Font.GothamBlack pNameL.TextSize=14; pNameL.Text=LocalPlayer.Name local pTag=Instance.new("TextLabel",sCard) pTag.Size=UDim2.new(0,52,0,16); pTag.Position=UDim2.new(0,68,0,42) pTag.BackgroundColor3=Color3.fromRGB(32,12,82); pTag.BorderSizePixel=0 pTag.TextXAlignment=Enum.TextXAlignment.Center; pTag.TextColor3=T.PurpL pTag.Font=Enum.Font.GothamBold; pTag.TextSize=9; pTag.Text="PLAYER" mkCorner(pTag,5); mkStroke(pTag,T.Purple,1,0.44) local sdiv=Instance.new("Frame",sCard) sdiv.Size=UDim2.new(1,-24,0,1); sdiv.Position=UDim2.new(0,12,0,70) sdiv.BackgroundColor3=T.Border; sdiv.BorderSizePixel=0 do local g=Instance.new("UIGradient",sdiv) g.Transparency=NumberSequence.new({ NumberSequenceKeypoint.new(0,1), NumberSequenceKeypoint.new(0.08,0.1), NumberSequenceKeypoint.new(0.92,0.1), NumberSequenceKeypoint.new(1,1), }) end local tips={ {"Drag header to reposition hub", T.TextD}, {"Floating E button toggles visibility", T.Dim}, {"TP tab works without ESP enabled", T.Dim}, {"Generators hidden while in lobby", T.Dim}, } for i,tip in ipairs(tips) do local tl=Instance.new("TextLabel",sCard) tl.Size=UDim2.new(1,-24,0,14); tl.Position=UDim2.new(0,12,0,72+(i*16)) tl.BackgroundTransparency=1; tl.TextXAlignment=Enum.TextXAlignment.Left tl.TextColor3=tip[2]; tl.Font=Enum.Font.Gotham; tl.TextSize=10; tl.Text="· "..tip[1] end local verCard=Instance.new("Frame",infoPage) verCard.Size=UDim2.new(0.94,0,0,34); verCard.BackgroundColor3=T.Card; verCard.BorderSizePixel=0 mkCorner(verCard,10); mkStroke(verCard,T.Border,1,0.50) local verL=Instance.new("TextLabel",verCard) verL.Size=UDim2.new(1,0,1,0); verL.BackgroundTransparency=1 verL.TextXAlignment=Enum.TextXAlignment.Center; verL.TextColor3=T.Dim verL.Font=Enum.Font.GothamSemibold; verL.TextSize=10 verL.Text="Eclipse Hub v10.4 · ESP + AutoSolve + Stamina + TP" -- ============================================================ -- FLOATING BUTTON -- ============================================================ local PulseRing=Instance.new("Frame",Screen) PulseRing.Size=UDim2.new(0,50,0,50); PulseRing.Position=UDim2.new(0,11,0.5,-25) PulseRing.BackgroundTransparency=1; PulseRing.BorderSizePixel=0; PulseRing.ZIndex=8 mkCorner(PulseRing,25) local pulseStroke=mkStroke(PulseRing,T.Purple,2,0.08) local function doPulse() PulseRing.Size=UDim2.new(0,50,0,50); PulseRing.Position=UDim2.new(0,11,0.5,-25) pulseStroke.Transparency=0.06 TweenService:Create(PulseRing,TweenInfo.new(1.6,Enum.EasingStyle.Quad,Enum.EasingDirection.Out),{ Size=UDim2.new(0,78,0,78), Position=UDim2.new(0,-3,0.5,-39), }):Play() TweenService:Create(pulseStroke,TweenInfo.new(1.6,Enum.EasingStyle.Quad,Enum.EasingDirection.Out),{ Transparency=1, }):Play() task.delay(2.4,doPulse) end task.delay(1.6,doPulse) local FloatingBtn=Instance.new("TextButton",Screen) FloatingBtn.Size=UDim2.new(0,50,0,50); FloatingBtn.Position=UDim2.new(0,11,0.5,-25) FloatingBtn.BackgroundColor3=T.PurpD; FloatingBtn.BorderSizePixel=0 FloatingBtn.Text="E"; FloatingBtn.TextColor3=T.White FloatingBtn.Font=Enum.Font.GothamBlack; FloatingBtn.TextSize=20; FloatingBtn.ZIndex=10 mkCorner(FloatingBtn,25) mkGrad(FloatingBtn, Color3.fromRGB(200,136,255), Color3.fromRGB(74,18,212)) mkStroke(FloatingBtn,T.Purple,1.5,0.05) local FBInner=Instance.new("Frame",FloatingBtn) FBInner.Size=UDim2.new(0,38,0,38); FBInner.Position=UDim2.new(0.5,-19,0.5,-19) FBInner.BackgroundTransparency=1; FBInner.BorderSizePixel=0; FBInner.ZIndex=2 mkCorner(FBInner,19); mkStroke(FBInner,T.White,1,0.78) FloatingBtn.MouseEnter:Connect(function() TweenService:Create(FloatingBtn,TweenInfo.new(0.12),{BackgroundTransparency=0.16}):Play() end) FloatingBtn.MouseLeave:Connect(function() TweenService:Create(FloatingBtn,TweenInfo.new(0.12),{BackgroundTransparency=0}):Play() end) FloatingBtn.MouseButton1Click:Connect(function() Main.Visible=not Main.Visible TweenService:Create(FloatingBtn,TweenInfo.new(0.08),{BackgroundTransparency=0.35}):Play() task.delay(0.14,function() TweenService:Create(FloatingBtn,TweenInfo.new(0.18),{BackgroundTransparency=0}):Play() end) end) -- ── Init ───────────────────────────────────────────────────── switchTab("ESP")