Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save maxamillion/177a36f959911900e6f2a1f625cdcc3a to your computer and use it in GitHub Desktop.

Select an option

Save maxamillion/177a36f959911900e6f2a1f625cdcc3a to your computer and use it in GitHub Desktop.
Red Hat: OpenShell + Podman + Fedora/RHEL Vertex AI Anthropic Quickstart

OpenShell Instructions for Red Hatters to use Anthropic models via Vertex AI

# install
$ sudo dnf copr enable maxamillion/nvidia-openshell
$ sudo dnf install openshell-gateway openshell

# start the rootless user systemd service unit
$ systemctl --user start openshell-gateway.service

# add the local openshell gateway to your client config
$ openshell gateway add https://localhost:17670 --local

# Follow the Vertex AI Claude Code instructions to setup your gcloud creds
# https://docs.google.com/document/d/1eNARy9CI28o09E7Foq01e5WD5MvEj3LSBnXqFcprxjo/edit?tab=t.0#heading=h.8ldy5by9bpo8
# MAKE SURE TO GET YOUR PROJECT NAME, YOU'LL NEED IT IN THE FOLLOWING EXPORT

Option A (RECOMMENDED): GCP Provider using OpenShell's GCE Metadata emulation

# Create the provider credential in OpenShell
$ openshell provider create --name redhat-gcp --type google-cloud --from-gcloud-adc --config project_id="$(gcloud config get-value project)" --config region=global

# Create a sandbox using this provider credential
$ openshell sandbox create --name my-sandbox --provider redhat-gcp

# Next we need to update the network policy (this should be temporary, we'll get this added to the default policy once the provider merges
$ openshell policy update my-sandbox --add-endpoint aiplatform.googleapis.com:443:read-write:rest:enforce --binary /usr/local/bin/claude --binary /usr/bin/opencode --wait

# Once inside the sandbox, either run Claude Code just as outlined in the Google Doc:

# Claude Code
$ CLAUDE_CODE_USE_VERTEX=1 CLOUD_ML_REGION="global" ANTHROPIC_VERTEX_PROJECT_ID="YOUR_ORG_GCLOLUD_PROJECT" claude

# Or alternatively you can use OpenCode
# OpenCode
$ VERTEX_LOCATION="global" GOOGLE_CLOUD_PROJECT="YOUR_ORG_GCLOUD_PROJECT" opencode

Option B: Vertex AI Provider using OpenShell inference.local custom endpoint

$ export vertex_project="YOUR_ORG_GCLOUD_PROJECT"

# Enable the providers v2 feature flag
# (this is necessary for now, but will go away when we migrate from v1 to v2 upstream)
$ openshell settings set --global --key providers_v2_enabled --value true --yes

# Create the provider credential in OpenShell
$ openshell provider create --name vertex-local --type google-vertex-ai --from-gcloud-adc --config VERTEX_AI_PROJECT_ID="${vertex_project}" --config VERTEX_AI_REGION=global

# Set the inference provider
# NOTE: the model is ignored by claude code, but openshell requires the setting
$ openshell inference set --provider vertex-local --model claude-sonnet-4-6

# Create a sandbox using this provider credential
$ openshell sandbox create --name my-sandbox --provider vertex-local

# Once inside the sandbox, either run Claude Code or OpenCode as follows:

# Claude Code
$ ANTHROPIC_BASE_URL="https://inference.local" ANTHROPIC_API_KEY=unused claude --bare

# OpenCode
$ ANTHROPIC_BASE_URL="https://inference.local/v1" ANTHROPIC_API_KEY=unused opencode
@stbenjam

This comment was marked as outdated.

@stbenjam

This comment was marked as outdated.

@iasdengenhoped-dot

Copy link
Copy Markdown

--[[
WARNING: Heads up! This script has not been verified by ScriptBlox. Use at your own risk!
]]

-- ============================================
-- ROMALHO RAGE MENU v8.0 - UNIVERSAL
-- Funciona em TODOS os jogos de tiro do Roblox
-- Arraste para mover | Botão [-] para minimizar
-- Pressione V = esconder/mostrar painel
-- ============================================

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local Lighting = game:GetService("Lighting")
local Workspace = game:GetService("Workspace")

