C1 46 - ChangeTerrainAttributes (by server)
Is sent when
The server wants to alter the terrain attributes of a map at runtime.
Causes the following actions on the client side
The client updates the terrain attributes on its side.
Structure
Index | Length | Data Type | Value | Description |
---|---|---|---|---|
0 | 1 | Byte | 0xC1 | Packet type |
1 | 1 | Byte | Packet header - length of the packet | |
2 | 1 | Byte | 0x46 | Packet header - packet type identifier |
3 | 1 | Boolean | false | Type |
4 | 1 | TerrainAttributeType | Attribute | |
5 | 1 | Boolean | RemoveAttribute; When this is true, the attribute is removed on the client side. If it’s false, then the attribute is added. | |
6 | 1 | Byte | AreaCount | |
7 | TerrainArea.Length * AreaCount | Array of TerrainArea | Areas |
TerrainArea Structure
Defines the area which should be changed.
Length: 4 Bytes
Index | Length | Data Type | Value | Description |
---|---|---|---|---|
0 | 1 | Byte | StartX | |
1 | 1 | Byte | StartY | |
2 | 1 | Byte | EndX | |
3 | 1 | Byte | EndY |
TerrainAttributeType Enum
Defines the attribute which should be set/unset. It’s a Flags enumeration.
Value | Name | Description |
---|---|---|
1 | Safezone | The coordinate is a safezone. |
2 | Character | The coordinate is occupied by a character. |
4 | Blocked | The coordinate is blocked and can’t be passed by a character. |
8 | NoGround | The coordinate is blocked, because there is no ground and can’t be passed by a character. |
16 | Water | The coordinate is blocked by water and can’t be passed by a character. |