GTA5 - Metadata Clothes

Description

L’idée de cet article est un processus qui permet de comprendre où et comment fonctionne les vêtements (on part du concept des chaussures à talon qui ont la nécessité d’avoir quelques fichiers en plus).

Contenu du dossier de mods

.:
total 0
drwxrwxrwx 1 beta beta 4096 Aug  9 11:04 .
drwxrwxrwx 1 beta beta 4096 Aug  9 11:04 ..
-rwxrwxrwx 1 beta beta  206 Aug  9 11:04 fxmanifest.lua
-rwxrwxrwx 1 beta beta  429 Aug  9 11:04 mp_f_freemode_01_mp_f_soz_custom2.meta
drwxrwxrwx 1 beta beta 4096 Aug  9 11:04 stream

./stream:
total 4
drwxrwxrwx 1 beta beta 4096 Aug  9 11:04 .
drwxrwxrwx 1 beta beta 4096 Aug  9 11:04 ..
drwxrwxrwx 1 beta beta 4096 Aug  9 11:04 creaturemetadata
drwxrwxrwx 1 beta beta 4096 Aug  9 11:04 mp_f_freemode_01_mp_f_soz_custom2
-rwxrwxrwx 1 beta beta  787 Aug  9 11:04 mp_f_freemode_01_mp_f_soz_custom2.ymt

./stream/creaturemetadata:
total 0
drwxrwxrwx 1 beta beta 4096 Aug  9 11:04 .
drwxrwxrwx 1 beta beta 4096 Aug  9 11:04 ..
-rwxrwxrwx 1 beta beta  346 Aug  9 11:04 mp_creaturemetadata_soz_custom.ymt

./stream/mp_f_freemode_01_mp_f_soz_custom2: # fichiers stream
total 412
drwxrwxrwx 1 beta beta  4096 Aug  9 11:04  .
drwxrwxrwx 1 beta beta  4096 Aug  9 11:04  ..
-rwxrwxrwx 1 beta beta 49624 Aug  9 10:56 'mp_f_freemode_01_mp_f_soz_custom2^feet_000_u.ydd'
-rwxrwxrwx 1 beta beta 39256 Aug  9 10:56 'mp_f_freemode_01_mp_f_soz_custom2^feet_diff_000_a_uni.ytd'
-rwxrwxrwx 1 beta beta 39410 Aug  9 10:56 'mp_f_freemode_01_mp_f_soz_custom2^feet_diff_000_b_uni.ytd'
-rwxrwxrwx 1 beta beta 39796 Aug  9 10:56 'mp_f_freemode_01_mp_f_soz_custom2^feet_diff_000_c_uni.ytd'
-rwxrwxrwx 1 beta beta 40518 Aug  9 10:56 'mp_f_freemode_01_mp_f_soz_custom2^feet_diff_000_d_uni.ytd'
-rwxrwxrwx 1 beta beta 34651 Aug  9 10:56 'mp_f_freemode_01_mp_f_soz_custom2^feet_diff_000_e_uni.ytd'
-rwxrwxrwx 1 beta beta 38474 Aug  9 10:56 'mp_f_freemode_01_mp_f_soz_custom2^feet_diff_000_f_uni.ytd'
-rwxrwxrwx 1 beta beta 39432 Aug  9 10:56 'mp_f_freemode_01_mp_f_soz_custom2^feet_diff_000_g_uni.ytd'
-rwxrwxrwx 1 beta beta 39501 Aug  9 10:56 'mp_f_freemode_01_mp_f_soz_custom2^feet_diff_000_h_uni.ytd'
-rwxrwxrwx 1 beta beta 41219 Aug  9 10:56 'mp_f_freemode_01_mp_f_soz_custom2^feet_diff_000_i_uni.ytd'

fxmanifest.lua

fx_version 'cerulean'
game { 'gta5' }

files {
  'mp_f_freemode_01_mp_f_soz_custom2.meta'
}

data_file 'SHOP_PED_APPAREL_META_FILE' 'mp_f_freemode_01_mp_f_soz_custom2.meta'

mp_f_freemode_01_mp_f_soz_custom2.meta

Ce fichier permet de définir le DLC et le contenu apporté au serveur fiveM pour appeler tout le contenu des vêtements.

