Proximityprompt Localize
Key RequiredUniversal

Proximityprompt Localize

Universal ScriptMiniMonkeyGoodMiniMonkeyGood 1.2K views 506 executesUpdated Jul 5, 2026
Unrated
00
Lua Script•633 lines (21243 chars)
-- SERVIÇOS DO ROBLOX
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
local workspace = game:GetService("Workspace")

local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")

-- ESTADOS GLOBAIS DO SISTEMA
local systemActive = true
local highlightsEnabled = true
local espEnabled = true
local ignoreCustomStyle = false
local instantInteraction = true
local infiniteDistance = false
local smartTeleporting = false
local isAuraCoolingDown = false
local isEnableCoolingDown = false

local trackedPrompts = {}
local scriptConnections = {}

-- CONFIGURAÇÕES DA INTERFACE PRINCIPAL
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "InteractionRadarSupremoV8"
screenGui.IgnoreGuiInset = true
screenGui.ResetOnSpawn = false
screenGui.Parent = playerGui

local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 390, 0, 670)
mainFrame.Position = UDim2.new(0, 40, 0, 40)
mainFrame.BackgroundColor3 = Color3.fromRGB(15, 15, 22)
mainFrame.BorderSizePixel = 0
mainFrame.Parent = screenGui

Instance.new("UICorner", mainFrame).CornerRadius = UDim.new(0, 12)
local mainStroke = Instance.new("UIStroke", mainFrame)
mainStroke.Color = Color3.fromRGB(60, 60, 80)
mainStroke.Thickness = 2

-- BARRA DE ARRASTAR (DRAG BAR)
local dragBar = Instance.new("TextLabel")
dragBar.Size = UDim2.new(1, -45, 0, 40)
dragBar.BackgroundColor3 = Color3.fromRGB(22, 22, 32)
dragBar.Text = "  RADAR DE INTERAÇÃO ULTRA V8"
dragBar.TextColor3 = Color3.fromRGB(222, 255, 154)
dragBar.TextXAlignment = Enum.TextXAlignment.Left
dragBar.Font = Enum.Font.GothamBold
dragBar.TextSize = 12
dragBar.Parent = mainFrame
Instance.new("UICorner", dragBar).CornerRadius = UDim.new(0, 12)

-- BOTÃO FECHAR (X)
local closeBtn = Instance.new("TextButton")
closeBtn.Size = UDim2.new(0, 32, 0, 32)
closeBtn.Position = UDim2.new(1, -38, 0, 4)
closeBtn.BackgroundColor3 = Color3.fromRGB(230, 50, 50)
closeBtn.Text = "X"
closeBtn.TextColor3 = Color3.new(1, 1, 1)
closeBtn.Font = Enum.Font.GothamBlack
closeBtn.TextSize = 14
closeBtn.Parent = mainFrame
Instance.new("UICorner", closeBtn).CornerRadius = UDim.new(0, 8)

-- PAINEL DE CONTROLE
local controlPanel = Instance.new("Frame")
controlPanel.Size = UDim2.new(1, -20, 0, 190)
controlPanel.Position = UDim2.new(0, 10, 0, 48)
controlPanel.BackgroundTransparency = 1
controlPanel.Parent = mainFrame

local hlToggle = Instance.new("TextButton")
hlToggle.Size = UDim2.new(0, 170, 0, 32)
hlToggle.BackgroundColor3 = Color3.fromRGB(40, 180, 100)
hlToggle.Text = "HIGHLIGHTS: LIGADO"
hlToggle.Font = Enum.Font.GothamBold
hlToggle.TextSize = 11
hlToggle.TextColor3 = Color3.new(1, 1, 1)
hlToggle.Parent = controlPanel
Instance.new("UICorner", hlToggle).CornerRadius = UDim.new(0, 6)

