--[=[ d888b db db d888888b .d888b. db db db .d8b. 88' Y8b 88 88 `88' VP `8D 88 88 88 d8' `8b 88 88 88 88 odD' 88 88 88 88ooo88 88 ooo 88 88 88 .88' 88 88 88 88~~~88 88. ~8~ 88b d88 .88. j88. 88booo. 88b d88 88 88 @uniquadev Y888P ~Y8888P' Y888888P 888888D Y88888P ~Y8888P' YP YP CONVERTER designed using localmaze gui creator ]=] -- Instances: 13 | Scripts: 2 | Modules: 0 | Tags: 0 local LMG2L = {}; -- Players.o_q0l1.PlayerGui.ScreenGui LMG2L["ScreenGui_1"] = Instance.new("ScreenGui", game:GetService("Players").LocalPlayer:WaitForChild("PlayerGui")); LMG2L["ScreenGui_1"]["ZIndexBehavior"] = Enum.ZIndexBehavior.Sibling; -- Players.o_q0l1.PlayerGui.ScreenGui.Frame LMG2L["Frame_2"] = Instance.new("Frame", LMG2L["ScreenGui_1"]); LMG2L["Frame_2"]["BorderSizePixel"] = 0; LMG2L["Frame_2"]["BackgroundColor3"] = Color3.fromRGB(92, 92, 92); LMG2L["Frame_2"]["Size"] = UDim2.new(0.54255, 0, 0.39735, 0); LMG2L["Frame_2"]["Position"] = UDim2.new(0, 190, 0, 14); LMG2L["Frame_2"]["BackgroundTransparency"] = 0.7; -- Players.o_q0l1.PlayerGui.ScreenGui.Frame.Frame2 LMG2L["Frame2_3"] = Instance.new("Frame", LMG2L["Frame_2"]); LMG2L["Frame2_3"]["BorderSizePixel"] = 0; LMG2L["Frame2_3"]["BackgroundColor3"] = Color3.fromRGB(43, 43, 43); LMG2L["Frame2_3"]["Size"] = UDim2.new(0.96078, 0, 0.31667, 0); LMG2L["Frame2_3"]["Position"] = UDim2.new(0, 8, 0, 76); LMG2L["Frame2_3"]["Name"] = [[Frame2]]; LMG2L["Frame2_3"]["BackgroundTransparency"] = 0.8; -- Players.o_q0l1.PlayerGui.ScreenGui.Frame.Frame2.TextLabel LMG2L["TextLabel_4"] = Instance.new("TextLabel", LMG2L["Frame2_3"]); LMG2L["TextLabel_4"]["TextStrokeTransparency"] = 0.8; LMG2L["TextLabel_4"]["BorderSizePixel"] = 0; LMG2L["TextLabel_4"]["TextSize"] = 18; LMG2L["TextLabel_4"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255); LMG2L["TextLabel_4"]["FontFace"] = Font.new([[rbxasset://fonts/families/Zekton.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal); LMG2L["TextLabel_4"]["BackgroundTransparency"] = 1; LMG2L["TextLabel_4"]["Size"] = UDim2.new(0.60714, 0, 0.57895, 0); LMG2L["TextLabel_4"]["Text"] = [[Turns on Holy War]]; LMG2L["TextLabel_4"]["Position"] = UDim2.new(0, 146, 0, 6); -- Players.o_q0l1.PlayerGui.ScreenGui.Frame.Frame2.TextButton LMG2L["TextButton_5"] = Instance.new("TextButton", LMG2L["Frame2_3"]); LMG2L["TextButton_5"]["TextStrokeTransparency"] = 0.8; LMG2L["TextButton_5"]["BorderSizePixel"] = 0; LMG2L["TextButton_5"]["TextSize"] = 18; LMG2L["TextButton_5"]["BackgroundColor3"] = Color3.fromRGB(0, 0, 0); LMG2L["TextButton_5"]["FontFace"] = Font.new([[rbxasset://fonts/families/Zekton.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal); LMG2L["TextButton_5"]["BackgroundTransparency"] = 0.8; LMG2L["TextButton_5"]["Size"] = UDim2.new(0.34694, 0, 0.73684, 0); LMG2L["TextButton_5"]["Text"] = [[Turn on Holy war]]; LMG2L["TextButton_5"]["Position"] = UDim2.new(0, 4, 0, 4); -- Players.o_q0l1.PlayerGui.ScreenGui.Frame.Frame2.TextButton.LocalScript LMG2L["LocalScript_6"] = Instance.new("LocalScript", LMG2L["TextButton_5"]); -- Players.o_q0l1.PlayerGui.ScreenGui.Frame.UIDragDetector LMG2L["UIDragDetector_7"] = Instance.new("UIDragDetector", LMG2L["Frame_2"]); -- Players.o_q0l1.PlayerGui.ScreenGui.Frame.Frame LMG2L["Frame_8"] = Instance.new("Frame", LMG2L["Frame_2"]); LMG2L["Frame_8"]["BorderSizePixel"] = 0; LMG2L["Frame_8"]["BackgroundColor3"] = Color3.fromRGB(66, 66, 66); LMG2L["Frame_8"]["Size"] = UDim2.new(1, 0, 0.21667, 0); LMG2L["Frame_8"]["BackgroundTransparency"] = 0.8; -- Players.o_q0l1.PlayerGui.ScreenGui.Frame.Frame.TextLabel LMG2L["TextLabel_9"] = Instance.new("TextLabel", LMG2L["Frame_8"]); LMG2L["TextLabel_9"]["TextStrokeTransparency"] = 0.8; LMG2L["TextLabel_9"]["BorderSizePixel"] = 0; LMG2L["TextLabel_9"]["TextSize"] = 18; LMG2L["TextLabel_9"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255); LMG2L["TextLabel_9"]["FontFace"] = Font.new([[rbxasset://fonts/families/Zekton.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal); LMG2L["TextLabel_9"]["BackgroundTransparency"] = 1; LMG2L["TextLabel_9"]["Size"] = UDim2.new(0.41176, 0, 0.92308, 0); LMG2L["TextLabel_9"]["Text"] = [[Watchlist's FPV Drone GUI]]; LMG2L["TextLabel_9"]["Position"] = UDim2.new(0, 18, 0, 0); -- Players.o_q0l1.PlayerGui.ScreenGui.Frame.Frame.Frame LMG2L["Frame_a"] = Instance.new("Frame", LMG2L["Frame_8"]); LMG2L["Frame_a"]["BorderSizePixel"] = 0; LMG2L["Frame_a"]["BackgroundColor3"] = Color3.fromRGB(43, 43, 43); LMG2L["Frame_a"]["Size"] = UDim2.new(0.96078, 0, 1.38462, 0); LMG2L["Frame_a"]["Position"] = UDim2.new(0, 8, 0, 32); LMG2L["Frame_a"]["BackgroundTransparency"] = 0.8; -- Players.o_q0l1.PlayerGui.ScreenGui.Frame.Frame.Frame.TextLabel LMG2L["TextLabel_b"] = Instance.new("TextLabel", LMG2L["Frame_a"]); LMG2L["TextLabel_b"]["TextStrokeTransparency"] = 0.8; LMG2L["TextLabel_b"]["BorderSizePixel"] = 0; LMG2L["TextLabel_b"]["TextSize"] = 18; LMG2L["TextLabel_b"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255); LMG2L["TextLabel_b"]["FontFace"] = Font.new([[rbxasset://fonts/families/Zekton.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal); LMG2L["TextLabel_b"]["BackgroundTransparency"] = 1; LMG2L["TextLabel_b"]["Size"] = UDim2.new(0.60714, 0, 0.61111, 0); LMG2L["TextLabel_b"]["Text"] = [[Launches the drone]]; LMG2L["TextLabel_b"]["Position"] = UDim2.new(0, 146, 0, 6); -- Players.o_q0l1.PlayerGui.ScreenGui.Frame.Frame.Frame.TextButton LMG2L["TextButton_c"] = Instance.new("TextButton", LMG2L["Frame_a"]); LMG2L["TextButton_c"]["TextStrokeTransparency"] = 0.8; LMG2L["TextButton_c"]["BorderSizePixel"] = 0; LMG2L["TextButton_c"]["TextSize"] = 18; LMG2L["TextButton_c"]["BackgroundColor3"] = Color3.fromRGB(0, 0, 0); LMG2L["TextButton_c"]["FontFace"] = Font.new([[rbxasset://fonts/families/Zekton.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal); LMG2L["TextButton_c"]["BackgroundTransparency"] = 0.8; LMG2L["TextButton_c"]["Size"] = UDim2.new(0.34694, 0, 0.77778, 0); LMG2L["TextButton_c"]["Text"] = [[Arm Drone]]; LMG2L["TextButton_c"]["Position"] = UDim2.new(0, 4, 0, 4); -- Players.o_q0l1.PlayerGui.ScreenGui.Frame.Frame.Frame.TextButton.LocalScript LMG2L["LocalScript_d"] = Instance.new("LocalScript", LMG2L["TextButton_c"]); -- Players.o_q0l1.PlayerGui.ScreenGui.Frame.Frame2.TextButton.LocalScript local function C_6() local script = LMG2L["LocalScript_6"]; -- LocalScript inside the "Turn on tuff music" TextButton local button = script.Parent local sound = Instance.new("Sound") sound.Name = "LarpMusic" sound.SoundId = "rbxassetid://75485931767123" sound.Volume = 1 sound.Looped = true sound.Parent = game:GetService("SoundService") local isOn = false button.MouseButton1Click:Connect(function() isOn = not isOn if isOn then button.Text = "Turn off Holy War" sound:Play() else button.Text = "Turn on Holy War" sound:Stop() end end) end; task.spawn(C_6); -- Players.o_q0l1.PlayerGui.ScreenGui.Frame.Frame.Frame.TextButton.LocalScript local function C_d() local script = LMG2L["LocalScript_d"]; -- LocalScript inside the "Arm Drone" TextButton local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local player = Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local rootPart = character:WaitForChild("HumanoidRootPart") local camera = workspace.CurrentCamera local playerGui = player:WaitForChild("PlayerGui") local button = script.Parent local isArmed = false -- ====== CONFIG ====== local DRONE_SPEED = 80 local THROTTLE_POWER = 125 local BASE_LIFT = 38 local TURN_RATE = 1.9 local MOUSE_SENS = 0.0028 local DRAG = 0.97 local GRAVITY = Vector3.new(0, -28, 0) local ANGULAR_DAMP = 0.85 -- ====== CREATE DRONE ====== local drone = Instance.new("Part") drone.Name = "FPVDrone" drone.Size = Vector3.new(1.4, 0.4, 1.4) drone.Anchored = true drone.CanCollide = true drone.Material = Enum.Material.Metal drone.Color = Color3.fromRGB(30, 30, 30) drone.Parent = workspace local fanSound = Instance.new("Sound") fanSound.Name = "DroneFans" fanSound.SoundId = "rbxassetid://114037851906101" -- Fixed ID fanSound.Volume = 0.7 fanSound.Looped = true fanSound.Parent = drone -- ====== STATE ====== local velocity = Vector3.zero local angularVel = Vector3.zero local throttle = 0 local pitchInput, rollInput, yawInput = 0, 0, 0 local strafeInput = 0 local forwardInput = 0 local connection local mobileGui local originalCameraType local originalCameraSubject -- Raycast params for collision local rayParams = RaycastParams.new() rayParams.FilterType = Enum.RaycastFilterType.Exclude rayParams.FilterDescendantsInstances = {drone, character} -- ====== MOBILE CONTROLS ====== local function createMobileControls() if mobileGui then mobileGui:Destroy() end mobileGui = Instance.new("ScreenGui") mobileGui.Name = "DroneMobileControls" mobileGui.ResetOnSpawn = false mobileGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling mobileGui.Parent = playerGui local function makeButton(text, position, size) local btn = Instance.new("TextButton") btn.Size = size btn.Position = position btn.BackgroundColor3 = Color3.new(0, 0, 0) btn.BackgroundTransparency = 0.8 btn.Text = text btn.TextColor3 = Color3.new(1, 1, 1) btn.TextTransparency = 0 btn.TextStrokeTransparency = 0.8 btn.TextStrokeColor3 = Color3.new(0, 0, 0) btn.Font = Enum.Font.GothamBold btn.TextSize = 34 btn.BorderSizePixel = 0 btn.AutoButtonColor = false btn.Parent = mobileGui return btn end -- ABOVE D-PAD (camera forward / backward) - properly spaced local camBack = makeButton("↓", UDim2.new(0.08, 0, 0.20, 0), UDim2.new(0.13, 0, 0.08, 0)) local camForward = makeButton("↑", UDim2.new(0.08, 0, 0.30, 0), UDim2.new(0.13, 0, 0.08, 0)) -- D-PAD local dpadUp = makeButton("↑", UDim2.new(0.08, 0, 0.44, 0), UDim2.new(0.13, 0, 0.08, 0)) local dpadLeft = makeButton("←", UDim2.new(0.02, 0, 0.54, 0), UDim2.new(0.13, 0, 0.08, 0)) local dpadRight = makeButton("→", UDim2.new(0.14, 0, 0.54, 0), UDim2.new(0.13, 0, 0.08, 0)) local dpadDown = makeButton("↓", UDim2.new(0.08, 0, 0.64, 0), UDim2.new(0.13, 0, 0.08, 0)) -- UNDER D-PAD (crab) local crabLeft = makeButton("←", UDim2.new(0.02, 0, 0.78, 0), UDim2.new(0.13, 0, 0.08, 0)) local crabRight = makeButton("→", UDim2.new(0.14, 0, 0.78, 0), UDim2.new(0.13, 0, 0.08, 0)) -- Right side - Throttle local thrustUp = makeButton("↑", UDim2.new(0.80, 0, 0.55, 0), UDim2.new(0.15, 0, 0.11, 0)) local thrustDown = makeButton("↓", UDim2.new(0.80, 0, 0.68, 0), UDim2.new(0.15, 0, 0.11, 0)) local function bind(btn, press, release) btn.MouseButton1Down:Connect(press) btn.MouseButton1Up:Connect(release) btn.MouseLeave:Connect(release) end -- D-pad bind(dpadUp, function() pitchInput = 1 end, function() pitchInput = 0 end) bind(dpadDown, function() pitchInput = -1 end, function() pitchInput = 0 end) bind(dpadLeft, function() yawInput = 1 end, function() yawInput = 0 end) bind(dpadRight, function() yawInput = -1 end, function() yawInput = 0 end) -- Forward / Backward bind(camForward, function() forwardInput = 1 end, function() forwardInput = 0 end) bind(camBack, function() forwardInput = -1 end, function() forwardInput = 0 end) -- Crab bind(crabLeft, function() strafeInput = -1 end, function() strafeInput = 0 end) bind(crabRight, function() strafeInput = 1 end, function() strafeInput = 0 end) -- Throttle bind(thrustUp, function() throttle = 1 end, function() throttle = 0 end) bind(thrustDown, function() throttle = -0.4 end, function() throttle = 0 end) end -- ====== ARM ====== local function armDrone() if isArmed then return end isArmed = true humanoid.WalkSpeed = 0 humanoid.JumpPower = 0 humanoid.PlatformStand = true rootPart.Anchored = true drone.CFrame = rootPart.CFrame * CFrame.new(0, 7, 0) originalCameraType = camera.CameraType originalCameraSubject = camera.CameraSubject camera.CameraType = Enum.CameraType.Scriptable fanSound:Play() if UserInputService.TouchEnabled then createMobileControls() end -- Desktop keyboard local function onInput(input, processed) if processed then return end if input.UserInputType == Enum.UserInputType.Keyboard then if input.KeyCode == Enum.KeyCode.W then pitchInput = 1 end if input.KeyCode == Enum.KeyCode.S then pitchInput = -1 end if input.KeyCode == Enum.KeyCode.A then rollInput = -1 end if input.KeyCode == Enum.KeyCode.D then rollInput = 1 end if input.KeyCode == Enum.KeyCode.Q then yawInput = 1 end if input.KeyCode == Enum.KeyCode.E then yawInput = -1 end if input.KeyCode == Enum.KeyCode.Space then throttle = 1 end if input.KeyCode == Enum.KeyCode.LeftShift then throttle = -0.4 end if input.KeyCode == Enum.KeyCode.R then forwardInput = 1 end if input.KeyCode == Enum.KeyCode.F then forwardInput = -1 end if input.KeyCode == Enum.KeyCode.Z then strafeInput = -1 end if input.KeyCode == Enum.KeyCode.C then strafeInput = 1 end end end local function onInputEnded(input) if input.UserInputType == Enum.UserInputType.Keyboard then if input.KeyCode == Enum.KeyCode.W or input.KeyCode == Enum.KeyCode.S then pitchInput = 0 end if input.KeyCode == Enum.KeyCode.A or input.KeyCode == Enum.KeyCode.D then rollInput = 0 end if input.KeyCode == Enum.KeyCode.Q or input.KeyCode == Enum.KeyCode.E then yawInput = 0 end if input.KeyCode == Enum.KeyCode.Space or input.KeyCode == Enum.KeyCode.LeftShift then throttle = 0 end if input.KeyCode == Enum.KeyCode.R or input.KeyCode == Enum.KeyCode.F then forwardInput = 0 end if input.KeyCode == Enum.KeyCode.Z or input.KeyCode == Enum.KeyCode.C then strafeInput = 0 end end end UserInputService.InputBegan:Connect(onInput) UserInputService.InputEnded:Connect(onInputEnded) -- Flight loop connection = RunService.RenderStepped:Connect(function(dt) if not isArmed then return end if not UserInputService.TouchEnabled then local mouseDelta = UserInputService:GetMouseDelta() angularVel = angularVel + Vector3.new( -mouseDelta.Y * MOUSE_SENS, -mouseDelta.X * MOUSE_SENS, mouseDelta.X * MOUSE_SENS * 0.15 ) end angularVel = angularVel + Vector3.new( pitchInput * TURN_RATE * dt, yawInput * TURN_RATE * dt, rollInput * TURN_RATE * dt ) angularVel = angularVel * ANGULAR_DAMP local rot = CFrame.Angles(angularVel.X, angularVel.Y, angularVel.Z) drone.CFrame = drone.CFrame * rot local totalLift = BASE_LIFT + (throttle * THROTTLE_POWER) local upForce = drone.CFrame.UpVector * totalLift local forwardForce = drone.CFrame.LookVector * (forwardInput * 45) local strafeForce = drone.CFrame.RightVector * (strafeInput * 45) velocity = (velocity + upForce * dt + GRAVITY * dt + forwardForce * dt + strafeForce * dt) * DRAG if velocity.Magnitude > DRONE_SPEED then velocity = velocity.Unit * DRONE_SPEED end -- ===== COLLISION (bouncier) ===== local move = velocity * dt local result = workspace:Raycast(drone.Position, move, rayParams) if result then local normal = result.Normal velocity = velocity - 2 * velocity:Dot(normal) * normal * 0.85 move = velocity * dt end drone.CFrame = drone.CFrame + move camera.CFrame = drone.CFrame * CFrame.new(0, 0.15, 0.1) local speedFactor = math.clamp(velocity.Magnitude / 40, 0.55, 1.4) fanSound.PlaybackSpeed = speedFactor fanSound.Volume = 0.5 + (speedFactor * 0.4) end) end button.MouseButton1Click:Connect(armDrone) end; task.spawn(C_d); return LMG2L["ScreenGui_1"], require;