local player = Players.LocalPlayer
local mouse = player:GetMouse()
local camera = workspace.CurrentCamera

-- ========== VARIAVEIS ==========
local espActive = false
local espLineActive = false
local espNameActive = false
local espHealthActive = false
local espDistanceActive = false
local espBoxActive = false
local panelVisible = true
local panelMinimized = false
local espObjects = {}
local dragging = false
local dragInput = nil
local dragStart = nil
local startPos = nil

-- Cores do ESP (configurável)
local espColor = Color3.fromRGB(255, 200, 50)

-- ========== CORES ==========
local darkBg = Color3.fromRGB(15, 15, 25)
local grayBg = Color3.fromRGB(30, 30, 40)
local redColor = Color3.fromRGB(255, 70, 50)
local yellowColor = Color3.fromRGB(255, 200, 50)
local greenColor = Color3.fromRGB(50, 200, 50)
local whiteColor = Color3.fromRGB(255, 255, 255)

-- ========== CRIANDO UI ==========
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "RomalhoRageMenu"
screenGui.Parent = player:WaitForChild("PlayerGui")
screenGui.ResetOnSpawn = false

-- ========== PAINEL PRINCIPAL ==========
local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 350, 0, 520)
mainFrame.Position = UDim2.new(0.5, -175, 0.65, 0)
mainFrame.BackgroundColor3 = darkBg
mainFrame.BackgroundTransparency = 0.1
mainFrame.BorderSizePixel = 0
mainFrame.Parent = screenGui
mainFrame.Draggable = true

local mainCorner = Instance.new("UICorner")
mainCorner.CornerRadius = UDim.new(0, 12)
mainCorner.Parent = mainFrame

-- Borda vermelha
local border = Instance.new("Frame")
border.Size = UDim2.new(1, 0, 0, 3)
border.Position = UDim2.new(0, 0, 0, 0)
border.BackgroundColor3 = redColor
border.BorderSizePixel = 0
border.Parent = mainFrame

-- ========== CABEÇALHO ==========
local headerFrame = Instance.new("Frame")
headerFrame.Size = UDim2.new(1, 0, 0, 50)
headerFrame.Position = UDim2.new(0, 0, 0, 0)
headerFrame.BackgroundTransparency = 1
headerFrame.Parent = mainFrame

local title = Instance.new("TextLabel")
title.Size = UDim2.new(0.7, 0, 1, 0)
title.Position = UDim2.new(0.05, 0, 0, 0)
title.BackgroundTransparency = 1
title.Text = "🔥 RAGE MENU 🔥"
title.TextColor3 = redColor
title.Font = Enum.Font.GothamBold
title.TextSize = 18
title.TextXAlignment = Enum.TextXAlignment.Left
title.Parent = headerFrame

local subtitle = Instance.new("TextLabel")
subtitle.Size = UDim2.new(0.7, 0, 0.4, 0)
subtitle.Position = UDim2.new(0.05, 0, 0.55, 0)
subtitle.BackgroundTransparency = 1
subtitle.Text = "ROMALHO SYSTEM | Arraste para mover"
subtitle.TextColor3 = Color3.fromRGB(150, 150, 150)
subtitle.Font = Enum.Font.Gotham
subtitle.TextSize = 9
subtitle.TextXAlignment = Enum.TextXAlignment.Left
subtitle.Parent = headerFrame

-- Botão minimizar
local minimizeBtn = Instance.new("TextButton")
minimizeBtn.Size = UDim2.new(0, 30, 0, 30)
minimizeBtn.Position = UDim2.new(0.88, 0, 0.1, 0)
minimizeBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 50)
minimizeBtn.Text = "−"
minimizeBtn.TextColor3 = whiteColor
minimizeBtn.Font = Enum.Font.GothamBold
minimizeBtn.TextSize = 20
minimizeBtn.BorderSizePixel = 0
minimizeBtn.Parent = headerFrame

local minCorner = Instance.new("UICorner")
minCorner.CornerRadius = UDim.new(0, 6)
minCorner.Parent = minimizeBtn

