
Key RequiredUniversal

--====================================================
-- 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)No comments yet for this script.



