Difference between revisions of "WPL"

From GTAMods Wiki
Jump to navigation Jump to search
(Binary Headers)
(Binary Headers)
Line 7: Line 7:
 
Each world placement file starts with one single header followed by the object placement information. The structure for the header is very simple:
 
Each world placement file starts with one single header followed by the object placement information. The structure for the header is very simple:
  
  4b - UINT32 - (Main file header)(Value always = 3)
+
  4b - UINT32 - (Main file header)         (Value always = 3)
  4b - UINT32 - (Section 0)  - Instances (Value always = Amount of Object instances)
+
  4b - UINT32 - (Section 0)  - Instances   (Value always = Amount of Object instances)
  4b - UINT32 - (Section 1)  - Unused (Value always = 0)
+
  4b - UINT32 - (Section 1)  - Unused       (Value always = 0)
  4b - UINT32 - (Section 2)  - Garage (Value always = Amount of Object instances)
+
  4b - UINT32 - (Section 2)  - Garage       (Value always = Amount of Object instances)
  4b - UINT32 - (Section 3)  - Parked Cars (Value always = Amount of Object instances) (only used in * _stream *. wpl files)  
+
  4b - UINT32 - (Section 3)  - Parked Cars (Value always = Amount of Object instances)(only used in * _stream *. wpl files)  
  4b - UINT32 - (Section 4)  - Cull (Value always = Amount of Object instances)
+
  4b - UINT32 - (Section 4)  - Cull         (Value always = Amount of Object instances)
  4b - UINT32 - (Section 5)  - Unused (Value always = 0)
+
  4b - UINT32 - (Section 5)  - Unused       (Value always = 0)
  4b - UINT32 - (Section 6)  - Unused (Value always = 0)
+
  4b - UINT32 - (Section 6)  - Unused       (Value always = 0)
  4b - UINT32 - (Section 7)  - Unused (Value always = 0)
+
  4b - UINT32 - (Section 7)  - Unused       (Value always = 0)
  4b - UINT32 - (Section 8)  - Strbig (Value always = Amount of Object instances)(only used in * _strbig *. wpl files)  
+
  4b - UINT32 - (Section 8)  - Strbig       (Value always = Amount of Object instances)(only used in * _strbig *. wpl files)  
  4b - UINT32 - (Section 9)  - LODcull (Value always = Amount of Object instances)(only used in lodcull_ *. wpl files)  
+
  4b - UINT32 - (Section 9)  - LODcull     (Value always = Amount of Object instances)(only used in lodcull_ *. wpl files)  
  4b - UINT32 - (Section 10) - Unknown (Zone or Cull) (Value always = Amount of Object instances)
+
  4b - UINT32 - (Section 10) - Zone or Cull (Value always = Amount of Object instances)
  4b - UINT32 - (Section 11) - Unused (Value always = 0)
+
  4b - UINT32 - (Section 11) - Unused       (Value always = 0)
  4b - UINT32 - (Section 12) - Unused (Value always = 0)
+
  4b - UINT32 - (Section 12) - Unused       (Value always = 0)
  4b - UINT32 - (Section 13) - Unused (Value always = 0)
+
  4b - UINT32 - (Section 13) - Unused       (Value always = 0)
  4b - UINT32 - (Section 14) - Unused (Value always = 0)
+
  4b - UINT32 - (Section 14) - Unused       (Value always = 0)
  4b - UINT32 - (Section 15) - Unknown (Blok) (Value always = Amount of Object instances)
+
  4b - UINT32 - (Section 15) - Blok         (Value always = Amount of Object instances)
  
 
The placement information corresponds to the previous [[inst|instance]] section of the <code>.ipl</code> files. They have a binary structure like the [[Binary_IPL|binary ipl]] files introduced with [[San Andreas]]:
 
The placement information corresponds to the previous [[inst|instance]] section of the <code>.ipl</code> files. They have a binary structure like the [[Binary_IPL|binary ipl]] files introduced with [[San Andreas]]:

Revision as of 23:38, 4 August 2009

WPL is the format of the map-related files similar to IPLs from the previous games. It can be edited using WPL Manager.

File Format

Binary Headers

Each world placement file starts with one single header followed by the object placement information. The structure for the header is very simple:

4b - UINT32 - (Main file header)          (Value always = 3)
4b - UINT32 - (Section 0)  - Instances    (Value always = Amount of Object instances)
4b - UINT32 - (Section 1)  - Unused       (Value always = 0)
4b - UINT32 - (Section 2)  - Garage       (Value always = Amount of Object instances)
4b - UINT32 - (Section 3)  - Parked Cars  (Value always = Amount of Object instances)(only used in * _stream *. wpl files) 
4b - UINT32 - (Section 4)  - Cull         (Value always = Amount of Object instances)
4b - UINT32 - (Section 5)  - Unused       (Value always = 0)
4b - UINT32 - (Section 6)  - Unused       (Value always = 0)
4b - UINT32 - (Section 7)  - Unused       (Value always = 0)
4b - UINT32 - (Section 8)  - Strbig       (Value always = Amount of Object instances)(only used in * _strbig *. wpl files) 
4b - UINT32 - (Section 9)  - LODcull      (Value always = Amount of Object instances)(only used in lodcull_ *. wpl files) 
4b - UINT32 - (Section 10) - Zone or Cull (Value always = Amount of Object instances)
4b - UINT32 - (Section 11) - Unused       (Value always = 0)
4b - UINT32 - (Section 12) - Unused       (Value always = 0)
4b - UINT32 - (Section 13) - Unused       (Value always = 0)
4b - UINT32 - (Section 14) - Unused       (Value always = 0)
4b - UINT32 - (Section 15) - Blok         (Value always = Amount of Object instances)

