--==================================================== -- PURPLE EDGE MOD MENU (FLY SPEED CONTROL) --==================================================== -- SERVICES local Players = game:GetService("Players") local UIS = game:GetService("UserInputService") local RunService = game:GetService("RunService") local TweenService = game:GetService("TweenService") local Lighting = game:GetService("Lighting") local player = Players.LocalPlayer local mouse = player:GetMouse() local camera = workspace.CurrentCamera ---------------------------------------------------- -- STATE ---------------------------------------------------- local open = false -- movement local flying = false local flySpeed = 60 local infiniteJump = false -- toggles / abilities local tpToMouse = false local airBrake = false local orbitCam = false -- spin local spinning = false local spinSpeed = 3 -- extra local floatMode = false local momentum = false local momentumSpeed = 0 local flyBV, flyBG ---------------------------------------------------- -- GUI ROOT ---------------------------------------------------- local gui = Instance.new("ScreenGui", player.PlayerGui) gui.IgnoreGuiInset = true gui.ResetOnSpawn = false ---------------------------------------------------- -- EDGE BAR (PURPLE) ---------------------------------------------------- local edge = Instance.new("Frame", gui) edge.Size = UDim2.new(0,8,1,0) edge.BorderSizePixel = 0 local edgeGrad = Instance.new("UIGradient", edge) edgeGrad.Color = ColorSequence.new{ ColorSequenceKeypoint.new(0, Color3.fromRGB(180,90,255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(120,50,220)) } ---------------------------------------------------- -- PANEL ---------------------------------------------------- local panel = Instance.new("Frame", gui) panel.Size = UDim2.new(0,300,1,0) panel.Position = UDim2.new(0,-300,0,0) panel.BorderSizePixel = 0 Instance.new("UICorner", panel).CornerRadius = UDim.new(0,18) local panelGrad = Instance.new("UIGradient", panel) panelGrad.Color = ColorSequence.new{ ColorSequenceKeypoint.new(0, Color3.fromRGB(60,20,90)), ColorSequenceKeypoint.new(0.5, Color3.fromRGB(120,60,200)), ColorSequenceKeypoint.new(1, Color3.fromRGB(80,30,140)) } ---------------------------------------------------- -- TITLE ---------------------------------------------------- local title = Instance.new("TextLabel", panel) title.Size = UDim2.new(1,0,0,56) title.Text = "PURPLE EDGE MENU" title.Font = Enum.Font.GothamBold title.TextSize = 17 title.TextColor3 = Color3.new(1,1,1) title.BackgroundTransparency = 1 ---------------------------------------------------- -- BUTTON MAKER ---------------------------------------------------- local y = 70 local function addButton(text, callback) local b = Instance.new("TextButton", panel) b.Size = UDim2.new(1,-24,0,36) b.Position = UDim2.new(0,12,0,y) b.Text = text b.Font = Enum.Font.Gotham b.TextSize = 14 b.TextColor3 = Color3.new(1,1,1) b.BackgroundColor3 = Color3.fromRGB(30,30,30) b.BorderSizePixel = 0 Instance.new("UICorner", b).CornerRadius = UDim.new(0,10) b.MouseButton1Click:Connect(function() TweenService:Create(b, TweenInfo.new(0.08), { Size = UDim2.new(1,-30,0,32) }):Play() task.delay(0.08, function() TweenService:Create(b, TweenInfo.new(0.08), { Size = UDim2.new(1,-24,0,36) }):Play() end) callback() end) y += 42 end ---------------------------------------------------- -- CORE MOVEMENT ---------------------------------------------------- addButton("Fly Toggle", function() flying = not flying local hrp = player.Character and player.Character:FindFirstChild("HumanoidRootPart") if flying and hrp then flyBV = Instance.new("BodyVelocity", hrp) flyBV.MaxForce = Vector3.new(1e5,1e5,1e5) flyBG = Instance.new("BodyGyro", hrp) flyBG.MaxTorque = Vector3.new(1e5,1e5,1e5) else if flyBV then flyBV:Destroy() flyBV = nil end if flyBG then flyBG:Destroy() flyBG = nil end end end) addButton("Fly Speed +", function() flySpeed = math.min(flySpeed + 10, 300) end) addButton("Fly Speed -", function() flySpeed = math.max(flySpeed - 10, 20) end) addButton("Fly Speed Reset", function() flySpeed = 60 end) addButton("Speed +", function() player.Character.Humanoid.WalkSpeed += 6 end) addButton("Speed -", function() player.Character.Humanoid.WalkSpeed = math.max(8, player.Character.Humanoid.WalkSpeed - 6) end) addButton("Jump +", function() player.Character.Humanoid.JumpPower += 15 end) addButton("Jump -", function() player.Character.Humanoid.JumpPower = math.max(30, player.Character.Humanoid.JumpPower - 15) end) addButton("Infinite Jump", function() infiniteJump = not infiniteJump end) ---------------------------------------------------- -- SPIN MODS ---------------------------------------------------- addButton("Spin Toggle", function() spinning = not spinning end) addButton("Spin Speed +", function() spinSpeed += 1 end) addButton("Spin Speed -", function() spinSpeed = math.max(1, spinSpeed - 1) end) ---------------------------------------------------- -- UNIQUE ABILITIES ---------------------------------------------------- addButton("Dash Forward", function() player.Character.HumanoidRootPart.Velocity += camera.CFrame.LookVector * 120 end) addButton("Blink Step", function() player.Character.HumanoidRootPart.CFrame *= CFrame.new(0,0,-15) end) addButton("Air Brake", function() airBrake = not airBrake end) addButton("Float Mode", function() floatMode = not floatMode end) addButton("Momentum Boost", function() momentum = not momentum momentumSpeed = 0 end) ---------------------------------------------------- -- FUN / VISUAL ---------------------------------------------------- addButton("TP to Mouse (Toggle)", function() tpToMouse = not tpToMouse end) addButton("Orbit Camera", function() orbitCam = not orbitCam end) ---------------------------------------------------- -- OPEN / CLOSE ---------------------------------------------------- local openTween = TweenService:Create( panel, TweenInfo.new(0.4, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {Position = UDim2.new(0,0,0,0)} ) local closeTween = TweenService:Create( panel, TweenInfo.new(0.4, Enum.EasingStyle.Quint, Enum.EasingDirection.In), {Position = UDim2.new(0,-300,0,0)} ) local function toggleMenu() open = not open if open then openTween:Play() UIS.MouseBehavior = Enum.MouseBehavior.Default UIS.MouseIconEnabled = true else closeTween:Play() UIS.MouseBehavior = Enum.MouseBehavior.LockCenter UIS.MouseIconEnabled = false end end edge.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then toggleMenu() end end) UIS.InputBegan:Connect(function(i,gp) if not gp and i.KeyCode == Enum.KeyCode.R then toggleMenu() end end) ---------------------------------------------------- -- LOGIC LOOPS ---------------------------------------------------- UIS.JumpRequest:Connect(function() if infiniteJump then player.Character.Humanoid:ChangeState(Enum.HumanoidStateType.Jumping) end end) mouse.Button1Down:Connect(function() if tpToMouse then player.Character.HumanoidRootPart.CFrame = mouse.Hit + Vector3.new(0,3,0) end end) RunService.RenderStepped:Connect(function(dt) panelGrad.Rotation += dt * 40 edgeGrad.Rotation += dt * 60 if spinning then player.Character.HumanoidRootPart.CFrame *= CFrame.Angles(0, math.rad(spinSpeed), 0) end if airBrake then player.Character.HumanoidRootPart.Velocity *= 0.85 end if floatMode then player.Character.HumanoidRootPart.Velocity += Vector3.new(0,2,0) end if momentum then momentumSpeed = math.min(momentumSpeed + 0.5, 60) player.Character.HumanoidRootPart.Velocity += camera.CFrame.LookVector * momentumSpeed * dt end if orbitCam then camera.CFrame = camera.CFrame * CFrame.Angles(0, math.rad(0.4), 0) end if flying and flyBV and flyBG then local dir = Vector3.zero if UIS:IsKeyDown(Enum.KeyCode.W) then dir += camera.CFrame.LookVector end if UIS:IsKeyDown(Enum.KeyCode.S) then dir -= camera.CFrame.LookVector end if UIS:IsKeyDown(Enum.KeyCode.A) then dir -= camera.CFrame.RightVector end if UIS:IsKeyDown(Enum.KeyCode.D) then dir += camera.CFrame.RightVector end if UIS:IsKeyDown(Enum.KeyCode.Space) then dir += Vector3.new(0,1,0) end flyBV.Velocity = dir * flySpeed flyBG.CFrame = camera.CFrame end end)