
Key RequiredUniversal

-- EstiHUB v5 | Age of Heroes |
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local VirtualUser = game:GetService("VirtualUser")
local Camera = workspace.CurrentCamera
local LocalPlayer = Players.LocalPlayer
-- ===== НАСТРОЙКИ (можно менять в меню) =====
local KILLAURA_RANGE = 30
local hitboxScale = 1.8 -- текущий множитель хитбоксов
local minHitbox = 1.0
local maxHitbox = 5.0
-- Цвета для ESP (по умолчанию)
local heroColor = Color3.fromRGB(0, 255, 0) -- зелёный
local villainColor = Color3.fromRGB(255, 0, 0) -- красный
-- Настройки отображения
local showName = true
local showDistance = true
local showSkeleton = false
local useTeamColor = false -- если true, используем цвет команды (если есть)
-- ===== СОСТОЯНИЯ =====
local killAuraEnabled = false
local espEnabled = false
local autoFarmEnabled = false
local teamCheck = false
local hitboxEnabled = false
local menuOpen = true
-- ===== ХРАНИЛИЩА =====
local originalSizes = {}
local espObjects = {}
local skeletonLines = {} -- для линий скелета
-- ===== ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ =====
local function getValidPlayers()
local list = {}
for _, player in pairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
if teamCheck and player.Team == LocalPlayer.Team then
-- пропускаем союзников
else
local hum = player.Character:FindFirstChild("Humanoid")
if hum and hum.Health > 0 then
table.insert(list, player)
end
end
end
end
return list
end
local function getClosestPlayer()
local closest = nil
local shortestDist = math.huge
local origin = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
if not origin then return nil end
for _, player in pairs(getValidPlayers()) do
local target = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
if target then
local dist = (origin.Position - target.Position).Magnitude
if dist < shortestDist then
shortestDist = dist
closest = player
end
end
end
return closest, shortestDist
end
-- ===== ХИТБОКСЫ (регулируемые) =====
local function expandHitboxes(player)
if not player or not player.Character then return end
local character = player.Character
if not originalSizes[player] then
originalSizes[player] = {}
end
for _, part in pairs(character:GetDescendants()) do
if part:IsA("BasePart") and part.CanCollide then
if not originalSizes[player][part] then
originalSizes[player][part] = part.Size
end
if hitboxEnabled then
part.Size = originalSizes[player][part] * hitboxScale
else
part.Size = originalSizes[player][part]
end
end
end
end
local function applyHitboxToAll()
for _, player in pairs(Players:GetPlayers()) do
if player ~= LocalPlayer then
expandHitboxes(player)
end
end
end
-- следим за новыми игроками и перерождениями
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function(character)
task.wait(0.2)
expandHitboxes(player)
end)
if player.Character then
task.wait(0.2)
expandHitboxes(player)
end
end
-- ===== KILL AURA (реальный клик) =====
local function killAuraLoop()
if not killAuraEnabled then return end
local target, dist = getClosestPlayer()
if target and dist <= KILLAURA_RANGE then
pcall(function()
VirtualUser:Click()
end)
end
end
-- ===== ESP (с цветами команд и скелетом) =====
local function getPlayerColor(player)
if useTeamColor and player.Team then
local teamColor = player.Team.TeamColor
if teamColor then
return teamColor.Color
end
end
-- если команда Hero или Villain (по названию)
if player.Team and player.Team.Name == "Hero" then
return heroColor
elseif player.Team and player.Team.Name == "Villain" then
return villainColor
else
return Color3.fromRGB(255, 255, 255) -- белый для нейтральных
end
end
-- Создание BillboardGui для ESP
local function createESP(player)
if espObjects[player] then return end
local billboard = Instance.new("BillboardGui")
billboard.Name = "EstiESP"
billboard.Size = UDim2.new(0, 250, 0, 60)
billboard.StudsOffset = Vector3.new(0, 3, 0)
billboard.AlwaysOnTop = true
billboard.Enabled = false
local nameLabel = Instance.new("TextLabel", billboard)
nameLabel.Size = UDim2.new(1, 0, 0.4, 0)
nameLabel.BackgroundTransparency = 1
nameLabel.TextColor3 = getPlayerColor(player)
nameLabel.TextStrokeTransparency = 0.3
nameLabel.Font = Enum.Font.GothamBold
nameLabel.TextSize = 14
nameLabel.Text = player.Name
local distLabel = Instance.new("TextLabel", billboard)
distLabel.Size = UDim2.new(1, 0, 0.3, 0)
distLabel.Position = UDim2.new(0, 0, 0.4, 0)
distLabel.BackgroundTransparency = 1
distLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
distLabel.Font = Enum.Font.Gotham
distLabel.TextSize = 12
distLabel.Text = "0 studs"
local healthLabel = Instance.new("TextLabel", billboard)
healthLabel.Size = UDim2.new(1, 0, 0.3, 0)
healthLabel.Position = UDim2.new(0, 0, 0.7, 0)
healthLabel.BackgroundTransparency = 1
healthLabel.TextColor3 = Color3.fromRGB(0, 255, 0)
healthLabel.Font = Enum.Font.Gotham
healthLabel.TextSize = 12
healthLabel.Text = "100%"
espObjects[player] = {
billboard = billboard,
nameLabel = nameLabel,
distLabel = distLabel,
healthLabel = healthLabel
}
end
-- Обновление ESP
local function updateESP()
if not espEnabled then
for _, data in pairs(espObjects) do
data.billboard.Enabled = false
end
-- скрыть скелет
for _, lines in pairs(skeletonLines) do
for _, line in pairs(lines) do
line.Visible = false
end
end
return
end
for player, data in pairs(espObjects) do
local billboard = data.billboard
local nameLabel = data.nameLabel
local distLabel = data.distLabel
local healthLabel = data.healthLabel
if player.Character and player.Character:FindFirstChild("HumanoidRootPart") and player ~= LocalPlayer then
if teamCheck and player.Team == LocalPlayer.Team then
billboard.Enabled = false
else
billboard.Enabled = true
local dist = (LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") and
(LocalPlayer.Character.HumanoidRootPart.Position - player.Character.HumanoidRootPart.Position).Magnitude) or 0
distLabel.Text = math.floor(dist) .. " studs"
local hum = player.Character:FindFirstChild("Humanoid")
if hum then
local hpPercent = (hum.Health / hum.MaxHealth) * 100
healthLabel.Text = math.floor(hpPercent) .. "%"
healthLabel.TextColor3 = Color3.fromRGB(255 * (1 - hpPercent/100), 255 * (hpPercent/100), 0)
end
-- обновляем цвет имени в зависимости от команды
nameLabel.TextColor3 = getPlayerColor(player)
nameLabel.Text = showName and player.Name or ""
distLabel.Visible = showDistance
healthLabel.Visible = true
local head = player.Character:FindFirstChild("Head") or player.Character:FindFirstChild("HumanoidRootPart")
if head then
billboard.Parent = head
end
end
else
billboard.Enabled = false
end
end
-- Скелет (кости)
if showSkeleton and espEnabled then
for player, data in pairs(espObjects) do
if player.Character and player ~= LocalPlayer then
-- рисуем линии между суставами
local parts = {
"Head", "UpperTorso", "LowerTorso", "LeftUpperArm", "LeftLowerArm",
"RightUpperArm", "RightLowerArm", "LeftUpperLeg", "LeftLowerLeg",
"RightUpperLeg", "RightLowerLeg"
}
local connections = {
{"Head", "UpperTorso"},
{"UpperTorso", "LowerTorso"},
{"UpperTorso", "LeftUpperArm"},
{"LeftUpperArm", "LeftLowerArm"},
{"UpperTorso", "RightUpperArm"},
{"RightUpperArm", "RightLowerArm"},
{"LowerTorso", "LeftUpperLeg"},
{"LeftUpperLeg", "LeftLowerLeg"},
{"LowerTorso", "RightUpperLeg"},
{"RightUpperLeg", "RightLowerLeg"},
}
if not skeletonLines[player] then
skeletonLines[player] = {}
for i = 1, #connections do
local line = Drawing.new("Line")
line.Thickness = 2
line.Color = getPlayerColor(player)
line.Transparency = 0.5
line.Visible = false
skeletonLines[player][i] = line
end
end
local lines = skeletonLines[player]
local char = player.Character
for i, conn in pairs(connections) do
local p1 = char:FindFirstChild(conn[1])
local p2 = char:FindFirstChild(conn[2])
if p1 and p2 then
local pos1, onScreen1 = Camera:WorldToViewportPoint(p1.Position)
local pos2, onScreen2 = Camera:WorldToViewportPoint(p2.Position)
if onScreen1 and onScreen2 then
lines[i].From = Vector2.new(pos1.X, pos1.Y)
lines[i].To = Vector2.new(pos2.X, pos2.Y)
lines[i].Visible = true
lines[i].Color = getPlayerColor(player)
else
lines[i].Visible = false
end
else
lines[i].Visible = false
end
end
else
if skeletonLines[player] then
for _, line in pairs(skeletonLines[player]) do
line.Visible = false
end
end
end
end
else
for _, lines in pairs(skeletonLines) do
for _, line in pairs(lines) do
line.Visible = false
end
end
end
end
-- Прикрепление ESP к игроку
local function attachESP(player)
createESP(player)
player.CharacterAdded:Connect(function(character)
task.wait(0.2)
local data = espObjects[player]
if data and data.billboard then
local head = character:FindFirstChild("Head") or character:FindFirstChild("HumanoidRootPart")
if head then
data.billboard.Parent = head
end
end
end)
if player.Character then
local data = espObjects[player]
if data and data.billboard then
local head = player.Character:FindFirstChild("Head") or player.Character:FindFirstChild("HumanoidRootPart")
if head then
data.billboard.Parent = head
end
end
end
end
-- ===== AUTO FARM (NPC) =====
local function findNPCs()
local npcs = {}
for _, obj in pairs(workspace:GetDescendants()) do
if obj:IsA("Model") and obj:FindFirstChild("Humanoid") then
local isPlayer = false
for _, player in pairs(Players:GetPlayers()) do
if player.Character == obj then
isPlayer = true
break
end
end
if not isPlayer then
table.insert(npcs, obj)
end
end
end
return npcs
end
local function autoFarmLoop()
if not autoFarmEnabled then return end
local npcs = findNPCs()
local origin = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
if not origin then return end
local closestNPC = nil
local shortestDist = math.huge
for _, npc in pairs(npcs) do
local hrp = npc:FindFirstChild("HumanoidRootPart")
if hrp then
local dist = (origin.Position - hrp.Position).Magnitude
if dist < shortestDist then
shortestDist = dist
closestNPC = npc
end
end
end
if closestNPC and shortestDist <= KILLAURA_RANGE then
pcall(function()
VirtualUser:Click()
end)
elseif closestNPC then
local hrp = closestNPC:FindFirstChild("HumanoidRootPart")
if hrp and LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
LocalPlayer.Character.HumanoidRootPart.CFrame = hrp.CFrame + Vector3.new(0, 5, 0)
end
end
end
-- ===== РАДУЖНАЯ НАДПИСЬ (уменьшена, в рамке) =====
local function createRainbowText()
local gui = Instance.new("ScreenGui")
gui.Name = "EstikBloody"
gui.Parent = LocalPlayer:WaitForChild("PlayerGui")
gui.ResetOnSpawn = false
local frame = Instance.new("Frame")
frame.Parent = gui
frame.BackgroundColor3 = Color3.fromRGB(0, 0, 0, 0.5)
frame.BorderSizePixel = 2
frame.BorderColor3 = Color3.fromRGB(255, 0, 255)
frame.Size = UDim2.new(0, 120, 0, 30)
frame.Position = UDim2.new(0.02, 0, 0.02, 0)
local label = Instance.new("TextLabel")
label.Parent = frame
label.Text = "EstikBloody"
label.TextColor3 = Color3.fromRGB(255, 0, 0)
label.BackgroundTransparency = 1
label.Size = UDim2.new(1, 0, 1, 0)
label.Font = Enum.Font.GothamBold
label.TextSize = 14
label.TextScaled = true
label.TextStrokeTransparency = 0.2
local hue = 0
RunService.RenderStepped:Connect(function()
hue = (hue + 0.005) % 1
label.TextColor3 = Color3.fromHSV(hue, 1, 1)
end)
return frame
end
-- ===== КРАСИВОЕ МЕНЮ (квадратное, с вкладками, закругления) =====
local function createMainMenu()
local playerGui = LocalPlayer:WaitForChild("PlayerGui")
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "EstiHUB_Menu"
screenGui.Parent = playerGui
screenGui.ResetOnSpawn = false
local mainFrame = Instance.new("Frame")
mainFrame.Parent = screenGui
mainFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
mainFrame.BackgroundTransparency = 0.15
mainFrame.BorderSizePixel = 0
mainFrame.Position = UDim2.new(0.35, 0, 0.15, 0)
mainFrame.Size = UDim2.new(0, 320, 0, 340)
mainFrame.Active = true
mainFrame.Draggable = true
mainFrame.ClipsDescendants = true
-- закругления (с помощью Corner)
local corner = Instance.new("UICorner")
corner.Parent = mainFrame
corner.CornerRadius = UDim.new(0, 10)
-- тень
local shadow = Instance.new("Frame")
shadow.Parent = mainFrame
shadow.BackgroundColor3 = Color3.fromRGB(0,0,0)
shadow.BackgroundTransparency = 0.5
shadow.Size = UDim2.new(1, 0, 1, 0)
shadow.Position = UDim2.new(0, 5, 0, 5)
shadow.ZIndex = -1
shadow.BorderSizePixel = 0
local shadowCorner = Instance.new("UICorner")
shadowCorner.Parent = shadow
shadowCorner.CornerRadius = UDim.new(0, 10)
local title = Instance.new("TextLabel")
title.Parent = mainFrame
title.Text = "EstiHUB"
title.TextColor3 = Color3.fromRGB(255, 70, 70)
title.BackgroundTransparency = 1
title.Size = UDim2.new(1, 0, 0, 40)
title.Position = UDim2.new(0, 0, 0, 0)
title.Font = Enum.Font.GothamBold
title.TextSize = 24
title.TextXAlignment = Enum.TextXAlignment.Center
-- Панель вкладок
local tabPanel = Instance.new("Frame")
tabPanel.Parent = mainFrame
tabPanel.BackgroundColor3 = Color3.fromRGB(45, 45, 55)
tabPanel.BackgroundTransparency = 0.2
tabPanel.BorderSizePixel = 0
tabPanel.Size = UDim2.new(1, 0, 0, 35)
tabPanel.Position = UDim2.new(0, 0, 0, 40)
local contentPanel = Instance.new("Frame")
contentPanel.Parent = mainFrame
contentPanel.BackgroundColor3 = Color3.fromRGB(30, 30, 40)
contentPanel.BackgroundTransparency = 0.3
contentPanel.BorderSizePixel = 0
contentPanel.Size = UDim2.new(1, 0, 1, -75)
contentPanel.Position = UDim2.new(0, 0, 0, 75)
local tabs = {
{name = "Combat", id = "combat"},
{name = "ESP", id = "esp"},
{name = "Farm", id = "farm"},
{name = "Hitbox", id = "hitbox"},
{name = "Settings", id = "settings"}
}
local tabButtons = {}
local contentFrames = {}
local function createTabButton(tabName, tabId, xPos)
local btn = Instance.new("TextButton")
btn.Parent = tabPanel
btn.Text = tabName
btn.BackgroundColor3 = Color3.fromRGB(55, 55, 65)
btn.Size = UDim2.new(0, 64, 1, -2)
btn.Position = UDim2.new(0, xPos, 0, 1)
btn.BorderSizePixel = 0
btn.Font = Enum.Font.Gotham
btn.TextSize = 12
btn.TextColor3 = Color3.fromRGB(220, 220, 220)
btn.Name = tabId
tabButtons[tabId] = btn
return btn
end
local function createContentFrame(tabId)
local frame = Instance.new("Frame")
frame.Parent = contentPanel
frame.BackgroundTransparency = 1
frame.Size = UDim2.new(1, 0, 1, 0)
frame.Position = UDim2.new(0, 0, 0, 0)
frame.Visible = false
frame.Name = tabId
contentFrames[tabId] = frame
return frame
end
-- ===== ВКЛАДКА COMBAT =====
local combatFrame = createContentFrame("combat")
local killBtn = Instance.new("TextButton")
killBtn.Parent = combatFrame
killBtn.Text = "Kill Aura: OFF"
killBtn.BackgroundColor3 = Color3.fromRGB(70, 70, 80)
killBtn.Size = UDim2.new(0.8, 0, 0, 35)
killBtn.Position = UDim2.new(0.1, 0, 0.1, 0)
killBtn.Font = Enum.Font.Gotham
killBtn.TextSize = 14
killBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
killBtn.BorderSizePixel = 0
killBtn.MouseButton1Click:Connect(function()
killAuraEnabled = not killAuraEnabled
killBtn.Text = killAuraEnabled and "Kill Aura: ON" or "Kill Aura: OFF"
end)
-- ===== ВКЛАДКА ESP =====
local espFrame = createContentFrame("esp")
local espBtn = Instance.new("TextButton")
espBtn.Parent = espFrame
espBtn.Text = "ESP: OFF"
espBtn.BackgroundColor3 = Color3.fromRGB(70, 70, 80)
espBtn.Size = UDim2.new(0.8, 0, 0, 30)
espBtn.Position = UDim2.new(0.1, 0, 0.05, 0)
espBtn.Font = Enum.Font.Gotham
espBtn.TextSize = 14
espBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
espBtn.BorderSizePixel = 0
espBtn.MouseButton1Click:Connect(function()
espEnabled = not espEnabled
espBtn.Text = espEnabled and "ESP: ON" or "ESP: OFF"
if espEnabled then
for _, player in pairs(Players:GetPlayers()) do
attachESP(player)
end
end
end)
-- Настройки отображения
local nameCheck = Instance.new("TextButton")
nameCheck.Parent = espFrame
nameCheck.Text = "Show Name: ON"
nameCheck.BackgroundColor3 = Color3.fromRGB(55, 55, 65)
nameCheck.Size = UDim2.new(0.35, 0, 0, 25)
nameCheck.Position = UDim2.new(0.1, 0, 0.2, 0)
nameCheck.Font = Enum.Font.Gotham
nameCheck.TextSize = 12
nameCheck.TextColor3 = Color3.fromRGB(220, 220, 220)
nameCheck.BorderSizePixel = 0
nameCheck.MouseButton1Click:Connect(function()
showName = not showName
nameCheck.Text = showName and "Show Name: ON" or "Show Name: OFF"
end)
local distCheck = Instance.new("TextButton")
distCheck.Parent = espFrame
distCheck.Text = "Show Dist: ON"
distCheck.BackgroundColor3 = Color3.fromRGB(55, 55, 65)
distCheck.Size = UDim2.new(0.35, 0, 0, 25)
distCheck.Position = UDim2.new(0.55, 0, 0.2, 0)
distCheck.Font = Enum.Font.Gotham
distCheck.TextSize = 12
distCheck.TextColor3 = Color3.fromRGB(220, 220, 220)
distCheck.BorderSizePixel = 0
distCheck.MouseButton1Click:Connect(function()
showDistance = not showDistance
distCheck.Text = showDistance and "Show Dist: ON" or "Show Dist: OFF"
end)
local skeletonCheck = Instance.new("TextButton")
skeletonCheck.Parent = espFrame
skeletonCheck.Text = "Skeleton: OFF"
skeletonCheck.BackgroundColor3 = Color3.fromRGB(55, 55, 65)
skeletonCheck.Size = UDim2.new(0.35, 0, 0, 25)
skeletonCheck.Position = UDim2.new(0.1, 0, 0.35, 0)
skeletonCheck.Font = Enum.Font.Gotham
skeletonCheck.TextSize = 12
skeletonCheck.TextColor3 = Color3.fromRGB(220, 220, 220)
skeletonCheck.BorderSizePixel = 0
skeletonCheck.MouseButton1Click:Connect(function()
showSkeleton = not showSkeleton
skeletonCheck.Text = showSkeleton and "Skeleton: ON" or "Skeleton: OFF"
if not showSkeleton then
for _, lines in pairs(skeletonLines) do
for _, line in pairs(lines) do
line.Visible = false
end
end
end
end)
-- Выбор цвета для Hero
local heroColorLabel = Instance.new("TextLabel")
heroColorLabel.Parent = espFrame
heroColorLabel.Text = "Hero Color:"
heroColorLabel.BackgroundTransparency = 1
heroColorLabel.Size = UDim2.new(0.3, 0, 0, 25)
heroColorLabel.Position = UDim2.new(0.05, 0, 0.5, 0)
heroColorLabel.Font = Enum.Font.Gotham
heroColorLabel.TextSize = 12
heroColorLabel.TextColor3 = Color3.fromRGB(200,200,200)
heroColorLabel.TextXAlignment = Enum.TextXAlignment.Right
local heroColorBtn = Instance.new("TextButton")
heroColorBtn.Parent = espFrame
heroColorBtn.Text = "Green"
heroColorBtn.BackgroundColor3 = Color3.fromRGB(0, 255, 0)
heroColorBtn.Size = UDim2.new(0.2, 0, 0, 25)
heroColorBtn.Position = UDim2.new(0.4, 0, 0.5, 0)
heroColorBtn.Font = Enum.Font.Gotham
heroColorBtn.TextSize = 12
heroColorBtn.TextColor3 = Color3.fromRGB(0,0,0)
heroColorBtn.BorderSizePixel = 0
local heroColors = {Color3.fromRGB(0,255,0), Color3.fromRGB(0,0,255), Color3.fromRGB(255,255,0), Color3.fromRGB(255,0,255), Color3.fromRGB(255,165,0), Color3.fromRGB(255,255,255), Color3.fromRGB(255,0,0)}
local heroColorNames = {"Green","Blue","Yellow","Purple","Orange","White","Red"}
local heroIdx = 1
heroColorBtn.MouseButton1Click:Connect(function()
heroIdx = heroIdx % #heroColors + 1
heroColor = heroColors[heroIdx]
heroColorBtn.BackgroundColor3 = heroColor
heroColorBtn.Text = heroColorNames[heroIdx]
-- обновить цвет у существующих ESP
for player, data in pairs(espObjects) do
if data.nameLabel then
data.nameLabel.TextColor3 = getPlayerColor(player)
end
end
end)
-- Выбор цвета для Villain
local villainColorLabel = Instance.new("TextLabel")
villainColorLabel.Parent = espFrame
villainColorLabel.Text = "Villain Color:"
villainColorLabel.BackgroundTransparency = 1
villainColorLabel.Size = UDim2.new(0.3, 0, 0, 25)
villainColorLabel.Position = UDim2.new(0.05, 0, 0.7, 0)
villainColorLabel.Font = Enum.Font.Gotham
villainColorLabel.TextSize = 12
villainColorLabel.TextColor3 = Color3.fromRGB(200,200,200)
villainColorLabel.TextXAlignment = Enum.TextXAlignment.Right
local villainColorBtn = Instance.new("TextButton")
villainColorBtn.Parent = espFrame
villainColorBtn.Text = "Red"
villainColorBtn.BackgroundColor3 = Color3.fromRGB(255, 0, 0)
villainColorBtn.Size = UDim2.new(0.2, 0, 0, 25)
villainColorBtn.Position = UDim2.new(0.4, 0, 0.7, 0)
villainColorBtn.Font = Enum.Font.Gotham
villainColorBtn.TextSize = 12
villainColorBtn.TextColor3 = Color3.fromRGB(255,255,255)
villainColorBtn.BorderSizePixel = 0
local villainColors = {Color3.fromRGB(255,0,0), Color3.fromRGB(0,0,255), Color3.fromRGB(255,255,0), Color3.fromRGB(255,0,255), Color3.fromRGB(255,165,0), Color3.fromRGB(255,255,255), Color3.fromRGB(0,255,0)}
local villainColorNames = {"Red","Blue","Yellow","Purple","Orange","White","Green"}
local villainIdx = 1
villainColorBtn.MouseButton1Click:Connect(function()
villainIdx = villainIdx % #villainColors + 1
villainColor = villainColors[villainIdx]
villainColorBtn.BackgroundColor3 = villainColor
villainColorBtn.Text = villainColorNames[villainIdx]
for player, data in pairs(espObjects) do
if data.nameLabel then
data.nameLabel.TextColor3 = getPlayerColor(player)
end
end
end)
-- ===== ВКЛАДКА FARM =====
local farmFrame = createContentFrame("farm")
local farmBtn = Instance.new("TextButton")
farmBtn.Parent = farmFrame
farmBtn.Text = "Auto Farm: OFF"
farmBtn.BackgroundColor3 = Color3.fromRGB(70, 70, 80)
farmBtn.Size = UDim2.new(0.8, 0, 0, 35)
farmBtn.Position = UDim2.new(0.1, 0, 0.1, 0)
farmBtn.Font = Enum.Font.Gotham
farmBtn.TextSize = 14
farmBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
farmBtn.BorderSizePixel = 0
farmBtn.MouseButton1Click:Connect(function()
autoFarmEnabled = not autoFarmEnabled
farmBtn.Text = autoFarmEnabled and "Auto Farm: ON" or "Auto Farm: OFF"
end)
-- ===== ВКЛАДКА HITBOX =====
local hitboxFrame = createContentFrame("hitbox")
local hitboxBtn = Instance.new("TextButton")
hitboxBtn.Parent = hitboxFrame
hitboxBtn.Text = "Hitbox: OFF"
hitboxBtn.BackgroundColor3 = Color3.fromRGB(70, 70, 80)
hitboxBtn.Size = UDim2.new(0.8, 0, 0, 30)
hitboxBtn.Position = UDim2.new(0.1, 0, 0.05, 0)
hitboxBtn.Font = Enum.Font.Gotham
hitboxBtn.TextSize = 14
hitboxBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
hitboxBtn.BorderSizePixel = 0
hitboxBtn.MouseButton1Click:Connect(function()
hitboxEnabled = not hitboxEnabled
hitboxBtn.Text = hitboxEnabled and "Hitbox: ON" or "Hitbox: OFF"
applyHitboxToAll()
end)
-- Регулировка множителя
local scaleLabel = Instance.new("TextLabel")
scaleLabel.Parent = hitboxFrame
scaleLabel.Text = "Scale: " .. string.format("%.1f", hitboxScale)
scaleLabel.BackgroundTransparency = 1
scaleLabel.TextColor3 = Color3.fromRGB(255,255,255)
scaleLabel.Size = UDim2.new(0.4, 0, 0, 25)
scaleLabel.Position = UDim2.new(0.3, 0, 0.35, 0)
scaleLabel.Font = Enum.Font.Gotham
scaleLabel.TextSize = 14
local minusBtn = Instance.new("TextButton")
minusBtn.Parent = hitboxFrame
minusBtn.Text = "-"
minusBtn.BackgroundColor3 = Color3.fromRGB(55, 55, 65)
minusBtn.Size = UDim2.new(0.15, 0, 0, 25)
minusBtn.Position = UDim2.new(0.1, 0, 0.35, 0)
minusBtn.Font = Enum.Font.Gotham
minusBtn.TextSize = 16
minusBtn.TextColor3 = Color3.fromRGB(255,255,255)
minusBtn.BorderSizePixel = 0
minusBtn.MouseButton1Click:Connect(function()
hitboxScale = math.max(minHitbox, hitboxScale - 0.2)
scaleLabel.Text = "Scale: " .. string.format("%.1f", hitboxScale)
if hitboxEnabled then applyHitboxToAll() end
end)
local plusBtn = Instance.new("TextButton")
plusBtn.Parent = hitboxFrame
plusBtn.Text = "+"
plusBtn.BackgroundColor3 = Color3.fromRGB(55, 55, 65)
plusBtn.Size = UDim2.new(0.15, 0, 0, 25)
plusBtn.Position = UDim2.new(0.75, 0, 0.35, 0)
plusBtn.Font = Enum.Font.Gotham
plusBtn.TextSize = 16
plusBtn.TextColor3 = Color3.fromRGB(255,255,255)
plusBtn.BorderSizePixel = 0
plusBtn.MouseButton1Click:Connect(function()
hitboxScale = math.min(maxHitbox, hitboxScale + 0.2)
scaleLabel.Text = "Scale: " .. string.format("%.1f", hitboxScale)
if hitboxEnabled then applyHitboxToAll() end
end)
-- ===== ВКЛАДКА SETTINGS =====
local settingsFrame = createContentFrame("settings")
local teamBtn = Instance.new("TextButton")
teamBtn.Parent = settingsFrame
teamBtn.Text = "Team Check: OFF"
teamBtn.BackgroundColor3 = Color3.fromRGB(70, 70, 80)
teamBtn.Size = UDim2.new(0.8, 0, 0, 35)
teamBtn.Position = UDim2.new(0.1, 0, 0.1, 0)
teamBtn.Font = Enum.Font.Gotham
teamBtn.TextSize = 14
teamBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
teamBtn.BorderSizePixel = 0
teamBtn.MouseButton1Click:Connect(function()
teamCheck = not teamCheck
teamBtn.Text = teamCheck and "Team Check: ON" or "Team Check: OFF"
end)
-- Использовать цвет команды
local teamColorCheck = Instance.new("TextButton")
teamColorCheck.Parent = settingsFrame
teamColorCheck.Text = "Use Team Color: OFF"
teamColorCheck.BackgroundColor3 = Color3.fromRGB(55, 55, 65)
teamColorCheck.Size = UDim2.new(0.8, 0, 0, 30)
teamColorCheck.Position = UDim2.new(0.1, 0, 0.5, 0)
teamColorCheck.Font = Enum.Font.Gotham
teamColorCheck.TextSize = 12
teamColorCheck.TextColor3 = Color3.fromRGB(220, 220, 220)
teamColorCheck.BorderSizePixel = 0
teamColorCheck.MouseButton1Click:Connect(function()
useTeamColor = not useTeamColor
teamColorCheck.Text = useTeamColor and "Use Team Color: ON" or "Use Team Color: OFF"
for player, data in pairs(espObjects) do
if data.nameLabel then
data.nameLabel.TextColor3 = getPlayerColor(player)
end
end
end)
-- ===== РАЗМЕЩЕНИЕ КНОПОК ВКЛАДОК =====
local xPos = 0
for _, tab in pairs(tabs) do
local btn = createTabButton(tab.name, tab.id, xPos)
xPos = xPos + 64
btn.MouseButton1Click:Connect(function()
for _, frame in pairs(contentFrames) do
frame.Visible = false
end
if contentFrames[tab.id] then
contentFrames[tab.id].Visible = true
end
for _, b in pairs(tabButtons) do
b.BackgroundColor3 = Color3.fromRGB(55, 55, 65)
end
btn.BackgroundColor3 = Color3.fromRGB(90, 90, 110)
end)
end
-- По умолчанию показываем Combat
if contentFrames["combat"] then
contentFrames["combat"].Visible = true
tabButtons["combat"].BackgroundColor3 = Color3.fromRGB(90, 90, 110)
end
-- Открытие/закрытие по Left Shift
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed then return end
if input.KeyCode == Enum.KeyCode.LeftShift then
menuOpen = not menuOpen
mainFrame.Visible = menuOpen
end
end)
return mainFrame
end
-- ===== ИНИЦИАЛИЗАЦИЯ =====
createRainbowText()
createMainMenu()
for _, player in pairs(Players:GetPlayers()) do
attachESP(player)
end
Players.PlayerAdded:Connect(function(player)
attachESP(player)
onPlayerAdded(player)
end)
for _, player in pairs(Players:GetPlayers()) do
if player ~= LocalPlayer then
onPlayerAdded(player)
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
for _, player in pairs(Players:GetPlayers()) do
if player ~= LocalPlayer then
player.CharacterAdded:Connect(function()
task.wait(0.2)
if hitboxEnabled then
expandHitboxes(player)
end
end)
end
end
-- Запуск лупов
RunService.RenderStepped:Connect(function()
killAuraLoop()
updateESP()
autoFarmLoop()
end)
print("✅ EstiHUB v5 загружен! Left Shift — меню. Наслаждайся!")No comments yet for this script.



