.#typ

.#typ is used as collection of archetypes.
.#typ in PC version of GTAV got extension .ytyp wheres prefix y stands for win64pc/win64/x64/linux platform.
Thanks to it you can spawn any prop in game (using #map or script)
also you can add special effects like fire, water, smoke ect. to archetypes
or create MLO instance (interior)
Below i will explain main entries in #typ what they do and what they are, based on my research:

<archetypes>

It contains list of archetypes CBaseArchetypeDef and/or MLO archetypes CMloArchetypeDef

<lodDist value="1000"/>

Number in this value means how far will be visible object in game. In this example object will be visible until 1000 unit coord on any axis (x,y,z) if you will be at distance more than 1000 unit (on any direction x,y,z) then object will dissapear.

<flags value="0"/>

Flag determines how object will affect in game. For example:
<flags value="32"/> for objects with embedded collision
<flags value="0"/> default for objects without embedded collision
<flags value="604110848"/> for doors
<flags value="537001984"/> for doors
<flags value="67239936"/> for doors
<flags value="8192"/> mostly for emmisive and ground (dont cast shadows)
<flags value="8192"/> mostly for blend ground (dont cast shadow)
<flags value="8190"/> cast only shadow - object invisible


This section will update in future with more researched flags.

<specialAttribute value="0"/>

Its related to #typ flag! (for example <specialAttribute value="5"/> will have different effect in different #typ flags.
Mainly its used for doors and determine how doors will open, for example:
Using 67239936 for flag:

<specialAttribute value="5"/> doors will open up/down 90 degrees (like garage door)
<specialAttribute value="4"/> doors will slides (left<->right)
<specialAttribute value="7"> normal way of opening door (pushed by player)

<bbMin/Max x="5.00" y="5.00" z="5.00"/>

This is boundary box values - two pints in box in min and max:


Too small values in bbmin/max will make object flickering in game, disappearing on camera angles or even invisible:


You can generate it using Neos7 3dsmax script (map helper)
bbmin/max must be big enough to match object size.

<hdTextureDist value="150"/>

This is used in texture parenting - on which distance high resolution texture will switch to low resolution.
Explanation how to set texture parenting check _manifest.

<textureDictionary>

If your object use any external texture from ytd then you put ytd name like this:
<textureDictionary>ytd name here</textureDictionary>
And if your object got only embedded textures and dont use any from ytd then you leave it like this:
<textureDictionary/>

<clipDictionary>

Its used only when object got animation and uses clip dictionaries (#cd) then you put name of ycd like this:
<clipDictionary>ycd name here</clipDictionary>
When object dont have any animation you leave it like this:
<clipDictionary/>

<drawableDictionary>

When definied object is inside drawable dictionary (.#dd) then you put name of this dictionary like this:
<drawableDictionary>ydd name here</drawableDictionary>
in other cases you leave it empty:
<drawableDictionary/>

In most cases its used for LODs

<physicsDictionary>

When your object got embedded collision then you put here name of object or name of RPF inside which is that object (both ways works second one is good for neos script at many objects)

<physicsDictionary>name of object with embedded collision here</physicsDictionary>
or
<physicsDictionary>name of RPF inside which is object with embedded collision</physicsDictionary>

If your object dont have any collision or its uses static one then you leave it empty:
<physicsDictionary/>

<assetType>

You can choose type of asset:
ASSET_TYPE_UNINITIALIZED
ASSET_TYPE_FRAGMENT
ASSET_TYPE_DRAWABLE
ASSET_TYPE_DRAWABLEDICTIONARY
ASSET_TYPE_ASSETLESS

But by default you can choose between two :
ASSET_TYPE_DRAWABLE - for normal props
or
ASSET_TYPE_DRAWABLEDICTIONARY for props inside drawable dictionary (.#dd)

<extensions>

Extensions are used for many cool things like ladders, spawning peds, adding water,fire or other FX effects, lights, sounds ect...

Here i will give two examples adding spawning point for ped and adding fire to object:

1. Spawning ped you need to add into extensions:

<extensions>
   <Item type="CExtensionDefSpawnPoint">
   <name>object name here</name>
   <offsetPosition x="1.18333400" y="0.33997150" z="0.50000000"/>
   <offsetRotation x="0.00000000" y="0.00000000" z="0.70710690" w="0.70710680"/>
   <spawnType>PROP_HUMAN_SEAT_CHAIR_MP_PLAYER</spawnType> example list of spawn type peds
     <pedType>Any</pedType>
     <group/>
     <interior/>
     <requiredImap/>
     <availableInMpSp>kBoth</availableInMpSp>
     <probability value="0.00000000"/>
     <timeTillPedLeaves value="0.00000000"/>
     <radius value="0.00000000"/>
     <start value="0"/>
     <end value="0"/>
     <flags/>
     <highPri value="false"/>
      <extendedRange value="false"/>
     <shortRange value="false"/>
   </Item>
</extensions>


2. Adding fire to object you need to add into extensions:

<extensions>
  <Item type="CExtensionDefParticleEffect">
     <name>object name here</name>
     <offsetPosition x="-0.10021210" y="-0.07110596" z="0.30000000"/>
     <offsetRotation x="0.20000000" y="0.10000000" z="0.00000000" w="1.00000000"/>
     <fxName>amb_beach_campfire</fxName> list of FX you can use here instead fire
     <fxType value="0"/>
     <boneTag value="0"/>
     <scale value="20.00000000"/> increasing/decreasing this value will affect of FX size
     <probability value="100"/>
     <flags value="0"/>
      <color value="4294967295"/>
   </Item>
</extensions>

Heres example video how to add FX to object:


<timeFlags value="32563207"/>

It defines at which hours archetype can be visible in game.

Its binary flag where each bit represent specified hour of day plus bit #24 must be always 1, otherway whole timeFlag will not work:


For example to make one archetype visible only at hours 20:00 - 03:00 and 13:00 to 16:00 you need correct binary flag:

It will be 1111100001110000000000111

Then convert this binary flag to decimal which will be 32563207