
Keyless

local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local CollectionService = game:GetService("CollectionService")
local CoreGui = game:GetService("CoreGui")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ProximityPromptService = game:GetService("ProximityPromptService")
local TweenService = game:GetService("TweenService")
local LocalPlayer = Players.LocalPlayer
local Camera = Workspace.CurrentCamera
-- Global Cleanup / Reload Handling
if _G.TraversalHubCleanup then
pcall(_G.TraversalHubCleanup)
end
local cleanupFns = {}
local function registerCleanup(fn)
table.insert(cleanupFns, fn)
end
local isRunning = true
local function fullCleanup()
isRunning = false
for _, fn in ipairs(cleanupFns) do
pcall(fn)
end
cleanupFns = {}
_G.TraversalHubCleanup = nil
end
_G.TraversalHubCleanup = fullCleanup
if typeof(STATE) == "table" and STATE.onCleanup then
STATE.onCleanup(fullCleanup)
end
-- BridgeNet Setup
local BridgeNet
pcall(function()
local modules = ReplicatedStorage:FindFirstChild("Modules")
if modules and modules:FindFirstChild("BridgeNet") then
BridgeNet = require(modules.BridgeNet)
end
end)
local healingBridge = BridgeNet and BridgeNet.CreateBridge("healingEvent")
local valueBridge = BridgeNet and BridgeNet.CreateBridge("ValueEvent")
local destroyBridge = BridgeNet and BridgeNet.CreateBridge("DestroyEvent")
local unlockDoorBridge = BridgeNet and BridgeNet.CreateBridge("UnlockDoorEvent")
local soundBridge = BridgeNet and BridgeNet.CreateBridge("SoundEvent")
local doorBridge = BridgeNet and BridgeNet.CreateBridge("DoorEvent")
-- Configuration & State
local Config = {
GodMode = true,
InfStamina = true,
AutoParry = {
Enabled = true,
Distance = 16,
SmartDelay = true,
CustomDelay = 0.25,
AutoFace = true,
Cooldown = 0.35,
},
Doors = {
BypassCrowbar = true, -- Allows unlocking chained doors with Knife, Axe, Bat, or bare hands
InstantUnlock = false, -- Instantly snaps chains without waiting for interaction animation
AutoUnlockProximity = false, -- Automatically unlocks chained doors when walking near them
ProximityDistance = 15, -- Range in studs for proximity auto-unlock
},
ESP = {
Enabled = true,
Boxes = true,
Names = true,
Distances = true,
Health = true,
Tracers = false,
Chams = true,
EnemiesOnly = false,
IncludeCorpses = false,
Doors = false,
MaxDistance = 2500,
BoxColor = Color3.fromRGB(255, 65, 65),
TextColor = Color3.fromRGB(255, 255, 255),
TracerColor = Color3.fromRGB(255, 100, 100),
ChamsColor = Color3.fromRGB(255, 40, 40),
ChamsOutlineColor = Color3.fromRGB(255, 255, 255),
}
}
-- Load WindUI
local WindUI
local success, res = pcall(function()
return loadstring(game:HttpGet("https://github.com/Footagesus/WindUI/releases/latest/download/main.lua"))()
end)
if not success or not res then
warn("[Traversal Hub] Failed to load WindUI:", res)
return
end
WindUI = res
-- Create Window
local Window = WindUI:CreateWindow({
Title = "TRAVERSAL HUB",
Icon = "shield-alert",
Author = "by someone",
Folder = "TraversalHub",
Size = UDim2.fromOffset(590, 470),
Transparent = true,
Theme = "Dark",
Resizable = true,
SideBarWidth = 175,
HideSearchBar = true,
ScrollBarEnabled = false,
Acrylic = true,
ToggleKey = Enum.KeyCode.RightShift,
})
registerCleanup(function()
pcall(function()
if Window and Window.Destroy then
Window:Destroy()
end
end)
end)
-- ==================== HELPER FUNCTIONS ====================
local function getNPCRootPart(model)
if not model then return nil end
return model:FindFirstChild("HumanoidRootPart")
or model:FindFirstChild("Torso")
or model:FindFirstChild("UpperTorso")
or model:FindFirstChild("LowerTorso")
or model:FindFirstChild("Head")
or model.PrimaryPart
or model:FindFirstChildWhichIsA("BasePart")
end
local function suppressTutorialPrompts()
local pgui = LocalPlayer:FindFirstChild("PlayerGui")
local prompts = pgui and pgui:FindFirstChild("TutorialPrompts")
if prompts then
if prompts:FindFirstChild("Two") and prompts.Two:FindFirstChild("TextLabel") then
prompts.Two.TextLabel.Text = " "
end
if prompts:FindFirstChild("Frame") and prompts.Frame:FindFirstChild("TextLabel") then
prompts.Frame.TextLabel.Text = " "
end
end
end
-- ==================== GOD MODE (INVINCIBILITY) ====================
local function maintainHealth()
if not Config.GodMode then return end
local char = LocalPlayer.Character
if not char then return end
local hum = char:FindFirstChildOfClass("Humanoid")
if not hum then return end
if hum.Health < hum.MaxHealth or hum.Health < 100 then
if healingBridge then
pcall(function()
healingBridge:Fire(hum, 100)
end)
end
hum.Health = math.max(hum.MaxHealth, 100)
-- Sync Health Bar HUD
local pgui = LocalPlayer:FindFirstChild("PlayerGui")
local hud = pgui and pgui:FindFirstChild("VisibilityHud")
local bar = hud and hud:FindFirstChild("Frame") and hud.Frame:FindFirstChild("HealthBar") and hud.Frame.HealthBar:FindFirstChild("Bar")
if bar then
bar.Size = UDim2.fromScale(1, 1)
end
end
end
local healthConn
local function hookCharacterHealth(char)
if healthConn then healthConn:Disconnect() end
if not char then return end
local hum = char:WaitForChild("Humanoid", 3)
if hum then
healthConn = hum.HealthChanged:Connect(function(hp)
if Config.GodMode and hp < hum.MaxHealth then
maintainHealth()
end
end)
end
end
hookCharacterHealth(LocalPlayer.Character)
local charAddedConn = LocalPlayer.CharacterAdded:Connect(function(char)
task.wait(0.5)
hookCharacterHealth(char)
end)
registerCleanup(function()
if healthConn then healthConn:Disconnect() end
charAddedConn:Disconnect()
end)
local lastHealthCheck = 0
local godModeHeartbeat = RunService.Heartbeat:Connect(function()
local now = tick()
if now - lastHealthCheck > 0.05 then
lastHealthCheck = now
maintainHealth()
end
end)
registerCleanup(function()
godModeHeartbeat:Disconnect()
end)
-- ==================== INFINITE STAMINA LOGIC ====================
local function maintainStamina()
if not Config.InfStamina then return end
local char = LocalPlayer.Character
if not char then return end
local clientCode = char:FindFirstChild("ClientCode")
if clientCode then
local successEnv, senv = pcall(getsenv, clientCode)
if successEnv and senv and senv.primaryAttack then
pcall(function()
setupvalue(senv.primaryAttack, 3, 100)
end)
end
end
local pgui = LocalPlayer:FindFirstChild("PlayerGui")
local hud = pgui and pgui:FindFirstChild("VisibilityHud")
local bar = hud and hud:FindFirstChild("Frame") and hud.Frame:FindFirstChild("StaminaBar") and hud.Frame.StaminaBar:FindFirstChild("Bar")
if bar and bar.Size.X.Scale < 1 then
bar.Size = UDim2.fromScale(1, 1)
end
end
local lastStaminaCheck = 0
local staminaHeartbeat = RunService.Heartbeat:Connect(function()
local now = tick()
if now - lastStaminaCheck > 0.1 then
lastStaminaCheck = now
maintainStamina()
end
end)
registerCleanup(function()
staminaHeartbeat:Disconnect()
end)
-- ==================== UNIVERSAL NPC DETECTION & AUTO PARRY ====================
local trackedNPCs = {}
local enemyConnections = {}
local function cleanNPCConnections(model)
if enemyConnections[model] then
for _, conn in ipairs(enemyConnections[model]) do
pcall(function() conn:Disconnect() end)
end
enemyConnections[model] = nil
end
end
local function getEnemyWeapon(model)
for _, child in ipairs(model:GetChildren()) do
if child:IsA("Model") then
local name = child.Name
if name == "Axe" or name == "Chainsaw" or name == "Knife" or name == "Machete" or name == "Katana" or name == "Bat" or name == "Crowbar" then
return name
end
end
end
return "Fist"
end
local function getOptimalParryDelay(model)
if not Config.AutoParry.SmartDelay then
return Config.AutoParry.CustomDelay
end
local weapon = getEnemyWeapon(model)
if weapon == "Axe" then
return 0.36
elseif weapon == "Chainsaw" then
return 0.35
elseif weapon == "Bat" then
return 0.30
elseif weapon == "Crowbar" then
return 0.25
elseif weapon == "Machete" then
return 0.22
elseif weapon == "Katana" then
return 0.18
elseif weapon == "Knife" then
return 0.12
else
return 0.20
end
end
local function registerNPC(model)
if not model or not model:IsA("Model") then return end
if model == LocalPlayer.Character or Players:GetPlayerFromCharacter(model) then return end
local hum = model:FindFirstChildOfClass("Humanoid")
local isEnemyTagged = CollectionService:HasTag(model, "Enemy") or model.Name == "Enemy" or (model.Parent and model.Parent.Name == "Enemies")
if not hum and not isEnemyTagged then return end
local root = getNPCRootPart(model)
if not root then return end
if not trackedNPCs[model] then
trackedNPCs[model] = {
Model = model,
Humanoid = hum,
Root = root,
IsEnemy = isEnemyTagged,
Weapon = getEnemyWeapon(model),
}
local conns = {}
local attrConn = model:GetAttributeChangedSignal("Attacking"):Connect(function()
if Config.AutoParry.Enabled and model:GetAttribute("Attacking") == true then
_G.TraversalHubScheduleParry(model)
end
end)
table.insert(conns, attrConn)
local ancConn = model.AncestryChanged:Connect(function(_, parent)
if not parent then
cleanNPCConnections(model)
trackedNPCs[model] = nil
end
end)
table.insert(conns, ancConn)
if hum then
local diedConn = hum.Died:Connect(function()
if not Config.ESP.IncludeCorpses then
cleanNPCConnections(model)
trackedNPCs[model] = nil
end
end)
table.insert(conns, diedConn)
end
enemyConnections[model] = conns
else
local entry = trackedNPCs[model]
if not entry.Root or not entry.Root.Parent then
entry.Root = root
end
if not entry.Humanoid then
entry.Humanoid = hum
end
entry.Weapon = getEnemyWeapon(model)
end
end
local function scanAllNPCs()
for _, desc in ipairs(Workspace:GetDescendants()) do
if desc:IsA("Model") then
registerNPC(desc)
end
end
end
scanAllNPCs()
local descAddedConn = Workspace.DescendantAdded:Connect(function(desc)
if desc:IsA("Model") then
task.spawn(function()
task.wait(0.2)
registerNPC(desc)
end)
elseif desc:IsA("Humanoid") and desc.Parent and desc.Parent:IsA("Model") then
task.spawn(function()
task.wait(0.1)
registerNPC(desc.Parent)
end)
end
end)
registerCleanup(function() descAddedConn:Disconnect() end)
local taggedAddedConn = CollectionService:GetInstanceAddedSignal("Enemy"):Connect(function(inst)
if inst:IsDescendantOf(Workspace) and inst:IsA("Model") then
registerNPC(inst)
end
end)
registerCleanup(function() taggedAddedConn:Disconnect() end)
task.spawn(function()
while isRunning do
task.wait(1.5)
scanAllNPCs()
for model, data in pairs(trackedNPCs) do
if not model.Parent or (data.Humanoid and data.Humanoid.Health <= 0 and not Config.ESP.IncludeCorpses) then
cleanNPCConnections(model)
trackedNPCs[model] = nil
end
end
end
end)
registerCleanup(function()
for model, _ in pairs(enemyConnections) do
cleanNPCConnections(model)
end
trackedNPCs = {}
end)
local lastParryTime = 0
local pendingParries = {}
local function executeParry(attackerModel)
local char = LocalPlayer.Character
if not char then return end
local hrp = char:FindFirstChild("HumanoidRootPart")
local clientCode = char:FindFirstChild("ClientCode")
if not hrp or not clientCode then return end
local senv = getsenv(clientCode)
if not senv or not senv.handleAction then return end
if Config.AutoParry.AutoFace and attackerModel then
local targetRoot = getNPCRootPart(attackerModel)
if targetRoot then
pcall(function()
local targetPos = targetRoot.Position
hrp.CFrame = CFrame.lookAt(hrp.Position, Vector3.new(targetPos.X, hrp.Position.Y, targetPos.Z))
end)
end
end
pcall(function()
setupvalue(senv.handleAction, 45, attackerModel)
end)
pcall(function()
senv.handleAction("Block", Enum.UserInputState.Begin)
end)
end
_G.TraversalHubScheduleParry = function(attackerModel)
if not isRunning or not Config.AutoParry.Enabled then return end
if pendingParries[attackerModel] then return end
local char = LocalPlayer.Character
if not char then return end
local myHRP = char:FindFirstChild("HumanoidRootPart")
local myHum = char:FindFirstChildOfClass("Humanoid")
if not myHRP or not myHum or myHum.Health <= 0 then return end
local root = getNPCRootPart(attackerModel)
if not root then return end
local dist = (myHRP.Position - root.Position).Magnitude
if dist > Config.AutoParry.Distance then return end
pendingParries[attackerModel] = true
local delayTime = getOptimalParryDelay(attackerModel)
task.delay(delayTime, function()
pendingParries[attackerModel] = nil
if not isRunning or not Config.AutoParry.Enabled then return end
local curChar = LocalPlayer.Character
local curHRP = curChar and curChar:FindFirstChild("HumanoidRootPart")
local curHum = curChar and curChar:FindFirstChildOfClass("Humanoid")
if not curHRP or not curHum or curHum.Health <= 0 then return end
if attackerModel.Parent and root.Parent then
local currentDist = (curHRP.Position - root.Position).Magnitude
if currentDist <= Config.AutoParry.Distance + 2 then
local now = tick()
if now - lastParryTime >= Config.AutoParry.Cooldown then
lastParryTime = now
executeParry(attackerModel)
end
end
end
end)
end
local lastAnimCheck = 0
local autoParryHeartbeat = RunService.Heartbeat:Connect(function()
if not isRunning or not Config.AutoParry.Enabled then return end
local now = tick()
if now - lastAnimCheck < 0.05 then return end
lastAnimCheck = now
local char = LocalPlayer.Character
if not char then return end
local myHRP = char:FindFirstChild("HumanoidRootPart")
local myHum = char:FindFirstChildOfClass("Humanoid")
if not myHRP or not myHum or myHum.Health <= 0 then return end
local myPos = myHRP.Position
local maxDist = Config.AutoParry.Distance
for model, data in pairs(trackedNPCs) do
if not pendingParries[model] then
local root = data.Root
local hum = data.Humanoid
if root and root.Parent and model.Parent then
local isAlive = not hum or hum.Health > 0
if isAlive then
local dist = (myPos - root.Position).Magnitude
if dist <= maxDist then
if model:GetAttribute("Attacking") == true or CollectionService:HasTag(model, "Attacking") then
_G.TraversalHubScheduleParry(model)
elseif hum then
local animator = hum:FindFirstChildOfClass("Animator")
if animator then
local tracks = animator:GetPlayingAnimationTracks()
for _, track in ipairs(tracks) do
local name = string.lower(track.Name)
if string.find(name, "attack") or string.find(name, "swing") or string.find(name, "slash") or string.find(name, "combo") or string.find(name, "hit") or string.find(name, "counter") then
_G.TraversalHubScheduleParry(model)
break
end
end
end
end
end
end
end
end
end
end)
registerCleanup(function() autoParryHeartbeat:Disconnect() end)
-- ==================== CHAINED & LOCKED DOOR BYPASS SYSTEM ====================
local activeDoorUnlocks = {}
local function unlockChainedDoor(prompt, instant)
if not prompt or not prompt.Parent then return false end
local waypoint = prompt.Parent
if waypoint.Name ~= "Waypoint" then return false end
local chainModel = waypoint.Parent
if not chainModel or not chainModel:IsA("Model") then return false end
local doorModel = chainModel.Parent
if not doorModel or doorModel == Workspace then return false end
if activeDoorUnlocks[doorModel] or chainModel:GetAttribute("Active") == true then
return false
end
activeDoorUnlocks[doorModel] = true
suppressTutorialPrompts()
local char = LocalPlayer.Character
local hum = char and char:FindFirstChildOfClass("Humanoid")
local hrp = char and char:FindFirstChild("HumanoidRootPart")
local animator = hum and hum:FindFirstChildOfClass("Animator")
local isChain = CollectionService:HasTag(prompt, "Chain")
local function finishUnlock()
pcall(function()
if soundBridge and hrp then
local soundObj = ReplicatedStorage.Sounds.Player:FindFirstChild("DoorAnim2")
if soundObj then
soundBridge:Fire(nil, nil, soundObj, hrp)
end
end
end)
-- Destroy chain welds via server bridge
for _, weld in ipairs(waypoint:GetChildren()) do
if weld:IsA("ManualWeld") or weld:IsA("Weld") or weld:IsA("WeldConstraint") then
pcall(function()
if destroyBridge then
destroyBridge:Fire(weld)
end
weld:Destroy()
end)
end
end
-- Fire UnlockDoorEvent to the server
pcall(function()
if unlockDoorBridge then
unlockDoorBridge:Fire(doorModel)
end
end)
-- Detach lock model from door
pcall(function()
prompt.Enabled = false
chainModel.Parent = Workspace
task.delay(0.5, function()
if chainModel and chainModel.Parent == Workspace then
chainModel:Destroy()
end
end)
end)
suppressTutorialPrompts()
activeDoorUnlocks[doorModel] = nil
WindUI:Notify({
Title = "Door Unlocked",
Content = string.format("Successfully bypassed %s on %s!", isChain and "Chains" or "Locks", doorModel.Name),
Duration = 2.5,
Icon = "unlock",
})
end
if instant or Config.Doors.InstantUnlock or not animator or not hrp then
-- Instant unlock without waiting
pcall(function()
if valueBridge then
valueBridge:Fire(chainModel, "Active", true)
end
end)
finishUnlock()
return true
end
-- Animation / Legit unlock with any weapon (Knife, Axe, Bat, Crowbar, etc.)
pcall(function()
if valueBridge then
valueBridge:Fire(chainModel, "Active", true)
end
end)
local animName = isChain and "Chain" or "Rope"
local animObj = ReplicatedStorage:FindFirstChild("Animations")
and ReplicatedStorage.Animations:FindFirstChild("DoorAnimations")
and ReplicatedStorage.Animations.DoorAnimations:FindFirstChild(animName)
local animTrack
if animObj and animator then
pcall(function()
animTrack = animator:LoadAnimation(animObj)
animTrack:Play(0.2)
end)
end
-- Play start audio
task.spawn(function()
task.wait(0.25)
pcall(function()
if soundBridge and hrp then
local soundObj = isChain and ReplicatedStorage.Sounds.Player:FindFirstChild("Chain")
or ReplicatedStorage.Sounds.Player:FindFirstChild("DoorAnim1")
if soundObj then
soundBridge:Fire(nil, nil, soundObj, hrp)
end
end
end)
end)
if animTrack then
local completed = false
local markerConn
markerConn = animTrack:GetMarkerReachedSignal("Done"):Connect(function()
if not completed then
completed = true
markerConn:Disconnect()
finishUnlock()
end
end)
task.delay(1.6, function()
if not completed then
completed = true
pcall(function() markerConn:Disconnect() end)
finishUnlock()
end
end)
else
finishUnlock()
end
return true
end
-- Intercept player pressing E on chained / locked door prompts
local promptHookConn = ProximityPromptService.PromptTriggered:Connect(function(prompt)
if not Config.Doors.BypassCrowbar then return end
local isChained = CollectionService:HasTag(prompt, "Chain")
local isLocked = CollectionService:HasTag(prompt, "Locked")
local isDoorModel = prompt.Parent and prompt.Parent.Name == "Waypoint" and prompt.Parent.Parent and prompt.Parent.Parent.Name == "Model"
if isChained or isLocked or isDoorModel then
unlockChainedDoor(prompt, Config.Doors.InstantUnlock)
end
end)
registerCleanup(function() promptHookConn:Disconnect() end)
-- Clear "REQUIRES CROWBAR" text whenever it attempts to show
local promptShownConn = ProximityPromptService.PromptShown:Connect(function(prompt)
if Config.Doors.BypassCrowbar then
suppressTutorialPrompts()
end
end)
registerCleanup(function() promptShownConn:Disconnect() end)
-- Proximity Auto-Unlock Heartbeat
local lastProximityCheck = 0
local proximityHeartbeat = RunService.Heartbeat:Connect(function()
if not isRunning or not Config.Doors.AutoUnlockProximity then return end
local now = tick()
if now - lastProximityCheck < 0.4 then return end
lastProximityCheck = now
local char = LocalPlayer.Character
local hrp = char and char:FindFirstChild("HumanoidRootPart")
if not hrp then return end
local maxDist = Config.Doors.ProximityDistance
local myPos = hrp.Position
for _, prompt in ipairs(CollectionService:GetTagged("Chain")) do
if prompt:IsDescendantOf(Workspace) and prompt.Parent and prompt.Parent.Name == "Waypoint" then
local dist = (myPos - prompt.Parent.Position).Magnitude
if dist <= maxDist then
unlockChainedDoor(prompt, true)
end
end
end
for _, prompt in ipairs(CollectionService:GetTagged("Locked")) do
if prompt:IsDescendantOf(Workspace) and prompt.Parent and prompt.Parent.Name == "Waypoint" then
local dist = (myPos - prompt.Parent.Position).Magnitude
if dist <= maxDist then
unlockChainedDoor(prompt, true)
end
end
end
end)
registerCleanup(function() proximityHeartbeat:Disconnect() end)
-- Bulk Unlock Function
local function unlockAllChainedDoorsInLevel()
local unlockedCount = 0
for _, prompt in ipairs(CollectionService:GetTagged("Chain")) do
if prompt:IsDescendantOf(Workspace) and prompt.Parent and prompt.Parent.Name == "Waypoint" then
if unlockChainedDoor(prompt, true) then
unlockedCount = unlockedCount + 1
end
end
end
for _, prompt in ipairs(CollectionService:GetTagged("Locked")) do
if prompt:IsDescendantOf(Workspace) and prompt.Parent and prompt.Parent.Name == "Waypoint" then
if unlockChainedDoor(prompt, true) then
unlockedCount = unlockedCount + 1
end
end
end
WindUI:Notify({
Title = "Bulk Door Unlock",
Content = string.format("Unlocked %d chained/locked door(s)!", unlockedCount),
Duration = 3,
Icon = "check-check",
})
end
-- ==================== HIGH-PERFORMANCE ESP SYSTEM ====================
local espEntries = {}
local function createESPObject(npcModel)
local entry = {
Model = npcModel,
Box = Drawing.new("Square"),
BoxOutline = Drawing.new("Square"),
NameText = Drawing.new("Text"),
DistText = Drawing.new("Text"),
HealthText = Drawing.new("Text"),
HealthBar = Drawing.new("Square"),
HealthBarOutline = Drawing.new("Square"),
Tracer = Drawing.new("Line"),
Highlight = nil,
}
entry.Box.Thickness = 1.5
entry.Box.Filled = false
entry.Box.Transparency = 1
entry.Box.Visible = false
entry.Box.ZIndex = 2
entry.BoxOutline.Thickness = 3
entry.BoxOutline.Filled = false
entry.BoxOutline.Transparency = 0.7
entry.BoxOutline.Color = Color3.new(0, 0, 0)
entry.BoxOutline.Visible = false
entry.BoxOutline.ZIndex = 1
entry.NameText.Size = 14
entry.NameText.Center = true
entry.NameText.Outline = true
entry.NameText.OutlineColor = Color3.new(0, 0, 0)
entry.NameText.Visible = false
entry.NameText.ZIndex = 3
entry.DistText.Size = 12
entry.DistText.Center = true
entry.DistText.Outline = true
entry.DistText.OutlineColor = Color3.new(0, 0, 0)
entry.DistText.Visible = false
entry.DistText.ZIndex = 3
entry.HealthText.Size = 12
entry.HealthText.Center = false
entry.HealthText.Outline = true
entry.HealthText.OutlineColor = Color3.new(0, 0, 0)
entry.HealthText.Visible = false
entry.HealthText.ZIndex = 3
entry.HealthBar.Filled = true
entry.HealthBar.Visible = false
entry.HealthBar.ZIndex = 2
entry.HealthBarOutline.Filled = true
entry.HealthBarOutline.Color = Color3.new(0, 0, 0)
entry.HealthBarOutline.Transparency = 0.8
entry.HealthBarOutline.Visible = false
entry.HealthBarOutline.ZIndex = 1
entry.Tracer.Thickness = 1.5
entry.Tracer.Transparency = 0.8
entry.Tracer.Visible = false
entry.Tracer.ZIndex = 2
local hl = Instance.new("Highlight")
hl.Name = "ESP_Highlight"
hl.FillColor = Config.ESP.ChamsColor
hl.OutlineColor = Config.ESP.ChamsOutlineColor
hl.FillTransparency = 0.5
hl.OutlineTransparency = 0.1
hl.Adornee = npcModel
hl.Enabled = false
pcall(function()
hl.Parent = CoreGui
end)
if not hl.Parent then
hl.Parent = npcModel
end
entry.Highlight = hl
return entry
end
local function destroyESPObject(entry)
if not entry then return end
pcall(function() entry.Box:Remove() end)
pcall(function() entry.BoxOutline:Remove() end)
pcall(function() entry.NameText:Remove() end)
pcall(function() entry.DistText:Remove() end)
pcall(function() entry.HealthText:Remove() end)
pcall(function() entry.HealthBar:Remove() end)
pcall(function() entry.HealthBarOutline:Remove() end)
pcall(function() entry.Tracer:Remove() end)
if entry.Highlight then
pcall(function() entry.Highlight:Destroy() end)
end
end
registerCleanup(function()
for _, entry in pairs(espEntries) do
destroyESPObject(entry)
end
espEntries = {}
end)
local espRenderLoop = RunService.RenderStepped:Connect(function()
if not isRunning then return end
local cam = Workspace.CurrentCamera
if not cam then return end
local viewportSize = cam.ViewportSize
local myRoot = LocalPlayer.Character and getNPCRootPart(LocalPlayer.Character)
local myPos = myRoot and myRoot.Position or cam.CFrame.Position
for model, data in pairs(trackedNPCs) do
if not espEntries[model] and model.Parent then
espEntries[model] = createESPObject(model)
end
end
for model, entry in pairs(espEntries) do
local data = trackedNPCs[model]
if not data or not model.Parent or not Config.ESP.Enabled or (Config.ESP.EnemiesOnly and not data.IsEnemy) then
entry.Box.Visible = false
entry.BoxOutline.Visible = false
entry.NameText.Visible = false
entry.DistText.Visible = false
entry.HealthText.Visible = false
entry.HealthBar.Visible = false
entry.HealthBarOutline.Visible = false
entry.Tracer.Visible = false
if entry.Highlight then entry.Highlight.Enabled = false end
if not data or not model.Parent then
destroyESPObject(entry)
espEntries[model] = nil
end
continue
end
local hum = data.Humanoid
local root = data.Root or getNPCRootPart(model)
if not root or not root.Parent then
entry.Box.Visible = false
entry.BoxOutline.Visible = false
entry.NameText.Visible = false
entry.DistText.Visible = false
entry.HealthText.Visible = false
entry.HealthBar.Visible = false
entry.HealthBarOutline.Visible = false
entry.Tracer.Visible = false
if entry.Highlight then entry.Highlight.Enabled = false end
continue
end
local isDead = hum and hum.Health <= 0
if isDead and not Config.ESP.IncludeCorpses then
entry.Box.Visible = false
entry.BoxOutline.Visible = false
entry.NameText.Visible = false
entry.DistText.Visible = false
entry.HealthText.Visible = false
entry.HealthBar.Visible = false
entry.HealthBarOutline.Visible = false
entry.Tracer.Visible = false
if entry.Highlight then entry.Highlight.Enabled = false end
continue
end
local rootPos = root.Position
local distance = (myPos - rootPos).Magnitude
if distance > Config.ESP.MaxDistance then
entry.Box.Visible = false
entry.BoxOutline.Visible = false
entry.NameText.Visible = false
entry.DistText.Visible = false
entry.HealthText.Visible = false
entry.HealthBar.Visible = false
entry.HealthBarOutline.Visible = false
entry.Tracer.Visible = false
if entry.Highlight then entry.Highlight.Enabled = false end
continue
end
local rootScreen, onScreen = cam:WorldToViewportPoint(rootPos)
if entry.Highlight then
entry.Highlight.Enabled = Config.ESP.Chams
entry.Highlight.FillColor = Config.ESP.ChamsColor
entry.Highlight.OutlineColor = Config.ESP.ChamsOutlineColor
end
if not onScreen then
entry.Box.Visible = false
entry.BoxOutline.Visible = false
entry.NameText.Visible = false
entry.DistText.Visible = false
entry.HealthText.Visible = false
entry.HealthBar.Visible = false
entry.HealthBarOutline.Visible = false
entry.Tracer.Visible = false
continue
end
local topPos = rootPos + Vector3.new(0, 2.8, 0)
local botPos = rootPos - Vector3.new(0, 3.2, 0)
local topScreen = cam:WorldToViewportPoint(topPos)
local botScreen = cam:WorldToViewportPoint(botPos)
local boxHeight = math.abs(botScreen.Y - topScreen.Y)
local boxWidth = boxHeight * 0.62
local boxTopLeft = Vector2.new(rootScreen.X - boxWidth / 2, topScreen.Y)
if Config.ESP.Boxes then
entry.Box.Size = Vector2.new(boxWidth, boxHeight)
entry.Box.Position = boxTopLeft
entry.Box.Color = Config.ESP.BoxColor
entry.Box.Visible = true
entry.BoxOutline.Size = Vector2.new(boxWidth, boxHeight)
entry.BoxOutline.Position = boxTopLeft
entry.BoxOutline.Visible = true
else
entry.Box.Visible = false
entry.BoxOutline.Visible = false
end
if Config.ESP.Names then
local weaponTag = (data.Weapon and data.Weapon ~= "Fist") and (" [" .. data.Weapon .. "]") or ""
entry.NameText.Text = model.Name .. weaponTag
entry.NameText.Position = Vector2.new(rootScreen.X, boxTopLeft.Y - 16)
entry.NameText.Color = Config.ESP.TextColor
entry.NameText.Visible = true
else
entry.NameText.Visible = false
end
if Config.ESP.Distances then
entry.DistText.Text = string.format("[%d m]", math.floor(distance))
entry.DistText.Position = Vector2.new(rootScreen.X, boxTopLeft.Y + boxHeight + 2)
entry.DistText.Color = Color3.fromRGB(200, 200, 200)
entry.DistText.Visible = true
else
entry.DistText.Visible = false
end
if Config.ESP.Health and hum then
local healthPercent = math.clamp(hum.Health / math.max(hum.MaxHealth, 1), 0, 1)
local barWidth = 3
local barHeight = boxHeight * healthPercent
local barPos = Vector2.new(boxTopLeft.X - barWidth - 4, boxTopLeft.Y + (boxHeight - barHeight))
entry.HealthBarOutline.Size = Vector2.new(barWidth + 2, boxHeight + 2)
entry.HealthBarOutline.Position = Vector2.new(boxTopLeft.X - barWidth - 5, boxTopLeft.Y - 1)
entry.HealthBarOutline.Visible = true
local healthColor = Color3.fromRGB(
math.floor(255 * (1 - healthPercent)),
math.floor(255 * healthPercent),
0
)
entry.HealthBar.Size = Vector2.new(barWidth, barHeight)
entry.HealthBar.Position = barPos
entry.HealthBar.Color = healthColor
entry.HealthBar.Visible = true
entry.HealthText.Text = string.format("%d HP", math.floor(hum.Health))
entry.HealthText.Position = Vector2.new(boxTopLeft.X - barWidth - 8 - entry.HealthText.TextBounds.X, boxTopLeft.Y + boxHeight/2 - 6)
entry.HealthText.Color = healthColor
entry.HealthText.Visible = true
else
entry.HealthBar.Visible = false
entry.HealthBarOutline.Visible = false
entry.HealthText.Visible = false
end
if Config.ESP.Tracers then
entry.Tracer.From = Vector2.new(viewportSize.X / 2, viewportSize.Y)
entry.Tracer.To = Vector2.new(rootScreen.X, botScreen.Y)
entry.Tracer.Color = Config.ESP.TracerColor
entry.Tracer.Visible = true
else
entry.Tracer.Visible = false
end
end
end)
registerCleanup(function() espRenderLoop:Disconnect() end)
-- ==================== UI SETUP (WINDUI) ====================
-- 1. Combat & Defense Tab
local CombatTab = Window:Tab({
Title = "Combat & Defense",
Icon = "shield-check",
})
CombatTab:Section({
Title = "Player Invincibility",
Icon = "heart",
})
CombatTab:Toggle({
Title = "God Mode (Invincible)",
Desc = "Locks health to max & triggers instant heal when damaged",
Icon = "shield",
Value = Config.GodMode,
Callback = function(state)
Config.GodMode = state
if state then
maintainHealth()
WindUI:Notify({
Title = "Defense",
Content = "God Mode ENABLED",
Duration = 2.5,
Icon = "shield-check",
})
else
WindUI:Notify({
Title = "Defense",
Content = "God Mode DISABLED",
Duration = 2.5,
Icon = "shield-off",
})
end
end
})
CombatTab:Toggle({
Title = "Infinite Stamina",
Desc = "Continuously locks stamina to max & prevents exhaustion",
Icon = "battery-charging",
Value = Config.InfStamina,
Callback = function(state)
Config.InfStamina = state
if state then
maintainStamina()
end
end
})
CombatTab:Button({
Title = "Replenish Health & Stamina",
Desc = "Instantly restore 100% HP and 100% Stamina",
Icon = "refresh-cw",
Callback = function()
maintainHealth()
maintainStamina()
WindUI:Notify({
Title = "Status",
Content = "Health & Stamina fully restored!",
Duration = 2,
Icon = "check-circle",
})
end
})
CombatTab:Section({
Title = "Auto Parry",
Icon = "swords",
})
CombatTab:Toggle({
Title = "Auto Parry / Auto Block",
Desc = "Automatically blocks and counters incoming NPC attacks",
Icon = "shield-alert",
Value = Config.AutoParry.Enabled,
Callback = function(state)
Config.AutoParry.Enabled = state
end
})
CombatTab:Toggle({
Title = "Smart Weapon Delay",
Desc = "Auto-adjusts parry timing (e.g. 0.36s for heavy Axe, 0.12s for Knife)",
Icon = "clock",
Value = Config.AutoParry.SmartDelay,
Callback = function(state)
Config.AutoParry.SmartDelay = state
end
})
CombatTab:Slider({
Title = "Manual Parry Delay (s)",
Desc = "Used if Smart Delay is disabled (0.00s to 0.80s)",
Value = {
Min = 0,
Max = 80,
Default = math.floor(Config.AutoParry.CustomDelay * 100),
},
Callback = function(val)
Config.AutoParry.CustomDelay = val / 100
end
})
CombatTab:Slider({
Title = "Parry Trigger Range",
Value = {
Min = 5,
Max = 30,
Default = Config.AutoParry.Distance,
},
Callback = function(val)
Config.AutoParry.Distance = val
end
})
CombatTab:Toggle({
Title = "Auto Face Attacker",
Desc = "Instantly snaps view/character to face attacking NPC",
Icon = "crosshair",
Value = Config.AutoParry.AutoFace,
Callback = function(state)
Config.AutoParry.AutoFace = state
end
})
-- 2. World & Doors Tab
local WorldTab = Window:Tab({
Title = "World & Doors",
Icon = "door-open",
})
WorldTab:Section({
Title = "Chained Door Bypass",
Icon = "unlock",
})
WorldTab:Toggle({
Title = "Bypass Crowbar Requirement",
Desc = "Allows unlocking chained doors with Knife, Axe, Bat, or bare hands",
Icon = "key",
Value = Config.Doors.BypassCrowbar,
Callback = function(state)
Config.Doors.BypassCrowbar = state
if state then
WindUI:Notify({
Title = "Door Bypass",
Content = "Crowbar bypass ENABLED (Use any weapon)",
Duration = 2.5,
Icon = "check",
})
end
end
})
WorldTab:Toggle({
Title = "Instant Unlock",
Desc = "Skips unlock animation and snaps chains off immediately upon pressing E",
Icon = "zap",
Value = Config.Doors.InstantUnlock,
Callback = function(state)
Config.Doors.InstantUnlock = state
end
})
WorldTab:Toggle({
Title = "Auto-Unlock on Proximity",
Desc = "Automatically unlocks chained doors when walking near them (No E press needed)",
Icon = "rss",
Value = Config.Doors.AutoUnlockProximity,
Callback = function(state)
Config.Doors.AutoUnlockProximity = state
end
})
WorldTab:Slider({
Title = "Proximity Unlock Distance",
Value = {
Min = 6,
Max = 30,
Default = Config.Doors.ProximityDistance,
},
Callback = function(val)
Config.Doors.ProximityDistance = val
end
})
WorldTab:Section({
Title = "Quick Unlock Actions",
Icon = "wrench",
})
WorldTab:Button({
Title = "Unlock All Chained Doors (Current Level)",
Desc = "Instantly unlocks and removes chains on all doors in the active stage",
Icon = "unlock",
Callback = function()
unlockAllChainedDoorsInLevel()
end
})
WorldTab:Button({
Title = "Unlock Nearest Door",
Desc = "Target and unlock the closest chained door to your character",
Icon = "crosshair",
Callback = function()
local char = LocalPlayer.Character
local hrp = char and char:FindFirstChild("HumanoidRootPart")
if not hrp then return end
local closestPrompt = nil
local closestDist = math.huge
for _, prompt in ipairs(CollectionService:GetTagged("Chain")) do
if prompt:IsDescendantOf(Workspace) and prompt.Parent and prompt.Parent.Name == "Waypoint" then
local dist = (hrp.Position - prompt.Parent.Position).Magnitude
if dist < closestDist then
closestDist = dist
closestPrompt = prompt
end
end
end
for _, prompt in ipairs(CollectionService:GetTagged("Locked")) do
if prompt:IsDescendantOf(Workspace) and prompt.Parent and prompt.Parent.Name == "Waypoint" then
local dist = (hrp.Position - prompt.Parent.Position).Magnitude
if dist < closestDist then
closestDist = dist
closestPrompt = prompt
end
end
end
if closestPrompt then
unlockChainedDoor(closestPrompt, true)
else
WindUI:Notify({
Title = "Nearest Door",
Content = "No locked or chained doors found nearby!",
Duration = 2.5,
Icon = "alert-circle",
})
end
end
})
-- 3. Visuals / ESP Tab
local VisualsTab = Window:Tab({
Title = "Visuals (ESP)",
Icon = "eye",
})
VisualsTab:Section({
Title = "ESP Master & Filters",
Icon = "sliders",
})
VisualsTab:Toggle({
Title = "Master ESP Toggle",
Desc = "Enable or disable all visuals",
Icon = "scan",
Value = Config.ESP.Enabled,
Callback = function(state)
Config.ESP.Enabled = state
end
})
VisualsTab:Toggle({
Title = "Enemies Only",
Desc = "Filter only aggressive enemies vs all NPC models",
Icon = "skull",
Value = Config.ESP.EnemiesOnly,
Callback = function(state)
Config.ESP.EnemiesOnly = state
end
})
VisualsTab:Toggle({
Title = "Include Corpses",
Desc = "Display downed / dead enemy bodies",
Icon = "skull",
Value = Config.ESP.IncludeCorpses,
Callback = function(state)
Config.ESP.IncludeCorpses = state
end
})
VisualsTab:Slider({
Title = "Max Render Distance",
Value = {
Min = 100,
Max = 4000,
Default = Config.ESP.MaxDistance,
},
Callback = function(val)
Config.ESP.MaxDistance = val
end
})
VisualsTab:Section({
Title = "Visual Elements",
Icon = "layers",
})
VisualsTab:Toggle({
Title = "2D Boxes",
Desc = "Bounding box around NPC",
Icon = "square",
Value = Config.ESP.Boxes,
Callback = function(state)
Config.ESP.Boxes = state
end
})
VisualsTab:Toggle({
Title = "3D Highlight Chams",
Desc = "Glow silhouette through walls",
Icon = "sun",
Value = Config.ESP.Chams,
Callback = function(state)
Config.ESP.Chams = state
end
})
VisualsTab:Toggle({
Title = "Name & Weapon Tags",
Desc = "Display NPC model name and equipped weapon",
Icon = "type",
Value = Config.ESP.Names,
Callback = function(state)
Config.ESP.Names = state
end
})
VisualsTab:Toggle({
Title = "Distance Indicator",
Desc = "Display distance in meters",
Icon = "navigation",
Value = Config.ESP.Distances,
Callback = function(state)
Config.ESP.Distances = state
end
})
VisualsTab:Toggle({
Title = "Health Bar & Text",
Desc = "Dynamic health bar and HP count",
Icon = "heart",
Value = Config.ESP.Health,
Callback = function(state)
Config.ESP.Health = state
end
})
VisualsTab:Toggle({
Title = "Tracers",
Desc = "Draw line from bottom screen to NPC",
Icon = "trending-up",
Value = Config.ESP.Tracers,
Callback = function(state)
Config.ESP.Tracers = state
end
})
-- 4. Settings Tab
local SettingsTab = Window:Tab({
Title = "Settings",
Icon = "settings",
})
SettingsTab:Section({
Title = "UI & Management",
Icon = "tool",
})
SettingsTab:Button({
Title = "Force Rescan NPCs",
Desc = "Force a complete scan of all workspace subfolders",
Icon = "refresh-ccw",
Callback = function()
scanAllNPCs()
local count = 0
for _ in pairs(trackedNPCs) do count = count + 1 end
WindUI:Notify({
Title = "Scanner",
Content = string.format("Found %d NPCs in workspace!", count),
Duration = 2.5,
Icon = "check",
})
end
})
SettingsTab:Button({
Title = "Unload Script",
Desc = "Remove all ESP drawings, listeners, and close UI",
Icon = "trash-2",
Callback = function()
fullCleanup()
WindUI:Notify({
Title = "Unloaded",
Content = "Traversal Hub has been completely unloaded.",
Duration = 3,
Icon = "x-circle",
})
end
})
-- Initial Notification
WindUI:Notify({
Title = "Traversal Hub Loaded",
Content = "God Mode, Auto Parry, Door Bypass & ESP Active! (Press Right Shift to toggle UI)",
Duration = 4,
Icon = "check-check",
})
print("[Traversal Hub]")No comments yet for this script.



