Rival aimbot
Key RequiredUniversal

Rival aimbot

Universal ScriptScrptyScrpty 3.2K views 89K executesUpdated Aug 31, 2026
Unrated
00
Lua Script•377 lines (13117 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Workspace = game:GetService("Workspace")

local LocalPlayer = Players.LocalPlayer
local Camera = workspace.CurrentCamera
local Mouse = LocalPlayer:GetMouse()

-- Feature Toggles
local aimEnabled = false
local infJumpEnabled = false
local teamCheckEnabled = false
local espEnabled = false
local ignoredPlayers = {} -- Your manually selected friends
local currentTarget = nil 

-- Theme UI Colors
local THEME_BG = Color3.fromRGB(15, 15, 20)
local THEME_ACCENT = Color3.fromRGB(220, 20, 60)
local THEME_DARK = Color3.fromRGB(25, 25, 35)
local TEXT_COLOR = Color3.fromRGB(240, 240, 245)

-- ==========================================
-- 1. CREATE UI & STRUCTURE
-- ==========================================
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "UltimateMasterControl"
screenGui.ResetOnSpawn = false
screenGui.Parent = LocalPlayer:WaitForChild("PlayerGui")

local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 250, 0, 360) 
mainFrame.Position = UDim2.new(0.04, 0, 0.45, -130)
mainFrame.BackgroundColor3 = THEME_BG
mainFrame.BorderSizePixel = 0
mainFrame.Active = true
mainFrame.Parent = screenGui
Instance.new("UICorner", mainFrame).CornerRadius = UDim.new(0, 12)
local mainStroke = Instance.new("UIStroke", mainFrame)
mainStroke.Color = THEME_ACCENT
mainStroke.Thickness = 1.5
mainStroke.Transparency = 0.5

local titleBar = Instance.new("Frame")
titleBar.Size = UDim2.new(1, 0, 0, 40)
titleBar.BackgroundColor3 = THEME_DARK
titleBar.BorderSizePixel = 0
titleBar.Parent = mainFrame
Instance.new("UICorner", titleBar).CornerRadius = UDim.new(0, 12)
local titleFix = Instance.new("Frame", titleBar)
titleFix.Size = UDim2.new(1, 0, 0, 10)
titleFix.Position = UDim2.new(0, 0, 1, -10)
titleFix.BackgroundColor3 = THEME_DARK
titleFix.BorderSizePixel = 0

local titleLabel = Instance.new("TextLabel")
titleLabel.Size = UDim2.new(1, -45, 1, 0)
titleLabel.Position = UDim2.new(0, 15, 0, 0)
titleLabel.BackgroundTransparency = 1
titleLabel.TextColor3 = TEXT_COLOR
titleLabel.TextSize = 15
titleLabel.Font = Enum.Font.GothamBold
titleLabel.Text = "MASTER CONTROL"
titleLabel.TextXAlignment = Enum.TextXAlignment.Left
titleLabel.Parent = titleBar

local closeBtn = Instance.new("TextButton")
closeBtn.Size = UDim2.new(0, 28, 0, 28)
closeBtn.Position = UDim2.new(1, -34, 0, 6)
closeBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 50)
closeBtn.TextColor3 = TEXT_COLOR
closeBtn.TextSize = 14
closeBtn.Font = Enum.Font.GothamBold
closeBtn.Text = "✕"
closeBtn.Parent = titleBar
Instance.new("UICorner", closeBtn).CornerRadius = UDim.new(0, 6)

local rBubble = Instance.new("TextButton")
rBubble.Size = UDim2.new(0, 50, 0, 50)
rBubble.Position = UDim2.new(0.04, 0, 0.45, -25)
rBubble.BackgroundColor3 = THEME_BG
rBubble.TextColor3 = THEME_ACCENT
rBubble.TextSize = 24
rBubble.Font = Enum.Font.GothamBlack
rBubble.Text = "R"
rBubble.Visible = false
rBubble.Parent = screenGui
Instance.new("UICorner", rBubble).CornerRadius = UDim.new(1, 0)
local bubbleStroke = Instance.new("UIStroke", rBubble)
bubbleStroke.Color = THEME_ACCENT
bubbleStroke.Thickness = 2

local resizeHandle = Instance.new("TextButton")
resizeHandle.Size = UDim2.new(0, 15, 0, 15)
resizeHandle.Position = UDim2.new(1, -15, 1, -15)
resizeHandle.BackgroundTransparency = 1
resizeHandle.Text = ""
resizeHandle.Parent = mainFrame

-- Button Factory
local function createButton(name, yPos, defaultText)
	local btn = Instance.new("TextButton")
	btn.Size = UDim2.new(1, -20, 0, 32)
	btn.Position = UDim2.new(0, 10, 0, yPos)
	btn.BackgroundColor3 = THEME_DARK
	btn.TextColor3 = TEXT_COLOR
	btn.TextSize = 12
	btn.Font = Enum.Font.GothamBold
	btn.Text = defaultText
	btn.Parent = mainFrame
	Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 8)
	return btn
end