local espToggle = Instance.new("TextButton")
espToggle.Size = UDim2.new(0, 170, 0, 32)
espToggle.Position = UDim2.new(1, -170, 0, 0)
espToggle.BackgroundColor3 = Color3.fromRGB(40, 180, 100)
espToggle.Text = "ESP TEXTO: LIGADO"
espToggle.Font = Enum.Font.GothamBold
espToggle.TextSize = 11
espToggle.TextColor3 = Color3.new(1, 1, 1)
espToggle.Parent = controlPanel
Instance.new("UICorner", espToggle).CornerRadius = UDim.new(0, 6)

local customToggle = Instance.new("TextButton")
customToggle.Size = UDim2.new(0, 170, 0, 32)
customToggle.Position = UDim2.new(0, 0, 0, 38)
customToggle.BackgroundColor3 = Color3.fromRGB(40, 180, 100)
customToggle.Text = "CUSTOM: INCLUIR"
customToggle.Font = Enum.Font.GothamBold
customToggle.TextSize = 11
customToggle.TextColor3 = Color3.new(1, 1, 1)
customToggle.Parent = controlPanel
Instance.new("UICorner", customToggle).CornerRadius = UDim.new(0, 6)

local instantToggle = Instance.new("TextButton")
instantToggle.Size = UDim2.new(0, 170, 0, 32)
instantToggle.Position = UDim2.new(1, -170, 0, 38)
instantToggle.BackgroundColor3 = Color3.fromRGB(40, 180, 100)
instantToggle.Text = "INSTANTÂNEO: LIGADO"
instantToggle.Font = Enum.Font.GothamBold
instantToggle.TextSize = 11
instantToggle.TextColor3 = Color3.new(1, 1, 1)
instantToggle.Parent = controlPanel
Instance.new("UICorner", instantToggle).CornerRadius = UDim.new(0, 6)

local auraBtn = Instance.new("TextButton")
auraBtn.Size = UDim2.new(1, 0, 0, 32)
auraBtn.Position = UDim2.new(0, 0, 0, 76)
auraBtn.BackgroundColor3 = Color3.fromRGB(255, 170, 0)
auraBtn.Text = "💥 ATIVAR TUDO EM 45 METROS"
auraBtn.Font = Enum.Font.GothamBlack
auraBtn.TextSize = 11
auraBtn.TextColor3 = Color3.new(1, 1, 1)
auraBtn.Parent = controlPanel
Instance.new("UICorner", auraBtn).CornerRadius = UDim.new(0, 6)

local enableBtn = Instance.new("TextButton")
enableBtn.Size = UDim2.new(1, 0, 0, 32)
enableBtn.Position = UDim2.new(0, 0, 0, 114)
enableBtn.BackgroundColor3 = Color3.fromRGB(0, 170, 255)
enableBtn.Text = "🔓 HABILITAR PROMPTS OCULTOS (50M)"
enableBtn.Font = Enum.Font.GothamBlack
enableBtn.TextSize = 11
enableBtn.TextColor3 = Color3.new(1, 1, 1)
enableBtn.Parent = controlPanel
Instance.new("UICorner", enableBtn).CornerRadius = UDim.new(0, 6)

local dist99999Btn = Instance.new("TextButton")
dist99999Btn.Size = UDim2.new(1, 0, 0, 32)
dist99999Btn.Position = UDim2.new(0, 0, 0, 152)
dist99999Btn.BackgroundColor3 = Color3.fromRGB(140, 80, 250)
dist99999Btn.Text = "🌐 DISTÂNCIA MÁXIMA (99999): DESATIVADO"
dist99999Btn.Font = Enum.Font.GothamBlack
dist99999Btn.TextSize = 11
dist99999Btn.TextColor3 = Color3.new(1, 1, 1)
dist99999Btn.Parent = controlPanel
Instance.new("UICorner", dist99999Btn).CornerRadius = UDim.new(0, 6)