The placement information corresponds to the previous instance section of the .ipl files. They have a binary structure like the binary ipl files introduced with San Andreas:

Section 0 - 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 - UINT32 - Model name hash
4b - UINT32 - Unknown
4b - INT32  - LOD Index 
4b - UINT32 - Unknown
4b - FLOAT  - Unknown

Rotation information as Quarternion

Section 2 - Garages

4b -  FLOAT   - Position X1
4b -  FLOAT   - Position Y1
4b -  FLOAT   - Position Z1
4b -  FLOAT   - Position X2
4b -  FLOAT   - Position Y2
4b -  FLOAT   - Position X3
4b -  FLOAT   - Position Y3
4b -  FLOAT   - Position Z3
4b -  UINT32  - DoorType
4b -  UINT32  - GarageType
4b -  UINT32  - hash
4b -  UINT32  - Unknown

X1, Y1, Z1 = lower left vertex position, X2, Y3, Z3 = upper right vertex position, X3, Y2 = lower left vertex position for Garage entrance

Section 3 - Parked Cars

only used in the (*_stream*.wpl) files

4b - FLOAT  - Position X
4b - FLOAT  - Position Y
4b - FLOAT  - Position Z
4b - FLOAT  - Unknown
4b - FLOAT  - Unknown
4b - FLOAT  - Unknown
4b - UINT32 - Model name hash
4b - INT32  - Unknown
4b - INT32  - Unknown
4b - INT32  - Unknown
4b - INT32  - Unknown
4b - INT32  - Unknown
4b - INT32  - Unknown
4b - INT32  - Unknown

Section 4 - CULL

these are used for interiors directly accessed from outdoor locations.

4b -  FLOAT  - Position X1
4b -  FLOAT  - Position Y1
4b -  FLOAT  - Position Z1
4b -  FLOAT  - Position X2
4b -  FLOAT  - Position Y2
4b -  FLOAT  - Position Z2
4b -  INT32  - Unknown
4b -  INT32  - Unknown
4b -  INT32  - Unknown
4b -  INT32  - Unknown
4b -  UINT32 - Model name hash

X1, Y1, Z1 = lower left vertex position, X2, Y2, Z2 = upper right vertex position

Section 8 - Unknown (Strbig)

only used in (*_strbig*.wpl) files.

24b - String - Model name
4b  - UINT32 - Unknown
4b  - UINT32 - Unknown
4b  - UINT32 - Unknown
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

Section 9 - LODcull

only used in (lodcull_x.wpl) files, usually located in 'Rockstar Games\Grand Theft Auto IV\pc\data\maps\generic' folder.

4b -  FLOAT  - Position X1
4b -  FLOAT  - Position Y1
4b -  FLOAT  - Position Z1
4b -  FLOAT  - Position X2
4b -  FLOAT  - Position Y2
4b -  FLOAT  - Position Z2
4b  - UINT32 - unknown UINT32
4b  - UINT32 - Hash 1
4b  - UINT32 - Hash 2
4b  - UINT32 - Hash 3
4b  - UINT32 - Hash 4
4b  - UINT32 - Hash 5
4b  - UINT32 - Hash 6
4b  - UINT32 - Hash 7
4b  - UINT32 - Hash 8
4b  - UINT32 - Hash 9
4b  - UINT32 - Hash 10
32b - String - Model name 1
32b - String - Model name 2
32b - String - Model name 3
32b - String - Model name 4
32b - String - Model name 5
32b - String - Model name 6
32b - String - Model name 7
32b - String - Model name 8
32b - String - Model name 9
32b - String - Model name 10

X1, Y1, Z1 = lower left vertex position, X2, Y2, Z2 = upper right vertex position

Section 10 - Unknown (Zone or Cull)

4b - FLOAT - Position X1
4b - FLOAT - Position Y1
4b - FLOAT - Position Z1
4b - FLOAT - Position X2
4b - FLOAT - Position Y2
4b - FLOAT - Position Z2

X1, Y1, Z1 = lower left vertex position, X2, Y2, Z2 = upper right vertex position


XPL

In the XBox 360's version of GTA 4 same files have the extension .xpl. The XPL and WPL formats are same, but due to the fact XPL files are used on the Xenon platform its data is stored in the big-endian order.

Tools

External Link