
KeylessUniversal

if getgenv().MobileDroneLoaded then return end
getgenv().MobileDroneLoaded = true
if not game:IsLoaded() then
game.Loaded:Wait()
end
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local StarterGui = game:GetService("StarterGui")
local LocalPlayer = Players.LocalPlayer
local EmoteID = "74674031105738"
local TargetFOV = 70
local DefaultFOV = 70
local DroneSpeed = 30
local ScreenGui = nil
local ToggleButton = nil
local UpButton = nil
local DownButton = nil
local SpeedBox = nil
local ZoomInButton = nil
local ZoomOutButton = nil
local DisableZoomButton = nil
local NoclipButton = nil
local LoadedAnimationAsset = nil
pcall(function()
local InsertService = game:GetService("InsertService")
local AssetModel = InsertService:LoadAsset(tonumber(EmoteID))
if AssetModel then
for _, Child in ipairs(AssetModel:GetDescendants()) do
if Child:IsA("Animation") then
LoadedAnimationAsset = Child
break
end
end
AssetModel:Destroy()
end
end)
local function SendNotification()
pcall(function()
StarterGui:SetCore("SendNotification", {
Title = "Drone Script Loaded",
Text = "Press E to Toggle Drone, Space to Fly Up, Ctrl/Q to Fly Down, H to Show Keybinds",
Duration = 6
})
end)
end
local function SetupGui()
local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")
if PlayerGui:FindFirstChild("MobileDroneGui") then
PlayerGui.MobileDroneGui:Destroy()
end
ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "MobileDroneGui"
ScreenGui.ResetOnSpawn = false
ScreenGui.Parent = PlayerGui
local function CreateButton(Name, Text, Position, Size, Color)
local Button = Instance.new("TextButton")
Button.Name = Name
Button.Text = Text
Button.Position = Position
Button.Size = Size
Button.BackgroundColor3 = Color
Button.BackgroundTransparency = 0.2
Button.TextColor3 = Color3.fromRGB(255, 255, 255)
Button.Font = Enum.Font.GothamBold
Button.TextSize = 14
Button.Parent = ScreenGui
local Corner = Instance.new("UICorner")
Corner.CornerRadius = UDim.new(0, 8)
Corner.Parent = Button
return Button
end
local function CreateTextBox(Name, Text, Position, Size, Color)
local TextBox = Instance.new("TextBox")
TextBox.Name = Name
TextBox.Text = Text
TextBox.Position = Position
TextBox.Size = Size
TextBox.BackgroundColor3 = Color
TextBox.BackgroundTransparency = 0.2
TextBox.TextColor3 = Color3.fromRGB(255, 255, 255)
TextBox.Font = Enum.Font.GothamBold
TextBox.TextSize = 14
TextBox.ClearTextOnFocus = false
TextBox.Parent = ScreenGui
local Corner = Instance.new("UICorner")
Corner.CornerRadius = UDim.new(0, 8)
Corner.Parent = TextBox
return TextBox
end
ToggleButton = CreateButton("ToggleButton", "DRONE: OFF", UDim2.new(0.78, 0, 0.08, 0), UDim2.new(0.18, 0, 0.08, 0), Color3.fromRGB(200, 50, 50))
UpButton = CreateButton("UpButton", "FLY UP", UDim2.new(0.78, 0, 0.17, 0), UDim2.new(0.18, 0, 0.08, 0), Color3.fromRGB(40, 40, 40))
DownButton = CreateButton("DownButton", "FLY DOWN", UDim2.new(0.78, 0, 0.26, 0), UDim2.new(0.18, 0, 0.08, 0), Color3.fromRGB(40, 40, 40))
SpeedBox = CreateTextBox("SpeedBox", tostring(DroneSpeed), UDim2.new(0.78, 0, 0.35, 0), UDim2.new(0.18, 0, 0.08, 0), Color3.fromRGB(40, 40, 40))
ZoomInButton = CreateButton("ZoomInButton", "ZOOM +", UDim2.new(0.78, 0, 0.44, 0), UDim2.new(0.085, 0, 0.08, 0), Color3.fromRGB(40, 40, 40))
ZoomOutButton = CreateButton("ZoomOutButton", "ZOOM -", UDim2.new(0.875, 0, 0.44, 0), UDim2.new(0.085, 0, 0.08, 0), Color3.fromRGB(40, 40, 40))
DisableZoomButton = CreateButton("DisableZoomButton", "RESET ZOOM", UDim2.new(0.78, 0, 0.53, 0), UDim2.new(0.18, 0, 0.08, 0), Color3.fromRGB(40, 40, 40))
NoclipButton = CreateButton("NoclipButton", "NOCLIP: OFF", UDim2.new(0.78, 0, 0.62, 0), UDim2.new(0.18, 0, 0.08, 0), Color3.fromRGB(40, 40, 40))
ToggleButton.MouseButton1Click:Connect(function()
local Character = LocalPlayer.Character
if not Character then return end
local DroneController = Character:FindFirstChild("DroneControllerScript")
if DroneController then
local ActiveVal = DroneController:FindFirstChild("DroneActive")
if ActiveVal then
ActiveVal.Value = not ActiveVal.Value
end
end
end)
UpButton.MouseButton1Down:Connect(function()
local Character = LocalPlayer.Character
if Character and Character:FindFirstChild("DroneControllerScript") then
local DirVal = Character.DroneControllerScript:FindFirstChild("UpDownDirection")
if DirVal then DirVal.Value = 1 end
end
end)
UpButton.MouseButton1Up:Connect(function()
local Character = LocalPlayer.Character
if Character and Character:FindFirstChild("DroneControllerScript") then
local DirVal = Character.DroneControllerScript:FindFirstChild("UpDownDirection")
if DirVal then DirVal.Value = 0 end
end
end)
UpButton.MouseLeave:Connect(function()
local Character = LocalPlayer.Character
if Character and Character:FindFirstChild("DroneControllerScript") then
local DirVal = Character.DroneControllerScript:FindFirstChild("UpDownDirection")
if DirVal then DirVal.Value = 0 end
end
end)
DownButton.MouseButton1Down:Connect(function()
local Character = LocalPlayer.Character
if Character and Character:FindFirstChild("DroneControllerScript") then
local DirVal = Character.DroneControllerScript:FindFirstChild("UpDownDirection")
if DirVal then DirVal.Value = -1 end
end
end)
DownButton.MouseButton1Up:Connect(function()
local Character = LocalPlayer.Character
if Character and Character:FindFirstChild("DroneControllerScript") then
local DirVal = Character.DroneControllerScript:FindFirstChild("UpDownDirection")
if DirVal then DirVal.Value = 0 end
end
end)
DownButton.MouseLeave:Connect(function()
local Character = LocalPlayer.Character
if Character and Character:FindFirstChild("DroneControllerScript") then
local DirVal = Character.DroneControllerScript:FindFirstChild("UpDownDirection")
if DirVal then DirVal.Value = 0 end
end
end)
SpeedBox.FocusLost:Connect(function()
local NewSpeed = tonumber(SpeedBox.Text)
if NewSpeed then
DroneSpeed = math.max(0, NewSpeed)
SpeedBox.Text = tostring(DroneSpeed)
local Character = LocalPlayer.Character
if Character and Character:FindFirstChild("DroneControllerScript") then
local SpeedVal = Character.DroneControllerScript:FindFirstChild("DroneSpeed")
if SpeedVal then SpeedVal.Value = DroneSpeed end
end
else
SpeedBox.Text = tostring(DroneSpeed)
end
end)
ZoomInButton.MouseButton1Click:Connect(function()
TargetFOV = math.max(20, TargetFOV - 10)
end)
ZoomOutButton.MouseButton1Click:Connect(function()
TargetFOV = math.min(120, TargetFOV + 10)
end)
DisableZoomButton.MouseButton1Click:Connect(function()
TargetFOV = DefaultFOV
local Camera = workspace.CurrentCamera
if Camera then
Camera.FieldOfView = DefaultFOV
end
end)
NoclipButton.MouseButton1Click:Connect(function()
local Character = LocalPlayer.Character
if not Character then return end
local DroneController = Character:FindFirstChild("DroneControllerScript")
if DroneController then
local NoclipVal = DroneController:FindFirstChild("NoclipActive")
if NoclipVal then
NoclipVal.Value = not NoclipVal.Value
end
end
end)
end
SetupGui()
SendNotification()
local function ApplyCharacterLogic(Character)
local Humanoid = Character:WaitForChild("Humanoid")
local RootPart = Character:WaitForChild("HumanoidRootPart")
local ControllerFolder = Instance.new("Folder")
ControllerFolder.Name = "DroneControllerScript"
ControllerFolder.Parent = Character
local ActiveVal = Instance.new("BoolValue")
ActiveVal.Name = "DroneActive"
ActiveVal.Value = false
ActiveVal.Parent = ControllerFolder
local DirVal = Instance.new("IntValue")
DirVal.Name = "UpDownDirection"
DirVal.Value = 0
DirVal.Parent = ControllerFolder
local SpeedVal = Instance.new("NumberValue")
SpeedVal.Name = "DroneSpeed"
SpeedVal.Value = DroneSpeed
SpeedVal.Parent = ControllerFolder
local NoclipVal = Instance.new("BoolValue")
NoclipVal.Name = "NoclipActive"
NoclipVal.Value = false
NoclipVal.Parent = ControllerFolder
local BV = Instance.new("BodyVelocity")
BV.Velocity = Vector3.new(0, 0, 0)
BV.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
local BG = Instance.new("BodyGyro")
BG.MaxTorque = Vector3.new(math.huge, math.huge, math.huge)
BG.P = 9000
local AnimationTrack = nil
local function LoadAnimation()
if AnimationTrack then return end
pcall(function()
local Animator = Humanoid:FindFirstChildOfClass("Animator")
if not Animator then
Animator = Instance.new("Animator")
Animator.Parent = Humanoid
end
local TargetAnimId = "rbxassetid://" .. EmoteID
local Success, Objects = pcall(function()
return game:GetObjects("rbxassetid://" .. EmoteID)
end)
if Success and Objects then
for _, Obj in ipairs(Objects) do
if Obj:IsA("Animation") then
TargetAnimId = Obj.AnimationId
break
else
for _, Desc in ipairs(Obj:GetDescendants()) do
if Desc:IsA("Animation") then
TargetAnimId = Desc.AnimationId
break
end
end
end
end
end
local Anim = Instance.new("Animation")
Anim.AnimationId = TargetAnimId
AnimationTrack = Animator:LoadAnimation(Anim)
AnimationTrack.Looped = true
AnimationTrack.Priority = Enum.AnimationPriority.Action4
end)
end
local function StartDrone()
Humanoid.PlatformStand = true
BG.CFrame = RootPart.CFrame
BV.Parent = RootPart
BG.Parent = RootPart
LoadAnimation()
if AnimationTrack then
pcall(function()
AnimationTrack:Play()
end)
end
end
local function StopDrone()
Humanoid.PlatformStand = false
BV.Parent = nil
BG.Parent = nil
if AnimationTrack then
pcall(function()
AnimationTrack:Stop()
end)
end
RootPart.Velocity = Vector3.new(0, 0, 0)
RootPart.RotVelocity = Vector3.new(0, 0, 0)
NoclipVal.Value = false
end
ActiveVal.Changed:Connect(function(State)
if State then
if ToggleButton then
ToggleButton.Text = "DRONE: ON"
ToggleButton.BackgroundColor3 = Color3.fromRGB(50, 200, 50)
end
StartDrone()
else
if ToggleButton then
ToggleButton.Text = "DRONE: OFF"
ToggleButton.BackgroundColor3 = Color3.fromRGB(200, 50, 50)
end
StopDrone()
end
end)
NoclipVal.Changed:Connect(function(State)
if State then
if NoclipButton then
NoclipButton.Text = "NOCLIP: ON"
NoclipButton.BackgroundColor3 = Color3.fromRGB(50, 200, 50)
end
else
if NoclipButton then
NoclipButton.Text = "NOCLIP: OFF"
NoclipButton.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
end
for _, Part in ipairs(Character:GetDescendants()) do
if Part:IsA("BasePart") then
Part.CanCollide = true
end
end
end
end)
Humanoid.Died:Connect(function()
ActiveVal.Value = false
NoclipVal.Value = false
TargetFOV = DefaultFOV
local Camera = workspace.CurrentCamera
if Camera then
Camera.FieldOfView = DefaultFOV
end
end)
RunService.Stepped:Connect(function()
if NoclipVal.Value then
for _, Part in ipairs(Character:GetDescendants()) do
if Part:IsA("BasePart") then
Part.CanCollide = false
end
end
end
end)
RunService.RenderStepped:Connect(function()
local Camera = workspace.CurrentCamera
if Camera then
Camera.FieldOfView = Camera.FieldOfView + (TargetFOV - Camera.FieldOfView) * 0.15
end
if ActiveVal.Value and RootPart and Humanoid and Camera then
local CurrentSpeed = SpeedVal.Value
local MoveDir = Humanoid.MoveDirection * CurrentSpeed
local FlyDir = Vector3.new(0, DirVal.Value * CurrentSpeed, 0)
BV.Velocity = MoveDir + FlyDir
local Look = Camera.CFrame.LookVector
BG.CFrame = CFrame.new(RootPart.Position, RootPart.Position + Vector3.new(Look.X, 0, Look.Z))
end
end)
end
UserInputService.InputBegan:Connect(function(Input, GameProcessed)
if GameProcessed then return end
if UserInputService:GetFocusedTextBox() then return end
if Input.KeyCode == Enum.KeyCode.H then
SendNotification()
return
end
local Character = LocalPlayer.Character
if not Character or not Character:FindFirstChild("DroneControllerScript") then return end
local ControllerFolder = Character.DroneControllerScript
local DirVal = ControllerFolder:FindFirstChild("UpDownDirection")
local ActiveVal = ControllerFolder:FindFirstChild("DroneActive")
if Input.KeyCode == Enum.KeyCode.Space then
if DirVal then DirVal.Value = 1 end
elseif Input.KeyCode == Enum.KeyCode.LeftControl or Input.KeyCode == Enum.KeyCode.Q then
if DirVal then DirVal.Value = -1 end
elseif Input.KeyCode == Enum.KeyCode.E then
if ActiveVal then ActiveVal.Value = not ActiveVal.Value end
end
end)
UserInputService.InputEnded:Connect(function(Input, GameProcessed)
if UserInputService:GetFocusedTextBox() then return end
local Character = LocalPlayer.Character
if not Character or not Character:FindFirstChild("DroneControllerScript") then return end
local ControllerFolder = Character.DroneControllerScript
local DirVal = ControllerFolder:FindFirstChild("UpDownDirection")
if Input.KeyCode == Enum.KeyCode.Space or Input.KeyCode == Enum.KeyCode.LeftControl or Input.KeyCode == Enum.KeyCode.Q then
if DirVal then DirVal.Value = 0 end
end
end)
if LocalPlayer.Character then
task.spawn(function()
ApplyCharacterLogic(LocalPlayer.Character)
end)
end
LocalPlayer.CharacterAdded:Connect(function(NewCharacter)
TargetFOV = DefaultFOV
local Camera = workspace.CurrentCamera
if Camera then
Camera.FieldOfView = DefaultFOV
end
task.spawn(function()
ApplyCharacterLogic(NewCharacter)
end)
end)No comments yet for this script.



