
KeylessUniversal

-- HD Admin Fly Mobile - Slider de Velocidade Arrastável
-- Baseado no código-fonte oficial do HD Admin v2 (nanoblox/hd-admin)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local LocalPlayer = Players.LocalPlayer
local Camera = workspace.CurrentCamera
local function getSafeParent()
local ok, hui = pcall(function() return gethui and gethui() or nil end)
if ok and hui then return hui end
local ok2, cg = pcall(function() return game:GetService("CoreGui") end)
if ok2 and cg then return cg end
return LocalPlayer:WaitForChild("PlayerGui")
end
local GuiParent = getSafeParent()
-- Configurações
local MIN_SPEED = 25
local MAX_SPEED = 200
local DEFAULT_SPEED = 50
local TILT_MAX = 25
local TILT_INCREMENT = 1
local FLY_HEIGHT_OFFSET = 4
local C = {
Bg = Color3.fromRGB(16, 16, 22),
Surface = Color3.fromRGB(24, 24, 32),
SurfaceHi = Color3.fromRGB(34, 34, 46),
Primary = Color3.fromRGB(0, 170, 255),
PrimaryDark = Color3.fromRGB(0, 110, 190),
Success = Color3.fromRGB(0, 200, 120),
SuccessDark = Color3.fromRGB(0, 150, 90),
Danger = Color3.fromRGB(240, 70, 90),
DangerDark = Color3.fromRGB(190, 50, 70),
TextMain = Color3.fromRGB(240, 242, 250),
TextSub = Color3.fromRGB(150, 155, 175),
Border = Color3.fromRGB(48, 48, 62),
}
local flying = false
local speed = DEFAULT_SPEED
local flyForce, bodyGyro
local flyConnection
local upPressed, downPressed = false, false
local tiltAmount = 0
local flyMode = 1 -- 1 = fly, 2 = fly2 (sentado)
pcall(function()
local old = GuiParent:FindFirstChild("HDAdminFlyMobile")
if old then old:Destroy() end
end)
local function round(obj, r)
local c = Instance.new("UICorner")
c.CornerRadius = UDim.new(0, r or 8)
c.Parent = obj
return c
end
local function circle(obj)
local c = Instance.new("UICorner")
c.CornerRadius = UDim.new(1, 0)
c.Parent = obj
return c
end
local function addStroke(obj, color, thickness, transparency)
local s = Instance.new("UIStroke")
s.Color = color or C.Border
s.Thickness = thickness or 1
s.Transparency = transparency or 0.3
s.Parent = obj
return s
end
local function addGradient(obj, c1, c2, rot)
local g = Instance.new("UIGradient")
g.Color = ColorSequence.new(c1, c2)
g.Rotation = rot or 90
g.Parent = obj
return g
end
local function tw(obj, time, props, style, dir)
local info = TweenInfo.new(time or 0.25, style or Enum.EasingStyle.Quad, dir or Enum.EasingDirection.Out)
local t = TweenService:Create(obj, info, props)
t:Play()
return t
end
-- GUI
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "HDAdminFlyMobile"
ScreenGui.ResetOnSpawn = false
ScreenGui.IgnoreGuiInset = true
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
ScreenGui.Parent = GuiParent
-- Botão flutuante
local ToggleBtn = Instance.new("TextButton")
ToggleBtn.Name = "ToggleBtn"
ToggleBtn.Size = UDim2.new(0, 58, 0, 58)
ToggleBtn.Position = UDim2.new(0, 18, 0.5, -29)
ToggleBtn.BackgroundColor3 = C.Surface
ToggleBtn.BorderSizePixel = 0
ToggleBtn.Text = ""
ToggleBtn.AutoButtonColor = false
ToggleBtn.Parent = ScreenGui
circle(ToggleBtn)
addStroke(ToggleBtn, C.Primary, 1.5, 0.2)
addGradient(ToggleBtn, C.SurfaceHi, C.Surface, 45)
local ToggleIcon = Instance.new("TextLabel")
ToggleIcon.Size = UDim2.new(1, 0, 1, 0)
ToggleIcon.BackgroundTransparency = 1
ToggleIcon.Text = "FLY"
ToggleIcon.TextColor3 = C.Primary
ToggleIcon.TextSize = 15
ToggleIcon.Font = Enum.Font.GothamBold
ToggleIcon.Parent = ToggleBtn
-- Painel principal (retangular)
local MainFrame = Instance.new("Frame")
MainFrame.Name = "MainFrame"
MainFrame.Size = UDim2.new(0, 300, 0, 240)
MainFrame.Position = UDim2.new(0.5, -150, 0.5, -120)
MainFrame.BackgroundColor3 = C.Bg
MainFrame.BorderSizePixel = 0
MainFrame.Visible = false
MainFrame.ClipsDescendants = true
MainFrame.Parent = ScreenGui
round(MainFrame, 12)
addStroke(MainFrame, C.Primary, 1.5, 0.55)
addGradient(MainFrame, C.Surface, C.Bg, 90)
-- Cabeçalho
local Header = Instance.new("Frame")
Header.Name = "Header"
Header.Size = UDim2.new(1, 0, 0, 40)
Header.BackgroundColor3 = C.Primary
Header.BorderSizePixel = 0
Header.Parent = MainFrame
round(Header, 12)
addGradient(Header, C.Primary, C.PrimaryDark, 90)
local HeaderFix = Instance.new("Frame")
HeaderFix.Size = UDim2.new(1, 0, 0, 12)
HeaderFix.Position = UDim2.new(0, 0, 1, -12)
HeaderFix.BackgroundColor3 = C.PrimaryDark
HeaderFix.BorderSizePixel = 0
HeaderFix.ZIndex = 0
HeaderFix.Parent = Header
local HeaderTitle = Instance.new("TextLabel")
HeaderTitle.Size = UDim2.new(1, -110, 1, 0)
HeaderTitle.Position = UDim2.new(0, 14, 0, 0)
HeaderTitle.BackgroundTransparency = 1
HeaderTitle.Text = "HD ADMIN | FLY"
HeaderTitle.TextColor3 = Color3.fromRGB(255, 255, 255)
HeaderTitle.TextSize = 15
HeaderTitle.Font = Enum.Font.GothamBold
HeaderTitle.TextXAlignment = Enum.TextXAlignment.Left
HeaderTitle.ZIndex = 2
HeaderTitle.Parent = Header
local MinBtn = Instance.new("TextButton")
MinBtn.Size = UDim2.new(0, 26, 0, 26)
MinBtn.Position = UDim2.new(1, -62, 0, 7)
MinBtn.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
MinBtn.BackgroundTransparency = 0.85
MinBtn.BorderSizePixel = 0
MinBtn.Text = "-"
MinBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
MinBtn.TextSize = 18
MinBtn.Font = Enum.Font.GothamBold
MinBtn.AutoButtonColor = false
MinBtn.ZIndex = 3
MinBtn.Parent = Header
circle(MinBtn)
local CloseBtn = Instance.new("TextButton")
CloseBtn.Size = UDim2.new(0, 26, 0, 26)
CloseBtn.Position = UDim2.new(1, -32, 0, 7)
CloseBtn.BackgroundColor3 = C.Danger
CloseBtn.BorderSizePixel = 0
CloseBtn.Text = "X"
CloseBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
CloseBtn.TextSize = 14
CloseBtn.Font = Enum.Font.GothamBold
CloseBtn.AutoButtonColor = false
CloseBtn.ZIndex = 3
CloseBtn.Parent = Header
circle(CloseBtn)
-- ============================================================
-- CARD DE VELOCIDADE COM SLIDER ARRASTÁVEL
-- ============================================================
local SpeedCard = Instance.new("Frame")
SpeedCard.Size = UDim2.new(1, -20, 0, 62)
SpeedCard.Position = UDim2.new(0, 10, 0, 48)
SpeedCard.BackgroundColor3 = C.Surface
SpeedCard.BorderSizePixel = 0
SpeedCard.Parent = MainFrame
round(SpeedCard, 8)
addStroke(SpeedCard, C.Border, 1, 0.5)
local SpeedTitle = Instance.new("TextLabel")
SpeedTitle.Size = UDim2.new(0, 100, 0, 16)
SpeedTitle.Position = UDim2.new(0, 10, 0, 6)
SpeedTitle.BackgroundTransparency = 1
SpeedTitle.Text = "VELOCIDADE"
SpeedTitle.TextColor3 = C.TextSub
SpeedTitle.TextSize = 10
SpeedTitle.Font = Enum.Font.GothamBold
SpeedTitle.TextXAlignment = Enum.TextXAlignment.Left
SpeedTitle.Parent = SpeedCard
local SpeedValue = Instance.new("TextLabel")
SpeedValue.Size = UDim2.new(0, 80, 0, 20)
SpeedValue.Position = UDim2.new(1, -90, 0, 4)
SpeedValue.BackgroundTransparency = 1
SpeedValue.Text = tostring(DEFAULT_SPEED)
SpeedValue.TextColor3 = C.Primary
SpeedValue.TextSize = 18
SpeedValue.Font = Enum.Font.GothamBold
SpeedValue.TextXAlignment = Enum.TextXAlignment.Right
SpeedValue.Parent = SpeedCard
-- Slider track
local SliderBg = Instance.new("Frame")
SliderBg.Size = UDim2.new(1, -20, 0, 8)
SliderBg.Position = UDim2.new(0, 10, 0, 40)
SliderBg.BackgroundColor3 = C.SurfaceHi
SliderBg.BorderSizePixel = 0
SliderBg.Parent = SpeedCard
round(SliderBg, 4)
-- Preenchimento do slider
local SliderFill = Instance.new("Frame")
SliderFill.Size = UDim2.new((DEFAULT_SPEED - MIN_SPEED) / (MAX_SPEED - MIN_SPEED), 0, 1, 0)
SliderFill.BackgroundColor3 = C.Primary
SliderFill.BorderSizePixel = 0
SliderFill.Parent = SliderBg
round(SliderFill, 4)
addGradient(SliderFill, C.Primary, Color3.fromRGB(120, 220, 255), 0)
-- Botão (thumb) do slider
local SliderThumb = Instance.new("TextButton")
SliderThumb.Size = UDim2.new(0, 18, 0, 18)
SliderThumb.Position = UDim2.new((DEFAULT_SPEED - MIN_SPEED) / (MAX_SPEED - MIN_SPEED), -9, 0.5, -9)
SliderThumb.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
SliderThumb.BorderSizePixel = 0
SliderThumb.Text = ""
SliderThumb.AutoButtonColor = false
SliderThumb.Parent = SliderBg
circle(SliderThumb)
addStroke(SliderThumb, C.Primary, 2, 0)
-- Área de toque estendida (para facilitar o arrasto)
local SliderTouch = Instance.new("TextButton")
SliderTouch.Size = UDim2.new(1, 0, 0, 40)
SliderTouch.Position = UDim2.new(0, 0, 0.5, -20)
SliderTouch.BackgroundTransparency = 1
SliderTouch.Text = ""
SliderTouch.Parent = SliderBg
-- Labels min/max
local MinLabel = Instance.new("TextLabel")
MinLabel.Size = UDim2.new(0, 30, 0, 12)
MinLabel.Position = UDim2.new(0, 10, 0, 48)
MinLabel.BackgroundTransparency = 1
MinLabel.Text = tostring(MIN_SPEED)
MinLabel.TextColor3 = C.TextSub
MinLabel.TextSize = 9
MinLabel.Font = Enum.Font.GothamBold
MinLabel.TextXAlignment = Enum.TextXAlignment.Left
MinLabel.Parent = SpeedCard
local MaxLabel = Instance.new("TextLabel")
MaxLabel.Size = UDim2.new(0, 30, 0, 12)
MaxLabel.Position = UDim2.new(1, -40, 0, 48)
MaxLabel.BackgroundTransparency = 1
MaxLabel.Text = tostring(MAX_SPEED)
MaxLabel.TextColor3 = C.TextSub
MaxLabel.TextSize = 9
MaxLabel.Font = Enum.Font.GothamBold
MaxLabel.TextXAlignment = Enum.TextXAlignment.Right
MaxLabel.Parent = SpeedCard
-- ============================================================
-- LÓGICA DO SLIDER
-- ============================================================
local draggingSlider = false
local function updateSpeedFromPosition(inputX)
local trackAbsolutePos = SliderBg.AbsolutePosition.X
local trackAbsoluteSize = SliderBg.AbsoluteSize.X
if trackAbsoluteSize <= 0 then return end
local relativeX = math.clamp((inputX - trackAbsolutePos) / trackAbsoluteSize, 0, 1)
local newSpeed = math.floor(MIN_SPEED + relativeX * (MAX_SPEED - MIN_SPEED) + 0.5)
newSpeed = math.clamp(newSpeed, MIN_SPEED, MAX_SPEED)
speed = newSpeed
SpeedValue.Text = tostring(newSpeed)
local fillScale = (newSpeed - MIN_SPEED) / (MAX_SPEED - MIN_SPEED)
SliderFill.Size = UDim2.new(fillScale, 0, 1, 0)
SliderThumb.Position = UDim2.new(fillScale, -9, 0.5, -9)
end
-- Toque/clique na área do slider
SliderTouch.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch
or input.UserInputType == Enum.UserInputType.MouseButton1 then
draggingSlider = true
updateSpeedFromPosition(input.Position.X)
end
end)
SliderTouch.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch
or input.UserInputType == Enum.UserInputType.MouseButton1 then
draggingSlider = false
end
end)
-- Thumb também arrasta
SliderThumb.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch
or input.UserInputType == Enum.UserInputType.MouseButton1 then
draggingSlider = true
end
end)
SliderThumb.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch
or input.UserInputType == Enum.UserInputType.MouseButton1 then
draggingSlider = false
end
end)
-- Movimento global (touch e mouse)
UserInputService.InputChanged:Connect(function(input)
if draggingSlider then
if input.UserInputType == Enum.UserInputType.Touch
or input.UserInputType == Enum.UserInputType.MouseMovement then
updateSpeedFromPosition(input.Position.X)
end
end
end)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch
or input.UserInputType == Enum.UserInputType.MouseButton1 then
draggingSlider = false
end
end)
-- ============================================================
-- BOTÃO ATIVAR / DESATIVAR
-- ============================================================
local FlyBtn = Instance.new("TextButton")
FlyBtn.Size = UDim2.new(1, -20, 0, 40)
FlyBtn.Position = UDim2.new(0, 10, 0, 118)
FlyBtn.BackgroundColor3 = C.Success
FlyBtn.BorderSizePixel = 0
FlyBtn.Text = "ATIVAR FLY"
FlyBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
FlyBtn.TextSize = 14
FlyBtn.Font = Enum.Font.GothamBold
FlyBtn.AutoButtonColor = false
FlyBtn.Parent = MainFrame
round(FlyBtn, 8)
local FlyGradient = addGradient(FlyBtn, C.Success, C.SuccessDark, 90)
-- Seletor de modo
local ModeLabel = Instance.new("TextLabel")
ModeLabel.Size = UDim2.new(0, 40, 0, 14)
ModeLabel.Position = UDim2.new(0, 10, 0, 164)
ModeLabel.BackgroundTransparency = 1
ModeLabel.Text = "MODO"
ModeLabel.TextColor3 = C.TextSub
ModeLabel.TextSize = 9
ModeLabel.Font = Enum.Font.GothamBold
ModeLabel.TextXAlignment = Enum.TextXAlignment.Left
ModeLabel.Parent = MainFrame
local ModeRow = Instance.new("Frame")
ModeRow.Size = UDim2.new(1, -20, 0, 28)
ModeRow.Position = UDim2.new(0, 10, 0, 178)
ModeRow.BackgroundTransparency = 1
ModeRow.Parent = MainFrame
local ModeLayout = Instance.new("UIListLayout")
ModeLayout.FillDirection = Enum.FillDirection.Horizontal
ModeLayout.Padding = UDim.new(0, 6)
ModeLayout.HorizontalAlignment = Enum.HorizontalAlignment.Left
ModeLayout.Parent = ModeRow
local ModeBtn1 = Instance.new("TextButton")
ModeBtn1.Size = UDim2.new(0, 90, 1, 0)
ModeBtn1.BackgroundColor3 = C.Primary
ModeBtn1.BorderSizePixel = 0
ModeBtn1.Text = "FLY"
ModeBtn1.TextColor3 = Color3.fromRGB(255, 255, 255)
ModeBtn1.TextSize = 12
ModeBtn1.Font = Enum.Font.GothamBold
ModeBtn1.AutoButtonColor = false
ModeBtn1.Parent = ModeRow
round(ModeBtn1, 6)
addStroke(ModeBtn1, C.Border, 1, 0.5)
local ModeBtn2 = Instance.new("TextButton")
ModeBtn2.Size = UDim2.new(0, 90, 1, 0)
ModeBtn2.BackgroundColor3 = C.SurfaceHi
ModeBtn2.BorderSizePixel = 0
ModeBtn2.Text = "FLY2 (sentado)"
ModeBtn2.TextColor3 = C.TextSub
ModeBtn2.TextSize = 12
ModeBtn2.Font = Enum.Font.GothamBold
ModeBtn2.AutoButtonColor = false
ModeBtn2.Parent = ModeRow
round(ModeBtn2, 6)
addStroke(ModeBtn2, C.Border, 1, 0.5)
-- Presets rápidos
local PresetsRow = Instance.new("Frame")
PresetsRow.Size = UDim2.new(1, -20, 0, 22)
PresetsRow.Position = UDim2.new(0, 10, 0, 210)
PresetsRow.BackgroundTransparency = 1
PresetsRow.Parent = MainFrame
local PresetsLayout = Instance.new("UIListLayout")
PresetsLayout.FillDirection = Enum.FillDirection.Horizontal
PresetsLayout.Padding = UDim.new(0, 4)
PresetsLayout.HorizontalAlignment = Enum.HorizontalAlignment.Left
PresetsLayout.Parent = PresetsRow
local presetValues = {25, 50, 100, 150, 200}
local presetBtns = {}
for _, spd in ipairs(presetValues) do
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(0, 52, 1, 0)
btn.BackgroundColor3 = C.SurfaceHi
btn.BorderSizePixel = 0
btn.Text = tostring(spd)
btn.TextColor3 = C.TextSub
btn.TextSize = 11
btn.Font = Enum.Font.GothamBold
btn.AutoButtonColor = false
btn.Parent = PresetsRow
round(btn, 6)
addStroke(btn, C.Border, 1, 0.5)
btn.MouseButton1Click:Connect(function()
speed = spd
SpeedValue.Text = tostring(spd)
local fillScale = (spd - MIN_SPEED) / (MAX_SPEED - MIN_SPEED)
SliderFill.Size = UDim2.new(fillScale, 0, 1, 0)
SliderThumb.Position = UDim2.new(fillScale, -9, 0.5, -9)
end)
table.insert(presetBtns, btn)
end
-- Botões subir/descer (compactos, canto inferior direito)
local UpBtn = Instance.new("TextButton")
UpBtn.Size = UDim2.new(0, 40, 0, 40)
UpBtn.Position = UDim2.new(1, -56, 1, -100)
UpBtn.BackgroundColor3 = C.Primary
UpBtn.BackgroundTransparency = 0.15
UpBtn.BorderSizePixel = 0
UpBtn.Text = "▲"
UpBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
UpBtn.TextSize = 16
UpBtn.Font = Enum.Font.GothamBold
UpBtn.AutoButtonColor = false
UpBtn.Visible = false
UpBtn.Parent = ScreenGui
circle(UpBtn)
addStroke(UpBtn, C.Primary, 2, 0.3)
local DownBtn = Instance.new("TextButton")
DownBtn.Size = UDim2.new(0, 40, 0, 40)
DownBtn.Position = UDim2.new(1, -56, 1, -56)
DownBtn.BackgroundColor3 = C.Primary
DownBtn.BackgroundTransparency = 0.15
DownBtn.BorderSizePixel = 0
DownBtn.Text = "▼"
DownBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
DownBtn.TextSize = 16
DownBtn.Font = Enum.Font.GothamBold
DownBtn.AutoButtonColor = false
DownBtn.Visible = false
DownBtn.Parent = ScreenGui
circle(DownBtn)
addStroke(DownBtn, C.Primary, 2, 0.3)
-- Mecânica de voo
local function getHRP()
local char = LocalPlayer.Character
return char and char:FindFirstChild("HumanoidRootPart")
end
local function getHumanoid()
local char = LocalPlayer.Character
return char and char:FindFirstChildOfClass("Humanoid")
end
local DIRECTIONS = {
Left = Vector3.new(-1, 0, 0),
Right = Vector3.new(1, 0, 0),
Forwards = Vector3.new(0, 0, -1),
Backwards = Vector3.new(0, 0, 1),
Up = Vector3.new(0, 1, 0),
Down = Vector3.new(0, -1, 0)
}
local function getCF(part, isFor)
local cframe = part.CFrame
local noRot = CFrame.new(cframe.p)
local x, y, z = (Camera.CFrame - Camera.CFrame.p):toEulerAnglesXYZ()
return noRot * CFrame.Angles(isFor and z or x, y, z)
end
local function getNextMovement(deltaTime, spd)
local nextMove = Vector3.new()
local humanoid = getHumanoid()
local hrp = getHRP()
if not humanoid or not hrp then return CFrame.new(), nextMove end
local md = humanoid.MoveDirection
for dirName, vector in pairs(DIRECTIONS) do
local isFor = (dirName == "Forwards" or dirName == "Backwards")
local worldVector = ((getCF(hrp, isFor) * CFrame.new(vector)) - hrp.CFrame.p).p
if (worldVector - md).magnitude <= 1.05 and md ~= Vector3.new(0, 0, 0) then
nextMove = nextMove + vector
end
end
if upPressed then nextMove = nextMove + Vector3.new(0, 1, 0) end
if downPressed then nextMove = nextMove + Vector3.new(0, -1, 0) end
return CFrame.new(nextMove * spd * deltaTime), nextMove
end
local function applySitAnim(humanoid)
if not humanoid then return end
humanoid.Sit = true
humanoid.PlatformStand = false
end
local function removeSitAnim(humanoid)
if not humanoid then return end
humanoid.Sit = false
end
local function startFly()
local hrp = getHRP()
local humanoid = getHumanoid()
if not hrp or not humanoid then return end
flying = true
tiltAmount = 0
flyForce = Instance.new("BodyPosition")
flyForce.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
flyForce.Position = hrp.Position + Vector3.new(0, FLY_HEIGHT_OFFSET, 0)
flyForce.Name = "HDAdminFlyForce"
flyForce.Parent = hrp
bodyGyro = Instance.new("BodyGyro")
bodyGyro.D = 50
bodyGyro.MaxTorque = Vector3.new(math.huge, math.huge, math.huge)
bodyGyro.P = 200
bodyGyro.Name = "HDAdminFlyGyro"
bodyGyro.CFrame = hrp.CFrame
bodyGyro.Parent = hrp
if flyMode == 2 then
applySitAnim(humanoid)
end
local lastUpdate = tick()
local lastPosition = hrp.Position
local static = 0
flyConnection = RunService.RenderStepped:Connect(function()
if not flying then return end
local currentHrp = getHRP()
local currentHumanoid = getHumanoid()
if not currentHrp or not currentHumanoid then return end
local delta = tick() - lastUpdate
local look = (Camera.Focus.p - Camera.CFrame.p).unit
local move, directionalVector = getNextMovement(delta, speed * 10)
local pos = currentHrp.Position
local targetCFrame = CFrame.new(pos, pos + look) * move
local targetD = 750 + (speed * 0.2)
if move.p ~= Vector3.new() then
static = 0
flyForce.D = targetD
tiltAmount = tiltAmount + TILT_INCREMENT
flyForce.Position = targetCFrame.p
else
static = static + 1
tiltAmount = 1
local mag = (currentHrp.Position - lastPosition).magnitude
if mag > 6 and static >= 4 then
flyForce.Position = currentHrp.Position
end
end
if math.abs(tiltAmount) > TILT_MAX then
tiltAmount = TILT_MAX
end
if flyForce.D == targetD then
local tiltZ = tiltAmount * directionalVector.Z
bodyGyro.CFrame = targetCFrame * CFrame.Angles(math.rad(tiltZ), 0, 0)
end
lastUpdate = tick()
lastPosition = currentHrp.Position
if flyMode == 2 then
if not currentHumanoid.Sit then
currentHumanoid.Sit = true
end
currentHumanoid.PlatformStand = false
else
currentHumanoid.PlatformStand = true
currentHumanoid.Sit = false
end
end)
end
local function stopFly()
flying = false
if flyConnection then
flyConnection:Disconnect()
flyConnection = nil
end
if flyForce then flyForce:Destroy(); flyForce = nil end
if bodyGyro then bodyGyro:Destroy(); bodyGyro = nil end
local humanoid = getHumanoid()
if humanoid then
humanoid.PlatformStand = false
humanoid.Sit = false
removeSitAnim(humanoid)
end
upPressed = false
downPressed = false
end
FlyBtn.MouseButton1Click:Connect(function()
if flying then
stopFly()
FlyBtn.Text = "ATIVAR FLY"
FlyGradient.Color = ColorSequence.new(C.Success, C.SuccessDark)
tw(FlyBtn, 0.2, {BackgroundColor3 = C.Success})
UpBtn.Visible = false
DownBtn.Visible = false
else
startFly()
FlyBtn.Text = "DESATIVAR FLY"
FlyGradient.Color = ColorSequence.new(C.Danger, C.DangerDark)
tw(FlyBtn, 0.2, {BackgroundColor3 = C.Danger})
UpBtn.Visible = true
DownBtn.Visible = true
end
end)
FlyBtn.MouseEnter:Connect(function()
tw(FlyBtn, 0.15, {BackgroundTransparency = 0.1})
end)
FlyBtn.MouseLeave:Connect(function()
tw(FlyBtn, 0.15, {BackgroundTransparency = 0})
end)
UpBtn.MouseButton1Down:Connect(function()
upPressed = true
tw(UpBtn, 0.1, {BackgroundTransparency = 0})
end)
UpBtn.MouseButton1Up:Connect(function()
upPressed = false
tw(UpBtn, 0.15, {BackgroundTransparency = 0.15})
end)
UpBtn.MouseLeave:Connect(function()
upPressed = false
tw(UpBtn, 0.15, {BackgroundTransparency = 0.15})
end)
DownBtn.MouseButton1Down:Connect(function()
downPressed = true
tw(DownBtn, 0.1, {BackgroundTransparency = 0})
end)
DownBtn.MouseButton1Up:Connect(function()
downPressed = false
tw(DownBtn, 0.15, {BackgroundTransparency = 0.15})
end)
DownBtn.MouseLeave:Connect(function()
downPressed = false
tw(DownBtn, 0.15, {BackgroundTransparency = 0.15})
end)
ModeBtn1.MouseButton1Click:Connect(function()
if flying then stopFly() end
flyMode = 1
tw(ModeBtn1, 0.15, {BackgroundColor3 = C.Primary, TextColor3 = Color3.fromRGB(255,255,255)})
tw(ModeBtn2, 0.15, {BackgroundColor3 = C.SurfaceHi, TextColor3 = C.TextSub})
end)
ModeBtn2.MouseButton1Click:Connect(function()
if flying then stopFly() end
flyMode = 2
tw(ModeBtn2, 0.15, {BackgroundColor3 = C.Primary, TextColor3 = Color3.fromRGB(255,255,255)})
tw(ModeBtn1, 0.15, {BackgroundColor3 = C.SurfaceHi, TextColor3 = C.TextSub})
end)
local function openPanel()
MainFrame.Visible = true
MainFrame.Size = UDim2.new(0, 0, 0, 0)
MainFrame.Position = UDim2.new(0.5, 0, 0.5, 0)
MainFrame.BackgroundTransparency = 1
tw(MainFrame, 0.35, {
Size = UDim2.new(0, 300, 0, 240),
Position = UDim2.new(0.5, -150, 0.5, -120),
BackgroundTransparency = 0
}, Enum.EasingStyle.Back, Enum.EasingDirection.Out)
end
local function closePanel()
local t = tw(MainFrame, 0.25, {
Size = UDim2.new(0, 0, 0, 0),
Position = UDim2.new(0.5, 0, 0.5, 0),
BackgroundTransparency = 1
}, Enum.EasingStyle.Quad, Enum.EasingDirection.In)
t.Completed:Connect(function()
MainFrame.Visible = false
end)
end
ToggleBtn.MouseButton1Click:Connect(function()
if MainFrame.Visible then
closePanel()
else
openPanel()
end
tw(ToggleBtn, 0.15, {Size = UDim2.new(0, 50, 0, 50)})
task.delay(0.15, function()
tw(ToggleBtn, 0.15, {Size = UDim2.new(0, 58, 0, 58)}, Enum.EasingStyle.Back, Enum.EasingDirection.Out)
end)
end)
MinBtn.MouseButton1Click:Connect(function()
closePanel()
end)
CloseBtn.MouseButton1Click:Connect(function()
if flying then stopFly() end
tw(CloseBtn, 0.1, {BackgroundColor3 = C.DangerDark})
task.wait(0.1)
ScreenGui:Destroy()
end)
local dragging, dragStart, startPos
Header.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = true
dragStart = input.Position
startPos = MainFrame.Position
end
end)
UserInputService.InputChanged:Connect(function(input)
if dragging and (input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseMovement) then
local delta = input.Position - dragStart
MainFrame.Position = UDim2.new(
startPos.X.Scale, startPos.X.Offset + delta.X,
startPos.Y.Scale, startPos.Y.Offset + delta.Y
)
end
end)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = false
end
end)
LocalPlayer.CharacterAdded:Connect(function()
if flying then
stopFly()
FlyBtn.Text = "ATIVAR FLY"
FlyGradient.Color = ColorSequence.new(C.Success, C.SuccessDark)
tw(FlyBtn, 0.2, {BackgroundColor3 = C.Success})
UpBtn.Visible = false
DownBtn.Visible = false
end
end)
task.wait(0.3)
openPanel()
print("[HD Admin Fly] Carregado! Slider de velocidade 25-200 ativo.")No comments yet for this script.



