if not game:IsLoaded() then game.Loaded:Wait() end -- ============================================================ -- SERVICES -- ============================================================ local Players = game:GetService("Players") local TweenService = game:GetService("TweenService") local RunService = game:GetService("RunService") local ReplicatedStorage = game:GetService("ReplicatedStorage") local lp = Players.LocalPlayer -- ============================================================ -- RAYFIELD -- ============================================================ local Rayfield = loadstring(game:HttpGet("https://sirius.menu/rayfield"))() local Window = Rayfield:CreateWindow({ Name = "Track & Field Hub", LoadingTitle = "Track & Field Hub", LoadingSubtitle = "Made by HIM", Theme = "Default", DisableRayfieldPrompts = false, DisableBuildWarnings = false, ConfigurationSaving = { Enabled = true, FolderName = "TrackFieldHub", FileName = "Config", }, KeySystem = false, }) -- ============================================================ -- HELPERS -- ============================================================ local function getChar() return lp.Character end local function getHum() local c = getChar() return c and c:FindFirstChildOfClass("Humanoid") end local function getHRP() local c = getChar() return c and c:FindFirstChild("HumanoidRootPart") end local function notify(t, c, d) Rayfield:Notify({ Title = t, Content = c, Duration = d or 2, Image = 4483362458 }) end -- ============================================================ -- STATE -- ============================================================ local baseSpeed = 16 local State = { SpeedEnabled = false, TargetSpeed = 32, JumpEnabled = false, JumpMode = "Long Jump", InfJump = false, LongJumpForward = 80, LongJumpUp = 40, HighJumpForce = 80, NoclipEnabled = false, ShotPutDistance = 50, ShotPutAngle = 45, ShotPutTimed = false, ShotPutDelay = 0.5, } -- ============================================================ -- SPEED: BodyVelocity (never touches WalkSpeed) -- ============================================================ local speedBody = nil local speedActive = false local function enableSpeedBody() local hrp = getHRP() if not hrp then return end if speedBody then speedBody:Destroy() speedBody = nil end speedBody = Instance.new("BodyVelocity") speedBody.Name = "_SpeedBV" speedBody.Velocity = Vector3.new(0, 0, 0) speedBody.MaxForce = Vector3.new(1e5, 0, 1e5) speedBody.P = 1e4 speedBody.Parent = hrp speedActive = true end local function disableSpeedBody() speedActive = false if speedBody then speedBody:Destroy() speedBody = nil end end RunService.Heartbeat:Connect(function() if not speedActive or not speedBody or not speedBody.Parent then return end local hum = getHum() local hrp = getHRP() if not hum or not hrp or hum.Health <= 0 then return end local moveDir = hum.MoveDirection if moveDir.Magnitude > 0.1 then speedBody.Velocity = moveDir * State.TargetSpeed else speedBody.Velocity = Vector3.new(0, 0, 0) end end) -- ============================================================ -- JUMP: High Jump -- ============================================================ local function applyHighJump(hrp, force) local old = hrp:FindFirstChild("_HighJumpBV") if old then old:Destroy() end local bv = Instance.new("BodyVelocity") bv.Name = "_HighJumpBV" bv.Velocity = Vector3.new(0, force, 0) bv.MaxForce = Vector3.new(0, math.huge, 0) bv.P = math.huge bv.Parent = hrp game:GetService("Debris"):AddItem(bv, 0.08) end -- ============================================================ -- JUMP: Long Jump -- ============================================================ local function applyLongJump(hrp, forwardForce, upForce) local old = hrp:FindFirstChild("_LongJumpBV") if old then old:Destroy() end local lookDir = hrp.CFrame.LookVector local flatDir = Vector3.new(lookDir.X, 0, lookDir.Z).Unit local bv = Instance.new("BodyVelocity") bv.Name = "_LongJumpBV" bv.Velocity = Vector3.new( flatDir.X * forwardForce, upForce, flatDir.Z * forwardForce ) bv.MaxForce = Vector3.new(math.huge, math.huge, math.huge) bv.P = math.huge bv.Parent = hrp game:GetService("Debris"):AddItem(bv, 0.12) end -- ============================================================ -- JUMP CONNECTION -- ============================================================ local jumpConn = nil local function connectJump(char) if jumpConn then jumpConn:Disconnect() jumpConn = nil end local hum = char:WaitForChild("Humanoid") jumpConn = hum.StateChanged:Connect(function(_, new) if new == Enum.HumanoidStateType.Jumping then local hrp = char:FindFirstChild("HumanoidRootPart") if not hrp then return end if State.JumpEnabled then if State.JumpMode == "Long Jump" then task.delay(0.02, function() applyLongJump(hrp, State.LongJumpForward, State.LongJumpUp) end) elseif State.JumpMode == "High Jump" then task.delay(0.02, function() applyHighJump(hrp, State.HighJumpForce) end) end end if State.InfJump then task.wait(0.13) hum:ChangeState(Enum.HumanoidStateType.Jumping) end end end) end -- ============================================================ -- NOCLIP -- ============================================================ RunService.Stepped:Connect(function() if State.NoclipEnabled then local c = getChar() if c then for _, p in ipairs(c:GetDescendants()) do if p:IsA("BasePart") and p.CanCollide then p.CanCollide = false end end end end end) -- ============================================================ -- RESPAWN -- ============================================================ lp.CharacterAdded:Connect(function(char) task.wait(0.8) speedBody = nil if State.SpeedEnabled then enableSpeedBody() end connectJump(char) end) if lp.Character then connectJump(lp.Character) end -- ============================================================ -- SHOT PUT -- ============================================================ local function findShotPutRemote() local names = { "Throw","ThrowBall","Launch","Release", "ShotPut","PutShot","ThrowShotPut", "EventThrow","Compete","Submit","Power","Force" } for _, name in ipairs(names) do local r = ReplicatedStorage:FindFirstChild(name, true) or workspace:FindFirstChild(name, true) if r and (r:IsA("RemoteEvent") or r:IsA("RemoteFunction")) then return r end end return nil end local function findShotPutBall() local keywords = {"ShotPut","Ball","Shot","Put","Throw","Projectile","Puck"} for _, obj in ipairs(workspace:GetDescendants()) do if obj:IsA("BasePart") or obj:IsA("Model") then for _, kw in ipairs(keywords) do if obj.Name:lower():find(kw:lower()) then return obj end end end end return nil end local function calculateThrowVelocity(distance, angleDeg) local g = workspace.Gravity or 196.2 local angleRad = math.rad(angleDeg) local v = math.sqrt(distance * g / math.sin(2 * angleRad)) local hrp = getHRP() if not hrp then return Vector3.new(0, v, 0) end local lookDir = hrp.CFrame.LookVector local flatDir = Vector3.new(lookDir.X, 0, lookDir.Z).Unit return Vector3.new( flatDir.X * v * math.cos(angleRad), v * math.sin(angleRad), flatDir.Z * v * math.cos(angleRad) ) end local function executeShotPut() local hrp = getHRP() if not hrp then notify("Shot Put", "No character.", 2) return end local remote = findShotPutRemote() if remote then local vel = calculateThrowVelocity(State.ShotPutDistance, State.ShotPutAngle) if remote:IsA("RemoteEvent") then remote:FireServer(vel, State.ShotPutDistance, State.ShotPutAngle) else remote:InvokeServer(vel, State.ShotPutDistance, State.ShotPutAngle) end notify("Shot Put", "Thrown! Distance: " .. State.ShotPutDistance, 2) return end local ball = findShotPutBall() if ball then local click = ball:FindFirstChildOfClass("ClickDetector") local prompt = ball:FindFirstChildOfClass("ProximityPrompt") if click then pcall(fireclick, click) notify("Shot Put", "Clicked.", 2) return end if prompt then pcall(fireproximityprompt, prompt) notify("Shot Put", "Prompted.", 2) return end local ballPart = ball:IsA("BasePart") and ball or ball:FindFirstChildWhichIsA("BasePart") if ballPart then local vel = calculateThrowVelocity(State.ShotPutDistance, State.ShotPutAngle) local bv = Instance.new("BodyVelocity") bv.Velocity = vel bv.MaxForce = Vector3.new(1e6, 1e6, 1e6) bv.P = 1e5 bv.Parent = ballPart game:GetService("Debris"):AddItem(bv, 0.1) notify("Shot Put", "Physics throw!", 2) return end end notify("Shot Put", "Nothing found. Run debug.", 3) end local shotConn = nil local function startTimedThrow() if shotConn then shotConn:Disconnect() shotConn = nil end shotConn = RunService.Heartbeat:Connect(function() if not State.ShotPutTimed then shotConn:Disconnect() shotConn = nil return end local ball = findShotPutBall() if ball then task.wait(State.ShotPutDelay) executeShotPut() task.wait(4) end end) end -- ============================================================ -- TAB: SPEED -- ============================================================ local SpeedTab = Window:CreateTab("Speed", 4483362458) SpeedTab:CreateSection("Speed Hack") SpeedTab:CreateToggle({ Name = "Enable Speed", CurrentValue = false, Flag = "SpeedToggle", Callback = function(v) State.SpeedEnabled = v if v then enableSpeedBody() notify("Speed", string.format("ON → %.0f ws", State.TargetSpeed), 2) else disableSpeedBody() notify("Speed", "OFF — back to normal.", 2) end end, }) SpeedTab:CreateSlider({ Name = "Speed (1.0x - 8.0x)", Range = {10, 80}, Increment = 1, Suffix = "x", CurrentValue = 20, Flag = "SpeedSlider", Callback = function(v) local mult = v / 10 State.TargetSpeed = baseSpeed * mult if State.SpeedEnabled and speedBody then speedBody.Velocity = Vector3.new(0, 0, 0) end notify("Speed", string.format("%.1fx = %.0f ws", mult, State.TargetSpeed), 1) end, }) SpeedTab:CreateSection("Presets") SpeedTab:CreateDropdown({ Name = "Quick Presets", Options = { "1.5x — Subtle", "2.0x — Normal", "3.0x — Fast", "5.0x — Very Fast", "8.0x — Max", }, CurrentOption = {"2.0x — Normal"}, MultipleOptions = false, Flag = "SpeedPreset", Callback = function(v) local map = { ["1.5x — Subtle"] = 1.5, ["2.0x — Normal"] = 2.0, ["3.0x — Fast"] = 3.0, ["5.0x — Very Fast"] = 5.0, ["8.0x — Max"] = 8.0, } local mult = map[v[1]] if mult then State.TargetSpeed = baseSpeed * mult notify("Preset", v[1] .. string.format(" = %.0f ws", State.TargetSpeed), 2) end end, }) SpeedTab:CreateButton({ Name = "Reset Speed", Callback = function() disableSpeedBody() State.SpeedEnabled = false notify("Speed", "Reset to normal.", 2) end, }) -- ============================================================ -- TAB: JUMP -- ============================================================ local JumpTab = Window:CreateTab("Jump", 4483362458) JumpTab:CreateSection("Event Mode") JumpTab:CreateDropdown({ Name = "Select Jump Event", Options = {"Long Jump", "High Jump"}, CurrentOption = {"Long Jump"}, MultipleOptions = false, Flag = "JumpMode", Callback = function(v) State.JumpMode = v[1] notify("Jump Mode", v[1] .. " selected", 2) end, }) JumpTab:CreateToggle({ Name = "Enable Jump Boost", CurrentValue = false, Flag = "JumpToggle", Callback = function(v) State.JumpEnabled = v notify("Jump", v and ("ON — " .. State.JumpMode) or "OFF", 2) end, }) JumpTab:CreateSection("Long Jump Settings") JumpTab:CreateSlider({ Name = "Forward Force", Range = {20, 300}, Increment = 5, Suffix = " fwd", CurrentValue = 80, Flag = "LongJumpFwd", Callback = function(v) State.LongJumpForward = v end, }) JumpTab:CreateSlider({ Name = "Arc (Upward Force)", Range = {0, 100}, Increment = 5, Suffix = " up", CurrentValue = 40, Flag = "LongJumpUp", Callback = function(v) State.LongJumpUp = v end, }) JumpTab:CreateSection("High Jump Settings") JumpTab:CreateSlider({ Name = "Upward Force", Range = {50, 500}, Increment = 5, Suffix = " force", CurrentValue = 80, Flag = "HighJumpForce", Callback = function(v) State.HighJumpForce = v end, }) JumpTab:CreateSection("Misc") JumpTab:CreateToggle({ Name = "Infinite Jump", CurrentValue = false, Flag = "InfJump", Callback = function(v) State.InfJump = v notify("Inf Jump", v and "Enabled" or "Disabled", 2) end, }) JumpTab:CreateButton({ Name = "Test Long Jump", Callback = function() local hrp = getHRP() if hrp then applyLongJump(hrp, State.LongJumpForward, State.LongJumpUp) notify("Long Jump", "Fwd: " .. State.LongJumpForward .. " Up: " .. State.LongJumpUp, 2) end end, }) JumpTab:CreateButton({ Name = "Test High Jump", Callback = function() local hrp = getHRP() if hrp then applyHighJump(hrp, State.HighJumpForce) notify("High Jump", "Force: " .. State.HighJumpForce, 2) end end, }) -- ============================================================ -- TAB: SHOT PUT -- ============================================================ local ShotTab = Window:CreateTab("Shot Put", 4483362458) ShotTab:CreateSection("Throw Settings") ShotTab:CreateSlider({ Name = "Target Distance (studs)", Range = {10, 200}, Increment = 1, Suffix = " st", CurrentValue = 50, Flag = "ShotDist", Callback = function(v) State.ShotPutDistance = v end, }) ShotTab:CreateSlider({ Name = "Launch Angle", Range = {10, 80}, Increment = 1, Suffix = "°", CurrentValue = 45, Flag = "ShotAngle", Callback = function(v) State.ShotPutAngle = v end, }) ShotTab:CreateSection("Controls") ShotTab:CreateButton({ Name = "Throw Now", Callback = executeShotPut, }) ShotTab:CreateToggle({ Name = "Auto Timed Throw", CurrentValue = false, Flag = "ShotAuto", Callback = function(v) State.ShotPutTimed = v if v then startTimedThrow() end notify("Shot Put", v and "Auto throw ON" or "OFF", 2) end, }) ShotTab:CreateSlider({ Name = "Throw Delay", Range = {0, 3}, Increment = 0.1, Suffix = "s", CurrentValue = 0.5, Flag = "ShotDelay", Callback = function(v) State.ShotPutDelay = v end, }) ShotTab:CreateSection("Debug - Run during shot put event") ShotTab:CreateButton({ Name = "Find Throw Remote", Callback = function() local r = findShotPutRemote() if r then print("REMOTE: " .. r:GetFullName()) notify("Found!", r.Name, 4) else print("=== ALL REMOTES ===") for _, obj in ipairs(ReplicatedStorage:GetDescendants()) do if obj:IsA("RemoteEvent") or obj:IsA("RemoteFunction") then print(obj.ClassName .. " | " .. obj:GetFullName()) end end notify("Not Found", "Check Xeno output.", 3) end end, }) ShotTab:CreateButton({ Name = "Find Shot Put Ball", Callback = function() local b = findShotPutBall() if b then print("BALL: " .. b:GetFullName()) notify("Found!", b.Name, 3) else notify("Not Found", "No ball found.", 3) end end, }) -- ============================================================ -- TAB: MOVEMENT -- ============================================================ local MoveTab = Window:CreateTab("Movement", 4483362458) MoveTab:CreateSection("Misc") MoveTab:CreateToggle({ Name = "Noclip", CurrentValue = false, Flag = "Noclip", Callback = function(v) State.NoclipEnabled = v if not v then local c = getChar() if c then for _, p in ipairs(c:GetDescendants()) do if p:IsA("BasePart") then p.CanCollide = true end end end end notify("Noclip", v and "ON" or "OFF", 2) end, }) MoveTab:CreateButton({ Name = "Reset Everything", Callback = function() disableSpeedBody() State.SpeedEnabled = false State.JumpEnabled = false State.InfJump = false State.NoclipEnabled = false State.ShotPutTimed = false local c = getChar() if c then for _, p in ipairs(c:GetDescendants()) do if p:IsA("BasePart") then p.CanCollide = true end end end notify("Reset", "All values default.", 2) end, }) MoveTab:CreateButton({ Name = "Copy Position", Callback = function() local hrp = getHRP() if hrp then local p = hrp.Position local str = string.format("%.2f, %.2f, %.2f", p.X, p.Y, p.Z) setclipboard(str) notify("Copied", str, 3) end end, }) -- ============================================================ -- LOAD CONFIG -- ============================================================ Rayfield:LoadConfiguration()