-- [[ Rscripts Risk Notice ]] -- This script is not verified by rscripts.net. Deal with caution. -- -- Stay safe: -- • Never log in on unofficial Roblox sites or lookalike domains. -- • Real Roblox links use roblox.com (check the .com ending). -- • Treat fake Roblox login / "claim reward" pages as phishing. -- [[ End Rscripts Risk Notice ]] -- Rivals Basic Aimbot + ESP (Educational) -- Place ID: 17625359962 -- Use at your own risk. Expected to get detected. local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Camera = workspace.CurrentCamera local LocalPlayer = Players.LocalPlayer local Mouse = LocalPlayer:GetMouse() -- Settings local Settings = { Aimbot = { Enabled = false, Key = Enum.KeyCode.E, -- Hold this key FOV = 120, Smoothness = 0.15, -- 0 = snap, higher = smoother TargetPart = "Head", -- "Head", "HumanoidRootPart", "UpperTorso" TeamCheck = true, WallCheck = true, KillCheck = true, MaxDistance = 800, }, ESP = { Enabled = false, Boxes = true, Names = true, Health = true, TeamCheck = true, MaxDistance = 1000, } } -- Drawing objects storage local ESPObjects = {} -- Utility local function IsAlive(player) local char = player.Character if not char then return false end local hum = char:FindFirstChildOfClass("Humanoid") return hum and hum.Health > 0 end local function GetTeam(player) return player.Team end local function IsVisible(targetPart) if not Settings.Aimbot.WallCheck then return true end local origin = Camera.CFrame.Position local direction = (targetPart.Position - origin).Unit * 1000 local params = RaycastParams.new() params.FilterType = Enum.RaycastFilterType.Exclude params.FilterDescendantsInstances = {LocalPlayer.Character, Camera} local result = workspace:Raycast(origin, direction, params) return result and result.Instance and result.Instance:IsDescendantOf(targetPart.Parent) end local function GetClosestTarget() local closest, closestDist = nil, Settings.Aimbot.FOV local mousePos = Vector2.new(Mouse.X, Mouse.Y) for _, player in ipairs(Players:GetPlayers()) do if player == LocalPlayer then continue end if Settings.Aimbot.TeamCheck and GetTeam(player) == GetTeam(LocalPlayer) then continue end if Settings.Aimbot.KillCheck and not IsAlive(player) then continue end local char = player.Character if not char then continue end local part = char:FindFirstChild(Settings.Aimbot.TargetPart) or char:FindFirstChild("Head") if not part then continue end local pos, onScreen = Camera:WorldToViewportPoint(part.Position) if not onScreen then continue end local dist2D = (Vector2.new(pos.X, pos.Y) - mousePos).Magnitude local dist3D = (part.Position - Camera.CFrame.Position).Magnitude if dist2D < closestDist and dist3D <= Settings.Aimbot.MaxDistance then if IsVisible(part) then closest = part closestDist = dist2D end end end return closest end -- Aimbot loop local aiming = false UserInputService.InputBegan:Connect(function(input, gp) if gp then return end if input.KeyCode == Settings.Aimbot.Key then aiming = true end end) UserInputService.InputEnded:Connect(function(input) if input.KeyCode == Settings.Aimbot.Key then aiming = false end end) RunService.RenderStepped:Connect(function() if not Settings.Aimbot.Enabled or not aiming then return end local target = GetClosestTarget() if not target then return end local targetPos = target.Position local current = Camera.CFrame local goal = CFrame.lookAt(current.Position, targetPos) if Settings.Aimbot.Smoothness <= 0 then Camera.CFrame = goal else Camera.CFrame = current:Lerp(goal, Settings.Aimbot.Smoothness) end end) -- Simple ESP local function CreateESP(player) if ESPObjects[player] then return end local box = Drawing.new("Square") box.Thickness = 1 box.Filled = false box.Color = Color3.fromRGB(255, 50, 50) box.Visible = false local name = Drawing.new("Text") name.Size = 14 name.Center = true name.Outline = true name.Color = Color3.fromRGB(255, 255, 255) name.Visible = false local health = Drawing.new("Text") health.Size = 13 health.Center = true health.Outline = true health.Color = Color3.fromRGB(0, 255, 100) health.Visible = false ESPObjects[player] = {Box = box, Name = name, Health = health} end local function RemoveESP(player) if ESPObjects[player] then for _, v in pairs(ESPObjects[player]) do v:Remove() end ESPObjects[player] = nil end end Players.PlayerAdded:Connect(CreateESP) Players.PlayerRemoving:Connect(RemoveESP) for _, p in ipairs(Players:GetPlayers()) do if p \~= LocalPlayer then CreateESP(p) end end RunService.RenderStepped:Connect(function() for player, objects in pairs(ESPObjects) do local char = player.Character local hum = char and char:FindFirstChildOfClass("Humanoid") local root = char and char:FindFirstChild("HumanoidRootPart") if not Settings.ESP.Enabled or not char or not root or not hum or hum.Health <= 0 then objects.Box.Visible = false objects.Name.Visible = false objects.Health.Visible = false continue end if Settings.ESP.TeamCheck and GetTeam(player) == GetTeam(LocalPlayer) then objects.Box.Visible = false objects.Name.Visible = false objects.Health.Visible = false continue end local dist = (root.Position - Camera.CFrame.Position).Magnitude if dist > Settings.ESP.MaxDistance then objects.Box.Visible = false objects.Name.Visible = false objects.Health.Visible = false continue end local pos, onScreen = Camera:WorldToViewportPoint(root.Position) if not onScreen then objects.Box.Visible = false objects.Name.Visible = false objects.Health.Visible = false continue end local size = 2000 / dist objects.Box.Size = Vector2.new(size * 0.6, size) objects.Box.Position = Vector2.new(pos.X - objects.Box.Size.X/2, pos.Y - objects.Box.Size.Y/2) objects.Box.Visible = Settings.ESP.Boxes objects.Name.Text = player.Name objects.Name.Position = Vector2.new(pos.X, pos.Y - size/2 - 18) objects.Name.Visible = Settings.ESP.Names objects.Health.Text = math.floor(hum.Health) .. " HP" objects.Health.Position = Vector2.new(pos.X, pos.Y + size/2 + 4) objects.Health.Visible = Settings.ESP.Health end end) -- ==================== CUSTOM GUI WITH TABS ==================== local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "RivalsCustom" ScreenGui.ResetOnSpawn = false ScreenGui.Parent = game:GetService("CoreGui") local Main = Instance.new("Frame") Main.Size = UDim2.new(0, 320, 0, 380) Main.Position = UDim2.new(0.5, -160, 0.5, -190) Main.BackgroundColor3 = Color3.fromRGB(25, 25, 30) Main.BorderSizePixel = 0 Main.Active = true Main.Draggable = true Main.Parent = ScreenGui local Title = Instance.new("TextLabel") Title.Size = UDim2.new(1, 0, 0, 30) Title.BackgroundColor3 = Color3.fromRGB(40, 40, 50) Title.Text = "Rivals | Aim + ESP" Title.TextColor3 = Color3.fromRGB(255, 255, 255) Title.Font = Enum.Font.GothamBold Title.TextSize = 16 Title.Parent = Main -- Tabs local TabFrame = Instance.new("Frame") TabFrame.Size = UDim2.new(1, 0, 0, 30) TabFrame.Position = UDim2.new(0, 0, 0, 30) TabFrame.BackgroundColor3 = Color3.fromRGB(35, 35, 42) TabFrame.BorderSizePixel = 0 TabFrame.Parent = Main local function CreateTab(name, pos) local btn = Instance.new("TextButton") btn.Size = UDim2.new(0.33, -2, 1, 0) btn.Position = UDim2.new(pos, 1, 0, 0) btn.BackgroundColor3 = Color3.fromRGB(50, 50, 60) btn.Text = name btn.TextColor3 = Color3.fromRGB(220, 220, 220) btn.Font = Enum.Font.Gotham btn.TextSize = 14 btn.Parent = TabFrame return btn end local AimTabBtn = CreateTab("Aimbot", 0) local ESPTabBtn = CreateTab("ESP", 0.33) local SetTabBtn = CreateTab("Settings", 0.66) local Content = Instance.new("Frame") Content.Size = UDim2.new(1, -10, 1, -70) Content.Position = UDim2.new(0, 5, 0, 65) Content.BackgroundTransparency = 1 Content.Parent = Main local AimPage = Instance.new("Frame") AimPage.Size = UDim2.new(1, 0, 1, 0) AimPage.BackgroundTransparency = 1 AimPage.Visible = true AimPage.Parent = Content local ESPPage = Instance.new("Frame") ESPPage.Size = UDim2.new(1, 0, 1, 0) ESPPage.BackgroundTransparency = 1 ESPPage.Visible = false ESPPage.Parent = Content local SetPage = Instance.new("Frame") SetPage.Size = UDim2.new(1, 0, 1, 0) SetPage.BackgroundTransparency = 1 SetPage.Visible = false SetPage.Parent = Content local function SwitchTab(page) AimPage.Visible = page == AimPage ESPPage.Visible = page == ESPPage SetPage.Visible = page == SetPage end AimTabBtn.MouseButton1Click:Connect(function() SwitchTab(AimPage) end) ESPTabBtn.MouseButton1Click:Connect(function() SwitchTab(ESPPage) end) SetTabBtn.MouseButton1Click:Connect(function() SwitchTab(SetPage) end) -- Helper to create toggles local function CreateToggle(parent, text, y, default, callback) local btn = Instance.new("TextButton") btn.Size = UDim2.new(1, 0, 0, 28) btn.Position = UDim2.new(0, 0, 0, y) btn.BackgroundColor3 = default and Color3.fromRGB(0, 140, 70) or Color3.fromRGB(60, 60, 70) btn.Text = text .. (default and " [ON]" or " [OFF]") btn.TextColor3 = Color3.fromRGB(255, 255, 255) btn.Font = Enum.Font.Gotham btn.TextSize = 13 btn.Parent = parent local state = default btn.MouseButton1Click:Connect(function() state = not state btn.BackgroundColor3 = state and Color3.fromRGB(0, 140, 70) or Color3.fromRGB(60, 60, 70) btn.Text = text .. (state and " [ON]" or " [OFF]") callback(state) end) return btn end -- Aimbot page CreateToggle(AimPage, "Enable Aimbot", 0, false, function(v) Settings.Aimbot.Enabled = v end) CreateToggle(AimPage, "Team Check", 35, true, function(v) Settings.Aimbot.TeamCheck = v end) CreateToggle(AimPage, "Wall Check", 70, true, function(v) Settings.Aimbot.WallCheck = v end) CreateToggle(AimPage, "Kill Check", 105, true, function(v) Settings.Aimbot.KillCheck = v end) local FOVLabel = Instance.new("TextLabel") FOVLabel.Size = UDim2.new(1, 0, 0, 25) FOVLabel.Position = UDim2.new(0, 0, 0, 145) FOVLabel.BackgroundTransparency = 1 FOVLabel.Text = "FOV: " .. Settings.Aimbot.FOV FOVLabel.TextColor3 = Color3.fromRGB(200, 200, 200) FOVLabel.Font = Enum.Font.Gotham FOVLabel.TextSize = 13 FOVLabel.Parent = AimPage -- ESP page CreateToggle(ESPPage, "Enable ESP", 0, false, function(v) Settings.ESP.Enabled = v end) CreateToggle(ESPPage, "Boxes", 35, true, function(v) Settings.ESP.Boxes = v end) CreateToggle(ESPPage, "Names", 70, true, function(v) Settings.ESP.Names = v end) CreateToggle(ESPPage, "Health", 105, true, function(v) Settings.ESP.Health = v end) CreateToggle(ESPPage, "Team Check", 140, true, function(v) Settings.ESP.TeamCheck = v end) -- Settings page local KeyLabel = Instance.new("TextLabel") KeyLabel.Size = UDim2.new(1, 0, 0, 30) KeyLabel.Position = UDim2.new(0, 0, 0, 10) KeyLabel.BackgroundTransparency = 1 KeyLabel.Text = "Aim Key: E (hold)" KeyLabel.TextColor3 = Color3.fromRGB(200, 200, 200) KeyLabel.Font = Enum.Font.Gotham KeyLabel.TextSize = 14 KeyLabel.Parent = SetPage local Note = Instance.new("TextLabel") Note.Size = UDim2.new(1, 0, 0, 80) Note.Position = UDim2.new(0, 0, 0, 50) Note.BackgroundTransparency = 1 Note.Text = "Hold E to aim while Aimbot is enabled.\nThis is a basic example.\nExpect detection & bans." Note.TextColor3 = Color3.fromRGB(180, 180, 180) Note.Font = Enum.Font.Gotham Note.TextSize = 13 Note.TextWrapped = true Note.Parent = SetPage -- Close button local Close = Instance.new("TextButton") Close.Size = UDim2.new(0, 30, 0, 30) Close.Position = UDim2.new(1, -30, 0, 0) Close.BackgroundColor3 = Color3.fromRGB(180, 40, 40) Close.Text = "X" Close.TextColor3 = Color3.fromRGB(255, 255, 255) Close.Font = Enum.Font.GothamBold Close.TextSize = 16 Close.Parent = Main Close.MouseButton1Click:Connect(function() ScreenGui:Destroy() end) print("Rivals script loaded. Open the GUI and toggle features.")