Generador de caminos
Key RequiredUniversal

Generador de caminos

Universal ScriptzSUO9hv1H62ju9ZzSUO9hv1H62ju9Z 618 views 810 executesUpdated Feb 11, 2026
2.5/ 5(2 votes)
1150% Positive
Lua Script•234 lines (8945 chars)
--[[
    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)

Features & Information

Primer apartado caminas sobre el aire bajas y subes donde pisas se mantiene Segundo apartado generas caminos segun que si lo quieres largo y de ancho personalizado

Community Comments (1)

I6996II6996IFeb 11, 2026

@Shadow69 blud 💀

More Scripts for Universal Scripts