
Key RequiredUniversal

--[[
Flag Football Combined Hub (Receiver + QB Aimbot)
Theme: Ocean | Includes Mobile Support
]]
local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))()
-- Services
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local VirtualInputManager = game:GetService("VirtualInputManager")
local StarterGui = game:GetService("StarterGui")
local CoreGui = game:GetService("CoreGui")
local LocalPlayer = Players.LocalPlayer
local Camera = workspace.CurrentCamera
local Gravity = workspace.Gravity
-------------------------------------------------------------------------
-- RECEIVER / MAGS VARIABLES
-------------------------------------------------------------------------
local REACH_DISTANCE = 15
local THICKNESS_MULTIPLIER = 20
local Y_OFFSET = 2
local isEnabledMags = false
local showRadiusBubble = false
local bubbleRadius = 15
local fakeArms = {}
-------------------------------------------------------------------------
-- QB AIMBOT VARIABLES
-------------------------------------------------------------------------
local DevSettings = {
TargetingEnabled = true,
TeammateOnly = true,
CameraLockEnabled = false,
TargetRange = 250,
ThrowPower = 85,
LeadMultiplier = 1.0,
AssistMode = "Precision",
ShowTrajectory = true,
ShowDebug = true,
TrajectoryColor = Color3.fromRGB(0, 255, 128)
}
local currentTarget = nil
local manuallyLockedTarget = nil
local isThrowing = false
-------------------------------------------------------------------------
-- UI & VISUALS SETUP
-------------------------------------------------------------------------
local function notify(title, text)
StarterGui:SetCore("SendNotification", { Title = title, Text = text, Duration = 2 })
end
-- Radius Bubble
local visualBubble = Instance.new("Part")
visualBubble.Name = "BallRadiusBubble"
visualBubble.Shape = Enum.PartType.Ball
visualBubble.Material = Enum.Material.ForceField
visualBubble.Color = Color3.fromRGB(255, 50, 50)
visualBubble.Anchored = true
visualBubble.CanCollide = false
visualBubble.Massless = true
visualBubble.CastShadow = false
-- Debug UI
local DebugScreenGui = Instance.new("ScreenGui")
DebugScreenGui.Name = "QBDebugUI"
local success = pcall(function() DebugScreenGui.Parent = CoreGui end)
if not success then DebugScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui") end
local DebugText = Instance.new("TextLabel", DebugScreenGui)
DebugText.Size = UDim2.new(0, 320, 0, 180)
DebugText.Position = UDim2.new(0, 10, 0.5, 0)
DebugText.BackgroundTransparency = 0.5
DebugText.BackgroundColor3 = Color3.new(0, 0, 0)
DebugText.TextColor3 = Color3.new(1, 1, 1)
DebugText.TextXAlignment = Enum.TextXAlignment.Left
DebugText.TextYAlignment = Enum.TextYAlignment.Top
DebugText.Font = Enum.Font.Code
DebugText.TextSize = 14
DebugText.Visible = DevSettings.ShowDebug
-- Trajectory System
local TrajectoryFolder = Instance.new("Folder", workspace)
TrajectoryFolder.Name = "QB_Trajectory"
local trajectoryLines = {}
local maxSegments = 40
for i = 1, maxSegments do
local line = Instance.new("Part")
line.Anchored = true
line.CanCollide = false
line.Material = Enum.Material.Neon
line.Color = DevSettings.TrajectoryColor
line.Transparency = 1
line.Parent = TrajectoryFolder
table.insert(trajectoryLines, line)
end
local CatchMarker = Instance.new("Part")
CatchMarker.Shape = Enum.PartType.Ball
CatchMarker.Size = Vector3.new(1.2, 1.2, 1.2)
CatchMarker.Material = Enum.Material.Neon
CatchMarker.Color = Color3.fromRGB(255, 50, 50)
CatchMarker.Anchored = true
CatchMarker.CanCollide = false
CatchMarker.Transparency = 1
CatchMarker.Parent = TrajectoryFolder
-------------------------------------------------------------------------
-- MOBILE SUPPORT HUD
-------------------------------------------------------------------------
local MobileGui = Instance.new("ScreenGui")
MobileGui.Name = "MobileSupportHUD"
MobileGui.Parent = success and CoreGui or LocalPlayer:WaitForChild("PlayerGui")
MobileGui.ResetOnSpawn = false
local ButtonContainer = Instance.new("Frame", MobileGui)
ButtonContainer.Size = UDim2.new(0, 60, 0, 200)
ButtonContainer.Position = UDim2.new(1, -70, 0.5, -100) -- Right side of screen
ButtonContainer.BackgroundTransparency = 1
local UIListLayout = Instance.new("UIListLayout", ButtonContainer)
UIListLayout.Padding = UDim.new(0, 10)
UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder
local function createMobileButton(name, text, layoutOrder)
local btn = Instance.new("TextButton", ButtonContainer)
btn.Name = name
btn.Size = UDim2.new(1, 0, 0, 55)
btn.BackgroundColor3 = Color3.fromRGB(25, 100, 150)
btn.BackgroundTransparency = 0.2
btn.Font = Enum.Font.SourceSansBold
btn.Text = text
btn.TextColor3 = Color3.new(1, 1, 1)
btn.TextSize = 14
btn.TextWrapped = true
btn.LayoutOrder = layoutOrder
local corner = Instance.new("UICorner", btn)
corner.CornerRadius = UDim.new(0, 8)
return btn
end
local btnToggleUI = createMobileButton("ToggleUI", "Menu\n(Show/Hide)", 1)
local btnTarget = createMobileButton("CycleTarget", "Target\n(T)", 2)
local btnThrow = createMobileButton("AutoThrow", "Throw\n(G)", 3)
btnToggleUI.MouseButton1Click:Connect(function()
VirtualInputManager:SendKeyEvent(true, Enum.KeyCode.RightControl, false, game)
task.wait(0.05)
VirtualInputManager:SendKeyEvent(false, Enum.KeyCode.RightControl, false, game)
end)
-------------------------------------------------------------------------
-- RECEIVER LOGIC
-------------------------------------------------------------------------
local function createFakeArms()
local character = LocalPlayer.Character
if not character then return end
local rightSource = character:FindFirstChild("Right Arm") or character:FindFirstChild("RightHand")
local leftSource = character:FindFirstChild("Left Arm") or character:FindFirstChild("LeftHand")
if not rightSource or not leftSource then return end
local rClone = Instance.new("Part")
rClone.Name = "VisualRightArm"
rClone.Size = Vector3.new(rightSource.Size.X * THICKNESS_MULTIPLIER, REACH_DISTANCE, rightSource.Size.Z * THICKNESS_MULTIPLIER)
rClone.Transparency = 1
rClone.CanCollide = false
rClone.Massless = true
rClone.Anchored = true
rClone.Parent = character
local lClone = Instance.new("Part")
lClone.Name = "VisualLeftArm"
lClone.Size = Vector3.new(leftSource.Size.X * THICKNESS_MULTIPLIER, REACH_DISTANCE, leftSource.Size.Z * THICKNESS_MULTIPLIER)
lClone.Transparency = 1
lClone.CanCollide = false
lClone.Massless = true
lClone.Anchored = true
lClone.Parent = character
fakeArms = {Right = rClone, Left = lClone}
end
local function removeFakeArms()
if fakeArms.Right then fakeArms.Right:Destroy() end
if fakeArms.Left then fakeArms.Left:Destroy() end
fakeArms = {}
end
local function refreshArms()
removeFakeArms()
if isEnabledMags then createFakeArms() end
end
-------------------------------------------------------------------------
-- QB LOGIC
-------------------------------------------------------------------------
local function CalculateFlightTime(startPos, targetPos, throwPower)
local distance = (Vector3.new(targetPos.X, 0, targetPos.Z) - Vector3.new(startPos.X, 0, startPos.Z)).Magnitude
return distance / throwPower
end
local function PredictInterception(qbPos, receiverPos, receiverVel, throwPower, leadMult)
local estimatedTime = CalculateFlightTime(qbPos, receiverPos, throwPower)
local predictedPos = receiverPos + (receiverVel * estimatedTime * leadMult)
return predictedPos, estimatedTime
end
local function CalculateThrowVelocity(startPos, targetPos, timeToTarget)
local displacement = targetPos - startPos
local velocityXZ = Vector3.new(displacement.X, 0, displacement.Z) / timeToTarget
local velocityY = (displacement.Y + 0.5 * Gravity * (timeToTarget ^ 2)) / timeToTarget
return velocityXZ + Vector3.new(0, velocityY, 0)
end
local function GetValidTargets()
if not DevSettings.TargetingEnabled then return {} end
local validTargets = {}
local screenCenter = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2)
local localChar = LocalPlayer.Character
if not localChar or not localChar:FindFirstChild("HumanoidRootPart") then return {} end
local qbPos = localChar.HumanoidRootPart.Position
for _, player in pairs(Players:GetPlayers()) do
if player == LocalPlayer then continue end
if DevSettings.TeammateOnly and player.Team ~= LocalPlayer.Team then continue end
local char = player.Character
if char and char:FindFirstChild("HumanoidRootPart") and char.Humanoid.Health > 0 then
local root = char.HumanoidRootPart
local distFromQB = (root.Position - qbPos).Magnitude
if distFromQB <= DevSettings.TargetRange then
local screenPos, onScreen = Camera:WorldToViewportPoint(root.Position)
if onScreen then
local distFromCenter = (Vector2.new(screenPos.X, screenPos.Y) - screenCenter).Magnitude
table.insert(validTargets, {Player = player, Dist = distFromCenter})
end
end
end
end
table.sort(validTargets, function(a, b) return a.Dist < b.Dist end)
local sortedPlayers = {}
for _, data in ipairs(validTargets) do
table.insert(sortedPlayers, data.Player)
end
return sortedPlayers
end
local function DrawTrajectory(startPos, velocity, flightTime, predictedPos)
if not DevSettings.ShowTrajectory then
for _, p in ipairs(trajectoryLines) do p.Transparency = 1 end
CatchMarker.Transparency = 1
return
end
local numSegments = math.clamp(math.floor(flightTime * 25), 8, maxSegments)
local timeStep = flightTime / numSegments
local lastPos = startPos
for i = 1, maxSegments do
local part = trajectoryLines[i]
if i <= numSegments then
local t = i * timeStep
local nextPos = startPos + (velocity * t) + (Vector3.new(0, -0.5 * Gravity * t^2, 0))
local distance = (nextPos - lastPos).Magnitude
part.Size = Vector3.new(0.12, 0.12, distance)
part.CFrame = CFrame.lookAt(lastPos, nextPos) * CFrame.new(0, 0, -distance / 2)
part.Transparency = 0.1 + (0.5 * (i / numSegments))
lastPos = nextPos
else
part.Transparency = 1
end
end
CatchMarker.Position = predictedPos
CatchMarker.Transparency = 0.3
end
local function ClearTrajectory()
for _, p in ipairs(trajectoryLines) do p.Transparency = 1 end
CatchMarker.Transparency = 1
end
local function GetAssistVelocity(qbRoot, recRoot)
if not recRoot or DevSettings.AssistMode == "Off" then return nil end
local targetPos = recRoot.Position
local recVel = recRoot.AssemblyLinearVelocity
local leadMult = DevSettings.LeadMultiplier
if DevSettings.AssistMode == "Direction" then leadMult = 0 end
local predictedPos, flightTime = PredictInterception(qbRoot.Position, targetPos, recVel, DevSettings.ThrowPower, leadMult)
return CalculateThrowVelocity(qbRoot.Position, predictedPos, flightTime), flightTime, predictedPos
end
local function CycleTargetFunction()
local validTargets = GetValidTargets()
if #validTargets > 1 then
local currentIndex = 1
for i, target in ipairs(validTargets) do
if target == manuallyLockedTarget then
currentIndex = i
break
end
end
local nextIndex = currentIndex + 1
if nextIndex > #validTargets then nextIndex = 1 end
manuallyLockedTarget = validTargets[nextIndex]
end
end
btnTarget.MouseButton1Click:Connect(CycleTargetFunction)
local function ExecuteThrow(isAutoThrow)
if isThrowing then return end
local char = LocalPlayer.Character
if not char or not char:FindFirstChild("HumanoidRootPart") then return end
local qbRoot = char.HumanoidRootPart
local tool = char:FindFirstChildOfClass("Tool")
if not tool then
local backpack = LocalPlayer:FindFirstChild("Backpack")
if backpack then
local bpTool = backpack:FindFirstChildOfClass("Tool")
if bpTool then char.Humanoid:EquipTool(bpTool) end
end
end
local finalVelocity = nil
local predictedPos = nil
if currentTarget and currentTarget.Character then
local recRoot = currentTarget.Character.HumanoidRootPart
finalVelocity, _, predictedPos = GetAssistVelocity(qbRoot, recRoot)
end
if not finalVelocity or not predictedPos then return end
isThrowing = true
-- NEW: Snap Character rotation to face target
local rootPos = qbRoot.Position
local lookAtCFrame = CFrame.lookAt(rootPos, Vector3.new(predictedPos.X, rootPos.Y, predictedPos.Z))
qbRoot.CFrame = lookAtCFrame
local originalCFrame = Camera.CFrame
local viewportSize = Camera.ViewportSize
local centerX = viewportSize.X / 2
local centerY = viewportSize.Y / 2
if isAutoThrow then
local timeToApex = finalVelocity.Y / Gravity
if timeToApex < 0.1 then timeToApex = 0.1 end
local apexPos = qbRoot.Position + (finalVelocity * timeToApex) - Vector3.new(0, 0.5 * Gravity * timeToApex^2, 0)
Camera.CFrame = CFrame.lookAt(Camera.CFrame.Position, apexPos)
task.wait(0.02)
VirtualInputManager:SendMouseButtonEvent(centerX, centerY, 0, true, game, 1)
task.wait(0.22)
VirtualInputManager:SendMouseButtonEvent(centerX, centerY, 0, false, game, 1)
end
task.spawn(function()
local ballPart = nil
for i = 1, 30 do
task.wait(0.03)
for _, obj in ipairs(workspace:GetDescendants()) do
if obj:IsA("BasePart") then
if not obj:IsDescendantOf(char) then
local nameLower = string.lower(obj.Name)
if (string.match(nameLower, "ball") or string.match(nameLower, "football") or string.match(nameLower, "pigskin")) and not obj.Anchored then
local dist = (obj.Position - qbRoot.Position).Magnitude
if dist < 30 then
ballPart = obj
break
end
end
end
end
end
if ballPart then break end
end
if isAutoThrow then
Camera.CFrame = originalCFrame
end
if ballPart then
for _, v in pairs(ballPart:GetChildren()) do
if v:IsA("BodyVelocity") or v:IsA("LinearVelocity") or v:IsA("VectorForce") or v:IsA("BodyForce") or v:IsA("BodyPosition") then
v:Destroy()
end
end
local startTime = tick()
local forceConnection
forceConnection = RunService.Heartbeat:Connect(function()
if tick() - startTime > 0.4 or not ballPart or not ballPart.Parent then
forceConnection:Disconnect()
isThrowing = false
return
end
ballPart.AssemblyLinearVelocity = finalVelocity
end)
else
isThrowing = false
end
end)
end
btnThrow.MouseButton1Click:Connect(function() ExecuteThrow(true) end)
-------------------------------------------------------------------------
-- RUNSERVICE & INPUT LOOP
-------------------------------------------------------------------------
local updateThrottle = 0
RunService.RenderStepped:Connect(function(dt)
-- RECEIVER MAGS
if isEnabledMags then
local character = LocalPlayer.Character
if character then
local rightSource = character:FindFirstChild("Right Arm") or character:FindFirstChild("RightHand")
local leftSource = character:FindFirstChild("Left Arm") or character:FindFirstChild("LeftHand")
if rightSource and leftSource and fakeArms.Right and fakeArms.Left then
fakeArms.Right.CFrame = rightSource.CFrame * CFrame.new(0, (-REACH_DISTANCE / 2) + Y_OFFSET, 0)
fakeArms.Left.CFrame = leftSource.CFrame * CFrame.new(0, (-REACH_DISTANCE / 2) + Y_OFFSET, 0)
end
end
end
-- RECEIVER RADIUS BUBBLE
if showRadiusBubble then
local targetBall = nil
for _, obj in ipairs(workspace:GetChildren()) do
if obj:IsA("BasePart") and obj.Name == "Ball" then
targetBall = obj
break
end
end
if targetBall then
visualBubble.Size = Vector3.new(bubbleRadius * 2, bubbleRadius * 2, bubbleRadius * 2)
visualBubble.CFrame = targetBall.CFrame
if visualBubble.Parent ~= workspace then visualBubble.Parent = workspace end
else
if visualBubble.Parent then visualBubble.Parent = nil end
end
else
if visualBubble.Parent then visualBubble.Parent = nil end
end
-- QB AIMBOT UPDATE
updateThrottle = updateThrottle + dt
if updateThrottle >= 0.04 then
updateThrottle = 0
local char = LocalPlayer.Character
if not char or not char:FindFirstChild("HumanoidRootPart") then return end
local qbRoot = char.HumanoidRootPart
local validTargets = GetValidTargets()
local isTargetStillValid = false
if manuallyLockedTarget then
for _, target in ipairs(validTargets) do
if target == manuallyLockedTarget then
isTargetStillValid = true
break
end
end
end
if not isTargetStillValid then manuallyLockedTarget = validTargets[1] end
currentTarget = manuallyLockedTarget
if currentTarget and currentTarget.Character and DevSettings.AssistMode ~= "Off" then
local recRoot = currentTarget.Character.HumanoidRootPart
local requiredVelocity, flightTime, predictedPos = GetAssistVelocity(qbRoot, recRoot)
if requiredVelocity then
DrawTrajectory(qbRoot.Position, requiredVelocity, flightTime, predictedPos)
if DevSettings.CameraLockEnabled and not isThrowing then
Camera.CFrame = CFrame.lookAt(Camera.CFrame.Position, recRoot.Position)
end
if DevSettings.ShowDebug then
DebugText.Text = string.format(
"[T] Target: %s\n[UI] Mode: %s\nDistance: %.1f\n[G] Auto-Throw\n[Click] Manual",
currentTarget.Name, DevSettings.AssistMode, (recRoot.Position - qbRoot.Position).Magnitude
)
end
end
else
ClearTrajectory()
if DevSettings.ShowDebug then
DebugText.Text = string.format("[T] Target: None\n[UI] Mode: %s\nWaiting for receiver...", DevSettings.AssistMode)
end
end
end
end)
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed then return end
-- Mags Input
if isEnabledMags and (input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch) then
local character = LocalPlayer.Character
if not character then return end
local rightSource = character:FindFirstChild("Right Arm") or character:FindFirstChild("RightHand")
for _, obj in ipairs(workspace:GetChildren()) do
if obj:IsA("BasePart") and obj.Name == "Ball" then
if rightSource and (rightSource.Position - obj.Position).Magnitude <= REACH_DISTANCE + (THICKNESS_MULTIPLIER * 2) then
if firetouchinterest then
firetouchinterest(rightSource, obj, 0)
firetouchinterest(rightSource, obj, 1)
else
obj.CFrame = rightSource.CFrame
end
end
end
end
end
-- QB Inputs
if input.KeyCode == Enum.KeyCode.T then CycleTargetFunction() end
if input.KeyCode == Enum.KeyCode.G then ExecuteThrow(true) end
end)
UserInputService.InputEnded:Connect(function(input, gameProcessed)
if gameProcessed then return end
if input.UserInputType == Enum.UserInputType.MouseButton1 then
if not isThrowing then ExecuteThrow(false) end
end
end)
-------------------------------------------------------------------------
-- RAYFIELD UI CONFIGURATION
-------------------------------------------------------------------------
local Window = Rayfield:CreateWindow({
Name = "Flag Football Complete Hub",
LoadingTitle = "Loading Scripts...",
LoadingSubtitle = "by You",
Theme = "Ocean",
DisableRayfieldPrompts = false,
ConfigurationSaving = { Enabled = false },
KeySystem = false
})
-- RECEIVER TAB
local ReceiverTab = Window:CreateTab("Receiver", 4483362458)
ReceiverTab:CreateSection("Mags Settings")
ReceiverTab:CreateToggle({
Name = "Enable Mags",
CurrentValue = false,
Flag = "MagsToggle",
Callback = function(Value)
isEnabledMags = Value
refreshArms()
notify("Flag Football", Value and "Mags ON" or "Mags OFF")
end,
})
ReceiverTab:CreateSlider({
Name = "Reach Distance",
Range = {5, 50},
Increment = 1,
Suffix = "Studs",
CurrentValue = 15,
Flag = "ReachSlider",
Callback = function(Value)
REACH_DISTANCE = Value
refreshArms()
end,
})
ReceiverTab:CreateSlider({
Name = "Thickness Multiplier",
Range = {1, 50},
Increment = 1,
Suffix = "x",
CurrentValue = 20,
Flag = "ThickSlider",
Callback = function(Value)
THICKNESS_MULTIPLIER = Value
refreshArms()
end,
})
-- QUARTERBACK TAB
local QBTab = Window:CreateTab("Quarterback", 4483362458)
QBTab:CreateSection("Targeting")
QBTab:CreateToggle({
Name = "Enable Targeting",
CurrentValue = DevSettings.TargetingEnabled,
Flag = "ToggleTargeting",
Callback = function(Value) DevSettings.TargetingEnabled = Value end,
})
QBTab:CreateToggle({
Name = "Teammates Only",
CurrentValue = DevSettings.TeammateOnly,
Flag = "ToggleTeam",
Callback = function(Value) DevSettings.TeammateOnly = Value end,
})
QBTab:CreateToggle({
Name = "Camera Lock on Target",
CurrentValue = DevSettings.CameraLockEnabled,
Flag = "ToggleCameraLock",
Callback = function(Value) DevSettings.CameraLockEnabled = Value end,
})
QBTab:CreateSlider({
Name = "Target Range",
Range = {50, 500},
Increment = 10,
Suffix = "Studs",
CurrentValue = DevSettings.TargetRange,
Flag = "SliderRange",
Callback = function(Value) DevSettings.TargetRange = Value end,
})
QBTab:CreateSection("Throw Settings")
QBTab:CreateDropdown({
Name = "Assist Mode",
Options = {"Precision", "Lead", "Direction", "Off"},
CurrentOption = {"Precision"},
MultipleOptions = false,
Flag = "DropdownAssist",
Callback = function(Options) DevSettings.AssistMode = Options[1] end,
})
QBTab:CreateSlider({
Name = "Throw Power",
Range = {40, 150},
Increment = 1,
Suffix = "Power",
CurrentValue = DevSettings.ThrowPower,
Flag = "SliderPower",
Callback = function(Value) DevSettings.ThrowPower = Value end,
})
QBTab:CreateSlider({
Name = "Lead Multiplier",
Range = {0, 3},
Increment = 0.1,
Suffix = "x",
CurrentValue = DevSettings.LeadMultiplier,
Flag = "SliderLead",
Callback = function(Value) DevSettings.LeadMultiplier = Value end,
})
-- VISUALS TAB
local VisualsTab = Window:CreateTab("Visuals", 4483362458)
VisualsTab:CreateSection("Ball Rendering")
VisualsTab:CreateToggle({
Name = "Show Ball Radius Bubble",
CurrentValue = false,
Flag = "BubbleToggle",
Callback = function(Value) showRadiusBubble = Value end,
})
VisualsTab:CreateSlider({
Name = "Bubble Size (Radius)",
Range = {1, 50},
Increment = 1,
Suffix = "Studs",
CurrentValue = 15,
Flag = "BubbleSlider",
Callback = function(Value) bubbleRadius = Value end,
})
VisualsTab:CreateSection("QB Visuals")
VisualsTab:CreateToggle({
Name = "Show Trajectory Arc",
CurrentValue = DevSettings.ShowTrajectory,
Flag = "ToggleArc",
Callback = function(Value)
DevSettings.ShowTrajectory = Value
if not Value then ClearTrajectory() end
end,
})
VisualsTab:CreateColorPicker({
Name = "Arc Color",
Color = DevSettings.TrajectoryColor,
Flag = "ColorArc",
Callback = function(Value)
DevSettings.TrajectoryColor = Value
for _, part in ipairs(trajectoryLines) do part.Color = Value end
end
})
VisualsTab:CreateToggle({
Name = "Show Debug Stats",
CurrentValue = DevSettings.ShowDebug,
Flag = "ToggleDebug",
Callback = function(Value)
DevSettings.ShowDebug = Value
DebugText.Visible = Value
end,
})
Rayfield:LoadConfiguration()
Please make the UI menu smaller for mobile, I would appreciate it.
@vectordixon5 i got you
@opensourcemanz Thanks!!!