
Key Required
![(BETA) : The Archives [Hub]](https://cdn.kocakz.me/images/25a6ddca22aa95945c6ded6b58c54c208243a4ddf97014bb87989b5d09960662.webp)
--[[
Doors: The Archives Hub
Features:
- Noclip
- Fullbright
- WalkSpeed slider: 17-21
- Entity warnings
- Infinite jump (~25 studs vertical height)
- Item ESP with distance
- ESP refresh every 2 seconds
]]
local Players = game:GetService("Players")
local Lighting = game:GetService("Lighting")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Workspace = game:GetService("Workspace")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
----------------------------------------------------------------
-- CLEAN OLD GUI
----------------------------------------------------------------
local oldGui = playerGui:FindFirstChild("DoorsArchivesHub")
if oldGui then
oldGui:Destroy()
end
----------------------------------------------------------------
-- SETTINGS
----------------------------------------------------------------
local settings = {
Noclip = false,
Fullbright = false,
InfiniteJump = false,
ItemESP = false,
WalkSpeed = 17,
JumpHeightStuds = 25,
ESPUpdateRate = 2,
}
----------------------------------------------------------------
-- CHARACTER
----------------------------------------------------------------
local character
local humanoid
local rootPart
local function updateCharacter(char)
character = char
humanoid = char:WaitForChild("Humanoid")
rootPart = char:WaitForChild("HumanoidRootPart")
humanoid.WalkSpeed = settings.WalkSpeed
end
if player.Character then
task.spawn(updateCharacter, player.Character)
end
player.CharacterAdded:Connect(updateCharacter)
----------------------------------------------------------------
-- GUI
----------------------------------------------------------------
local gui = Instance.new("ScreenGui")
gui.Name = "DoorsArchivesHub"
gui.ResetOnSpawn = false
gui.IgnoreGuiInset = false
gui.Parent = playerGui
local frame = Instance.new("Frame")
frame.Name = "Main"
frame.Size = UDim2.fromOffset(440, 570)
frame.Position = UDim2.new(0.5, -220, 0.1, 0)
frame.BackgroundColor3 = Color3.fromRGB(18, 15, 13)
frame.BorderSizePixel = 0
frame.Parent = gui
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 12)
corner.Parent = frame
local stroke = Instance.new("UIStroke")
stroke.Color = Color3.fromRGB(175, 135, 85)
stroke.Thickness = 3
stroke.Parent = frame
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, 0, 0, 65)
title.BackgroundTransparency = 1
title.Text = "Doors: The Archives Hub"
title.TextColor3 = Color3.fromRGB(235, 220, 190)
title.TextScaled = true
title.Font = Enum.Font.GothamBlack
title.Parent = frame
local titlePadding = Instance.new("UIPadding")
titlePadding.PaddingLeft = UDim.new(0, 18)
titlePadding.PaddingRight = UDim.new(0, 18)
titlePadding.PaddingTop = UDim.new(0, 10)
titlePadding.PaddingBottom = UDim.new(0, 10)
titlePadding.Parent = title
local container = Instance.new("Frame")
container.Size = UDim2.new(1, -30, 1, -80)
container.Position = UDim2.fromOffset(15, 70)
container.BackgroundTransparency = 1
container.Parent = frame
local layout = Instance.new("UIListLayout")
layout.Padding = UDim.new(0, 9)
layout.FillDirection = Enum.FillDirection.Vertical
layout.HorizontalAlignment = Enum.HorizontalAlignment.Center
layout.SortOrder = Enum.SortOrder.LayoutOrder
layout.Parent = container
----------------------------------------------------------------
-- GUI HELPERS
----------------------------------------------------------------
local function makeButton(text)
local button = Instance.new("TextButton")
button.Size = UDim2.new(1, 0, 0, 48)
button.BackgroundColor3 = Color3.fromRGB(39, 33, 28)
button.BorderSizePixel = 0
button.Text = text
button.TextColor3 = Color3.fromRGB(235, 220, 190)
button.TextSize = 18
button.Font = Enum.Font.GothamBold
local buttonCorner = Instance.new("UICorner")
buttonCorner.CornerRadius = UDim.new(0, 8)
buttonCorner.Parent = button
local buttonStroke = Instance.new("UIStroke")
buttonStroke.Color = Color3.fromRGB(91, 72, 52)
buttonStroke.Thickness = 1
buttonStroke.Parent = button
button.Parent = container
return button
end
local function updateToggleButton(button, titleText, enabled)
if enabled then
button.Text = titleText .. ": ON"
button.BackgroundColor3 = Color3.fromRGB(55, 72, 45)
else
button.Text = titleText .. ": OFF"
button.BackgroundColor3 = Color3.fromRGB(39, 33, 28)
end
end
----------------------------------------------------------------
-- NOCLIP
----------------------------------------------------------------
local noclipButton = makeButton("Noclip: OFF")
noclipButton.MouseButton1Click:Connect(function()
settings.Noclip = not settings.Noclip
updateToggleButton(
noclipButton,
"Noclip",
settings.Noclip
)
end)
RunService.Stepped:Connect(function()
if not settings.Noclip then
return
end
if not character then
return
end
for _, object in ipairs(character:GetDescendants()) do
if object:IsA("BasePart") then
object.CanCollide = false
end
end
end)
----------------------------------------------------------------
-- FULLBRIGHT
----------------------------------------------------------------
local oldLighting = {
Brightness = Lighting.Brightness,
ClockTime = Lighting.ClockTime,
FogEnd = Lighting.FogEnd,
GlobalShadows = Lighting.GlobalShadows,
Ambient = Lighting.Ambient,
OutdoorAmbient = Lighting.OutdoorAmbient,
}
local fullbrightButton = makeButton("Fullbright: OFF")
local function enableFullbright()
Lighting.Brightness = 3
Lighting.ClockTime = 14
Lighting.FogEnd = 100000
Lighting.GlobalShadows = false
Lighting.Ambient = Color3.fromRGB(
255,
255,
255
)
Lighting.OutdoorAmbient = Color3.fromRGB(
255,
255,
255
)
end
local function disableFullbright()
Lighting.Brightness = oldLighting.Brightness
Lighting.ClockTime = oldLighting.ClockTime
Lighting.FogEnd = oldLighting.FogEnd
Lighting.GlobalShadows = oldLighting.GlobalShadows
Lighting.Ambient = oldLighting.Ambient
Lighting.OutdoorAmbient = oldLighting.OutdoorAmbient
end
fullbrightButton.MouseButton1Click:Connect(function()
settings.Fullbright = not settings.Fullbright
if settings.Fullbright then
enableFullbright()
else
disableFullbright()
end
updateToggleButton(
fullbrightButton,
"Fullbright",
settings.Fullbright
)
end)
----------------------------------------------------------------
-- SPEED SLIDER
----------------------------------------------------------------
local speedFrame = Instance.new("Frame")
speedFrame.Size = UDim2.new(1, 0, 0, 75)
speedFrame.BackgroundColor3 = Color3.fromRGB(39, 33, 28)
speedFrame.BorderSizePixel = 0
speedFrame.Parent = container
local speedCorner = Instance.new("UICorner")
speedCorner.CornerRadius = UDim.new(0, 8)
speedCorner.Parent = speedFrame
local speedLabel = Instance.new("TextLabel")
speedLabel.Size = UDim2.new(1, 0, 0, 32)
speedLabel.BackgroundTransparency = 1
speedLabel.Text = "Speed: 17 studs/sec"
speedLabel.TextColor3 = Color3.fromRGB(235, 220, 190)
speedLabel.Font = Enum.Font.GothamBold
speedLabel.TextSize = 17
speedLabel.Parent = speedFrame
local sliderBar = Instance.new("Frame")
sliderBar.Size = UDim2.new(1, -40, 0, 10)
sliderBar.Position = UDim2.new(0, 20, 0, 49)
sliderBar.BackgroundColor3 = Color3.fromRGB(82, 68, 54)
sliderBar.BorderSizePixel = 0
sliderBar.Parent = speedFrame
local sliderCorner = Instance.new("UICorner")
sliderCorner.CornerRadius = UDim.new(1, 0)
sliderCorner.Parent = sliderBar
local sliderKnob = Instance.new("TextButton")
sliderKnob.Size = UDim2.fromOffset(22, 22)
sliderKnob.AnchorPoint = Vector2.new(0.5, 0.5)
sliderKnob.Position = UDim2.new(0, 0, 0.5, 0)
sliderKnob.BackgroundColor3 = Color3.fromRGB(
235,
220,
190
)
sliderKnob.BorderSizePixel = 0
sliderKnob.Text = ""
sliderKnob.Parent = sliderBar
local knobCorner = Instance.new("UICorner")
knobCorner.CornerRadius = UDim.new(1, 0)
knobCorner.Parent = sliderKnob
local MIN_SPEED = 17
local MAX_SPEED = 21
local draggingSlider = false
local function setSpeedFromX(mouseX)
local left = sliderBar.AbsolutePosition.X
local width = sliderBar.AbsoluteSize.X
if width <= 0 then
return
end
local alpha = math.clamp(
(mouseX - left) / width,
0,
1
)
local rawSpeed =
MIN_SPEED
+
(MAX_SPEED - MIN_SPEED)
* alpha
local speed = math.round(rawSpeed)
settings.WalkSpeed = speed
local normalized =
(speed - MIN_SPEED)
/
(MAX_SPEED - MIN_SPEED)
sliderKnob.Position =
UDim2.new(
normalized,
0,
0.5,
0
)
speedLabel.Text =
"Speed: "
.. tostring(speed)
.. " studs/sec"
if humanoid then
humanoid.WalkSpeed = speed
end
end
sliderKnob.MouseButton1Down:Connect(function()
draggingSlider = true
end)
sliderBar.InputBegan:Connect(function(input)
if
input.UserInputType
== Enum.UserInputType.MouseButton1
then
draggingSlider = true
setSpeedFromX(input.Position.X)
end
end)
UserInputService.InputChanged:Connect(function(input)
if not draggingSlider then
return
end
if
input.UserInputType
== Enum.UserInputType.MouseMovement
then
setSpeedFromX(input.Position.X)
end
end)
UserInputService.InputEnded:Connect(function(input)
if
input.UserInputType
== Enum.UserInputType.MouseButton1
then
draggingSlider = false
end
end)
----------------------------------------------------------------
-- ENTITY WARNING
----------------------------------------------------------------
local entityWarningButton =
makeButton("Entity Warning: ON")
local entityWarningsEnabled = true
updateToggleButton(
entityWarningButton,
"Entity Warning",
true
)
entityWarningButton.MouseButton1Click:Connect(function()
entityWarningsEnabled =
not entityWarningsEnabled
updateToggleButton(
entityWarningButton,
"Entity Warning",
entityWarningsEnabled
)
end)
----------------------------------------------------------------
-- ENTITY NAME NORMALIZER
----------------------------------------------------------------
local function normalizeName(name)
name = string.lower(name)
-- Remove spaces, punctuation, underscores, etc.
name = string.gsub(
name,
"[^%w]",
""
)
return name
end
----------------------------------------------------------------
-- LEVENSHTEIN DISTANCE
--
-- Allows small spelling mistakes:
--
-- AmbushMoving
-- AmbshMoving
-- AmbushMovin
-- ambush_moving
-- Ambush-Moving
-- etc.
----------------------------------------------------------------
local function levenshtein(a, b)
local lenA = #a
local lenB = #b
local matrix = {}
for i = 0, lenA do
matrix[i] = {}
matrix[i][0] = i
end
for j = 0, lenB do
matrix[0][j] = j
end
for i = 1, lenA do
for j = 1, lenB do
local cost
if
string.sub(a, i, i)
==
string.sub(b, j, j)
then
cost = 0
else
cost = 1
end
matrix[i][j] =
math.min(
matrix[i - 1][j] + 1,
matrix[i][j - 1] + 1,
matrix[i - 1][j - 1] + cost
)
end
end
return matrix[lenA][lenB]
end
----------------------------------------------------------------
-- ENTITY DATABASE
----------------------------------------------------------------
local entities = {
{
Display = "Ambush",
Aliases = {
"AmbushMoving",
"Ambush Move",
"AmbushMover",
"Ambush",
},
},
{
Display = "Rush",
Aliases = {
"RushMoving",
"Rush Move",
"RushMover",
"Rush",
},
},
{
Display = "A-60",
Aliases = {
"A60Moving",
"A-60Moving",
"A_60Moving",
"A60 Moving",
"A60",
},
},
{
Display = "A-120",
Aliases = {
"A120Moving",
"A-120Moving",
"A_120Moving",
"A120 Moving",
"A120",
},
},
{
Display = "Bash",
Aliases = {
"BashMoving",
"Bash Move",
"BashMover",
"Bash",
},
},
{
Display = "Scribbles",
Aliases = {
"ScribblesMoving",
"ScribbleMoving",
"SrcibblesMoving",
"ScrriblesMoving",
"Scribbles Move",
"Scribbles",
},
},
}
local normalizedEntityAliases = {}
for _, entity in ipairs(entities) do
for _, alias in ipairs(entity.Aliases) do
table.insert(
normalizedEntityAliases,
{
Name = entity.Display,
Alias = normalizeName(alias),
}
)
end
end
local function identifyEntity(name)
local normalized =
normalizeName(name)
for _, entry in ipairs(
normalizedEntityAliases
) do
if normalized == entry.Alias then
return entry.Name
end
-- Only fuzzy-match reasonably similar
-- length names to reduce false warnings.
if
math.abs(
#normalized - #entry.Alias
)
<= 2
then
local distance =
levenshtein(
normalized,
entry.Alias
)
if distance <= 2 then
return entry.Name
end
end
end
return nil
end
----------------------------------------------------------------
-- WARNING GUI
----------------------------------------------------------------
local warningFrame = Instance.new("Frame")
warningFrame.Size = UDim2.fromOffset(500, 75)
warningFrame.Position =
UDim2.new(
0.5,
-250,
0.02,
0
)
warningFrame.BackgroundColor3 =
Color3.fromRGB(
100,
20,
20
)
warningFrame.BorderSizePixel = 0
warningFrame.Visible = false
warningFrame.Parent = gui
local warningCorner =
Instance.new("UICorner")
warningCorner.CornerRadius =
UDim.new(0, 10)
warningCorner.Parent =
warningFrame
local warningStroke =
Instance.new("UIStroke")
warningStroke.Color =
Color3.fromRGB(
255,
90,
90
)
warningStroke.Thickness = 3
warningStroke.Parent = warningFrame
local warningText =
Instance.new("TextLabel")
warningText.Size =
UDim2.fromScale(1, 1)
warningText.BackgroundTransparency = 1
warningText.TextColor3 =
Color3.fromRGB(
255,
230,
220
)
warningText.TextScaled = true
warningText.Font =
Enum.Font.GothamBlack
warningText.Parent =
warningFrame
local warningID = 0
local function showWarning(entityName)
if not entityWarningsEnabled then
return
end
warningID += 1
local thisWarning =
warningID
warningText.Text =
entityName
.. " is moving!"
warningFrame.Visible = true
task.delay(4, function()
if
thisWarning
==
warningID
then
warningFrame.Visible = false
end
end)
end
----------------------------------------------------------------
-- WATCH FOR ENTITIES
----------------------------------------------------------------
local warnedInstances = {}
local function inspectEntityObject(object)
if warnedInstances[object] then
return
end
local entity =
identifyEntity(object.Name)
if entity then
warnedInstances[object] = true
showWarning(entity)
end
end
for _, object in ipairs(
Workspace:GetDescendants()
) do
inspectEntityObject(object)
end
Workspace.DescendantAdded:Connect(
function(object)
task.defer(function()
inspectEntityObject(object)
end)
end
)
Workspace.DescendantRemoving:Connect(
function(object)
warnedInstances[object] = nil
end
)
----------------------------------------------------------------
-- INFINITE JUMP
----------------------------------------------------------------
local jumpButton =
makeButton("Infinite Jump: OFF")
jumpButton.MouseButton1Click:Connect(function()
settings.InfiniteJump =
not settings.InfiniteJump
updateToggleButton(
jumpButton,
"Infinite Jump",
settings.InfiniteJump
)
end)
----------------------------------------------------------------
-- Calculate velocity required to rise ~25 studs.
--
-- v = sqrt(2gh)
--
-- Roblox default gravity is usually 196.2,
-- but using Workspace.Gravity makes it work
-- with custom gravity too.
----------------------------------------------------------------
local function getJumpVelocity()
local height =
settings.JumpHeightStuds
local gravity =
Workspace.Gravity
return math.sqrt(
2
*
gravity
*
height
)
end
UserInputService.JumpRequest:Connect(function()
if not settings.InfiniteJump then
return
end
if
not rootPart
or not humanoid
or humanoid.Health <= 0
then
return
end
local currentVelocity =
rootPart.AssemblyLinearVelocity
rootPart.AssemblyLinearVelocity =
Vector3.new(
currentVelocity.X,
getJumpVelocity(),
currentVelocity.Z
)
humanoid:ChangeState(
Enum.HumanoidStateType.Jumping
)
end)
----------------------------------------------------------------
-- ITEM ESP
----------------------------------------------------------------
local itemESPButton =
makeButton("Item ESP: OFF")
----------------------------------------------------------------
-- ITEM DATABASE
----------------------------------------------------------------
local itemNames = {
"STARLIGHT BOTTLE",
"BATTERY PACK",
"STRAPLIGHT",
"SKELETON KEY",
"LOCKPICK",
"LASER POINTER",
"SHEARS",
"FLASHLIGHT",
"SMOOTHIE",
"MULTITOOL",
"CRUCIFIX",
"VITAMINS",
"PIZZA",
"MINI-SHIELD POTION",
"SHIELD POTION",
"BATTERIES",
"BANDAGES",
"GREEN HERB",
"GLITCH FRAGMENT",
"ELECTRICAL ROOM KEY",
"BOOK",
"HOTEL KEY",
"BREAKER POLE",
"FUSE",
"DONUT",
"GWEEN SODA",
"BREAD",
"CHEESE",
"BANDAGE PACK",
"STARLIGHT VIAL",
"ALARM CLOCK",
"BULKLIGHT",
"CANDLE",
"GLOWSTICK",
"RETRO KEY",
"HOLY HAND GRENADE",
"LIGHTER",
}
----------------------------------------------------------------
-- EXTRA ALIASES / MISSPELLINGS
----------------------------------------------------------------
local extraItemAliases = {
-- LIGHTER
["LITER"] = "LIGHTER",
["LIGTER"] = "LIGHTER",
["LIGHER"] = "LIGHTER",
["LIGHTER"] = "LIGHTER",
["LIGHHTER"] = "LIGHTER",
["LIGTHER"] = "LIGHTER",
["LIGHETR"] = "LIGHTER",
-- SCRATCH/FORMAT VARIANTS
["STARLIGHTBOTTLE"] =
"STARLIGHT BOTTLE",
["BATTERYPACK"] =
"BATTERY PACK",
["SKELETONKEY"] =
"SKELETON KEY",
["LASERPOINTER"] =
"LASER POINTER",
["MINISHIELDPOTION"] =
"MINI-SHIELD POTION",
["SHIELDPOTION"] =
"SHIELD POTION",
["GREENHERB"] =
"GREEN HERB",
["GLITCHFRAGMENT"] =
"GLITCH FRAGMENT",
["ELECTRICALROOMKEY"] =
"ELECTRICAL ROOM KEY",
["HOTELKEY"] =
"HOTEL KEY",
["BREAKERPOLE"] =
"BREAKER POLE",
["BANDAGEPACK"] =
"BANDAGE PACK",
["STARLIGHTVIAL"] =
"STARLIGHT VIAL",
["ALARMCLOCK"] =
"ALARM CLOCK",
["RETROKEY"] =
"RETRO KEY",
["HOLYHANDGRENADE"] =
"HOLY HAND GRENADE",
["GWEENSODA"] =
"GWEEN SODA",
-- common "green soda" variation
["GREENSODA"] =
"GWEEN SODA",
}
----------------------------------------------------------------
-- NORMALIZED ITEM LOOKUP
----------------------------------------------------------------
local itemLookup = {}
for _, itemName in ipairs(itemNames) do
itemLookup[
normalizeName(itemName)
] = itemName
end
for alias, realName in pairs(
extraItemAliases
) do
itemLookup[
normalizeName(alias)
] = realName
end
----------------------------------------------------------------
-- FUZZY ITEM MATCHING
----------------------------------------------------------------
local function identifyItem(name)
local normalized =
normalizeName(name)
local exact =
itemLookup[normalized]
if exact then
return exact
end
-- Use fuzzy spelling matching,
-- but only for sufficiently long names.
if #normalized < 5 then
return nil
end
local bestMatch = nil
local bestDistance = math.huge
for alias, displayName in pairs(
itemLookup
) do
if
math.abs(
#normalized - #alias
)
<= 2
then
local distance =
levenshtein(
normalized,
alias
)
if distance < bestDistance then
bestDistance = distance
bestMatch = displayName
end
end
end
if bestDistance <= 2 then
return bestMatch
end
return nil
end
----------------------------------------------------------------
-- ESP STORAGE
----------------------------------------------------------------
local activeESP = {}
local function getObjectPart(object)
if object:IsA("BasePart") then
return object
end
if object:IsA("Tool") then
return object:FindFirstChildWhichIsA(
"BasePart",
true
)
end
if object:IsA("Model") then
if object.PrimaryPart then
return object.PrimaryPart
end
return object:FindFirstChildWhichIsA(
"BasePart",
true
)
end
return nil
end
----------------------------------------------------------------
-- CREATE ESP
----------------------------------------------------------------
local function createESP(
object,
displayName
)
if activeESP[object] then
return
end
local part =
getObjectPart(object)
if not part then
return
end
------------------------------------------------------------
-- HIGHLIGHT
------------------------------------------------------------
local highlight =
Instance.new("Highlight")
highlight.Name =
"ArchivesItemESP"
highlight.Adornee =
object
highlight.DepthMode =
Enum.HighlightDepthMode.AlwaysOnTop
highlight.FillTransparency = 0.65
highlight.OutlineTransparency = 0
highlight.Parent = gui
------------------------------------------------------------
-- BILLBOARD
------------------------------------------------------------
local billboard =
Instance.new("BillboardGui")
billboard.Name =
"ArchivesItemLabel"
billboard.Adornee = part
billboard.Size =
UDim2.fromOffset(
230,
55
)
billboard.StudsOffset =
Vector3.new(
0,
2.5,
0
)
billboard.AlwaysOnTop = true
billboard.Parent = gui
local label =
Instance.new("TextLabel")
label.Size =
UDim2.fromScale(1, 1)
label.BackgroundColor3 =
Color3.fromRGB(
20,
17,
14
)
label.BackgroundTransparency =
0.2
label.TextColor3 =
Color3.fromRGB(
255,
233,
176
)
label.TextStrokeTransparency =
0.4
label.TextScaled = true
label.Font =
Enum.Font.GothamBold
label.Parent =
billboard
local labelCorner =
Instance.new("UICorner")
labelCorner.CornerRadius =
UDim.new(0, 6)
labelCorner.Parent =
label
activeESP[object] = {
Highlight = highlight,
Billboard = billboard,
Label = label,
Part = part,
DisplayName = displayName,
}
end
----------------------------------------------------------------
-- REMOVE ESP
----------------------------------------------------------------
local function removeESP(object)
local data =
activeESP[object]
if not data then
return
end
if data.Highlight then
data.Highlight:Destroy()
end
if data.Billboard then
data.Billboard:Destroy()
end
activeESP[object] = nil
end
local function clearAllESP()
local objects = {}
for object in pairs(activeESP) do
table.insert(objects, object)
end
for _, object in ipairs(objects) do
removeESP(object)
end
end
----------------------------------------------------------------
-- DETERMINE WHICH INSTANCE COUNTS AS ITEM
----------------------------------------------------------------
local function inspectItem(object)
if activeESP[object] then
return
end
-- Prefer Tools and Models because otherwise every
-- child part of a model could get its own label.
if
not object:IsA("Tool")
and not object:IsA("Model")
and not object:IsA("BasePart")
then
return
end
-- Don't tag pieces nested inside a Tool/Model that is
-- already recognized as the actual item.
local parent =
object.Parent
if parent then
if
parent:IsA("Tool")
or parent:IsA("Model")
then
if identifyItem(parent.Name) then
return
end
end
end
local itemName =
identifyItem(object.Name)
if itemName then
createESP(
object,
itemName
)
end
end
----------------------------------------------------------------
-- SCAN ITEMS
----------------------------------------------------------------
local function scanItems()
if not settings.ItemESP then
return
end
for _, object in ipairs(
Workspace:GetDescendants()
) do
inspectItem(object)
end
end
----------------------------------------------------------------
-- UPDATE DISTANCES
----------------------------------------------------------------
local function updateESPDistances()
if not rootPart then
return
end
local removeList = {}
for object, data in pairs(
activeESP
) do
if
not object.Parent
or not data.Part
or not data.Part.Parent
then
table.insert(
removeList,
object
)
else
local distance =
(
rootPart.Position
-
data.Part.Position
).Magnitude
data.Label.Text =
data.DisplayName
.. "\n"
.. tostring(
math.floor(
distance + 0.5
)
)
.. " studs"
end
end
for _, object in ipairs(removeList) do
removeESP(object)
end
end
----------------------------------------------------------------
-- ESP BUTTON
----------------------------------------------------------------
itemESPButton.MouseButton1Click:Connect(function()
settings.ItemESP =
not settings.ItemESP
updateToggleButton(
itemESPButton,
"Item ESP",
settings.ItemESP
)
if settings.ItemESP then
scanItems()
updateESPDistances()
else
clearAllESP()
end
end)
----------------------------------------------------------------
-- WATCH FOR NEW ITEMS
----------------------------------------------------------------
Workspace.DescendantAdded:Connect(function(object)
if not settings.ItemESP then
return
end
task.defer(function()
inspectItem(object)
end)
end)
Workspace.DescendantRemoving:Connect(
function(object)
if activeESP[object] then
removeESP(object)
end
end
)
----------------------------------------------------------------
-- UPDATE ESP EVERY 2 SECONDS
----------------------------------------------------------------
task.spawn(function()
while gui.Parent do
if settings.ItemESP then
scanItems()
updateESPDistances()
end
task.wait(
settings.ESPUpdateRate
)
end
end)
----------------------------------------------------------------
-- KEEP SPEED APPLIED
----------------------------------------------------------------
task.spawn(function()
while gui.Parent do
if
humanoid
and humanoid.Parent
and humanoid.WalkSpeed
~= settings.WalkSpeed
then
humanoid.WalkSpeed =
settings.WalkSpeed
end
task.wait(0.5)
end
end)
----------------------------------------------------------------
-- INITIAL SLIDER LOCATION
----------------------------------------------------------------
task.defer(function()
setSpeedFromX(
sliderBar.AbsolutePosition.X
)
end)
----------------------------------------------------------------
-- OPTIONAL GUI DRAGGING
----------------------------------------------------------------
local draggingWindow = false
local dragStart
local startPosition
title.InputBegan:Connect(function(input)
if
input.UserInputType
== Enum.UserInputType.MouseButton1
then
draggingWindow = true
dragStart = input.Position
startPosition = frame.Position
end
end)
UserInputService.InputChanged:Connect(function(input)
if not draggingWindow then
return
end
if
input.UserInputType
~= Enum.UserInputType.MouseMovement
then
return
end
local delta =
input.Position - dragStart
frame.Position =
UDim2.new(
startPosition.X.Scale,
startPosition.X.Offset
+ delta.X,
startPosition.Y.Scale,
startPosition.Y.Offset
+ delta.Y
)
end)
UserInputService.InputEnded:Connect(function(input)
if
input.UserInputType
== Enum.UserInputType.MouseButton1
then
draggingWindow = false
end
end)
print(
"[Doors Archives Hub] Loaded successfully."
)



absolute bull*, makes your game lag heavily + shows fake items + shows fake en*ies coming dont use this script its an absolute bull*
@varden457 i told u this is a AI code.
Fr bro 😭. This is AI script.
@NPC_PlayersNoob_Alt dude read. i told u this is a AI code.