
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#
Auto-detection for QBCore, QBox (qbx_core), and ESX. No manual configuration required.
Each player sees only the PEDs an admin has assigned to them, stored per citizen_id.
Assign, edit, and remove PEDs for online or offline players from a central UI.
Fully custom HTML/CSS/JS interface — no qb-menu, qb-input, or ox_lib menu dependencies.
ES, EN, FR, DE, IT, PT, RU, JA, ZH — configurable per server via Config.Language.
Separate webhook URLs for select / add / remove / edit PED actions with configurable colors.
Mix group-based (admin/god) and ACE permissions. Both paths are supported.
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#
Download & Extract
Extract the resource into your server's
resources/folder.Import Database
Run
rarx_pedmenu.sqlto create therarx_pedmenutable.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`) );Add to server.cfg
ensure rarx_pedmenuEnsure
oxmysqland your framework start before this resource.Configure
Edit
shared/config.luato set your language, commands, admin groups, and webhook URLs.
Configuration#
General#
Config = {
Language = 'es', -- 'es', 'en', 'fr', 'de', 'it', 'pt', 'ru', 'ja', 'zh'
Framework = 'auto', -- 'auto', 'qbcore', 'qbox', 'esx'
}Commands#
Config.Commands = {
playerPeds = 'peds', -- Open the player's own PED selector
pedMenu = 'rarxpedmenu', -- Open the admin PED management panel
}Permissions#
Config.AdminGroups = { 'admin', 'superadmin', 'god' }
Config.ModeratorGroups = { 'moderator', 'mod' }
Config.AceEnabled = true -- Also accept ACE permissions (e.g. command.rarxpedmenu)Discord Webhooks#
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#
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#
- Player runs
/peds - The NUI opens and lists every PED an admin has assigned to them
- 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_clothingwhen available - If the player has only one PED assigned,
/pedsapplies it directly without opening the menu
Using the Admin Panel#
- Admin runs
/rarxpedmenu - 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#
Pick a player
Choose from online players, or look up any
citizen_idwith previously-assigned PEDs.Enter PED details
Provide a friendly
Nameand the GTAmodelhash (e.g.a_m_m_business_01).Confirm
The PED is stored in the
rarx_pedmenutable 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#
Duplicate en.json
Copy
locales/en.jsontolocales/<code>.json(e.g.nl.json).Translate
Translate every string value. Leave keys untouched.
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.
