38 lines
1.4 KiB
Markdown
38 lines
1.4 KiB
Markdown
\[\[Category Packet\]\] \[\[Category Packet 317\]\]
|
|
{{packet\|name=Construct map region\|description=Constructs a new map
|
|
region from a palette of 8x8 tiles.\|opcode=241\|type=Variable
|
|
Short\|length=N/A\|revision=317}} == Construct Map Region ==
|
|
|
|
=== Description ===
|
|
|
|
The construct map region packet sends a dynamic map region that is
|
|
constructed by using groups of 8\*8 tiles. It is generally used for
|
|
instanced areas, such as fight caves, and in later revisions, player
|
|
owned houses.
|
|
|
|
=== Packet Structure ===
|
|
|
|
{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Standard
|
|
data types\|Short\]\] \[\[Data Types\#Non Standard Data Types\|Special
|
|
A\]\] \| The region Y coordinate (absolute Y coordinate / 8), plus 6.
|
|
\|- \| \[\[\#Bit block\|Bit block\]\] \| See below. \|- \| \[\[Data
|
|
Types\#Standard data types\|Short\]\] \| The region X coordinate
|
|
(absolute X coordinate / 8), plus 6. \|}
|
|
|
|
==== Bit block ====
|
|
|
|
The bit block actually contains the 'palette' of map regions to make up
|
|
the new region.
|
|
|
|
There is a loop, like this, used to construct it:
|
|
|
|
for(int z = 0; z \< 4; z++) { for(int x = 0; x \< 13; x++) { for(int y =
|
|
0; y \< 13; y++) { // data for this region } } }
|
|
|
|
The individual format in each iteration of the loop is:
|
|
|
|
- '''1 bit''' - set to 0 to indicate to display nothing, 1 to display
|
|
a region
|
|
- '''26 bits''' - if the flag above is set to 1 - region x \<\< 14 \|
|
|
region y \<\< 3
|