--[[ AIR-WALK V5.2: CAMINO PERMANENTE + LIMPIEZA (SIN RESET) --]] local CONFIG = { Dimensiones = { Tamano = Vector3.new(6, 0.6, 6) }, Propiedades = { Material = Enum.Material.Neon, Color = Color3.fromRGB(0, 255, 255), TransparenciaInicial = 0.5, }, AjusteY = 3.2 } local Player = game.Players.LocalPlayer local RunService = game:GetService("RunService") local TweenService = game:GetService("TweenService") local UserInputService = game:GetService("UserInputService") local SistemaActivo = false local Minimizado = false local AlturaDeseada = 0 local ultimaPlataforma = nil local Character, Root local Folder = workspace:FindFirstChild("AirWalk_Folder") or Instance.new("Folder", workspace) Folder.Name = "AirWalk_Folder" local function ActualizarReferencias() Character = Player.Character or Player.CharacterAdded:Wait() Root = Character:WaitForChild("HumanoidRootPart") end ActualizarReferencias() Player.CharacterAdded:Connect(ActualizarReferencias) -- --- INTERFAZ --- local ScreenGui = Instance.new("ScreenGui", Player.PlayerGui) ScreenGui.Name = "AirWalk_Fixed" ScreenGui.ResetOnSpawn = false ScreenGui.IgnoreGuiInset = true local MainFrame = Instance.new("Frame", ScreenGui) MainFrame.Size = UDim2.new(0, 160, 0, 220) -- Tamaño reducido al quitar un botón MainFrame.Position = UDim2.new(0.5, -80, 0.5, -110) MainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30) MainFrame.BorderSizePixel = 0 MainFrame.ClipsDescendants = true MainFrame.Active = true Instance.new("UICorner", MainFrame) local TitleBar = Instance.new("TextButton", MainFrame) TitleBar.Size = UDim2.new(1, 0, 0, 35) TitleBar.Text = " AIR WALK PRO" TitleBar.TextColor3 = Color3.new(1, 1, 1) TitleBar.BackgroundColor3 = Color3.fromRGB(45, 45, 45) TitleBar.TextXAlignment = Enum.TextXAlignment.Left TitleBar.Font = Enum.Font.GothamBold TitleBar.TextSize = 12 TitleBar.AutoButtonColor = false Instance.new("UICorner", TitleBar) local MiniBtn = Instance.new("TextButton", TitleBar) MiniBtn.Size = UDim2.new(0, 30, 0, 30) MiniBtn.Position = UDim2.new(1, -32, 0, 2) MiniBtn.Text = "-" MiniBtn.BackgroundColor3 = Color3.fromRGB(60, 60, 60) MiniBtn.TextColor3 = Color3.new(1, 1, 1) MiniBtn.Font = Enum.Font.GothamBold Instance.new("UICorner", MiniBtn) -- --- LÓGICA DE ARRASTRAR (FIJADA) --- local dragging, dragInput, dragStart, startPos local function update(input) 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 TitleBar.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = MainFrame.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) TitleBar.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then dragInput = input end end) UserInputService.InputChanged:Connect(function(input) if dragging and input == dragInput then update(input) end end) -- --- BOTONES --- local ButtonContainer = Instance.new("Frame", MainFrame) ButtonContainer.Size = UDim2.new(1, 0, 1, -35) ButtonContainer.Position = UDim2.new(0, 0, 0, 35) ButtonContainer.BackgroundTransparency = 1 local List = Instance.new("UIListLayout", ButtonContainer) List.Padding = UDim.new(0, 5) List.HorizontalAlignment = Enum.HorizontalAlignment.Center Instance.new("UIPadding", ButtonContainer).PaddingTop = UDim.new(0, 10) local function crearBoton(texto, color) local btn = Instance.new("TextButton", ButtonContainer) btn.Size = UDim2.new(0, 140, 0, 35) -- Un poco más altos para llenar mejor el espacio btn.Text = texto btn.BackgroundColor3 = color btn.TextColor3 = Color3.new(1, 1, 1) btn.Font = Enum.Font.GothamSemibold btn.TextSize = 11 Instance.new("UICorner", btn) return btn end local btnToggle = crearBoton("ESTADO: OFF", Color3.fromRGB(180, 50, 50)) local btnSubir = crearBoton("↑ SUBIR (Q)", Color3.fromRGB(40, 120, 180)) local btnBajar = crearBoton("↓ BAJAR (E)", Color3.fromRGB(130, 60, 160)) local btnClear = crearBoton("LIMPIAR CAMINO", Color3.fromRGB(200, 0, 0)) -- Minimizar MiniBtn.MouseButton1Click:Connect(function() Minimizado = not Minimizado local targetSize = Minimizado and UDim2.new(0, 160, 0, 35) or UDim2.new(0, 160, 0, 220) MiniBtn.Text = Minimizado and "+" or "-" TweenService:Create(MainFrame, TweenInfo.new(0.3), {Size = targetSize}):Play() end) -- Lógica de Funciones btnToggle.MouseButton1Click:Connect(function() SistemaActivo = not SistemaActivo btnToggle.Text = SistemaActivo and "ESTADO: ON" or "ESTADO: OFF" btnToggle.BackgroundColor3 = SistemaActivo and Color3.fromRGB(40, 180, 100) or Color3.fromRGB(180, 50, 50) if SistemaActivo then AlturaDeseada = Root.Position.Y - CONFIG.AjusteY end end) btnSubir.MouseButton1Click:Connect(function() AlturaDeseada = AlturaDeseada + 3 end) btnBajar.MouseButton1Click:Connect(function() AlturaDeseada = AlturaDeseada - 3 end) btnClear.MouseButton1Click:Connect(function() Folder:ClearAllChildren() ultimaPlataforma = nil end) -- Atajos UserInputService.InputBegan:Connect(function(i, gpe) if gpe then return end if i.KeyCode == Enum.KeyCode.Q then AlturaDeseada = AlturaDeseada + 3 elseif i.KeyCode == Enum.KeyCode.E then AlturaDeseada = AlturaDeseada - 3 end end) -- Bucle de construcción RunService.Heartbeat:Connect(function() if not SistemaActivo or not Root then return end local pos = Root.Position local platformPos = Vector3.new(pos.X, AlturaDeseada, pos.Z) if not ultimaPlataforma or (Vector2.new(pos.X, pos.Z) - Vector2.new(ultimaPlataforma.Position.X, ultimaPlataforma.Position.Z)).Magnitude > 3 then local p = Instance.new("Part") p.Size = CONFIG.Dimensiones.Tamano p.Position = platformPos p.Anchored = true p.Material = CONFIG.Propiedades.Material p.Color = CONFIG.Propiedades.Color p.Transparency = CONFIG.Propiedades.TransparenciaInicial p.Parent = Folder ultimaPlataforma = p end end)