War3map.w3i
From Source Peek Wiki
It contains some of the info displayed when you start a game.
Contents |
Reign of Chaos Format
| Type | Description | |
|---|---|---|
| int | file format version = 18 | |
| int | number of saves (map version) | |
| int | editor version (little endian) | |
| String | map name | |
| String | map author | |
| String | map description | |
| String | players recommended | |
| float (8) | "Camera Bounds" as defined in the JASS file | |
| int | Camera Bounds Complments (A) | |
| int | Camera Bounds Complments (B) | |
| int | Camera Bounds Complments (C) | |
| int | Camera Bounds Complments (D) | |
| int | map playable area width E* (see note 1) | |
| int | map playable area height F* (see note 1) | |
| int | flags (see below) | |
| char | map main ground type (see below) | |
| int | Campaign background number (-1 = none) | |
| String | Map loading screen text | |
| String | Map loading screen title | |
| String | Map loading screen subtitle | |
| int | Map loading screen number (-1 = none) | |
| String | Prologue screen text | |
| String | Prologue screen title | |
| String | Prologue screen subtitle | |
| int | max number "MAXPL" of players | |
| array of structures | then, there is MAXPL times a player data like described below. | |
| int | max number "MAXFC" of forces | |
| int | Forces Flags (see below) | |
| int | unknown (usually -1) | |
| array of structures | then, there is MAXFC times a force data like described below. | |
| int | if 0 it means that we've reached the end of the w3i. if it's non-zero, the following bytes define special settings for the map (techtree, upgrades,...) |
note 1:
- map width = A + E + B
- map height = C + F + D
Flags
- 0x0001: 1=hide minimap in preview screens
- 0x0002: 1=modify ally priorities
- 0x0004: 1=melee map
- 0x0008: 1=playable map size was large and has never been reduced to medium (?)
- 0x0010: 1=masked area are partially visible
- 0x0020: 1=fixed player setting for custom forces
- 0x0040: 1=use custom forces
- 0x0080: 1=use custom techtree
- 0x0100: 1=use custom abilities
- 0x0200: 1=use custom upgrades
- 0x0400: 1=map properties menu opened at least once since map creation (?)
- 0x0800: 1=show water waves on cliff shores
- 0x1000: 1=show water waves on rolling shores
Forces Flags
- 0x00000001: allied (force 1)
- 0x00000002: allied victory
- 0x00000004: share vision
- 0x00000010: share unit control
- 0x00000020: share advanced unit control
Ground Types
| Key | Description | |
|---|---|---|
| A | Ashenvale | |
| X | City Dalaran |
Player Data
| Type | Description | |
|---|---|---|
| int | number | |
| int | player type 1=Human, 2=Computer, 3=Neutral, 4=Rescuable | |
| int | player race 1=Human, 2=Orc, 3=Undead, 4=Night Elf | |
| int | 00000001 = fixed start position | |
| String | Player name | |
| float | Starting coordinate X | |
| float | Starting coordinate Y | |
| int | ally low priorities flags (bit "x"=1 --> set for player "x") | |
| int | ally high priorities flags (bit "x"=1 --> set for player "x") |
Forces Data
| Type | Description | |
|---|---|---|
| String | Force name | |
| int | flags (see force flags) | |
| int | players (bitmask) |
Frozen Throne Format
int: file format version = 19 (and 25 thx PitzerMike) int: number of saves (map version) int: editor version (little endian) String: map name String: map author String: map description String: players recommended float[8]: "Camera Bounds" as defined in the JASS file int[4]: camera bounds complements* (see note 1) (ints A, B, C and D) int: map playable area width E* (see note 1) int: map playable area height F* (see note 1)
*note 1: map width = A + E + B map height = C + F + D
int: flags
0x0001: 1=hide minimap in preview screens 0x0002: 1=modify ally priorities 0x0004: 1=melee map 0x0008: 1=playable map size was large and has never been reduced to medium (?) 0x0010: 1=masked area are partially visible 0x0020: 1=fixed player setting for custom forces 0x0040: 1=use custom forces 0x0080: 1=use custom techtree 0x0100: 1=use custom abilities 0x0200: 1=use custom upgrades 0x0400: 1=map properties menu opened at least once since map creation (?) 0x0800: 1=show water waves on cliff shores 0x1000: 1=show water waves on rolling shores 0x2000: 1=unknown 0x4000: 1=unknown 0x8000: 1=unknown
char: map main ground type
Example: 'A'= Ashenvale, 'X' = City Dalaran
int: Campaign background number (-1 = none) String: Map loading screen text String: Map loading screen title String: Map loading screen subtitle String: unknown int: Map loading screen number (-1 = none) (v25): String: (? need some investigations, should be the path of the custom loading screen) String: Prologue screen text String: Prologue screen title String: Prologue screen subtitle String: unknown float: unknown (fog z start?) float: unknown (fog z end?) float: unknown (fog intensity?) byte[10]: ? (maybe some strings?) int: unknown (-1) int: max number "MAXPL" of players array of structures: then, there is MAXPL times a player data like described below. int: max number "MAXFC" of forces int: Foces Flags
0x00000001: allied (force 1) 0x00000002: allied victory 0x00000004: share vision 0x00000010: share unit control 0x00000020: share advanced unit control
int: unknown (usually -1) array of structures: then, there is MAXFC times a force data like described below. int: if 0 it means that we reach the end of the w3i
if it's non-zero, the following bytes define special settings for the map (techtree, upgrades,...)
Players data format: int: unknown int: player type
1=Human, 2=Computer, 3=Neutral, 4=Rescuable
int: player race
1=Human, 2=Orc, 3=Undead, 4=Night Elf
int: 00000001 = fixed start position String: Player name float: Starting coordinate X float: Starting coordinate Y int: ally low priorities flags (bit "x"=1 --> set for player "x") int: ally high priorities flags (bit "x"=1 --> set for player "x")
Forces data format: String: Force name int: unknown int: unknown int: unknown
