Docs
Rarx Pedmenu cover

Rarx Pedmenu

Rarx PedMenu

Admin-assignable PED system with per-player ped library, admin panel, and Discord webhooks

  • Qbox
  • QBCore
  • ESX
  • rarx_pedmenu

Overview#

RARX PedMenu is a standalone PED management system for FiveM. Admins assign custom PEDs to players; each player can then browse and apply their assigned PEDs from a dedicated menu. Includes a full admin panel for bulk management, 9 translated languages, a custom NUI (no dependencies on qb-menu / qb-input / ox_lib), and Discord webhook logging.

Features#

Multi-Framework

Auto-detection for QBCore, QBox (qbx_core), and ESX. No manual configuration required.

Player PED Library

Each player sees only the PEDs an admin has assigned to them, stored per citizen_id.

Admin Panel

Assign, edit, and remove PEDs for online or offline players from a central UI.

Custom Svelte-Free NUI

Fully custom HTML/CSS/JS interface — no qb-menu, qb-input, or ox_lib menu dependencies.

9 Languages

ES, EN, FR, DE, IT, PT, RU, JA, ZH — configurable per server via Config.Language.

Discord Webhooks

Separate webhook URLs for select / add / remove / edit PED actions with configurable colors.

ACE Permissions

Mix group-based (admin/god) and ACE permissions. Both paths are supported.

rarx_clothing Hook

Re-applies stored appearance via rarx_clothing after a PED change when available.

Requirements#

Requirement Type
oxmysql Required
QBCore / QBox (qbx_core) / ESX Required (auto-detected)
rarx_clothing Optional (preserves appearance when applying a PED)

Installation#

  1. Download & Extract

    Extract the resource into your server's resources/ folder.

  2. Import Database

    Run rarx_pedmenu.sql to create the rarx_pedmenu table.

    SQL
    CREATE TABLE IF NOT EXISTS `rarx_pedmenu` (
      `id` INT(11) NOT NULL AUTO_INCREMENT,
      `citizen_id` VARCHAR(50) NOT NULL,
      `ped_name` VARCHAR(100) NOT NULL,
      `ped_model` VARCHAR(100) NOT NULL,
      `assigned_by` VARCHAR(100) NOT NULL,
      `assigned_at` INT(11) NOT NULL,
      PRIMARY KEY (`id`),
      INDEX `idx_citizen_id` (`citizen_id`),
      INDEX `idx_ped_model` (`ped_model`)
    );
  3. Add to server.cfg

    server.cfg
    ensure rarx_pedmenu

    Ensure oxmysql and your framework start before this resource.

  4. Configure

    Edit shared/config.lua to set your language, commands, admin groups, and webhook URLs.

Configuration#

General#

Lua
Config = {
    Language  = 'es',     -- 'es', 'en', 'fr', 'de', 'it', 'pt', 'ru', 'ja', 'zh'
    Framework = 'auto',   -- 'auto', 'qbcore', 'qbox', 'esx'
}

Commands#

Lua
Config.Commands = {
    playerPeds = 'peds',          -- Open the player's own PED selector
    pedMenu    = 'rarxpedmenu',   -- Open the admin PED management panel
}

Permissions#

Lua
Config.AdminGroups     = { 'admin', 'superadmin', 'god' }
Config.ModeratorGroups = { 'moderator', 'mod' }
Config.AceEnabled      = true   -- Also accept ACE permissions (e.g. command.rarxpedmenu)

Discord Webhooks#

Lua
Config.Webhooks = {
    enabled   = false,
    selectPed = { url = '', color = 0x00ff00, enabled = true },
    addPed    = { url = '', color = 0x00ff00, enabled = true },
    removePed = { url = '', color = 0xff0000, enabled = true },
    editPed   = { url = '', color = 0xffaa00, enabled = true },
}

Debug#

Lua
Config.Debug = {
    enabled    = false,
    categories = {
        framework = true,  -- Framework detection
        database  = true,  -- DB queries
        player    = true,  -- Player actions (connect, select, assign)
        system    = true,  -- Resource lifecycle
    },
}

When Config.Debug.enabled = false, no debug messages are printed — only critical errors.

Commands#

Command Who Description
/peds Any player Opens the player's personal PED selector with their assigned PEDs
/rarxpedmenu Admin only Opens the admin panel to assign, edit, and remove PEDs for any player

Both command names are configurable via Config.Commands.

Debug-only commands#

Command Description
/reloadpeds Reload the PED cache from the database (admin)
/testwebhook <selectPed|addPed|removePed|editPed> Fire a test Discord webhook

Using the Player Menu#

  1. Player runs /peds
  2. The NUI opens and lists every PED an admin has assigned to them
  3. The player clicks a PED to apply it — the model is swapped on the player and the appearance (if any) is re-applied via rarx_clothing when available
  4. If the player has only one PED assigned, /peds applies it directly without opening the menu