-- Botão fechar
local closeBtn = Instance.new("TextButton")
closeBtn.Size = UDim2.new(0, 30, 0, 30)
closeBtn.Position = UDim2.new(0.95, 0, 0.1, 0)
closeBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 50)
closeBtn.Text = "✕"
closeBtn.TextColor3 = whiteColor
closeBtn.Font = Enum.Font.GothamBold
closeBtn.TextSize = 16
closeBtn.BorderSizePixel = 0
closeBtn.Parent = headerFrame

local closeCorner = Instance.new("UICorner")
closeCorner.CornerRadius = UDim.new(0, 6)
closeCorner.Parent = closeBtn

-- ========== CONTEÚDO PRINCIPAL ==========
local contentFrame = Instance.new("Frame")
contentFrame.Size = UDim2.new(1, 0, 1, -50)
contentFrame.Position = UDim2.new(0, 0, 0, 50)
contentFrame.BackgroundTransparency = 1
contentFrame.Parent = mainFrame

-- ========== MENU PRINCIPAL (TABS) ==========
local tabs = {"ESP", "CONFIG", "INFO"}
local currentTab = "ESP"

local tabFrame = Instance.new("Frame")
tabFrame.Size = UDim2.new(0.95, 0, 0, 35)
tabFrame.Position = UDim2.new(0.025, 0, 0, 0)
tabFrame.BackgroundTransparency = 1
tabFrame.Parent = contentFrame

local tabButtons = {}
for i, tabName in ipairs(tabs) do
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(0.3, 0, 1, 0)
btn.Position = UDim2.new((i-1) * 0.34, 0, 0, 0)
btn.BackgroundColor3 = (i == 1) and grayBg or Color3.fromRGB(20, 20, 30)
btn.Text = tabName
btn.TextColor3 = (i == 1) and whiteColor or Color3.fromRGB(150, 150, 150)
btn.Font = Enum.Font.GothamBold
btn.TextSize = 13
btn.BorderSizePixel = 0
btn.Parent = tabFrame

local btnCorner = Instance.new("UICorner")
btnCorner.CornerRadius = UDim.new(0, 6)
btnCorner.Parent = btn

tabButtons[tabName] = btn
btn.MouseButton1Click:Connect(function()
    switchTab(tabName)
end)

end

-- ========== CONTEÚDO DA TAB ESP ==========
local espContent = Instance.new("Frame")
espContent.Size = UDim2.new(0.95, 0, 0.80, 0)
espContent.Position = UDim2.new(0.025, 0, 0.08, 0)
espContent.BackgroundTransparency = 1
espContent.Parent = contentFrame

-- Botões ESP
local espOptions = {
{name = "ESP Line", desc = "Linha até o inimigo"},
{name = "ESP None", desc = "Sem ESP"},
{name = "ESP Name", desc = "Mostra o nome"},
{name = "ESP Health", desc = "Barra de vida"},
{name = "ESP Distance", desc = "Distância"},
{name = "ESP Box", desc = "Caixa ao redor"},
}

local espButtons = {}
local espButtonValues = {}

for i, opt in ipairs(espOptions) do
local row = Instance.new("Frame")
row.Size = UDim2.new(1, 0, 0, 38)
row.Position = UDim2.new(0, 0, (i-1) * 0.15, 0)
row.BackgroundColor3 = (i % 2 == 0) and Color3.fromRGB(20, 20, 30) or Color3.fromRGB(25, 25, 35)
row.BackgroundTransparency = 0.5
row.BorderSizePixel = 0
row.Parent = espContent

local rowCorner = Instance.new("UICorner")
rowCorner.CornerRadius = UDim.new(0, 6)
rowCorner.Parent = row

local label = Instance.new("TextLabel")
label.Size = UDim2.new(0.5, 0, 1, 0)
label.Position = UDim2.new(0.05, 0, 0, 0)
label.BackgroundTransparency = 1
label.Text = opt.name
label.TextColor3 = whiteColor
label.Font = Enum.Font.Gotham
label.TextSize = 12
label.TextXAlignment = Enum.TextXAlignment.Left
label.Parent = row

