-- =========================================================
-- ⚙️ CONFIGURAÇÃO GLOBAL E INICIALIZAÇÃO
-- =========================================================
local UserInputService = game:GetService("UserInputService")
local Lighting = game:GetService("Lighting")
local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local LocalPlayer = [Link]
local Camera = [Link]
-- Variáveis de Estado
local isFullbrightEnabled = false
local FullbrightConnection = nil
local isESPEnabled = false
local ESPVisualConnection = nil
local ESPWallCheckThread = nil
local ESPPlayerConnections = {}
local monitoredNPCs = {}
local isIndicatorEnabled = false
local IndicatorConnection = nil
local statusGui = nil
local indicator = nil
local isAimbotNPCEnabled = false -- ⬅️ NOVO: Estado do Aimbot NPC
local AimbotConnection = nil -- ⬅️ NOVO: Conexão do Aimbot
local utilityMenuGui = nil -- Armazenará a ScreenGui principal do menu
local KEYBIND_TOGGLE_MENU = [Link].P -- ⬅️ TECLA DE ABRIR/FECHAR AGORA É 'P'
-- Configurações Globais (do seu script original + Aimbot)
_G.FriendColor = [Link](0, 0, 255)
_G.EnemyColor = [Link](255, 0, 0)
_G.NPCColor = [Link](255, 255, 0)
_G.VisibleColor = [Link](0, 255, 0)
_G.WallColor = [Link](255, 165, 0)
_G.OutlineColor = [Link](255, 255, 255)
_G.UseTeamColor = true
_G.TargetFPS = 30
_G.CheckNPCs = true
_G.AimbotRange = 300 -- ⬅️ NOVO: Alcance máximo do Aimbot (studs)
_G.AimbotFOV = 150 -- ⬅️ NOVO: Campo de Visão (Field of View - raio em pixels na
tela)
-- Pasta para armazenar os Highlights/Tags
local Holder = [Link]("Folder", [Link])
[Link] = "ESP_Highlights_Tags_Holder"
-- =========================================================
-- 🎨 TEMPLATES ESP (inalterado)
-- =========================================================
local HighlightTemplate = [Link]("Highlight")
[Link] = "nilHighlight"
[Link] = 0.5
[Link] = 0
[Link] = [Link]
[Link] = _G.OutlineColor
[Link] = [Link](1, 1, 1)
[Link] = false
local NameTagTemplate = [Link]("BillboardGui")
[Link] = "nilNameTag"
[Link] = false
[Link] = [Link](0, 200, 0, 60)
[Link] = true
[Link] = [Link](0, 1.8, 0)
local Tag = [Link]("TextLabel")
[Link] = "Tag"
[Link] = 1
[Link] = [Link](0, -50, 0, 0)
[Link] = [Link](0, 300, 0, 30)
[Link] = 15
Tag.TextColor3 = [Link](1, 1, 1)
Tag.TextStrokeColor3 = [Link](0, 0, 0)
[Link] = 0.4
[Link] = "nil"
[Link] = [Link]
[Link] = false
[Link] = NameTagTemplate
-- =========================================================
-- 💡 FUNÇÕES FULLBRIGHT (inalterado)
-- =========================================================
local function applyFullbright()
-- Força a iluminação ambiente para branco total
[Link] = 2
[Link] = [Link](1, 1, 1)
[Link] = [Link](1, 1, 1)
[Link] = false
end
local function enableFullbright()
if isFullbrightEnabled then return end
applyFullbright()
FullbrightConnection = [Link]:Connect(applyFullbright)
isFullbrightEnabled = true
end
local function disableFullbright()
if not isFullbrightEnabled then return end
if FullbrightConnection then
FullbrightConnection:Disconnect()
FullbrightConnection = nil
end
-- Restaura as configurações padrão ou neutras
[Link] = 1 -- Padrão
[Link] = [Link](0, 0, 0)
[Link] = [Link](0, 0, 0)
[Link] = true
isFullbrightEnabled = false
end
-- =========================================================
-- FUNÇÕES ESP (inalterado)
-- =========================================================
local function isBehindWall(targetCharacter)
local head = targetCharacter:FindFirstChild("Head")
if not head or not [Link] or not
[Link]:FindFirstChild("Head") then
return false, 0
end
local origin = [Link]
local targetPosition = [Link]
local distanceToTarget = (targetPosition - origin).Magnitude
local direction = (targetPosition - origin).unit * distanceToTarget
if distanceToTarget > 500 then
return true, distanceToTarget
end
local rayParams = [Link]()
[Link] = [Link]
[Link] = {[Link], targetCharacter}
[Link] = true
local raycastResult = Workspace:Raycast(origin, direction, rayParams)
if raycastResult then
local distanceToHit = ([Link] - origin).Magnitude
return distanceToHit < distanceToTarget - 0.5, distanceToTarget
end
return false, distanceToTarget
end
-- Gerenciamento de Assets (Highlight/NameTag)
local function getBaseColor(target)
local player = Players:GetPlayerFromCharacter(target)
if player then
if _G.UseTeamColor and [Link] then
return [Link]
end
return [Link] and [Link] == [Link] and
_G.FriendColor or _G.EnemyColor
else
return _G.NPCColor
end
end
local function UnloadTarget(target)
local vHolder = Holder:FindFirstChild([Link])
if vHolder then
vHolder:ClearAllChildren()
vHolder:Destroy()
end
end
local function UnloadAllTargets()
for _, vHolder in pairs(Holder:GetChildren()) do
vHolder:ClearAllChildren()
vHolder:Destroy()
end
monitoredNPCs = {}
end
local function LoadTarget(target)
local isPlayer = Players:GetPlayerFromCharacter(target) ~= nil
local char = target
local vHolder = Holder:FindFirstChild([Link])
if not vHolder then
vHolder = [Link]("Folder", Holder)
[Link] = [Link]
end
vHolder:ClearAllChildren()
local highlight = HighlightTemplate:Clone()
[Link] = [Link] .. "Highlight"
[Link] = char
[Link] = vHolder
[Link] = true
local NameTag = NameTagTemplate:Clone()
[Link] = [Link] .. "NameTag"
[Link] = true
[Link] = vHolder
local head = char:WaitForChild("Head", 5)
if not head then
return UnloadTarget(target)
end
[Link] = head
local tagText = NameTag:FindFirstChild("Tag")
if tagText then
[Link] = [Link]
end
if isPlayer and char:FindFirstChildOfClass("Humanoid") then
char:FindFirstChildOfClass("Humanoid").DisplayDistanceType =
[Link]
end
end
-- NPC Monitoring
local function MonitorNPC(char)
if isESPEnabled and char:IsA("Model") and
char:FindFirstChildOfClass("Humanoid") and not Players:GetPlayerFromCharacter(char)
and _G.CheckNPCs then
if not monitoredNPCs[char] then
monitoredNPCs[char] = true
LoadTarget(char)
local conn
conn = [Link]:Connect(function()
if not [Link] then
UnloadTarget(char)
monitoredNPCs[char] = nil
if conn then conn:Disconnect() end
end
end)
end
end
end
local function FindAndMonitorNPCs()
for _, child in pairs(Workspace:GetChildren()) do
MonitorNPC(child)
end
end
-- LOOP PRINCIPAL DE ATUALIZAÇÃO (VISUAL - Roda a cada frame)
local function UpdateESPVisuals(target)
if not isESPEnabled then return end
local targetCharacter = [Link] or target
local humanoid = targetCharacter:FindFirstChildOfClass("Humanoid")
if not targetCharacter or not humanoid or [Link] <= 0 then
if not Players:GetPlayerFromCharacter(targetCharacter) then
UnloadTarget(targetCharacter)
monitoredNPCs[targetCharacter] = nil
end
return
end
local targetFolder = Holder:FindFirstChild([Link])
if not targetFolder then return end
local highlight = targetFolder:FindFirstChild([Link] ..
"Highlight")
local NameTag = targetFolder:FindFirstChild([Link] .. "NameTag")
if highlight and NameTag then
local baseColor = getBaseColor(targetCharacter)
local isBehindWallAttr = highlight:GetAttribute("IsBehindWall") or false
local distance = highlight:GetAttribute("Distance") or 0
-- Aplica a cor de preenchimento do Highlight e DepthMode
if isBehindWallAttr then
[Link] = _G.WallColor
[Link] = [Link]
else
-- Cor para visível é verde, ou a cor base do time
[Link] = _G.VisibleColor
[Link] = [Link]
end
-- Atualiza o texto da etiqueta de nome
local tagText = NameTag:FindFirstChild("Tag")
if tagText then
tagText.TextColor3 = [Link]
local h = [Link]([Link])
local maxh = [Link]([Link])
[Link] = [Link]("%s\nHP: %d/%d\nDist: %.1fm",
[Link], h, maxh, distance)
end
else
pcall(LoadTarget, targetCharacter)
end
end
-- LOOP DE VERIFICAÇÃO DE PAREDE (Lento - Roda a uma taxa fixa)
local function WallCheckLoop()
local waitTime = 1 / _G.TargetFPS
while [Link](waitTime) do
if not isESPEnabled then break end -- Sai do loop se desabilitado
if not [Link] or not
[Link]:FindFirstChild("Head") then
continue
end
local allTargets = {}
-- Adiciona jogadores
for _, player in Players:GetPlayers() do
if [Link] and player ~= LocalPlayer then
[Link](allTargets, [Link])
end
end
-- Adiciona NPCs
if _G.CheckNPCs then
for target in pairs(monitoredNPCs) do
if target and target:IsDescendantOf(Workspace) and
target:FindFirstChildOfClass("Humanoid") and target:FindFirstChild("Head") then
[Link](allTargets, target)
else
UnloadTarget(target)
monitoredNPCs[target] = nil
end
end
end
for _, targetCharacter in ipairs(allTargets) do
local targetFolder = Holder:FindFirstChild([Link])
local highlight = targetFolder and
targetFolder:FindFirstChild([Link] .. "Highlight")
if highlight then
local behindWall, distance = isBehindWall(targetCharacter)
highlight:SetAttribute("IsBehindWall", behindWall)
highlight:SetAttribute("Distance", distance)
end
end
end
end
-- Funções de Habilitar/Desabilitar ESP
local function enableESP()
if isESPEnabled then return end
isESPEnabled = true
-- Inicia o Loop de Verificação de Parede (Raycasting)
ESPWALLCheckThread = [Link](WallCheckLoop)
-- Inicia o loop de visualização (Stepped)
ESPVisualConnection = [Link]:Connect(function()
if not [Link] then return end
-- Atualiza Jogadores
for _, player in Players:GetPlayers() do
if player ~= LocalPlayer and [Link] then
UpdateESPVisuals(player)
end
end
-- Atualiza NPCs
if _G.CheckNPCs then
for npc in pairs(monitoredNPCs) do
if npc then
UpdateESPVisuals(npc)
end
end
end
end)
-- Carrega jogadores existentes
local function loadPlayerOnJoin(v)
local conn
local function setupConnections(char)
pcall(LoadTarget, char)
local removeConn = [Link]:Connect(function(char)
pcall(UnloadTarget, char) end)
[Link](ESPPlayerConnections, removeConn)
end
conn = [Link]:Connect(setupConnections)
[Link](ESPPlayerConnections, conn)
if [Link] then setupConnections([Link]) end
end
for _, v in Players:GetPlayers() do
if v ~= LocalPlayer then
loadPlayerOnJoin(v)
end
end
local playerAddedConn = [Link]:Connect(function(v)
if v ~= LocalPlayer then loadPlayerOnJoin(v) end
end)
[Link](ESPPlayerConnections, playerAddedConn)
-- Carrega NPCs existentes e monitora novos
if _G.CheckNPCs then
FindAndMonitorNPCs()
local childAddedConn = [Link]:Connect(MonitorNPC)
[Link](ESPPlayerConnections, childAddedConn)
end
end
local function disableESP()
if not isESPEnabled then return end
isESPEnabled = false
-- Desconecta todas as conexões do ESP
for _, conn in ipairs(ESPPlayerConnections) do
if pcall([Link], conn) then
-- Sucesso
end
end
ESPPlayerConnections = {}
if ESPVisualConnection then
ESPVisualConnection:Disconnect()
ESPVisualConnection = nil
end
-- O WallCheckLoop é interrompido pelo break dentro dele.
UnloadAllTargets()
end
-- =========================================================
-- 🎯 FUNÇÕES AIMBOT NPC (NOVO)
-- =========================================================
-- Encontra o NPC mais próximo dentro do FOV e alcance
local function findTargetNPC()
local bestTarget = nil
local closestDistance = _G.AimbotRange + 1 -- Inicializa com mais do que o
máximo
local smallestFOV = _G.AimbotFOV + 1
if not [Link] or not
[Link]:FindFirstChild("Head") then
return nil
end
local localHead = [Link]
local center = [Link]([Link].X / 2, [Link].Y /
2)
for target in pairs(monitoredNPCs) do
local targetHead = target:FindFirstChild("Head")
local humanoid = target:FindFirstChildOfClass("Humanoid")
-- Verifica se é um NPC válido e vivo
if targetHead and humanoid and [Link] > 0 then
local distance = ([Link] - [Link]).Magnitude
-- Verifica o alcance
if distance <= _G.AimbotRange then
local vector, onScreen =
Camera:WorldToScreenPoint([Link])
if onScreen then
local targetScreenPos = [Link](vector.X, vector.Y)
local fovDistance = (targetScreenPos - center).Magnitude
-- Verifica o FOV (Field of View)
if fovDistance <= _G.AimbotFOV then
-- Encontra o NPC mais próximo do centro da tela
if fovDistance < smallestFOV then
smallestFOV = fovDistance
bestTarget = targetHead
closestDistance = distance
end
end
end
end
end
end
return bestTarget
end
-- Calcula a posição do mouse na tela para onde mirar
local function calculateMousePosition(targetHead)
local vector, onScreen = Camera:WorldToScreenPoint([Link])
if onScreen then
return [Link](vector.X, vector.Y)
end
return nil
end
-- Ação principal do Aimbot (move a câmera)
local function aimAtTarget()
local target = findTargetNPC()
if target and [Link] and
[Link]:FindFirstChild("HumanoidRootPart") then
-- Calcula o vetor de direção do localHead para o target
local direction = ([Link] -
[Link]).unit
-- Cria um CFrame de lookAt
local newCFrame = [Link]([Link],
[Link])
-- Define o CFrame da Câmera
[Link] = newCFrame
end
end
local function enableAimbotNPC()
if isAimbotNPCEnabled then return end
-- Deve estar ligado para que os NPCs sejam monitorados
if not isESPEnabled then
enableESP()
end
-- Conecta o loop do Aimbot ao RenderStepped
AimbotConnection = [Link]:Connect(aimAtTarget)
isAimbotNPCEnabled = true
end
local function disableAimbotNPC()
if not isAimbotNPCEnabled then return end
if AimbotConnection then
AimbotConnection:Disconnect()
AimbotConnection = nil
end
isAimbotNPCEnabled = false
end
-- =========================================================
-- FUNÇÕES INDICADOR DE STATUS (inalterado)
-- =========================================================
local function createStatusIndicator()
-- Cria o ScreenGui no CoreGui, se ainda não existir
if not statusGui then
statusGui = [Link]("ScreenGui")
[Link] = "TimeStatusGui"
[Link] = [Link]
[Link] = [Link]
indicator = [Link]("TextLabel")
[Link] = "TimeStatusIndicator"
[Link] = [Link](0, 300, 0, 25)
[Link] = [Link](0, 5, 0, 35) -- Abaixo da GUI do menu
[Link] = 0.8
indicator.BackgroundColor3 = [Link](0, 0, 0)
[Link] = 15
[Link] = [Link]
[Link] = 0
[Link] = [Link]
[Link] = true
[Link] = statusGui
end
[Link] = true
end
local function updateIndicator()
if not indicator then return end
local clockTime = [Link]
local isDay = clockTime >= 6 and clockTime < 18
local statusText = isDay and "DIA" or "NOITE"
local hours = [Link](clockTime)
local minutes = [Link]((clockTime % 1) * 60)
local timeDisplay = [Link]("%02d:%02d", hours, minutes)
local fbStatus = isFullbrightEnabled and "ATIVO" or "INATIVO"
local espStatus = isESPEnabled and "ATIVO" or "INATIVO"
local aimbotStatus = isAimbotNPCEnabled and "ATIVO" or "INATIVO" -- ⬅️ NOVO
-- Texto final: Exemplo: "FULLBRIGHT [ATIVO] | ESP [ATIVO] | AIMBOT [INATIVO]"
[Link] = [Link]("FB: [%s] | ESP: [%s] | AIMBOT: [%s] | Servidor:
%s (%s)", fbStatus, espStatus, aimbotStatus, statusText, timeDisplay)
-- Altera a cor do texto para indicar visualmente se é Dia ou Noite no servidor
if isDay then
indicator.TextColor3 = [Link](255, 255, 0) -- Amarelo para Dia
else
indicator.TextColor3 = [Link](135, 206, 250) -- Azul Claro para
Noite
end
end
local function enableIndicator()
if isIndicatorEnabled then return end
createStatusIndicator()
updateIndicator()
IndicatorConnection = [Link]:Connect(updateIndicator)
isIndicatorEnabled = true
end
local function disableIndicator()
if not isIndicatorEnabled then return end
if IndicatorConnection then
IndicatorConnection:Disconnect()
IndicatorConnection = nil
end
if statusGui then
[Link] = false
end
isIndicatorEnabled = false
end
-- =========================================================
-- FUNÇÕES E CONSTRUÇÃO DO MENU GUI (Adição do Aimbot)
-- =========================================================
local GuiConnections = {}
-- Função para validar e normalizar a entrada de texto para um número de 0-255
local function normalizeColorInput(textBox)
local num = [Link](tonumber([Link]) or 0, 0, 255)
[Link] = tostring([Link](num))
return num
end
-- ➡️ FUNÇÃO DE ALTERNÂNCIA DE VISIBILIDADE DO MENU
local function toggleMenuVisibility()
if not utilityMenuGui then return end
[Link] = not [Link]
-- Opcional: Garante que o indicador se esconde quando o menu principal se
esconde
if statusGui then [Link] = [Link] and
isIndicatorEnabled end
end
-- ⬅️ FIM DA FUNÇÃO DE ALTERNÂNCIA DE VISIBILIDADE DO MENU
local function createMenuGui()
local screenGui = [Link]("ScreenGui")
[Link] = "UtilityMenuGUI"
[Link] = [Link]
utilityMenuGui = screenGui -- ⬅️ Armazena a referência global
local mainFrame = [Link]("Frame")
[Link] = [Link](0, 200, 0, 500) -- <-- ALTURA AUMENTADA para sliders
[Link] = [Link](1, -210, 0, 10) -- Canto superior direito
mainFrame.BackgroundColor3 = [Link](30, 30, 30)
[Link] = 0
[Link] = screenGui
local UICorner = [Link]("UICorner")
[Link] = [Link](0, 8)
[Link] = mainFrame
local titleLabel = [Link]("TextLabel")
[Link] = "MENU DE UTILIDADES"
[Link] = [Link](1, 0, 0, 25)
[Link] = [Link](0, 0, 0, 0)
titleLabel.BackgroundColor3 = [Link](50, 50, 50)
titleLabel.TextColor3 = [Link](255, 255, 255)
[Link] = [Link]
[Link] = 16
[Link] = 0
[Link] = mainFrame
local UILayout = [Link]("UIListLayout")
[Link] = [Link](0, 5)
[Link] = [Link]
[Link] = [Link]
[Link] = [Link]
[Link] = mainFrame
-- Adiciona um padding extra para os botões ficarem abaixo do título
local padding = [Link]("Frame")
[Link] = [Link](1, 0, 0, 30)
[Link] = 1
[Link] = 1 -- Ordem de layout
[Link] = mainFrame
local function createToggleButton(text, defaultState, enableFunc, disableFunc,
order)
local btn = [Link]("TextButton")
[Link] = text:gsub(" ", "") .. "Button"
[Link] = text
[Link] = order
[Link] = [Link](0.9, 0, 0, 30)
btn.BackgroundColor3 = [Link](80, 80, 80)
[Link] = [Link]
[Link] = 14
[Link] = 0
[Link] = mainFrame
local corner = [Link]("UICorner")
[Link] = [Link](0, 6)
[Link] = btn
local state = defaultState
local GREEN = [Link](30, 180, 30)
local RED = [Link](180, 30, 30)
local function updateButtonDisplay()
if state then
[Link] = text .. " (LIGADO)"
btn.BackgroundColor3 = GREEN
else
[Link] = text .. " (DESLIGADO)"
btn.BackgroundColor3 = RED
end
end
local function toggle()
state = not state
updateButtonDisplay()
if state then
enableFunc()
else
disableFunc()
end
end
updateButtonDisplay() -- Configura o display inicial
local conn = btn.MouseButton1Click:Connect(toggle)
[Link](GuiConnections, conn)
return btn, toggle
end
-- Botão Fullbright
createToggleButton("FULLBRIGHT AVANÇADO", isFullbrightEnabled,
enableFullbright, disableFullbright, 2)
-- Botão ESP Highlight
createToggleButton("ESP HIGHLIGHT/WALL CHECK", isESPEnabled, enableESP,
disableESP, 3)
-- Botão Aimbot NPC ⬅️ NOVO
createToggleButton("AIMBOT NPC", isAimbotNPCEnabled, enableAimbotNPC,
disableAimbotNPC, 4)
-- Botão Indicador de Status
createToggleButton("INDICADOR DE STATUS", isIndicatorEnabled, enableIndicator,
disableIndicator, 5)
-- =========================================================
-- 🎨 INÍCIO DAS FUNÇÕES DE COR (COM SLIDERS)
-- =========================================================
-- Separador e Título de Cores
local colorTitle = [Link]("TextLabel")
[Link] = "--- CORES DO ESP ---"
[Link] = 6 -- Ajustado
[Link] = [Link](0.9, 0, 0, 20)
[Link] = 1
colorTitle.TextColor3 = [Link](255, 255, 255)
[Link] = [Link]
[Link] = 14
[Link] = mainFrame
-- Função helper para criar caixas RGB + Sliders + Preview (inalterado)
local function createColorInput(labelText, initialColor, layoutOrder)
local rVal, gVal, bVal = initialColor.R * 255, initialColor.G * 255,
initialColor.B * 255
local label = [Link]("TextLabel")
[Link] = labelText
[Link] = layoutOrder
[Link] = [Link](0.9, 0, 0, 15)
[Link] = 1
label.TextColor3 = [Link](200, 200, 200)
[Link] = [Link]
[Link] = 12
[Link] = [Link]
[Link] = mainFrame
-- Frame para Caixas de Texto e Preview
local boxFrame = [Link]("Frame")
[Link] = layoutOrder + 1
[Link] = [Link](0.9, 0, 0, 25)
[Link] = 1
[Link] = mainFrame
local boxLayout = [Link]("UIListLayout")
[Link] = [Link]
[Link] = [Link]
[Link] = [Link]
[Link] = [Link](0, 5)
[Link] = boxFrame
local function createTextBox(placeholder, initialValue)
local tb = [Link]("TextBox")
[Link] = [Link](0, 40, 1, 0) -- Tamanho menor
tb.BackgroundColor3 = [Link](50, 50, 50)
tb.TextColor3 = [Link](255, 255, 255)
[Link] = [Link]
[Link] = 14
[Link] = placeholder
[Link] = tostring([Link](initialValue))
[Link] = false
[Link] = false
[Link] = boxFrame
local corner = [Link]("UICorner")
[Link] = [Link](0, 4)
[Link] = tb
return tb
end
local rBox = createTextBox("R", rVal)
local gBox = createTextBox("G", gVal)
local bBox = createTextBox("B", bVal)
-- Caixa de Preview
local previewBox = [Link]("Frame")
[Link] = [Link](0, 30, 1, 0)
previewBox.BackgroundColor3 = initialColor
[Link] = 1
previewBox.BorderColor3 = [Link](150, 150, 150)
[Link] = boxFrame
local previewCorner = [Link]("UICorner")
[Link] = [Link](0, 4)
[Link] = previewBox
-- Sliders
local function createSlider(initialValue, layoutOrder, color)
local slider = [Link]("Slider")
[Link] = layoutOrder
[Link] = [Link](0.9, 0, 0, 15)
[Link] = 0
[Link] = 255
[Link] = initialValue
[Link] = mainFrame
-- Adiciona cor ao slider
slider.ThumbColor3 = color
slider.BackgroundColor3 = [Link](0.3, 0.3, 0.3)
return slider
end
local rSlider = createSlider(rVal, layoutOrder + 2, [Link](255, 50,
50))
local gSlider = createSlider(gVal, layoutOrder + 3, [Link](50, 255,
50))
local bSlider = createSlider(bVal, layoutOrder + 4, [Link](50, 50,
255))
-- Sincronização
local function updatePreview()
local r = normalizeColorInput(rBox)
local g = normalizeColorInput(gBox)
local b = normalizeColorInput(bBox)
previewBox.BackgroundColor3 = [Link](r, g, b)
end
-- Sliders atualizam Caixas de Texto
[Link]:Connect(function()
[Link] = tostring([Link]([Link]))
updatePreview()
end)
[Link]:Connect(function()
[Link] = tostring([Link]([Link]))
updatePreview()
end)
[Link]:Connect(function()
[Link] = tostring([Link]([Link]))
updatePreview()
end)
-- Caixas de Texto (ao perder foco) atualizam Sliders
[Link]:Connect(function()
[Link] = normalizeColorInput(rBox)
updatePreview()
end)
[Link]:Connect(function()
[Link] = normalizeColorInput(gBox)
updatePreview()
end)
[Link]:Connect(function()
[Link] = normalizeColorInput(bBox)
updatePreview()
end)
return rBox, gBox, bBox
end
-- Criar Inputs de Cor (LayoutOrder +5 por cada um)
local vR, vG, vB = createColorInput("Visível (R,G,B):", _G.VisibleColor, 7) --
Ajustado LayoutOrder
local wR, wG, wB = createColorInput("Parede (R,G,B):", _G.WallColor, 13) --
Ajustado LayoutOrder
-- Botão Salvar
local saveButton = [Link]("TextButton")
[Link] = "SaveColorButton"
[Link] = "SALVAR CORES"
[Link] = 19 -- Ajustado para depois dos sliders
[Link] = [Link](0.9, 0, 0, 30)
saveButton.BackgroundColor3 = [Link](50, 50, 150) -- Azul
[Link] = [Link]
[Link] = 14
[Link] = 0
[Link] = mainFrame
local saveCorner = [Link]("UICorner")
[Link] = [Link](0, 6)
[Link] = saveButton
-- Função para validar e converter o texto para cor (usada no botão Salvar)
local function parseColor(r, g, b)
local rNum = normalizeColorInput(r)
local gNum = normalizeColorInput(g)
local bNum = normalizeColorInput(b)
return [Link](rNum, gNum, bNum)
end
local saveConn = saveButton.MouseButton1Click:Connect(function()
_G.VisibleColor = parseColor(vR, vG, vB)
_G.WallColor = parseColor(wR, wG, wB)
-- Feedback visual
[Link] = "CORES SALVAS!"
saveButton.BackgroundColor3 = [Link](30, 180, 30) -- Verde
[Link](1.5)
[Link] = "SALVAR CORES"
saveButton.BackgroundColor3 = [Link](50, 50, 150) -- Azul
end)
[Link](GuiConnections, saveConn)
-- =========================================================
-- 🎨 FIM DAS FUNÇÕES DE COR
-- =========================================================
-- =========================================================
-- 🎯 INÍCIO DAS FUNÇÕES DE AIMBOT (NOVO)
-- =========================================================
local aimbotTitle = [Link]("TextLabel")
[Link] = "--- AIMBOT NPC ---"
[Link] = 20 -- NOVO
[Link] = [Link](0.9, 0, 0, 20)
[Link] = 1
aimbotTitle.TextColor3 = [Link](255, 255, 255)
[Link] = [Link]
[Link] = 14
[Link] = mainFrame
-- Alcance do Aimbot (Slider)
local rangeLabel = [Link]("TextLabel")
[Link] = [Link]("Alcance (Studs): %.0f", _G.AimbotRange)
[Link] = 21 -- NOVO
[Link] = [Link](0.9, 0, 0, 15)
[Link] = 1
rangeLabel.TextColor3 = [Link](200, 200, 200)
[Link] = [Link]
[Link] = 12
[Link] = [Link]
[Link] = mainFrame
local rangeSlider = [Link]("Slider")
[Link] = 22 -- NOVO
[Link] = [Link](0.9, 0, 0, 15)
[Link] = 50
[Link] = 1000
[Link] = _G.AimbotRange
[Link] = mainFrame
rangeSlider.ThumbColor3 = [Link](200, 150, 255) -- Roxo
rangeSlider.BackgroundColor3 = [Link](0.3, 0.3, 0.3)
local rangeConn = [Link]:Connect(function(value)
_G.AimbotRange = [Link](value)
[Link] = [Link]("Alcance (Studs): %.0f", _G.AimbotRange)
end)
[Link](GuiConnections, rangeConn)
-- FOV do Aimbot (Slider)
local fovLabel = [Link]("TextLabel")
[Link] = [Link]("FOV (Pixels): %.0f", _G.AimbotFOV)
[Link] = 23 -- NOVO
[Link] = [Link](0.9, 0, 0, 15)
[Link] = 1
fovLabel.TextColor3 = [Link](200, 200, 200)
[Link] = [Link]
[Link] = 12
[Link] = [Link]
[Link] = mainFrame
local fovSlider = [Link]("Slider")
[Link] = 24 -- NOVO
[Link] = [Link](0.9, 0, 0, 15)
[Link] = 10
[Link] = 500
[Link] = _G.AimbotFOV
[Link] = mainFrame
fovSlider.ThumbColor3 = [Link](255, 100, 150) -- Rosa
fovSlider.BackgroundColor3 = [Link](0.3, 0.3, 0.3)
local fovConn = [Link]:Connect(function(value)
_G.AimbotFOV = [Link](value)
[Link] = [Link]("FOV (Pixels): %.0f", _G.AimbotFOV)
end)
[Link](GuiConnections, fovConn)
-- =========================================================
-- 🎯 FIM DAS FUNÇÕES DE AIMBOT
-- =========================================================
-- Botão Extra para fechar/abrir o menu (via clique)
local hideButton = [Link]("TextButton")
[Link] = "Ocultar/Mostrar (Clique ou tecla 'P')" -- Texto atualizado
[Link] = [Link](0.9, 0, 0, 20)
[Link] = 99
hideButton.BackgroundColor3 = [Link](50, 50, 50)
hideButton.TextColor3 = [Link](200, 200, 200)
[Link] = [Link]
[Link] = 12
[Link] = 0
[Link] = mainFrame
local conn = hideButton.MouseButton1Click:Connect(toggleMenuVisibility)
[Link](GuiConnections, conn)
-- Configuração inicial do indicador (escondido)
if statusGui then [Link] = false end
-- Cleanup
[Link]:Connect(function()
if not [Link] then
disableFullbright()
disableESP()
disableIndicator()
disableAimbotNPC() -- ⬅️ NOVO: Limpeza do Aimbot
for _, conn in ipairs(GuiConnections) do
if [Link] then conn:Disconnect() end
end
if Holder then Holder:Destroy() end
end
end)
end
-- =========================================================
-- 🚀 INICIALIZAÇÃO E KEYBIND
-- =========================================================
-- Função para lidar com a entrada do usuário (tecla)
local function handleInput(input, gameProcessed)
-- Ignora se o jogo já processou o input (ex: chatbox aberto)
if gameProcessed then return end
if [Link] == KEYBIND_TOGGLE_MENU and [Link] ==
[Link] then
toggleMenuVisibility()
end
end
-- Conecta a função de input ao UserInputService
local inputConn = [Link]:Connect(handleInput)
-- Inicia a construção da GUI após a garantia de que o LocalPlayer existe
if LocalPlayer then
createMenuGui()
-- Garante que o indicador é criado, mas inicialmente desabilitado
createStatusIndicator()
[Link] = false -- Começa escondido
else
-- Em caso de falha, tenta novamente quando o jogador for adicionado
[Link]:Wait()
createMenuGui()
createStatusIndicator()
[Link] = false -- Começa escondido
end
print("GUI de Utilidades e Scripts Carregados. Tecla de atalho: 'P'")