Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local Players = game:GetService("Players")
- local RunService = game:GetService("RunService")
- local UserInputService = game:GetService("UserInputService")
- local StarterGui = game:GetService("StarterGui")
- local LocalPlayer = Players.LocalPlayer
- local ESPColorPlayers = Color3.fromRGB(0, 255, 0)
- local ESPColorModels = Color3.fromRGB(255, 0, 0)
- local ESPSelectionBoxes = {}
- local ESPModelsList = {}
- local espEnabled = false
- -- Create toggle button GUI
- local screenGui = Instance.new("ScreenGui")
- screenGui.Name = "ESP_Toggle_GUI"
- screenGui.ResetOnSpawn = false
- screenGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
- local toggleButton = Instance.new("TextButton")
- toggleButton.Size = UDim2.new(0, 120, 0, 40)
- toggleButton.Position = UDim2.new(0, 10, 0, 10)
- toggleButton.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
- toggleButton.TextColor3 = Color3.new(1,1,1)
- toggleButton.Text = "ESP: OFF"
- toggleButton.Font = Enum.Font.SourceSansBold
- toggleButton.TextScaled = true
- toggleButton.Parent = screenGui
- -- Helper: Create SelectionBox on a part with given color
- local function createSelectionBox(part, color)
- local box = Instance.new("SelectionBox")
- box.Adornee = part
- box.Color3 = color
- box.LineThickness = 0.05
- box.SurfaceTransparency = 0.9
- box.Parent = part
- return box
- end
- local function addESPToModel(model, color)
- if ESPSelectionBoxes[model] then return end
- ESPSelectionBoxes[model] = {}
- for _, part in ipairs(model:GetDescendants()) do
- if part:IsA("BasePart") then
- local box = createSelectionBox(part, color)
- ESPSelectionBoxes[model][part] = box
- end
- end
- end
- local function removeESPFromModel(model)
- if not ESPSelectionBoxes[model] then return end
- for _, box in pairs(ESPSelectionBoxes[model]) do
- box:Destroy()
- end
- ESPSelectionBoxes[model] = nil
- end
- local function cleanupESP()
- for model, _ in pairs(ESPSelectionBoxes) do
- if not model.Parent then
- removeESPFromModel(model)
- ESPModelsList[model] = nil
- end
- end
- end
- local function teleportToModel(model)
- local character = LocalPlayer.Character
- if not character then return end
- local hrp = character:FindFirstChild("HumanoidRootPart")
- if not hrp then return end
- local targetPart = model.PrimaryPart or model:FindFirstChildWhichIsA("BasePart")
- if targetPart then
- hrp.CFrame = targetPart.CFrame + Vector3.new(0, 5, 0)
- end
- end
- local function updateESP()
- if not espEnabled then return end
- -- Players
- for _, player in pairs(Players:GetPlayers()) do
- if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
- local model = player.Character
- if not ESPSelectionBoxes[model] then
- addESPToModel(model, ESPColorPlayers)
- ESPModelsList[model] = true
- end
- end
- end
- -- Other models
- for _, obj in pairs(workspace:GetChildren()) do
- if obj:IsA("Model") and not Players:GetPlayerFromCharacter(obj) then
- if not ESPSelectionBoxes[obj] then
- addESPToModel(obj, ESPColorModels)
- ESPModelsList[obj] = true
- end
- end
- end
- end
- -- Toggle ESP on/off with button
- toggleButton.MouseButton1Click:Connect(function()
- espEnabled = not espEnabled
- toggleButton.Text = espEnabled and "ESP: ON" or "ESP: OFF"
- if not espEnabled then
- -- Remove all SelectionBoxes
- for model, _ in pairs(ESPSelectionBoxes) do
- removeESPFromModel(model)
- ESPModelsList[model] = nil
- end
- end
- end)
- -- Detect click to teleport
- local mouse = LocalPlayer:GetMouse()
- mouse.Button1Down:Connect(function()
- if not espEnabled then return end
- local target = mouse.Target
- if not target then return end
- for model, parts in pairs(ESPSelectionBoxes) do
- if parts[target] then
- teleportToModel(model)
- break
- end
- end
- end)
- -- Update loop every 0.5 seconds for performance on mobile
- local timeSinceUpdate = 0
- RunService.RenderStepped:Connect(function(dt)
- timeSinceUpdate = timeSinceUpdate + dt
- if timeSinceUpdate >= 0.5 then
- updateESP()
- cleanupESP()
- timeSinceUpdate = 0
- end
- end)
Advertisement
Add Comment
Please, Sign In to add comment