ADVANCED & Customizable Radial Menu Rust Style [ESX/QB-Core/Standalone]

A script by FurkanHD

No reviews yet.
ADVANCED & Customizable Radial Menu Rust Style [ESX/QB-Core/Standalone] main image

Full Description

0704(2)

Hello, FiveM community!

Today, I’m excited to introduce vust_menu , a highly advanced, fully customizable, and performance-optimized radial menu system inspired by the intuitive UI of games like Rust. Whether you need a dynamic building menu, a sleek emote wheel, a police equipment selector, or any other interactive circular menu, vust_menu provides a powerful and standalone foundation for your server.

This is not just another radial menu; it’s a complete framework designed for developers and server owners who demand flexibility, style, and ease of use.

Showcase : Youtube




:sparkles: Core Features

  • Standalone by Default: Works out-of-the-box without requiring ESX, QB-Core, or any other framework.

  • Highly Performant: Optimized code ensures zero performance impact, running at 0.00ms when idle and minimally when active.

  • Fully Responsive & Dynamic: The menu automatically adjusts the size and layout of items based on the number of items (from 1 to 12 per page), ensuring a clean look every time.

  • Advanced Pagination System:

    • Effortlessly display more than 12 items. If you provide a list of 20, 30, or even 100 items, the script automatically creates pages.

    • Navigate between pages intuitively using on-screen buttons or configurable Q/E keys .

  • Configurable Theming (Light/Dark Mode):

    • Switch between a sleek dark mode and an authentic, warm ivory/light mode with a single setting in the config.lua.

    • All colors are controlled via CSS variables, making it incredibly easy for you to create your own custom themes.

  • Rust-Style Highlighting:

    • Smooth, sliding hover effect that accurately follows the mouse over each slice.

    • Disabled items are clearly marked with a distinct, non-interactive grey slice, just like in Rust.

  • Integrated Sound Effects:

    • Customizable sound effects for opening, closing, selecting, and changing pages, enhancing the user experience.
  • Movement While Open: Players can walk, run, jump, and look around while the menu is active, allowing for seamless interaction without being locked in place.


:hammer_and_wrench: For Developers: Unmatched Flexibility & Integration

The true power of vust_menu lies in its developer-friendly architecture. It’s designed to be the central UI service for all your other scripts.

Powerful Export System

You can control the entire menu from any other client-side script using simple and powerful exports:

  1. exports.vust_menu:OpenRadialMenu(menuData)
  • This is the core function. Simply pass it a Lua table of your items, and the menu will open with them. You can create completely dynamic menus on the fly.

  • Example: Creating a Police Equipment Menu

-- in your police script (e.g., client/main.lua)

local policeItems = {
    { id = 'vest', name = 'Armor', desc = 'Equip a kevlar vest.', icon = '<svg>...</svg>', triggerEvent = 'police:equip', item = 'armor' },
    { id = 'spike_strips', name = 'Spike Strips', desc = 'Deploy spike strips.', icon = '<svg>...</svg>', triggerEvent = 'police:deploy', item = 'spikestrip' },
    -- ... more items
}

exports.vust_menu:OpenRadialMenu(policeItems)
  1. exports.vust_menu:CloseRadialMenu()
  • Closes the menu from any script. Useful for when a player enters a vehicle or an action is completed.

Dynamic Event Triggering System

This is the most powerful feature. You don’t need to modify vust_menu to add new functionality. Each item in your menu table can define its own event to trigger upon selection.

  • How it works: Add a triggerEvent key to any menu item. When that item is clicked, vust_menu will trigger that client-side event and pass the entire item’s data table as an argument.

  • Example: An Emote Menu

    • 1. Define your menu in your emote script:
-- in your emote script (e.g., client/main.lua)
local emoteItems = {
    { 
        id = 'dance', 
        name = 'Dance', 
        icon = '<svg>...</svg>', 
        triggerEvent = 'emotes:play', -- The event to trigger
        animDict = 'anim@amb@nightclub@dancers@podium_dancers@', -- Custom data
        animName = 'hi_dance_facedj_09_v2_female^1' -- Custom data
    },
    {
        id = 'wave',
        name = 'Wave',
        icon = '<svg>...</svg>',
        triggerEvent = 'emotes:play',
        animDict = 'anim@mp_player_intcelebrationfemale@wave',
        animName = 'wave'
    }
}

exports.vust_menu:OpenRadialMenu(emoteItems)
  • 2. Listen for the event in the same script:
-- in your emote script (e.g., client/main.lua)
AddEventHandler('emotes:play', function(itemData)
    -- itemData is the full table: { id='dance', name='Dance', ..., animDict='...', animName='...' }
    print("Playing emote: " .. itemData.animName)
    RequestAnimDict(itemData.animDict)
    -- ... your animation logic here ...
end)

This system makes vust_menu infinitely expandable without ever touching its core files.


:gear: Easy Configuration

All major settings are located in a single, easy-to-understand config.lua file.

Config = {}

-- Set to true for the dark theme, false for the light/ivory theme.
Config.DarkMode = true

-- The maximum number of items to display on a single page.
-- Recommended: 8, 10, or 12 for the best visual balance.
Config.MaxItemsPerPage = 12 

-- The text labels displayed on the pagination buttons in the UI.
Config.Keys = {
    Next = 'E',
    Previous = 'Q',
}

:package: What You Get

  • The full, unencrypted vust_menu script (HTML/CSS/JS/LUA).

  • A clean and well-commented config.lua file.

  • Example usage within the script (/testmenu command) to demonstrate features like pagination and disabled items.

  • Full support for installation and configuration.


This resource is perfect for servers looking to add a professional, modern, and highly functional UI element that can be adapted for countless purposes.

VUST Game Mode (Rust inspired, With custom map): Discord

Buy Now !
Open Source https://furkans-workshop.tebex.io/package/6923426
Encrypted https://furkans-workshop.tebex.io/package/6917678

My discord : furkann789

Thank you for your interest! If you have any questions, feel free to ask below.

Code is accessible Yes
Subscription-based No
Lines (approximately) 342 lua, 234 js
Requirements no
Support Yes

Config Merger
Have you tried Config Merger? Merge your configs easily