--[[
RIVALS ULTIMATE - ESP + TRIGGERBOT
- ESP: красный контур врагов (без лагов, без текста)
- Triggerbot: автоматический выстрел при наведении на врага
БИНД: V - открыть меню
--]]
-- ========== ПЕРЕМЕННЫЕ ==========
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local Workspace = game:GetService("Workspace")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Camera = workspace.CurrentCamera
local VirtualInput = game:GetService("VirtualInputManager")
-- Состояния
local TriggerbotEnabled = false
local EspEnabled = false
local MenuOpen = false
-- ESP объекты
local ESPHighlights = {}
-- ========== ПОЛУЧЕНИЕ ВРАГОВ ==========
local function GetEnemies()
local enemies = {}
for _, player in pairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
local team = LocalPlayer.Team
if team and player.Team ~= team then
table.insert(enemies, player)
elseif not team then
table.insert(enemies, player)
end
end
end
return enemies
end
-- ========== TRIGGERBOT (авто-выстрел при наведении) ==========
local function DoTriggerbot()
if not TriggerbotEnabled then return end
local enemies = GetEnemies()
local viewportSize = Camera.ViewportSize
local center = Vector2.new(viewportSize.X / 2, viewportSize.Y / 2)
local closestDist = 50 -- FOV для триггербота
local target = nil
-- Поиск ближайшего врага к прицелу
for _, enemy in pairs(enemies) do
local character = enemy.Character
if character then
local head = character:FindFirstChild("Head")
if head then
local vector, onScreen = Camera:WorldToViewportPoint(head.Position)
if onScreen and vector.Z > 0 then
local dist = (Vector2.new(vector.X, vector.Y) - center).magnitude
if dist < closestDist then
closestDist = dist
target = enemy
end
end
end
end
end
-- Если нашли врага в прицеле — стреляем
if target then
pcall(function()
VirtualInput:SendMouseButtonEvent(0, 0, 0, true, game, 0)
task.wait()
VirtualInput:SendMouseButtonEvent(0, 0, 0, false, game, 0)
end)
end
end
-- ========== ESP (только красный контур, без текста) ==========
local function UpdateESP()
if not EspEnabled then
-- Удаляем все подсветки
for _, highlight in pairs(ESPHighlights) do
pcall(function() highlight:Destroy() end)
end
ESPHighlights = {}
return
end
-- Удаляем подсветки для игроков, которые вышли
for i = #ESPHighlights, 1, -1 do
local highlight = ESPHighlights[i]
if not highlight or not highlight.Parent or not highlight.Adornee or not highlight.Adornee.Parent then
pcall(function() highlight:Destroy() end)
table.remove(ESPHighlights, i)
end
end
-- Добавляем подсветки для врагов
for _, player in pairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character then
local team = LocalPlayer.Team
local isEnemy = (team and player.Team ~= team) or not team
if isEnemy then
-- Проверяем, есть ли уже подсветка
local hasHighlight = false
for _, highlight in pairs(ESPHighlights) do
if highlight.Adornee == player.Character then
hasHighlight = true
break
end
end
if not hasHighlight then
local highlight = Instance.new("Highlight")
highlight.FillColor = Color3.fromRGB(255, 0, 0)
highlight.OutlineColor = Color3.fromRGB(255, 0, 0)
highlight.FillTransparency = 0.8
highlight.OutlineTransparency = 0.2
highlight.Adornee = player.Character
highlight.Parent = player.Character
table.insert(ESPHighlights, highlight)
end
end
end
end
end
-- ========== ОЧИСТКА ESP ПРИ ВЫХОДЕ ИГРОКА ==========
local function CleanupESPForPlayer(player)
for i = #ESPHighlights, 1, -1 do
local highlight = ESPHighlights[i]
if highlight and highlight.Adornee == player.Character then
pcall(function() highlight:Destroy() end)
table.remove(ESPHighlights, i)
end
end
end
-- Обработчик выхода игрока
Players.PlayerRemoving:Connect(CleanupESPForPlayer)
-- ========== GUI МЕНЮ ==========
local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "RivalsESP"
ScreenGui.ResetOnSpawn = false
ScreenGui.Parent = PlayerGui
local MainFrame = Instance.new("Frame")
MainFrame.Size = UDim2.new(0, 280, 0, 200)
MainFrame.Position = UDim2.new(0.5, -140, 0.5, -100)
MainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 40)
MainFrame.BackgroundTransparency = 0.05
MainFrame.BorderSizePixel = 0
MainFrame.Visible = false
MainFrame.Active = true
MainFrame.Draggable = true
MainFrame.Parent = ScreenGui
-- Заголовок
local TitleBar = Instance.new("Frame")
TitleBar.Size = UDim2.new(1, 0, 0, 40)
TitleBar.BackgroundColor3 = Color3.fromRGB(45, 45, 65)
TitleBar.BorderSizePixel = 0
TitleBar.Parent = MainFrame
local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(1, 0, 1, 0)
Title.BackgroundTransparency = 1
Title.Text = "🔫 RIVALS | ESP + TRIGGERBOT"
Title.TextColor3 = Color3.fromRGB(255, 100, 50)
Title.TextScaled = true
Title.Font = Enum.Font.GothamBold
Title.Parent = TitleBar
local CloseBtn = Instance.new("TextButton")
CloseBtn.Size = UDim2.new(0, 40, 1, 0)
CloseBtn.Position = UDim2.new(1, -40, 0, 0)
CloseBtn.BackgroundColor3 = Color3.fromRGB(255, 70, 70)
CloseBtn.Text = "✕"
CloseBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
CloseBtn.TextScaled = true
CloseBtn.Parent = TitleBar
CloseBtn.MouseButton1Click:Connect(function()
MainFrame.Visible = false
MenuOpen = false
end)
-- Функция создания кнопки-переключателя
local function CreateToggle(text, yPos, color, callback)
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(0.85, 0, 0, 45)
btn.Position = UDim2.new(0.075, 0, yPos, 0)
btn.BackgroundColor3 = color
btn.Text = text .. " ❌"
btn.TextColor3 = Color3.fromRGB(255, 255, 255)
btn.TextScaled = true
btn.Font = Enum.Font.GothamBold
btn.Parent = MainFrame
local state = false
btn.MouseButton1Click:Connect(function()
state = not state
callback(state)
if state then
btn.BackgroundColor3 = Color3.fromRGB(0, 170, 85)
btn.Text = text .. " ✅"
else
btn.BackgroundColor3 = color
btn.Text = text .. " ❌"
end
end)
return btn
end
-- Кнопки
CreateToggle("👁️ ESP (красный контур)", 0.12, Color3.fromRGB(80, 80, 140), function(state)
EspEnabled = state
UpdateESP()
if state then
RunService.RenderStepped:Connect(UpdateESP)
end
end)
CreateToggle("🔫 TRIGGERBOT (авто-выстрел)", 0.28, Color3.fromRGB(80, 80, 140), function(state)
TriggerbotEnabled = state
if state then
RunService.RenderStepped:Connect(DoTriggerbot)
end
end)
-- Информация
local InfoText = Instance.new("TextLabel")
InfoText.Size = UDim2.new(0.9, 0, 0, 55)
InfoText.Position = UDim2.new(0.05, 0, 0.5, 0)
InfoText.BackgroundTransparency = 1
InfoText.Text = "📌 Нажми V чтобы открыть меню\n📌 ESP - только враги (красные)\n📌 Triggerbot - стреляет при наведении"
InfoText.TextColor3 = Color3.fromRGB(150, 150, 180)
InfoText.TextXAlignment = Enum.TextXAlignment.Center
InfoText.Font = Enum.Font.Gotham
InfoText.TextSize = 11
InfoText.Parent = MainFrame
-- ========== БИНД НА V ==========
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed then return end
if input.KeyCode == Enum.KeyCode.V then
MainFrame.Visible = not MainFrame.Visible
MenuOpen = MainFrame.Visible
end
end)
-- Перетаскивание окна
local dragging = false
local dragStart, startPos
TitleBar.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = true
dragStart = input.Position
startPos = MainFrame.Position
end
end)
UserInputService.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)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = false
end
end)
-- ========== ЗАПУСК ==========
print("=== RIVALS ULTIMATE (ESP + TRIGGERBOT) ===")
print("Нажми V чтобы открыть меню")
print("ESP: красный контур врагов")
print("Triggerbot: авто-выстрел при наведении")
game.StarterGui:SetCore("SendNotification", {
Title = "Rivals | ESP + Triggerbot",
Text = "Загружен! Нажми V для меню",
Duration = 4
})