-- LISTA DE ROLAGEM
local scroll = Instance.new("ScrollingFrame")
scroll.Size = UDim2.new(1, -20, 1, -255)
scroll.Position = UDim2.new(0, 10, 0, 245)
scroll.BackgroundTransparency = 1
scroll.ScrollBarThickness = 4
scroll.ScrollBarImageColor3 = Color3.fromRGB(80, 80, 100)
scroll.Parent = mainFrame

local layout = Instance.new("UIListLayout", scroll)
layout.SortOrder = Enum.SortOrder.LayoutOrder
layout.Padding = UDim.new(0, 8)

-- LÓGICA PARA ARRASTAR A GUI
local dragging, dragInput, dragStart, startPos
dragBar.InputBegan:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
		dragging = true
		dragStart = input.Position
		startPos = mainFrame.Position
		input.Changed:Connect(function()
			if input.UserInputState == Enum.UserInputState.End then dragging = false end
		end)
	end
end)
UserInputService.InputChanged:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
		dragInput = input
	end
end)
table.insert(scriptConnections, RunService.RenderStepped:Connect(function()
	if dragging and dragInput then
		local delta = dragInput.Position - dragStart
		mainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
	end
end))

local addPromptToList

-- ALTERNAR CONFIGURAÇÃO DA INTERAÇÃO INSTANTÂNEA
instantToggle.MouseButton1Click:Connect(function()
	instantInteraction = not instantInteraction
	instantToggle.BackgroundColor3 = instantInteraction and Color3.fromRGB(40, 180, 100) or Color3.fromRGB(180, 50, 50)
	instantToggle.Text = instantInteraction and "INSTANTÂNEO: LIGADO" or "INSTANTÂNEO: DESLIGADO"
	
	for prompt, data in pairs(trackedPrompts) do
		if prompt and prompt.Parent then
			prompt.HoldDuration = instantInteraction and 0 or data.OriginalDuration
		end
	end
end)

-- ALTERNAR DISTÂNCIA TOTAL MÁXIMA PARA 99999
dist99999Btn.MouseButton1Click:Connect(function()
	infiniteDistance = not infiniteDistance
	dist99999Btn.BackgroundColor3 = infiniteDistance and Color3.fromRGB(40, 180, 100) or Color3.fromRGB(140, 80, 250)
	dist99999Btn.Text = infiniteDistance and "🌐 DISTÂNCIA MÁXIMA (99999): ATIVADO" or "🌐 DISTÂNCIA MÁXIMA (99999): DESATIVADO"
	
	for prompt, data in pairs(trackedPrompts) do
		if prompt and prompt.Parent then
			prompt.MaxActivationDistance = infiniteDistance and 99999 or 20
		end
	end
end)

-- FORÇAR ATIVAÇÃO (HABILITAR) PROMPTS DESLIGADOS EM 50M
enableBtn.MouseButton1Click:Connect(function()
	if isEnableCoolingDown or not systemActive then return end
	isEnableCoolingDown = true
	enableBtn.BackgroundColor3 = Color3.fromRGB(0, 100, 200)
	enableBtn.Text = "HABILITANDO..."
	
	local char = player.Character
	local root = char and char:FindFirstChild("HumanoidRootPart")
	local habilitados = 0
	
	if root then
		for _, obj in pairs(workspace:GetDescendants()) do
			if obj:IsA("ProximityPrompt") and not obj.Enabled then
				local target = obj.Parent
				if target then
					local pos = target:IsA("Model") and target:GetPivot().Position or (target:IsA("BasePart") and target.Position)
					if pos then
						local dist = (root.Position - pos).Magnitude
						if dist <= 50 then
							obj.Enabled = true
							habilitados = habilitados + 1
							addPromptToList(obj)
						end
					end
				end
			end
		end
	end
	
	task.wait(1)
	enableBtn.BackgroundColor3 = Color3.fromRGB(0, 170, 255)
	enableBtn.Text = string.format("🔓 HABILITADO %d PROMPTS! (50M)", habilitados)
	task.wait(2)
	enableBtn.Text = "🔓 HABILITAR PROMPTS OCULTOS (50M)"
	isEnableCoolingDown = false
end)