<?xml version="1.0" encoding="UTF-8"?>
<ShopPedApparel>
	<pedName>mp_f_freemode_01</pedName> <!-- On défini le sexe du DLC -->
    <!-- mp_f : female -->
    <!-- mp_m : male -->
	<dlcName>mp_f_soz_custom2</dlcName> <!-- Nom du DLC -->
	<fullDlcName>mp_f_freemode_01_mp_f_soz_custom2</fullDlcName> <!-- Nom du DLC au complet et doit avoir le nom complet du .ymt dans stream/mp_f_freemode_01_mp_f_soz_custom2.ymt -->
	<eCharacter>SCR_CHAR_MULTIPLAYER_F</eCharacter> <!-- On défini le sexe du DLC -->
    <!-- SCR_CHAR_MULTIPLAYER_F : female -->
    <!-- SCR_CHAR_MULTIPLAYER_M : male -->
	<creatureMetaData>MP_CreatureMetadata_soz_custom</creatureMetaData> <!-- Nom du creatureMetaData au complet et doit avoir le nom complet du .ymt dans stream/creaturemetadata/mp_creaturemetadata_soz_custom.ymt -->
	<pedOutfits>
	</pedOutfits>
	<pedComponents>
	</pedComponents>
	<pedProps>
	</pedProps>
</ShopPedApparel>

stream/mp_f_freemode_01_mp_f_soz_custom2.ymt

Ce fichier permet de définir les variantes et les propriétés des objets qui seront streamé.

<?xml version="1.0" encoding="UTF-8"?>
<CPedVariationInfo name="mp_f_soz_custom2">
 <bHasTexVariations value="true" />
 <bHasDrawblVariations value="false" />
 <bHasLowLODs value="false" />
 <bIsSuperLOD value="false" />
 <availComp>255 255 255 255 255 255 0 255 255 255 255 255</availComp>
 <!-- 255 : valeur nulle pour définir que les objets stream ne correspondent pas au fichier
 0 : L'objet appelé (ici feet) -->
 <aComponentData3 itemType="CPVComponentData">
  <Item>
   <numAvailTex value="9" /> <!-- Nombre de texture défini dans l'objet, le maximum étant 26 a-z -->
   <aDrawblData3 itemType="CPVDrawblData">
    <Item>
     <propMask value="1" />
     <numAlternatives value="0" />
     <aTexData itemType="CPVTextureData"> <!-- Cette liste correspond aux nombre de textures disponible pour l'objet -->
      <Item>
       <texId value="0" />
       <distribution value="255" />
      </Item>
      <Item>
       <texId value="0" />
       <distribution value="255" />
      </Item>
      <Item>
       <texId value="0" />
       <distribution value="255" />
      </Item>
      <Item>
       <texId value="0" />
       <distribution value="255" />
      </Item>
      <Item>
       <texId value="0" />
       <distribution value="255" />
      </Item>
      <Item>
       <texId value="0" />
       <distribution value="255" />
      </Item>
      <Item>
       <texId value="0" />
       <distribution value="255" />
      </Item>
      <Item>
       <texId value="0" />
       <distribution value="255" />
      </Item>
      <Item>
       <texId value="0" />
       <distribution value="255" />
      </Item>
     </aTexData>
     <clothData>
      <ownsCloth value="false" />
     </clothData>
    </Item>
   </aDrawblData3>
  </Item>
 </aComponentData3>
 <aSelectionSets itemType="CPedSelectionSet" />
 <compInfos itemType="CComponentInfo"> <!-- Les propriétés de l'objet -->
  <Item>
   <pedXml_audioID>shoe_high_heels</pedXml_audioID> <!-- Son de l'objet -->
   <pedXml_audioID2 />
   <pedXml_expressionMods>0 0 0 0 1.2</pedXml_expressionMods> <!-- Expression de l'objet 
   ici 1.2 correspond à la hauteur du talon -->
   <flags value="0" />
   <inclusions>0</inclusions>
   <exclusions>0</exclusions>
   <pedXml_vfxComps>PV_COMP_HEAD</pedXml_vfxComps>
   <pedXml_flags value="0" />
   <pedXml_compIdx value="6" />
   <pedXml_drawblIdx value="0" />
  </Item>
 </compInfos>
 <propInfo>
  <numAvailProps value="0" />
  <aPropMetaData itemType="CPedPropMetaData" />
  <aAnchors itemType="CAnchorProps" />
 </propInfo>
 <dlcName>hash_52893E2A</dlcName> <!-- nom du dlc -->
</CPedVariationInfo>

stream/creaturemetadata/mp_creaturemetadata_soz_custom.ymt

Ce fichier est OBLIGATOIRE si vous définissez un objet avec des propriétés (comme pour les talons).

<?xml version="1.0" encoding="UTF-8"?>
<CCreatureMetaData>
 <pedCompExpressions>
  <Item>
   <pedCompID value="0x6" />
   <pedCompVarIndex value="0x0" />
   <pedCompExpressionIndex value="0x4" />
   <tracks content="char_array">
    33
   </tracks>
   <ids content="short_array">
    28462
   </ids>
   <types content="char_array">
    2
   </types>
   <components content="char_array">
    1
   </components>
  </Item>
 </pedCompExpressions>
 <pedPropExpressions />
</CCreatureMetaData>