-- Evita duplicação limpando qualquer janela antiga if game:GetService("CoreGui"):FindFirstChild("ModernFlySystem") then game:GetService("CoreGui"):FindFirstChild("ModernFlySystem"):Destroy() end -- ============================================================================= -- 1. INSTÂNCIAS DA INTERFACE (Design Moderno, Premium e Arredondado) -- ============================================================================= local ScreenGui = Instance.new("ScreenGui") local MainFrame = Instance.new("Frame") local UICorner = Instance.new("UICorner") local UIStroke = Instance.new("UIStroke") local Title = Instance.new("TextLabel") local SpeedLabel = Instance.new("TextLabel") local SpeedInput = Instance.new("TextBox") local UICornerInput = Instance.new("UICorner") local UIStrokeInput = Instance.new("UIStroke") local ToggleButton = Instance.new("TextButton") local UICornerButton = Instance.new("UICorner") ScreenGui.Name = "ModernFlySystem" ScreenGui.Parent = game:GetService("CoreGui") ScreenGui.ResetOnSpawn = false -- Janela Principal (Cantos suaves, sem quadrado feio) MainFrame.Name = "FlyWindow" MainFrame.Parent = ScreenGui MainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 28) MainFrame.Position = UDim2.new(0.05, 0, 0.4, 0) MainFrame.Size = UDim2.new(0, 190, 0, 160) MainFrame.Active = true MainFrame.Draggable = true UICorner.CornerRadius = UDim.new(0, 12) -- Bordas arredondadas e limpas UICorner.Parent = MainFrame UIStroke.Color = Color3.fromRGB(50, 50, 55) UIStroke.Thickness = 1.5 UIStroke.Parent = MainFrame -- Título Title.Parent = MainFrame Title.BackgroundTransparency = 1 Title.Size = UDim2.new(1, 0, 0, 35) Title.Font = Enum.Font.SourceSansBold Title.Text = "FLY CONTROLLER" Title.TextColor3 = Color3.fromRGB(240, 240, 245) Title.TextSize = 14 -- Texto explicativo da velocidade SpeedLabel.Parent = MainFrame SpeedLabel.BackgroundTransparency = 1 SpeedLabel.Position = UDim2.new(0, 0, 0.22, 0) SpeedLabel.Size = UDim2.new(1, 0, 0, 20) SpeedLabel.Font = Enum.Font.SourceSansSemibold SpeedLabel.Text = "Velocidade do Voo:" SpeedLabel.TextColor3 = Color3.fromRGB(150, 150, 155) SpeedLabel.TextSize = 13 -- Caixa de Entrada de Texto Arredondada (Velocidade) SpeedInput.Parent = MainFrame SpeedInput.BackgroundColor3 = Color3.fromRGB(35, 35, 38) SpeedInput.Position = UDim2.new(0.15, 0, 0.38, 0) SpeedInput.Size = UDim2.new(0.7, 0, 0, 28) SpeedInput.Font = Enum.Font.SourceSansBold SpeedInput.Text = "70" -- Velocidade padrão inicial SpeedInput.TextColor3 = Color3.fromRGB(255, 255, 255) SpeedInput.TextSize = 15 UICornerInput.CornerRadius = UDim.new(0, 6) UICornerInput.Parent = SpeedInput UIStrokeInput.Color = Color3.fromRGB(65, 65, 70) UIStrokeInput.Thickness = 1 UIStrokeInput.Parent = SpeedInput -- Botão de Ligar/Desligar Moderno ToggleButton.Parent = MainFrame ToggleButton.BackgroundColor3 = Color3.fromRGB(220, 55, 65) -- Vermelho fosco suave ToggleButton.Position = UDim2.new(0.1, 0, 0.65, 0) ToggleButton.Size = UDim2.new(0.8, 0, 0, 32) ToggleButton.Font = Enum.Font.SourceSansBold ToggleButton.Text = "DESLIGADO (E)" ToggleButton.TextColor3 = Color3.fromRGB(255, 255, 255) ToggleButton.TextSize = 13 UICornerButton.CornerRadius = UDim.new(0, 6) UICornerButton.Parent = ToggleButton -- ============================================================================= -- 2. LÓGICA DE VOO ESTÁVEL (Baseada na Engine Clássica do Infinite Yield) -- ============================================================================= local FLY_KEY = Enum.KeyCode.E local flySpeed = 70 local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local LocalPlayer = Players.LocalPlayer local Camera = workspace.CurrentCamera local flying = false local bg, bv local flyConnection -- Estrutura estável de chaves direcionais (Leitura nativa de PC) local ctrl = {f = 0, b = 0, l = 0, r = 0} UserInputService.InputBegan:Connect(function(input, gameProcessed) if gameProcessed then return end if input.KeyCode == Enum.KeyCode.W then ctrl.f = 1 end if input.KeyCode == Enum.KeyCode.S then ctrl.b = -1 end if input.KeyCode == Enum.KeyCode.A then ctrl.l = -1 end if input.KeyCode == Enum.KeyCode.D then ctrl.r = 1 end end) UserInputService.InputEnded:Connect(function(input) if input.KeyCode == Enum.KeyCode.W then ctrl.f = 0 end if input.KeyCode == Enum.KeyCode.S then ctrl.b = 0 end if input.KeyCode == Enum.KeyCode.A then ctrl.l = 0 end if input.KeyCode == Enum.KeyCode.D then ctrl.r = 0 end end) -- Sistema estável de braços fechados local function setArmsClosed(character) if not character then return end local ls = character:FindFirstChild("LeftShoulder", true) or character:FindFirstChild("Left Shoulder", true) local rs = character:FindFirstChild("RightShoulder", true) or character:FindFirstChild("Right Shoulder", true) if ls and rs then ls.Transform = CFrame.new(-0.2, -0.2, 0) * CFrame.Angles(0, 0, math.rad(-5)) rs.Transform = CFrame.new(0.2, -0.2, 0) * CFrame.Angles(0, 0, math.rad(5)) end end -- Motor Principal de Voo 3D Livre Relativo à Câmera local function startFly() local character = LocalPlayer.Character if not character or not character:FindFirstChild("HumanoidRootPart") then return end local hrp = character.HumanoidRootPart local humanoid = character:FindFirstChildOfClass("Humanoid") if humanoid then humanoid.PlatformStand = true end -- Inicializa instâncias físicas estáveis bg = Instance.new("BodyGyro") bg.maxTorque = Vector3.new(9e9, 9e9, 9e9) bg.P = 9e4 bg.cframe = hrp.CFrame bg.Parent = hrp bv = Instance.new("BodyVelocity") bv.maxForce = Vector3.new(9e9, 9e9, 9e9) bv.velocity = Vector3.new(0, 0, 0) bv.Parent = hrp -- Vincula o voo ao ciclo de renderização físico estável do Roblox flyConnection = RunService.RenderStepped:Connect(function() if not flying or not character:FindFirstChild("HumanoidRootPart") then return end setArmsClosed(character) bg.cframe = Camera.CFrame -- Se houver movimento nas teclas W,A,S,D calcula vetor 3D perfeito pela mira if ctrl.f + ctrl.b ~= 0 or ctrl.l + ctrl.r ~= 0 then bv.velocity = ((Camera.CFrame.LookVector * (ctrl.f + ctrl.b)) + (Camera.CFrame.RightVector * (ctrl.l + ctrl.r))).Unit * flySpeed else bv.velocity = Vector3.new(0, 0, 0) end -- Injeção Física Direta contra Dano de Queda (Bypass NDS Completo) if humanoid then humanoid.SetStateEnabled(Enum.HumanoidStateType.FallingDown, false) humanoid.SetStateEnabled(Enum.HumanoidStateType.Ragdoll, false) pcall(function() hrp.AssemblyLinearVelocity = bv.velocity end) end end) end local function stopFly() flying = false if flyConnection then flyConnection:Disconnect() flyConnection = nil end if bg then bg:Destroy() end if bv then bv:Destroy() end local character = LocalPlayer.Character if character then local humanoid = character:FindFirstChildOfClass("Humanoid") if humanoid then humanoid.PlatformStand = false humanoid.SetStateEnabled(Enum.HumanoidStateType.FallingDown, true) humanoid.SetStateEnabled(Enum.HumanoidStateType.Ragdoll, true) humanoid:ChangeState(Enum.HumanoidStateType.Running) end local hrp = character:FindFirstChild("HumanoidRootPart") if hrp then hrp.AssemblyLinearVelocity = Vector3.new(0, 0, 0) end end end -- Alternar Estado local function toggleFly() flying = not flying if flying then ToggleButton.Text = "LIGADO (E)" ToggleButton.BackgroundColor3 = Color3.fromRGB(45, 175, 105) -- Verde moderno startFly() else ToggleButton.Text = "DESLIGADO (E)" ToggleButton.BackgroundColor3 = Color3.fromRGB(220, 55, 65) stopFly() end end -- Ativações e Sincronização da Caixa de Texto ToggleButton.MouseButton1Click:Connect(toggleFly) UserInputService.InputBegan:Connect(function(input, gameProcessed) if gameProcessed then return end if input.KeyCode == FLY_KEY then toggleFly() end end) -- Aplica o valor numérico digitado instantaneamente no voo ativo SpeedInput.FocusLost:Connect(function() local numericValue = tonumber(SpeedInput.Text) if numericValue then flySpeed = numericValue else SpeedInput.Text = tostring(flySpeed) end end) -- Reseta segurança ao morrer LocalPlayer.CharacterAdded:Connect(function() stopFly() ToggleButton.Text = "DESLIGADO (E)" ToggleButton.BackgroundColor3 = Color3.fromRGB(220, 55, 65) ctrl = {f = 0, b = 0, l = 0, r = 0} end)