-- AURA DE ATIVAÇÃO EM ÁREA (INTERAGIR EM TUDO 45M)
auraBtn.MouseButton1Click:Connect(function()
	if isAuraCoolingDown or not systemActive then return end
	isAuraCoolingDown = true
	auraBtn.BackgroundColor3 = Color3.fromRGB(200, 100, 0)
	auraBtn.Text = "ATIVANDO..."
	
	local char = player.Character
	local root = char and char:FindFirstChild("HumanoidRootPart")
	
	if root then
		for prompt, data in pairs(trackedPrompts) do
			if prompt and prompt.Parent and prompt.Enabled then
				local pos = data.VisualObject:IsA("Model") and data.VisualObject:GetPivot().Position or data.VisualObject.Position
				local dist = (root.Position - pos).Magnitude
				
				if dist <= 45 then
					prompt.MaxActivationDistance = 99999 
					if type(fireproximityprompt) == "function" then
						fireproximityprompt(prompt)
					else
						prompt:InputHoldBegin()
						task.wait(0.05)
						prompt:InputHoldEnd()
					end
					prompt.MaxActivationDistance = infiniteDistance and 99999 or 20
				end
			end
		end
	end
	
	task.wait(1)
	auraBtn.BackgroundColor3 = Color3.fromRGB(255, 170, 0)
	auraBtn.Text = "💥 ATIVAR TUDO EM 45 METROS"
	isAuraCoolingDown = false
end)

-- REMOVER PROMPT ESPECÍFICO DA LISTA
local function removePromptFromList(prompt)
	local data = trackedPrompts[prompt]
	if data then
		if data.HighlightObj then data.HighlightObj:Destroy() end
		if data.EspObj then data.EspObj:Destroy() end
		if data.CleanupConnections then
			for _, c in pairs(data.CleanupConnections) do
				if c.Connected then c:Disconnect() end
			end
		end
		
		local entryName = prompt:GetDebugId() .. "_entry"
		local entry = scroll:FindFirstChild(entryName)
		if entry then entry:Destroy() end
		trackedPrompts[prompt] = nil
	end
end

-- ADAPTAR CÂMERA E APLICAR ROTAÇÃO SUAVE NOS VIEWPORTS
local function setupSmartViewport(vp, sourceObject)
	local cam = Instance.new("Camera")
	cam.FieldOfView = 50
	vp.CurrentCamera = cam
	cam.Parent = vp

	local clone = sourceObject:Clone()
	for _, child in pairs(clone:GetDescendants()) do
		if child:IsA("LuaSourceContainer") or child:IsA("ProximityPrompt") or child:IsA("BillboardGui") then
			child:Destroy()
		end
	end
	clone.Parent = vp

	local cframe, size
	if clone:IsA("Model") then
		local originCFrame, modelSize = clone:GetBoundingBox()
		cframe, size = originCFrame, modelSize
		clone.WorldPivot = originCFrame
		clone:PivotTo(CFrame.new(0, 0, 0))
	else
		cframe, size = clone.CFrame, clone.Size
		clone.CFrame = CFrame.new(0, 0, 0)
	end

	local maxDim = math.max(size.X, size.Y, size.Z)
	local distance = (maxDim / 2) / math.tan(math.rad(cam.FieldOfView / 2))
	cam.CFrame = CFrame.new(Vector3.new(0, maxDim * 0.2, distance * 1.5), Vector3.new(0, 0, 0))

	local currentAngleY = 0
	table.insert(scriptConnections, RunService.RenderStepped:Connect(function(dt)
		if not systemActive or not vp:IsDescendantOf(game) then return end
		currentAngleY = currentAngleY + (dt * 0.8) 
		local rotX = math.sin(tick() * 0.5) * 0.15
		local rotZ = math.cos(tick() * 0.4) * 0.08
		local rotationCFrame = CFrame.Angles(rotX, currentAngleY, rotZ)

		if clone:IsA("Model") then
			clone:PivotTo(rotationCFrame)
		else
			clone.CFrame = rotationCFrame
		end
	end))
