
Key Required VerifiedUniversal

--[[
TRI-MENU V6.1:
1. Air Walk (Vuelo por plataformas)
2. Path Builder (Caminos Personalizados)
--]]
local Player = game.Players.LocalPlayer
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
-- --- CONFIGURACIÓN Y ESTADO ---
local Estado = {
AirWalk = false,
AlturaDeseada = 0,
UltimaPlataforma = nil
}
-- Carpetas de almacenamiento
local function GetFolder(name)
local f = workspace:FindFirstChild(name) or Instance.new("Folder", workspace)
f.Name = name
return f
end
local Folders = {
AirWalk = GetFolder("Storage_AirWalk"),
Path = GetFolder("Storage_Paths")
}
-- --- INTERFAZ PRINCIPAL ---
local ScreenGui = Instance.new("ScreenGui", Player.PlayerGui)
ScreenGui.Name = "TriMenu_V6_Mod"
ScreenGui.ResetOnSpawn = false
local MainFrame = Instance.new("Frame", ScreenGui)
MainFrame.Size = UDim2.new(0, 180, 0, 280)
MainFrame.Position = UDim2.new(0.5, -90, 0.4, 0)
MainFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
MainFrame.BorderSizePixel = 0
MainFrame.Active = true
MainFrame.ClipsDescendants = true
Instance.new("UICorner", MainFrame).CornerRadius = UDim.new(0, 10)
-- Barra de Título (Arrastrable)
local TitleBar = Instance.new("TextButton", MainFrame)
TitleBar.Size = UDim2.new(1, 0, 0, 35)
TitleBar.Text = " TRI-MENU V6.1"
TitleBar.TextColor3 = Color3.new(1, 1, 1)
TitleBar.BackgroundColor3 = Color3.fromRGB(30, 30, 35)
TitleBar.Font = Enum.Font.GothamBold
TitleBar.TextSize = 12
TitleBar.AutoButtonColor = false
TitleBar.TextXAlignment = Enum.TextXAlignment.Left
Instance.new("UICorner", TitleBar)
local MiniBtn = Instance.new("TextButton", TitleBar)
MiniBtn.Size = UDim2.new(0, 25, 0, 25)
MiniBtn.Position = UDim2.new(1, -30, 0, 5)
MiniBtn.Text = "-"
MiniBtn.BackgroundColor3 = Color3.fromRGB(50, 50, 55)
MiniBtn.TextColor3 = Color3.new(1, 1, 1)
Instance.new("UICorner", MiniBtn)
-- Lógica de Arrastre
local dragging, dragStart, startPos
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
local releaseConnection
releaseConnection = UserInputService.InputEnded:Connect(function(endInput)
if endInput.UserInputType == Enum.UserInputType.MouseButton1 or endInput.UserInputType == Enum.UserInputType.Touch then
dragging = false
releaseConnection:Disconnect()
end
end)
end
end)
UserInputService.InputChanged:Connect(function(input)
if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) 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)
-- --- BARRA DE PESTAÑAS (AJUSTADA A 2) ---
local TabBar = Instance.new("Frame", MainFrame)
TabBar.Size = UDim2.new(1, 0, 0, 30)
TabBar.Position = UDim2.new(0, 0, 0, 35)
TabBar.BackgroundColor3 = Color3.fromRGB(25, 25, 30)
TabBar.BorderSizePixel = 0
local function CreateTabBtn(txt, pos)
local b = Instance.new("TextButton", TabBar)
b.Size = UDim2.new(0.5, 0, 1, 0) -- 50% de ancho cada una
b.Position = UDim2.new(pos, 0, 0, 0)
b.Text = txt
b.BackgroundColor3 = Color3.fromRGB(35, 35, 40)
b.TextColor3 = Color3.fromRGB(200, 200, 200)
b.Font = Enum.Font.GothamBold
b.TextSize = 10
b.BorderSizePixel = 0
return b
end
local btnTab1 = CreateTabBtn("WALK", 0)
local btnTab2 = CreateTabBtn("PATH", 0.5)
-- Contenedores de Pestañas
local Pages = Instance.new("Frame", MainFrame)
Pages.Size = UDim2.new(1, 0, 1, -65)
Pages.Position = UDim2.new(0, 0, 0, 65)
Pages.BackgroundTransparency = 1
local function CreatePage()
local p = Instance.new("Frame", Pages)
p.Size = UDim2.new(1, 0, 1, 0)
p.BackgroundTransparency = 1
p.Visible = false
local l = Instance.new("UIListLayout", p)
l.Padding = UDim.new(0, 5)
l.HorizontalAlignment = Enum.HorizontalAlignment.Center
Instance.new("UIPadding", p).PaddingTop = UDim.new(0, 10)
return p
end
local pageWalk = CreatePage()
local pagePath = CreatePage()
local function ShowPage(page)
pageWalk.Visible = false; pagePath.Visible = false
page.Visible = true
end
ShowPage(pageWalk)
btnTab1.MouseButton1Click:Connect(function() ShowPage(pageWalk) end)
btnTab2.MouseButton1Click:Connect(function() ShowPage(pagePath) end)
-- --- COMPONENTES UI REUTILIZABLES ---
local function UI_Button(txt, col, parent)
local b = Instance.new("TextButton", parent)
b.Size = UDim2.new(0, 160, 0, 32)
b.Text = txt
b.BackgroundColor3 = col
b.TextColor3 = Color3.new(1, 1, 1)
b.Font = Enum.Font.GothamSemibold
b.TextSize = 10
Instance.new("UICorner", b)
return b
end
local function UI_Input(ph, parent)
local i = Instance.new("TextBox", parent)
i.Size = UDim2.new(0, 160, 0, 30)
i.PlaceholderText = ph
i.Text = ""
i.BackgroundColor3 = Color3.fromRGB(40, 40, 45)
i.TextColor3 = Color3.new(1, 1, 1)
i.Font = Enum.Font.Gotham
i.TextSize = 11
Instance.new("UICorner", i)
return i
end
-- --- 1. LÓGICA AIR WALK ---
local btnAW_Toggle = UI_Button("ESTADO: OFF", Color3.fromRGB(150, 50, 50), pageWalk)
UI_Button("↑ SUBIR (Q)", Color3.fromRGB(45, 130, 180), pageWalk).MouseButton1Click:Connect(function() Estado.AlturaDeseada += 3 end)
UI_Button("↓ BAJAR (E)", Color3.fromRGB(120, 60, 150), pageWalk).MouseButton1Click:Connect(function() Estado.AlturaDeseada -= 3 end)
UI_Button("LIMPIAR", Color3.fromRGB(80, 80, 80), pageWalk).MouseButton1Click:Connect(function() Folders.AirWalk:ClearAllChildren() end)
btnAW_Toggle.MouseButton1Click:Connect(function()
Estado.AirWalk = not Estado.AirWalk
btnAW_Toggle.Text = Estado.AirWalk and "ESTADO: ON" or "ESTADO: OFF"
btnAW_Toggle.BackgroundColor3 = Estado.AirWalk and Color3.fromRGB(50, 150, 80) or Color3.fromRGB(150, 50, 50)
if Estado.AirWalk and Player.Character and Player.Character:FindFirstChild("HumanoidRootPart") then
Estado.AlturaDeseada = Player.Character.HumanoidRootPart.Position.Y - 3.2
else
Folders.AirWalk:ClearAllChildren()
end
end)
-- --- 2. LÓGICA PATH BUILDER ---
local inPathLargo = UI_Input("Largo del Camino", pagePath)
local inPathAncho = UI_Input("Ancho del Camino", pagePath)
UI_Button("GENERAR CAMINO", Color3.fromRGB(100, 50, 150), pagePath).MouseButton1Click:Connect(function()
local root = Player.Character and Player.Character:FindFirstChild("HumanoidRootPart")
if not root then return end
local p = Instance.new("Part", Folders.Path)
local l, a = tonumber(inPathLargo.Text) or 100, tonumber(inPathAncho.Text) or 15
p.Size = Vector3.new(a, 1, l); p.Anchored = true; p.Material = Enum.Material.Neon
p.Color = Color3.fromRGB(150, 100, 255)
p.CFrame = root.CFrame * CFrame.new(0, -3.2, -l/2)
end)
UI_Button("BORRAR CAMINOS", Color3.fromRGB(150, 50, 50), pagePath).MouseButton1Click:Connect(function() Folders.Path:ClearAllChildren() end)
-- --- BUCLE PRINCIPAL (AIR WALK) ---
RunService.Heartbeat:Connect(function()
if not Estado.AirWalk then return end
local root = Player.Character and Player.Character:FindFirstChild("HumanoidRootPart")
if not root then return end
local pos = root.Position
if not Estado.UltimaPlataforma or (Vector2.new(pos.X, pos.Z) - Vector2.new(Estado.UltimaPlataforma.Position.X, Estado.UltimaPlataforma.Position.Z)).Magnitude > 2.5 then
if Estado.UltimaPlataforma then
local old = Estado.UltimaPlataforma
TweenService:Create(old, TweenInfo.new(0.5), {Transparency = 1, Size = Vector3.new(0,0,0)}):Play()
game.Debris:AddItem(old, 0.5)
end
local p = Instance.new("Part", Folders.AirWalk)
p.Size = Vector3.new(6, 0.6, 6); p.Anchored = true; p.Material = Enum.Material.Neon
p.Color = Color3.fromRGB(0, 255, 255); p.Transparency = 0.4
p.Position = Vector3.new(pos.X, Estado.AlturaDeseada, pos.Z)
Estado.UltimaPlataforma = p
end
end)
-- Minimizar
local Minimizado = false
MiniBtn.MouseButton1Click:Connect(function()
Minimizado = not Minimizado
TweenService:Create(MainFrame, TweenInfo.new(0.3), {Size = Minimizado and UDim2.new(0, 180, 0, 35) or UDim2.new(0, 180, 0, 280)}):Play()
MiniBtn.Text = Minimizado and "+" or "-"
Pages.Visible = not Minimizado
TabBar.Visible = not Minimizado
end)
-- Teclas rápidas
UserInputService.InputBegan:Connect(function(input, gpe)
if gpe then return end
if input.KeyCode == Enum.KeyCode.Q then Estado.AlturaDeseada += 3
elseif input.KeyCode == Enum.KeyCode.E then Estado.AlturaDeseada -= 3 end
end)



@Shadow69 blud 💀