local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer -- Toggle configurations local loopUp = false local loopBehind = false -- Dynamic offsets local tpDistance = 2 -- Backwards offset (controlled by Left/Right) local tpHeight = 2 -- Vertical offset (controlled by Up/Down) -- Targeted Username Blacklist Table local blacklistedUsers = { ["blacklisted_user"] = true, ["blacklisted_user2] = true, } -- Advanced Check optimized specifically for Roblox Rivals setup local function getRivalsTeammate() local myCharacter = LocalPlayer.Character if not myCharacter then return nil end for _, player in ipairs(Players:GetPlayers()) do if player ~= LocalPlayer then -- 1. MULTIPLE USERNAME BLACKLIST CHECK if not blacklistedUsers[player.Name] then -- 2. Regular Team Checks local isTeammate = (player.Team == LocalPlayer.Team) or (player:GetAttribute("Team") == LocalPlayer:GetAttribute("Team")) if isTeammate then local char = player.Character local root = char and char:FindFirstChild("HumanoidRootPart") local humanoid = char and char:FindFirstChildOfClass("Humanoid") if root and humanoid and humanoid.Health > 0 and root.Position.Y > -100 then return root end end end end end return nil end -- Continuous frame loop using safe interpolation (Anti-Rubberband) RunService.Heartbeat:Connect(function() if not loopUp and not loopBehind then return end local myChar = LocalPlayer.Character local myRoot = myChar and myChar:FindFirstChild("HumanoidRootPart") if not myRoot then return end local targetRoot = getRivalsTeammate() if not targetRoot then return end local destinationCFrame if loopUp then destinationCFrame = targetRoot.CFrame * CFrame.new(0, tpHeight, 0) elseif loopBehind then destinationCFrame = targetRoot.CFrame * CFrame.new(0, tpHeight, tpDistance) end if destinationCFrame then myRoot.CFrame = myRoot.CFrame:Lerp(destinationCFrame, 0.45) end end) -- Keybind Processing UserInputService.InputBegan:Connect(function(input, gameProcessed) local isArrowKey = input.KeyCode == Enum.KeyCode.Up or input.KeyCode == Enum.KeyCode.Down or input.KeyCode == Enum.KeyCode.Left or input.KeyCode == Enum.KeyCode.Right if gameProcessed and not isArrowKey then return end -- Toggles if input.KeyCode == Enum.KeyCode.K then loopUp = not loopUp loopBehind = false elseif input.KeyCode == Enum.KeyCode.L then loopBehind = not loopBehind loopUp = false -- Horizontal Distance Adjustments elseif input.KeyCode == Enum.KeyCode.Right then tpDistance = tpDistance + 1 print("Horizontal distance increased to: " .. tpDistance) elseif input.KeyCode == Enum.KeyCode.Left then tpDistance = math.max(1, tpDistance - 1) print("Horizontal distance decreased to: " .. tpDistance) -- Vertical Height Adjustments elseif input.KeyCode == Enum.KeyCode.Up then tpHeight = tpHeight + 1 print("Vertical height increased to: " .. tpHeight) elseif input.KeyCode == Enum.KeyCode.Down then tpHeight = tpHeight - 1 print("Vertical height adjusted to: " .. tpHeight) end end)