end

-- ATUALIZAÇÃO DO TEXTO DO ESP EM TEMPO REAL
table.insert(scriptConnections, RunService.RenderStepped:Connect(function()
	if not systemActive then return end
	local char = player.Character
	local root = char and char:FindFirstChild("HumanoidRootPart")
	
	for prompt, data in pairs(trackedPrompts) do
		if data.EspObj and data.VisualObject and data.EspObj:FindFirstChild("TextLabel") then
			if root and (data.VisualObject:IsA("BasePart") or data.VisualObject:IsA("Model")) then
				local pos = data.VisualObject:IsA("Model") and data.VisualObject:GetPivot().Position or data.VisualObject.Position
				local dist = math.round((root.Position - pos).Magnitude)
				data.EspObj.TextLabel.Text = string.format("[%s]\n%d metros", data.VisualObject.Name, dist)
			end
		end
	end
end))

-- ATUALIZAR STATUS DO HIGHLIGHT
local function updateHighlightState(data)
	if highlightsEnabled and systemActive then
		if not data.HighlightObj or not data.HighlightObj.Parent then
			local hl = Instance.new("Highlight")
			hl.FillColor = Color3.fromRGB(0, 255, 180)
			hl.OutlineColor = Color3.fromRGB(255, 255, 255)
			hl.FillTransparency = 0.4
			hl.Parent = data.VisualObject
			data.HighlightObj = hl
		end
	else
		if data.HighlightObj then
			data.HighlightObj:Destroy()
			data.HighlightObj = nil
		end
	end
end

-- ATUALIZAR STATUS DO ESP
local function updateEspState(data)
	if espEnabled and systemActive then
		if not data.EspObj or not data.EspObj.Parent then
			local bbg = Instance.new("BillboardGui")
			bbg.Size = UDim2.new(0, 150, 0, 40)
			bbg.AlwaysOnTop = true
			bbg.StudsOffset = Vector3.new(0, 3, 0)
			
			local lbl = Instance.new("TextLabel")
			lbl.Size = UDim2.new(1, 0, 1, 0)
			lbl.BackgroundTransparency = 1
			lbl.TextColor3 = Color3.fromRGB(222, 255, 154)
			lbl.Font = Enum.Font.GothamBold
			lbl.TextSize = 11
			lbl.TextStrokeTransparency = 0.2
			lbl.Parent = bbg
			
			bbg.Parent = data.VisualObject
			data.EspObj = bbg
		end
	else
		if data.EspObj then
			data.EspObj:Destroy()
			data.EspObj = nil
		end
	end
end

