
KeylessUniversal

--// Services
local Workspace = game:GetService("Workspace")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TextChatService = game:GetService("TextChatService")
--// Chat Compatibility
local oldChat = TextChatService.ChatVersion ~= Enum.ChatVersion.TextChatService
local function Chat(msg)
if not oldChat then
TextChatService.TextChannels.RBXGeneral:SendAsync(msg)
else
ReplicatedStorage.DefaultChatSystemChatEvents.SayMessageRequest:FireServer(msg, "All")
end
end
--// State
local adornments = {}
local nameTags = {}
local primaryParts = {}
local isKilled = false
local espEnabled = true
local playersESPEnabled = true
local guiVisible = true
--// Folder colors
local folderColors = {
Monsters = Color3.fromRGB(255, 0, 0),
Generators = Color3.fromRGB(255, 255, 0),
Items = Color3.fromRGB(0, 170, 255),
InGamePlayers = Color3.fromRGB(0, 255, 0)
}
--// GUI Setup
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
-- ESP GUI
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "ESPGui"
screenGui.ResetOnSpawn = false
screenGui.IgnoreGuiInset = true
screenGui.Parent = playerGui
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 200, 0, 250)
frame.Position = UDim2.new(0.5, -100, 0.2, 0)
frame.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
frame.BorderSizePixel = 0
frame.Active = true
frame.Draggable = true
frame.Parent = screenGui
local toggleButton = Instance.new("TextButton")
toggleButton.Size = UDim2.new(1, -10, 0, 40)
toggleButton.Position = UDim2.new(0, 5, 0, 10)
toggleButton.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
toggleButton.TextColor3 = Color3.new(1, 1, 1)
toggleButton.Font = Enum.Font.SourceSansBold
toggleButton.TextScaled = true
toggleButton.Text = "ESP: ON"
toggleButton.Parent = frame
toggleButton.MouseButton1Click:Connect(function()
espEnabled = not espEnabled
toggleButton.Text = "ESP: " .. (espEnabled and "ON" or "OFF")
toggleButton.BackgroundColor3 = espEnabled and Color3.fromRGB(50, 50, 50) or Color3.fromRGB(100, 0, 0)
if not espEnabled then clearAll() end
end)
local playerButton = Instance.new("TextButton")
playerButton.Size = UDim2.new(1, -10, 0, 40)
playerButton.Position = UDim2.new(0, 5, 0, 60)
playerButton.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
playerButton.TextColor3 = Color3.new(1, 1, 1)
playerButton.Font = Enum.Font.SourceSansBold
playerButton.TextScaled = true
playerButton.Text = "Players: ON"
playerButton.Parent = frame
playerButton.MouseButton1Click:Connect(function()
playersESPEnabled = not playersESPEnabled
playerButton.Text = "Players: " .. (playersESPEnabled and "ON" or "OFF")
playerButton.BackgroundColor3 = playersESPEnabled and Color3.fromRGB(50, 50, 50) or Color3.fromRGB(100, 0, 0)
end)
local monsterButton = Instance.new("TextButton")
monsterButton.Size = UDim2.new(1, -10, 0, 40)
monsterButton.Position = UDim2.new(0, 5, 0, 110)
monsterButton.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
monsterButton.TextColor3 = Color3.new(1, 1, 1)
monsterButton.Font = Enum.Font.SourceSansBold
monsterButton.TextScaled = true
monsterButton.Text = "Say Monsters"
monsterButton.Parent = frame
monsterButton.MouseButton1Click:Connect(function()
local room = Workspace:FindFirstChild("CurrentRoom")
local model = room and room:FindFirstChildWhichIsA("Model")
local folder = model and model:FindFirstChild("Monsters")
local names = {}
if folder then
for _, obj in ipairs(folder:GetChildren()) do
local name = obj.Name:gsub("[Mm]onster", ""):gsub("_", " "):gsub("%s+", " "):gsub("^%s*(.-)%s*$", "%1")
table.insert(names, name)
end
end
Chat(#names > 0 and "Monsters: " .. table.concat(names, ", ") or "Monsters: None found")
end)
local healthButton = Instance.new("TextButton")
healthButton.Size = UDim2.new(1, -10, 0, 40)
healthButton.Position = UDim2.new(0, 5, 0, 160)
healthButton.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
healthButton.TextColor3 = Color3.new(1, 1, 1)
healthButton.Font = Enum.Font.SourceSansBold
healthButton.TextScaled = true
healthButton.Text = "Say Health Items"
healthButton.Parent = frame
healthButton.MouseButton1Click:Connect(function()
local room = Workspace:FindFirstChild("CurrentRoom")
local model = room and room:FindFirstChildWhichIsA("Model")
local folder = model and model:FindFirstChild("Items")
local names = {}
if folder then
for _, obj in ipairs(folder:GetChildren()) do
local lower = obj.Name:lower()
if lower:find("bandage") or lower:find("healthkit") then
table.insert(names, obj.Name)
end
end
end
Chat(#names > 0 and "Items: " .. table.concat(names, ", ") or "Items: No Health Items")
end)
-- GUI visibility toggle (RightShift)
UserInputService.InputBegan:Connect(function(input, processed)
if processed then return end
if input.KeyCode == Enum.KeyCode.RightShift then
guiVisible = not guiVisible
screenGui.Enabled = guiVisible
if listGui then listGui.Enabled = guiVisible end
end
end)
-- Kill switch
local listGui -- define early
UserInputService.InputBegan:Connect(function(input, processed)
if processed then return end
if input.KeyCode == Enum.KeyCode.L then
isKilled = true
clearAll()
if screenGui then screenGui:Destroy() end
if listGui then listGui:Destroy() end
end
end)
-- ESP logic
function setupESP(obj, color)
if adornments[obj] then return end
local part = obj:IsA("Model") and obj.PrimaryPart or obj
if obj:IsA("Model") and not part then
obj.PrimaryPart = obj:FindFirstChild("HumanoidRootPart") or obj:FindFirstChildWhichIsA("BasePart")
part = obj.PrimaryPart
end
if not part then return end
primaryParts[obj] = part
local box = Instance.new("BoxHandleAdornment")
box.Adornee = part
box.AlwaysOnTop = true
box.ZIndex = 0
box.Color3 = color
box.Transparency = 0.3
box.Size = obj:IsA("Model") and obj:GetExtentsSize() or obj.Size
box.Parent = part
adornments[obj] = box
local billboard = Instance.new("BillboardGui")
billboard.Adornee = part
billboard.Size = UDim2.new(0, 100, 0, 20)
billboard.StudsOffset = Vector3.new(0, 3, 0)
billboard.AlwaysOnTop = true
billboard.Parent = part
local text = Instance.new("TextLabel")
text.BackgroundTransparency = 1
text.Size = UDim2.new(1, 0, 1, 0)
text.Text = obj.Name
text.TextColor3 = Color3.new(1, 1, 1)
text.TextStrokeTransparency = 0
text.TextScaled = true
text.Font = Enum.Font.SourceSansBold
text.Parent = billboard
nameTags[obj] = billboard
end
function clearAll()
for _, a in pairs(adornments) do if a then a:Destroy() end end
for _, b in pairs(nameTags) do if b then b:Destroy() end end
adornments, nameTags, primaryParts = {}, {}, {}
end
-- Create List GUI
listGui = Instance.new("ScreenGui")
listGui.Name = "ESPListGui"
listGui.ResetOnSpawn = false
listGui.IgnoreGuiInset = true
listGui.Parent = playerGui
local listFrame = Instance.new("Frame")
listFrame.Size = UDim2.new(0, 300, 0, 300)
listFrame.Position = UDim2.new(0, 30, 0.2, 0)
listFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
listFrame.BorderSizePixel = 0
listFrame.Active = true
listFrame.Draggable = true
listFrame.Parent = listGui
local dragHandle = Instance.new("TextButton")
dragHandle.Size = UDim2.new(1, 0, 0, 25)
dragHandle.Position = UDim2.new(0, 0, 0, 0)
dragHandle.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
dragHandle.Text = "Monster & Item List"
dragHandle.TextColor3 = Color3.new(1, 1, 1)
dragHandle.Font = Enum.Font.SourceSansBold
dragHandle.TextSize = 18
dragHandle.AutoButtonColor = false
dragHandle.Parent = listFrame
local monsterList = Instance.new("TextLabel")
monsterList.Size = UDim2.new(0.5, 0, 1, -25)
monsterList.Position = UDim2.new(0, 0, 0, 25)
monsterList.BackgroundColor3 = Color3.fromRGB(40, 0, 0)
monsterList.TextColor3 = Color3.new(1, 1, 1)
monsterList.TextXAlignment = Enum.TextXAlignment.Left
monsterList.TextYAlignment = Enum.TextYAlignment.Top
monsterList.TextWrapped = true
monsterList.TextScaled = false
monsterList.Font = Enum.Font.Code
monsterList.Text = "Monsters:"
monsterList.Parent = listFrame
local itemList = Instance.new("TextLabel")
itemList.Size = UDim2.new(0.5, 0, 1, -25)
itemList.Position = UDim2.new(0.5, 0, 0, 25)
itemList.BackgroundColor3 = Color3.fromRGB(0, 0, 40)
itemList.TextColor3 = Color3.new(1, 1, 1)
itemList.TextXAlignment = Enum.TextXAlignment.Left
itemList.TextYAlignment = Enum.TextYAlignment.Top
itemList.TextWrapped = true
itemList.TextScaled = false
itemList.Font = Enum.Font.Code
itemList.Text = "Items:"
itemList.Parent = listFrame
-- Real-time update loop
RunService.RenderStepped:Connect(function()
if isKilled or not espEnabled then return end
local currentRoom = Workspace:FindFirstChild("CurrentRoom")
local activeRoom = currentRoom and currentRoom:FindFirstChildWhichIsA("Model")
local seen = {}
local monsters, items = {}, {}
for folderName, color in pairs(folderColors) do
local folder = (folderName == "InGamePlayers" and playersESPEnabled) and Workspace:FindFirstChild("InGamePlayers") or activeRoom and activeRoom:FindFirstChild(folderName)
if folder then
for _, obj in ipairs(folder:GetChildren()) do
if obj:IsA("Model") or obj:IsA("BasePart") then
setupESP(obj, color)
seen[obj] = true
if folderName == "Monsters" then table.insert(monsters, obj.Name) end
if folderName == "Items" then table.insert(items, obj.Name) end
end
end
end
end
-- Cleanup old ESPs
for obj in pairs(adornments) do
if not seen[obj] or not obj:IsDescendantOf(Workspace) then
if adornments[obj] then adornments[obj]:Destroy() end
if nameTags[obj] then nameTags[obj]:Destroy() end
adornments[obj] = nil
nameTags[obj] = nil
primaryParts[obj] = nil
end
end
-- Update text lists
monsterList.Text = "Monsters:\n" .. table.concat(monsters, "\n")
itemList.Text = "Items:\n" .. table.concat(items, "\n")
end)No comments yet for this script.

![[KEYLESS] Moondiety Script | 17+ supported Games](https://scriptblox.com/images/sb/0-1753093706828.png)

