-- [[ 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 ]] local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Lighting = game:GetService("Lighting") local HttpService = game:GetService("HttpService") local VirtualUser = game:GetService("VirtualUser") local CoreGui = game:GetService("CoreGui") local Workspace = game:GetService("Workspace") local LocalPlayer = Players.LocalPlayer local Camera = Workspace.CurrentCamera local RNG = Random.new() ---------------------------------------------------------------- -- CONFIG ---------------------------------------------------------------- local Config = { Aimbot = { Enabled = false, Silent = false, FOV = 120, Smooth = 0.2, TeamCheck = true, WallCheck = false, TargetPart = "Head" }, Triggerbot = { Enabled = false, Delay = 0.12 }, ESP = { Enabled = false, Boxes = true, -- Highlight Names = true, -- Billboard Distance = true, TeamCheck = true, Color = Color3.fromRGB(255, 40, 40) }, Combat = { NoRecoil = false, NoSpread = false, InfiniteAmmo = false, HitboxExpand = false, HitboxSize = 4 }, Movement = { Speed = false, SpeedValue = 22, Fly = false, FlySpeed = 50, InfiniteJump = false, Noclip = false }, Visuals = { ThirdPerson = false, Fullbright = false, NoFog = false }, Misc = { AntiAFK = true } } ---------------------------------------------------------------- -- STATE ---------------------------------------------------------------- local ESPFolder = Instance.new("Folder") ESPFolder.Name = "RESP" ESPFolder.Parent = CoreGui local BodyVelocity, BodyGyro local LastAim = 0 local Connections = {} ---------------------------------------------------------------- -- HELPERS ---------------------------------------------------------------- local function GetClosest() local closest, best = nil, Config.Aimbot.FOV local center = Vector2.new(Camera.ViewportSize.X/2, Camera.ViewportSize.Y/2) for _, plr in ipairs(Players:GetPlayers()) do if plr == LocalPlayer then continue end local char = plr.Character if not char then continue end local hum = char:FindFirstChildOfClass("Humanoid") local hrp = char:FindFirstChild("HumanoidRootPart") if not hum or not hrp or hum.Health <= 0 then continue end if Config.Aimbot.TeamCheck and plr.Team and LocalPlayer.Team and plr.Team == LocalPlayer.Team then continue end local part = char:FindFirstChild(Config.Aimbot.TargetPart) or char:FindFirstChild("Head") or hrp local screen, onScreen = Camera:WorldToViewportPoint(part.Position) if not onScreen then continue end local mag = (Vector2.new(screen.X, screen.Y) - center).Magnitude if mag < best then if Config.Aimbot.WallCheck then local params = RaycastParams.new() params.FilterDescendantsInstances = {LocalPlayer.Character} params.FilterType = Enum.RaycastFilterType.Exclude local result = Workspace:Raycast(Camera.CFrame.Position, (part.Position - Camera.CFrame.Position), params) if result and not result.Instance:IsDescendantOf(char) then continue end end closest = part best = mag end end return closest end ---------------------------------------------------------------- -- AIMBOT (camera only) ---------------------------------------------------------------- local function Aimbot() if not Config.Aimbot.Enabled and not Config.Aimbot.Silent then return end if tick() - LastAim < 0.016 then return end LastAim = tick() local part = GetClosest() if not part then return end local goal = CFrame.new(Camera.CFrame.Position, part.Position) local alpha = Config.Aimbot.Silent and 0.45 or Config.Aimbot.Smooth Camera.CFrame = Camera.CFrame:Lerp(goal, alpha) end ---------------------------------------------------------------- -- TRIGGERBOT ---------------------------------------------------------------- local function Triggerbot() if not Config.Triggerbot.Enabled then return end local part = GetClosest() if not part then return end local screen, onScreen = Camera:WorldToViewportPoint(part.Position) if not onScreen then return end local center = Vector2.new(Camera.ViewportSize.X/2, Camera.ViewportSize.Y/2) if (Vector2.new(screen.X, screen.Y) - center).Magnitude > 25 then return end task.spawn(function() task.wait(Config.Triggerbot.Delay + RNG:NextNumber(0, 0.05)) local char = LocalPlayer.Character if char then local tool = char:FindFirstChildOfClass("Tool") if tool then pcall(function() tool:Activate() end) end end end) end ---------------------------------------------------------------- -- ESP (Highlight + BillboardGui — works on mobile) ---------------------------------------------------------------- local function ClearESP() ESPFolder:ClearAllChildren() end local function MakeESP(plr) if not plr.Character then return end local char = plr.Character local hrp = char:FindFirstChild("HumanoidRootPart") local hum = char:FindFirstChildOfClass("Humanoid") if not hrp or not hum then return end -- Highlight (box) if Config.ESP.Boxes then local hl = Instance.new("Highlight") hl.Name = plr.Name hl.Adornee = char hl.FillColor = Config.ESP.Color hl.OutlineColor = Color3.new(1, 1, 1) hl.FillTransparency = 0.7 hl.OutlineTransparency = 0 hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop hl.Parent = ESPFolder end -- Name + Distance billboard if Config.ESP.Names or Config.ESP.Distance then local bb = Instance.new("BillboardGui") bb.Name = plr.Name .. "_BB" bb.Adornee = hrp bb.Size = UDim2.new(0, 120, 0, 40) bb.StudsOffset = Vector3.new(0, 3.2, 0) bb.AlwaysOnTop = true bb.Parent = ESPFolder local label = Instance.new("TextLabel") label.Size = UDim2.new(1, 0, 1, 0) label.BackgroundTransparency = 1 label.TextColor3 = Color3.new(1, 1, 1) label.TextStrokeTransparency = 0.3 label.Font = Enum.Font.GothamBold label.TextSize = 14 label.Text = "" label.Parent = bb -- live update local conn conn = RunService.RenderStepped:Connect(function() if not char.Parent or not hrp.Parent or hum.Health <= 0 then bb:Destroy() if conn then conn:Disconnect() end return end local txt = "" if Config.ESP.Names then txt = plr.DisplayName or plr.Name end if Config.ESP.Distance then local d = math.floor((hrp.Position - Camera.CFrame.Position).Magnitude) txt = txt .. (txt ~= "" and "\n" or "") .. d .. "m" end label.Text = txt end) end end local function UpdateESP() ClearESP() if not Config.ESP.Enabled then return end for _, plr in ipairs(Players:GetPlayers()) do if plr == LocalPlayer then continue end if Config.ESP.TeamCheck and plr.Team and LocalPlayer.Team and plr.Team == LocalPlayer.Team then continue end if plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") then MakeESP(plr) end end end -- refresh ESP every 1.5s (cheap) task.spawn(function() while task.wait(1.5) do if Config.ESP.Enabled then UpdateESP() else ClearESP() end end end) Players.PlayerAdded:Connect(function() if Config.ESP.Enabled then UpdateESP() end end) Players.PlayerRemoving:Connect(function() if Config.ESP.Enabled then UpdateESP() end end) ---------------------------------------------------------------- -- COMBAT ---------------------------------------------------------------- local function CombatHooks() local char = LocalPlayer.Character if not char then return end local tool = char:FindFirstChildOfClass("Tool") if not tool then return end for _, v in ipairs(tool:GetDescendants()) do if v:IsA("NumberValue") or v:IsA("IntValue") then local n = v.Name:lower() if Config.Combat.NoRecoil and (n:find("recoil") or n:find("kick")) then pcall(function() v.Value = 0 end) end if Config.Combat.NoSpread and n:find("spread") then pcall(function() v.Value = 0 end) end if Config.Combat.InfiniteAmmo and (n:find("ammo") or n:find("clip") or n:find("mag")) then pcall(function() v.Value = 999 end) end end end end local function Hitbox() if not Config.Combat.HitboxExpand then return end for _, plr in ipairs(Players:GetPlayers()) do if plr ~= LocalPlayer and plr.Character then local hrp = plr.Character:FindFirstChild("HumanoidRootPart") if hrp then hrp.Size = Vector3.new(Config.Combat.HitboxSize, Config.Combat.HitboxSize, Config.Combat.HitboxSize) hrp.Transparency = 0.8 hrp.CanCollide = false end end end end ---------------------------------------------------------------- -- MOVEMENT ---------------------------------------------------------------- local function Speed() if not Config.Movement.Speed then return end local char = LocalPlayer.Character if char then local hum = char:FindFirstChildOfClass("Humanoid") if hum then hum.WalkSpeed = Config.Movement.SpeedValue end end end local function Fly() if not Config.Movement.Fly then if BodyVelocity then BodyVelocity:Destroy() BodyVelocity = nil end if BodyGyro then BodyGyro:Destroy() BodyGyro = nil end return end local char = LocalPlayer.Character local hrp = char and char:FindFirstChild("HumanoidRootPart") if not hrp then return end if not BodyVelocity then BodyVelocity = Instance.new("BodyVelocity") BodyVelocity.MaxForce = Vector3.new(9e9, 9e9, 9e9) BodyVelocity.Parent = hrp BodyGyro = Instance.new("BodyGyro") BodyGyro.MaxTorque = Vector3.new(9e9, 9e9, 9e9) BodyGyro.P = 9e4 BodyGyro.Parent = hrp end local hum = char:FindFirstChildOfClass("Humanoid") local move = hum and hum.MoveDirection or Vector3.zero local vel = Vector3.zero if move.Magnitude > 0.1 then vel = (Camera.CFrame.RightVector * move.X + Camera.CFrame.LookVector * move.Z) if vel.Magnitude > 0 then vel = vel.Unit * Config.Movement.FlySpeed end end -- up/down via jump state if UserInputService:IsKeyDown(Enum.KeyCode.Space) or (hum and hum.Jump) then vel = vel + Vector3.new(0, Config.Movement.FlySpeed, 0) end BodyVelocity.Velocity = vel BodyGyro.CFrame = Camera.CFrame end local function Noclip() if not Config.Movement.Noclip then return end local char = LocalPlayer.Character if char then for _, p in ipairs(char:GetDescendants()) do if p:IsA("BasePart") then p.CanCollide = false end end end end UserInputService.JumpRequest:Connect(function() if Config.Movement.InfiniteJump then local char = LocalPlayer.Character local hum = char and char:FindFirstChildOfClass("Humanoid") if hum then hum:ChangeState(Enum.HumanoidStateType.Jumping) end end end) ---------------------------------------------------------------- -- VISUALS ---------------------------------------------------------------- local function Fullbright() if Config.Visuals.Fullbright then Lighting.Brightness = 2 Lighting.ClockTime = 14 Lighting.FogEnd = 1e6 Lighting.GlobalShadows = false end end local function NoFog() if Config.Visuals.NoFog then Lighting.FogEnd = 1e6 end end local function ThirdPerson() pcall(function() LocalPlayer.CameraMode = Config.Visuals.ThirdPerson and Enum.CameraMode.Classic or Enum.CameraMode.LockFirstPerson end) end ---------------------------------------------------------------- -- ANTI AFK ---------------------------------------------------------------- LocalPlayer.Idled:Connect(function() if Config.Misc.AntiAFK then pcall(function() VirtualUser:CaptureController() VirtualUser:ClickButton2(Vector2.new()) end) end end) ---------------------------------------------------------------- -- MOBILE GUI ---------------------------------------------------------------- local SG = Instance.new("ScreenGui") SG.Name = "RMob" SG.ResetOnSpawn = false SG.DisplayOrder = 999 SG.IgnoreGuiInset = true pcall(function() SG.Parent = CoreGui end) if not SG.Parent then SG.Parent = LocalPlayer:WaitForChild("PlayerGui") end -- floating button local OpenBtn = Instance.new("TextButton") OpenBtn.Size = UDim2.new(0, 60, 0, 60) OpenBtn.Position = UDim2.new(1, -74, 0.45, 0) OpenBtn.BackgroundColor3 = Color3.fromRGB(255, 50, 50) OpenBtn.Text = "R" OpenBtn.TextColor3 = Color3.new(1,1,1) OpenBtn.Font = Enum.Font.GothamBold OpenBtn.TextSize = 24 OpenBtn.Parent = SG Instance.new("UICorner", OpenBtn).CornerRadius = UDim.new(1, 0) local Main = Instance.new("Frame") Main.Size = UDim2.new(0, 300, 0, 420) Main.Position = UDim2.new(0.5, -150, 0.5, -210) Main.BackgroundColor3 = Color3.fromRGB(18, 18, 22) Main.Visible = false Main.Parent = SG Instance.new("UICorner", Main).CornerRadius = UDim.new(0, 12) local Top = Instance.new("Frame") Top.Size = UDim2.new(1, 0, 0, 40) Top.BackgroundColor3 = Color3.fromRGB(28, 28, 34) Top.Parent = Main Instance.new("UICorner", Top).CornerRadius = UDim.new(0, 12) local Title = Instance.new("TextLabel") Title.Size = UDim2.new(1, -50, 1, 0) Title.Position = UDim2.new(0, 12, 0, 0) Title.BackgroundTransparency = 1 Title.Text = "RIVAL MOBILE" Title.TextColor3 = Color3.fromRGB(255, 70, 70) Title.Font = Enum.Font.GothamBold Title.TextSize = 16 Title.TextXAlignment = Enum.TextXAlignment.Left Title.Parent = Top local Close = Instance.new("TextButton") Close.Size = UDim2.new(0, 34, 0, 34) Close.Position = UDim2.new(1, -38, 0, 3) Close.BackgroundColor3 = Color3.fromRGB(40, 40, 48) Close.Text = "X" Close.TextColor3 = Color3.fromRGB(255, 80, 80) Close.Font = Enum.Font.GothamBold Close.TextSize = 16 Close.Parent = Top Instance.new("UICorner", Close).CornerRadius = UDim.new(0, 8) -- tabs local TabBar = Instance.new("ScrollingFrame") TabBar.Size = UDim2.new(1, -8, 0, 36) TabBar.Position = UDim2.new(0, 4, 0, 44) TabBar.BackgroundTransparency = 1 TabBar.ScrollBarThickness = 0 TabBar.CanvasSize = UDim2.new(0, 460, 0, 0) TabBar.Parent = Main local TabLay = Instance.new("UIListLayout", TabBar) TabLay.FillDirection = Enum.FillDirection.Horizontal TabLay.Padding = UDim.new(0, 6) local Content = Instance.new("ScrollingFrame") Content.Size = UDim2.new(1, -12, 1, -90) Content.Position = UDim2.new(0, 6, 0, 84) Content.BackgroundTransparency = 1 Content.ScrollBarThickness = 3 Content.CanvasSize = UDim2.new(0, 0, 0, 600) Content.Parent = Main local ContLay = Instance.new("UIListLayout", Content) ContLay.Padding = UDim.new(0, 6) local Tabs = {"Combat", "ESP", "Move", "Visual"} local TabBtns = {} local CurTab = "Combat" local function Clear() for _, c in ipairs(Content:GetChildren()) do if not c:IsA("UIListLayout") then c:Destroy() end end end local function AddToggle(txt, val, cb) local f = Instance.new("Frame") f.Size = UDim2.new(1, 0, 0, 44) f.BackgroundColor3 = Color3.fromRGB(30, 30, 36) f.Parent = Content Instance.new("UICorner", f).CornerRadius = UDim.new(0, 8) local l = Instance.new("TextLabel") l.Size = UDim2.new(1, -70, 1, 0) l.Position = UDim2.new(0, 10, 0, 0) l.BackgroundTransparency = 1 l.Text = txt l.TextColor3 = Color3.fromRGB(230, 230, 230) l.Font = Enum.Font.Gotham l.TextSize = 14 l.TextXAlignment = Enum.TextXAlignment.Left l.Parent = f local b = Instance.new("TextButton") b.Size = UDim2.new(0, 54, 0, 28) b.Position = UDim2.new(1, -62, 0.5, -14) b.BackgroundColor3 = val and Color3.fromRGB(255, 55, 55) or Color3.fromRGB(55, 55, 65) b.Text = val and "ON" or "OFF" b.TextColor3 = Color3.new(1,1,1) b.Font = Enum.Font.GothamBold b.TextSize = 12 b.Parent = f Instance.new("UICorner", b).CornerRadius = UDim.new(0, 8) local on = val b.MouseButton1Click:Connect(function() on = not on b.BackgroundColor3 = on and Color3.fromRGB(255, 55, 55) or Color3.fromRGB(55, 55, 65) b.Text = on and "ON" or "OFF" cb(on) end) end local function AddSlider(txt, min, max, val, cb) local f = Instance.new("Frame") f.Size = UDim2.new(1, 0, 0, 58) f.BackgroundColor3 = Color3.fromRGB(30, 30, 36) f.Parent = Content Instance.new("UICorner", f).CornerRadius = UDim.new(0, 8) local l = Instance.new("TextLabel") l.Size = UDim2.new(1, -16, 0, 20) l.Position = UDim2.new(0, 10, 0, 4) l.BackgroundTransparency = 1 l.Text = txt .. ": " .. val l.TextColor3 = Color3.fromRGB(230, 230, 230) l.Font = Enum.Font.Gotham l.TextSize = 13 l.TextXAlignment = Enum.TextXAlignment.Left l.Parent = f local bar = Instance.new("Frame") bar.Size = UDim2.new(1, -20, 0, 12) bar.Position = UDim2.new(0, 10, 0, 32) bar.BackgroundColor3 = Color3.fromRGB(50, 50, 60) bar.Parent = f Instance.new("UICorner", bar).CornerRadius = UDim.new(0, 6) local fill = Instance.new("Frame") fill.Size = UDim2.new((val-min)/(max-min), 0, 1, 0) fill.BackgroundColor3 = Color3.fromRGB(255, 55, 55) fill.Parent = bar Instance.new("UICorner", fill).CornerRadius = UDim.new(0, 6) local hold = false bar.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then hold = true end end) UserInputService.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then hold = false end end) UserInputService.InputChanged:Connect(function(i) if hold and (i.UserInputType == Enum.UserInputType.MouseMovement or i.UserInputType == Enum.UserInputType.Touch) then local r = math.clamp((i.Position.X - bar.AbsolutePosition.X) / bar.AbsoluteSize.X, 0, 1) local v = math.floor(min + (max-min)*r) fill.Size = UDim2.new(r, 0, 1, 0) l.Text = txt .. ": " .. v cb(v) end end) end local function Build(name) Clear() if name == "Combat" then AddToggle("Aimbot", Config.Aimbot.Enabled, function(v) Config.Aimbot.Enabled = v end) AddToggle("Silent Aim", Config.Aimbot.Silent, function(v) Config.Aimbot.Silent = v end) AddSlider("FOV", 50, 250, Config.Aimbot.FOV, function(v) Config.Aimbot.FOV = v end) AddSlider("Smooth", 5, 40, math.floor(Config.Aimbot.Smooth*100), function(v) Config.Aimbot.Smooth = v/100 end) AddToggle("Team Check", Config.Aimbot.TeamCheck, function(v) Config.Aimbot.TeamCheck = v end) AddToggle("Triggerbot", Config.Triggerbot.Enabled, function(v) Config.Triggerbot.Enabled = v end) AddToggle("No Recoil", Config.Combat.NoRecoil, function(v) Config.Combat.NoRecoil = v end) AddToggle("No Spread", Config.Combat.NoSpread, function(v) Config.Combat.NoSpread = v end) AddToggle("Infinite Ammo", Config.Combat.InfiniteAmmo, function(v) Config.Combat.InfiniteAmmo = v end) AddToggle("Hitbox Expand", Config.Combat.HitboxExpand, function(v) Config.Combat.HitboxExpand = v end) AddSlider("Hitbox Size", 2, 12, Config.Combat.HitboxSize, function(v) Config.Combat.HitboxSize = v end) elseif name == "ESP" then AddToggle("ESP", Config.ESP.Enabled, function(v) Config.ESP.Enabled = v if v then UpdateESP() else ClearESP() end end) AddToggle("Boxes (Highlight)", Config.ESP.Boxes, function(v) Config.ESP.Boxes = v if Config.ESP.Enabled then UpdateESP() end end) AddToggle("Names", Config.ESP.Names, function(v) Config.ESP.Names = v if Config.ESP.Enabled then UpdateESP() end end) AddToggle("Distance", Config.ESP.Distance, function(v) Config.ESP.Distance = v if Config.ESP.Enabled then UpdateESP() end end) AddToggle("Team Check", Config.ESP.TeamCheck, function(v) Config.ESP.TeamCheck = v if Config.ESP.Enabled then UpdateESP() end end) elseif name == "Move" then AddToggle("Speed", Config.Movement.Speed, function(v) Config.Movement.Speed = v end) AddSlider("Speed Value", 16, 40, Config.Movement.SpeedValue, function(v) Config.Movement.SpeedValue = v end) AddToggle("Fly", Config.Movement.Fly, function(v) Config.Movement.Fly = v end) AddSlider("Fly Speed", 20, 100, Config.Movement.FlySpeed, function(v) Config.Movement.FlySpeed = v end) AddToggle("Infinite Jump", Config.Movement.InfiniteJump, function(v) Config.Movement.InfiniteJump = v end) AddToggle("Noclip", Config.Movement.Noclip, function(v) Config.Movement.Noclip = v end) elseif name == "Visual" then AddToggle("Third Person", Config.Visuals.ThirdPerson, function(v) Config.Visuals.ThirdPerson = v ThirdPerson() end) AddToggle("Fullbright", Config.Visuals.Fullbright, function(v) Config.Visuals.Fullbright = v Fullbright() end) AddToggle("No Fog", Config.Visuals.NoFog, function(v) Config.Visuals.NoFog = v NoFog() end) AddToggle("Anti-AFK", Config.Misc.AntiAFK, function(v) Config.Misc.AntiAFK = v end) end Content.CanvasSize = UDim2.new(0, 0, 0, ContLay.AbsoluteContentSize.Y + 16) end for _, name in ipairs(Tabs) do local b = Instance.new("TextButton") b.Size = UDim2.new(0, 80, 0, 30) b.BackgroundColor3 = name == CurTab and Color3.fromRGB(255, 55, 55) or Color3.fromRGB(40, 40, 48) b.Text = name b.TextColor3 = Color3.new(1,1,1) b.Font = Enum.Font.GothamBold b.TextSize = 12 b.Parent = TabBar Instance.new("UICorner", b).CornerRadius = UDim.new(0, 6) TabBtns[name] = b b.MouseButton1Click:Connect(function() CurTab = name for n, btn in pairs(TabBtns) do btn.BackgroundColor3 = n == name and Color3.fromRGB(255, 55, 55) or Color3.fromRGB(40, 40, 48) end Build(name) end) end OpenBtn.MouseButton1Click:Connect(function() Main.Visible = not Main.Visible if Main.Visible then Build(CurTab) end end) Close.MouseButton1Click:Connect(function() Main.Visible = false end) -- drag local drag, dStart, sPos Top.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then drag = true dStart = i.Position sPos = Main.Position end end) UserInputService.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then drag = false end end) UserInputService.InputChanged:Connect(function(i) if drag and (i.UserInputType == Enum.UserInputType.MouseMovement or i.UserInputType == Enum.UserInputType.Touch) then local d = i.Position - dStart Main.Position = UDim2.new(sPos.X.Scale, sPos.X.Offset + d.X, sPos.Y.Scale, sPos.Y.Offset + d.Y) end end) ---------------------------------------------------------------- -- LOOP ---------------------------------------------------------------- RunService.RenderStepped:Connect(function() Aimbot() Triggerbot() Speed() Fly() Noclip() CombatHooks() if Config.Combat.HitboxExpand then Hitbox() end end)