Difference between revisions of "Item Placement"

From GTAMods Wiki
Jump to navigation Jump to search
m
 
(33 intermediate revisions by 8 users not shown)
Line 1: Line 1:
{{Cleanup-rewrite}}
 
 
{{IplSection
 
{{IplSection
 
| noheader=1
 
| noheader=1
 
}}
 
}}
'''Item placement''' files, known by the extension '''.ipl''', are map files used to place objects into the GTA world, as well as define zones, paths, garages, interior portals, and a lot more. Most IPL files can easily be opened and edited using any text-editing program like [[Wikipedia:Notepad|Notepad]]. In San Andreas there are also [[Binary_IPL|binary IPL]] files which are located in the [[IMG|IMG archives]] of the game. Those you can only open using a special [[Item_Placement#Useful_Tools|editor]].
+
'''Item placement''' files, usually identified by the file extension <code>.ipl</code>, are a part of the [[map system]] and used to create and place (for example) different objects, zones of special behavior or paths in the world. All games support standard item placement files which are mostly stored in plain text format that can be opened and edited using any text-editing program (like [[Wikipedia:Notepad|Notepad]]), but there are tools to simplify editing of the newly introduced Binary Ipl in [[GTA SA|San Andreas]]. Most of the placement information in [[GTA IV]] is stored inside of binary files (see [[WPL]]).
  
==Structure==
+
== Text Format ==
The <code>.ipl</code> files are split up into many sections. Not all of them have to be used, leaving them empty works as well. Each section starts with a section identifier and ends with the keyword "end", both in a separate line.
 
  
Example:
+
The structure and format of the plain text item placement files are similar to that of the [[item definition]] files. The game searches for these files in [[Gta.dat|gta.dat]].They allow comments by the character <code>#</code>.Lines starting with this character simply get ignored by the game & empty lines are also allowed. Since these files contain different types of data a keyword is required for the game to recognize each set of data.
inst
+
  <keyword>
...
+
  *lines*
end
+
  end
 
+
More information about these keywords can be found below in the <code>Fomats</code> section.  
===[[INST]]===
 
Used to place objects in the world.
 
 
 
''GTA III format''
 
ID, ModelName, PosX, PosY, PosZ, ScaleX, ScaleY, ScaleZ, RotX, RotY, RotZ, RotW
 
 
 
{|{{Prettytable}} width="100%" class="collapsible collapsed"
 
!width="250px"|Identifier
 
!Description
 
|-
 
|<center>ID</center>||A number which is used to identify the object as defined in the [[IDE]] file inside the map system.
 
|-
 
|<center>ModelName</center>||The name of the model inside an [[IMG|image]] file which is defined in the [[gta.dat]] file without extension (<code>.[[DFF|dff]]</code>)
 
|-
 
|<center>PosX, PosY, PosZ</center>||The position of the object in the world as floating point values.<br>''Note:'' the decimal seperator must be ".", not ",".
 
|-
 
|<center>ScaleX, ScaleY, ScaleZ</center>||The scaling of the object as floating point values. By default each value is ''1.0'', which means the object is not scaled at all.<br>''Note:'' the decimal seperator must be ".", not ",".
 
|-
 
|<center>RotX, RotY, RotZ, RotW</center>||The rotation of the object as [[Wikipedia:Quarternion|quarternion]].<br>''Note:'' the decimal seperator must be ".", not ",".
 
|}
 
 
 
''Vice City format''
 
ID, ModelName, Interior, PosX, PosY, PosZ, ScaleX, ScaleY, ScaleZ, RotX, RotY, RotZ, RotW
 
 
 
{|{{Prettytable}} width="100%" class="collapsible collapsed"
 
!width="250px"|Identifier
 
!Description
 
|-
 
|<center>ID</center>||A number which is used to identify the object as defined in the [[IDE]] inside the map system.
 
|-
 
|<center>ModelName</center>||The name of the model inside an [[IMG|image]] file which is defined in the [[gta.dat]] file without extension (<code>.[[DFF|dff]]</code>)
 
|-
 
|<center>Interior</center>||A number defining the [[interior]] (render-level) the object is located in. It is an optional parameter; by default the object's interior is 0.
 
|-
 
|<center>PosX, PosY, PosZ</center>||The position of the object in the world as floating point values.
 
|-
 
|<center>ScaleX, ScaleY, ScaleZ</center>||The scaling of the object as floating point values. By default each value is ''1.0'', which means the object is not scaled at all.
 
|-
 
|<center>RotX, RotY, RotZ, RotW</center>||The rotation of the object as [[Wikipedia:Quarternion|quarternion]].
 
|}
 
  
''San Andreas format''
+
:''See also: [[Item Definition#Overview|Item Definition &sect; Overview]]''
ID, ModelName, Interior, PosX, PosY, PosZ, RotX, RotY, RotZ, RotW, LOD
 
 
 
{|{{Prettytable}} width="100%" class="collapsible collapsed"
 
!width="250px"|Identifier
 
!Description
 
|-
 
|<center>ID</center>||A number which is used to identify the object as defined in the [[IDE]] inside the map system.
 
|-
 
|<center>ModelName</center>||The name of the model inside an [[IMG|image]] file which is defined in the [[gta.dat]] file without extension (<code>.[[DFF|dff]]</code>). The parameter doesn't seem to function in the game. Any name used will not affect the rendering of the model.
 
|-
 
|<center>Interior</center>||A number defining the [[interior]] (render-level) the object is located in.
 
|-
 
|<center>PosX, PosY, PosZ</center>||The position of the object in the world as floating point values.
 
|-
 
|<center>RotX, RotY, RotZ, RotW</center>||The rotation of the object as [[Wikipedia:Quarternion|quarternion]].<br>''Note:'' the decimal seperator must be ".", not ",".
 
|-
 
|<center>LOD</center>||The number of the [[LOD]] which is located inside the same instance block as the current model.<br>By default this is ''-1'' which means no LOD is defined.
 
|}
 
  
===[[CULL]]===
 
Create a culling zone.
 
  
''GTA III and Vice City format''
+
== Binary Format ==
CenterX, CenterY, CenterZ, LowerLeftX, LowerLeftY, LowerLeftZ, UpperRightX, UpperRightY, UpperRightZ, Flags, Unknown
 
  
{|{{Prettytable}} width="100%" class="collapsible collapsed"
+
''San Andreas'' introduced a simple binary format of item placement files. They are stored as ''"streaming files"'' inside the [[IMG|archive files]]. Editing them requires an special editor (see [[IPL#Tools|below]]). The format is pretty simple and their possibilities are not completely used by ''Rockstar''. By default they do only support <code>inst</code> and <code>cars</code> sections. It is unconfirmed if other sections also can be used or if they are just stubs which are not implemented. Anyway, their binary format is completely unknown.
!width="250px"|Identifier
 
!Description
 
|-
 
|<center>CenterX, CenterY, CenterZ</center>||A point which defines the center of the box in real world coordinates
 
|-
 
|<center>LowerLeftX, LowerLeftY, LowerLeftZ</center>||A point which corresponds to the ''lower left'' corner of the box.
 
|-
 
|<center>UpperRightX, UpperRightY, UpperRightZ</center>||A point which corresponds to the ''upper right'' corner of the box.
 
|-
 
|<center>Flags</center>||The [[CULL#Flags|behaviour of the cull zone]].
 
|-
 
|<center>Unknown</center>||Always 0
 
|}
 
  
''San Andreas format 1''
+
{{Incomplete}}
CenterX, CenterY, CenterZ, Unknown1, WidthY, BottomZ, WidthX, Unknown2, TopZ, Flag, Unknown3
+
<!--- How do binary IPLs get recognized by the game? --->
  
''San Andreas format 2''
+
==== Header ====
CenterX, CenterY, CenterZ, Unknown1, WidthY, BottomZ, WidthX, Unknown2, TopZ, Flag, Vx, Vy, Vz, Cm
 
  
===PATH===
+
Each binary placement information file starts with a 4-Byte identifier followed by a header containing information about the content of the files.
''Vice City only''
 
  
'''Ped, Car and Boat Paths''', defines paths relative to the world centre. Only used in GTA VC, this format is much easier than in GTA3 where the paths were stored in IDE files, and GTA-SA paths which are stored in **nodes.dat inside gta3.img. This is a quite complicated format and hardly usable without an editing program (such as [[Ked]]).
+
4b  - CHAR[4]  - Always "bnry"
 +
4b  - INT32    - Number of [[INST|item instances]]
 +
4b  - INT32    - Number of unknown 1 (''CULL'' ?)
 +
4b  - INT32    - Number of unknown 2 (''GRGE'' ?)
 +
4b  - INT32    - Number of unknown 3 (''ENEX'' ?)
 +
  4b  - INT32    - Number of [[CARS|parked cars]]
 +
4b  - INT32    - Number of unknown 4 (''PICK'' ?)
 +
4b  - INT32    - Offset of item instances (0x4C by default)
 +
4b  - INT32    - Size of item instances (unused - always 0)
 +
4b  - INT32    - Offset of unknown 1
 +
4b  - INT32    - Size of unknown 1 (unused - always 0)
 +
4b  - INT32    - Offset of unknown 2
 +
4b  - INT32    - Size of unknown 2 (unused - always 0)
 +
4b  - INT32    - Offset of unknown 3
 +
4b  - INT32    - Size of unknown 3 (unused - always 0)
 +
4b  - INT32    - Offset of parked cars
 +
4b  - INT32    - Size of parked cars (unused - always 0)
 +
4b  - INT32    - Offset of unknown 4
 +
4b  - INT32    - Size of unknown 4 (unused - always 0)
  
GTA SA uses [[GTA SA Paths|compiled binary files]] for its paths.
+
The header is followed by the arrays of the entries.INST arrays have a size of 40 bytes per structure, and cars have 48 bytes.
  
===[[GRGE]]===
+
=== INST ===
Creates a garage.
 
  
''San Andreas format''
+
4b  - FLOAT    - Position X
  PosX, PosY, PosZ, LineX, LineY, CubeX, CubeY, CubeZ, DoorType, GarageType, Name
+
4b  - FLOAT    - Position Y
 +
4b  - FLOAT    - Position Z
 +
4b  - FLOAT    - Rotation X
 +
4b  - FLOAT    - Rotation Y
 +
4b  - FLOAT    - Rotation Z
 +
4b  - FLOAT    - Rotation W
 +
4b  - INT32    - Object ID (as an index to the ''IDE'')
 +
  4b  - INT32    - Interior
 +
4b  - INT32    - ''LOD'' index
  
{|{{Prettytable}} width="100%" class="collapsible collapsed"
+
=== CARS ===
!width="250px"|Identifier
+
''CARS'' is one of the known sections which can be used in binary format inside streaming files. It's format is similar to the plain text format:
!Description
 
|-
 
|<center>PosX, PosY, PosZ</center>||A coordinate of one of the corner marks
 
|-
 
|<center>LineX, LineY</center>||Those values are [[Wikipedia:Euclidean_vector#Addition_and_subtraction|added]] to the first position values. They define one edge of the box
 
|-
 
|<center>CubeX, CubeY, CubeZ</center>||Another world coordinate. Together with the abstract line created with the first 5 coordinates this forms a cube in the world.
 
|-
 
|<center>DoorType</center>||The [[GRGE#Types_of_doors|type of the door]]
 
|-
 
|<center>GarageType</center>||The [[Garage#San_Andreas|type of the garage]]
 
|-
 
|<center>Name</center>||[[Garage#San_Andreas_2|A string]] which is used to manipulate the garages behaviour through the <code>[[main.scm]]</code>
 
|-
 
|}
 
  
===[[ENEX]]===
+
4b  - FLOAT    - Position X
Creates an entrance to an exit
+
4b  - FLOAT    - Position Y
 +
4b  - FLOAT    - Position Z
 +
4b  - FLOAT    - Angle (Around Z-Axis)
 +
4b  - INT32    - Object ID (an index to an [[CARS_(IDE_Section)|vehicle definition]])
 +
4b  - INT32    - Primary color
 +
4b  - INT32    - Secondary color
 +
4b  - INT32    - Force spawn (Windows BOOL - see ''<code>WinDef.h</code>'')
 +
4b  - INT32    - Alarm probability
 +
4b  - INT32    - Locked probability
 +
4b  - INT32    - Unknown1 (Could be tertiary color)
 +
4b  - INT32    - Unknown2 (Could be quarterdeck color)
  
''San Andreas format''
+
'''Load a custom file'''
X1, Y1, Z1, ROT, W1, W2, C8, X2, Y2, Z2, Rot2, Int, Flag, Name, Sky, I2, Time On, Time Off
 
  
{|{{Prettytable}} width="100%" class="collapsible collapsed"
+
A basic comparison between a normal <code>.ipl</code> and a binary <code>.ipl</code>.
!width="250px"|Identifier
 
!Description
 
|-
 
|<center>X1, Y1, Z1</center>||entrance location
 
|-
 
|<center>ROT</center>||
 
|-
 
|<center>W1</center>||X width of entry
 
|-
 
|<center>W2</center>||Y width of entry
 
|-
 
|<center>C8</center>||constant 8
 
|-
 
|<center>X2, Y2, Z2</center>||exit location
 
|-
 
|<center>Rot2</center>||exit rotation in degrees
 
|-
 
|<center>Int</center>||The target interior number
 
|-
 
|<center>Flag</center>||The type of marker
 
|-
 
|<center>Name</center>||[[Interior#San_Andreas_2|Interior name]], used to find the counterpart and to identify via mission script
 
|-
 
|<center>Sky</center>||Sky color changer
 
|-
 
|<center>I2</center>||unknown integer flags, could be weather related
 
|-
 
|<center>Time On</center>||enables the marker at this time
 
|-
 
|<center>Time Off</center>||disables the marker at this time
 
|}
 
  
===[[PICK]]===
+
'''Normal:'''
Creates a weapon pickup.
+
15072, PLS_carpark, 0, 2579.8796445, 645.50208432, 9.93, 0, 0, 0, 1, -1
  
''San Andreas format''
+
'''Binary:'''
  ID, PosX, PosY, PosZ
+
  15072, dummy, 0, 2579.8796445, 645.50208432, 9.93, 0, 0, 0, 1, -1
  
{|{{Prettytable}} width="100%" class="collapsible collapsed"
+
The object name is basically ignored in <code>.ipl</code>
!width="250px"|Identifier
 
!Description
 
|-
 
|<center>ID</center>||A [[PICK#San_Andreas_Weapon_List|number]] which defines a [[weapon]]
 
|-
 
|<center>PosX, PosY, PosZ</center>||Floating point values defining where the pickup should be placed in the world.
 
|}
 
  
===[[JUMP]]===
+
Now for converting a text <code>.ipl</code> to binary <code>.ipl</code> and vice-versa,we can use [https://gtaforums.com/topic/857375-fastman92-processor/ fastman92-processor].Its a pretty simple program we can get most of the work done by editing the <code>fastman92_processor.bat</code>(Or can use Binary (De-)Compiler).
Creates a unique stunt jump.
 
  
''San Andreas format''
+
After converting to binary form we have to create a normal <code>.ipl</code> file and index it in [[Gta.dat]].Lets suppose the name of our <code>.ipl</code> is
<pre>StartLowerX, StartLowerY, StartLowerZ, StartUpperX, StartUpperY, StartUpperZ, TargetLowerX, TargetLowerY, TargetLowerZ,
 
TargetUpperX, TargetUpperY, TargetUpperZ, CameraX, CameraY, CameraZ, Reward</pre>
 
  
{|{{Prettytable}} width="100%" class="collapsible collapsed"
+
test.ipl
!width="250px"|Identifier
 
!Description
 
|-
 
|<center>StartLowerX, StartLowerY, StartLowerZ</center>||These values define a point in the world as floating point values. The point represents one of the lower edge points of the plane representing the start of the unique stunt jump.
 
|-
 
|<center>StartUpperX, StartUpperY, StartUpperZ</center>||These values are used in the same way as the first ones. They represent a point on the upper edge of the plane (diagonal opposite).
 
|-
 
|<center>TargetLowerX, TargetLowerY, TargetLowerZ</center>||A point on the lower edge of the ''target plane''.
 
|-
 
|<center>TargetUpperX, TargetUpperY, TargetUpperZ</center>||A point on the upper edge of the ''target plane'' (diagonal opposite).
 
|-
 
|<center>CameraX, CameraY, CameraZ</center>||The position of the camera.
 
|-
 
|<center>Reward</center>||The amount of cash the player earns after he has finished this stunt successfully.
 
|}
 
  
===TCYC===
+
So the name of our binary <code>.ipl</code> would be as below,
Creates black sky if you enter the zone. Also exists for all towns in countryside. Probably custom weather?
 
  
''San Andreas format''
+
test_stream0.ipl
  X1, Y1, Z1, X2, Y2, Z2, ?, ?, ?, ?, ?
+
test_stream1.ipl
 +
test_stream2.ipl
 +
...
 +
  etc
  
===[[AUZO]]===
+
Then we'll need to import them in any of the [[IMG_archive|IMG Archives]].
This creates an audio if you enter the zone.
 
  
''San Andreas format 1''
+
For a detailed tutorial see [https://gtaforums.com/topic/911878-sacreating-custom-binary-ipl/ here].
Name, ID, Switch, X1, Y1, Z1, X2, Y2, Z2
 
  
{|{{Prettytable}} width="100%" class="collapsible collapsed"
+
== Format ==
!width="250px"|Identifier
 
!Description
 
|-
 
|<center>Name</center>||Name used to identify the zone
 
|-
 
|<center>ID</center>||[[AUZO#Auzo_Audio_IDs|Sound]] played in this zone
 
|-
 
|<center>Switch</center>||Makes the audio always on or always off. Can be forced through the [[script]] using opcode [[0917]]
 
|-
 
|<center>X1, Y1, Z1</center>||A point which corresponds to the corner of the box, usually the lower left.
 
|-
 
|<center>X2, Y2, Z2</center>||A point which corresponds to the opposite corner of the box, usually the upper right.
 
|}
 
  
''San Andreas format 2''
+
The following table contains all known sections in the item placement. The supported games column lists games that support the sections but it doesn't necessarily mean they're functional in the games.
Name, ID, Switch, X, Y, Z, Radius
 
  
{|{{Prettytable}} width="100%" class="collapsible collapsed"
+
{|class="wikitable center-col-1 center-col-2" style="width: 100%;"
!width="250px"|Identifier
+
!style="width: 7em;"|Section
 +
!style="width: 8em;"|Supported games
 
!Description
 
!Description
 
|-
 
|-
|<center>Name</center>||Name used to identify the zone.
+
|<code>[[INST|inst]]</code>||{{Icon|t}} {{Icon|4}}||Places objects defined in <code>[[OBJS|objs]]</code>, <code>[[TOBJ|tobj]]</code>, <code>[[ANIM|anim]]</code>, or <code>[[TANM|tanm]]</code> into the world.
 
|-
 
|-
|<center>ID</center>||[[AUZO#Auzo_Audio_IDs|Sound]] played in this zone.
+
|<code>[[ZONE|zone]]</code>||{{Icon|t}} {{Icon|4}}||Creates map, navigation, and info zones.
|-
 
|<center>Switch</center>||Makes the audio always on or always off. Can be forced through the [[script]] using opcode [[0917]].
 
|-
 
|<center>X, Y, Z</center>||The center of the zone.
 
|-
 
|<center>Radius</center>||The distance the sound will be heard.
 
|}
 
 
 
===[[MULT]]===
 
''San Andreas and GTA4 only''
 
 
 
In San Andreas, this was never used in the game. This section is currently unknown and may never be known; it is ignored by the game.
 
 
 
===[[CARS (IPL Section)|CARS]]===
 
Creates a parked car generator
 
 
 
''San Andreas format''
 
PosX, PosY, PosZ, Angle, CarID, PrimCol, SecCol, ForceSpawn, Alarm, DoorLock, Unknown1, Unknown2
 
 
 
{|{{Prettytable}} width="100%" class="collapsible collapsed"
 
!width="250px"|Identifier
 
!Description
 
 
|-
 
|-
|<center>PosX, PosY, PosZ</center>||The real world coordinates of the car as floating point values.
+
|<code>[[CULL|cull]]</code>||{{Icon|t}} {{Icon|4}}||Creates zones with special attributes.
 
|-
 
|-
|<center>Angle</center>||The angle of the car in radians (degrees/~57.2958).
+
|<code>[[PICK|pick]]</code>||{{Icon|3|16||GTA III (not functional)}} {{Icon|VC|16||Vice City (not functional)}} {{Icon|SA}} {{Icon|4|16||GTA IV (not functional)}}||Creates pickups. This section is only functional in San Andreas.
 
|-
 
|-
|<center>CarID</center>||The ID number of the car as defined in the [[IDE]] or -1 for random car parks (influenced by the <code>[[popcycle.dat]]</code> file)
+
|<code>[[PATH|path]]</code>||{{Icon|VC}}||Creates waypoints for random ''NPC'' spawns.<br>Note: this section is also present in ''San Andreas'' and ''GTA IV''. It is used as a base for ''Rockstar's'' paths compiler, but gets ignored by the games. For more information see: [[Paths]].
 
|-
 
|-
|<center>PrimCol, SecCol</center>||A car color defined in the <code>[[carcols.dat]]</code> file. If it is set to -1 the color will be randomly chosen.
+
|<code>[[OCCL|occl]]</code>||{{Icon|VC}} {{Icon|SA}} {{Icon|4}}||Creates occlusion zones.
 
|-
 
|-
|<center>ForceSpawn</center>||Vehicles spawn more reliably if this is set to 1.
+
|<code>[[MULT|mult]]</code>||{{Icon|SA|16||San Andreas (not functional)}} {{Icon|4|16||GTA IV (not functional)}}||This section is not functional.
 
|-
 
|-
|<center>Alarm</center>||The probability of triggering the alarm system (0 - 100).
+
|<code>[[GRGE|grge]]</code>||{{Icon|SA}} {{Icon|4}}||Creates garages.
 
|-
 
|-
|<center>DoorLock</center>||The probability that the doors of the vehicle is locked (0 - 100).
+
|<code>[[ENEX|enex]]</code>||{{Icon|SA}} {{Icon|4}}||Creates entry-exit markers.
 
|-
 
|-
|<CeNtEr>Unknown1, Unknown2</CeNtEr>||Unknown (Zero).
+
|<code>[[CARS (IPL Section)|cars]]</code>||{{Icon|SA}} {{Icon|4}}||Creates car generators (parked cars).
|}
 
 
 
===[[OCCL]]===
 
Creates zones for separated rendering.
 
 
 
''Vice City and San Andreas format''
 
mid x, mid y, bottom height z, width x, width y, height from bottom height to top, rotation
 
 
 
{|{{Prettytable}} width="100%" class="collapsible collapsed"
 
!width="250px"|Identifier
 
!Description
 
 
|-
 
|-
|<center>mid x, mid y</center>||The middle of the occlusion box in X and Y coordinates.
+
|<code>[[JUMP|jump]]</code>||{{Icon|SA}} {{Icon|4|16||GTA IV (not functional)}}||Creates stunt jumps. This section is not functional in GTA IV.
 
|-
 
|-
|<center>bottom height z</center>||The bottom Z coordinate of the occlusion box.
+
|<code>[[TCYC|tcyc]]</code>||{{Icon|SA}} {{Icon|4}}||Creates time cycles modifiers.
 
|-
 
|-
|<center>width x, width y</center>||The width of the occlusion box in units.
+
|<code>[[AUZO|auzo]]</code>||{{Icon|SA}} {{Icon|4|16||GTA IV (not functional)}}||Creates [[Stream|audio]] zones. This section is not functional in GTA IV.
 
|-
 
|-
|<center>height from bottom height to top</center>||The difference in height from the top of the occlusion box to the bottom.
+
|<code>[[MZON|mzon]]</code>||{{Icon|4}}||&ndash;
 
|-
 
|-
|<center>rotation</center>||The rotation of the occlusion box in angles.
+
|<code>[[VNOD|vnod]]</code>||{{Icon|4}}||Extended format of <code>path</code> &ndash; apparently only used for [[Multiplayer#GTA_4|multiplayer]] mode.
|}
 
 
 
===[[ZONE]]===
 
''GTA III and Vice City format''
 
Name, Type, X1, Y1, Z1, X2, Y2, Z2, Island
 
''Vice City and San Andreas format''
 
Name, Type, X1, Y1, Z1, X2, Y2, Z2, Island, Text
 
 
 
{|{{Prettytable}} width="100%" class="collapsible collapsed"
 
!width="250px"|Identifier
 
!Description
 
 
|-
 
|-
|<center>Name</center>||ID name of the zone
+
|<code>[[LINK|link]]</code>||{{Icon|4}}||&ndash;
 
|-
 
|-
|<center>Type</center>||Type of zone
+
|<code>[[BLOK|blok]]</code>||{{Icon|4|16||GTA IV (not functional)}}||This section is not functional. Appears to be used to allocate responsibilities during the development stage of ''GTA IV'', but also could be used to place [[Ped_Event|decision makers]].
 
|-
 
|-
|<center>X1, Y1, Z1</center>||The bottom left corner of the zone
+
|<code>[[MLO+|mlo+]]</code>||{{Icon|4}}||<code>mlo</code> placement &ndash; Used to place offsets for ''GTA IV's'' [[interior]]s. The ''interiors'' themselves get placed inside the [[IDE]] file section <code>[[MLO|mlo]]</code>.
 
|-
 
|-
|<center>X2, Y2, Z2</center>||The top right corner of the zone
+
|<code>[[2DFX (IPL Section)|2dfx]]</code>||{{Icon|4}}||Used to make many game effects, for example - Particle.
 
|-
 
|-
|<center>Island</center>||The island number
+
|<code>[[LODM|lodm]]</code>||{{Icon|4}}||&ndash;
 
|-
 
|-
|<center>Text</center>||Text of the zone used from the [[GXT]] file
+
|<code>[[SLOW|slow]]</code>||{{Icon|4}}||Unknown for what it is responsible, used very rare and only in two extended .WPL. Section contains a box.
 +
<!--|[[RTFX|rtfx]]||{{Icon|4}}||&ndash;-->
 
|}
 
|}
  
===BLOK===
 
''GTA4 only''
 
 
===VNOD===
 
''GTA4 only''
 
 
===LINK===
 
''GTA4 only''
 
 
===MLO+===
 
''GTA4 only''
 
  
===RTFX===
+
== Tools ==
''GTA4 only''
 
  
===LODM===
+
* [[KEd]] &ndash; By {{U|JernejL}}
''GTA4 only''
+
* [[MEd]] &ndash; By {{U|Tonywob}}
 +
* {{GTAF|315944|IPL Helper}} &ndash; By {{U|Xmen}}
 +
* [https://www.gtainside.com/en/sanandreas/tools/120305-binary-de-compiler/ Binary (De-)Compiler] &ndash; By {{U|ocram88}}
 +
* {{GTAF|429526|SA Binary IPL Exporter for 3DS Max}} &ndash; by {{U|Gforce}}
 +
* [https://gtaforums.com/topic/857375-fastman92-processor/ fastman92processor] &ndash; By {{U|fastman92}}
  
===SLOW===
+
== See also ==
''GTA4 only''
 
  
===2DFX===
+
* [[Item definition]]
''GTA4 only''
+
* [[WPL]] &ndash; Major ''GTA IV'' item placement file.
  
==Useful Tools==
+
== External links ==
* [[KEd]]
 
* {{GTAF|315944|IPL Helper}} - by {{U|Xmen}}
 
* [http://www.gta.ocram-net.de/index_all.php?downloadsa=11 Binary (De-)Compiler] - By {{U|ocram88}}
 
  
==External Links==
 
 
* {{GTAF|118193|GTA3/VC Map File Documentation and Troubleshooting}} - Topic by {{U|Opius}} covering general features of IPL files in GTA3 and GTA VC.
 
* {{GTAF|118193|GTA3/VC Map File Documentation and Troubleshooting}} - Topic by {{U|Opius}} covering general features of IPL files in GTA3 and GTA VC.
* {{GTAF|93990|Paths Documentation for SA, VC and GTA3}} - Topic by {{U|REspawn}} detailing Vice City's paths
 
 
* {{GTAF|202532|GTA SA IPL Documentation}} - Topic by {{U|spaceeinstein}} covering details of the IPL format in GTA SA.
 
* {{GTAF|202532|GTA SA IPL Documentation}} - Topic by {{U|spaceeinstein}} covering details of the IPL format in GTA SA.
* {{GTAF|331835|Enex Documentation}} - Topic by {{U|OrionSR}}
 
* {{GTAF|post|188549|3177288|Explanation of GTA SA LOD System}} - Post by {{U|steve-m}} explaining the [[LOD]] system for IPL files in GTA SA.
 
* [http://projectcerbera.com/gta/vc/tutorials/paths Explanation of the path-section in a VC IPL] - by {{U|Cerbera}}
 
  
{{GTA4-navi}}
+
{{N|IV|VCS|LCS|SA|VC|III}}
{{SA-navi}}
 
  
[[Category:Map Formats]][[Category:GTA 3]][[Category:GTA VC]][[Category:GTA SA]]
+
[[Category:Map Formats]]

Latest revision as of 23:12, 12 January 2021

Item Placement
IPL Sections:
2DFX AUZO BLOK CARS CULL ENEX GRGE
INST JUMP LINK LODM MLO+ MULT OCCL
PATH PICK RTFX SLOW TCYC VNOD ZONE

Item placement files, usually identified by the file extension .ipl, are a part of the map system and used to create and place (for example) different objects, zones of special behavior or paths in the world. All games support standard item placement files which are mostly stored in plain text format that can be opened and edited using any text-editing program (like Notepad), but there are tools to simplify editing of the newly introduced Binary Ipl in San Andreas. Most of the placement information in GTA IV is stored inside of binary files (see WPL).

Text Format

The structure and format of the plain text item placement files are similar to that of the item definition files. The game searches for these files in gta.dat.They allow comments by the character #.Lines starting with this character simply get ignored by the game & empty lines are also allowed. Since these files contain different types of data a keyword is required for the game to recognize each set of data.

 <keyword>
 *lines*
 end

More information about these keywords can be found below in the Fomats section.

See also: Item Definition § Overview


Binary Format

San Andreas introduced a simple binary format of item placement files. They are stored as "streaming files" inside the archive files. Editing them requires an special editor (see below). The format is pretty simple and their possibilities are not completely used by Rockstar. By default they do only support inst and cars sections. It is unconfirmed if other sections also can be used or if they are just stubs which are not implemented. Anyway, their binary format is completely unknown.

This section is incomplete. You can help by fixing and expanding it.

Header

Each binary placement information file starts with a 4-Byte identifier followed by a header containing information about the content of the files.

4b  - CHAR[4]   - Always "bnry"
4b  - INT32     - Number of item instances
4b  - INT32     - Number of unknown 1 (CULL ?)
4b  - INT32     - Number of unknown 2 (GRGE ?)
4b  - INT32     - Number of unknown 3 (ENEX ?)
4b  - INT32     - Number of parked cars
4b  - INT32     - Number of unknown 4 (PICK ?)
4b  - INT32     - Offset of item instances (0x4C by default)
4b  - INT32     - Size of item instances (unused - always 0)
4b  - INT32     - Offset of unknown 1
4b  - INT32     - Size of unknown 1 (unused - always 0)
4b  - INT32     - Offset of unknown 2
4b  - INT32     - Size of unknown 2 (unused - always 0)
4b  - INT32     - Offset of unknown 3
4b  - INT32     - Size of unknown 3 (unused - always 0)
4b  - INT32     - Offset of parked cars
4b  - INT32     - Size of parked cars (unused - always 0)
4b  - INT32     - Offset of unknown 4
4b  - INT32     - Size of unknown 4 (unused - always 0)

The header is followed by the arrays of the entries.INST arrays have a size of 40 bytes per structure, and cars have 48 bytes.

INST

4b  - FLOAT    - Position X
4b  - FLOAT    - Position Y
4b  - FLOAT    - Position Z
4b  - FLOAT    - Rotation X
4b  - FLOAT    - Rotation Y
4b  - FLOAT    - Rotation Z
4b  - FLOAT    - Rotation W
4b  - INT32    - Object ID (as an index to the IDE)
4b  - INT32    - Interior
4b  - INT32    - LOD index

CARS

CARS is one of the known sections which can be used in binary format inside streaming files. It's format is similar to the plain text format:

4b  - FLOAT    - Position X
4b  - FLOAT    - Position Y
4b  - FLOAT    - Position Z
4b  - FLOAT    - Angle (Around Z-Axis)
4b  - INT32    - Object ID (an index to an vehicle definition)
4b  - INT32    - Primary color
4b  - INT32    - Secondary color
4b  - INT32    - Force spawn (Windows BOOL - see WinDef.h)
4b  - INT32    - Alarm probability
4b  - INT32    - Locked probability
4b  - INT32    - Unknown1 (Could be tertiary color)
4b  - INT32    - Unknown2 (Could be quarterdeck color)

Load a custom file

A basic comparison between a normal .ipl and a binary .ipl.

Normal:

15072, PLS_carpark, 0, 2579.8796445, 645.50208432, 9.93, 0, 0, 0, 1, -1

Binary:

15072, dummy, 0, 2579.8796445, 645.50208432, 9.93, 0, 0, 0, 1, -1

The object name is basically ignored in .ipl

Now for converting a text .ipl to binary .ipl and vice-versa,we can use fastman92-processor.Its a pretty simple program we can get most of the work done by editing the fastman92_processor.bat(Or can use Binary (De-)Compiler).

After converting to binary form we have to create a normal .ipl file and index it in Gta.dat.Lets suppose the name of our .ipl is

test.ipl

So the name of our binary .ipl would be as below,

test_stream0.ipl 
test_stream1.ipl 
test_stream2.ipl 
...
etc

Then we'll need to import them in any of the IMG Archives.

For a detailed tutorial see here.

Format

The following table contains all known sections in the item placement. The supported games column lists games that support the sections but it doesn't necessarily mean they're functional in the games.

Section Supported games Description
inst GTA III Vice City San Andreas GTA IV Places objects defined in objs, tobj, anim, or tanm into the world.
zone GTA III Vice City San Andreas GTA IV Creates map, navigation, and info zones.
cull GTA III Vice City San Andreas GTA IV Creates zones with special attributes.
pick GTA III (not functional) Vice City (not functional) San Andreas GTA IV (not functional) Creates pickups. This section is only functional in San Andreas.
path Vice City Creates waypoints for random NPC spawns.
Note: this section is also present in San Andreas and GTA IV. It is used as a base for Rockstar's paths compiler, but gets ignored by the games. For more information see: Paths.
occl Vice City San Andreas GTA IV Creates occlusion zones.
mult San Andreas (not functional) GTA IV (not functional) This section is not functional.
grge San Andreas GTA IV Creates garages.
enex San Andreas GTA IV Creates entry-exit markers.
cars San Andreas GTA IV Creates car generators (parked cars).
jump San Andreas GTA IV (not functional) Creates stunt jumps. This section is not functional in GTA IV.
tcyc San Andreas GTA IV Creates time cycles modifiers.
auzo San Andreas GTA IV (not functional) Creates audio zones. This section is not functional in GTA IV.
mzon GTA IV
vnod GTA IV Extended format of path – apparently only used for multiplayer mode.
link GTA IV
blok GTA IV (not functional) This section is not functional. Appears to be used to allocate responsibilities during the development stage of GTA IV, but also could be used to place decision makers.
mlo+ GTA IV mlo placement – Used to place offsets for GTA IV's interiors. The interiors themselves get placed inside the IDE file section mlo.
2dfx GTA IV Used to make many game effects, for example - Particle.
lodm GTA IV
slow GTA IV Unknown for what it is responsible, used very rare and only in two extended .WPL. Section contains a box.


Tools

See also

External links