Using the Admin Panel#

  1. Admin runs /rarxpedmenu
  2. The panel opens with three tabs:
    • My PEDs — the admin's own assigned PEDs
    • All PEDs — every player on the server with at least one PED assigned
    • Management — assign / edit / remove PEDs

Assigning a PED#

  1. Pick a player

    Choose from online players, or look up any citizen_id with previously-assigned PEDs.

  2. Enter PED details

    Provide a friendly Name and the GTA model hash (e.g. a_m_m_business_01).

  3. Confirm

    The PED is stored in the rarx_pedmenu table and the target player sees it on their next /peds.

Editing a PED#

Select any existing PED in the Management tab to rename it or swap the model. The table key is (citizen_id, ped_model) — editing the model updates the row in place.

Removing a PED#

Admins can remove any PED from any player. Confirmation is required before the row is deleted.

Localization#

Language is set via Config.Language in shared/config.lua. The language cannot be changed in-game — you must restart the resource after editing the config.

Code Language
es Español (default)
en English
fr Français
de Deutsch
it Italiano
pt Português
ru Русский
ja 日本語
zh 简体中文

Adding a new language#

  1. Duplicate en.json

    Copy locales/en.json to locales/<code>.json (e.g. nl.json).

  2. Translate

    Translate every string value. Leave keys untouched.

  3. Apply

    Set Config.Language = 'nl' and restart the resource.

Events API#

Server → Client#

Event Payload Description
rarx_pedmenu:client:OpenPlayerPedsMenu peds[] Open the player's personal PED menu
rarx_pedmenu:client:OpenPedsMenu peds, allPeds, isAdmin, playerData, onlinePlayers Open the admin panel
rarx_pedmenu:client:ApplyPedModel pedModel Apply the given model to the local ped
rarx_pedmenu:client:ShowNotification message, type Show a notification through Custom.Notify
rarx_pedmenu:client:LoadTranslations translations Push the active locale to the NUI
rarx_pedmenu:client:ShowOnlinePlayersForAssign players[] Populate the assign-player picker
rarx_pedmenu:client:ShowUsersWithPeds users[] Populate the "All PEDs" tab
rarx_pedmenu:client:ShowUserPedsForManagement citizenId, peds[] Populate management for a specific user
rarx_pedmenu:client:CloseMenu — Soft-close the NUI
rarx_pedmenu:client:ForceCloseMenu — Force-close the NUI

Client → Server#

Event Payload Description
rarx_pedmenu:server:OpenAdminMenu — Ask the server to open the admin menu (permission-checked)
rarx_pedmenu:server:GetPlayerPeds — Request the caller's own PED list
rarx_pedmenu:server:SelectPed pedModel Apply a PED the caller owns
rarx_pedmenu:server:AssignPedToPlayer citizenId, pedName, pedModel Admin: assign a PED
rarx_pedmenu:server:EditPed citizenId, oldModel, newName, newModel Admin: edit an existing PED
rarx_pedmenu:server:RemovePedFromPlayer citizenId, pedModel Admin: remove a PED
rarx_pedmenu:server:GetOnlinePlayersForAssign — Fetch online players for the assign picker
rarx_pedmenu:server:GetAllUsersWithPeds — Fetch all users with at least one assigned PED
rarx_pedmenu:server:GetUserPedsForManagement citizenId Fetch a specific user's PED list
rarx_pedmenu:server:RequestTranslations — Request the current locale strings

Database#

Single table: rarx_pedmenu

Column Type Description
id INT Auto-increment primary key
citizen_id VARCHAR(50) Player identifier (QB/QBox citizenid, ESX identifier)
ped_name VARCHAR(100) Friendly label shown in the UI
ped_model VARCHAR(100) GTA V ped model (e.g. a_m_m_business_01)
assigned_by VARCHAR(100) Admin identifier that created the row
assigned_at INT Unix timestamp

Indexes: citizen_id, ped_model.

Troubleshooting#

/peds does nothing

Make sure the player has at least one PED assigned (check the rarx_pedmenu table). If they do, enable Config.Debug.enabled = true and watch the console — IsServerReady / FrameworkReady / DBReady must all be true.

Admin command returns 'no permission'

Verify your group is in Config.AdminGroups. If you use ACE, also check Config.AceEnabled = true and that your ACE grant is correct (e.g. add_ace group.admin command.rarxpedmenu allow).

Appearance resets after changing PED

rarx_clothing must be running and its GetAppearanceData / SetAppearance exports available. Without it, the ped model is swapped but the appearance isn't re-applied.

NUI shows English even though Config.Language = 'es'

The locale file must exist in locales/<code>.json. Restart the resource after changing the config — the language is not hot-reloadable.

Webhooks not firing

Set Config.Webhooks.enabled = true and fill the url fields. Per-action enabled flags must also be true. Use /testwebhook <action> with Config.Debug.enabled = true to verify.