addons.json
The addons.json file (located in resources\vMenu\config\) is where you tell vMenu about the custom content you’ve added to your server. It has five sections:
vehicles,pedsandweaponsput your addon models into vMenu’s addon submenus.weapon_componentsadds your streamed weapon components to the weapons that accept them.extra_blendable_facesnames any custom blendable heads you’ve installed, so they show up in the MP Character inheritance menu.
Removing sections
Section titled “Removing sections”In this file you can list all your addon models. If you want to remove all addon models from one of the categories below, simply set that category to []. For example, to remove all models, set each category to the following:
{ "vehicles": [], "peds": [], "weapons": []}Adding models
Section titled “Adding models”If you want to add new models, simply add a comma after the last row in a specific category, add a new line below, and just copy the format from the line above, replacing the name with your new name. For example, here I’ve added 4 more cars, 1 more ped and 5 more weapons:
{ "vehicles": [ "addonvehiclename1", "addonvehiclename2", "addonvehiclename3", "addonvehiclename4", "addonvehiclename5", "addonvehiclename6" ], "peds": [ "addonpedname1", "addonpedname2", "addonpedname3" ], "weapons": [ "addonweaponname1", "addonweaponname2", "addonweaponname3", "addonweaponname4", "addonweaponname5", "addonweaponname6", "addonweaponname7" ], "weapon_components": [ "weapon_component_name_1", "weapon_component_name_2" ]}Weapon components
Section titled “Weapon components”The weapon_components section is for addon (streamed) weapon components, things like custom scopes, clips and suppressors. You only need it for components you’ve added yourself, every base game component is already built in to vMenu.
Just list the component names:
{ "weapon_components": [ "COMPONENT_MYRIFLE_SCOPE_01", "COMPONENT_MYRIFLE_CLIP_02", "COMPONENT_MYPISTOL_SUPP" ]}You don’t have to say which weapon each component belongs to. vMenu checks every component in this list against every weapon it knows about, base game and addon weapons alike, and each one automatically shows up as a toggle in the menus of the weapons that actually accept it. Components that don’t match any weapon simply never appear, so if one of yours doesn’t show up, double check that the name matches the one in your weapon’s meta files exactly.
Blendable faces
Section titled “Blendable faces”The extra_blendable_faces section is used to add custom (streamed) blendable heads to the Parent #1 and Parent #2 lists in the MP Character inheritance menu.
If you’ve installed an add-on head pack on your server, the heads are already there as far as the game is concerned, but vMenu has no way of knowing what they’re called. This section is where you give them names:
{ "extra_blendable_faces": [ "Custom Head 1", "Custom Head 2", "Custom Head 3", "Custom Head 4", "Custom Head 5" ]}These entries are labels only. vMenu doesn’t check them against anything, so you can name them whatever makes sense for your server.
Order matters
Section titled “Order matters”This is the important bit. Each entry is matched to a head by its position in the list, continuing on from where the base game heads stop.
A stock server has 46 blendable parent heads, numbered 0 to 45. So your first entry is head 46, your second is head 47, and so on. If your head pack occupies IDs 46 to 50, the example above is correct, and "Custom Head 1" is head 46.
If your entries are in a different order to the head IDs your pack actually uses, the names in the menu will point at the wrong faces. Adding, removing or reordering entries later shifts everything below them, so keep the list in the same order as your pack.
Skin tones
Section titled “Skin tones”Custom faces show up in the Parent #1 and Parent #2 lists, but deliberately not in the Parent #1 Skin and Parent #2 Skin lists. Skin tones always come from the base game heads.
That’s why those are four separate options rather than two. Face shape and skin tone are picked independently, and then blended with the two sliders below them:
- Head Shape Mix blends the face shape between Parent #1 and Parent #2.
- Body Skin Mix blends the skin tone between Parent #1’s skin and Parent #2’s skin.
So you can give a character a custom head shape while still using a base game skin tone, which is exactly what you want, since a streamed head model doesn’t come with its own skin textures. For the underlying game side of this, see the SetPedHeadBlendData native.
Renaming vehicles
Section titled “Renaming vehicles”Vehicles cannot be renamed through vMenu. While this would be fairly easy to add, it is not the recommended way to name vehicles, so vMenu intentionally does not include an option for it. The recommended approach is to add vehicle names properly. To properly set a vehicle’s name, follow the easy steps below:
-
Go to the
vehicles.metafile for your vehicle, set the<gameName>MODELNAME</gameName>entry to the vehicle model name. Do NOT enter a custom name in there. For example, if my addonvehicle is calledmgtin-game (shows up asmgtin the addons vehicle spawner/you spawn it by typingmgtin the spawn by name function) then set thegameNametomgtin thevehicles.metafile. -
Go to the
fxmanifest.lua(previously__resource.lua) of your vehicle resource, and add a newclient_script, you can name it whatever you want. For now I’ll useveh_names.lua, so it should look like this:client_script 'veh_names.lua'. -
Create the file you just listed in the
fxmanifest.lua(previously__resource.lua) in your vehicle resource folder:veh_names.lua. -
In that lua file, paste the following:
Citizen.CreateThread(function()AddTextEntry("MODELNAME", "The Display Name You Want Your Vehicle To Appear As, Enter That Name Here")end) -
Now change the
"MODELNAME"to your vehicle’s spawn name (the same name that you set as thegameNamein the vehicles.meta file.) In this case:"mgt". -
Now change the display name. Enter it in the second parameter of the
AddTextEntrycall, in place of the placeholder text. -
The final result should be something like this:
Citizen.CreateThread(function()AddTextEntry("mgt", "Mustang GT")end) -
Do this for every vehicle you have/want to set a custom name for, for example, if I wanted to also do
focusrsandbmwm5. I’d do it like this:Citizen.CreateThread(function()AddTextEntry("mgt", "Mustang GT")AddTextEntry("focusrs", "Focus RS")AddTextEntry("bmwm5", "BMW M5")end)
Default addons.json
Section titled “Default addons.json”{ "vehicles": [ "addonvehiclename1", "addonvehiclename2" ], "peds": [ "addonpedname1", "addonpedname2" ], "extra_blendable_faces": [], "weapons": [ "addonweaponname1", "addonweaponname2" ], "weapon_components": [ "weapon_component_name_1", "weapon_component_name_2" ]}Appreciate my work?
Section titled “Appreciate my work?”Consider supporting me on Patreon!