local desc = Instance.new("TextLabel")
desc.Size = UDim2.new(0.5, 0, 0.4, 0)
desc.Position = UDim2.new(0.05, 0, 0.55, 0)
desc.BackgroundTransparency = 1
desc.Text = opt.desc
desc.TextColor3 = Color3.fromRGB(100, 100, 100)
desc.Font = Enum.Font.Gotham
desc.TextSize = 9
desc.TextXAlignment = Enum.TextXAlignment.Left
desc.Parent = row

local btn = Instance.new("TextButton")
btn.Size = UDim2.new(0.25, 0, 0.7, 0)
btn.Position = UDim2.new(0.72, 0, 0.15, 0)
btn.BackgroundColor3 = Color3.fromRGB(200, 50, 40)
btn.Text = "OFF"
btn.TextColor3 = whiteColor
btn.Font = Enum.Font.GothamBold
btn.TextSize = 12
btn.BorderSizePixel = 0
btn.Parent = row

local btnCorner = Instance.new("UICorner")
btnCorner.CornerRadius = UDim.new(0, 6)
btnCorner.Parent = btn

espButtons[opt.name] = btn
espButtonValues[opt.name] = false

end

-- Seção de cores
local colorSection = Instance.new("Frame")
colorSection.Size = UDim2.new(1, 0, 0, 45)
colorSection.Position = UDim2.new(0, 0, 0.92, 0)
colorSection.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
colorSection.BackgroundTransparency = 0.5
colorSection.BorderSizePixel = 0
colorSection.Parent = espContent

local colorCorner = Instance.new("UICorner")
colorCorner.CornerRadius = UDim.new(0, 6)
colorCorner.Parent = colorSection

local colorLabel = Instance.new("TextLabel")
colorLabel.Size = UDim2.new(0.35, 0, 1, 0)
colorLabel.Position = UDim2.new(0.05, 0, 0, 0)
colorLabel.BackgroundTransparency = 1
colorLabel.Text = "COR DAS ESP"
colorLabel.TextColor3 = whiteColor
colorLabel.Font = Enum.Font.GothamBold
colorLabel.TextSize = 12
colorLabel.TextXAlignment = Enum.TextXAlignment.Left
colorLabel.Parent = colorSection

local colors = {
{name = "🟡", color = Color3.fromRGB(255, 200, 50)},
{name = "🔴", color = Color3.fromRGB(255, 50, 50)},
{name = "🟢", color = Color3.fromRGB(50, 255, 50)},
{name = "🔵", color = Color3.fromRGB(50, 150, 255)},
{name = "🟣", color = Color3.fromRGB(200, 50, 255)},
}

for i, c in ipairs(colors) do
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(0.08, 0, 0.7, 0)
btn.Position = UDim2.new(0.4 + (i-1) * 0.11, 0, 0.15, 0)
btn.BackgroundColor3 = c.color
btn.Text = ""
btn.BorderSizePixel = 0
btn.Parent = colorSection

local btnCorner = Instance.new("UICorner")
btnCorner.CornerRadius = UDim.new(0, 8)
btnCorner.Parent = btn

if c.color == espColor then
    btn.BorderSizePixel = 2
    btn.BorderColor3 = Color3.fromRGB(255, 255, 255)
end

btn.MouseButton1Click:Connect(function()
    espColor = c.color
    for _, espData in pairs(espObjects) do
        if espData and espData.esp then
            for _, child in ipairs(espData.esp:GetChildren()) do
                if child:IsA("TextLabel") then
                    child.TextColor3 = espColor
                end
            end
        end
    end
    for _, b in ipairs(colorSection:GetChildren()) do
        if b:IsA("TextButton") then
            b.BorderSizePixel = 0
            if b.BackgroundColor3 == c.color then
                b.BorderSizePixel = 2
                b.BorderColor3 = Color3.fromRGB(255, 255, 255)
            end
        end
    end
end)

end

-- ========== CONTEÚDO DA TAB CONFIG ==========
local configContent = Instance.new("Frame")
configContent.Size = UDim2.new(0.95, 0, 0.80, 0)
configContent.Position = UDim2.new(0.025, 0, 0.08, 0)
configContent.BackgroundTransparency = 1
configContent.Visible = false
configContent.Parent = contentFrame

