m (→chrif.cpp recv: actually make it a table) |
m (WildX moved page Dev:TmwAthena Packets to Archive:TmwAthena Packets) |
||
(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> | ||
{{ | {{Net:0x0061|mode=row}} | ||
{{ | {{Net:0x0062|mode=row}} | ||
{{ | {{Net:0x0063|mode=row}} | ||
{{ | {{Net:0x0064|mode=row}} | ||
{{ | {{Net:0x0065|mode=row}} | ||
{{ | {{Net:0x0066|mode=row}} | ||
{{ | {{Net:0x0067|mode=row}} | ||
{{ | {{Net:0x0068|mode=row}} | ||
{{ | {{Net:0x0069|mode=row}} | ||
{{ | {{Net:0x006A|mode=row}} | ||
{{ | {{Net:0x006B|mode=row}} | ||
{{ | {{Net:0x006C|mode=row}} | ||
{{ | {{Net:0x006D|mode=row}} | ||
{{ | {{Net:0x006E|mode=row}} | ||
{{ | {{Net:0x006F|mode=row}} | ||
{{ | {{Net:0x0070|mode=row}} | ||
{{ | {{Net:0x0071|mode=row}} | ||
{{ | {{Net:0x0072|mode=row}} | ||
{{ | {{Net:0x0073|mode=row}} | ||
{{ | {{Net:0x0078|mode=row}} | ||
{{ | {{Net:0x007B|mode=row}} | ||
{{ | {{Net:0x007C|mode=row}} | ||
{{ | {{Net:0x007D|mode=row}} | ||
{{ | {{Net:0x007E|mode=row}} | ||
{{ | {{Net:0x007F|mode=row}} | ||
{{ | {{Net:0x0080|mode=row}} | ||
{{ | {{Net:0x0081|mode=row}} | ||
{{ | {{Net:0x0085|mode=row}} | ||
{{ | {{Net:0x0086|mode=row}} | ||
{{ | {{Net:0x0087|mode=row}} | ||
{{ | {{Net:0x0088|mode=row}} | ||
{{ | {{Net:0x0089|mode=row}} | ||
{{ | {{Net:0x008A|mode=row}} | ||
{{ | {{Net:0x008C|mode=row}} | ||
{{ | {{Net:0x008D|mode=row}} | ||
{{ | {{Net:0x008E|mode=row}} | ||
{{ | {{Net:0x0090|mode=row}} | ||
{{ | {{Net:0x0091|mode=row}} | ||
{{ | {{Net:0x0092|mode=row}} | ||
{{ | {{Net:0x0094|mode=row}} | ||
{{ | {{Net:0x0095|mode=row}} | ||
{{ | {{Net:0x0096|mode=row}} | ||
{{ | {{Net:0x0097|mode=row}} | ||
{{ | {{Net:0x0098|mode=row}} | ||
{{ | {{Net:0x0099|mode=row}} | ||
{{ | {{Net:0x009A|mode=row}} | ||
{{ | {{Net:0x009B|mode=row}} | ||
{{ | {{Net:0x009C|mode=row}} | ||
{{ | {{Net:0x009D|mode=row}} | ||
{{ | {{Net:0x009E|mode=row}} | ||
{{ | {{Net:0x009F|mode=row}} | ||
{{ | {{Net:0x00A0|mode=row}} | ||
{{ | {{Net:0x00A1|mode=row}} | ||
{{ | {{Net:0x00A2|mode=row}} | ||
{{ | {{Net:0x00A4|mode=row}} | ||
{{ | {{Net:0x00A6|mode=row}} | ||
{{ | {{Net:0x00A7|mode=row}} | ||
{{ | {{Net:0x00A8|mode=row}} | ||
{{ | {{Net:0x00A9|mode=row}} | ||
{{ | {{Net:0x00AA|mode=row}} | ||
{{ | {{Net:0x00AB|mode=row}} | ||
{{ | {{Net:0x00AC|mode=row}} | ||
{{ | {{Net:0x00AF|mode=row}} | ||
{{ | {{Net:0x00B0|mode=row}} | ||
{{ | {{Net:0x00B1|mode=row}} | ||
{{ | {{Net:0x00B2|mode=row}} | ||
{{ | {{Net:0x00B3|mode=row}} | ||
{{ | {{Net:0x00B4|mode=row}} | ||
{{ | {{Net:0x00B5|mode=row}} | ||
{{ | {{Net:0x00B6|mode=row}} | ||
{{ | {{Net:0x00B7|mode=row}} | ||
{{ | {{Net:0x00B8|mode=row}} | ||
{{ | {{Net:0x00B9|mode=row}} | ||
{{ | {{Net:0x00BB|mode=row}} | ||
{{ | {{Net:0x00BC|mode=row}} | ||
{{ | {{Net:0x00BD|mode=row}} | ||
{{ | {{Net:0x00BE|mode=row}} | ||
{{ | {{Net:0x00BF|mode=row}} | ||
{{ | {{Net:0x00C0|mode=row}} | ||
{{ | {{Net:0x00C1|mode=row}} | ||
{{ | {{Net:0x00C2|mode=row}} | ||
{{ | {{Net:0x00C3|mode=row}} | ||
{{ | {{Net:0x00C4|mode=row}} | ||
{{ | {{Net:0x00C5|mode=row}} | ||
{{ | {{Net:0x00C6|mode=row}} | ||
{{ | {{Net:0x00C7|mode=row}} | ||
{{ | {{Net:0x00C8|mode=row}} | ||
{{ | {{Net:0x00C9|mode=row}} | ||
{{ | {{Net:0x00CA|mode=row}} | ||
{{ | {{Net:0x00CB|mode=row}} | ||
{{ | {{Net:0x00CC|mode=row}} | ||
{{ | {{Net:0x00CD|mode=row}} | ||
{{ | {{Net:0x00E4|mode=row}} | ||
{{ | {{Net:0x00E5|mode=row}} | ||
{{ | {{Net:0x00E6|mode=row}} | ||
{{ | {{Net:0x00E7|mode=row}} | ||
{{ | {{Net:0x00E8|mode=row}} | ||
{{ | {{Net:0x00E9|mode=row}} | ||
{{ | {{Net:0x00EB|mode=row}} | ||
{{ | {{Net:0x00EC|mode=row}} | ||
{{ | {{Net:0x00ED|mode=row}} | ||
{{ | {{Net:0x00EE|mode=row}} | ||
{{ | {{Net:0x00EF|mode=row}} | ||
{{ | {{Net:0x00F0|mode=row}} | ||
{{ | {{Net:0x00F2|mode=row}} | ||
{{ | {{Net:0x00F3|mode=row}} | ||
{{ | {{Net:0x00F4|mode=row}} | ||
{{ | {{Net:0x00F5|mode=row}} | ||
{{ | {{Net:0x00F6|mode=row}} | ||
{{ | {{Net:0x00F7|mode=row}} | ||
{{ | {{Net:0x00F8|mode=row}} | ||
{{ | {{Net:0x00F9|mode=row}} | ||
{{ | {{Net:0x00FA|mode=row}} | ||
{{ | {{Net:0x00FB|mode=row}} | ||
{{ | {{Net:0x00FC|mode=row}} | ||
{{ | {{Net:0x00FD|mode=row}} | ||
{{ | {{Net:0x00FE|mode=row}} | ||
{{ | {{Net:0x00FF|mode=row}} | ||
{{ | {{Net:0x0100|mode=row}} | ||
{{ | {{Net:0x0101|mode=row}} | ||
{{ | {{Net:0x0102|mode=row}} | ||
{{ | {{Net:0x0103|mode=row}} | ||
{{ | {{Net:0x0104|mode=row}} | ||
{{ | {{Net:0x0105|mode=row}} | ||
{{ | {{Net:0x0106|mode=row}} | ||
{{ | {{Net:0x0107|mode=row}} | ||
{{ | {{Net:0x0108|mode=row}} | ||
{{ | {{Net:0x0109|mode=row}} | ||
{{ | {{Net:0x010C|mode=row}} | ||
{{ | {{Net:0x010E|mode=row}} | ||
{{ | {{Net:0x010F|mode=row}} | ||
{{ | {{Net:0x0110|mode=row}} | ||
{{ | {{Net:0x0112|mode=row}} | ||
{{ | {{Net:0x0113|mode=row}} | ||
{{ | {{Net:0x0116|mode=row}} | ||
{{ | {{Net:0x0119|mode=row}} | ||
{{ | {{Net:0x011B|mode=row}} | ||
{{ | {{Net:0x0139|mode=row}} | ||
{{ | {{Net:0x013A|mode=row}} | ||
{{ | {{Net:0x013B|mode=row}} | ||
{{ | {{Net:0x013C|mode=row}} | ||
{{ | {{Net:0x0141|mode=row}} | ||
{{ | {{Net:0x0142|mode=row}} | ||
{{ | {{Net:0x0143|mode=row}} | ||
{{ | {{Net:0x0146|mode=row}} | ||
{{ | {{Net:0x0148|mode=row}} | ||
{{ | {{Net:0x0149|mode=row}} | ||
{{ | {{Net:0x014C|mode=row}} | ||
{{ | {{Net:0x014D|mode=row}} | ||
{{ | {{Net:0x014E|mode=row}} | ||
{{ | {{Net:0x014F|mode=row}} | ||
{{ | {{Net:0x0151|mode=row}} | ||
{{ | {{Net:0x0152|mode=row}} | ||
{{ | {{Net:0x0153|mode=row}} | ||
{{ | {{Net:0x0154|mode=row}} | ||
{{ | {{Net:0x0155|mode=row}} | ||
{{ | {{Net:0x0156|mode=row}} | ||
{{ | {{Net:0x0159|mode=row}} | ||
{{ | {{Net:0x015A|mode=row}} | ||
{{ | {{Net:0x015B|mode=row}} | ||
{{ | {{Net:0x015C|mode=row}} | ||
{{ | {{Net:0x015D|mode=row}} | ||
{{ | {{Net:0x015E|mode=row}} | ||
{{ | {{Net:0x0160|mode=row}} | ||
{{ | {{Net:0x0161|mode=row}} | ||
{{ | {{Net:0x0162|mode=row}} | ||
{{ | {{Net:0x0163|mode=row}} | ||
{{ | {{Net:0x0165|mode=row}} | ||
{{ | {{Net:0x0166|mode=row}} | ||
{{ | {{Net:0x0167|mode=row}} | ||
{{ | {{Net:0x0168|mode=row}} | ||
{{ | {{Net:0x0169|mode=row}} | ||
{{ | {{Net:0x016A|mode=row}} | ||
{{ | {{Net:0x016B|mode=row}} | ||
{{ | {{Net:0x016C|mode=row}} | ||
{{ | {{Net:0x016D|mode=row}} | ||
{{ | {{Net:0x016E|mode=row}} | ||
{{ | {{Net:0x016F|mode=row}} | ||
{{ | {{Net:0x0170|mode=row}} | ||
{{ | {{Net:0x0171|mode=row}} | ||
{{ | {{Net:0x0172|mode=row}} | ||
{{ | {{Net:0x0173|mode=row}} | ||
{{ | {{Net:0x0174|mode=row}} | ||
{{ | {{Net:0x017E|mode=row}} | ||
{{ | {{Net:0x017F|mode=row}} | ||
{{ | {{Net:0x0180|mode=row}} | ||
{{ | {{Net:0x0181|mode=row}} | ||
{{ | {{Net:0x0183|mode=row}} | ||
{{ | {{Net:0x0184|mode=row}} | ||
{{ | {{Net:0x018A|mode=row}} | ||
{{ | {{Net:0x018B|mode=row}} | ||
{{ | {{Net:0x0190|mode=row}} | ||
{{ | {{Net:0x0195|mode=row}} | ||
{{ | {{Net:0x0196|mode=row}} | ||
{{ | {{Net:0x019B|mode=row}} | ||
{{ | {{Net:0x019C|mode=row}} | ||
{{ | {{Net:0x019D|mode=row}} | ||
{{ | {{Net:0x01B1|mode=row}} | ||
{{ | {{Net:0x01B6|mode=row}} | ||
{{ | {{Net:0x01C8|mode=row}} | ||
{{ | {{Net:0x01D4|mode=row}} | ||
{{ | {{Net:0x01D5|mode=row}} | ||
{{ | {{Net:0x01D7|mode=row}} | ||
{{ | {{Net:0x01D8|mode=row}} | ||
{{ | {{Net:0x01D9|mode=row}} | ||
{{ | {{Net:0x01DA|mode=row}} | ||
{{ | {{Net:0x01DE|mode=row}} | ||
{{ | {{Net:0x01EE|mode=row}} | ||
{{ | {{Net:0x01F0|mode=row}} | ||
{{ | {{Net:0x020C|mode=row}} | ||
<!-- Internal packets not documented here. --> | <!-- Internal packets not documented here. --> | ||
{{ | {{Net:0x7530|mode=row}} | ||
{{ | {{Net:0x7531|mode=row}} | ||
</table> | </table> | ||
Line 259: | Line 300: | ||
</tr> | </tr> | ||
{{ | {{Net:0x0212|mode=row}} | ||
</table> | </table> | ||
Line 1,123: | Line 1,164: | ||
</tr> | </tr> | ||
{{: | {{Net:0x2709|mode=row_internal}} | ||
{{: | {{Net:0x2711|mode=row_internal}} | ||
{{: | {{Net:0x2712|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> | ||
<!-- {{ | <!-- {{Net:0x2716|mode=row_internal}} --> | ||
</table> | </table> | ||
Line 1,145: | Line 1,196: | ||
</tr> | </tr> | ||
<!-- {{ | <!-- {{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: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: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:0x020CPacket | 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/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/map/clif.cpp |
0x7531 | 10 | Server Version Response | SMSG_SERVER_VERSION_RESPONSE | Sent: src/login/login.cpp (client)
src/login/login.cpp (ladmin) src/map/clif.cppParsed: 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 |