
Keyless

-- ===================================================
-- Roblox Delta Script - Optimized ESP with Reset System
-- ================================================
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local workspace = game:GetService("Workspace")
local playerEspEnabled = true
local itemEspEnabled = true
local autoClick = false
-- ---------------------------------------------------
-- 1. ฟังก์ชันส่งสัญญาณกด ProximityPrompt
-- ---------------------------------------------------
local function isRobuxPrompt(prompt)
if prompt:FindFirstChild("RequiresPurchase") or prompt:FindFirstChild("RobuxCost") or prompt:FindFirstChild("GamepassId") then
return true
end
local actionText = prompt.ActionText:lower()
local objectText = prompt.ObjectText:lower()
local promptName = prompt.Name:lower()
local strictRobuxKeywords = {"robux", "r$", "gamepass", "pass"}
for _, kw in ipairs(strictRobuxKeywords) do
if actionText:find(kw) or objectText:find(kw) or promptName:find(kw) then
return true
end
end
return false
end
local function triggerAction()
local char = LocalPlayer.Character
if not (char and char:FindFirstChild("HumanoidRootPart")) then return end
local hrpPos = char.HumanoidRootPart.Position
for _, v in ipairs(workspace:GetDescendants()) do
if v:IsA("ProximityPrompt") and v.Enabled then
if not isRobuxPrompt(v) then
local parentPart = v.Parent
if parentPart and parentPart:IsA("BasePart") then
local dist = (parentPart.Position - hrpPos).Magnitude
if dist <= (v.MaxActivationDistance + 5) then
task.spawn(function()
pcall(function()
v.HoldDuration = 0
fireproximityprompt(v)
end)
end)
end
end
end
end
end
end
-- ---------------------------------------------------
-- 2. ระบบ ITEM ESP & SIDEBAR LIST (พร้อมระบบ Reset)
-- ---------------------------------------------------
local playerGui = LocalPlayer:WaitForChild("PlayerGui")
local listScreenGui = Instance.new("ScreenGui")
listScreenGui.Name = "ItemListUI"
listScreenGui.IgnoreGuiInset = true
listScreenGui.Parent = playerGui
local listFrame = Instance.new("Frame")
listFrame.Size = UDim2.new(0, 200, 0, 0)
listFrame.Position = UDim2.new(1, -210, 0, 20)
listFrame.BackgroundTransparency = 1
listFrame.Parent = listScreenGui
local layout = Instance.new("UIListLayout")
layout.Padding = UDim.new(0, 2)
layout.SortOrder = Enum.SortOrder.Name
layout.Parent = listFrame
layout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
listFrame.Size = UDim2.new(0, 200, 0, layout.AbsoluteContentSize.Y)
end)
local function addToSidebar(obj)
local label = Instance.new("TextLabel")
label.Name = obj.Name .. obj:GetDebugId()
label.Size = UDim2.new(1, 0, 0, 22)
label.BackgroundTransparency = 0.6
label.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
label.TextColor3 = Color3.new(1, 1, 1)
label.Text = " " .. obj.Name
label.Font = Enum.Font.GothamMedium
label.TextSize = 14
label.TextXAlignment = Enum.TextXAlignment.Left
label.Parent = listFrame
obj.AncestryChanged:Connect(function()
if not obj:IsDescendantOf(workspace) then
label:Destroy()
end
end)
return label
end
local function createItemEsp(obj)
if not (obj:IsA("Model") or obj:IsA("BasePart")) then return end
if not (obj.Parent and obj.Parent:IsA("Folder")) then return end
if obj:FindFirstChild("ESP_Group") then return end
local adornPart = obj:IsA("Model") and (obj.PrimaryPart or obj:FindFirstChildWhichIsA("BasePart")) or obj
if not adornPart then return end
local hl = Instance.new("Highlight")
hl.Name = "ESP_Group"
hl.FillTransparency = 1
hl.OutlineColor = Color3.new(1, 1, 1)
hl.Adornee = obj
hl.Parent = obj
local bgui = Instance.new("BillboardGui")
bgui.Name = "NameTag"
bgui.Adornee = adornPart
bgui.Size = UDim2.new(0, 200, 0, 50)
bgui.StudsOffset = Vector3.new(0, 2, 0)
bgui.AlwaysOnTop = true
bgui.Parent = obj
local tl = Instance.new("TextLabel")
tl.BackgroundTransparency = 1
tl.Size = UDim2.new(1, 0, 1, 0)
tl.Text = obj.Name
tl.TextColor3 = Color3.new(1, 1, 1)
tl.TextStrokeTransparency = 0.5
tl.TextScaled = true
tl.Font = Enum.Font.GothamBold
tl.Parent = bgui
local sidebarLabel = addToSidebar(obj)
task.spawn(function()
while obj and obj.Parent do
hl.Enabled = itemEspEnabled
bgui.Enabled = itemEspEnabled
if sidebarLabel then sidebarLabel.Visible = itemEspEnabled end
task.wait(0.5)
end
end)
end
local function scanItems()
local items = workspace:FindFirstChild("Items")
if items then
for _, folder in ipairs(items:GetChildren()) do
if folder:IsA("Folder") then
for _, child in ipairs(folder:GetChildren()) do
createItemEsp(child)
end
folder.ChildAdded:Connect(createItemEsp)
end
end
end
end
-- ฟังก์ชันรีเซ็ต Item List & ESP
local function resetItemESP()
for _, child in ipairs(listFrame:GetChildren()) do
if child:IsA("TextLabel") then
child:Destroy()
end
end
for _, v in ipairs(workspace:GetDescendants()) do
if v.Name == "ESP_Group" or v.Name == "NameTag" then
v:Destroy()
end
end
scanItems()
end
task.spawn(function()
local items = workspace:WaitForChild("Items", 10)
if items then
scanItems()
items.ChildAdded:Connect(function(folder)
if folder:IsA("Folder") then
for _, child in ipairs(folder:GetChildren()) do
createItemEsp(child)
end
folder.ChildAdded:Connect(createItemEsp)
end
end)
end
end)
-- ---------------------------------------------------
-- 3. ระบบ PLAYER ESP (พร้อมระบบ Reset)
-- ---------------------------------------------------
local weaponKeywords = {
"smg", "smg9", "gun", "pistol", "rifle", "shotgun", "revolver",
"ar", "ak", "m4", "mp5", "glock", "sniper", "weapon", "ปืน", "อาวุธ",
"tec", "tec9", "tec-9", "mac10", "uzi", "deagle", "beretta", "colt"
}
local function isWeaponName(name)
if not name then return false end
local lName = name:lower()
for _, kw in ipairs(weaponKeywords) do
if lName:find(kw) then return true end
end
return false
end
local function applyPlayerESP(player)
if player == LocalPlayer then return end
local function setupCharacter(char)
if not char then return end
local head = char:WaitForChild("Head", 5)
if not head then return end
local highlight = char:FindFirstChild("ThaiESP_Highlight") or Instance.new("Highlight")
highlight.Name = "ThaiESP_Highlight"
highlight.Parent = char
local billboard = head:FindFirstChild("ThaiESP_Billboard") or Instance.new("BillboardGui")
billboard.Name = "ThaiESP_Billboard"
billboard.Size = UDim2.new(0, 180, 0, 60)
billboard.StudsOffset = Vector3.new(0, 3.5, 0)
billboard.AlwaysOnTop = true
billboard.Parent = head
local textLabel = billboard:FindFirstChildOfClass("TextLabel") or Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0)
textLabel.BackgroundTransparency = 1
textLabel.TextScaled = true
textLabel.Font = Enum.Font.SourceSansBold
textLabel.TextStrokeTransparency = 0
textLabel.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
textLabel.Parent = billboard
task.spawn(function()
while char and char.Parent and player and player.Parent do
if not playerEspEnabled then
highlight.Enabled = false
billboard.Enabled = false
else
highlight.Enabled = true
billboard.Enabled = true
local isBad = false
local roleText = "[คนปกติ]"
local heldItem = "ไม่มีไอเทม"
local tool = char:FindFirstChildOfClass("Tool")
if tool then
heldItem = tool.Name
if isWeaponName(tool.Name) or tool:FindFirstChild("Ammo") or tool:FindFirstChild("GunScript") then
isBad = true
end
end
if player:FindFirstChild("Backpack") then
for _, item in pairs(player.Backpack:GetChildren()) do
if item:IsA("Tool") and (isWeaponName(item.Name) or item:FindFirstChild("Ammo") or item:FindFirstChild("GunScript")) then
isBad = true
if not tool then
heldItem = "พก: " .. item.Name
end
end
end
end
if player:FindFirstChild("Role") then
local roleVal = tostring(player.Role.Value):lower()
if roleVal ~= "" and not roleVal:find("innocent") and not roleVal:find("citizen") and not roleVal:find("คนดี") then
isBad = true
end
end
if char:FindFirstChild("IsKiller") or char:FindFirstChild("HasWeapon") or char:FindFirstChild("Armed") or char:FindFirstChild("Criminal") then
isBad = true
end
if isBad then
roleText = "[คนร้าย:]"
highlight.FillColor = Color3.fromRGB(255, 0, 0)
textLabel.TextColor3 = Color3.fromRGB(255, 0, 0)
else
roleText = "[คนปกติ]"
highlight.FillColor = Color3.fromRGB(0, 255, 0)
textLabel.TextColor3 = Color3.fromRGB(0, 255, 0)
end
highlight.OutlineColor = Color3.fromRGB(255, 255, 255)
highlight.FillTransparency = 0.4
textLabel.Text = roleText .. "\n[กำลังถือ: " .. heldItem .. "]"
end
task.wait(0.3)
end
end)
end
if player.Character then setupCharacter(player.Character) end
player.CharacterAdded:Connect(setupCharacter)
end
-- ฟังก์ชันรีเซ็ต Player ESP
local function resetPlayerESP()
for _, p in pairs(Players:GetPlayers()) do
if p.Character then
local hl = p.Character:FindFirstChild("ThaiESP_Highlight")
if hl then hl:Destroy() end
local head = p.Character:FindFirstChild("Head")
if head then
local bb = head:FindFirstChild("ThaiESP_Billboard")
if bb then bb:Destroy() end
end
applyPlayerESP(p)
end
end
end
for _, p in pairs(Players:GetPlayers()) do applyPlayerESP(p) end
Players.PlayerAdded:Connect(applyPlayerESP)
-- ---------------------------------------------------
-- 4. เมนูควบคุม MOBILE UI (เพิ่มปุ่ม Reset)
-- ---------------------------------------------------
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "MobileUI_Combined"
ScreenGui.ResetOnSpawn = false
ScreenGui.Parent = playerGui
local MainFrame = Instance.new("Frame")
MainFrame.Size = UDim2.new(0, 220, 0, 270) -- ขยายขนาดเมนูเพื่อรองรับปุ่มใหม่
MainFrame.Position = UDim2.new(0.05, 0, 0.2, 0)
MainFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
MainFrame.BorderSizePixel = 2
MainFrame.BorderColor3 = Color3.fromRGB(255, 0, 0)
MainFrame.Active = true
MainFrame.Draggable = true
MainFrame.Parent = ScreenGui
local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(1, 0, 0, 30)
Title.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
Title.Text = "เมนูควบคุม (Combined ESP)"
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.TextSize = 13
Title.Font = Enum.Font.SourceSansBold
Title.Parent = MainFrame
local function createButton(text, posY, color)
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(0.9, 0, 0, 35)
btn.Position = UDim2.new(0.05, 0, 0, posY)
btn.BackgroundColor3 = color
btn.Text = text
btn.TextColor3 = Color3.fromRGB(255, 255, 255)
btn.TextSize = 12
btn.Font = Enum.Font.SourceSansBold
btn.Parent = MainFrame
return btn
end
-- ปุ่ม Toggle ต่างๆ
local AutoBtn = createButton("กดรัวอัตโนมัติ: ปิด", 40, Color3.fromRGB(180, 40, 40))
local TogglePlayerBtn = createButton("มองคน (ESP คน): เปิดอยู่", 80, Color3.fromRGB(40, 180, 40))
local ToggleItemBtn = createButton("มองไอเทม (ESP/List): เปิดอยู่", 120, Color3.fromRGB(40, 180, 40))
-- ปุ่ม Reset เพิ่มเติม
local ResetPlayerBtn = createButton("🔄 รีเซ็ต (ESP คน)", 165, Color3.fromRGB(70, 130, 180))
local ResetItemBtn = createButton("🔄 รีเซ็ต (ESP List / ไอเทม)", 210, Color3.fromRGB(70, 130, 180))
-- Event Click
AutoBtn.MouseButton1Click:Connect(function()
autoClick = not autoClick
if autoClick then
AutoBtn.BackgroundColor3 = Color3.fromRGB(40, 180, 40)
AutoBtn.Text = "กดรัวอัตโนมัติ: เปิด"
task.spawn(function()
while autoClick do
triggerAction()
task.wait(0.1)
end
end)
else
AutoBtn.BackgroundColor3 = Color3.fromRGB(180, 40, 40)
AutoBtn.Text = "กดรัวอัตโนมัติ: ปิด"
end
end)
TogglePlayerBtn.MouseButton1Click:Connect(function()
playerEspEnabled = not playerEspEnabled
TogglePlayerBtn.BackgroundColor3 = playerEspEnabled and Color3.fromRGB(40, 180, 40) or Color3.fromRGB(180, 40, 40)
TogglePlayerBtn.Text = playerEspEnabled and "มองคน (ESP คน): เปิดอยู่" or "มองคน (ESP คน): ปิดอยู่"
end)
ToggleItemBtn.MouseButton1Click:Connect(function()
itemEspEnabled = not itemEspEnabled
ToggleItemBtn.BackgroundColor3 = itemEspEnabled and Color3.fromRGB(40, 180, 40) or Color3.fromRGB(180, 40, 40)
ToggleItemBtn.Text = itemEspEnabled and "มองไอเทม (ESP/List): เปิดอยู่" or "มองไอเทม (ESP/List): ปิดอยู่"
end)
ResetPlayerBtn.MouseButton1Click:Connect(function()
resetPlayerESP()
end)
ResetItemBtn.MouseButton1Click:Connect(function()
resetItemESP()
end)No comments yet for this script.