From The Mana World
m (→‎chrif.cpp recv: actually make it a table)
 
(18 intermediate revisions by 5 users not shown)
Line 1: Line 1:
Note: you can get a more up-to-date, but less detail, description in [https://github.com/themanaworld/tmwa/blob/master/tools/protocol.py the repository's protocol generator script]
== Overview ==
=== Packet Alignment ===
The alignment of the data within the packet payload can cause additional overhead if the data is not properly aligned to word boundaries. For example, in a 32-bit application, a word is a sequence of two eight-bit bytes. Any data that occupies 2 bytes or larger on this platform should always start at a (2 * n) offset (0, 2, 4, etc). Any data that is less than 2 bytes can start at any offset, so long as it does not span multiple words. A 16-bit integer could start at offset 0, 2, or 4, but not at 1, 3, or 5 because the first byte would be in one word and the second byte would be in the next word. Single byte words will always fall on word boundaries. The last piece of data should end on a word boundary as well. If any of the data are double words in size, the packet must also be a multiple of the double word size and any double word sized data must fall on a double word boundary.
To leverage the maximum efficiency, padding can be added between pieces of data to force subsequent data to be aligned to word boundaries. For example, if a packet contains a word, and a half word, either the data should be ordered as word, half word, and a half word of padding that will be discarded by the recipient. The same data, ordered as a half word, word, a half word of padding would take up the same amount of space, but the word would span two different words of the packet and cause inefficient processing of that packet.
The following colors are used to indicate the alignment of the packets:
<table>
<tr>
<th> Color Meaning </th>
<th> Examples </th>
</tr>
<tr>
<td style="background: green;">The packet contents and total size are properly aligned.</td>
<td> 2; 2 2; 2 2 4; 2 2 2*N</td>
</tr>
<tr>
<td style="background: chartreuse;">The packet contents are aligned, but they contain a variable-length element that may cause the whole packet to be improperly aligned.</td>
<td> 2 2 1*N</td>
</tr>
<tr>
<td style="background: yellow;">The packet contents are properly aligned, but do not end on a word boundary.</td>
<td> 2 1 ; 2 2 4 1 </td>
</tr>
<tr>
<td style="background: orange;">The packet contents are not properly aligned on word boundaries, but could be with skew padding.</td>
<td> 2 4 2 </td>
</tr>
<tr>
<td style="background: orangered;">The packet contents are not properly aligned if the number of varying elements is at least 2.</td>
<td> 2 2 (2 1)*N</td>
</tr>
<tr>
<td style="background: red;">The packet contents are not properly aligned on word boundaries, even with skew padding.</td>
<td> 2 4 2 4</td>
</tr>
</table>
== Client Packets ==
== Client Packets ==
This is a new table that steal information from individual packet pages.
This is a new table that steal information from individual packet pages.
Line 7: Line 48:
</tr>
</tr>


{{:Packet:0x0061|mode=row}}
{{Net:0x0061|mode=row}}
{{:Packet:0x0062|mode=row}}
{{Net:0x0062|mode=row}}
{{:Packet:0x0063|mode=row}}
{{Net:0x0063|mode=row}}
{{:Packet:0x0064|mode=row}}
{{Net:0x0064|mode=row}}
{{:Packet:0x0065|mode=row}}
{{Net:0x0065|mode=row}}
{{:Packet:0x0066|mode=row}}
{{Net:0x0066|mode=row}}
{{:Packet:0x0067|mode=row}}
{{Net:0x0067|mode=row}}
{{:Packet:0x0068|mode=row}}
{{Net:0x0068|mode=row}}
{{:Packet:0x0069|mode=row}}
{{Net:0x0069|mode=row}}
{{:Packet:0x006A|mode=row}}
{{Net:0x006A|mode=row}}
{{:Packet:0x006B|mode=row}}
{{Net:0x006B|mode=row}}
{{:Packet:0x006C|mode=row}}
{{Net:0x006C|mode=row}}
{{:Packet:0x006D|mode=row}}
{{Net:0x006D|mode=row}}
{{:Packet:0x006E|mode=row}}
{{Net:0x006E|mode=row}}
{{:Packet:0x006F|mode=row}}
{{Net:0x006F|mode=row}}


{{:Packet:0x0070|mode=row}}
{{Net:0x0070|mode=row}}
{{:Packet:0x0071|mode=row}}
{{Net:0x0071|mode=row}}
{{:Packet:0x0072|mode=row}}
{{Net:0x0072|mode=row}}
{{:Packet:0x0073|mode=row}}
{{Net:0x0073|mode=row}}
{{:Packet:0x0078|mode=row}}
{{Net:0x0078|mode=row}}
{{:Packet:0x007B|mode=row}}
{{Net:0x007B|mode=row}}
{{:Packet:0x007C|mode=row}}
{{Net:0x007C|mode=row}}
{{:Packet:0x007D|mode=row}}
{{Net:0x007D|mode=row}}
{{:Packet:0x007E|mode=row}}
{{Net:0x007E|mode=row}}
{{:Packet:0x007F|mode=row}}
{{Net:0x007F|mode=row}}


{{:Packet:0x0080|mode=row}}
{{Net:0x0080|mode=row}}
{{:Packet:0x0081|mode=row}}
{{Net:0x0081|mode=row}}
{{:Packet:0x0085|mode=row}}
{{Net:0x0085|mode=row}}
{{:Packet:0x0086|mode=row}}
{{Net:0x0086|mode=row}}
{{:Packet:0x0087|mode=row}}
{{Net:0x0087|mode=row}}
{{:Packet:0x0088|mode=row}}
{{Net:0x0088|mode=row}}
{{:Packet:0x0089|mode=row}}
{{Net:0x0089|mode=row}}
{{:Packet:0x008A|mode=row}}
{{Net:0x008A|mode=row}}
{{:Packet:0x008C|mode=row}}
{{Net:0x008C|mode=row}}
{{:Packet:0x008D|mode=row}}
{{Net:0x008D|mode=row}}
{{:Packet:0x008E|mode=row}}
{{Net:0x008E|mode=row}}


{{:Packet:0x0090|mode=row}}
{{Net:0x0090|mode=row}}
{{:Packet:0x0091|mode=row}}
{{Net:0x0091|mode=row}}
{{:Packet:0x0092|mode=row}}
{{Net:0x0092|mode=row}}
{{:Packet:0x0094|mode=row}}
{{Net:0x0094|mode=row}}
{{:Packet:0x0095|mode=row}}
{{Net:0x0095|mode=row}}
{{:Packet:0x0096|mode=row}}
{{Net:0x0096|mode=row}}
{{:Packet:0x0097|mode=row}}
{{Net:0x0097|mode=row}}
{{:Packet:0x0098|mode=row}}
{{Net:0x0098|mode=row}}
{{:Packet:0x0099|mode=row}}
{{Net:0x0099|mode=row}}
{{:Packet:0x009A|mode=row}}
{{Net:0x009A|mode=row}}
{{:Packet:0x009B|mode=row}}
{{Net:0x009B|mode=row}}
{{:Packet:0x009C|mode=row}}
{{Net:0x009C|mode=row}}
{{:Packet:0x009D|mode=row}}
{{Net:0x009D|mode=row}}
{{:Packet:0x009E|mode=row}}
{{Net:0x009E|mode=row}}
{{:Packet:0x009F|mode=row}}
{{Net:0x009F|mode=row}}


{{:Packet:0x00A0|mode=row}}
{{Net:0x00A0|mode=row}}
{{:Packet:0x00A1|mode=row}}
{{Net:0x00A1|mode=row}}
{{:Packet:0x00A2|mode=row}}
{{Net:0x00A2|mode=row}}
{{:Packet:0x00A4|mode=row}}
{{Net:0x00A4|mode=row}}
{{:Packet:0x00A6|mode=row}}
{{Net:0x00A6|mode=row}}
{{:Packet:0x00A7|mode=row}}
{{Net:0x00A7|mode=row}}
{{:Packet:0x00A8|mode=row}}
{{Net:0x00A8|mode=row}}
{{:Packet:0x00A9|mode=row}}
{{Net:0x00A9|mode=row}}
{{:Packet:0x00AA|mode=row}}
{{Net:0x00AA|mode=row}}
{{:Packet:0x00AB|mode=row}}
{{Net:0x00AB|mode=row}}
{{:Packet:0x00AC|mode=row}}
{{Net:0x00AC|mode=row}}
{{:Packet:0x00AF|mode=row}}
{{Net:0x00AF|mode=row}}


{{:Packet:0x00B0|mode=row}}
{{Net:0x00B0|mode=row}}
{{:Packet:0x00B1|mode=row}}
{{Net:0x00B1|mode=row}}
{{:Packet:0x00B2|mode=row}}
{{Net:0x00B2|mode=row}}
{{:Packet:0x00B3|mode=row}}
{{Net:0x00B3|mode=row}}
{{:Packet:0x00B4|mode=row}}
{{Net:0x00B4|mode=row}}
{{:Packet:0x00B5|mode=row}}
{{Net:0x00B5|mode=row}}
{{:Packet:0x00B6|mode=row}}
{{Net:0x00B6|mode=row}}
{{:Packet:0x00B7|mode=row}}
{{Net:0x00B7|mode=row}}
{{:Packet:0x00B8|mode=row}}
{{Net:0x00B8|mode=row}}
{{:Packet:0x00B9|mode=row}}
{{Net:0x00B9|mode=row}}
{{:Packet:0x00BB|mode=row}}
{{Net:0x00BB|mode=row}}
{{:Packet:0x00BC|mode=row}}
{{Net:0x00BC|mode=row}}
{{:Packet:0x00BD|mode=row}}
{{Net:0x00BD|mode=row}}
{{:Packet:0x00BE|mode=row}}
{{Net:0x00BE|mode=row}}
{{:Packet:0x00BF|mode=row}}
{{Net:0x00BF|mode=row}}


{{:Packet:0x00C0|mode=row}}
{{Net:0x00C0|mode=row}}
{{:Packet:0x00C1|mode=row}}
{{Net:0x00C1|mode=row}}
{{:Packet:0x00C2|mode=row}}
{{Net:0x00C2|mode=row}}
{{:Packet:0x00C3|mode=row}}
{{Net:0x00C3|mode=row}}
{{:Packet:0x00C4|mode=row}}
{{Net:0x00C4|mode=row}}
{{:Packet:0x00C5|mode=row}}
{{Net:0x00C5|mode=row}}
{{:Packet:0x00C6|mode=row}}
{{Net:0x00C6|mode=row}}
{{:Packet:0x00C7|mode=row}}
{{Net:0x00C7|mode=row}}
{{:Packet:0x00C8|mode=row}}
{{Net:0x00C8|mode=row}}
{{:Packet:0x00C9|mode=row}}
{{Net:0x00C9|mode=row}}
{{:Packet:0x00CA|mode=row}}
{{Net:0x00CA|mode=row}}
{{:Packet:0x00CB|mode=row}}
{{Net:0x00CB|mode=row}}
{{:Packet:0x00CC|mode=row}}
{{Net:0x00CC|mode=row}}
{{:Packet:0x00CD|mode=row}}
{{Net:0x00CD|mode=row}}




{{:Packet:0x00E4|mode=row}}
{{Net:0x00E4|mode=row}}
{{:Packet:0x00E5|mode=row}}
{{Net:0x00E5|mode=row}}
{{:Packet:0x00E6|mode=row}}
{{Net:0x00E6|mode=row}}
{{:Packet:0x00E7|mode=row}}
{{Net:0x00E7|mode=row}}
{{:Packet:0x00E8|mode=row}}
{{Net:0x00E8|mode=row}}
{{:Packet:0x00E9|mode=row}}
{{Net:0x00E9|mode=row}}
{{:Packet:0x00EB|mode=row}}
{{Net:0x00EB|mode=row}}
{{:Packet:0x00EC|mode=row}}
{{Net:0x00EC|mode=row}}
{{:Packet:0x00ED|mode=row}}
{{Net:0x00ED|mode=row}}
{{:Packet:0x00EE|mode=row}}
{{Net:0x00EE|mode=row}}
{{:Packet:0x00EF|mode=row}}
{{Net:0x00EF|mode=row}}


{{:Packet:0x00F0|mode=row}}
{{Net:0x00F0|mode=row}}
{{:Packet:0x00F2|mode=row}}
{{Net:0x00F2|mode=row}}
{{:Packet:0x00F3|mode=row}}
{{Net:0x00F3|mode=row}}
{{:Packet:0x00F4|mode=row}}
{{Net:0x00F4|mode=row}}
{{:Packet:0x00F5|mode=row}}
{{Net:0x00F5|mode=row}}
{{:Packet:0x00F6|mode=row}}
{{Net:0x00F6|mode=row}}
{{:Packet:0x00F7|mode=row}}
{{Net:0x00F7|mode=row}}
{{:Packet:0x00F8|mode=row}}
{{Net:0x00F8|mode=row}}
{{:Packet:0x00F9|mode=row}}
{{Net:0x00F9|mode=row}}
{{:Packet:0x00FA|mode=row}}
{{Net:0x00FA|mode=row}}
{{:Packet:0x00FB|mode=row}}
{{Net:0x00FB|mode=row}}
{{:Packet:0x00FC|mode=row}}
{{Net:0x00FC|mode=row}}
{{:Packet:0x00FD|mode=row}}
{{Net:0x00FD|mode=row}}
{{:Packet:0x00FE|mode=row}}
{{Net:0x00FE|mode=row}}
{{:Packet:0x00FF|mode=row}}
{{Net:0x00FF|mode=row}}


{{:Packet:0x0100|mode=row}}
{{Net:0x0100|mode=row}}
{{:Packet:0x0101|mode=row}}
{{Net:0x0101|mode=row}}
{{:Packet:0x0102|mode=row}}
{{Net:0x0102|mode=row}}
{{:Packet:0x0103|mode=row}}
{{Net:0x0103|mode=row}}
{{:Packet:0x0104|mode=row}}
{{Net:0x0104|mode=row}}
{{:Packet:0x0105|mode=row}}
{{Net:0x0105|mode=row}}
{{:Packet:0x0106|mode=row}}
{{Net:0x0106|mode=row}}
{{:Packet:0x0107|mode=row}}
{{Net:0x0107|mode=row}}
{{:Packet:0x0108|mode=row}}
{{Net:0x0108|mode=row}}
{{:Packet:0x0109|mode=row}}
{{Net:0x0109|mode=row}}
{{:Packet:0x010C|mode=row}}
{{Net:0x010C|mode=row}}
{{:Packet:0x010E|mode=row}}
{{Net:0x010E|mode=row}}
{{:Packet:0x010F|mode=row}}
{{Net:0x010F|mode=row}}


{{:Packet:0x0110|mode=row}}
{{Net:0x0110|mode=row}}
{{:Packet:0x0112|mode=row}}
{{Net:0x0112|mode=row}}
{{:Packet:0x0113|mode=row}}
{{Net:0x0113|mode=row}}
{{:Packet:0x0116|mode=row}}
{{Net:0x0116|mode=row}}
{{:Packet:0x0119|mode=row}}
{{Net:0x0119|mode=row}}
{{:Packet:0x011B|mode=row}}
{{Net:0x011B|mode=row}}




{{:Packet:0x0139|mode=row}}
{{Net:0x0139|mode=row}}
{{:Packet:0x013A|mode=row}}
{{Net:0x013A|mode=row}}
{{:Packet:0x013B|mode=row}}
{{Net:0x013B|mode=row}}
{{:Packet:0x013C|mode=row}}
{{Net:0x013C|mode=row}}


{{:Packet:0x0141|mode=row}}
{{Net:0x0141|mode=row}}
{{:Packet:0x0142|mode=row}}
{{Net:0x0142|mode=row}}
{{:Packet:0x0143|mode=row}}
{{Net:0x0143|mode=row}}
{{:Packet:0x0146|mode=row}}
{{Net:0x0146|mode=row}}
{{:Packet:0x0148|mode=row}}
{{Net:0x0148|mode=row}}
{{:Packet:0x0149|mode=row}}
{{Net:0x0149|mode=row}}
{{:Packet:0x014C|mode=row}}
{{Net:0x014C|mode=row}}
{{:Packet:0x014D|mode=row}}
{{Net:0x014D|mode=row}}
{{:Packet:0x014E|mode=row}}
{{Net:0x014E|mode=row}}
{{:Packet:0x014F|mode=row}}
{{Net:0x014F|mode=row}}


{{:Packet:0x0151|mode=row}}
{{Net:0x0151|mode=row}}
{{:Packet:0x0152|mode=row}}
{{Net:0x0152|mode=row}}
{{:Packet:0x0153|mode=row}}
{{Net:0x0153|mode=row}}
{{:Packet:0x0154|mode=row}}
{{Net:0x0154|mode=row}}
{{:Packet:0x0155|mode=row}}
{{Net:0x0155|mode=row}}
{{:Packet:0x0156|mode=row}}
{{Net:0x0156|mode=row}}
{{:Packet:0x0159|mode=row}}
{{Net:0x0159|mode=row}}
{{:Packet:0x015A|mode=row}}
{{Net:0x015A|mode=row}}
{{:Packet:0x015B|mode=row}}
{{Net:0x015B|mode=row}}
{{:Packet:0x015C|mode=row}}
{{Net:0x015C|mode=row}}
{{:Packet:0x015D|mode=row}}
{{Net:0x015D|mode=row}}
{{:Packet:0x015E|mode=row}}
{{Net:0x015E|mode=row}}


{{:Packet:0x0160|mode=row}}
{{Net:0x0160|mode=row}}
{{:Packet:0x0161|mode=row}}
{{Net:0x0161|mode=row}}
{{:Packet:0x0162|mode=row}}
{{Net:0x0162|mode=row}}
{{:Packet:0x0163|mode=row}}
{{Net:0x0163|mode=row}}
{{:Packet:0x0165|mode=row}}
{{Net:0x0165|mode=row}}
{{:Packet:0x0166|mode=row}}
{{Net:0x0166|mode=row}}
{{:Packet:0x0167|mode=row}}
{{Net:0x0167|mode=row}}
{{:Packet:0x0168|mode=row}}
{{Net:0x0168|mode=row}}
{{:Packet:0x0169|mode=row}}
{{Net:0x0169|mode=row}}
{{:Packet:0x016A|mode=row}}
{{Net:0x016A|mode=row}}
{{:Packet:0x016B|mode=row}}
{{Net:0x016B|mode=row}}
{{:Packet:0x016C|mode=row}}
{{Net:0x016C|mode=row}}
{{:Packet:0x016D|mode=row}}
{{Net:0x016D|mode=row}}
{{:Packet:0x016E|mode=row}}
{{Net:0x016E|mode=row}}
{{:Packet:0x016F|mode=row}}
{{Net:0x016F|mode=row}}


{{:Packet:0x0170|mode=row}}
{{Net:0x0170|mode=row}}
{{:Packet:0x0171|mode=row}}
{{Net:0x0171|mode=row}}
{{:Packet:0x0172|mode=row}}
{{Net:0x0172|mode=row}}
{{:Packet:0x0173|mode=row}}
{{Net:0x0173|mode=row}}
{{:Packet:0x0174|mode=row}}
{{Net:0x0174|mode=row}}
{{:Packet:0x017E|mode=row}}
{{Net:0x017E|mode=row}}
{{:Packet:0x017F|mode=row}}
{{Net:0x017F|mode=row}}


{{:Packet:0x0180|mode=row}}
{{Net:0x0180|mode=row}}
{{:Packet:0x0181|mode=row}}
{{Net:0x0181|mode=row}}
{{:Packet:0x0183|mode=row}}
{{Net:0x0183|mode=row}}
{{:Packet:0x0184|mode=row}}
{{Net:0x0184|mode=row}}
{{:Packet:0x018A|mode=row}}
{{Net:0x018A|mode=row}}
{{:Packet:0x018B|mode=row}}
{{Net:0x018B|mode=row}}


{{:Packet:0x0190|mode=row}}
{{Net:0x0190|mode=row}}
{{:Packet:0x0195|mode=row}}
{{Net:0x0195|mode=row}}
{{:Packet:0x0196|mode=row}}
{{Net:0x0196|mode=row}}
{{:Packet:0x019B|mode=row}}
{{Net:0x019B|mode=row}}
{{:Packet:0x019C|mode=row}}
{{Net:0x019C|mode=row}}
{{:Packet:0x019D|mode=row}}
{{Net:0x019D|mode=row}}




{{:Packet:0x01B1|mode=row}}
{{Net:0x01B1|mode=row}}
{{:Packet:0x01B6|mode=row}}
{{Net:0x01B6|mode=row}}


{{:Packet:0x01C8|mode=row}}
{{Net:0x01C8|mode=row}}


{{:Packet:0x01D4|mode=row}}
{{Net:0x01D4|mode=row}}
{{:Packet:0x01D5|mode=row}}
{{Net:0x01D5|mode=row}}
{{:Packet:0x01D7|mode=row}}
{{Net:0x01D7|mode=row}}
{{:Packet:0x01D8|mode=row}}
{{Net:0x01D8|mode=row}}
{{:Packet:0x01D9|mode=row}}
{{Net:0x01D9|mode=row}}
{{:Packet:0x01DA|mode=row}}
{{Net:0x01DA|mode=row}}
{{:Packet:0x01DE|mode=row}}
{{Net:0x01DE|mode=row}}


{{:Packet:0x01EE|mode=row}}
{{Net:0x01EE|mode=row}}


{{:Packet:0x01F0|mode=row}}
{{Net:0x01F0|mode=row}}


{{:Packet:0x020C|mode=row}}
{{Net:0x020C|mode=row}}


<!-- Internal packets not documented here. -->
<!-- Internal packets not documented here. -->


{{:Packet:0x7530|mode=row}}
{{Net:0x7530|mode=row}}
{{:Packet:0x7531|mode=row}}
{{Net:0x7531|mode=row}}


</table>
</table>
Line 259: Line 300:
</tr>
</tr>


{{:Packet:0x0212|mode=row}}
{{Net:0x0212|mode=row}}


</table>
</table>
Line 1,123: Line 1,164:
</tr>
</tr>


{{:Packet:0x2716|mode=row_internal}}
{{Net:0x2709|mode=row_internal}}
{{:Packet:0x2717|mode=row_internal}}
{{Net:0x2711|mode=row_internal}}
{{:Packet:0x2740|mode=row_internal}}
{{Net:0x2712|mode=row_internal}}
{{:Packet:0x2741|mode=row_internal}}
{{Net:0x2713|mode=row_internal}}
{{Net:0x2714|mode=row_internal}}
{{Net:0x2716|mode=row_internal}}
{{Net:0x2717|mode=row_internal}}
{{Net:0x2722|mode=row_internal}}
{{Net:0x2723|mode=row_internal}}
{{Net:0x2724|mode=row_internal}}
{{Net:0x2727|mode=row_internal}}
{{Net:0x2731|mode=row_internal}}
{{Net:0x2740|mode=row_internal}}
{{Net:0x2741|mode=row_internal}}
</table>
</table>


Line 1,135: Line 1,186:
</tr>
</tr>


<!-- {{:Packet:0x2716|mode=row_internal}} -->
<!-- {{Net:0x2716|mode=row_internal}} -->
</table>
</table>


Line 1,145: Line 1,196:
</tr>
</tr>


<!-- {{:Packet:0x2716|mode=row_internal}} -->
<!-- {{Net:0x2716|mode=row_internal}} -->
</table>
</table>


Line 1,266: Line 1,317:
<tr> <td> 0x2b15 </td> <td> -1 </td> </tr>
<tr> <td> 0x2b15 </td> <td> -1 </td> </tr>
</table>
</table>
==== char.cpp recv ====
<table>
<!-- 0x2af7 .. 0x2b16 -->
</table>
[[Category:Development]]

Latest revision as of 12:48, 26 September 2016

Note: you can get a more up-to-date, but less detail, description in the repository's protocol generator script

Overview

Packet Alignment

The alignment of the data within the packet payload can cause additional overhead if the data is not properly aligned to word boundaries. For example, in a 32-bit application, a word is a sequence of two eight-bit bytes. Any data that occupies 2 bytes or larger on this platform should always start at a (2 * n) offset (0, 2, 4, etc). Any data that is less than 2 bytes can start at any offset, so long as it does not span multiple words. A 16-bit integer could start at offset 0, 2, or 4, but not at 1, 3, or 5 because the first byte would be in one word and the second byte would be in the next word. Single byte words will always fall on word boundaries. The last piece of data should end on a word boundary as well. If any of the data are double words in size, the packet must also be a multiple of the double word size and any double word sized data must fall on a double word boundary.

To leverage the maximum efficiency, padding can be added between pieces of data to force subsequent data to be aligned to word boundaries. For example, if a packet contains a word, and a half word, either the data should be ordered as word, half word, and a half word of padding that will be discarded by the recipient. The same data, ordered as a half word, word, a half word of padding would take up the same amount of space, but the word would span two different words of the packet and cause inefficient processing of that packet.

The following colors are used to indicate the alignment of the packets:

Color Meaning Examples
The packet contents and total size are properly aligned. 2; 2 2; 2 2 4; 2 2 2*N
The packet contents are aligned, but they contain a variable-length element that may cause the whole packet to be improperly aligned. 2 2 1*N
The packet contents are properly aligned, but do not end on a word boundary. 2 1 ; 2 2 4 1
The packet contents are not properly aligned on word boundaries, but could be with skew padding. 2 4 2
The packet contents are not properly aligned if the number of varying elements is at least 2. 2 2 (2 1)*N
The packet contents are not properly aligned on word boundaries, even with skew padding. 2 4 2 4

Client Packets

This is a new table that steal information from individual packet pages.

Net:0x0068

Net:0x006D Net:0x006E Net:0x006F

Net:0x0070 Net:0x0071 Net:0x0072 Net:0x0073 Net:0x0078 Net:0x007B Net:0x007C Net:0x007D Net:0x007E Net:0x007F

Net:0x0080

Net:0x0085Net:0x0086Net:0x0087Net:0x0088Net:0x0089Net:0x008ANet:0x008CNet:0x008DNet:0x008ENet:0x0090Net:0x0091Net:0x0092Net:0x0094Net:0x0095Net:0x0096Net:0x0097Net:0x0098Net:0x0099Net:0x009ANet:0x009BNet:0x009CNet:0x009DNet:0x009ENet:0x009FNet:0x00A0Net:0x00A1Net:0x00A2Net:0x00A4Net:0x00A6Net:0x00A7Net:0x00A8Net:0x00A9Net:0x00AANet:0x00ABNet:0x00ACNet:0x00AFNet:0x00B0Net:0x00B1Net:0x00B2Net:0x00B3Net:0x00B4Net:0x00B5Net:0x00B6Net:0x00B7Net:0x00B8Net:0x00B9Net:0x00BBNet:0x00BCNet:0x00BDNet:0x00BENet:0x00BFNet:0x00C0Net:0x00C1Net:0x00C2Net:0x00C3Net:0x00C4Net:0x00C5Net:0x00C6Net:0x00C7Net:0x00C8Net:0x00C9Net:0x00CANet:0x00CBNet:0x00CCNet:0x00CDNet:0x00E4Net:0x00E5Net:0x00E6Net:0x00E7Net:0x00E8Net:0x00E9Net:0x00EBNet:0x00ECNet:0x00EDNet:0x00EENet:0x00EFNet:0x00F0Net:0x00F2Net:0x00F3Net:0x00F4Net:0x00F5Net:0x00F6Net:0x00F7Net:0x00F8Net:0x00F9Net:0x00FANet:0x00FBNet:0x00FCNet:0x00FDNet:0x00FENet:0x00FFNet:0x0100Net:0x0101Net:0x0102Net:0x0103Net:0x0104Net:0x0105Net:0x0106Net:0x0107Net:0x0108Net:0x0109Net:0x010CNet:0x010ENet:0x010FNet:0x0110Net:0x0112Net:0x0113Net:0x0116Net:0x0119Net:0x011BNet:0x0139Net:0x013ANet:0x013BNet:0x013CNet:0x0141Net:0x0142Net:0x0143Net:0x0146Net:0x0148Net:0x0149Net:0x014CNet:0x014DNet:0x014ENet:0x014FNet:0x0151Net:0x0152Net:0x0153Net:0x0154Net:0x0155Net:0x0156Net:0x0159Net:0x015ANet:0x015BNet:0x015CNet:0x015DNet:0x015ENet:0x0160Net:0x0161Net:0x0162Net:0x0163Net:0x0165Net:0x0166Net:0x0167Net:0x0168Net:0x0169Net:0x016ANet:0x016BNet:0x016CNet:0x016DNet:0x016ENet:0x016FNet:0x0170Net:0x0171Net:0x0172Net:0x0173Net:0x0174Net:0x017ENet:0x017FNet:0x0180Net:0x0181Net:0x0183Net:0x0184Net:0x018ANet:0x018BNet:0x0190Net:0x0195Net:0x0196Net:0x019BNet:0x019CNet:0x019DNet:0x01B1Net:0x01B6Net:0x01C8Net:0x01D4Net:0x01D5Net:0x01D7Net:0x01D8Net:0x01D9Net:0x01DANet:0x01DENet:0x01EENet:0x01F0Net:0x020C
Packet Length Name Client #define Sent and Parsed Locations
0x0061 50 Change Password Request CMSG_CHAR_PASSWORD_CHANGE Sent: src/net/tmwa/loginhandler.cpp:262
Parsed: src/char/char.cpp
0x0062 3 Change Password Response SMSG_CHAR_PASSWORD_RESPONSE Sent: src/char/char.cpp
Parsed: src/net/tmwa/loginhandler.cpp:71
0x0063 -1 Update Host SMSG_UPDATE_HOST Sent: src/login/login.cpp
Parsed: src/net/tmwa/loginhandler.cpp:103
0x0064 55 Login Request (hard-coded) Sent: src/net/tmwa/loginhandler.cpp:298
Parsed: src/login/login.cpp
0x0065 17 Character Server Connection Request CMSG_CHAR_SERVER_CONNECT Sent: src/net/tmwa/charserverhandler.cpp:376
Parsed: src/char/char.cpp
0x0066 3 Select Character Request CMSG_CHAR_SELECT Sent: src/net/tmwa/charserverhandler.cpp:307
Parsed: src/char/char.cpp
0x0067 37 Create Character Request CMSG_CHAR_CREATE Sent: src/net/tmwa/charserverhandler.cpp:315
Parsed: src/char/char.cpp
0x0069 -1 Login Data SMSG_LOGIN_DATA Sent: src/login/login.cpp
Parsed: src/net/tmwa/loginhandler.cpp:114
0x006A 23 Login Error SMSG_LOGIN_ERROR Sent: src/login/login.cpp
Parsed: src/net/tmwa/loginhandler.cpp:149
0x006B -1 Update Character List SMSG_CHAR_LOGIN Sent: src/char/char.cpp
Parsed: src/net/tmwa/charserverhandler.cpp:77
0x006C 3 Refuse Connection SMSG_CHAR_LOGIN_ERROR Sent: src/char/char.cpp (4 places)
Parsed: src/net/tmwa/charserverhandler.cpp:101
0x0081 3 Connection Problem SMSG_CONNECTION_PROBLEM Sent: src/login/login.cpp

src/char/char.cpp

src/map/clif.cpp
Parsed: src/net/tmwa/generalhandler.cpp:125
0x7530 2 Server Version Request CMSG_SERVER_VERSION_REQUEST Sent: src/net/tmwa/loginhandler.cpp:220
Parsed: src/login/login.cpp (client)

src/login/login.cpp (ladmin)

src/char/char.cpp

src/map/clif.cpp
0x7531 10 Server Version Response SMSG_SERVER_VERSION_RESPONSE Sent: src/login/login.cpp (client)

src/login/login.cpp (ladmin)

src/char/char.cpp

src/map/clif.cpp
Parsed: src/net/tmwa/loginhandler.cpp:197

ManaPlus Packets

These packets were originally added by ManaPlus to support Evol.


Packet Length Name Client #define Sent and Parsed Locations
0x0212 16 Npc commands SMSG_NPC_COMMAND Sent: Not in TMWA yet
Parsed: src/net/tmwa/npchandler.cpp

Used packets

packet len client define sent location(s) parse location
0x0061 50 CMSG_CHAR_PASSWORD_CHANGE src/net/tmwa/loginhandler.cpp:264 src/char/char.c:3036
0x0062 3 SMSG_CHAR_PASSWORD_RESPONSE src/char/char.c:2368 src/net/tmwa/loginhandler.cpp:71
0x0063 -1 SMSG_UPDATE_HOST src/login/login.c:3732 src/net/tmwa/loginhandler.cpp:103
0x0064 55 (hard-coded) src/net/tmwa/loginhandler.cpp:298 src/login/login.c:3644
0x0065 17 CMSG_CHAR_SERVER_CONNECT src/net/tmwa/charserverhandler.cpp:340 src/char/char.c:3049
0x0066 3 CMSG_CHAR_SELECT src/net/tmwa/charserverhandler.cpp:283
src/char/char.c:3424
src/char/char.c:3142
0x0067 37 CMSG_CHAR_CREATE src/net/tmwa/charserverhandler.cpp:291 src/char/char.c:3312
0x0068 46 CMSG_CHAR_DELETE src/net/tmwa/charserverhandler.cpp:306 src/char/char.c:3387
0x0069 -1 SMSG_LOGIN_DATA src/login/login.c:3795 src/net/tmwa/loginhandler.cpp:114
0x006A 23 SMSG_LOGIN_ERROR src/login/login.c:3683
src/login/login.c:3833
src/net/tmwa/loginhandler.cpp:149
0x006B -1 SMSG_CHAR_LOGIN src/char/char.c:1660 src/net/tmwa/charserverhandler.cpp:101
0x006C 3 SMSG_CHAR_LOGIN_ERROR src/char/char.c:1948
src/char/char.c:1970
src/char/char.c:3110
src/char/char.c:3133
src/net/tmwa/charserverhandler.cpp:75
0x006D 108 SMSG_CHAR_CREATE_SUCCEEDED src/char/char.c:3325 src/net/tmwa/charserverhandler.cpp:118
0x006E 3 SMSG_CHAR_CREATE_FAILED src/char/char.c:3318 src/net/tmwa/charserverhandler.cpp:137
0x006F 2 SMSG_CHAR_DELETE_SUCCEEDED src/char/char.c:3496 src/net/tmwa/charserverhandler.cpp:144
0x0070 3 SMSG_CHAR_DELETE_FAILED src/char/char.c:3156
src/char/char.c:3401
src/char/char.c:3432
src/char/char.c:3504
src/net/tmwa/charserverhandler.cpp:153
0x0071 28 SMSG_CHAR_MAP_INFO src/char/char.c:3272 src/net/tmwa/charserverhandler.cpp:158
0x0072 19 CMSG_MAP_SERVER_CONNECT src/net/tmwa/gamehandler.cpp:124 src/map/clif.c:6729
0x0073 11 SMSG_MAP_LOGIN_SUCCESS src/map/clif.c:609 src/net/tmwa/gamehandler.cpp:67
0x0078 54 SMSG_BEING_VISIBLE src/map/clif.c:823
src/map/clif.c:1060
src/map/clif.c:1185
src/map/clif.c:1382
src/net/tmwa/beinghandler.cpp:121
0x007B 60 SMSG_BEING_MOVE src/map/clif.c:912
src/map/clif.c:1122
src/net/tmwa/beinghandler.cpp:122
0x007C 41 SMSG_BEING_SPAWN src/map/clif.c:1279
src/map/clif.c:1347
src/map/clif.c:1372
src/map/clif.c:1414
src/net/tmwa/beinghandler.cpp:239
0x007D 2 CMSG_MAP_LOADED src/net/tmwa/gamehandler.cpp:152 src/map/clif.c:6786
0x007E 6 CMSG_CLIENT_PING src/net/tmwa/gamehandler.cpp:166 src/map/clif.c:6942
0x007F 6 SMSG_SERVER_PING src/map/clif.c:1445 src/net/tmwa/gamehandler.cpp:81
0x0080 7 SMSG_BEING_REMOVE src/map/clif.c:65
src/map/clif.c:791
src/net/tmwa/beinghandler.cpp:273
0x0081 3 SMSG_CONNECTION_PROBLEM src/login/login.c:3700
src/login/login.c:3824
src/char/char.c:3264
src/map/clif.c:628
src/net/tmwa/generalhandler.cpp:122
0x0085 5 CMSG_PLAYER_CHANGE_DEST src/net/tmwa/playerhandler.cpp:621 src/map/clif.c:6955
0x0086 16 SMSG_BEING_MOVE2 src/net/tmwa/beinghandler.cpp:246
0x0087 12 SMSG_WALK_RESPONSE src/map/clif.c:1463 src/net/tmwa/playerhandler.cpp:177
0x0088 10 SMSG_PLAYER_STOP src/map/clif.c:1590 src/net/tmwa/beinghandler.cpp:630
0x0089 7 CMSG_PLAYER_CHANGE_ACT
CMSG_PLAYER_ATTACK
src/net/tmwa/playerhandler.cpp:635
src/net/tmwa/playerhandler.cpp:566
src/map/clif.c:7341
0x008A 29 SMSG_BEING_ACTION src/map/clif.c:3761
src/map/clif.c:6563
src/net/tmwa/beinghandler.cpp:328
0x008C -1 CMSG_CHAT_MESSAGE src/net/tmwa/chathandler.cpp:199 src/map/clif.c:7173
0x008D -1 SMSG_BEING_CHAT src/map/clif.c:7209
src/map/clif.c:7236
src/net/tmwa/chathandler.cpp:113
0x008E -1 SMSG_PLAYER_CHAT src/map/clif.c:4603
src/map/clif.c:7219
src/net/tmwa/chathandler.cpp:158
0x0090 7 CMSG_NPC_TALK src/net/tmwa/npchandler.cpp:133 src/map/clif.c:7738
0x0091 22 SMSG_PLAYER_WARP src/map/clif.c:1545 src/net/tmwa/playerhandler.cpp:185
0x0092 28 SMSG_CHANGE_MAP_SERVER src/map/clif.c:1569 src/net/tmwa/charserverhandler.cpp:179
0x0094 6 (hard-coded) src/net/tmwa/beinghandler.cpp:92 src/map/clif.c:7047
0x0095 30 SMSG_BEING_NAME_RESPONSE src/map/clif.c:7057 src/net/tmwa/beinghandler.cpp:484
0x0096 -1 CMSG_CHAT_WHISPER src/net/tmwa/chathandler.cpp:215 src/map/clif.c:7459
0x0097 -1 SMSG_WHISPER src/map/clif.c:4771 src/net/tmwa/chathandler.cpp:91
0x0098 3 SMSG_WHISPER_RESPONSE src/map/clif.c:4785 src/net/tmwa/chathandler.cpp:72
0x0099 -1 CMSG_ADMIN_ANNOUNCE
CMSG_CHAT_ANNOUNCE
src/net/tmwa/adminhandler.cpp:84 src/map/clif.c:7549
0x009A -1 SMSG_GM_CHAT src/map/clif.c:4623
src/map/clif.c:8359
src/net/tmwa/chathandler.cpp:159
0x009B 5 CMSG_PLAYER_CHANGE_DIR src/net/tmwa/playerhandler.cpp:614 src/map/clif.c:7278
0x009C 9 SMSG_BEING_CHANGE_DIRECTION src/map/clif.c:7293 src/net/tmwa/beinghandler.cpp:499
0x009D 17 SMSG_ITEM_VISIBLE src/map/clif.c:3815 src/net/tmwa/itemhandler.cpp:47
0x009E 17 SMSG_ITEM_DROPPED src/map/clif.c:671 src/net/tmwa/itemhandler.cpp:48
0x009F 6 CMSG_ITEM_PICKUP src/net/tmwa/playerhandler.cpp:607 src/map/clif.c:7573
0x00A0 23 SMSG_PLAYER_INVENTORY_ADD src/map/clif.c:1855
src/map/clif.c:1876
src/net/tmwa/inventoryhandler.cpp:218
0x00A1 6 SMSG_ITEM_REMOVE src/map/clif.c:715 src/net/tmwa/itemhandler.cpp:61
0x00A2 6 CMSG_PLAYER_INVENTORY_DROP src/net/tmwa/inventoryhandler.cpp:473 src/map/clif.c:7613
0x00A4 -1 SMSG_PLAYER_EQUIPMENT src/map/clif.c:2017 src/net/tmwa/inventoryhandler.cpp:376
0x00A6 -1 SMSG_PLAYER_STORAGE_EQUIP src/map/clif.c:2144
src/map/clif.c:2273
src/net/tmwa/inventoryhandler.cpp:187
0x00A7 8 CMSG_PLAYER_INVENTORY_USE src/net/tmwa/inventoryhandler.cpp:465 src/map/clif.c:7640
0x00A8 7 SMSG_ITEM_USE_RESPONSE src/map/clif.c:2935 src/net/tmwa/inventoryhandler.cpp:284
0x00A9 6 CMSG_PLAYER_EQUIP src/net/tmwa/inventoryhandler.cpp:446 src/map/clif.c:7666
0x00AA 7 SMSG_PLAYER_EQUIP src/map/clif.c:2819 src/net/tmwa/inventoryhandler.cpp:401
0x00AB 4 CMSG_PLAYER_UNEQUIP src/net/tmwa/inventoryhandler.cpp:456 src/map/clif.c:7706
0x00AC 7 SMSG_PLAYER_UNEQUIP src/map/clif.c:2839 src/net/tmwa/inventoryhandler.cpp:412
0x00AF 6 SMSG_PLAYER_INVENTORY_REMOVE src/map/clif.c:1943 src/net/tmwa/inventoryhandler.cpp:253
0x00B0 8 SMSG_PLAYER_STAT_UPDATE_1 src/map/clif.c:2350
src/map/clif.c:2357
src/net/tmwa/playerhandler.cpp:234
0x00B1 8 SMSG_PLAYER_STAT_UPDATE_2 src/map/clif.c:2437
src/map/clif.c:2443
src/map/clif.c:2447
src/map/clif.c:2451
src/map/clif.c:2455
src/net/tmwa/playerhandler.cpp:333
0x00B2 3 CMSG_PLAYER_RESTART src/net/tmwa/charserverhandler.cpp:314
src/net/tmwa/playerhandler.cpp:642
src/map/clif.c:7411
0x00B3 3 SMSG_CHAR_SWITCH_RESPONSE src/map/clif.c:653 src/net/tmwa/gamehandler.cpp:91
0x00B4 -1 SMSG_NPC_MESSAGE src/map/clif.c:1696 src/net/tmwa/npchandler.cpp:102
0x00B5 6 SMSG_NPC_NEXT src/map/clif.c:1716 src/net/tmwa/npchandler.cpp:111
0x00B6 6 SMSG_NPC_CLOSE src/map/clif.c:1734 src/net/tmwa/npchandler.cpp:106
0x00B7 -1 SMSG_NPC_CHOICE src/map/clif.c:1752 src/net/tmwa/npchandler.cpp:97
0x00B8 7 CMSG_NPC_LIST_CHOICE src/net/tmwa/npchandler.cpp:159 src/map/clif.c:8194
0x00B9 6 CMSG_NPC_NEXT_REQUEST src/net/tmwa/npchandler.cpp:140 src/map/clif.c:8206
0x00BB 5 CMSG_STAT_UPDATE_REQUEST src/net/tmwa/playerhandler.cpp:581 src/map/clif.c:7993
0x00BC 6 SMSG_PLAYER_STAT_UPDATE_4 src/map/clif.c:2799 src/net/tmwa/playerhandler.cpp:381
0x00BD 44 SMSG_PLAYER_STAT_UPDATE_5 src/map/clif.c:2702 src/net/tmwa/playerhandler.cpp:401
0x00BE 5 SMSG_PLAYER_STAT_UPDATE_6 src/map/clif.c:2466 src/net/tmwa/playerhandler.cpp:521
0x00BF 3 CMSG_PLAYER_EMOTE src/net/tmwa/playerhandler.cpp:573 src/map/clif.c:7308
0x00C0 7 SMSG_BEING_EMOTION src/map/clif.c:6469
src/map/clif.c:6488
src/map/clif.c:7317
src/net/tmwa/beinghandler.cpp:385
0x00C1 2 CMSG_WHO_REQUEST
CMSG_CHAT_WHO
src/map/chathandler.cpp:264 src/map/clif.c:7330
0x00C2 6 SMSG_WHO_ANSWER src/map/clif.c:7332 src/net/tmwa/gamehandler.cpp:86
0x00C3 8 SMSG_BEING_CHANGE_LOOKS src/net/tmwa/beinghandler.cpp:400
0x00C4 6 SMSG_NPC_BUY_SELL_CHOICE src/map/clif.c:1611 src/net/tmwa/buysellhandler.cpp:64
0x00C5 7 CMSG_NPC_BUY_SELL_REQUEST src/net/tmwa/npchandler.cpp:193
src/net/tmwa/npchandler.cpp:200
src/map/clif.c:7756
0x00C6 -1 SMSG_NPC_BUY src/map/clif.c:1631 src/net/tmwa/buysellhandler.cpp:72
0x00C7 -1 SMSG_NPC_SELL src/map/clif.c:1663 src/net/tmwa/buysellhandler.cpp:88
0x00C8 -1 CMSG_NPC_BUY_REQUEST src/net/tmwa/npchandler.cpp:207 src/map/clif.c:7765
0x00C9 -1 CMSG_NPC_SELL_REQUEST src/net/tmwa/npchandler.cpp:215 src/map/clif.c:7784
0x00CA 3 SMSG_NPC_BUY_RESPONSE src/map/clif.c:7775 src/net/tmwa/buysellhandler.cpp:114
0x00CB 3 SMSG_NPC_SELL_RESPONSE src/map/clif.c:7794 src/net/tmwa/buysellhandler.cpp:124
0x00CC 6 CMSG_ADMIN_KICK src/net/tmwa/adminhandler.cpp:104 src/map/clif.c:8913
0x00CD 6 SMSG_ADMIN_KICK_ACK src/map/clif.c:6605 src/net/tmwa/adminhandler.cpp:62
0x00E4 6 CMSG_TRADE_REQUEST src/net/tmwa/tradehandler.cpp:241 src/map/clif.c:7859
0x00E5 26 SMSG_TRADE_REQUEST src/map/clif.c:3180 src/net/tmwa/tradehandler.cpp:86
0x00E6 3 CMSG_TRADE_RESPONSE src/net/tmwa/tradehandler.cpp:250 src/map/clif.c:7876
0x00E7 3 SMSG_TRADE_RESPONSE src/map/clif.c:3198 src/net/tmwa/tradehandler.cpp:120
0x00E8 8 CMSG_TRADE_ITEM_ADD_REQUEST src/net/tmwa/tradehandler.cpp:256
src/net/tmwa/tradehandler.cpp:268
src/map/clif.c:7887
0x00E9 19 SMSG_TRADE_ITEM_ADD src/map/clif.c:3218 src/net/tmwa/tradehandler.cpp:159
0x00EB 2 CMSG_TRADE_ADD_COMPLETE src/net/tmwa/tradehandler.cpp:275 src/map/clif.c:7898
0x00EC 3 SMSG_TRADE_OK src/map/clif.c:3320 src/net/tmwa/tradehandler.cpp:218
0x00ED 2 CMSG_TRADE_CANCEL_REQUEST src/net/tmwa/tradehandler.cpp:285 src/map/clif.c:7907
0x00EE 2 SMSG_TRADE_CANCEL src/map/clif.c:3338 src/net/tmwa/tradehandler.cpp:223
0x00EF 2 CMSG_TRADE_OK src/net/tmwa/tradehandler.cpp:280 src/map/clif.c:7916
0x00F0 3 SMSG_TRADE_COMPLETE src/map/clif.c:3355 src/net/tmwa/tradehandler.cpp:230
0x00F2 6 SMSG_PLAYER_STORAGE_STATUS src/map/clif.c:3375
src/map/clif.c:3459
src/net/tmwa/inventoryhandler.cpp:306
0x00F3 8 CMSG_MOVE_TO_STORAGE src/net/tmwa/inventoryhandler.cpp:508 src/map/clif.c:8370
0x00F4 21 SMSG_PLAYER_STORAGE_ADD src/map/clif.c:3396
src/map/clif.c:3481
src/net/tmwa/inventoryhandler.cpp:331
0x00F5 8 CSMG_MOVE_FROM_STORAGE src/net/tmwa/inventoryhandler.cpp:514 src/map/clif.c:8393
0x00F6 8 SMSG_PLAYER_STORAGE_REMOVE src/map/clif.c:3543 src/net/tmwa/inventoryhandler.cpp:353
0x00F7 2 CMSG_CLOSE_STORAGE src/net/tmwa/inventoryhandler.cpp:500 src/map/clif.c:8452
0x00F8 2 SMSG_PLAYER_STORAGE_CLOSE src/map/clif.c:3562 src/net/tmwa/inventoryhandler.cpp:365
0x00F9 26 CMSG_PARTY_CREATE src/net/tmwa/partyhandler.cpp:313 src/map/clif.c:8469
0x00FA 3 SMSG_PARTY_CREATE src/map/clif.c:5231 src/net/tmwa/partyhandler.cpp:79
0x00FB -1 SMSG_PARTY_INFO src/map/clif.c:5249 src/net/tmwa/partyhandler.cpp:88
0x00FC 6 CMSG_PARTY_INVITE src/net/tmwa/partyhandler.cpp:324 src/map/clif.c:8510
0x00FD 27 SMSG_PARTY_INVITE_RESPONSE src/map/clif.c:5327 src/net/tmwa/partyhandler.cpp:112
0x00FE 30 SMSG_PARTY_INVITED src/map/clif.c:5299 src/net/tmwa/partyhandler.cpp:139
0x00FF 10 CMSG_PARTY_INVITED src/net/tmwa/partyhandler.cpp:352 src/map/clif.c:8522
0x0100 2 CMSG_PARTY_LEAVE src/net/tmwa/partyhandler.cpp:359 src/map/clif.c:8540
0x0101 6 SMSG_PARTY_SETTINGS src/map/clif.c:5358 src/net/tmwa/partyhandler.cpp:157
0x0102 6 CMSG_PARTY_SETTINGS src/net/tmwa/partyhandler.cpp:402
src/net/tmwa/partyhandler.cpp:412
src/map/clif.c:8558
0x0103 30 CMSG_PARTY_KICK src/net/tmwa/partyhandler.cpp:364
src/net/tmwa/partyhandler.cpp:379
src/map/clif.c:8549
0x0104 79 SMSG_PARTY_MOVE src/map/clif.c:5485 src/net/tmwa/partyhandler.cpp:220
0x0105 31 SMSG_PARTY_LEAVE src/map/clif.c:5383 src/net/tmwa/partyhandler.cpp:232
0x0106 10 SMSG_PARTY_UPDATE_HP src/map/clif.c:5463 src/net/tmwa/partyhandler.cpp:263
0x0107 10 SMSG_PARTY_UPDATE_COORDS src/map/clif.c:5443 src/net/tmwa/partyhandler.cpp:283
0x0108 -1 CMSG_PARTY_MESSAGE src/net/tmwa/partyhandler.cpp:386 src/map/clif.c:8571
0x0109 -1 SMSG_PARTY_MESSAGE src/map/clif.c:5424 src/net/tmwa/partyhandler.cpp:290
0x010C 6 SMSG_MVP src/map/clif.c:5708 src/net/tmwa/chathandler.cpp:187
0x010E 11 SMSG_PLAYER_SKILL_UP
SMSG_GUILD_SKILL_UP
src/map/clif.c:4186
src/map/clif.c:6345
src/net/tmwa/specialhandler.cpp:115
src/net/tmwa/guildhandler.cpp:253
0x010F -1 SMSG_PLAYER_SKILLS src/map/clif.c:4145 src/net/tmwa/specialhandler.cpp:93
0x0110 10 SMSG_SKILL_FAILED src/map/clif.c:4259 src/net/tmwa/specialhandler.cpp:129
0x0112 4 CMSG_SKILL_LEVELUP_REQUEST src/net/tmwa/playerhandler.cpp:597 src/map/clif.c:8002
0x0113 10 CMSG_SKILL_USE_BEING src/net/tmwa/specialhandler.cpp:234 src/map/clif.c:8011
0x0116 10 CMSG_SKILL_USE_POSITION src/net/tmwa/specialhandler.cpp:242 src/map/clif.c:8088
0x0119 13 SMSG_PLAYER_STATUS_CHANGE src/map/clif.c:1268
src/map/clif.c:2885
src/net/tmwa/beinghandler.cpp:671
0x011B 20 CMSG_SKILL_USE_MAP src/net/tmwa/specialhandler.cpp:251 src/map/clif.c:8158
0x0139 16 SMSG_PLAYER_MOVE_TO_ATTACK src/map/clif.c:5510 src/net/tmwa/beinghandler.cpp:662
0x013A 4 SMSG_PLAYER_ATTACK_RANGE src/map/clif.c:2474 src/net/tmwa/inventoryhandler.cpp:423
0x013B 4 SMSG_PLAYER_ARROW_MESSAGE src/map/clif.c:2780 src/net/tmwa/playerhandler.cpp:545
0x013C 4 SMSG_PLAYER_ARROW_EQUIP src/map/clif.c:2761 src/net/tmwa/inventoryhandler.cpp:427
0x0141 14 SMSG_PLAYER_STAT_UPDATE_3 src/map/clif.c:2482
src/map/clif.c:2489
src/map/clif.c:2496
src/map/clif.c:2503
src/map/clif.c:2510
src/map/clif.c:2517
src/net/tmwa/playerhandler.cpp:370
0x0142 6 SMSG_NPC_INT_INPUT src/map/clif.c:1772 src/net/tmwa/npchandler.cpp:116
0x0143 10 CMSG_NPC_INT_RESPONSE src/net/tmwa/npchandler.cpp:166 src/map/clif.c:8215
0x0146 6 CMSG_NPC_CLOSE src/net/tmwa/npchandler.cpp:146 src/map/clif.c:8265
0x0148 8 SMSG_BEING_RESURRECT src/map/clif.c:4667 src/net/tmwa/beinghandler.cpp:293
0x0149 9 CMSG_ADMIN_MUTE src/net/tmwa/adminhandler.cpp:137 src/map/clif.c:9025
0x014C -1 SMSG_GUILD_ALIANCE_INFO src/map/clif.c:5962 src/net/tmwa/guildhandler.cpp:157
0x014D 2 CMSG_GUILD_CHECK_MASTER src/map/clif.c:8661
0x014E 6 SMSG_GUILD_MASTER_OR_MEMBER src/map/clif.c:5842 src/net/tmwa/guildhandler.cpp:134
0x014F 6 CMSG_GUILD_REQUEST_INFO src/net/tmwa/guildhandler.cpp:457 src/map/clif.c:8670
0x0151 6 CMSG_GUILD_REQUEST_EMBLEM src/map/clif.c:8760
0x0152 -1 SMSG_GUILD_EMBLEM src/map/clif.c:6135 src/net/tmwa/guildhandler.cpp:243
0x0153 -1 CMSG_GUILD_CHANGE_EMBLEM src/map/clif.c:8771
0x0154 -1 SMSG_GUILD_MEMBER_LIST src/map/clif.c:5996 src/net/tmwa/guildhandler.cpp:171
0x0155 -1 CMSG_GUILD_CHANGE_MEMBER_POS src/map/clif.c:8731
0x0156 -1 SMSG_GUILD_MEMBER_POS_CHANGE src/map/clif.c:6110 src/net/tmwa/guildhandler.cpp:236
0x0159 54 CMSG_GUILD_LEAVE src/net/tmwa/guildhandler.cpp:425 src/map/clif.c:8807
0x015A 66 SMSG_GUILD_LEAVE src/map/clif.c:6252 src/net/tmwa/guildhandler.cpp:322
0x015B 54 CMSG_GUILD_EXPULSION src/net/tmwa/guildhandler.cpp:434 src/map/clif.c:8817
0x015C 90 SMSG_GUILD_EXPULSION src/map/clif.c:6270 src/net/tmwa/guildhandler.cpp:327
0x015D 42 CMSG_GUILD_BREAK src/map/clif.c:8907
0x015E 6 SMSG_GUILD_BROKEN src/map/clif.c:6453 src/net/tmwa/guildhandler.cpp:384
0x0160 -1 SMSG_GUILD_POS_INFO_LIST src/map/clif.c:6062 src/net/tmwa/guildhandler.cpp:212
0x0161 -1 CMSG_GUILD_CHANGE_POS_INFO src/map/clif.c:8704
0x0162 -1 SMSG_GUILD_SKILL_INFO src/map/clif.c:6160 src/net/tmwa/guildhandler.cpp:253
0x0163 -1 SMSG_GUILD_EXPULSION_LIST src/map/clif.c:6294 src/net/tmwa/guildhandler.cpp:333
0x0165 30 CMSG_GUILD_CREATE src/net/tmwa/guildhandler.cpp:396 src/map/clif.c:8652
0x0166 -1 SMSG_GUILD_POS_NAME_LIST src/map/clif.c:6036 src/net/tmwa/guildhandler.cpp:199
0x0167 3 SMSG_GUILD_CREATE_RESPONSE src/map/clif.c:5771 src/net/tmwa/guildhandler.cpp:91
0x0168 14 CMSG_GUILD_INVITE src/net/tmwa/guildhandler.cpp:408 src/map/clif.c:8789
0x0169 3 SMSG_GUILD_INVITE_ACK src/map/clif.c:6235 src/net/tmwa/guildhandler.cpp:288
0x016A 30 SMSG_GUILD_INVITE src/map/clif.c:6217 src/net/tmwa/guildhandler.cpp:279
0x016B 10 CMSG_GUILD_INVITE_REPLY src/net/tmwa/guildhandler.cpp:416 src/map/clif.c:8798
0x016C 43 SMSG_GUILD_POSITION_INFO src/map/clif.c:5792 src/net/tmwa/guildhandler.cpp:114
0x016D 14 SMSG_GUILD_MEMBER_LOGIN src/map/clif.c:5811 src/net/tmwa/guildhandler.cpp:128
0x016E 186 CMSG_GUILD_CHANGE_NOTICE src/map/clif.c:8780
0x016F 182 SMSG_GUILD_NOTICE src/map/clif.c:6198 src/net/tmwa/guildhandler.cpp:274
0x0170 14 CMSG_GUILD_ALLIANCE_REQUEST src/map/clif.c:8871
0x0171 30 SMSG_GUILD_REQ_ALLIANCE src/map/clif.c:6367 src/net/tmwa/guildhandler.cpp:366
0x0172 10 CMSG_GUILD_ALLIANCE_REPLY src/map/clif.c:8880
0x0173 3 SMSG_GUILD_REQ_ALLIANCE_ACK src/map/clif.c:6385 src/net/tmwa/guildhandler.cpp:371
0x0174 -1 SMSG_GUILD_POSITION_CHANGED src/map/clif.c:6087 src/net/tmwa/guildhandler.cpp:227
0x017E -1 CMSG_GUILD_MESSAGE src/net/tmwa/guildhandler.cpp:443 src/map/clif.c:8831
0x017F -1 SMSG_GUILD_MESSAGE src/map/clif.c:6323
src/map/clif.c:6581
src/net/tmwa/guildhandler.cpp:347
0x0180 6 CMSG_GUILD_OPPOSITION src/map/clif.c:8898
0x0181 3 SMSG_GUILD_OPPOSITION_ACK src/map/clif.c:6421 src/net/tmwa/guildhandler.cpp:380
0x0183 10 CMSG_GUILD_ALLIANCE_DELETE src/map/clif.c:8889
0x0184 10 SMSG_GUILD_DEL_ALLIANCE src/map/clif.c:6403 src/net/tmwa/guildhandler.cpp:375
0x018A 4 CMSG_CLIENT_QUIT src/net/tmwa/gamehandler.cpp:161 src/map/clif.c:6611
0x018B 4 SMSG_MAP_QUIT_RESPONSE src/map/clif.c:7012
src/map/clif.c:7440
src/net/tmwa/gamehandler.cpp:98
0x0190 90 CMSG_SKILL_USE_POSITION_MORE src/map/clif.c:8088
0x0195 102 SMSG_PLAYER_GUILD_PARTY_INFO src/map/clif.c:7107 src/net/tmwa/beinghandler.cpp:490
0x0196 9 SMSG_BEING_STATUS_CHANGE src/map/clif.c:4585 src/net/tmwa/beinghandler.cpp:688
0x019B 10 SMSG_BEING_SELFEFFECT src/map/clif.c:2858
src/map/clif.c:6696
src/net/tmwa/beinghandler.cpp:372
0x019C 4 CMSG_ADMIN_LOCAL_ANNOUNCE src/net/tmwa/adminhandler.cpp:91 src/map/clif.c:8350
0x019D 6 CMSG_ADMIN_HIDE src/net/tmwa/adminhandler.cpp:98 src/map/clif.c:8996
0x01B1 7 SMSG_TRADE_ITEM_ADD_RESPONSE src/map/clif.c:3299 src/net/tmwa/tradehandler.cpp:176
0x01B6 114 SMSG_GUILD_BASIC_INFO src/map/clif.c:5865 src/net/tmwa/guildhandler.cpp:138
0x01C8 13 SMSG_PLAYER_INVENTORY_USE src/map/clif.c:2945 src/net/tmwa/inventoryhandler.cpp:265
0x01D4 6 SMSG_NPC_STR_INPUT src/map/clif.c:1790 src/net/tmwa/npchandler.cpp:121
0x01D5 8 CMSG_NPC_STR_RESPONSE src/net/tmwa/npchandler.cpp:173 src/map/clif.c:8234
0x01D7 11 SMSG_BEING_CHANGE_LOOKS2 src/map/clif.c:2608
src/map/clif.c:2675
src/net/tmwa/beinghandler.cpp:401
0x01D8 54 SMSG_PLAYER_UPDATE_1 src/map/clif.c:845 src/net/tmwa/beinghandler.cpp:511
0x01D9 53 SMSG_PLAYER_UPDATE_2 src/map/clif.c:1292 src/net/tmwa/beinghandler.cpp:512
0x01DA 60 SMSG_PLAYER_MOVE src/map/clif.c:934 src/net/tmwa/beinghandler.cpp:513
0x01DE 33 SMSG_SKILL_DAMAGE src/map/clif.c:4298 src/net/tmwa/beinghandler.cpp:311
0x01EE -1 SMSG_PLAYER_INVENTORY src/map/clif.c:1965 src/net/tmwa/inventoryhandler.cpp:134
0x01F0 -1 SMSG_PLAYER_STORAGE_ITEMS src/map/clif.c:2097
src/map/clif.c:2225
src/net/tmwa/inventoryhandler.cpp:135
0x020C 10 SMSG_ADMIN_IP src/map/clif.c:7120 src/net/tmwa/adminhandler.cpp:69
0x7530 2 CMSG_SERVER_VERSION_REQUEST src/net/tmwa/loginhandler.cpp:220 src/login/login.c:2257
src/login/login.c:4011
src/char/char.c:3568
src/map/clif.c:10174
0x7531 10 SMSG_SERVER_VERSION_RESPONSE src/login/login.c:2260
src/login/login.c:4014
src/char/char.c:3569
src/map/clif.c:10175
src/net/tmwa/loginhandler.cpp:197

Free Packets

These are packets that are not parsed or sent by the client, but have a known length, so they can be used by future servers and the client will just ignore them, not crash.

packet len notes
0x0000 10
0x0074 3
0x0075 -1
0x0076 9
0x0077 5
0x0079 53
0x007A 58
0x0082 2
0x0083 2
0x0084 2
0x008B 23
0x0093 2
0x00A3 -1
0x00A5 -1
0x00AE -1
0x00BA 2
0x00CE 2
0x00CF 27 clif_parse_PMIgnore
0x00D0 3 clif_parse_PMIgnoreAll, used by ManaPlus
0x00D1 4
0x00D2 4 used by ManaPlus (sent from atcommand.cpp)
0x00D3 2
0x00D4 -1
0x00D5 -1 clif_parse_CreateChatRoom
0x00D6 3
0x00D7 -1
0x00D8 6
0x00D9 14 clif_parse_ChatAddMember
0x00DA 3
0x00DB -1
0x00DC 28
0x00DD 29
0x00DE -1 clif_parse_ChatRoomStatusChange
0x00DF -1
0x00E0 30 clif_parse_ChangeChatOwner
0x00E1 30
0x00E2 26 clif_parse_KickFromChat
0x00E3 2 clif_parse_ChatLeave
0x00EA 5
0x00F1 2
0x010A 4
0x010B 6
0x010D 2 clif_parse_RequestMemo
0x0111 39
0x0114 31
0x0115 35
0x0117 18
0x0118 2 clif_parse_StopAttack, used by ManaPlus
0x011A 15 SMSG_SKILL_NO_DAMAGE, used by ManaPlus
0x011C 68
0x011D 2 clif_parse_RequestMemo
0x011E 3
0x011F 16
0x0120 6
0x0121 14
0x0122 -1
0x0123 -1
0x0124 21
0x0125 8
0x0126 8 clif_parse_PutItemToCart
0x0127 8 clif_parse_GetItemFromCart
0x0128 8 clif_parse_MoveFromKafraToCart
0x0129 8 clif_parse_MoveToKafraFromCart
0x012A 2 clif_parse_RemoveOption
0x012B 2
0x012C 3
0x012D 4
0x012E 2
0x012F -1
0x0130 6
0x0131 86
0x0132 6
0x0133 -1
0x0134 -1
0x0135 7
0x0136 -1
0x0137 6
0x0138 3
0x013D 6
0x013E 24 SMSG_SKILL_CASTING, used by ManaPlus
0x013F 26 clif_parse_GM_Monster_Item
0x0140 22 clif_parse_MapMove
0x0144 23
0x0145 19
0x0147 39
0x014A 6
0x014B 27
0x0150 110
0x0157 6
0x0158 -1
0x015F 42
0x0164 -1
0x0175 6
0x0176 106
0x0177 -1
0x0178 4 clif_parse_ItemIdentify
0x0179 5
0x017A 4 clif_parse_UseCard
0x017B -1
0x017C 6 clif_parse_InsertCard
0x017D 7
0x0182 106
0x0185 34
0x0187 6 src/char/char.c:3562
0x0188 8
0x0189 4
0x018C 29
0x018D -1
0x018E 10
0x018F 6
0x0191 86
0x0192 24
0x0193 6 clif_parse_SolveCharName
0x0194 30
0x0197 4 clif_parse_ResetChar
0x0198 8
0x0199 4 SMSG_PVP_MAP_MODE, used by ManaPlus
0x019A 14 SMSG_PVP_SET, used by ManaPlus
0x019E 2
0x019F 6
0x01A0 3
0x01A1 3
0x01A2 35
0x01A3 5
0x01A4 11
0x01A5 26
0x01A6 -1
0x01A7 4
0x01A8 4
0x01A9 6
0x01AA 10
0x01AB 12
0x01AC 6
0x01AD -1
0x01AE 4
0x01AF 4 clif_parse_ChangeCart
0x01B0 11
0x01B2 -1
0x01B3 67
0x01B4 12
0x01B5 18
0x01B7 6
0x01B8 3
0x01B9 6 SMSG_SKILL_CAST_CANCEL, used by ManaPlus
0x01BA 26 clif_parse_Shift
0x01BB 26 clif_parse_Shift
0x01BC 26 clif_parse_Recall
0x01BD 26 clif_parse_Recall
0x01BE 2
0x01BF 3
0x01C0 2
0x01C1 14
0x01C2 10
0x01C3 -1
0x01C4 22
0x01C5 22
0x01C6 4
0x01C7 2
0x01C9 97
0x01CB 9
0x01CC 9
0x01CD 29
0x01CE 6 clif_parse_AutoSpell
0x01CF 28
0x01D0 8
0x01D1 14
0x01D2 10
0x01D3 35
0x01D6 4
0x01DB 2 src/login/login.c:3861
0x01DC -1 src/login/login.c:3898
0x01DD 47 src/login/login.c:3645
0x01DF 6 clif_parse_GMReqNoChatCount
0x01E0 30
0x01E1 8
0x01E2 34
0x01E3 14
0x01E4 2
0x01E5 6
0x01E6 26
0x01E7 2 clif_parse_sn_doridori
0x01E8 28 clif_parse_CreateParty2
0x01E9 81
0x01EA 6
0x01EB 10
0x01EC 26
0x01ED 2 clif_parse_sn_explosionspirits
0x01EF -1
0x01F1 -1
0x01F2 20
0x01F3 10
0x01F4 32
0x01F5 9
0x01F6 34
0x01F7 14
0x01F8 2
0x01F9 6
0x01FA 48
0x01FB 56
0x01FC -1
0x01FD 4
0x01FE 5
0x01FF 10
0x0200 26 src/login/login.c:3632
0x0204 18 src/login/login.c:3638
0x020B 19 src/char/char.c:3030

Internal Packets

These packets are sent between the servers. Details are subject to change without notice.

login - char

Packet Length Name Sent and Parsed Locations
0x2709 2 Reload GM Account Request Sent: src/char/char.cpp
Parsed: src/login/login.cpp
0x2711 3 Indicator of success/failure of login Sent: src/login/login.cpp
Parsed: src/char/char.cpp
0x2712 19 Request login server to authenticate an account Sent: src/char/char.cpp
Parsed: src/login/login.cpp
0x2713 51 Authentication response from login server Sent: src/login/login.cpp
Parsed: src/char/char.cpp
0x2714 6 Current User Count Sent: src/char/char.cpp
Parsed: src/login/login.cpp
0x2716 6 Request Email and Time Limit Sent: src/char/char.cpp
Parsed: src/login/login.cpp
0x2717 50 Email and Time Limit Response Sent: src/login/login.cpp
Parsed: src/char/char.cpp
0x2722 86 Account Email Change Request Sent: src/char/char.cpp
Parsed: src/login/login.cpp
0x2723 7 Sex Change Response Sent: src/login/login.cpp
Parsed: src/char/char.cpp
0x2724 10 Change Ban Status Request Sent: src/char/char.cpp
Parsed: src/login/login.cpp
0x2727 6 Sex Change Request Sent: src/char/char.cpp
Parsed: src/login/login.cpp
0x2731 11 Change Ban Status Response Sent: src/login/login.cpp
Parsed: src/char/char.cpp
0x2740 54 Password Change Request (Internal) Sent: src/char/char.cpp
Parsed: src/login/login.cpp
0x2741 7 Password Change Response (Internal) Sent: src/login/login.cpp
Parsed: src/char/char.cpp

login - admin

Packet Length Name Sent and Parsed Locations


char - map

Packet Length Name Sent and Parsed Locations

inter.cpp recv

0x3000 -1
0x3001 -1
0x3002 7
0x3003 -1
0x3004 -1
0x3005 6
0x3010 6
0x3011 -1
0x3018 10
0x3019 -1
0x3020 72
0x3021 6
0x3022 52
0x3023 14
0x3024 10
0x3025 29
0x3026 6
0x3027 -1
0x3028 34
0x3030 -1
0x3031 6
0x3032 -1
0x3034 55
0x3035 19
0x3036 6
0x3037 -1
0x3038 14
0x3039 -1
0x303a -1
0x303b -1
0x303c 14
0x303d 19
0x303e 186
0x303f -1
0x3040 5
0x3041 9
0x3080 48
0x3081 14
0x3082 -1
0x3083 6

intif.cpp recv

0x3800 -1
0x3801 -1
0x3802 27
0x3803 -1
0x3804 -1
0x3810 -1
0x3811 7
0x3818 -1
0x3819 11
0x3820 35
0x3821 -1
0x3822 11
0x3823 15
0x3824 34
0x3825 29
0x3826 7
0x3827 -1
0x3830 10
0x3831 -1
0x3832 15
0x3834 79
0x3835 19
0x3836 7
0x3837 -1
0x3839 -1
0x383a -1
0x383b -1
0x383c 14
0x383d 67
0x383e 186
0x383f -1
0x3840 9
0x3841 9
0x3842 -1
0x3880 11
0x3881 -1
0x3882 7
0x3883 3

chrif.cpp recv

0x2af8 60
0x2af9 3
0x2afa 10
0x2afb 27
0x2afc 22
0x2afd -1
0x2afe 6
0x2aff -1
0x2b00 6
0x2b01 -1
0x2b02 18
0x2b03 7
0x2b04 -1
0x2b05 49
0x2b06 44
0x2b08 6
0x2b09 30
0x2b0a -1
0x2b0b 10
0x2b0c 86
0x2b0d 7
0x2b0e 44
0x2b0f 34
0x2b10 -1
0x2b11 -1
0x2b12 10
0x2b13 6
0x2b14 11
0x2b15 -1

char.cpp recv