-- Services local Players = game:GetService("Players") local RunService = game:GetService("RunService") local TweenService = game:GetService("TweenService") local UserInputService = game:GetService("UserInputService") local Workspace = game:GetService("Workspace") local player = Players.LocalPlayer -- Prevent duplicate GUI across resets if player.PlayerGui:FindFirstChild("ParryFlingGui") then player.PlayerGui.ParryFlingGui:Destroy() end -- Create GUI Container local screenGui = Instance.new("ScreenGui") screenGui.Name = "ParryFlingGui" screenGui.ResetOnSpawn = false screenGui.Parent = player.PlayerGui --- ========================================== --- SETTINGS STATES & CONFIG --- ========================================== local minigameEnabled = true local noPartMode = false local defaultFlingHeight = 257 local currentFlingHeight = 257 --- ========================================== --- 1. PARRY BUTTON & SETTINGS (NEAR JUMP BUTTON) --- ========================================== local parryButton = Instance.new("TextButton") parryButton.Name = "ParryButton" parryButton.Size = UDim2.new(0, 65, 0, 65) parryButton.Position = UDim2.new(1, -115, 1, -165) parryButton.BackgroundColor3 = Color3.fromRGB(30, 30, 40) parryButton.TextColor3 = Color3.fromRGB(255, 255, 255) parryButton.Text = "⚡" parryButton.TextSize = 26 parryButton.Font = Enum.Font.GothamBold parryButton.AutoButtonColor = true parryButton.Parent = screenGui local btnCorner = Instance.new("UICorner") btnCorner.CornerRadius = UDim.new(1, 0) btnCorner.Parent = parryButton local btnStroke = Instance.new("UIStroke") btnStroke.Color = Color3.fromRGB(255, 75, 75) btnStroke.Thickness = 2.5 btnStroke.Parent = parryButton -- Settings / Menu Button local menuButton = Instance.new("TextButton") menuButton.Name = "MenuButton" menuButton.Size = UDim2.new(0, 45, 0, 45) menuButton.Position = UDim2.new(1, -170, 1, -155) menuButton.BackgroundColor3 = Color3.fromRGB(40, 40, 50) menuButton.TextColor3 = Color3.fromRGB(255, 255, 255) menuButton.Text = "⚙️" menuButton.TextSize = 20 menuButton.Font = Enum.Font.GothamBold menuButton.Parent = screenGui local menuBtnCorner = Instance.new("UICorner") menuBtnCorner.CornerRadius = UDim.new(1, 0) menuBtnCorner.Parent = menuButton -- Height Counter Display (Studs High) local heightLabel = Instance.new("TextLabel") heightLabel.Name = "HeightLabel" heightLabel.Size = UDim2.new(0, 200, 0, 30) heightLabel.Position = UDim2.new(0.5, -100, 0.08, 0) heightLabel.BackgroundTransparency = 1 heightLabel.Text = "Height: 0 Studs" heightLabel.TextColor3 = Color3.fromRGB(255, 255, 255) heightLabel.Font = Enum.Font.GothamBold heightLabel.TextSize = 18 heightLabel.Parent = screenGui local heightStroke = Instance.new("UIStroke") heightStroke.Color = Color3.fromRGB(0, 0, 0) heightStroke.Thickness = 2 heightStroke.Parent = heightLabel --- ========================================== --- 2. SCROLLABLE SETTINGS MENU (CENTERED) --- ========================================== local settingsMenu = Instance.new("Frame") settingsMenu.Size = UDim2.new(0, 220, 0, 240) settingsMenu.Position = UDim2.new(0.5, -110, 0.5, -120) settingsMenu.BackgroundColor3 = Color3.fromRGB(20, 20, 25) settingsMenu.Visible = false settingsMenu.Parent = screenGui local menuCorner = Instance.new("UICorner") menuCorner.CornerRadius = UDim.new(0, 12) menuCorner.Parent = settingsMenu local menuStroke = Instance.new("UIStroke") menuStroke.Color = Color3.fromRGB(80, 80, 100) menuStroke.Thickness = 2 menuStroke.Parent = settingsMenu local menuTitle = Instance.new("TextLabel") menuTitle.Size = UDim2.new(1, 0, 0, 35) menuTitle.BackgroundTransparency = 1 menuTitle.Text = "MODES & SETTINGS" menuTitle.TextColor3 = Color3.fromRGB(255, 255, 255) menuTitle.Font = Enum.Font.GothamBold menuTitle.TextSize = 13 menuTitle.Parent = settingsMenu -- Scrolling Frame Container local scrollingFrame = Instance.new("ScrollingFrame") scrollingFrame.Size = UDim2.new(1, -10, 1, -45) scrollingFrame.Position = UDim2.new(0, 5, 0, 40) scrollingFrame.BackgroundTransparency = 1 scrollingFrame.CanvasSize = UDim2.new(0, 0, 0, 190) scrollingFrame.ScrollBarThickness = 4 scrollingFrame.Parent = settingsMenu -- Toggle 1: Minigame Switch local mgToggleBtn = Instance.new("TextButton") mgToggleBtn.Size = UDim2.new(1, -10, 0, 38) mgToggleBtn.Position = UDim2.new(0, 5, 0, 5) mgToggleBtn.BackgroundColor3 = Color3.fromRGB(50, 50, 65) mgToggleBtn.TextColor3 = Color3.fromRGB(0, 255, 120) mgToggleBtn.Text = "Minigame: ON" mgToggleBtn.Font = Enum.Font.GothamBold mgToggleBtn.TextSize = 12 mgToggleBtn.Parent = scrollingFrame local mgToggleCorner = Instance.new("UICorner") mgToggleCorner.CornerRadius = UDim.new(0, 8) mgToggleCorner.Parent = mgToggleBtn mgToggleBtn.MouseButton1Click:Connect(function() minigameEnabled = not minigameEnabled if minigameEnabled then mgToggleBtn.Text = "Minigame: ON" mgToggleBtn.TextColor3 = Color3.fromRGB(0, 255, 120) else mgToggleBtn.Text = "Minigame: OFF" mgToggleBtn.TextColor3 = Color3.fromRGB(255, 80, 80) end end) -- Toggle 2: No-Part Mode Switch local partToggleBtn = Instance.new("TextButton") partToggleBtn.Size = UDim2.new(1, -10, 0, 38) partToggleBtn.Position = UDim2.new(0, 5, 0, 48) partToggleBtn.BackgroundColor3 = Color3.fromRGB(50, 50, 65) partToggleBtn.TextColor3 = Color3.fromRGB(255, 80, 80) partToggleBtn.Text = "No-Part Mode: OFF" partToggleBtn.Font = Enum.Font.GothamBold partToggleBtn.TextSize = 12 partToggleBtn.Parent = scrollingFrame local partToggleCorner = Instance.new("UICorner") partToggleCorner.CornerRadius = UDim.new(0, 8) partToggleCorner.Parent = partToggleBtn partToggleBtn.MouseButton1Click:Connect(function() noPartMode = not noPartMode if noPartMode then partToggleBtn.Text = "No-Part Mode: ON" partToggleBtn.TextColor3 = Color3.fromRGB(0, 255, 120) else partToggleBtn.Text = "No-Part Mode: OFF" partToggleBtn.TextColor3 = Color3.fromRGB(255, 80, 80) end end) -- Setting 3: Fling Height TextBox (Type your own height) local heightBox = Instance.new("TextBox") heightBox.Size = UDim2.new(1, -10, 0, 38) heightBox.Position = UDim2.new(0, 5, 0, 91) heightBox.BackgroundColor3 = Color3.fromRGB(50, 50, 65) heightBox.TextColor3 = Color3.fromRGB(255, 210, 50) heightBox.Text = tostring(currentFlingHeight) heightBox.PlaceholderText = "Enter Height..." heightBox.Font = Enum.Font.GothamBold heightBox.TextSize = 12 heightBox.ClearTextOnFocus = false heightBox.Parent = scrollingFrame local heightBoxCorner = Instance.new("UICorner") heightBoxCorner.CornerRadius = UDim.new(0, 8) heightBoxCorner.Parent = heightBox heightBox.FocusLost:Connect(function(enterPressed) local num = tonumber(heightBox.Text) if num then currentFlingHeight = num else heightBox.Text = tostring(currentFlingHeight) end end) -- Setting 4: Reset Height Button local resetHeightBtn = Instance.new("TextButton") resetHeightBtn.Size = UDim2.new(1, -10, 0, 34) resetHeightBtn.Position = UDim2.new(0, 5, 0, 134) resetHeightBtn.BackgroundColor3 = Color3.fromRGB(70, 40, 40) resetHeightBtn.TextColor3 = Color3.fromRGB(255, 100, 100) resetHeightBtn.Text = "Reset Height (257)" resetHeightBtn.Font = Enum.Font.GothamBold resetHeightBtn.TextSize = 11 resetHeightBtn.Parent = scrollingFrame local resetCorner = Instance.new("UICorner") resetCorner.CornerRadius = UDim.new(0, 8) resetCorner.Parent = resetHeightBtn resetHeightBtn.MouseButton1Click:Connect(function() currentFlingHeight = defaultFlingHeight heightBox.Text = tostring(currentFlingHeight) end) -- Open/Close Menu menuButton.MouseButton1Click:Connect(function() settingsMenu.Visible = not settingsMenu.Visible end) --- ========================================== --- 3. RED-THEMED ⭕ MINIGAME SYSTEM --- ========================================== local minigameActive = false local minigameSessionId = 0 local mgBg = Instance.new("Frame") mgBg.Size = UDim2.new(1, 0, 1, 0) mgBg.BackgroundColor3 = Color3.fromRGB(0, 0, 0) mgBg.BackgroundTransparency = 0.5 mgBg.Visible = false mgBg.Parent = screenGui local mgFrame = Instance.new("Frame") mgFrame.Size = UDim2.new(0, 220, 0, 220) mgFrame.Position = UDim2.new(0.5, -110, 0.5, -110) mgFrame.BackgroundTransparency = 1 mgFrame.Visible = false mgFrame.Parent = screenGui local outerRing = Instance.new("Frame") outerRing.Size = UDim2.new(0, 200, 0, 200) outerRing.Position = UDim2.new(0.5, -100, 0.5, -100) outerRing.BackgroundTransparency = 1 outerRing.Parent = mgFrame local outerStroke = Instance.new("UIStroke") outerStroke.Color = Color3.fromRGB(255, 50, 50) outerStroke.Thickness = 3 outerStroke.Transparency = 0.3 outerStroke.Parent = outerRing local outerCorner = Instance.new("UICorner") outerCorner.CornerRadius = UDim.new(1, 0) outerCorner.Parent = outerRing local targetCircle = Instance.new("Frame") targetCircle.Size = UDim2.new(0, 65, 0, 65) targetCircle.Position = UDim2.new(0.5, -32.5, 0.5, -32.5) targetCircle.BackgroundTransparency = 1 targetCircle.Parent = mgFrame local targetStroke = Instance.new("UIStroke") targetStroke.Color = Color3.fromRGB(255, 30, 30) targetStroke.Thickness = 3.5 targetStroke.Parent = targetCircle local targetCorner = Instance.new("UICorner") targetCorner.CornerRadius = UDim.new(1, 0) targetCorner.Parent = targetCircle local shrinkCircle = Instance.new("Frame") shrinkCircle.Size = UDim2.new(0, 190, 0, 190) shrinkCircle.Position = UDim2.new(0.5, -95, 0.5, -95) shrinkCircle.BackgroundTransparency = 1 shrinkCircle.Parent = mgFrame local shrinkStroke = Instance.new("UIStroke") shrinkStroke.Color = Color3.fromRGB(255, 80, 80) shrinkStroke.Thickness = 5 shrinkStroke.Parent = shrinkCircle local shrinkCorner = Instance.new("UICorner") shrinkCorner.CornerRadius = UDim.new(1, 0) shrinkCorner.Parent = shrinkCircle local function showPopup(text, color) local popup = Instance.new("TextLabel") popup.Size = UDim2.new(0, 250, 0, 60) popup.Position = UDim2.new(0.5, -125, 0.38, 0) popup.BackgroundTransparency = 1 popup.Text = text popup.TextColor3 = color popup.Font = Enum.Font.GothamBlack popup.TextSize = 36 popup.Parent = screenGui local strokeEffect = Instance.new("UIStroke") strokeEffect.Color = Color3.fromRGB(0, 0, 0) strokeEffect.Thickness = 2 strokeEffect.Parent = popup local tweenInfo = TweenInfo.new(0.7, Enum.EasingStyle.Back, Enum.EasingDirection.Out) TweenService:Create(popup, tweenInfo, { Position = UDim2.new(0.5, -125, 0.28, 0), TextTransparency = 1 }):Play() task.delay(0.7, function() popup:Destroy() end) end --- ========================================== --- 4. PHYSICAL TOUCH HITBOX & HEIGHT TRACKER --- ========================================== local isTouchingValidPart = false local lastTouchedPart = nil local function setupCharacter(char) local humanoidRootPart = char:WaitForChild("HumanoidRootPart", 5) if not humanoidRootPart then return end local hitbox = Instance.new("Part") hitbox.Name = "ParryHitbox" hitbox.Size = Vector3.new(0.8, 8, 0.8) hitbox.Transparency = 0.6 hitbox.BrickColor = BrickColor.new("Bright red") hitbox.Material = Enum.Material.Neon hitbox.CanCollide = false hitbox.Anchored = false hitbox.Parent = char local weld = Instance.new("WeldConstraint") hitbox.CFrame = humanoidRootPart.CFrame + Vector3.new(0, 4.5, 0) weld.Part0 = humanoidRootPart weld.Part1 = hitbox weld.Parent = hitbox isTouchingValidPart = false lastTouchedPart = nil local touchingPartsCount = 0 hitbox.Touched:Connect(function(hit) if hit and hit.Parent and hit.Parent ~= char and not hit:IsDescendantOf(char) and hit.Transparency < 1 then touchingPartsCount += 1 isTouchingValidPart = true lastTouchedPart = hit hitbox.BrickColor = BrickColor.new("Bright green") end end) hitbox.TouchEnded:Connect(function(hit) if hit and hit.Parent and hit.Parent ~= char and not hit:IsDescendantOf(char) then touchingPartsCount = math.max(0, touchingPartsCount - 1) if touchingPartsCount == 0 then isTouchingValidPart = false hitbox.BrickColor = BrickColor.new("Bright red") end end end) end if player.Character then task.spawn(function() setupCharacter(player.Character) end) end player.CharacterAdded:Connect(setupCharacter) RunService.RenderStepped:Connect(function() if noPartMode or isTouchingValidPart then btnStroke.Color = Color3.fromRGB(0, 255, 128) else btnStroke.Color = Color3.fromRGB(255, 75, 75) end local char = player.Character local root = char and char:FindFirstChild("HumanoidRootPart") if root then local currentHeight = math.floor(root.Position.Y + 0.5) heightLabel.Text = "Height: " .. tostring(currentHeight) .. " Studs" end end) --- ========================================== --- 5. SMOOTH SPINNING FLING LAUNCHER --- ========================================== local function executeFling(flingHeightOverride) local char = player.Character local root = char and char:FindFirstChild("HumanoidRootPart") if not root then return end if lastTouchedPart and lastTouchedPart:IsA("BasePart") and not noPartMode then local centerPart = lastTouchedPart local affectedParts = {} local regionSize = Vector3.new(20, 20, 20) local overlapParams = OverlapParams.new() overlapParams.FilterType = Enum.RaycastFilterType.Exclude overlapParams.FilterDescendantsInstances = {char} local nearbyParts = Workspace:GetPartBoundsInBox(centerPart.CFrame, regionSize, overlapParams) table.insert(affectedParts, centerPart) for _, part in ipairs(nearbyParts) do if part:IsA("BasePart") then table.insert(affectedParts, part) end end for _, part in ipairs(affectedParts) do pcall(function() part.CanCollide = false end) end task.delay(2.0, function() for _, part in ipairs(affectedParts) do if part and part.Parent then pcall(function() part.CanCollide = true end) end end end) end local targetHeight = flingHeightOverride or currentFlingHeight -- Physics calculation to convert desired height into accurate burst velocity accounting for gravity local calculatedVelocityY = math.sqrt(2 * Workspace.Gravity * targetHeight) * 1.05 local bodyVelocity = Instance.new("BodyVelocity") bodyVelocity.Velocity = Vector3.new(0, calculatedVelocityY, 0) bodyVelocity.MaxForce = Vector3.new(60000, 60000, 60000) bodyVelocity.Parent = root local bodyAngularVelocity = Instance.new("BodyAngularVelocity") bodyAngularVelocity.AngularVelocity = Vector3.new(0, 350, 0) -- High speed smooth spin bodyAngularVelocity.MaxTorque = Vector3.new(0, 500000, 0) bodyAngularVelocity.Parent = root task.delay(0.22, function() if bodyVelocity then bodyVelocity:Destroy() end end) local connection connection = RunService.RenderStepped:Connect(function() if not root or not root.Parent then if connection then connection:Disconnect() end return end if root.AssemblyLinearVelocity.Y <= 0 then if bodyAngularVelocity then bodyAngularVelocity:Destroy() end connection:Disconnect() end end) end --- ========================================== --- PARRY BUTTON CLICK EVENT --- ========================================== local shrinkTween parryButton.MouseButton1Click:Connect(function() if minigameActive then return end if not noPartMode and not isTouchingValidPart then showPopup("NOTHING TO PARRY!", Color3.fromRGB(255, 80, 80)) return end if not minigameEnabled then showPopup("PARRY! ⚡", Color3.fromRGB(0, 255, 120)) executeFling(currentFlingHeight) return end minigameActive = true minigameSessionId += 1 local currentSession = minigameSessionId local char = player.Character local root = char and char:FindFirstChild("HumanoidRootPart") local humanoid = char and char:FindFirstChildOfClass("Humanoid") if root then root.Anchored = true end if humanoid then humanoid.PlatformStand = true end mgBg.Visible = true mgFrame.Visible = true shrinkCircle.Size = UDim2.new(0, 190, 0, 190) shrinkCircle.Position = UDim2.new(0.5, -95, 0.5, -95) shrinkTween = TweenService:Create(shrinkCircle, TweenInfo.new(0.75, Enum.EasingStyle.Linear), { Size = UDim2.new(0, 65, 0, 65), Position = UDim2.new(0.5, -32.5, 0.5, -32.5) }) shrinkTween:Play() local function endMinigame() if root then root.Anchored = false end if humanoid then humanoid.PlatformStand = false end mgBg.Visible = false mgFrame.Visible = false end local inputConnection inputConnection = UserInputService.InputBegan:Connect(function(input) if (input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch) and minigameActive and currentSession == minigameSessionId then minigameActive = false shrinkTween:Cancel() inputConnection:Disconnect() endMinigame() local currentSize = shrinkCircle.AbsoluteSize.X local targetSize = targetCircle.AbsoluteSize.X local diff = math.abs(currentSize - targetSize) if diff <= 14 then showPopup("PERFECT! ⚡", Color3.fromRGB(0, 255, 120)) executeFling(currentFlingHeight) elseif diff <= 32 then showPopup("GREAT! ✨", Color3.fromRGB(255, 210, 50)) local greatHeight = math.max(0, currentFlingHeight - 100) executeFling(greatHeight) else showPopup("MISS... ❌", Color3.fromRGB(255, 60, 60)) end end end) task.delay(0.78, function() if minigameActive and currentSession == minigameSessionId then minigameActive = false if inputConnection then inputConnection:Disconnect() end endMinigame() showPopup("TOO LATE!", Color3.fromRGB(255, 60, 60)) end end) end)