local configButtons = {}
local configValues = {
wallhack = false,
aimbot = false,
fps = false
}

function createConfigRow(title, desc, id, yPos)
local row = Instance.new("Frame")
row.Size = UDim2.new(1, 0, 0, 40)
row.Position = UDim2.new(0, 0, yPos, 0)
row.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
row.BackgroundTransparency = 0.5
row.BorderSizePixel = 0
row.Parent = configContent

local rowCorner = Instance.new("UICorner")
rowCorner.CornerRadius = UDim.new(0, 6)
rowCorner.Parent = row

local label = Instance.new("TextLabel")
label.Size = UDim2.new(0.5, 0, 1, 0)
label.Position = UDim2.new(0.05, 0, 0, 0)
label.BackgroundTransparency = 1
label.Text = title
label.TextColor3 = whiteColor
label.Font = Enum.Font.Gotham
label.TextSize = 13
label.TextXAlignment = Enum.TextXAlignment.Left
label.Parent = row

local descLabel = Instance.new("TextLabel")
descLabel.Size = UDim2.new(0.5, 0, 0.4, 0)
descLabel.Position = UDim2.new(0.05, 0, 0.55, 0)
descLabel.BackgroundTransparency = 1
descLabel.Text = desc
descLabel.TextColor3 = Color3.fromRGB(100, 100, 100)
descLabel.Font = Enum.Font.Gotham
descLabel.TextSize = 9
descLabel.TextXAlignment = Enum.TextXAlignment.Left
descLabel.Parent = row

local btn = Instance.new("TextButton")
btn.Size = UDim2.new(0.25, 0, 0.7, 0)
btn.Position = UDim2.new(0.72, 0, 0.15, 0)
btn.BackgroundColor3 = Color3.fromRGB(200, 50, 40)
btn.Text = "OFF"
btn.TextColor3 = whiteColor
btn.Font = Enum.Font.GothamBold
btn.TextSize = 12
btn.BorderSizePixel = 0
btn.Parent = row

local btnCorner = Instance.new("UICorner")
btnCorner.CornerRadius = UDim.new(0, 6)
btnCorner.Parent = btn

configButtons[id] = btn
configValues[id] = false

return row

end

createConfigRow("👁️ Wallhack", "Ver através das paredes", "wallhack", 0.02)
createConfigRow("🎯 Aimbot 50%", "Mira suave e humana", "aimbot", 0.18)
createConfigRow("⚡ Boost FPS", "Aumenta desempenho", "fps", 0.34)

-- ========== CONTEÚDO DA TAB INFO ==========
local infoContent = Instance.new("Frame")
infoContent.Size = UDim2.new(0.95, 0, 0.80, 0)
infoContent.Position = UDim2.new(0.025, 0, 0.08, 0)
infoContent.BackgroundTransparency = 1
infoContent.Visible = false
infoContent.Parent = contentFrame

local infoText = Instance.new("TextLabel")
infoText.Size = UDim2.new(1, 0, 1, 0)
infoText.BackgroundTransparency = 1
infoText.Text = "🔥 ROMALHO RAGE MENU v8.0\n\n👑 Criado por ROMALHO\n\n🛡️ Sistema Anti-Ban Ativo\n\n📌 Arraste para mover o painel\n\n📌 Botão [-] para minimizar\n\n📌 Tecla V = Esconder/Mostrar\n\n⚡ Compatível com TODOS os jogos!"
infoText.TextColor3 = whiteColor
infoText.Font = Enum.Font.Gotham
infoText.TextSize = 13
infoText.TextXAlignment = Enum.TextXAlignment.Center
infoText.TextYAlignment = Enum.TextYAlignment.Center
infoText.Parent = infoContent

-- ========== FUNÇÕES ==========

function switchTab(tabName)
currentTab = tabName
espContent.Visible = false
configContent.Visible = false
infoContent.Visible = false

if tabName == "ESP" then
    espContent.Visible = true
elseif tabName == "CONFIG" then
    configContent.Visible = true
elseif tabName == "INFO" then
    infoContent.Visible = true
end

