-- =================================================== -- 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)