-- INSERÇÃO DOS ITENS NA LISTA
addPromptToList = function(prompt)
	if not systemActive then return end
	if ignoreCustomStyle and prompt.Style == Enum.ProximityPromptStyle.Custom then return end

	local target = prompt.Parent
	if not target then return end
	
	local visualObject = target
	if target.Parent:IsA("Model") and target.Parent ~= workspace then
		visualObject = target.Parent
	end

	local entryName = prompt:GetDebugId() .. "_entry"
	if scroll:FindFirstChild(entryName) then return end

	local originalDuration = prompt.HoldDuration
	local originalDistance = prompt.MaxActivationDistance
	
	prompt.HoldDuration = instantInteraction and 0 or originalDuration
	prompt.MaxActivationDistance = infiniteDistance and 99999 or 20

	local data = {
		Prompt = prompt,
		VisualObject = visualObject,
		OriginalDuration = originalDuration,
		OriginalDistance = originalDistance,
		HighlightObj = nil,
		EspObj = nil,
		CleanupConnections = {}
	}
	trackedPrompts[prompt] = data

	updateHighlightState(data)
	updateEspState(data)

	local entry = Instance.new("Frame")
	entry.Name = entryName
	entry.Size = UDim2.new(1, 0, 0, 95)
	entry.BackgroundColor3 = Color3.fromRGB(24, 24, 30)
	entry.LayoutOrder = -os.clock()
	entry.Parent = scroll
	Instance.new("UICorner", entry).CornerRadius = UDim.new(0, 8)

	local vp = Instance.new("ViewportFrame")
	vp.Size = UDim2.new(0, 85, 0, 85)
	vp.Position = UDim2.new(0, 5, 0.5, -42.5)
	vp.BackgroundTransparency = 1
	vp.Parent = entry

	setupSmartViewport(vp, visualObject)

	local nameLabel = Instance.new("TextLabel")
	nameLabel.Size = UDim2.new(1, -200, 0, 30)
	nameLabel.Position = UDim2.new(0, 98, 0, 10)
	nameLabel.Text = visualObject.Name:sub(1, 14)
	nameLabel.TextColor3 = Color3.new(1, 1, 1)
	nameLabel.BackgroundTransparency = 1
	nameLabel.Font = Enum.Font.GothamBold
	nameLabel.TextSize = 13
	nameLabel.TextXAlignment = Enum.TextXAlignment.Left
	nameLabel.Parent = entry

	local tpBtn = Instance.new("TextButton")
	tpBtn.Size = UDim2.new(0, 85, 0, 26)
	tpBtn.Position = UDim2.new(1, -95, 0, 16)
	tpBtn.BackgroundColor3 = Color3.fromRGB(50, 130, 255)
	tpBtn.Text = "📍 TELEPORT"
	tpBtn.Font = Enum.Font.GothamBold
	tpBtn.TextSize = 10
	tpBtn.TextColor3 = Color3.new(1, 1, 1)
	tpBtn.Parent = entry
	Instance.new("UICorner", tpBtn).CornerRadius = UDim.new(0, 6)

	tpBtn.MouseButton1Click:Connect(function()
		local root = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
		if root and target then root.CFrame = target.CFrame * CFrame.new(0, 4, 0) end
	end)

	local smartBtn = Instance.new("TextButton")
	smartBtn.Size = UDim2.new(0, 85, 0, 26)
	smartBtn.Position = UDim2.new(1, -95, 0, 48)
	smartBtn.BackgroundColor3 = Color3.fromRGB(160, 60, 240)
	smartBtn.Text = "⚡ SMART TP"
	smartBtn.Font = Enum.Font.GothamBold
	smartBtn.TextSize = 10
	smartBtn.TextColor3 = Color3.new(1, 1, 1)
	smartBtn.Parent = entry
	Instance.new("UICorner", smartBtn).CornerRadius = UDim.new(0, 6)

	-- NOVA LÓGICA DO SMART TP AUTO-INTERATIVO
	smartBtn.MouseButton1Click:Connect(function()
		local root = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
		if not root or smartTeleporting or not prompt.Enabled then return end

		smartTeleporting = true
		local originalCFrame = root.CFrame
		local oldDuration = prompt.HoldDuration
		
		prompt.HoldDuration = 0
		
		-- 1. Vai até o local
		root.CFrame = target.CFrame * CFrame.new(0, 4, 0)
		task.wait(0.08)

		-- 2. Interage Sozinho
		if type(fireproximityprompt) == "function" then
			fireproximityprompt(prompt)
		else
			prompt:InputHoldBegin()
			task.wait(0.02)
			prompt:InputHoldEnd()
		end
		
		task.wait(0.08)

		-- 3. Volta pro lugar original
		if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
			player.Character.HumanoidRootPart.CFrame = originalCFrame
		end

		prompt.HoldDuration = instantInteraction and 0 or oldDuration
		
		task.wait(0.15)
		smartTeleporting = false
	end)

	local d1 = prompt.Destroying:Connect(function() removePromptFromList(prompt) end)
	local d2 = target.Destroying:Connect(function() removePromptFromList(prompt) end)
	table.insert(data.CleanupConnections, d1)
	table.insert(data.CleanupConnections, d2)

	local ancestryConn
	ancestryConn = prompt.AncestryChanged:Connect(function()
		if not prompt:IsDescendantOf(workspace) then
			removePromptFromList(prompt)
			ancestryConn:Disconnect()
		end
	end)
	table.insert(data.CleanupConnections, ancestryConn)
end

-- CLIQUES DOS TOGGLES SUPERIORES E DE SCANNING
hlToggle.MouseButton1Click:Connect(function()
	highlightsEnabled = not highlightsEnabled
	hlToggle.BackgroundColor3 = highlightsEnabled and Color3.fromRGB(40, 180, 100) or Color3.fromRGB(180, 50, 50)
	hlToggle.Text = highlightsEnabled and "HIGHLIGHTS: LIGADO" or "HIGHLIGHTS: DESLIGADO"
	for _, data in pairs(trackedPrompts) do updateHighlightState(data) end
end)

espToggle.MouseButton1Click:Connect(function()
	espEnabled = not espEnabled
	espToggle.BackgroundColor3 = espEnabled and Color3.fromRGB(40, 180, 100) or Color3.fromRGB(180, 50, 50)
	espToggle.Text = espEnabled and "ESP TEXTO: LIGADO" or "ESP TEXTO: DESLIGADO"
	for _, data in pairs(trackedPrompts) do updateEspState(data) end
end)

customToggle.MouseButton1Click:Connect(function()
	ignoreCustomStyle = not ignoreCustomStyle
	if ignoreCustomStyle then
		customToggle.BackgroundColor3 = Color3.fromRGB(180, 50, 50)
		customToggle.Text = "CUSTOM: IGNORAR"
		for prompt, _ in pairs(trackedPrompts) do
			if prompt.Style == Enum.ProximityPromptStyle.Custom then removePromptFromList(prompt) end
		end
	else
		customToggle.BackgroundColor3 = Color3.fromRGB(40, 180, 100)
		customToggle.Text = "CUSTOM: INCLUIR"
		for _, obj in pairs(workspace:GetDescendants()) do
			if obj:IsA("ProximityPrompt") and obj.Style == Enum.ProximityPromptStyle.Custom then
				addPromptToList(obj)
			end
		end
	end
end)

-- VARREDURA INICIAL
local function scan()
	for _, obj in pairs(workspace:GetDescendants()) do
		if obj:IsA("ProximityPrompt") then addPromptToList(obj) end
	end
end

local scanConnection = workspace.DescendantAdded:Connect(function(obj)
	if obj:IsA("ProximityPrompt") then
		task.wait(0.2)
		addPromptToList(obj)
	end
end)

scan()

-- DESTRUIR GUI E RESTAURAR JOGO (BOTÃO X)
closeBtn.MouseButton1Click:Connect(function()
	systemActive = false
	scanConnection:Disconnect()
	
	for _, conn in pairs(scriptConnections) do
		if conn.Connected then conn:Disconnect() end
	end
	
	for prompt, data in pairs(trackedPrompts) do
		if prompt and prompt.Parent then
			prompt.HoldDuration = data.OriginalDuration
			prompt.MaxActivationDistance = data.OriginalDistance
		end
		if data.HighlightObj then data.HighlightObj:Destroy() end
		if data.EspObj then data.EspObj:Destroy() end
	end
	
	trackedPrompts = {}
	screenGui:Destroy()
end)

Features & Information

Allows you to modify all the proximity prompts in the game, the script lets you locate them, teleport to the proximity prompt, and interact with it automatically

Community Comments (2)

MeWhenICheatMeWhenICheatJul 6, 2026

where is the scrpit

MiniMonkeyGoodMiniMonkeyGoodAug 1, 2026

sorry

More Scripts for Universal Scripts