for name, btn in pairs(tabButtons) do
    if name == tabName then
        btn.BackgroundColor3 = grayBg
        btn.TextColor3 = whiteColor
    else
        btn.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
        btn.TextColor3 = Color3.fromRGB(150, 150, 150)
    end
end

end

function toggleMinimize()
panelMinimized = not panelMinimized
if panelMinimized then
contentFrame.Visible = false
mainFrame.Size = UDim2.new(0, 350, 0, 55)
minimizeBtn.Text = "+"
minimizeBtn.BackgroundColor3 = Color3.fromRGB(50, 200, 50)
else
contentFrame.Visible = true
mainFrame.Size = UDim2.new(0, 350, 0, 520)
minimizeBtn.Text = "−"
minimizeBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 50)
end
end

-- ESP Functions
function createESP(targetPlayer)
local character = targetPlayer.Character
if not character or not character:FindFirstChild("HumanoidRootPart") then return end

local esp = Instance.new("BillboardGui")
esp.Name = "ESP_" .. targetPlayer.Name
esp.Size = UDim2.new(0, 300, 0, 120)
esp.StudsOffset = Vector3.new(0, 2.5, 0)
esp.AlwaysOnTop = true
esp.Parent = character

local nameLabel = Instance.new("TextLabel")
nameLabel.Size = UDim2.new(1, 0, 0.25, 0)
nameLabel.Position = UDim2.new(0, 0, 0, 0)
nameLabel.BackgroundTransparency = 1
nameLabel.Text = espNameActive and targetPlayer.Name or ""
nameLabel.TextColor3 = espColor
nameLabel.Font = Enum.Font.GothamBold
nameLabel.TextSize = 14
nameLabel.TextStrokeTransparency = 0.2
nameLabel.Parent = esp

local distLabel = Instance.new("TextLabel")
distLabel.Size = UDim2.new(1, 0, 0.2, 0)
distLabel.Position = UDim2.new(0, 0, 0.3, 0)
distLabel.BackgroundTransparency = 1
distLabel.Text = ""
distLabel.TextColor3 = espColor
distLabel.Font = Enum.Font.Gotham
distLabel.TextSize = 11
distLabel.Parent = esp

local healthBar = Instance.new("Frame")
healthBar.Size = UDim2.new(0.8, 0, 0.08, 0)
healthBar.Position = UDim2.new(0.1, 0, 0.55, 0)
healthBar.BackgroundColor3 = redColor
healthBar.BorderSizePixel = 0
healthBar.Visible = espHealthActive
healthBar.Parent = esp

local healthCorner = Instance.new("UICorner")
healthCorner.CornerRadius = UDim.new(0, 4)
healthCorner.Parent = healthBar

local box = Instance.new("Frame")
box.Size = UDim2.new(0.8, 0, 0.7, 0)
box.Position = UDim2.new(0.1, 0, 0.15, 0)
box.BackgroundTransparency = 0.8
box.BackgroundColor3 = espColor
box.BorderSizePixel = 2
box.BorderColor3 = espColor
box.Visible = espBoxActive
box.Parent = esp

local boxCorner = Instance.new("UICorner")
boxCorner.CornerRadius = UDim.new(0, 4)
boxCorner.Parent = box

espObjects[targetPlayer] = {
    esp = esp,
    name = nameLabel,
    distance = distLabel,
    healthBar = healthBar,
    box = box
}

end

function updateESP()
local hrp = player.Character and player.Character:FindFirstChild("HumanoidRootPart")