local aimBtn = createButton("AimToggle", 50, "AIMBOT: OFF")
local espBtn = createButton("EspToggle", 87, "RED/BLUE ESP: OFF")
local teamBtn = createButton("TeamToggle", 124, "TEAM CHECK: OFF")
local infJumpBtn = createButton("InfJumpToggle", 161, "INFINITE JUMP: OFF")

-- ==========================================
-- 2. PROFILE SCROLL WHEEL (FRIEND SYSTEM)
-- ==========================================
local playerScroll = Instance.new("ScrollingFrame")
playerScroll.Size = UDim2.new(1, -20, 1, -210)
playerScroll.Position = UDim2.new(0, 10, 0, 200)
playerScroll.BackgroundColor3 = THEME_DARK
playerScroll.BorderSizePixel = 0
playerScroll.ScrollBarThickness = 4
playerScroll.Parent = mainFrame
Instance.new("UICorner", playerScroll).CornerRadius = UDim.new(0, 6)

local scrollLayout = Instance.new("UIListLayout")
scrollLayout.Padding = UDim.new(0, 5)
scrollLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center
scrollLayout.SortOrder = Enum.SortOrder.Name
scrollLayout.Parent = playerScroll

scrollLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
	playerScroll.CanvasSize = UDim2.new(0, 0, 0, scrollLayout.AbsoluteContentSize.Y + 10)
end)

-- Fetches players and their profile pictures
local function refreshPlayerList()
	for _, child in ipairs(playerScroll:GetChildren()) do
		if child:IsA("TextButton") then child:Destroy() end
	end
	
	for _, p in ipairs(Players:GetPlayers()) do
		if p ~= LocalPlayer then
			local pBtn = Instance.new("TextButton")
			pBtn.Name = p.Name
			pBtn.Size = UDim2.new(1, -10, 0, 35)
			pBtn.BackgroundColor3 = ignoredPlayers[p.Name] and Color3.fromRGB(0, 100, 200) or Color3.fromRGB(40, 40, 50)
			pBtn.TextColor3 = TEXT_COLOR
			pBtn.TextSize = 12
			pBtn.Font = Enum.Font.GothamBold
			pBtn.Text = ignoredPlayers[p.Name] and ("   " .. p.Name .. " [FRIEND]") or ("   " .. p.Name)
			pBtn.TextXAlignment = Enum.TextXAlignment.Left
			pBtn.Parent = playerScroll
			Instance.new("UICorner", pBtn).CornerRadius = UDim.new(0, 6)
			
			-- Profile Picture Logic
			local avatar = Instance.new("ImageLabel")
			avatar.Size = UDim2.new(0, 25, 0, 25)
			avatar.Position = UDim2.new(0, 5, 0, 5)
			avatar.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
			avatar.Parent = pBtn
			Instance.new("UICorner", avatar).CornerRadius = UDim.new(1, 0)
			
			-- Loads the picture safely
			task.spawn(function()
				local content = Players:GetUserThumbnailAsync(p.UserId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size420x420)
				avatar.Image = content
			end)
			
			-- Toggle Friend Status
			pBtn.MouseButton1Click:Connect(function()
				if ignoredPlayers[p.Name] then
					ignoredPlayers[p.Name] = nil
					pBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 50)
					pBtn.Text = "   " .. p.Name
				else
					ignoredPlayers[p.Name] = true
					pBtn.BackgroundColor3 = Color3.fromRGB(0, 100, 200) -- Turns Blue in the UI
					pBtn.Text = "   " .. p.Name .. " [FRIEND]"
				end
			end)
		end
	end
end

Players.PlayerAdded:Connect(refreshPlayerList)
Players.PlayerRemoving:Connect(refreshPlayerList)
refreshPlayerList()

-- ==========================================
-- 3. INTERACTIVE LOGIC & TOGGLES
-- ==========================================
local function makeInteractive(frame, dragHandle)
	local dragging, resizing, startPos, startSize, startMouse
	
	dragHandle.InputBegan:Connect(function(input)
		if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
			dragging = true
			startPos = input.Position
			startMouse = frame.Position
			input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end)
		end
	end)

	resizeHandle.InputBegan:Connect(function(input)
		if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
			resizing = true
			startPos = input.Position
			startSize = frame.AbsoluteSize
			input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then resizing = false end end)
		end
	end)

	UserInputService.InputChanged:Connect(function(input)
		if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
			if dragging then
				local delta = input.Position - startPos
				frame.Position = UDim2.new(startMouse.X.Scale, startMouse.X.Offset + delta.X, startMouse.Y.Scale, startMouse.Y.Offset + delta.Y)
			elseif resizing then
				local delta = input.Position - startPos
				frame.Size = UDim2.new(0, math.clamp(startSize.X + delta.X, 220, 400), 0, math.clamp(startSize.Y + delta.Y, 250, 500))
			end
		end
	end)
end

makeInteractive(mainFrame, titleBar)
makeInteractive(rBubble, rBubble)

closeBtn.MouseButton1Click:Connect(function() mainFrame.Visible = false; rBubble.Visible = true end)
rBubble.MouseButton1Click:Connect(function() rBubble.Visible = false; mainFrame.Visible = true end)

