-- [[ 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 ESP + AIMBOT - RAYFIELD UI ===================================== Author: kaisan_lover - ESP (Box + NameTag + Highlight) - Aimbot (Instant Head Lock) - Rayfield UI - Hold [E] for aimbot ]] local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))() local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local CoreGui = game:GetService("CoreGui") local Workspace = game:GetService("Workspace") local LocalPlayer = Players.LocalPlayer local Camera = Workspace.CurrentCamera --========================================================== -- STATE --========================================================== local State = { -- ESP ESPEnabled = true, ESPBox = true, ESPNameTag = true, ESPHighlight = true, UseTeamColor = true, FriendColor = Color3.fromRGB(0, 0, 255), EnemyColor = Color3.fromRGB(255, 0, 0), -- Aimbot AimbotEnabled = false, AimbotKey = Enum.KeyCode.E, AimbotHeld = false, FOV = 250, FOVCircle = nil, } --========================================================== -- ESP STORAGE --========================================================== local Holder = Instance.new("Folder", CoreGui) Holder.Name = "ESP_" .. tostring(math.random(1000, 9999)) local BoxTemplate = Instance.new("BoxHandleAdornment") BoxTemplate.Name = "nilBox" BoxTemplate.Size = Vector3.new(1, 2, 1) BoxTemplate.Color3 = Color3.new(100/255, 100/255, 100/255) BoxTemplate.Transparency = 0.7 BoxTemplate.ZIndex = 0 BoxTemplate.AlwaysOnTop = false BoxTemplate.Visible = false local NameTagTemplate = Instance.new("BillboardGui") NameTagTemplate.Name = "nilNameTag" NameTagTemplate.Enabled = false NameTagTemplate.Size = UDim2.new(0, 200, 0, 50) NameTagTemplate.AlwaysOnTop = true NameTagTemplate.StudsOffset = Vector3.new(0, 1.8, 0) local TagTemplate = Instance.new("TextLabel", NameTagTemplate) TagTemplate.Name = "Tag" TagTemplate.BackgroundTransparency = 1 TagTemplate.Position = UDim2.new(0, -50, 0, 0) TagTemplate.Size = UDim2.new(0, 300, 0, 20) TagTemplate.TextSize = 15 TagTemplate.TextColor3 = Color3.new(100/255, 100/255, 100/255) TagTemplate.TextStrokeColor3 = Color3.new(0, 0, 0) TagTemplate.TextStrokeTransparency = 0.4 TagTemplate.Text = "nil" TagTemplate.Font = Enum.Font.SourceSansBold TagTemplate.TextScaled = false --========================================================== -- ESP FUNCTIONS --========================================================== local ESPData = {} -- [player] = { box = ..., nametag = ..., highlight = ... } local function LoadCharacter(v) if not v or not v.Character then return end repeat task.wait() until v.Character ~= nil v.Character:WaitForChild("Humanoid", 5) local vHolder = Holder:FindFirstChild(v.Name) if not vHolder then vHolder = Instance.new("Folder", Holder) vHolder.Name = v.Name end vHolder:ClearAllChildren() ESPData[v] = ESPData[v] or {} -- Box if State.ESPBox then local b = BoxTemplate:Clone() b.Name = v.Name .. "Box" b.Adornee = v.Character b.Visible = true b.Parent = vHolder ESPData[v].box = b end -- NameTag if State.ESPNameTag then local head = v.Character:WaitForChild("Head", 5) if head then local t = NameTagTemplate:Clone() t.Name = v.Name .. "NameTag" t.Enabled = true t.Parent = vHolder t.Adornee = head t.Tag.Text = v.Name ESPData[v].nametag = t end end -- Highlight if State.ESPHighlight then local hl = v.Character:FindFirstChild("KaisanHighlight") if not hl then hl = Instance.new("Highlight") hl.Name = "KaisanHighlight" hl.Adornee = v.Character hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop hl.FillTransparency = 0.7 hl.OutlineTransparency = 0 hl.Parent = v.Character end ESPData[v].highlight = hl end -- Colors local color = State.UseTeamColor and v.TeamColor.Color or ((LocalPlayer.TeamColor == v.TeamColor) and State.FriendColor or State.EnemyColor) if ESPData[v].box then ESPData[v].box.Color3 = color end if ESPData[v].nametag then ESPData[v].nametag.Tag.TextColor3 = color end if ESPData[v].highlight then ESPData[v].highlight.FillColor = color ESPData[v].highlight.OutlineColor = color end end local function UnloadCharacter(v) local vHolder = Holder:FindFirstChild(v.Name) if vHolder then vHolder:ClearAllChildren() end if v.Character then local hl = v.Character:FindFirstChild("KaisanHighlight") if hl then hl:Destroy() end end ESPData[v] = nil end local function LoadPlayer(v) local vHolder = Instance.new("Folder", Holder) vHolder.Name = v.Name v.CharacterAdded:Connect(function() task.wait(0.2) pcall(LoadCharacter, v) end) v.CharacterRemoving:Connect(function() pcall(UnloadCharacter, v) end) v.Changed:Connect(function(prop) if prop == "TeamColor" then UnloadCharacter(v) task.wait() LoadCharacter(v) end end) if v.Character then pcall(LoadCharacter, v) end end local function UnloadPlayer(v) UnloadCharacter(v) local vHolder = Holder:FindFirstChild(v.Name) if vHolder then vHolder:Destroy() end end --========================================================== -- ESP COLOR UPDATE LOOP (background, non-blocking) --========================================================== task.spawn(function() while task.wait(0.5) do if not State.ESPEnabled then continue end for _, v in pairs(Players:GetPlayers()) do if v ~= LocalPlayer and v.Character then local data = ESPData[v] if data then local color = State.UseTeamColor and v.TeamColor.Color or ((LocalPlayer.TeamColor == v.TeamColor) and State.FriendColor or State.EnemyColor) if data.box and data.box.Parent then data.box.Color3 = color end if data.nametag and data.nametag.Parent then data.nametag.Tag.TextColor3 = color end if data.highlight and data.highlight.Parent then data.highlight.FillColor = color data.highlight.OutlineColor = color end end end end end end) --========================================================== -- FOV CIRCLE --========================================================== local FOVGui = Instance.new("ScreenGui") FOVGui.Name = "AimbotFOV_kaisan" FOVGui.ResetOnSpawn = false FOVGui.IgnoreGuiInset = true FOVGui.Parent = CoreGui local circle = Instance.new("Frame") circle.AnchorPoint = Vector2.new(0.5, 0.5) circle.Position = UDim2.new(0.5, 0, 0.5, 0) circle.Size = UDim2.fromOffset(State.FOV * 2, State.FOV * 2) circle.BackgroundTransparency = 1 circle.BorderSizePixel = 0 circle.Parent = FOVGui local circleCorner = Instance.new("UICorner") circleCorner.CornerRadius = UDim.new(1, 0) circleCorner.Parent = circle local circleStroke = Instance.new("UIStroke") circleStroke.Color = Color3.fromRGB(255, 80, 80) circleStroke.Thickness = 1.5 circleStroke.Transparency = 0.4 circleStroke.Parent = circle State.FOVCircle = circle --========================================================== -- AIMBOT FUNCTIONS --========================================================== local function IsAlive(plr) if not plr or not plr.Character then return false end local hum = plr.Character:FindFirstChildOfClass("Humanoid") return hum and hum.Health > 0 end local function GetTarget() local closest, closestDist = nil, State.FOV local center = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2) for _, plr in ipairs(Players:GetPlayers()) do if plr ~= LocalPlayer and IsAlive(plr) then local head = plr.Character:FindFirstChild("Head") if head then local screenPos, onScreen = Camera:WorldToViewportPoint(head.Position) if onScreen then local dist = (Vector2.new(screenPos.X, screenPos.Y) - center).Magnitude if dist < closestDist then closest, closestDist = plr, dist end end end end end return closest end local function AimbotStep() if not (State.AimbotEnabled and State.AimbotHeld) then return end local target = GetTarget() if not target or not target.Character then return end local head = target.Character:FindFirstChild("Head") if not head then return end Camera.CFrame = CFrame.new(Camera.CFrame.Position, head.Position) end RunService:BindToRenderStep("KaisanAimbot", Enum.RenderPriority.Last.Value, AimbotStep) RunService:BindToRenderStep("KaisanFOV", Enum.RenderPriority.Camera.Value, function() if State.FOVCircle then State.FOVCircle.Visible = State.AimbotEnabled State.FOVCircle.Size = UDim2.fromOffset(State.FOV * 2, State.FOV * 2) end end) --========================================================== -- INITIAL ESP LOAD --========================================================== for _, v in ipairs(Players:GetPlayers()) do task.spawn(function() pcall(LoadPlayer, v) end) end Players.PlayerAdded:Connect(function(v) pcall(LoadPlayer, v) end) Players.PlayerRemoving:Connect(function(v) pcall(UnloadPlayer, v) end) LocalPlayer.NameDisplayDistance = 0 --========================================================== -- RAYFIELD UI --========================================================== local Window = Rayfield:CreateWindow({ Name = "Rivals ESP + Aimbot", LoadingTitle = "Loading...", LoadingSubtitle = "by kaisan_lover", ConfigurationSaving = { Enabled = false }, KeySystem = false, }) --==================== ESP TAB ==================== local ESPTab = Window:CreateTab("ESP", 4483362458) ESPTab:CreateSection("ESP Elements") ESPTab:CreateToggle({ Name = "Enable ESP", CurrentValue = true, Flag = "ESPEnabled", Callback = function(v) State.ESPEnabled = v Holder.Parent = v and CoreGui or nil if not v then for _, v2 in ipairs(Players:GetPlayers()) do pcall(UnloadCharacter, v2) end else for _, v2 in ipairs(Players:GetPlayers()) do if v2 ~= LocalPlayer then task.spawn(function() pcall(LoadCharacter, v2) end) end end end end, }) ESPTab:CreateToggle({ Name = "Box", CurrentValue = true, Flag = "ESPBox", Callback = function(v) State.ESPBox = v for _, v2 in ipairs(Players:GetPlayers()) do if v2 ~= LocalPlayer then task.spawn(function() pcall(UnloadCharacter, v2); pcall(LoadCharacter, v2) end) end end end, }) ESPTab:CreateToggle({ Name = "Name Tag", CurrentValue = true, Flag = "ESPNameTag", Callback = function(v) State.ESPNameTag = v for _, v2 in ipairs(Players:GetPlayers()) do if v2 ~= LocalPlayer then task.spawn(function() pcall(UnloadCharacter, v2); pcall(LoadCharacter, v2) end) end end end, }) ESPTab:CreateToggle({ Name = "Highlight", CurrentValue = true, Flag = "ESPHighlight", Callback = function(v) State.ESPHighlight = v for _, v2 in ipairs(Players:GetPlayers()) do if v2 ~= LocalPlayer then task.spawn(function() pcall(UnloadCharacter, v2); pcall(LoadCharacter, v2) end) end end end, }) ESPTab:CreateSection("Colors") ESPTab:CreateToggle({ Name = "Use Team Color", CurrentValue = true, Flag = "UseTeamColor", Callback = function(v) State.UseTeamColor = v end, }) ESPTab:CreateColorPicker({ Name = "Friend Color", Color = Color3.fromRGB(0, 0, 255), Flag = "FriendColor", Callback = function(c) State.FriendColor = c end, }) ESPTab:CreateColorPicker({ Name = "Enemy Color", Color = Color3.fromRGB(255, 0, 0), Flag = "EnemyColor", Callback = function(c) State.EnemyColor = c end, }) --==================== AIMBOT TAB ==================== local AimbotTab = Window:CreateTab("Aimbot", 4483362458) AimbotTab:CreateSection("Aimbot") AimbotTab:CreateToggle({ Name = "Enable Aimbot", CurrentValue = false, Flag = "AimbotEnabled", Callback = function(v) State.AimbotEnabled = v end, }) AimbotTab:CreateParagraph({ Title = "Controls", Content = "Hold [E] to INSTANT lock onto head.", }) AimbotTab:CreateSlider({ Name = "FOV", Range = {50, 600}, Increment = 10, Suffix = "px", CurrentValue = 250, Flag = "FOV", Callback = function(v) State.FOV = v end, }) --==================== SETTINGS TAB ==================== local SettingsTab = Window:CreateTab("Settings", 4483362458) SettingsTab:CreateButton({ Name = "Close UI", Callback = function() State.AimbotEnabled = false State.AimbotHeld = false pcall(function() RunService:UnbindFromRenderStep("KaisanAimbot") RunService:UnbindFromRenderStep("KaisanFOV") end) Rayfield:Destroy() if FOVGui then FOVGui:Destroy() end if Holder then Holder:Destroy() end end, }) --========================================================== -- INPUT --========================================================== UserInputService.InputBegan:Connect(function(input, gpe) if gpe then return end if input.KeyCode == State.AimbotKey then State.AimbotHeld = true end end) UserInputService.InputEnded:Connect(function(input) if input.KeyCode == State.AimbotKey then State.AimbotHeld = false end end) --========================================================== -- NOTIFY --========================================================== Rayfield:Notify({ Title = "Rivals ESP + Aimbot", Content = "Loaded. ESP on. Hold [E] for aimbot.", Duration = 6, }) print("[Rivals ESP + Aimbot] Loaded. by kaisan_lover")