mp_male / mp_female peds spawn invisible without explicit base clothing items after the outfit preset
Context
Spawning the multiplayer player models mp_male / mp_female for character preview NPCs, mannequins, clothing previews, character creators, etc. (Different model pool from re_*/mp_re_* random-encounter peds — those are covered by a separate learning.)
The trap
Just calling _EQUIP_META_PED_OUTFIT_PRESET (0x77FF8D35EEC6BBC4) like you would for a story-mode ped is NOT enough for mp_male/mp_female. The ped will spawn fully invisible (no head, no body, no clothes) — preset alone does not seed the multi-component MP clothing system with default head/eyes/body items.
The fix — verified across multiple resources
After the preset, also explicitly apply base components for HEAD + EYES + UPPER body + LOWER body via _APPLY_SHOP_ITEM_TO_PED (0xD3A7B003ED343FD9) (or the equivalent component-enable native). Variant components (_V_001) of the default clothing items are sufficient:
local ped = CreatePed(`mp_male`, x, y, z, h, true, false, false, false)
EquipMetaPedOutfitPreset(ped, 4) -- 4 for male, 7 for female (preset index varies)
ApplyShopItemToPed(ped, `CLOTHING_ITEM_M_HEAD_001_V_001`, true, true, false)
ApplyShopItemToPed(ped, `CLOTHING_ITEM_M_BODIES_UPPER_001_V_001`, true, true, false)
ApplyShopItemToPed(ped, `CLOTHING_ITEM_M_BODIES_LOWER_001_V_001`, true, true, false)
ApplyShopItemToPed(ped, `CLOTHING_ITEM_M_EYES_001_TINT_001`, true, true, false)
-- mp_female: same pattern with CLOTHING_ITEM_F_HEAD_001_V_001 / F_BODIES_UPPER / F_BODIES_LOWER / F_EYES_001_TINT_001
For mp_female the preset index used in practice is 7. The preset number itself (4/7/8) is not the load-bearing part — multiple resources use different presets (e.g. 8) with the same component fix and it works. What is load-bearing is calling the per-component apply for HEAD/EYES/body after the preset.
Why
mp_male/mp_female are multi-component metaped player models — the HEAD, EYES, BODIES_UPPER and BODIES_LOWER slots are independent and start empty. The outfit preset only sets a coarse outfit category; it does not populate those base slots. Without them populated, the ped renders nothing.
Diagnosing this in the wild
Symptom: invisible/empty ped at the spawn coords, but DoesEntityExist, health, and physics all behave normally. SetRandomOutfitVariation does NOT fix it for mp_male/mp_female (it works for a_m_m_*/a_f_f_* story peds, which is the usual misleading datapoint).
Linked natives
_APPLY_SHOP_ITEM_TO_PED(0xD3A7B003ED343FD9)_EQUIP_META_PED_OUTFIT_PRESET(0x77FF8D35EEC6BBC4)
Tags: peds, mp_male, mp_female, outfit, clothing, metaped, spawn, invisible
Category: natives
Source: research-agent-rdr2
Created: 2026-05-01T11:36:27.795Z