for _, otherPlayer in ipairs(Players:GetPlayers()) do
    if otherPlayer ~= player then
        if espActive and otherPlayer.Character and otherPlayer.Character:FindFirstChild("HumanoidRootPart") then
            if not espObjects[otherPlayer] then
                createESP(otherPlayer)
            else
                local espData = espObjects[otherPlayer]
                if espData and hrp and otherPlayer.Character:FindFirstChild("HumanoidRootPart") then
                    local distance = (hrp.Position - otherPlayer.Character.HumanoidRootPart.Position).Magnitude
                    if espDistanceActive and espData.distance then
                        espData.distance.Text = string.format("📏 %.1fm", distance)
                    else
                        espData.distance.Text = ""
                    end
                    
                    if espData.name then
                        espData.name.Text = espNameActive and otherPlayer.Name or ""
                    end
                    
                    if espData.healthBar then
                        espData.healthBar.Visible = espHealthActive
                        local humanoid = otherPlayer.Character:FindFirstChild("Humanoid")
                        if humanoid and espHealthActive then
                            local healthPercent = humanoid.Health / humanoid.MaxHealth
                            espData.healthBar.Size = UDim2.new(0.8 * healthPercent, 0, 0.08, 0)
                            if healthPercent > 0.5 then
                                espData.healthBar.BackgroundColor3 = greenColor
                            elseif healthPercent > 0.25 then
                                espData.healthBar.BackgroundColor3 = yellowColor
                            else
                                espData.healthBar.BackgroundColor3 = redColor
                            end
                        end
                    end
                    
                    if espData.box then
                        espData.box.Visible = espBoxActive
                        espData.box.BackgroundColor3 = espColor
                        espData.box.BorderColor3 = espColor
                    end
                end
            end
        else
            if espObjects[otherPlayer] then
                pcall(function() espObjects[otherPlayer].esp:Destroy() end)
                espObjects[otherPlayer] = nil
            end
        end
    end
end

end

function clearAllESP()
for _, espData in pairs(espObjects) do
pcall(function() espData.esp:Destroy() end)
end
espObjects = {}
end

function toggleESP()
espActive = not espActive
if espActive then
updateESP()
else
clearAllESP()
end
end

-- Eventos ESP
for name, btn in pairs(espButtons) do
btn.MouseButton1Click:Connect(function()
local value = not espButtonValues[name]
espButtonValues[name] = value
btn.BackgroundColor3 = value and greenColor or Color3.fromRGB(200, 50, 40)
btn.Text = value and "ON" or "OFF"

    if name == "ESP Line" then
        espLineActive = value
    elseif name == "ESP None" then
        -- Não faz nada
    elseif name == "ESP Name" then
        espNameActive = value
    elseif name == "ESP Health" then
        espHealthActive = value
    elseif name == "ESP Distance" then
        espDistanceActive = value
    elseif name == "ESP Box" then
        espBoxActive = value
    end
    
    if espLineActive or espNameActive or espHealthActive or espDistanceActive or espBoxActive then
        if not espActive then toggleESP() end
    else
        if espActive then toggleESP() end
    end
    
    if espActive then updateESP() end
end)

end

-- Eventos Config
configButtons.wallhack.MouseButton1Click:Connect(function()
configValues.wallhack = not configValues.wallhack
local btn = configButtons.wallhack
btn.BackgroundColor3 = configValues.wallhack and greenColor or Color3.fromRGB(200, 50, 40)
btn.Text = configValues.wallhack and "ON" or "OFF"

if configValues.wallhack then
    for _, otherPlayer in ipairs(Players:GetPlayers()) do
        if otherPlayer ~= player and otherPlayer.Character then
            for _, part in ipairs(otherPlayer.Character:GetChildren()) do
                if part:IsA("BasePart") then
                    part.Transparency = 0.7
                end
            end
        end
    end
else
    for _, otherPlayer in ipairs(Players:GetPlayers()) do
        if otherPlayer ~= player and otherPlayer.Character then
            for _, part in ipairs(otherPlayer.Character:GetChildren()) do
                if part:IsA("BasePart") then
                    part.Transparency = 0
                end
            end
        end
    end
end

end)

local aimbotActive = false
configButtons.aimbot.MouseButton1Click:Connect(function()
configValues.aimbot = not configValues.aimbot
local btn = configButtons.aimbot
btn.BackgroundColor3 = configValues.aimbot and greenColor or Color3.fromRGB(200, 50, 40)
btn.Text = configValues.aimbot and "ON" or "OFF"
aimbotActive = configValues.aimbot
end)

