Item Definition: Difference between revisions

contributions from myself, Aschratt, DK22Pac, MarioSonic2987, Solom, and The Hero
m (Spaceeinstein moved page IDE to Item Definition over redirect)
(contributions from myself, Aschratt, DK22Pac, MarioSonic2987, Solom, and The Hero)
 
Line 1: Line 1:
{{IdeSection
{{IdeSection
| noheader = 1
|noheader = 1
}}
}}


Line 24: Line 24:


== Format ==
== Format ==
The following table contains basic information about all known sections. For additional information read the articles itself.
The following table contains all known sections in the item definition. The supported games column lists games that support the sections but it doesn't necessarily means they're functional in the games.


{| class="wikitable"
{|class="mw-collapsible wikitable center-col-1 center-col-2" style="width: 100%;"
! width="120px"| Identifier
!style="width: 7em;"|Section
! width="100px"| Supported games
!style="width: 8em;"|Supported games
! Description
!Description
|-
|<code>[[OBJS|objs]]</code>||{{Icon|t}} {{Icon|4}}||Defines simple objects. They can be placed into the world through the <code>[[INST|inst]]</code> section of the [[Item Placement|item placement]] files.
|-
|<code>[[TOBJ|tobj]]</code>||{{Icon|t}} {{Icon|4}}||Defines time objects. The section functions similarly to <code>objs</code> but has two additional parameters defining the in-game time range the object can get rendered. These objects can be placed into the world through the <code>inst</code> section of the item placement files.
|-
|<code>[[HIER|hier]]</code>||{{Icon|t}} {{Icon|4}}||Defines clump objects for use in cutscenes.
|-
|<code>[[CARS (IDE Section)|cars]]</code>||{{Icon|t}} {{Icon|4}}||Defines vehicle objects.
|-
|<code>[[PEDS|peds]]</code>||{{Icon|t}} {{Icon|4}}||Defines pedestrian objects (random NPC's).
|-
|-
| <center>[[OBJS]]</center >|| <center>{{Icon|3}} {{Icon|VC}} {{Icon|SA}} {{Icon|4}}</center> || Most important section: defines objects for the map.<br>Those objects get placed inside the [[INST]] section of the [[Item Placement|item placement files]].
|<code>[[PATH (IDE Section)|path]]</code>||{{Icon|3}} {{Icon|SA}}||Adds path nodes to defined objects. This section is unstable in Vice City.
|-
|-
| <center>[[TOBJ]]</center> || <center>{{Icon|3}} {{Icon|VC}} {{Icon|SA}} {{Icon|4}}</center> || Basicly does the same as ''OBJS'', but it has two additional parameters defining the ingame time range the object can get rendered.<br>Those objects get placed inside the ''INST'' section of the ''item placement files''.
|<code>[[2DFX|2dfx]]</code>||{{Icon|3}} {{Icon|VC}} {{Icon|SA}} {{Icon|4}}||Adds particle effects and simple ped behaviors to defined objects.
|-
|-
| <center>[[ANIM]]</center> || <center>{{Icon|SA}} {{Icon|4}}</center> || Basicly does the same as ''OBJS'', but it has one additional parameter identicating an [[IFP]] or [[WAD]] animation file to assign an animation to the object.<br>Those objects get placed inside the ''INST'' section of the ''item placement files''.
|<code>[[WEAP|weap]]</code>||{{Icon|VC}} {{Icon|SA}} {{Icon|4}}||Defines weapon objects.
|-
|-
| <center>[[PEDS]]</center> || <center>{{Icon|3}} {{Icon|VC}} {{Icon|SA}} {{Icon|4}}</center> || Used to define ''"pedestrians"'' (Random [[wikipedia:Non-player_character|NPC's]]).
|<code>[[ANIM|anim]]</code>||{{Icon|SA}} {{Icon|4}}||Defines animated objects. The section functions similarly to <code>objs</code> but has one additional parameter indicating an IFP or WAD animation file to assign an animation to the object. These objects can be placed into the world through the <code>inst</code> section of the item placement files.
|-
|-
| <center>[[WEAP]]</center> || <center>{{Icon|VC}} {{Icon|SA}} {{Icon|4}}</center> || Used to define weapons.
|<code>[[TXDP|txdp]]</code>||{{Icon|SA}} {{Icon|4}}||Used to virtually extend [[Texture Archive|texture dictionaries]].
|-
|-
| <center>[[CARS_(IDE_Section)|CARS]] </center> || <center>{{Icon|3}} {{Icon|VC}} {{Icon|SA}} {{Icon|4}}</center> || Used to define vehicles.
|<code>[[TANM|tanm]]</code>||{{Icon|4}}||Used to combine <code>tobj</code> and <code>anim</code> sections.<br>Those objects get placed inside the <code>inst</code> section of the WPL.
|-
|-
| <center>[[HIER]]</center> || <center>{{Icon|3}} {{Icon|VC}} {{Icon|SA}} {{Icon|4}}</center> || Partly unknown. Used to define objects for interactions with [[actor|actors]] for example in cutscenes.
|<code>[[TREE|tree]]</code>||||This section is read in GTA IV but is not functional.
|-
|-
| <center>[[TXDP]]</center> || <center>{{Icon|SA}} {{Icon|4}}</center> || Used to virtually extend [[TXD|texture dictionaries]].
|<code>[[VNOD|vnod]]</code>||{{Icon|4}}||
|-
|-
| <center>[[2DFX]]</center> || <center>{{Icon|3}} {{Icon|VC}}</center> || Used to add particles to objects, defined in one of the sections above (except ''TXDP'').
|<code>[[LINK|link]]</code>||{{Icon|4}}||
|-
|-
| <center>[[PATH_(IDE_Section)|PATH]]</center> || <center>{{Icon|3}}</center> || Used to create waypoints for random NPC spawns ([[Paths]]).
|<code>[[MLO|mlo]]</code>||{{Icon|4}}||Used to create [[interior]]s. This section does also contain information about portals (previous <code>[[ENEX|enex]]</code> connections) and dimensions of the interior which influences certain aspects, like the weather, for example. All objects are placed relative to an offset placed using <code>mlo+</code> inside the IPL or WPL file.
|-
|-
| <center>[[TREE]]</center> || <center>{{Icon|4}}</center> || &ndash;
|<code>[[AMAT|amat]]</code>||{{Icon|4}}||This is Audio Materials. Possible Used to make a sound effect at the model. Usually used for dynamic objects.
|-
|-
| <center>[[TANM]]</center> || <center>{{Icon|4}}</center> || Used to combine ''TOBJ'' and ''ANIM'' sections.<br>Those objects get placed inside the ''INST'' section of the ''item placement files''.
|<code>[[LODM|lodm]]</code>||||This is read in GTA IV but section is not functional.
|-
|-
| <center>[[MLO]]</center> || <center>{{Icon|4}}</center> || Used to create [[interior]]s. This section does also contain information about the entrace markers (previous [[ENEX]] connections) and dimensions of the interior which influences certain aspects, like the weather, for example. All objects are placed relative to an offset placed using [[MLO+]] inside the [[IPL]] or [[WPL]] file.
|<code>[[AGRPS|agrps]]</code>||{{Icon|4}}||
|-
|-
| <center>[[AMAT]]</center> || <center>{{Icon|4}}</center> || &ndash;
|<code>[[HAND|hand]]</code>||VC Xbox/Mobile||
|}
|}


== IDE Flags ==
== IDE Flags ==
Flags are used in order to specify the behaviour of objects. They are interpreted as signed 32-bit integer values where each bit describes a [[wp:Boolean_algebra_(logic)|boolean]] value of a different aspect. The following table shows the standard flags used for objects defined in ''OBJS'', ''TOBJ'' and ''ANIM'' section.
Flags are used in order to specify the behaviour of objects. They are interpreted as signed 32-bit integer values where each bit describes a [[wp:Boolean_algebra_(logic)|boolean]] value of a different aspect.
 
=== GTA III ===
{| class="wikitable"
! Bits !! Dec !! Hex !! Name !! Description !! Examples
|-
| 0 || 1 || 0x1 || - || Cull model if player doesn't look at it? Read, but ignored. || Fences
|-
| 1 || 2<ref name="III">[http://www.gtaforums.com/index.php?showtopic=102833&view=findpost&p=1067607073 Screenshots of flags in GTA III], by {{U|spaceeinstein}}</ref> || 0x2 || DO_NOT_FADE || Do not fade the object when it is being loaded into or out of view. || Some lampposts
|-
| 2 || 4<ref name="III" /> || 0x4 || DRAW_LAST || Model is transparent. Render this object after all opaque objects, allowing transparencies of other objects to be visible through this object. || Trees
|-
| 3 || 8 || 0x8 || ADDITIVE || Render with additive blending. Previous flag must be enabled too. ||
|-
| 4 || 16<ref name="III" /> || 0x10 || IS_SUBWAY || Model is a tunnel, i.e. set the object as invisible unless the player enters [[Cullzone.dat|cull zone flag 128]]. This flag works only with static models. || Tunnels, some dynamic objects
|-
| 5 || 32 || 0x20 || IGNORE_LIGHTING || Don't use static lighting, we want dynamic if it's possible. || Some lampposts and trafficlights
|-
| 6 || 64<ref name="III" /> || 0x40 || NO_ZBUFFER_WRITE || Model is a shadow. Disable writing to z-buffer when rendering it, allowing transparencies of other objects, shadows, and lights to be visible through this object. Not implemented in the PS2 version. || Shadow
|}
 
=== GTA Vice City ===


{| width="100%" class="wikitable"
{| class="wikitable"
! width="120px"| Flag
! Bits !! Dec !! Hex !! Name !! Description !! Examples
! width="100px"| Supported games
! width="25%"| Binary
! Description
|-
|-
| <center>-1</center> || <center>&ndash;</center> || <center><code>1111 1111 1111 1111 1111 1111</code></center> || Enables all flags. <ref>[[wp:Two%27s_complement|Two's complement]]</ref> Never used by default.
| 0 || 1 || 0x1 || IS_ROAD || Identifies objects to draw "wet reflections" on them. || Roads
|-
|-
| <center>1</center> || <center>{{Icon|trilogy}} {{Icon|4}}</center> || <center><code>0000 0000 0000 0000 0000 0001</code></center> || Wet effect (objects appear darker).
| 1 || 2 || 0x2 || DO_NOT_FADE || Do not fade the object when it is being loaded into or out of view. || Some night objects, North Point Mall
|-
|-
| <center>2</center> || <center>{{Icon|trilogy}} {{Icon|4}}</center> || <center><code>0000 0000 0000 0000 0000 0010</code></center> || Indicates that the object gets rendered at night for objects defined in ''TOBJ''.
| 2 || 4 || 0x4 || DRAW_LAST || Model is transparent. Render this object after all opaque objects, allowing transparencies of other objects to be visible through this object. || Fencse, trees
|-
|-
| <center>4</center> || <center>{{Icon|trilogy}} {{Icon|4}}</center> || <center><code>0000 0000 0000 0000 0000 0100</code></center> || Alpha transparency 1
| 3 || 8 || 0x8 || ADDITIVE || Render with additive blending. Previous flag will be enabled automatically. || Night windows
|-
|-
| <center>8</center> || <center>{{Icon|trilogy}} {{Icon|4}}</center> || <center><code>0000 0000 0000 0000 0000 1000</code></center> || Alpha transparency 2
| 4 || 16 || 0x10 || - || Read, but not used. || _dy, _dt objects
|-
|-
| <center>16</center> || <center>{{Icon|trilogy}} {{Icon|4}}</center> || <center><code>0000 0000 0000 0000 0001 0000</code></center> || Opposite to flag '''2'''
| 5 || 32 || 0x20 || IGNORE_LIGHTING || Don't use static lighting, we want dynamic if it's possible. || Interior objects
|-
|-
| <center>32</center> || <center>{{Icon|trilogy}} {{Icon|4}}</center> || <center><code>0000 0000 0000 0000 0010 0000</code></center> || Indicates an object to be used inside an interior.
| 6 || 64 || 0x40 || NO_ZBUFFER_WRITE || Model is a shadow. Disable writing to z-buffer when rendering it, allowing transparencies of other objects, shadows, and lights to be visible through this object. || Tree shadows
|-
|-
| <center>64</center> || <center>{{Icon|trilogy}} {{Icon|4}}</center> || <center><code>0000 0000 0000 0000 0100 0000</code></center> || Disables the [[COLL#Shadow_Mesh|shadow mesh]] to project a shadow.
| 7 || 128 || 0x80 || DONT_RECEIVE_SHADOWS || Do not draw dynamic shadows on this object. || Small objects, pickups, lamps, trees
|-
|-
| <center>128</center> || <center>{{Icon|trilogy}} {{Icon|4}}</center> || <center><code>0000 0000 0000 0000 1000 0000</code></center> || Object surface will not be [[Wikipedia:Hidden_surface_determination|culled]].
| 8 || 256 || 0x100 || IGNORE_DRAW_DISTANCE || Ignore draw distance for this object (sets its "level" (island id) to 0). || LOD models, North Bridge
|-
|-
| <center>256</center> || <center>{{Icon|trilogy}} {{Icon|4}}</center> || <center><code>0000 0000 0000 0001 0000 0000</code></center> || Disables draw distance (Only used for [[LOD]] objects with an ''LOD'' value greater than 299).
| 9 || 512 || 0x200 || IS_GLASS_TYPE_1 || Breakable glass type 1: glass object changes its textures when breaking. || Small windows
|-
|-
| <center>512</center> || <center>{{Icon|trilogy}} {{Icon|4}}</center> || <center><code>0000 0000 0000 0010 0000 0000</code></center> || Object is breakable (like glass &ndash; additional parameters defined inside the [[object.dat]] file, otherwise there is no effect).
| 10 || 1024 || 0x400 || IS_GLASS_TYPE_2 || Breakable glass type 2: glass object doesn't change its textures when breaking. || Large windows
|}
 
==== Reference table ====
 
{| class="wikitable"
! Bits !! Dec !! Hex !! Name !! Model info flag !! Ref address !! Ref description
|-
|-
| <center>1024</center> || <center>{{Icon|trilogy}}{{Icon|4}}</center> || <center><code>0000 0000 0000 0100 0000 0000</code></center> || Similar to flag '''512''': object first cracks on a strong collision, then it breaks (does also require ''object.dat'' registration).
| 0 || 1 || 0x01 || IS_ROAD || 0x04 || 0x4CA1D7 || '''<code>CRenderer::RenderRoads()</code>'''
{{Pre|1=
if (CModelInfo::GetModelInfo(entity->m_nModelIndex)->m_nFlags & IS_ROAD)
    entity->Render();
}}
|-
|-
| <center>2048</center> || <center>{{Icon|SA}} {{Icon|4}}</center> || <center><code>0000 0000 0000 1000 0000 0000</code></center> || Indicates an object as an garage door (for more information see [[GRGE#Types_of_doors|GRGE]] &ndash; requires ''object.dat'' registration).
| 1 || 2 || 0x02 || DO_NOT_FADE || 0x20 || 0x4C7E03 || '''<code>CRenderer::ShouldModelBeStreamed(CEntity *,CVector const&)</code>'''
{{Pre|1=
if (model->m_nFlags & DO_NOT_FADE) {
    if (distance >= model->GetLargestLodDistance() + 30.0f)
        return true;
}
else if ( distance >= model->GetLargestLodDistance() + 50.0f)
    return true;
}}
|-
|-
| <center>4096</center> || <center>{{Icon|SA}} {{Icon|4}}</center> || <center><code>0000 0000 0001 0000 0000 0000</code></center> || Indicates an [[RenderWare_binary_stream_file|multiclump]] object (Object switches from clump ''2'' to clump ''1'' after collision &ndash; requires ''object.dat'' registration).
| 2 || 4 || 0x04 || DRAW_LAST || 0x40 || 0x56F4F3 || '''<code>CSimpleModelInfo::SetupBigBuilding(int,int)</code>'''
{{Pre|1=
if (model->m_nFlags & DRAW_LAST) {
    model->m_nFlags &= ~DRAW_LAST;
    dbgprint("%s was draw last\n", model->m_szName);
}
}}
|-
|-
| <center>32768</center> || <center>{{Icon|SA}} {{Icon|4}}</center> || <center><code>0000 0000 1000 0000 0000 0000</code></center> || Uses object brightness from the current weather definition (See [[timecyc.dat]] &ndash; ''PoleShd'').
| 3 || 8 || 0x08 || ADDITIVE || 0x80 || 0x582590 || '''<code>CVisibilityPlugins::RenderFadingAtomic(RpAtomic *,float)</code>'''
{{Pre|1=
if (model->m_nFlags & ADDITIVE)
    RwRenderStateSet(rwRENDERSTATEDESTBLEND, rwBLENDONE);
}}
|-
|-
| <center>65536</center> || <center>{{Icon|SA}} {{Icon|4}}</center> || <center><code>0000 0001 0000 0000 0000 0000</code></center> || Object explodes after getting hit (requires ''object.dat'' registration).
| 4 || 16 || 0x10 || || 0x100 || - || -
|-
|-
| <center>131072</center> || <center>{{Icon|SA}}</center> || <center><code>0000 0010 0000 0000 0000 0000</code></center> || Unknown &ndash; apparently some flag for the [[SCM|Script]].
| 5 || 32 || 0x20 || IGNORE_LIGHTING || 0x200 || 0x56F7C4 || '''<code>CSimpleModelInfo::SetAtomic(int,RpAtomic *)</code>'''
{{Pre|1=
if (model->m_nFlags & IGNORE_LIGHTING)
    atomic->geometry->flags &= ~rpGEOMETRYLIGHT;
}}
|-
|-
| <center>262144</center> || <center>{{Icon|SA}}</center> || <center><code>0000 0100 0000 0000 0000 0000</code></center> || Unknown &ndash; only used 1 time in [[Grand Theft Auto: San Andreas|San Andreas]].
| 6 || 64 || 0x40 || NO_ZBUFFER_WRITE || 0x400 || 0x581390 || '''<code>CVisibilityPlugins::RenderFadingEntities(CLinkList<CVisibilityPlugins::AlphaObjectInfo> &)</code>'''
{{Pre|1=
if (model->m_nType == MODEL_INFO_SIMPLE && model->m_nFlags & NO_ZBUFFER_WRITE)
    RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, FALSE);
}}
|-
|-
| <center>1048576</center> || <center>{{Icon|SA}}</center> || <center><code>0000 1000 0000 0000 0000 0000</code></center> || Object will switch from clump ''2'' to clump ''1'' after getting sprayed by the player (graffity flag).
| 7 || 128 || 0x80 || DONT_RECEIVE_SHADOWS || 0x800 || 0x48AF21 || '''<code>CFileLoader::LoadObjectInstance(char const*)</code>'''
{{Pre|1=
if (model->m_nFlags & DONT_RECEIVE_SHADOWS)
    entity->m_nFlags.bDontCastShadowsOn = true;
}}
|-
|-
| <center>2097152</center> || <center>{{Icon|SA}}</center> || <center><code>0001 0000 0000 0000 0000 0000</code></center> || Disables backface culling &ndash; as an result the texture will be drawed on both sides of the model (Always enabled for GTA III and [[Grand Theft Auto: Vice City|Vice City]])
| 8 || 256 || 0x100 || IGNORE_DRAW_DISTANCE || 0x1000 || 0x487CDE || '''<code>CEntity::SetupBigBuilding()</code>'''
{{Pre|1=
if (model->m_afLodDistances[0] > 2500.0f <nowiki>||</nowiki> model->m_nFlags & IGNORE_DRAW_DISTANCE)
    entity->m_nLevel = 0;
}}
|-
|-
| <center>4194304</center> || <center>{{Icon|SA}}</center> || <center><code>0010 0000 0000 0000 0000 0000</code></center> || Unknown &ndash; apparently related into physics.
| 9 || 512 || 0x200 || IS_GLASS_TYPE_1 || 0x2000 || 0x488CCD || '''<code>CEntity::PreRender()</code>''', probably in-lined '''<code>CModelInfo::IsGlassModel(int)</code>''' @0x488CAA
{{Pre|1=
bool CModelInfo::IsGlassModel(int modelId) {
    CBaseModelInfo *model = CModelInfo::GetModelInfo(modelId);
    if (model->m_nType == MODEL_INFO_SIMPLE <nowiki>||</nowiki> model->m_nType == MODEL_INFO_TIME) {
        CSimpleModelInfo *simpleModel = reinterpret_cast<CSimpleModelInfo *>(model);
        return simpleModel->m_nFlags & IS_GLASS_TYPE_1 <nowiki>||</nowiki> simpleModel->m_nFlags & IS_GLASS_TYPE_2;
    }
    return false;
}
}}
|-
|-
| colspan="4" style="text-align: right;" | <span class="plainlinks" style="font-size: 10px;">[http://www.gtamodding.com/index.php?title=Template:Object-Flags&action=edit edit]</span>
| 10 || 1024 || 0x400 || IS_GLASS_TYPE_2 || 0x4000 || 0x488CE7 || '''<code>CEntity::PreRender()</code>'''
{{Pre|1=
if (CModelInfo::IsGlassModel(modelId)) {
    if (!(CModelInfo::GetModelInfo(modelId)->m_nFlags & IS_GLASS_TYPE_2) ) {
        CGlass::AskForObjectToBeRenderedInGlass(entity);
        entity->m_nFlags.bIsVisible = false;
    }
}
}}
|}
|}
For flags defining different aspects of different definitions read the articles about their sections.


== Difference between GTA III and GTA IV engines ==
== Difference between GTA III and GTA IV engines ==
Line 127: Line 215:


== See also ==
== See also ==
* [[Item placement]]
* [[Item Placement]]
* [[Map System]]
* [[Map System]]
* [[Dynamic Object]]
* [[Dynamic Object]]
Line 140: Line 228:


{{fdl}}
{{fdl}}
{{modding}}
{{3-navi}}
 
{{VC-navi}}
[[Category:Map Formats]]
[[Category:Map Formats]]
[[Category:GTA III Modifications]]
[[Category:GTA Vice City]]
[[Category:Modifications]]
12,236

edits