local function updateButtonStyle(btn, state, activeText, inactiveText)
	btn.Text = state and activeText or inactiveText
	btn.BackgroundColor3 = state and THEME_ACCENT or THEME_DARK
end

aimBtn.MouseButton1Click:Connect(function()
	aimEnabled = not aimEnabled
	updateButtonStyle(aimBtn, aimEnabled, "AIMBOT: ON", "AIMBOT: OFF")
	if not aimEnabled then currentTarget = nil end
end)

espBtn.MouseButton1Click:Connect(function()
	espEnabled = not espEnabled
	updateButtonStyle(espBtn, espEnabled, "RED/BLUE ESP: ON", "RED/BLUE ESP: OFF")
end)

teamBtn.MouseButton1Click:Connect(function()
	teamCheckEnabled = not teamCheckEnabled
	updateButtonStyle(teamBtn, teamCheckEnabled, "TEAM CHECK: ON", "TEAM CHECK: OFF")
end)

infJumpBtn.MouseButton1Click:Connect(function()
	infJumpEnabled = not infJumpEnabled
	updateButtonStyle(infJumpBtn, infJumpEnabled, "INFINITE JUMP: ON", "INFINITE JUMP: OFF")
end)

UserInputService.JumpRequest:Connect(function()
	if infJumpEnabled and LocalPlayer.Character then
		local humanoid = LocalPlayer.Character:FindFirstChildOfClass("Humanoid")
		if humanoid then humanoid:ChangeState(Enum.HumanoidStateType.Jumping) end
	end
end)

-- ==========================================
-- 4. RED/BLUE ESP ENGINE & TARGET SCANNER
-- ==========================================
-- Runs safely in the background twice a second to completely prevent mobile lagging
task.spawn(function()
	while task.wait(0.5) do 
		
		-- Handle Red/Blue ESP
		if espEnabled then
			for _, p in ipairs(Players:GetPlayers()) do
				if p ~= LocalPlayer and p.Character then
					local char = p.Character
					local hl = char:FindFirstChild("MasterESP")
					if not hl then
						hl = Instance.new("Highlight")
						hl.Name = "MasterESP"
						hl.FillTransparency = 0.5
						hl.OutlineTransparency = 0
						hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
						hl.Parent = char
					end
					
					-- Check if they are a selected friend or on your team
					local isFriend = ignoredPlayers[p.Name] or (teamCheckEnabled and p.Team == LocalPlayer.Team)
					
					if isFriend then
						hl.FillColor = Color3.fromRGB(0, 100, 255) -- BLUE for Friends
						hl.OutlineColor = Color3.fromRGB(0, 50, 255)
					else
						hl.FillColor = Color3.fromRGB(255, 0, 0) -- RED for Enemies
						hl.OutlineColor = Color3.fromRGB(150, 0, 0)
					end
				end
			end
		else
			-- Delete ESP if toggled off
			for _, p in ipairs(Players:GetPlayers()) do
				if p.Character and p.Character:FindFirstChild("MasterESP") then
					p.Character.MasterESP:Destroy()
				end
			end
		end

		-- Handle Aimbot Targeting
		if aimEnabled then
			local bestTarget = nil
			local shortestDist = math.huge
			local myChar = LocalPlayer.Character
			
			if myChar and myChar:FindFirstChild("Head") then
				for _, p in ipairs(Players:GetPlayers()) do
					if p ~= LocalPlayer then
						
						if teamCheckEnabled and p.Team == LocalPlayer.Team then continue end
						if ignoredPlayers[p.Name] then continue end

						if p.Character and p.Character:FindFirstChild("Head") then
							local hum = p.Character:FindFirstChildOfClass("Humanoid")
							if hum and hum.Health > 0 then
								local dist = (p.Character.Head.Position - myChar.Head.Position).Magnitude
								if dist < shortestDist then
									shortestDist = dist
									bestTarget = p.Character.Head
								end
							end
						end
					end
				end
			end
			currentTarget = bestTarget
		end
	end
end)

-- ==========================================
-- 5. THE FIXED MICRO-HOOK & AUTO FIRE
-- ==========================================
local oldIndex
oldIndex = hookmetamethod(game, "__index", function(t, k)
	if aimEnabled and t == Mouse and currentTarget then
		if k == "Hit" then 
			return currentTarget.CFrame
		elseif k == "Target" then 
			return currentTarget 
		end
	end
	return oldIndex(t, k)
end)

RunService.RenderStepped:Connect(function()
	if aimEnabled and currentTarget then
		Camera.CFrame = CFrame.new(Camera.CFrame.Position, currentTarget.Position)
	end
end)

task.spawn(function()
	while task.wait(0.15) do
		if aimEnabled and currentTarget and LocalPlayer.Character then
			local currentWeapon = LocalPlayer.Character:FindFirstChildOfClass("Tool")
			if currentWeapon then
				pcall(function() currentWeapon:Activate() end)
			end
		end
	end
end)

Features & Information

This has 5 options and working rivals aim bot it only works with the pistol wepone
#Rivals

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts