-- ======================================================= -- SCRIPT: ESP FINAL DEFINITIVO + FULLBRIGHT (V1.8) -- ======================================================= local Workspace = game:GetService("Workspace") local Players = game:GetService("Players") local Lighting = game:GetService("Lighting") local LocalPlayer = Players.LocalPlayer -- LISTA DE NPCS COMPLETA E ATUALIZADA COM O PESQUISADOR RARO local listaNPCs = { ["NPC_Common_ExhaustedSurvivor"] = "Sobrevivente Exausto", ["NPC_Rare_Technician"] = "Técnico Raro", ["NPC_Common_InjuredCivilian"] = "Civil Ferido", ["NPC_Common_TrappedResident"] = "Residente Preso", ["NPC_Common_HungrySurvivor"] = "Sobrevivente Faminto", ["Black Market"] = "Mercado Negro", ["PailHand"] = "PailHand", ["NPC_Rare_Locksmith"] = "Chaveiro Raro", ["NPC_Rare_Medic"] = "Médico Raro", ["NPC_Rare_Scout"] = "Escoteiro Raro", ["TorchHand"] = "TorchHand", ["NPC_Common_LostStudent"] = "Estudante Perdido", ["NPC_Common_ScaredWorker"] = "Trabalhador Assustado", -- NOVO NPC ADICIONADO DO SEU PRINT: ["NPC_Rare_Researcher"] = "Pesquisador Raro" } -- FUNÇÃO DO FULLBRIGHT: Força iluminação máxima e remove sombras/névoa local function ativarFullbright() Lighting.Brightness = 2 Lighting.ClockTime = 14 Lighting.FogEnd = 100000 Lighting.GlobalShadows = false Lighting.OutdoorAmbient = Color3.fromRGB(128, 128, 128) end -- Mantém o Fullbright sempre ativo caso o jogo tente resetar o clima/iluminação Lighting:GetPropertyChangedSignal("ClockTime"):Connect(ativarFullbright) Lighting:GetPropertyChangedSignal("Brightness"):Connect(ativarFullbright) Lighting:GetPropertyChangedSignal("FogEnd"):Connect(ativarFullbright) ativarFullbright() -- Limpa execuções antigas da tela para não travar o Vortex local ScreenGuiAntigo = LocalPlayer:WaitForChild("PlayerGui"):FindFirstChild("PremiumHalloweenESP") if ScreenGuiAntigo then ScreenGuiAntigo:Destroy() end local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "PremiumHalloweenESP" ScreenGui.ResetOnSpawn = false ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui") -- FUNÇÃO PARA DESENHAR AS INTERFACES NA TELA (MÉDIA PARA NPC / GRANDE PARA ITEM) local function criarTagCustomizada(root, cor, textoNome, ehNPC, idUnica) if not ScreenGui:FindFirstChild(idUnica) then local billboard = Instance.new("BillboardGui") billboard.Name = idUnica billboard.AlwaysOnTop = true if ehNPC then billboard.Size = UDim2.new(0, 140, 0, 50) billboard.StudsOffset = Vector3.new(0, 3.5, 0) else billboard.Size = UDim2.new(0, 220, 0, 80) billboard.StudsOffset = Vector3.new(0, 4.5, 0) end billboard.Adornee = root billboard.Parent = ScreenGui local frame = Instance.new("Frame") frame.Size = UDim2.new(1, 0, 1, 0) frame.BackgroundTransparency = 1 frame.Parent = billboard -- 1. TÍTULO CATEGORIA (NPC ou ITEM) local labelCategoria = Instance.new("TextLabel") labelCategoria.Name = "LabelCategoria" labelCategoria.Size = ehNPC and UDim2.new(1, 0, 0.4, 0) or UDim2.new(1, 0, 0.45, 0) labelCategoria.BackgroundTransparency = 1 labelCategoria.Text = ehNPC and "👥 NPC" or "📦 ITEM" labelCategoria.TextColor3 = cor labelCategoria.Font = Enum.Font.GothamBlack labelCategoria.TextScaled = true labelCategoria.TextStrokeTransparency = 0 labelCategoria.TextStrokeColor3 = Color3.fromRGB(0, 0, 0) labelCategoria.Parent = frame -- 2. NOME DO ALVO local labelNome = Instance.new("TextLabel") labelNome.Name = "LabelNome" labelNome.Size = ehNPC and UDim2.new(1, 0, 0.35, 0) or UDim2.new(1, 0, 0.3, 0) labelNome.Position = ehNPC and UDim2.new(0, 0, 0.4, 0) or UDim2.new(0, 0, 0.45, 0) labelNome.BackgroundTransparency = 1 labelNome.Text = textoNome labelNome.TextColor3 = Color3.fromRGB(255, 255, 255) labelNome.Font = Enum.Font.GothamBold labelNome.TextScaled = true labelNome.TextStrokeTransparency = 0.2 labelNome.TextStrokeColor3 = Color3.fromRGB(0, 0, 0) labelNome.Parent = frame -- 3. DISTÂNCIA EM STUDS local labelDistancia = Instance.new("TextLabel") labelDistancia.Name = "LabelDistancia" labelDistancia.Size = UDim2.new(1, 0, 0.25, 0) labelDistancia.Position = UDim2.new(0, 0, 0.75, 0) labelDistancia.BackgroundTransparency = 1 labelDistancia.Text = "0 studs" labelDistancia.TextColor3 = Color3.fromRGB(180, 180, 180) labelDistancia.Font = Enum.Font.Gotham labelDistancia.TextScaled = true labelDistancia.TextStrokeTransparency = 0.4 labelDistancia.TextStrokeColor3 = Color3.fromRGB(0, 0, 0) labelDistancia.Parent = frame end end -- FUNÇÃO SEGURO: Checa se o item está acoplado dentro do corpo de algum humanoide local function pertenceAAlguemVivo(objeto) local atual = objeto while atual and atual ~= Workspace do if atual:IsA("Model") and (atual:FindFirstChildOfClass("Humanoid") or listaNPCs[atual.Name]) then return true end atual = atual.Parent end return false end -- LOOP PRINCIPAL DE EXECUÇÃO (0.4 segundos) task.spawn(function() print("💎 Força Bruta V1.8 Ativada! Pesquisador Raro integrado ao ESP.") while task.wait(0.4) do -- 1. MONITORAMENTO EXCLUSIVO DE NPCS for _, modelo in pairs(Workspace:GetDescendants()) do if modelo:IsA("Model") and listaNPCs[modelo.Name] then local hrp = modelo:FindFirstChild("HumanoidRootPart") if hrp then local idNPC = "NPC_" .. modelo.Name local displayNPC = listaNPCs[modelo.Name] criarTagCustomizada(hrp, Color3.fromRGB(0, 255, 127), displayNPC, true, idNPC) -- Atualiza distância do NPC local tag = ScreenGui:FindFirstChild(idNPC) if tag and LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then local dist = math.floor((hrp.Position - LocalPlayer.Character.HumanoidRootPart.Position).Magnitude) local frameHUD = tag:FindFirstChild("Frame") local txtDist = frameHUD and frameHUD:FindFirstChild("LabelDistancia") if txtDist then txtDist.Text = dist .. " studs" end end end end end -- 2. DETECÇÃO DE ITENS SOLTOS NO MAPA GLOBAL for _, objeto in pairs(Workspace:GetDescendants()) do if objeto:IsA("ProximityPrompt") and objeto.Enabled == true then local parteFisica = objeto.Parent if parteFisica and parteFisica:IsA("BasePart") then local nomePrompt = string.lower(objeto.ObjectText or objeto.ActionText or objeto.Name) local nomePai = string.lower(parteFisica.Name) -- Filtro limpo: Remove itens de cenário óbvios e os arbustos específicos solicitados local ehCenarioInvalido = string.find(nomePrompt, "door") or string.find(nomePrompt, "porta") or string.find(nomePrompt, "tree") or string.find(nomePrompt, "arvore") or string.find(nomePai, "door") or string.find(nomePai, "tree") or string.find(nomePai, "hedge_bush_shot") or string.find(nomePai, "hedge_bush_long") if not ehCenarioInvalido and not pertenceAAlguemVivo(parteFisica) then local modeloDono = parteFisica:IsA("Model") and parteFisica or parteFisica.Parent -- Garante o bloqueio mesmo se os nomes dos arbustos estiverem no modelo superior local nomeModeloDono = modeloDono and string.lower(modeloDono.Name) or "" local ehModeloInvalido = string.find(nomeModeloDono, "hedge_bush_shot") or string.find(nomeModeloDono, "hedge_bush_long") if modeloDono and modeloDono.Name ~= "Workspace" and modeloDono.Name ~= "ChaseQuestLive" and not ehModeloInvalido then local idItem = "ITEM_" .. modeloDono.Name local nomeLimpo = modeloDono.Name:gsub("BatteryPack_", "Bateria "):gsub("Quest_", ""):gsub("Spawn", "") criarTagCustomizada(parteFisica, Color3.fromRGB(255, 69, 0), nomeLimpo, false, idItem) -- Atualiza distância do Item local tag = ScreenGui:FindFirstChild(idItem) if tag and LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then local dist = math.floor((parteFisica.Position - LocalPlayer.Character.HumanoidRootPart.Position).Magnitude) local frameHUD = tag:FindFirstChild("Frame") local txtDist = frameHUD and frameHUD:FindFirstChild("LabelDistancia") if txtDist then txtDist.Text = dist .. " studs" end end end end end end end end end)