configButtons.fps.MouseButton1Click:Connect(function()
configValues.fps = not configValues.fps
local btn = configButtons.fps
btn.BackgroundColor3 = configValues.fps and greenColor or Color3.fromRGB(200, 50, 40)
btn.Text = configValues.fps and "ON" or "OFF"

if configValues.fps then
    pcall(function()
        Lighting.GlobalShadows = false
        Lighting.ShadowSoftness = 0
        if Workspace.Terrain then
            Workspace.Terrain.WaterWaveSize = 0
        end
        Lighting.Technology = Enum.Technology.Compatibility
        Lighting.Fog = false
    end)
else
    pcall(function()
        Lighting.GlobalShadows = true
        Lighting.ShadowSoftness = 2
        Lighting.Technology = Enum.Technology.ShadowMap
    end)
end

end)

-- Aimbot
function getClosestTarget()
local closest = nil
local closestDistance = math.huge
local center = Vector2.new(mouse.X, mouse.Y)

for _, otherPlayer in ipairs(Players:GetPlayers()) do
    if otherPlayer ~= player and otherPlayer.Character and otherPlayer.Character:FindFirstChild("Head") then
        local head = otherPlayer.Character.Head
        local success, headPos = pcall(function() return camera:WorldToScreenPoint(head.Position) end)
        if success and headPos and headPos.Z > 0 then
            local screenPos = Vector2.new(headPos.X, headPos.Y)
            local distance = (screenPos - center).Magnitude
            if distance < 90 and distance < closestDistance then
                closestDistance = distance
                closest = otherPlayer.Character
            end
        end
    end
end
return closest

end

function aimAtHead(target)
if target and target:FindFirstChild("Head") then
local headPos = target.Head.Position
local shake = Vector3.new(
math.random(-3, 3) * 0.3,
math.random(-2, 5) * 0.3,
math.random(-3, 3) * 0.3
)
local finalPos = headPos + shake
local newCFrame = CFrame.new(camera.CFrame.Position, finalPos)
camera.CFrame = camera.CFrame:Lerp(newCFrame, 0.25)
end
end

-- Painel oculto
local hiddenText = Instance.new("TextLabel")
hiddenText.Size = UDim2.new(0, 320, 0, 50)
hiddenText.Position = UDim2.new(0.5, -160, 0.92, 0)
hiddenText.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
hiddenText.BackgroundTransparency = 0.3
hiddenText.Text = "🔒 PAINEL OCULTO [Pressione V] 🔒\n👑 ROMALHO RAGE MENU v8.0 👑"
hiddenText.TextColor3 = yellowColor
hiddenText.Font = Enum.Font.GothamBold
hiddenText.TextSize = 11
hiddenText.Visible = false
hiddenText.Parent = screenGui

local hiddenCorner = Instance.new("UICorner")
hiddenCorner.CornerRadius = UDim.new(0, 15)
hiddenCorner.Parent = hiddenText

-- Eventos
minimizeBtn.MouseButton1Click:Connect(toggleMinimize)

closeBtn.MouseButton1Click:Connect(function()
mainFrame.Visible = false
hiddenText.Visible = true
task.wait(2)
hiddenText.Visible = false
end)

function togglePanel()
panelVisible = not panelVisible
mainFrame.Visible = panelVisible
hiddenText.Visible = not panelVisible
if not panelVisible then
task.wait(2)
hiddenText.Visible = false
end
end

UserInputService.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed then return end
if input.KeyCode == Enum.KeyCode.V then
togglePanel()
end
end)

-- Sistema de arrastar
local dragging = false
local dragStart = nil
local startPos = nil

mainFrame.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 and input.Position.Y < 50 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)

mainFrame.InputChanged:Connect(function(input)
if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then
local delta = input.Position - dragStart
mainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end
end)

-- Loop principal
RunService.RenderStepped:Connect(function()
if aimbotActive then
local target = getClosestTarget()
if target then
aimAtHead(target)
end
end

if espActive then
    updateESP()
end

end)

-- Efeito inicial
mainFrame.BackgroundTransparency = 1
for i = 0, 1, 0.05 do
task.wait(0.01)
mainFrame.BackgroundTransparency = 0.1 - (0.1 * i)
end

print("🔥 ROMALHO RAGE MENU v8.0 CARREGADO!")
print("📌 Arraste o painel pelo cabeçalho")
print("📌 Botão [-] para minimizar")
print("📌 Tecla V para esconder")
print("✅ Compatível com TODOS os jogos de tiro!")

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment