From The Mana World
m (fixed none existing classes... (copy paste^^))
m (Text replacement - "gitlab.com/themanaworld/manaplus/manaplus" to "git.themanaworld.org/mana/plus")
 
Line 11: Line 11:
     ! scope="col" class="unsortable" | PacketSrc
     ! scope="col" class="unsortable" | PacketSrc
|-
|-
| SMSG_SKILL_WARP_POINT || 0x0abe || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/skillrecv.cpp#L453 SkillRecv::processSkillWarpPoint2] || 20170419 || const int count = (msg.readInt16("len") - 6) / 16;<br>const int skillId = msg.readInt16("skill id");<br>dialog->addText(msg.readString(16, "map name"));
| SMSG_SKILL_WARP_POINT || 0x0abe || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/skillrecv.cpp#L453 SkillRecv::processSkillWarpPoint2] || 20170419 || const int count = (msg.readInt16("len") - 6) / 16;<br>const int skillId = msg.readInt16("skill id");<br>dialog->addText(msg.readString(16, "map name"));
|-
|-
| SMSG_CHANGE_MAP_SERVER || 0x0ac7 || 156 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/charserverrecv.cpp#L319 CharServerRecv::processChangeMapServer] || 20170315 || GameHandler::setMap(msg.readString(16, "map name"));<br>const int x = msg.readInt16("x");<br>const int y = msg.readInt16("y");<br>msg.readInt32("host");<br>server.hostname = ipToString(msg.readInt32("host"));<br>server.port = msg.readInt16("port");<br>msg.readInt32("unknown");
| SMSG_CHANGE_MAP_SERVER || 0x0ac7 || 156 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/charserverrecv.cpp#L319 CharServerRecv::processChangeMapServer] || 20170315 || GameHandler::setMap(msg.readString(16, "map name"));<br>const int x = msg.readInt16("x");<br>const int y = msg.readInt16("y");<br>msg.readInt32("host");<br>server.hostname = ipToString(msg.readInt32("host"));<br>server.port = msg.readInt16("port");<br>msg.readInt32("unknown");
|-
|-
| SMSG_PARTY_MEMBER_DEAD || 0x0ab2 || 7 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/partyrecv.cpp#L439 PartyRecv::processPartyMemberDead] || 20170524 || const BeingId id = msg.readBeingId("account id");<br>const int isDead = msg.readUInt8("is dead");
| SMSG_PARTY_MEMBER_DEAD || 0x0ab2 || 7 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/partyrecv.cpp#L439 PartyRecv::processPartyMemberDead] || 20170524 || const BeingId id = msg.readBeingId("account id");<br>const int isDead = msg.readUInt8("is dead");
|-
|-
| SMSG_PARTY_INFO || 0x0a44 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/partyrecv.cpp#L184 PartyRecv::processPartyInfo] || 20170524 || const int length = msg.readInt16("len");<br>const std::string name = msg.readString(24, "party name");<br>msg.readString(24, "party name");<br>const BeingId id = msg.readBeingId("account id");<br>msg.readBeingId("char id");<br>std::string nick = msg.readString(24, "nick");<br>std::string map = msg.readString(16, "map name");<br>const bool leader = msg.readUInt8("leader") == 0U;<br>const bool online = msg.readUInt8("online") == 0U;<br>msg.readInt16("class");<br>level = msg.readInt16("level");<br>msg.readInt8("pickup item share (&1)");<br>msg.readInt8("get item share (&2)");<br>msg.readInt32("unknown");
| SMSG_PARTY_INFO || 0x0a44 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/partyrecv.cpp#L184 PartyRecv::processPartyInfo] || 20170524 || const int length = msg.readInt16("len");<br>const std::string name = msg.readString(24, "party name");<br>msg.readString(24, "party name");<br>const BeingId id = msg.readBeingId("account id");<br>msg.readBeingId("char id");<br>std::string nick = msg.readString(24, "nick");<br>std::string map = msg.readString(16, "map name");<br>const bool leader = msg.readUInt8("leader") == 0U;<br>const bool online = msg.readUInt8("online") == 0U;<br>msg.readInt16("class");<br>level = msg.readInt16("level");<br>msg.readInt8("pickup item share (&1)");<br>msg.readInt8("get item share (&2)");<br>msg.readInt32("unknown");
|-
|-
| SMSG_PARTY_MEMBER_INFO || 0x0a43 || 85 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/partyrecv.cpp#L63 PartyRecv::processPartyMemberInfo] || 20170524 || const BeingId id = msg.readBeingId("account id");<br>msg.readBeingId("char id");<br>const bool leader = msg.readInt32("leader") == 0U;<br>msg.readInt16("class");<br>level = msg.readInt16("level");<br>const int x = msg.readInt16("x");<br>const int y = msg.readInt16("y");<br>const bool online = msg.readInt8("online") == 0U;<br>msg.readString(24, "party name");<br>const std::string nick = msg.readString(24, "player name");<br>const std::string map = msg.readString(16, "map name");<br>msg.readInt8("pickup item share (&1)");<br>msg.readInt8("get item share (&2)");
| SMSG_PARTY_MEMBER_INFO || 0x0a43 || 85 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/partyrecv.cpp#L63 PartyRecv::processPartyMemberInfo] || 20170524 || const BeingId id = msg.readBeingId("account id");<br>msg.readBeingId("char id");<br>const bool leader = msg.readInt32("leader") == 0U;<br>msg.readInt16("class");<br>level = msg.readInt16("level");<br>const int x = msg.readInt16("x");<br>const int y = msg.readInt16("y");<br>const bool online = msg.readInt8("online") == 0U;<br>msg.readString(24, "party name");<br>const std::string nick = msg.readString(24, "player name");<br>const std::string map = msg.readString(16, "map name");<br>msg.readInt8("pickup item share (&1)");<br>msg.readInt8("get item share (&2)");
|-
|-
| SMSG_PARTY_MEMBER_JOB_LEVEL || 0x0abd || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/partyrecv.cpp#L104 PartyRecv::processPartyMemberJobLevel] || 20170502 || const BeingId id = msg.readBeingId("account id");<br>msg.readInt16("class");<br>const int level = msg.readInt16("level");
| SMSG_PARTY_MEMBER_JOB_LEVEL || 0x0abd || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/partyrecv.cpp#L104 PartyRecv::processPartyMemberJobLevel] || 20170502 || const BeingId id = msg.readBeingId("account id");<br>msg.readInt16("class");<br>const int level = msg.readInt16("level");
|-
|-
| SMSG_MAIL2_MAIL_LIST_PAGE || 0x0ac2 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/mail2recv.cpp#L335 Mail2Recv::processMailListPage] || 20170419 || msg.readInt16("len");<br>mailWindow->setOpenType(fromInt(msg.readUInt8("open type"),<br>const int cnt = msg.readUInt8("cnt");<br>isEnd = msg.readUInt8("isEnd") != 0;<br>mail->id = msg.readInt64("mail id");<br>mail->read = msg.readUInt8("is read") != 0U ? true : false;<br>msg.readUInt8("type"));<br>mail->sender = msg.readString(24, "sender name");<br>mail->time = CAST_S32(cur_time - msg.readInt32("reg time"));<br>mail->expireTime = msg.readInt32("expire time") + cur_time;<br>mail->title = msg.readString(-1, "title");<br>isEnd = msg.readUInt8("isEnd") != 0;<br>msg.readUInt8("open type");<br>mail->id = msg.readInt64("mail id");<br>mail->read = msg.readUInt8("is read") != 0U ? true : false;<br>msg.readUInt8("type"));<br>mail->sender = msg.readString(24, "sender name");<br>mail->expireTime = msg.readInt32("expire time") + cur_time;<br>mail->title = msg.readString(-1, "title");
| SMSG_MAIL2_MAIL_LIST_PAGE || 0x0ac2 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/mail2recv.cpp#L335 Mail2Recv::processMailListPage] || 20170419 || msg.readInt16("len");<br>mailWindow->setOpenType(fromInt(msg.readUInt8("open type"),<br>const int cnt = msg.readUInt8("cnt");<br>isEnd = msg.readUInt8("isEnd") != 0;<br>mail->id = msg.readInt64("mail id");<br>mail->read = msg.readUInt8("is read") != 0U ? true : false;<br>msg.readUInt8("type"));<br>mail->sender = msg.readString(24, "sender name");<br>mail->time = CAST_S32(cur_time - msg.readInt32("reg time"));<br>mail->expireTime = msg.readInt32("expire time") + cur_time;<br>mail->title = msg.readString(-1, "title");<br>isEnd = msg.readUInt8("isEnd") != 0;<br>msg.readUInt8("open type");<br>mail->id = msg.readInt64("mail id");<br>mail->read = msg.readUInt8("is read") != 0U ? true : false;<br>msg.readUInt8("type"));<br>mail->sender = msg.readString(24, "sender name");<br>mail->expireTime = msg.readInt32("expire time") + cur_time;<br>mail->title = msg.readString(-1, "title");
|-
|-
| SMSG_CHAR_MAP_INFO || 0x0ac5 || 156 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/charserverrecv.cpp#L273 CharServerRecv::processCharMapInfo] || 20170329 || PlayerInfo::setCharId(msg.readInt32("char id"));<br>GameHandler::setMap(msg.readString(16, "map name"));<br>msg.readInt32("map ip address");<br>server.hostname = ipToString(msg.readInt32("map ip address"));<br>server.port = msg.readInt16("map ip port");<br>msg.readInt32("unused");
| SMSG_CHAR_MAP_INFO || 0x0ac5 || 156 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/charserverrecv.cpp#L273 CharServerRecv::processCharMapInfo] || 20170329 || PlayerInfo::setCharId(msg.readInt32("char id"));<br>GameHandler::setMap(msg.readString(16, "map name"));<br>msg.readInt32("map ip address");<br>server.hostname = ipToString(msg.readInt32("map ip address"));<br>server.port = msg.readInt16("map ip port");<br>msg.readInt32("unused");
|-
|-
| SMSG_MAIL2_CHECK_NAME_RESULT || 0x0a51 || 34 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/mail2recv.cpp#L242 Mail2Recv::processCheckNameResult] || 20160316 || const int charId = msg.readInt32("char id");<br>msg.readInt16("class");<br>msg.readInt16("level");<br>msg.readString(24, "name");
| SMSG_MAIL2_CHECK_NAME_RESULT || 0x0a51 || 34 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/mail2recv.cpp#L242 Mail2Recv::processCheckNameResult] || 20160316 || const int charId = msg.readInt32("char id");<br>msg.readInt16("class");<br>msg.readInt16("level");<br>msg.readString(24, "name");
|-
|-
| SMSG_LOGIN_DATA || 0x0ac4 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/loginrecv.cpp#L244 LoginRecv::processLoginData] || 20170315 || msg.readInt16("len");<br>Ea::LoginRecv::mToken.session_ID1 = msg.readInt32("session id1");<br>Ea::LoginRecv::mToken.account_ID = msg.readBeingId("accound id");<br>Ea::LoginRecv::mToken.session_ID2 = msg.readInt32("session id2");<br>msg.readInt32("old ip");<br>loginData.lastLogin = msg.readString(24, "last login");<br>msg.readInt16("unused");<br>msg.readUInt8("gender") & 3U));<br>msg.readString(16, "twitter auth token");<br>msg.readUInt8("twitter flag");<br>world->address = msg.readInt32("ip address");<br>world->port = msg.readInt16("port");<br>world->name = msg.readString(20, "name");<br>world->online_users = msg.readInt16("online number");<br>msg.readInt16("maintenance");<br>msg.readInt16("new");<br>msg.readInt32("unused2");
| SMSG_LOGIN_DATA || 0x0ac4 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/loginrecv.cpp#L244 LoginRecv::processLoginData] || 20170315 || msg.readInt16("len");<br>Ea::LoginRecv::mToken.session_ID1 = msg.readInt32("session id1");<br>Ea::LoginRecv::mToken.account_ID = msg.readBeingId("accound id");<br>Ea::LoginRecv::mToken.session_ID2 = msg.readInt32("session id2");<br>msg.readInt32("old ip");<br>loginData.lastLogin = msg.readString(24, "last login");<br>msg.readInt16("unused");<br>msg.readUInt8("gender") & 3U));<br>msg.readString(16, "twitter auth token");<br>msg.readUInt8("twitter flag");<br>world->address = msg.readInt32("ip address");<br>world->port = msg.readInt16("port");<br>world->name = msg.readString(20, "name");<br>world->online_users = msg.readInt16("online number");<br>msg.readInt16("maintenance");<br>msg.readInt16("new");<br>msg.readInt32("unused2");
|-
|-
| SMSG_ITEM_MOVE_FAILED || 0x0aa7 || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1505 InventoryRecv::processItemMoveFailed] || 20161214 || const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>msg.readInt16("unknown");  // 1
| SMSG_ITEM_MOVE_FAILED || 0x0aa7 || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1505 InventoryRecv::processItemMoveFailed] || 20161214 || const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>msg.readInt16("unknown");  // 1
|-
|-
| SMSG_REFINE_ADD_ITEM || 0x0aa2 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/refinerecv.cpp#L46 RefineRecv::processRefineAddItem] || 20161130 || const int count = (msg.readInt16("len") - 7) / blockSize;<br>msg.readInt16("item index");<br>msg.readUInt8("blacksmith blessing");<br>msg.readItemId("item id");<br>msg.readUInt8("chance");<br>msg.readInt32("money");
| SMSG_REFINE_ADD_ITEM || 0x0aa2 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/refinerecv.cpp#L46 RefineRecv::processRefineAddItem] || 20161130 || const int count = (msg.readInt16("len") - 7) / blockSize;<br>msg.readInt16("item index");<br>msg.readUInt8("blacksmith blessing");<br>msg.readItemId("item id");<br>msg.readUInt8("chance");<br>msg.readInt32("money");
|-
|-
| SMSG_REFINE_WINDOW_OPEN || 0x0aa0 || 2 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/refinerecv.cpp#L0 RefineRecv::processRefineOpen] || 20161130 ||  
| SMSG_REFINE_WINDOW_OPEN || 0x0aa0 || 2 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/refinerecv.cpp#L0 RefineRecv::processRefineOpen] || 20161130 ||  
|-
|-
| SMSG_GUILD_MEMBER_LIST || 0x0aa5 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L208 GuildRecv::processGuildMemberList] || 20161026 || const int length = msg.readInt16("len");<br>const BeingId id = msg.readBeingId("account id");<br>const int charId = msg.readInt32("char id");<br>msg.readInt16("hair");<br>msg.readInt16("hair color");<br>const int gender = msg.readInt16("gender");<br>const int race = msg.readInt16("class");<br>const int level = msg.readInt16("level");<br>const int exp = msg.readInt32("exp");<br>const int online = msg.readInt32("online");<br>const int pos = msg.readInt32("position");<br>name = msg.readString(24, "name");<br>msg.readInt32("last login");  // for now unused
| SMSG_GUILD_MEMBER_LIST || 0x0aa5 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L208 GuildRecv::processGuildMemberList] || 20161026 || const int length = msg.readInt16("len");<br>const BeingId id = msg.readBeingId("account id");<br>const int charId = msg.readInt32("char id");<br>msg.readInt16("hair");<br>msg.readInt16("hair color");<br>const int gender = msg.readInt16("gender");<br>const int race = msg.readInt16("class");<br>const int level = msg.readInt16("level");<br>const int exp = msg.readInt32("exp");<br>const int online = msg.readInt32("online");<br>const int pos = msg.readInt32("position");<br>name = msg.readString(24, "name");<br>msg.readInt32("last login");  // for now unused
|-
|-
| SMSG_GUILD_EXPULSION_LIST || 0x0a87 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L799 GuildRecv::processGuildExpulsionList3] || 20161019 || const int length = msg.readInt16("len");<br>msg.readInt32("char id");<br>msg.readString(40, "message");
| SMSG_GUILD_EXPULSION_LIST || 0x0a87 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L799 GuildRecv::processGuildExpulsionList3] || 20161019 || const int length = msg.readInt16("len");<br>msg.readInt32("char id");<br>msg.readString(40, "message");
|-
|-
| SMSG_GUILD_LEAVE2 || 0x0a83 || 46 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L511 GuildRecv::processGuildLeave2] || 20161019 || const int charId = msg.readInt32("char id");<br>msg.readString(40, "message");
| SMSG_GUILD_LEAVE2 || 0x0a83 || 46 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L511 GuildRecv::processGuildLeave2] || 20161019 || const int charId = msg.readInt32("char id");<br>msg.readString(40, "message");
|-
|-
| SMSG_GUILD_EXPULSION2 || 0x0a82 || 46 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L749 GuildRecv::processGuildExpulsion2] || 20161019 || msg.readString(40, "message");<br>const int charId = msg.readInt32("char id");
| SMSG_GUILD_EXPULSION2 || 0x0a82 || 46 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L749 GuildRecv::processGuildExpulsion2] || 20161019 || msg.readString(40, "message");<br>const int charId = msg.readInt32("char id");
|-
|-
| SMSG_VENDING_ITEMS_LIST || 0x0800 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/vendingrecv.cpp#L122 VendingRecv::processItemsList] || 20160921 || const int count = (msg.readInt16("len") - offset) / packetLen;<br>const BeingId id = msg.readBeingId("id");<br>msg.readInt32("vender id");<br>const int value = msg.readInt32("price");<br>const int amount = msg.readInt16("amount");<br>const int index = msg.readInt16("inv index");<br>msg.readUInt8("item type"));<br>const int itemId = msg.readItemId("item id");<br>msg.readUInt8("identify");<br>msg.readUInt8("attribute");<br>msg.readUInt8("refine");<br>cards[d] = msg.readItemId("card");<br>const uint16_t idx = msg.readInt16("option index");<br>const uint16_t val = msg.readInt16("option value");<br>msg.readUInt8("option param");<br>msg.readInt32("equip type?");<br>msg.readInt16("look");
| SMSG_VENDING_ITEMS_LIST || 0x0800 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/vendingrecv.cpp#L122 VendingRecv::processItemsList] || 20160921 || const int count = (msg.readInt16("len") - offset) / packetLen;<br>const BeingId id = msg.readBeingId("id");<br>msg.readInt32("vender id");<br>const int value = msg.readInt32("price");<br>const int amount = msg.readInt16("amount");<br>const int index = msg.readInt16("inv index");<br>msg.readUInt8("item type"));<br>const int itemId = msg.readItemId("item id");<br>msg.readUInt8("identify");<br>msg.readUInt8("attribute");<br>msg.readUInt8("refine");<br>cards[d] = msg.readItemId("card");<br>const uint16_t idx = msg.readInt16("option index");<br>const uint16_t val = msg.readInt16("option value");<br>msg.readUInt8("option param");<br>msg.readInt32("equip type?");<br>msg.readInt16("look");
|-
|-
| SMSG_PLAYER_INVENTORY_ADD || 0x0a37 || 59 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L224 InventoryRecv::processPlayerInventoryAdd] || 20160921 || const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>int amount = msg.readInt16("count");<br>const int itemId = msg.readItemId("item id");<br>const uint8_t identified = msg.readUInt8("identified");<br>const uint8_t damaged = msg.readUInt8("is damaged");<br>const uint8_t refine = msg.readUInt8("refine");<br>cards[f] = msg.readItemId("card");<br>equipType = msg.readInt32("location");<br>equipType = msg.readInt16("location");<br>msg.readUInt8("item type"));<br>const unsigned char err = msg.readUInt8("result");<br>msg.readInt32("hire expire date");<br>msg.readInt16("bind on equip");<br>const uint16_t idx = msg.readInt16("option index");<br>const uint16_t val = msg.readInt16("option value");<br>msg.readUInt8("option param");<br>favorite = fromBool(msg.readUInt8("favorite"), Favorite);<br>msg.readInt16("look");
| SMSG_PLAYER_INVENTORY_ADD || 0x0a37 || 59 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L224 InventoryRecv::processPlayerInventoryAdd] || 20160921 || const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>int amount = msg.readInt16("count");<br>const int itemId = msg.readItemId("item id");<br>const uint8_t identified = msg.readUInt8("identified");<br>const uint8_t damaged = msg.readUInt8("is damaged");<br>const uint8_t refine = msg.readUInt8("refine");<br>cards[f] = msg.readItemId("card");<br>equipType = msg.readInt32("location");<br>equipType = msg.readInt16("location");<br>msg.readUInt8("item type"));<br>const unsigned char err = msg.readUInt8("result");<br>msg.readInt32("hire expire date");<br>msg.readInt16("bind on equip");<br>const uint16_t idx = msg.readInt16("option index");<br>const uint16_t val = msg.readInt16("option value");<br>msg.readUInt8("option param");<br>favorite = fromBool(msg.readUInt8("favorite"), Favorite);<br>msg.readInt16("look");
|-
|-
| SMSG_ENCHANT_EQUIPMENT || 0x0a3f || 9 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1909 InventoryRecv::processEnchantEquipment] || 20160831 || msg.readInt16("wear state");<br>msg.readInt16("card slot");<br>msg.readItemId("item id");
| SMSG_ENCHANT_EQUIPMENT || 0x0a3f || 9 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1909 InventoryRecv::processEnchantEquipment] || 20160831 || msg.readInt16("wear state");<br>msg.readInt16("card slot");<br>msg.readItemId("item id");
|-
|-
| SMSG_GUILD_BASIC_INFO || 0x0a84 || 94 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L100 GuildRecv::processGuildBasicInfo] || 20160622 || const int guildId = msg.readInt32("guild id");<br>const int level = msg.readInt32("guild level");<br>const int members = msg.readInt32("connect member");<br>const int maxMembers = msg.readInt32("max member");<br>const int avgLevel = msg.readInt32("average level");<br>const int exp = msg.readInt32("exp");<br>const int nextExp = msg.readInt32("next exp");<br>const int emblem = msg.readInt32("emblem id");<br>std::string name = msg.readString(24, "guild name");<br>castle = msg.readString(16, "castles");<br>msg.readInt32("money, unused");<br>msg.readBeingId("leader char id");<br>master = msg.readString(24, "master name");<br>castle = msg.readString(16, "castles");<br>msg.readInt32("money, unused");
| SMSG_GUILD_BASIC_INFO || 0x0a84 || 94 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L100 GuildRecv::processGuildBasicInfo] || 20160622 || const int guildId = msg.readInt32("guild id");<br>const int level = msg.readInt32("guild level");<br>const int members = msg.readInt32("connect member");<br>const int maxMembers = msg.readInt32("max member");<br>const int avgLevel = msg.readInt32("average level");<br>const int exp = msg.readInt32("exp");<br>const int nextExp = msg.readInt32("next exp");<br>const int emblem = msg.readInt32("emblem id");<br>std::string name = msg.readString(24, "guild name");<br>castle = msg.readString(16, "castles");<br>msg.readInt32("money, unused");<br>msg.readBeingId("leader char id");<br>master = msg.readString(24, "master name");<br>castle = msg.readString(16, "castles");<br>msg.readInt32("money, unused");
|-
|-
| SMSG_FORMAT_MESSAGE_STRING_COLOR || 0x0a6f || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L201 ChatRecv::processFormatMessageStringColor] || 20160330 || const int strLen = msg.readInt16("len") - 10;<br>const int msgId = msg.readInt16("msg id");<br>msg.readInt32("color");<br>const std::string message = msg.readString(strLen, "value");
| SMSG_FORMAT_MESSAGE_STRING_COLOR || 0x0a6f || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L201 ChatRecv::processFormatMessageStringColor] || 20160330 || const int strLen = msg.readInt16("len") - 10;<br>const int msgId = msg.readInt16("msg id");<br>msg.readInt32("color");<br>const std::string message = msg.readString(strLen, "value");
|-
|-
| SMSG_MAP_LOGIN_SUCCESS || 0x02eb || 13 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/gamerecv.cpp#L52 GameRecv::processMapLogin] || 20160330 || msg.readInt32("start time");<br>msg.readCoordinates(x, y, direction, "position");<br>msg.readInt8("x size");<br>msg.readInt8("y size");<br>msg.readInt16("font");<br>msg.readUInt8("sex");
| SMSG_MAP_LOGIN_SUCCESS || 0x02eb || 13 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/gamerecv.cpp#L52 GameRecv::processMapLogin] || 20160330 || msg.readInt32("start time");<br>msg.readCoordinates(x, y, direction, "position");<br>msg.readInt8("x size");<br>msg.readInt8("y size");<br>msg.readInt16("font");<br>msg.readUInt8("sex");
|-
|-
| SMSG_SKILL_SCALE || 0x0a41 || 18 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/skillrecv.cpp#L567 SkillRecv::processSkillScale] || 20151223 || msg.readBeingId("being id");<br>msg.readInt16("skill id");<br>msg.readInt16("skill level");<br>msg.readInt16("x");<br>msg.readInt16("y");<br>msg.readInt32("cast time");
| SMSG_SKILL_SCALE || 0x0a41 || 18 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/skillrecv.cpp#L567 SkillRecv::processSkillScale] || 20151223 || msg.readBeingId("being id");<br>msg.readInt16("skill id");<br>msg.readInt16("skill level");<br>msg.readInt16("x");<br>msg.readInt16("y");<br>msg.readInt32("cast time");
|-
|-
| CMSG_PLAYER_SELECT_STYLE_ACK || 0x0a47 || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/playerrecv.cpp#L575 PlayerRecv::processSelectStyleAck] || 20151104 || msg.readUInt8("flag");
| CMSG_PLAYER_SELECT_STYLE_ACK || 0x0a47 || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/playerrecv.cpp#L575 PlayerRecv::processSelectStyleAck] || 20151104 || msg.readUInt8("flag");
|-
|-
| SMSG_SELECT_CART || 0x097f || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1418 InventoryRecv::processSelectCart] || 20150805 || const int count = msg.readInt16("len") - 8;<br>msg.readBeingId("account id");<br>msg.readUInt8("cart type");
| SMSG_SELECT_CART || 0x097f || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1418 InventoryRecv::processSelectCart] || 20150805 || const int count = msg.readInt16("len") - 8;<br>msg.readBeingId("account id");<br>msg.readUInt8("cart type");
|-
|-
| SMSG_CAMERA_INFO || 0x0a78 || 15 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/maprecv.cpp#L71 MapRecv::processCameraInfo] || 20160525 || msg.readUInt8("action");<br>msg.readFloat("range");<br>msg.readFloat("rotation");<br>msg.readFloat("latitude");
| SMSG_CAMERA_INFO || 0x0a78 || 15 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/maprecv.cpp#L71 MapRecv::processCameraInfo] || 20160525 || msg.readUInt8("action");<br>msg.readFloat("range");<br>msg.readFloat("rotation");<br>msg.readFloat("latitude");
|-
|-
| SMSG_QUEST_NOTIFY_OBJECTIVES || 0x08fe || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/questrecv.cpp#L221 QuestRecv::processUpdateQuestsObjectives2] || 20150513 || const int num = (msg.readInt16("len") - 4) / 12;<br>msg.readInt32("quest id");<br>msg.readInt32("monster id");<br>msg.readInt16("max count");<br>msg.readInt16("count");
| SMSG_QUEST_NOTIFY_OBJECTIVES || 0x08fe || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/questrecv.cpp#L221 QuestRecv::processUpdateQuestsObjectives2] || 20150513 || const int num = (msg.readInt16("len") - 4) / 12;<br>msg.readInt32("quest id");<br>msg.readInt32("monster id");<br>msg.readInt16("max count");<br>msg.readInt16("count");
|-
|-
| SMSG_QUEST_UPDATE_OBJECTIVES || 0x09fa || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/questrecv.cpp#L195 QuestRecv::processUpdateQuestsObjectives] || 20150513 || msg.readInt16("len");<br>const int num = msg.readInt16("objectives count");<br>msg.readInt32("quest id");<br>msg.readInt32("hunt ident");<br>msg.readInt32("hunt ident2");<br>msg.readInt32("hunt ident");<br>msg.readInt32("monster id");<br>msg.readInt16("count old");<br>msg.readInt16("count new");
| SMSG_QUEST_UPDATE_OBJECTIVES || 0x09fa || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/questrecv.cpp#L195 QuestRecv::processUpdateQuestsObjectives] || 20150513 || msg.readInt16("len");<br>const int num = msg.readInt16("objectives count");<br>msg.readInt32("quest id");<br>msg.readInt32("hunt ident");<br>msg.readInt32("hunt ident2");<br>msg.readInt32("hunt ident");<br>msg.readInt32("monster id");<br>msg.readInt16("count old");<br>msg.readInt16("count new");
|-
|-
| SMSG_QUEST_ADD || 0x09f9 || 143 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/questrecv.cpp#L37 QuestRecv::processAddQuest] || 20150513 || const int var = msg.readInt32("quest id");<br>const int val = msg.readUInt8("state");<br>msg.readUInt8("time diff");<br>msg.readInt32("time");<br>const int num = msg.readInt16("objectives count");<br>msg.readInt32("hunt ident");<br>msg.readInt32("hunt ident2");<br>msg.readInt32("mob type");<br>msg.readInt32("hunt ident");<br>msg.readInt32("mob type");<br>msg.readInt32("mob id");<br>msg.readInt16("level min");<br>msg.readInt16("level max");<br>msg.readInt16("hunt count");<br>msg.readInt16("max count");<br>msg.readString(24, "mob name");
| SMSG_QUEST_ADD || 0x09f9 || 143 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/questrecv.cpp#L37 QuestRecv::processAddQuest] || 20150513 || const int var = msg.readInt32("quest id");<br>const int val = msg.readUInt8("state");<br>msg.readUInt8("time diff");<br>msg.readInt32("time");<br>const int num = msg.readInt16("objectives count");<br>msg.readInt32("hunt ident");<br>msg.readInt32("hunt ident2");<br>msg.readInt32("mob type");<br>msg.readInt32("hunt ident");<br>msg.readInt32("mob type");<br>msg.readInt32("mob id");<br>msg.readInt16("level min");<br>msg.readInt16("level max");<br>msg.readInt16("hunt count");<br>msg.readInt16("max count");<br>msg.readString(24, "mob name");
|-
|-
| SMSG_QUEST_LIST || 0x09f8 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/questrecv.cpp#L104 QuestRecv::processAddQuests] || 20150513 || msg.readInt16("len");<br>const int num = msg.readInt32("quests count");<br>const int var = msg.readInt32("quest id");<br>const int val = msg.readUInt8("state");<br>msg.readInt32("time diff");<br>msg.readInt32("time");<br>const int cnt = msg.readInt16("objectives count");<br>msg.readInt32("hunt ident");<br>msg.readInt32("hunt ident2");<br>msg.readInt32("mob type");<br>msg.readInt32("hunt ident");<br>msg.readInt32("mob type");<br>msg.readInt32("mob id");<br>msg.readInt16("level min");<br>msg.readInt16("level max");<br>msg.readInt16("hunt count");<br>msg.readInt16("max count");<br>msg.readString(24, "mob name");
| SMSG_QUEST_LIST || 0x09f8 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/questrecv.cpp#L104 QuestRecv::processAddQuests] || 20150513 || msg.readInt16("len");<br>const int num = msg.readInt32("quests count");<br>const int var = msg.readInt32("quest id");<br>const int val = msg.readUInt8("state");<br>msg.readInt32("time diff");<br>msg.readInt32("time");<br>const int cnt = msg.readInt16("objectives count");<br>msg.readInt32("hunt ident");<br>msg.readInt32("hunt ident2");<br>msg.readInt32("mob type");<br>msg.readInt32("hunt ident");<br>msg.readInt32("mob type");<br>msg.readInt32("mob id");<br>msg.readInt16("level min");<br>msg.readInt16("level max");<br>msg.readInt16("hunt count");<br>msg.readInt16("max count");<br>msg.readString(24, "mob name");
|-
|-
| SMSG_PLAYER_HEAL || 0x0a27 || 8 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/playerrecv.cpp#L318 PlayerRecv::processPlayerHeal] || 20150513 || const int type = msg.readInt16("var id");<br>amount = msg.readInt32("value");<br>amount = msg.readInt16("value");
| SMSG_PLAYER_HEAL || 0x0a27 || 8 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/playerrecv.cpp#L318 PlayerRecv::processPlayerHeal] || 20150513 || const int type = msg.readInt16("var id");<br>amount = msg.readInt32("value");<br>amount = msg.readInt16("value");
|-
|-
| SMSG_BEING_MOVE || 0x09fd || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L611 BeingRecv::processBeingMove] || 20150513 || msg.readInt16("len");<br>msg.readUInt8("object type"));<br>const BeingId id = msg.readBeingId("being id");<br>msg.readBeingId("char id");<br>int16_t speed = msg.readInt16("speed");<br>const uint32_t opt1 = msg.readInt16("opt1");<br>const uint32_t opt2 = msg.readInt16("opt2");<br>option = msg.readInt32("option");<br>option = msg.readInt16("option");<br>const int16_t job = msg.readInt16("class");<br>const int hairStyle = msg.readInt16("hair style");<br>weapon = msg.readItemId("weapon");<br>msg.readItemId("shield");<br>weapon = CAST_U32(msg.readInt16("weapon"));<br>const uint16_t headBottom = msg.readInt16("head bottom");<br>msg.readInt32("tick");<br>msg.readInt16("shield");<br>const uint16_t headTop = msg.readInt16("head top");<br>const uint16_t headMid = msg.readInt16("head mid");<br>msg.readInt16("hair color"), ItemColor);<br>const uint16_t shoes = msg.readInt16("shoes or clothes color?");<br>const uint16_t gloves = msg.readInt16("head dir / gloves");<br>msg.readInt16("robe");<br>msg.readInt32("guild id");<br>msg.readInt16("guild emblem");<br>dstBeing->setManner(msg.readInt16("manner"));<br>opt3 = msg.readInt32("opt3");<br>opt3 = msg.readInt16("opt3");<br>dstBeing->setKarma(msg.readUInt8("karma"));<br>const uint8_t gender = CAST_U8(msg.readUInt8("gender") & 3);<br>msg.readCoordinatePair(srcX, srcY, dstX, dstY, "move path");<br>msg.readUInt8("(sx<<4) | (sy&0x0f)");<br>msg.readInt8("xs");<br>msg.readInt8("ys");<br>const int level = CAST_S32(msg.readInt16("level"));<br>msg.readInt16("font");<br>const int maxHP = msg.readInt32("max hp");<br>const int hp = msg.readInt32("hp");<br>msg.readInt8("is boss");<br>msg.readInt16("body2");<br>msg.readString(24, "name");
| SMSG_BEING_MOVE || 0x09fd || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L611 BeingRecv::processBeingMove] || 20150513 || msg.readInt16("len");<br>msg.readUInt8("object type"));<br>const BeingId id = msg.readBeingId("being id");<br>msg.readBeingId("char id");<br>int16_t speed = msg.readInt16("speed");<br>const uint32_t opt1 = msg.readInt16("opt1");<br>const uint32_t opt2 = msg.readInt16("opt2");<br>option = msg.readInt32("option");<br>option = msg.readInt16("option");<br>const int16_t job = msg.readInt16("class");<br>const int hairStyle = msg.readInt16("hair style");<br>weapon = msg.readItemId("weapon");<br>msg.readItemId("shield");<br>weapon = CAST_U32(msg.readInt16("weapon"));<br>const uint16_t headBottom = msg.readInt16("head bottom");<br>msg.readInt32("tick");<br>msg.readInt16("shield");<br>const uint16_t headTop = msg.readInt16("head top");<br>const uint16_t headMid = msg.readInt16("head mid");<br>msg.readInt16("hair color"), ItemColor);<br>const uint16_t shoes = msg.readInt16("shoes or clothes color?");<br>const uint16_t gloves = msg.readInt16("head dir / gloves");<br>msg.readInt16("robe");<br>msg.readInt32("guild id");<br>msg.readInt16("guild emblem");<br>dstBeing->setManner(msg.readInt16("manner"));<br>opt3 = msg.readInt32("opt3");<br>opt3 = msg.readInt16("opt3");<br>dstBeing->setKarma(msg.readUInt8("karma"));<br>const uint8_t gender = CAST_U8(msg.readUInt8("gender") & 3);<br>msg.readCoordinatePair(srcX, srcY, dstX, dstY, "move path");<br>msg.readUInt8("(sx<<4) | (sy&0x0f)");<br>msg.readInt8("xs");<br>msg.readInt8("ys");<br>const int level = CAST_S32(msg.readInt16("level"));<br>msg.readInt16("font");<br>const int maxHP = msg.readInt32("max hp");<br>const int hp = msg.readInt32("hp");<br>msg.readInt8("is boss");<br>msg.readInt16("body2");<br>msg.readString(24, "name");
|-
|-
| SMSG_BEING_SPAWN || 0x09fe || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L811 BeingRecv::processBeingSpawn] || 20150513 || msg.readInt16("len");<br>msg.readUInt8("object type"));<br>const BeingId id = msg.readBeingId("being id");<br>msg.readBeingId("char id");<br>int16_t speed = msg.readInt16("speed");<br>const uint32_t opt1 = msg.readInt16("opt1");<br>const uint32_t opt2 = msg.readInt16("opt2");<br>option = msg.readInt32("option");<br>option = msg.readInt16("option");<br>const int16_t job = msg.readInt16("class");<br>const int hairStyle = msg.readInt16("hair style");<br>weapon = msg.readItemId("weapon");<br>msg.readItemId("shield");<br>weapon = CAST_U32(msg.readInt16("weapon"));<br>const uint16_t headBottom = msg.readInt16("head bottom");<br>msg.readInt16("shield");<br>const uint16_t headTop = msg.readInt16("head top");<br>const uint16_t headMid = msg.readInt16("head mid");<br>msg.readInt16("hair color"), ItemColor);<br>const uint16_t shoes = msg.readInt16("shoes or clothes color?");<br>const uint16_t gloves = msg.readInt16("head dir / gloves");<br>msg.readInt16("robe");<br>msg.readInt32("guild id");<br>msg.readInt16("guild emblem");<br>dstBeing->setManner(msg.readInt16("manner"));<br>opt3 = msg.readInt32("opt3");<br>opt3 = msg.readInt16("opt3");<br>dstBeing->setKarma(msg.readUInt8("karma"));<br>const uint8_t gender = CAST_U8(msg.readUInt8("gender") & 3);<br>msg.readCoordinates(x, y, dir, "position");<br>msg.readInt8("xs");<br>msg.readInt8("ys");<br>const int level = CAST_S32(msg.readInt16("level"));<br>msg.readInt16("font");<br>const int maxHP = msg.readInt32("max hp");<br>const int hp = msg.readInt32("hp");<br>msg.readInt8("is boss");<br>msg.readInt16("body2");<br>msg.readString(24, "name");
| SMSG_BEING_SPAWN || 0x09fe || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L811 BeingRecv::processBeingSpawn] || 20150513 || msg.readInt16("len");<br>msg.readUInt8("object type"));<br>const BeingId id = msg.readBeingId("being id");<br>msg.readBeingId("char id");<br>int16_t speed = msg.readInt16("speed");<br>const uint32_t opt1 = msg.readInt16("opt1");<br>const uint32_t opt2 = msg.readInt16("opt2");<br>option = msg.readInt32("option");<br>option = msg.readInt16("option");<br>const int16_t job = msg.readInt16("class");<br>const int hairStyle = msg.readInt16("hair style");<br>weapon = msg.readItemId("weapon");<br>msg.readItemId("shield");<br>weapon = CAST_U32(msg.readInt16("weapon"));<br>const uint16_t headBottom = msg.readInt16("head bottom");<br>msg.readInt16("shield");<br>const uint16_t headTop = msg.readInt16("head top");<br>const uint16_t headMid = msg.readInt16("head mid");<br>msg.readInt16("hair color"), ItemColor);<br>const uint16_t shoes = msg.readInt16("shoes or clothes color?");<br>const uint16_t gloves = msg.readInt16("head dir / gloves");<br>msg.readInt16("robe");<br>msg.readInt32("guild id");<br>msg.readInt16("guild emblem");<br>dstBeing->setManner(msg.readInt16("manner"));<br>opt3 = msg.readInt32("opt3");<br>opt3 = msg.readInt16("opt3");<br>dstBeing->setKarma(msg.readUInt8("karma"));<br>const uint8_t gender = CAST_U8(msg.readUInt8("gender") & 3);<br>msg.readCoordinates(x, y, dir, "position");<br>msg.readInt8("xs");<br>msg.readInt8("ys");<br>const int level = CAST_S32(msg.readInt16("level"));<br>msg.readInt16("font");<br>const int maxHP = msg.readInt32("max hp");<br>const int hp = msg.readInt32("hp");<br>msg.readInt8("is boss");<br>msg.readInt16("body2");<br>msg.readString(24, "name");
|-
|-
| SMSG_BEING_VISIBLE || 0x09ff || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L427 BeingRecv::processBeingVisible] || 20150513 || msg.readInt16("len");<br>msg.readUInt8("object type"));<br>const BeingId id = msg.readBeingId("being id");<br>msg.readBeingId("char id");<br>int16_t speed = msg.readInt16("speed");<br>const uint32_t opt1 = msg.readInt16("opt1");<br>const uint32_t opt2 = msg.readInt16("opt2");<br>option = msg.readInt32("option");<br>option = msg.readInt16("option");<br>const int16_t job = msg.readInt16("class");<br>const int hairStyle = msg.readInt16("hair style");<br>weapon = msg.readItemId("weapon");<br>msg.readItemId("shield");<br>weapon = CAST_U32(msg.readInt16("weapon"));<br>const uint16_t headBottom = msg.readInt16("head bottom");<br>msg.readInt16("shield");<br>const uint16_t headTop = msg.readInt16("head top");<br>const uint16_t headMid = msg.readInt16("head mid");<br>const ItemColor hairColor = fromInt(msg.readInt16("hair color"),<br>const uint16_t shoes = msg.readInt16("shoes or clothes color?");<br>const uint16_t gloves = msg.readInt16("head dir / gloves");<br>msg.readInt16("robe");<br>msg.readInt32("guild id");<br>msg.readInt16("guild emblem");<br>dstBeing->setManner(msg.readInt16("manner"));<br>opt3 = msg.readInt32("opt3");<br>opt3 = msg.readInt16("opt3");<br>dstBeing->setKarma(msg.readUInt8("karma"));<br>const uint8_t gender = CAST_U8(msg.readUInt8("gender") & 3);<br>msg.readCoordinates(x, y, dir, "position");<br>msg.readInt8("xs");<br>msg.readInt8("ys");<br>applyPlayerAction(msg, dstBeing, msg.readUInt8("action type"));<br>const int level = CAST_S32(msg.readInt16("level"));<br>msg.readInt16("font");<br>const int maxHP = msg.readInt32("max hp");<br>const int hp = msg.readInt32("hp");<br>msg.readInt8("is boss");<br>msg.readInt16("body2");<br>msg.readString(24, "name");
| SMSG_BEING_VISIBLE || 0x09ff || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L427 BeingRecv::processBeingVisible] || 20150513 || msg.readInt16("len");<br>msg.readUInt8("object type"));<br>const BeingId id = msg.readBeingId("being id");<br>msg.readBeingId("char id");<br>int16_t speed = msg.readInt16("speed");<br>const uint32_t opt1 = msg.readInt16("opt1");<br>const uint32_t opt2 = msg.readInt16("opt2");<br>option = msg.readInt32("option");<br>option = msg.readInt16("option");<br>const int16_t job = msg.readInt16("class");<br>const int hairStyle = msg.readInt16("hair style");<br>weapon = msg.readItemId("weapon");<br>msg.readItemId("shield");<br>weapon = CAST_U32(msg.readInt16("weapon"));<br>const uint16_t headBottom = msg.readInt16("head bottom");<br>msg.readInt16("shield");<br>const uint16_t headTop = msg.readInt16("head top");<br>const uint16_t headMid = msg.readInt16("head mid");<br>const ItemColor hairColor = fromInt(msg.readInt16("hair color"),<br>const uint16_t shoes = msg.readInt16("shoes or clothes color?");<br>const uint16_t gloves = msg.readInt16("head dir / gloves");<br>msg.readInt16("robe");<br>msg.readInt32("guild id");<br>msg.readInt16("guild emblem");<br>dstBeing->setManner(msg.readInt16("manner"));<br>opt3 = msg.readInt32("opt3");<br>opt3 = msg.readInt16("opt3");<br>dstBeing->setKarma(msg.readUInt8("karma"));<br>const uint8_t gender = CAST_U8(msg.readUInt8("gender") & 3);<br>msg.readCoordinates(x, y, dir, "position");<br>msg.readInt8("xs");<br>msg.readInt8("ys");<br>applyPlayerAction(msg, dstBeing, msg.readUInt8("action type"));<br>const int level = CAST_S32(msg.readInt16("level"));<br>msg.readInt16("font");<br>const int maxHP = msg.readInt32("max hp");<br>const int hp = msg.readInt32("hp");<br>msg.readInt8("is boss");<br>msg.readInt16("body2");<br>msg.readString(24, "name");
|-
|-
| SMSG_DRESS_ROOM_OPEN || 0x0a02 || 4 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/playerrecv.cpp#L520 PlayerRecv::processDressRoomOpen] || 20150513 || msg.readInt16("view");
| SMSG_DRESS_ROOM_OPEN || 0x0a02 || 4 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/playerrecv.cpp#L520 PlayerRecv::processDressRoomOpen] || 20150513 || msg.readInt16("view");
|-
|-
| SMSG_BEING_HAT_EFFECTS || 0x0a3b || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1527 BeingRecv::processBeingHatEffects] || 20150507 || const int cnt = (msg.readInt16("len") - 9) / 2;<br>msg.readBeingId("being id");<br>msg.readUInt8("enable");<br>msg.readInt16("hat effect");
| SMSG_BEING_HAT_EFFECTS || 0x0a3b || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1527 BeingRecv::processBeingHatEffects] || 20150507 || const int cnt = (msg.readInt16("len") - 9) / 2;<br>msg.readBeingId("being id");<br>msg.readUInt8("enable");<br>msg.readInt16("hat effect");
|-
|-
| SMSG_SEARCHSTORE_SEARCH_ACK || 0x0836 || 0 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/searchstorerecv.cpp#L42 SearchStoreRecv::processSearchAck] || 20150226 || const int count = (msg.readInt16("len") - 7) / (104 + itemIdLen);<br>msg.readUInt8("is first page");<br>msg.readUInt8("is next page");<br>msg.readUInt8("remain uses");<br>msg.readInt32("store id");<br>msg.readInt32("aoount id");<br>msg.readString(80, "store name");<br>msg.readItemId("item id");<br>msg.readUInt8("item type");<br>msg.readInt32("price");<br>msg.readInt16("amount");<br>msg.readUInt8("refine");<br>msg.readItemId("card");<br>msg.readInt16("option index");<br>msg.readInt16("option value");<br>msg.readUInt8("option param");
| SMSG_SEARCHSTORE_SEARCH_ACK || 0x0836 || 0 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/searchstorerecv.cpp#L42 SearchStoreRecv::processSearchAck] || 20150226 || const int count = (msg.readInt16("len") - 7) / (104 + itemIdLen);<br>msg.readUInt8("is first page");<br>msg.readUInt8("is next page");<br>msg.readUInt8("remain uses");<br>msg.readInt32("store id");<br>msg.readInt32("aoount id");<br>msg.readString(80, "store name");<br>msg.readItemId("item id");<br>msg.readUInt8("item type");<br>msg.readInt32("price");<br>msg.readInt16("amount");<br>msg.readUInt8("refine");<br>msg.readItemId("card");<br>msg.readInt16("option index");<br>msg.readInt16("option value");<br>msg.readUInt8("option param");
|-
|-
| SMSG_BEING_VIEW_EQUIPMENT || 0x0a2d || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L2111 BeingRecv::processBeingViewEquipment] || 20150226 || const int count = (msg.readInt16("len") - 45) / (21 + itemIdLen * 5);<br>msg.readString(24, "name");<br>msg.readInt16("job");<br>msg.readInt16("head");<br>msg.readInt16("accessory");<br>msg.readInt16("accessory2");<br>msg.readInt16("accessory3");<br>msg.readInt16("robe");<br>msg.readInt16("hair color");<br>msg.readInt16("body color");<br>msg.readUInt8("gender");<br>msg.readInt16("index");<br>msg.readItemId("item id");<br>msg.readUInt8("item type");<br>msg.readInt32("location");<br>msg.readInt32("wear state");<br>msg.readInt8("refine");<br>msg.readItemId("card");<br>msg.readInt32("hire expire date (?)");<br>msg.readInt16("equip type");<br>msg.readInt16("item sprite number");<br>msg.readUInt8("flags");
| SMSG_BEING_VIEW_EQUIPMENT || 0x0a2d || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L2111 BeingRecv::processBeingViewEquipment] || 20150226 || const int count = (msg.readInt16("len") - 45) / (21 + itemIdLen * 5);<br>msg.readString(24, "name");<br>msg.readInt16("job");<br>msg.readInt16("head");<br>msg.readInt16("accessory");<br>msg.readInt16("accessory2");<br>msg.readInt16("accessory3");<br>msg.readInt16("robe");<br>msg.readInt16("hair color");<br>msg.readInt16("body color");<br>msg.readUInt8("gender");<br>msg.readInt16("index");<br>msg.readItemId("item id");<br>msg.readUInt8("item type");<br>msg.readInt32("location");<br>msg.readInt32("wear state");<br>msg.readInt8("refine");<br>msg.readItemId("card");<br>msg.readInt32("hire expire date (?)");<br>msg.readInt16("equip type");<br>msg.readInt16("item sprite number");<br>msg.readUInt8("flags");
|-
|-
| SMSG_PLAYER_STORAGE_EQUIP || 0x0a10 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L659 InventoryRecv::processPlayerStorageEquip] || 20150226 || msg.readInt16("len");<br>msg.readString(24, "storage name");<br>const int index = msg.readInt16("index") - STORAGE_OFFSET;<br>const int itemId = msg.readItemId("item id");<br>msg.readUInt8("item type"));<br>msg.readInt32("location");<br>msg.readInt32("wear state");<br>msg.readUInt8("identified");<br>msg.readInt16("location");<br>msg.readInt16("wear state");<br>msg.readUInt8("is damaged");<br>const uint8_t refine = msg.readUInt8("refine level");<br>cards[f] = msg.readItemId("card");<br>msg.readInt32("hire expire date");<br>msg.readInt16("bind on equip");<br>msg.readInt16("sprite");<br>options = new ItemOptionsList(msg.readUInt8("option count"));<br>const uint16_t idx = msg.readInt16("option index");<br>const uint16_t val = msg.readInt16("option value");<br>msg.readUInt8("option param");<br>flags.byte = msg.readUInt8("flags");
| SMSG_PLAYER_STORAGE_EQUIP || 0x0a10 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L659 InventoryRecv::processPlayerStorageEquip] || 20150226 || msg.readInt16("len");<br>msg.readString(24, "storage name");<br>const int index = msg.readInt16("index") - STORAGE_OFFSET;<br>const int itemId = msg.readItemId("item id");<br>msg.readUInt8("item type"));<br>msg.readInt32("location");<br>msg.readInt32("wear state");<br>msg.readUInt8("identified");<br>msg.readInt16("location");<br>msg.readInt16("wear state");<br>msg.readUInt8("is damaged");<br>const uint8_t refine = msg.readUInt8("refine level");<br>cards[f] = msg.readItemId("card");<br>msg.readInt32("hire expire date");<br>msg.readInt16("bind on equip");<br>msg.readInt16("sprite");<br>options = new ItemOptionsList(msg.readUInt8("option count"));<br>const uint16_t idx = msg.readInt16("option index");<br>const uint16_t val = msg.readInt16("option value");<br>msg.readUInt8("option param");<br>flags.byte = msg.readUInt8("flags");
|-
|-
| SMSG_PLAYER_CART_EQUIP || 0x0a0f || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1043 InventoryRecv::processPlayerCartEquip] || 20150226 || msg.readInt16("len");<br>const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>const int itemId = msg.readItemId("item id");<br>msg.readUInt8("item type"));<br>msg.readInt32("location");<br>msg.readInt32("wear state");<br>msg.readUInt8("identified");<br>msg.readInt16("location");<br>msg.readInt16("wear state");<br>msg.readUInt8("is damaged");<br>const uint8_t refine = msg.readUInt8("refine level");<br>cards[f] = msg.readItemId("card");<br>msg.readInt32("hire expire date");<br>msg.readInt16("bind on equip");<br>msg.readInt16("sprite");<br>options = new ItemOptionsList(msg.readUInt8("option count"));<br>const uint16_t idx = msg.readInt16("option index");<br>const uint16_t val = msg.readInt16("option value");<br>msg.readUInt8("option param");<br>flags.byte = msg.readUInt8("flags");
| SMSG_PLAYER_CART_EQUIP || 0x0a0f || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1043 InventoryRecv::processPlayerCartEquip] || 20150226 || msg.readInt16("len");<br>const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>const int itemId = msg.readItemId("item id");<br>msg.readUInt8("item type"));<br>msg.readInt32("location");<br>msg.readInt32("wear state");<br>msg.readUInt8("identified");<br>msg.readInt16("location");<br>msg.readInt16("wear state");<br>msg.readUInt8("is damaged");<br>const uint8_t refine = msg.readUInt8("refine level");<br>cards[f] = msg.readItemId("card");<br>msg.readInt32("hire expire date");<br>msg.readInt16("bind on equip");<br>msg.readInt16("sprite");<br>options = new ItemOptionsList(msg.readUInt8("option count"));<br>const uint16_t idx = msg.readInt16("option index");<br>const uint16_t val = msg.readInt16("option value");<br>msg.readUInt8("option param");<br>flags.byte = msg.readUInt8("flags");
|-
|-
| SMSG_PLAYER_EQUIPMENT || 0x0a0d || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L113 InventoryRecv::processPlayerEquipment] || 20150226 || msg.readInt16("len");<br>const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>const int itemId = msg.readItemId("item id");<br>msg.readUInt8("item type"));<br>msg.readInt32("location");<br>equipType = msg.readInt32("wear state");<br>msg.readUInt8("identified");<br>msg.readInt16("location");<br>equipType = msg.readInt16("wear state");<br>msg.readUInt8("is damaged");<br>const uint8_t refine = CAST_U8(msg.readInt8("refine"));<br>cards[f] = msg.readItemId("card");<br>msg.readInt32("hire expire date (?)");<br>msg.readInt16("equip type");<br>msg.readInt16("item sprite number");<br>options = new ItemOptionsList(msg.readUInt8("option count"));<br>const uint16_t idx = msg.readInt16("option index");<br>const uint16_t val = msg.readInt16("option value");<br>msg.readUInt8("option param");<br>flags.byte = msg.readUInt8("flags");
| SMSG_PLAYER_EQUIPMENT || 0x0a0d || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L113 InventoryRecv::processPlayerEquipment] || 20150226 || msg.readInt16("len");<br>const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>const int itemId = msg.readItemId("item id");<br>msg.readUInt8("item type"));<br>msg.readInt32("location");<br>equipType = msg.readInt32("wear state");<br>msg.readUInt8("identified");<br>msg.readInt16("location");<br>equipType = msg.readInt16("wear state");<br>msg.readUInt8("is damaged");<br>const uint8_t refine = CAST_U8(msg.readInt8("refine"));<br>cards[f] = msg.readItemId("card");<br>msg.readInt32("hire expire date (?)");<br>msg.readInt16("equip type");<br>msg.readInt16("item sprite number");<br>options = new ItemOptionsList(msg.readUInt8("option count"));<br>const uint16_t idx = msg.readInt16("option index");<br>const uint16_t val = msg.readInt16("option value");<br>msg.readUInt8("option param");<br>flags.byte = msg.readUInt8("flags");
|-
|-
| SMSG_PLAYER_CART_ADD || 0x0a0b || 47 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L970 InventoryRecv::processPlayerCartAdd] || 20150226 || const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>int amount = msg.readInt32("count");<br>const int itemId = msg.readItemId("item id");<br>msg.readUInt8("item type"));<br>const uint8_t identified = msg.readUInt8("identified");<br>const Damaged damaged = fromBool(msg.readUInt8("attribute"), Damaged);<br>const uint8_t refine = msg.readUInt8("refine");<br>cards[f] = msg.readItemId("card");<br>const uint16_t idx = msg.readInt16("option index");<br>const uint16_t val = msg.readInt16("option value");<br>msg.readUInt8("option param");
| SMSG_PLAYER_CART_ADD || 0x0a0b || 47 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L970 InventoryRecv::processPlayerCartAdd] || 20150226 || const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>int amount = msg.readInt32("count");<br>const int itemId = msg.readItemId("item id");<br>msg.readUInt8("item type"));<br>const uint8_t identified = msg.readUInt8("identified");<br>const Damaged damaged = fromBool(msg.readUInt8("attribute"), Damaged);<br>const uint8_t refine = msg.readUInt8("refine");<br>cards[f] = msg.readItemId("card");<br>const uint16_t idx = msg.readInt16("option index");<br>const uint16_t val = msg.readInt16("option value");<br>msg.readUInt8("option param");
|-
|-
| SMSG_PLAYER_STORAGE_ADD || 0x0a0a || 47 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L758 InventoryRecv::processPlayerStorageAdd] || 20150226 || const int index = msg.readInt16("index") - STORAGE_OFFSET;<br>const int amount = msg.readInt32("amount");<br>const int itemId = msg.readItemId("item id");<br>itemType = static_cast<ItemTypeT>(msg.readUInt8("type"));<br>const unsigned char identified = msg.readUInt8("identify");<br>const Damaged damaged = fromBool(msg.readUInt8("attribute"), Damaged);<br>const uint8_t refine = msg.readUInt8("refine");<br>cards[f] = msg.readItemId("card");<br>const uint16_t idx = msg.readInt16("option index");<br>const uint16_t val = msg.readInt16("option value");<br>msg.readUInt8("option param");
| SMSG_PLAYER_STORAGE_ADD || 0x0a0a || 47 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L758 InventoryRecv::processPlayerStorageAdd] || 20150226 || const int index = msg.readInt16("index") - STORAGE_OFFSET;<br>const int amount = msg.readInt32("amount");<br>const int itemId = msg.readItemId("item id");<br>itemType = static_cast<ItemTypeT>(msg.readUInt8("type"));<br>const unsigned char identified = msg.readUInt8("identify");<br>const Damaged damaged = fromBool(msg.readUInt8("attribute"), Damaged);<br>const uint8_t refine = msg.readUInt8("refine");<br>cards[f] = msg.readItemId("card");<br>const uint16_t idx = msg.readInt16("option index");<br>const uint16_t val = msg.readInt16("option value");<br>msg.readUInt8("option param");
|-
|-
| SMSG_TRADE_ITEM_ADD || 0x0a09 || 45 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/traderecv.cpp#L77 TradeRecv::processTradeItemAdd] || 20150226 || const int type = msg.readItemId("item id");<br>msg.readUInt8("item type"));<br>const int amount = msg.readInt32("amount");<br>const uint8_t identify = msg.readUInt8("identify");<br>const Damaged damaged = fromBool(msg.readUInt8("attribute"), Damaged);<br>const uint8_t refine = msg.readUInt8("refine");<br>cards[f] = msg.readItemId("card");<br>const uint16_t idx = msg.readInt16("option index");<br>const uint16_t val = msg.readInt16("option value");<br>msg.readUInt8("option param");
| SMSG_TRADE_ITEM_ADD || 0x0a09 || 45 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/traderecv.cpp#L77 TradeRecv::processTradeItemAdd] || 20150226 || const int type = msg.readItemId("item id");<br>msg.readUInt8("item type"));<br>const int amount = msg.readInt32("amount");<br>const uint8_t identify = msg.readUInt8("identify");<br>const Damaged damaged = fromBool(msg.readUInt8("attribute"), Damaged);<br>const uint8_t refine = msg.readUInt8("refine");<br>cards[f] = msg.readItemId("card");<br>const uint16_t idx = msg.readInt16("option index");<br>const uint16_t val = msg.readInt16("option value");<br>msg.readUInt8("option param");
|-
|-
| SMSG_VENDING_OPEN || 0x0136 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/vendingrecv.cpp#L216 VendingRecv::processOpen] || 20150226 || const int count = (msg.readInt16("len") - 8) / packetLen;<br>msg.readInt32("id");<br>msg.readInt32("price");<br>msg.readInt16("inv index");<br>msg.readInt16("amount");<br>msg.readUInt8("item type");<br>msg.readItemId("item id");<br>msg.readUInt8("identify");<br>msg.readUInt8("attribute");<br>msg.readUInt8("refine");<br>msg.readItemId("card");<br>msg.readInt16("option index");<br>msg.readInt16("option value");<br>msg.readUInt8("option param");
| SMSG_VENDING_OPEN || 0x0136 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/vendingrecv.cpp#L216 VendingRecv::processOpen] || 20150226 || const int count = (msg.readInt16("len") - 8) / packetLen;<br>msg.readInt32("id");<br>msg.readInt32("price");<br>msg.readInt16("inv index");<br>msg.readInt16("amount");<br>msg.readUInt8("item type");<br>msg.readItemId("item id");<br>msg.readUInt8("identify");<br>msg.readUInt8("attribute");<br>msg.readUInt8("refine");<br>msg.readItemId("card");<br>msg.readInt16("option index");<br>msg.readInt16("option value");<br>msg.readUInt8("option param");
|-
|-
| SMSG_PLAYER_GUILD_PARTY_INFO || 0x0a30 || 106 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1792 BeingRecv::processPlayerGuilPartyInfo2] || 20150225 || const BeingId beingId = msg.readBeingId("being id");<br>const std::string name = msg.readString(24, "char name");<br>dstBeing->setPartyName(msg.readString(24, "party name"));<br>dstBeing->setGuildName(msg.readString(24, "guild name"));<br>dstBeing->setGuildPos(msg.readString(24, "guild pos"));<br>msg.readString(24, "party name");<br>msg.readString(24, "guild name");<br>msg.readString(24, "guild pos");<br>msg.readInt32("title");
| SMSG_PLAYER_GUILD_PARTY_INFO || 0x0a30 || 106 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1792 BeingRecv::processPlayerGuilPartyInfo2] || 20150225 || const BeingId beingId = msg.readBeingId("being id");<br>const std::string name = msg.readString(24, "char name");<br>dstBeing->setPartyName(msg.readString(24, "party name"));<br>dstBeing->setGuildName(msg.readString(24, "guild name"));<br>dstBeing->setGuildPos(msg.readString(24, "guild pos"));<br>msg.readString(24, "party name");<br>msg.readString(24, "guild name");<br>msg.readString(24, "guild pos");<br>msg.readInt32("title");
|-
|-
| SMSG_ACHIEVEMENT_GET_REWARD || 0x0a26 || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/achievementrecv.cpp#L71 AchievementRecv::processAchievementGetReward] || 20150225 || msg.readUInt8("received");<br>msg.readInt32("ach id");
| SMSG_ACHIEVEMENT_GET_REWARD || 0x0a26 || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/achievementrecv.cpp#L71 AchievementRecv::processAchievementGetReward] || 20150225 || msg.readUInt8("received");<br>msg.readInt32("ach id");
|-
|-
| SMSG_ACHIEVEMENT_UPDATE || 0x0a24 || 66 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/achievementrecv.cpp#L55 AchievementRecv::processAchievementUpdate] || 20150225 || msg.readInt32("total points");<br>msg.readInt16("rank level");<br>msg.readInt32("rank points");<br>msg.readInt32("rank points need");<br>msg.readInt32("ach id");<br>msg.readUInt8("completed");<br>msg.readInt32("objective");<br>msg.readInt32("completed at");<br>msg.readUInt8("reward");
| SMSG_ACHIEVEMENT_UPDATE || 0x0a24 || 66 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/achievementrecv.cpp#L55 AchievementRecv::processAchievementUpdate] || 20150225 || msg.readInt32("total points");<br>msg.readInt16("rank level");<br>msg.readInt32("rank points");<br>msg.readInt32("rank points need");<br>msg.readInt32("ach id");<br>msg.readUInt8("completed");<br>msg.readInt32("objective");<br>msg.readInt32("completed at");<br>msg.readUInt8("reward");
|-
|-
| SMSG_ACHIEVEMENT_LIST || 0x0a23 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/achievementrecv.cpp#L35 AchievementRecv::processAchievementList] || 20150225 || const int count = (msg.readInt16("len") - 22) / 50;<br>msg.readInt32("total achievements");<br>msg.readInt32("total points");<br>msg.readInt16("rank level");<br>msg.readInt32("rank points");<br>msg.readInt32("rank points need");<br>msg.readInt32("ach id");<br>msg.readUInt8("completed");<br>msg.readInt32("objective");<br>msg.readInt32("completed at");<br>msg.readUInt8("reward");
| SMSG_ACHIEVEMENT_LIST || 0x0a23 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/achievementrecv.cpp#L35 AchievementRecv::processAchievementList] || 20150225 || const int count = (msg.readInt16("len") - 22) / 50;<br>msg.readInt32("total achievements");<br>msg.readInt32("total points");<br>msg.readInt16("rank level");<br>msg.readInt32("rank points");<br>msg.readInt32("rank points need");<br>msg.readInt32("ach id");<br>msg.readUInt8("completed");<br>msg.readInt32("objective");<br>msg.readInt32("completed at");<br>msg.readUInt8("reward");
|-
|-
| SMSG_CHAR_PASSWORD_RESPONSE || 0x0062 || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/loginrecv.cpp#L209 LoginRecv::processCharPasswordResponse] || 0 || const uint8_t errMsg = msg.readUInt8("result code");
| SMSG_CHAR_PASSWORD_RESPONSE || 0x0062 || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/loginrecv.cpp#L209 LoginRecv::processCharPasswordResponse] || 0 || const uint8_t errMsg = msg.readUInt8("result code");
|-
|-
| SMSG_PLAYER_ATTRS || 0x0b25 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/playerrecv.cpp#L551 PlayerRecv::processPlayerAttrs] || 0 || const int len = msg.readInt16("len");<br>const int groupId = msg.readInt32("group id");
| SMSG_PLAYER_ATTRS || 0x0b25 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/playerrecv.cpp#L551 PlayerRecv::processPlayerAttrs] || 0 || const int len = msg.readInt16("len");<br>const int groupId = msg.readInt32("group id");
|-
|-
| SMSG_QUEST_ADD2 || 0x0b24 || 23 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/questrecv.cpp#L83 QuestRecv::processAddQuest2] || 0 || const int var = msg.readInt32("quest id");<br>msg.readUInt8("state");<br>const int val1 = msg.readInt32("count1");<br>const int val2 = msg.readInt32("count2");<br>const int val3 = msg.readInt32("count3");<br>const int time = msg.readInt32("time");
| SMSG_QUEST_ADD2 || 0x0b24 || 23 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/questrecv.cpp#L83 QuestRecv::processAddQuest2] || 0 || const int var = msg.readInt32("quest id");<br>msg.readUInt8("state");<br>const int val1 = msg.readInt32("count1");<br>const int val2 = msg.readInt32("count2");<br>const int val3 = msg.readInt32("count3");<br>const int time = msg.readInt32("time");
|-
|-
| SMSG_QUEST_LIST2 || 0x0b23 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/questrecv.cpp#L151 QuestRecv::processAddQuests2] || 0 || msg.readInt16("len");<br>const int num = msg.readInt32("quests count");<br>const int var = msg.readInt32("quest id");<br>msg.readUInt8("state");<br>const int val1 = msg.readInt32("count1");<br>const int val2 = msg.readInt32("count2");<br>const int val3 = msg.readInt32("count3");<br>const int time = msg.readInt32("time");
| SMSG_QUEST_LIST2 || 0x0b23 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/questrecv.cpp#L151 QuestRecv::processAddQuests2] || 0 || msg.readInt16("len");<br>const int num = msg.readInt32("quests count");<br>const int var = msg.readInt32("quest id");<br>msg.readUInt8("state");<br>const int val1 = msg.readInt32("count1");<br>const int val2 = msg.readInt32("count2");<br>const int val3 = msg.readInt32("count3");<br>const int time = msg.readInt32("time");
|-
|-
| SMSG_HOMUNCULUS_EXP || 0x0b22 || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/homunculusrecv.cpp#L388 HomunculusRecv::processHomunculusExp] || 0 || const int exp = msg.readInt32("exp");<br>msg.readInt32("unused");
| SMSG_HOMUNCULUS_EXP || 0x0b22 || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/homunculusrecv.cpp#L388 HomunculusRecv::processHomunculusExp] || 0 || const int exp = msg.readInt32("exp");<br>msg.readInt32("unused");
|-
|-
| SMSG_WALK_ERROR || 0x0b21 || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/playerrecv.cpp#L296 PlayerRecv::processWalkError] || 0 || msg.readInt32("tick");<br>const int x = msg.readInt16("x");<br>const int y = msg.readInt16("y");
| SMSG_WALK_ERROR || 0x0b21 || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/playerrecv.cpp#L296 PlayerRecv::processWalkError] || 0 || msg.readInt32("tick");<br>const int x = msg.readInt16("x");<br>const int y = msg.readInt16("y");
|-
|-
| SMSG_PLAYER_UPDATE_SKILL2 || 0x0b20 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/skillrecv.cpp#L201 SkillRecv::processSkillUpdate2] || 0 || msg.readInt16("len");  // for now unused<br>const int skillId = msg.readInt16("skill id");<br>msg.readInt32("inf"));<br>msg.readInt32("inf2");<br>const int level = msg.readInt16("skill level");<br>const int sp = msg.readInt16("sp");<br>const int range = msg.readInt16("range");<br>const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
| SMSG_PLAYER_UPDATE_SKILL2 || 0x0b20 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/skillrecv.cpp#L201 SkillRecv::processSkillUpdate2] || 0 || msg.readInt16("len");  // for now unused<br>const int skillId = msg.readInt16("skill id");<br>msg.readInt32("inf"));<br>msg.readInt32("inf2");<br>const int level = msg.readInt16("skill level");<br>const int sp = msg.readInt16("sp");<br>const int range = msg.readInt16("range");<br>const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
|-
|-
| SMSG_PLAYER_ADD_SKILL2 || 0x0b1f || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/skillrecv.cpp#L144 SkillRecv::processSkillAdd2] || 0 || msg.readInt16("len");  // for now unused<br>const int skillId = msg.readInt16("skill id");<br>msg.readInt32("inf"));<br>msg.readInt32("inf2");<br>const int level = msg.readInt16("skill level");<br>const int sp = msg.readInt16("sp");<br>const int range = msg.readInt16("range");<br>const std::string name = msg.readString(24, "skill name");<br>const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
| SMSG_PLAYER_ADD_SKILL2 || 0x0b1f || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/skillrecv.cpp#L144 SkillRecv::processSkillAdd2] || 0 || msg.readInt16("len");  // for now unused<br>const int skillId = msg.readInt16("skill id");<br>msg.readInt32("inf"));<br>msg.readInt32("inf2");<br>const int level = msg.readInt16("skill level");<br>const int sp = msg.readInt16("sp");<br>const int range = msg.readInt16("range");<br>const std::string name = msg.readString(24, "skill name");<br>const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
|-
|-
| SMSG_SKILL_CASTING2 || 0x0b1e || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1068 BeingRecv::processSkillCastingEvol] || 0 || msg.readInt16("len");  // for now unused<br>const BeingId srcId = msg.readBeingId("src id");<br>const BeingId dstId = msg.readBeingId("dst id");<br>const int dstX = msg.readInt16("dst x");<br>const int dstY = msg.readInt16("dst y");<br>const int skillId = msg.readInt16("skill id");<br>const int skillLevel = msg.readInt16("skill level");<br>msg.readInt32("element");  // +++ use different effects<br>const int castTime = msg.readInt32("cast time");<br>const int range = msg.readInt32("skill range");<br>static_cast<SkillType2::SkillType2>(msg.readInt32("inf2"));
| SMSG_SKILL_CASTING2 || 0x0b1e || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1068 BeingRecv::processSkillCastingEvol] || 0 || msg.readInt16("len");  // for now unused<br>const BeingId srcId = msg.readBeingId("src id");<br>const BeingId dstId = msg.readBeingId("dst id");<br>const int dstX = msg.readInt16("dst x");<br>const int dstY = msg.readInt16("dst y");<br>const int skillId = msg.readInt16("skill id");<br>const int skillLevel = msg.readInt16("skill level");<br>msg.readInt32("element");  // +++ use different effects<br>const int castTime = msg.readInt32("cast time");<br>const int range = msg.readInt32("skill range");<br>static_cast<SkillType2::SkillType2>(msg.readInt32("inf2"));
|-
|-
| SMSG_PLAYER_KILLED_BY || 0x0b1d || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/playerrecv.cpp#L527 PlayerRecv::processKilledBy] || 0 || const BeingId id = msg.readBeingId("killer id");
| SMSG_PLAYER_KILLED_BY || 0x0b1d || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/playerrecv.cpp#L527 PlayerRecv::processKilledBy] || 0 || const BeingId id = msg.readBeingId("killer id");
|-
|-
| SMSG_NPC_SKIN || 0x0b1c || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/npcrecv.cpp#L130 NpcRecv::processNpcSkin] || 0 || const int len = msg.readInt16("len");<br>const std::string skin = msg.readString(len - 8, "skin");<br>msg.readString(len - 8, "skin");
| SMSG_NPC_SKIN || 0x0b1c || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/npcrecv.cpp#L130 NpcRecv::processNpcSkin] || 0 || const int len = msg.readInt16("len");<br>const std::string skin = msg.readString(len - 8, "skin");<br>msg.readString(len - 8, "skin");
|-
|-
| SMSG_MAP_SET_TILES_TYPE || 0x0b1b || 34 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/maprecv.cpp#L37 Ea::MapRecv::processSetTilesType] || 0 || const int x1 = msg.readInt16("x1");<br>const int y1 = msg.readInt16("y1");<br>const int x2 = msg.readInt16("x2");<br>const int y2 = msg.readInt16("y2");<br>const BlockTypeT mask = static_cast<BlockTypeT>(msg.readInt32("mask"));<br>const int layer = msg.readInt32("layer");<br>const std::string name = msg.readString(16, "map name");
| SMSG_MAP_SET_TILES_TYPE || 0x0b1b || 34 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/maprecv.cpp#L37 Ea::MapRecv::processSetTilesType] || 0 || const int x1 = msg.readInt16("x1");<br>const int y1 = msg.readInt16("y1");<br>const int x2 = msg.readInt16("x2");<br>const int y2 = msg.readInt16("y2");<br>const BlockTypeT mask = static_cast<BlockTypeT>(msg.readInt32("mask"));<br>const int layer = msg.readInt32("layer");<br>const std::string name = msg.readString(16, "map name");
|-
|-
| SMSG_BATTLE_EMBLEM2 || 0x0b1a || 34 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/battlegroundrecv.cpp#L47 BattleGroundRecv::processBattleEmblem2] || 0 || const BeingId id = msg.readBeingId("account id");<br>msg.readString(24, "name");<br>msg.readInt16("bg id");<br>const int teamId = msg.readInt16("team id");
| SMSG_BATTLE_EMBLEM2 || 0x0b1a || 34 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/battlegroundrecv.cpp#L47 BattleGroundRecv::processBattleEmblem2] || 0 || const BeingId id = msg.readBeingId("account id");<br>msg.readString(24, "name");<br>msg.readInt16("bg id");<br>const int teamId = msg.readInt16("team id");
|-
|-
| SMSG_ITEM_DROPPED2 || 0x0b19 || 28 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/itemrecv.cpp#L79 ItemRecv::processItemDropped2] || 0 || const BeingId id = msg.readBeingId("id");<br>const int itemId = msg.readInt16("item id");  // +++ need use int32<br>const ItemTypeT itemType = static_cast<ItemTypeT>(msg.readUInt8("type"));<br>msg.readUInt8("identify"), Identified);<br>const Damaged damaged = fromBool(msg.readUInt8("attribute"), Damaged);<br>const uint8_t refine = msg.readUInt8("refine");<br>cards[f] = msg.readUInt16("card");  // ++ need use int32<br>const int x = msg.readInt16("x");<br>const int y = msg.readInt16("y");<br>const int amount = msg.readInt16("amount");<br>const int subX = CAST_S32(msg.readInt8("subx"));<br>const int subY = CAST_S32(msg.readInt8("suby"));
| SMSG_ITEM_DROPPED2 || 0x0b19 || 28 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/itemrecv.cpp#L79 ItemRecv::processItemDropped2] || 0 || const BeingId id = msg.readBeingId("id");<br>const int itemId = msg.readInt16("item id");  // +++ need use int32<br>const ItemTypeT itemType = static_cast<ItemTypeT>(msg.readUInt8("type"));<br>msg.readUInt8("identify"), Identified);<br>const Damaged damaged = fromBool(msg.readUInt8("attribute"), Damaged);<br>const uint8_t refine = msg.readUInt8("refine");<br>cards[f] = msg.readUInt16("card");  // ++ need use int32<br>const int x = msg.readInt16("x");<br>const int y = msg.readInt16("y");<br>const int amount = msg.readInt16("amount");<br>const int subX = CAST_S32(msg.readInt8("subx"));<br>const int subY = CAST_S32(msg.readInt8("suby"));
|-
|-
| SMSG_ITEM_VISIBLE2 || 0x0b18 || 28 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/itemrecv.cpp#L154 ItemRecv::processItemVisible2] || 0 || const BeingId id = msg.readBeingId("item object id");<br>const int itemId = msg.readInt16("item id");  // +++ need use int32<br>msg.readUInt8("type"));<br>msg.readUInt8("identify"), Identified);<br>const Damaged damaged = fromBool(msg.readUInt8("attribute"), Damaged);<br>const uint8_t refine = msg.readUInt8("refine");<br>cards[f] = msg.readUInt16("card");  // +++ need use int32<br>const int x = msg.readInt16("x");<br>const int y = msg.readInt16("y");<br>const int amount = msg.readInt16("amount");<br>const int subX = CAST_S32(msg.readInt8("sub x"));<br>const int subY = CAST_S32(msg.readInt8("sub y"));
| SMSG_ITEM_VISIBLE2 || 0x0b18 || 28 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/itemrecv.cpp#L154 ItemRecv::processItemVisible2] || 0 || const BeingId id = msg.readBeingId("item object id");<br>const int itemId = msg.readInt16("item id");  // +++ need use int32<br>msg.readUInt8("type"));<br>msg.readUInt8("identify"), Identified);<br>const Damaged damaged = fromBool(msg.readUInt8("attribute"), Damaged);<br>const uint8_t refine = msg.readUInt8("refine");<br>cards[f] = msg.readUInt16("card");  // +++ need use int32<br>const int x = msg.readInt16("x");<br>const int y = msg.readInt16("y");<br>const int amount = msg.readInt16("amount");<br>const int subX = CAST_S32(msg.readInt8("sub x"));<br>const int subY = CAST_S32(msg.readInt8("sub y"));
|-
|-
| SMSG_BEING_CHANGE_LOOKS_CARDS || 0x0b17 || 19 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L227 BeingRecv::processBeingChangeLookCards] || 0 || const BeingId id = msg.readBeingId("being id");<br>msg.readBeingId("being id"));<br>const uint8_t type = msg.readUInt8("type");<br>const int id = msg.readInt16("id1");<br>unsigned int id2 = msg.readInt16("id2");<br>cards[f] = msg.readUInt16("card");  // +++ probably need use int32
| SMSG_BEING_CHANGE_LOOKS_CARDS || 0x0b17 || 19 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L227 BeingRecv::processBeingChangeLookCards] || 0 || const BeingId id = msg.readBeingId("being id");<br>msg.readBeingId("being id"));<br>const uint8_t type = msg.readUInt8("type");<br>const int id = msg.readInt16("id1");<br>unsigned int id2 = msg.readInt16("id2");<br>cards[f] = msg.readUInt16("card");  // +++ probably need use int32
|-
|-
| SMSG_PLAYER_CLIENT_COMMAND || 0x0b16 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/playerrecv.cpp#L248 Ea::PlayerRecv::processPlayerClientCommand] || 0 || const int sz = msg.readInt16("len") - 4;<br>std::string command = msg.readString(sz, "command");
| SMSG_PLAYER_CLIENT_COMMAND || 0x0b16 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/playerrecv.cpp#L248 Ea::PlayerRecv::processPlayerClientCommand] || 0 || const int sz = msg.readInt16("len") - 4;<br>std::string command = msg.readString(sz, "command");
|-
|-
| SMSG_ONLINE_LIST || 0x0b10 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/playerrecv.cpp#L464 PlayerRecv::processOnlineList] || 0 || const int size = msg.readInt16("len") - 4;<br>char *const start = reinterpret_cast<char*>(msg.readBytes(size, "nicks"));
| SMSG_ONLINE_LIST || 0x0b10 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/playerrecv.cpp#L464 PlayerRecv::processOnlineList] || 0 || const int size = msg.readInt16("len") - 4;<br>char *const start = reinterpret_cast<char*>(msg.readBytes(size, "nicks"));
|-
|-
| SMSG_NPC_AREA || 0x0b0b || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/npcrecv.cpp#L105 NpcRecv::processArea] || 0 || const int len = msg.readInt16("len");<br>msg.readBeingId("npc id"));<br>const int area = msg.readInt32("area size");
| SMSG_NPC_AREA || 0x0b0b || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/npcrecv.cpp#L105 NpcRecv::processArea] || 0 || const int len = msg.readInt16("len");<br>msg.readBeingId("npc id"));<br>const int area = msg.readInt32("area size");
|-
|-
| SMSG_BEING_ATTRS || 0x0b0a || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1930 BeingRecv::processBeingAttrs] || 0 || const int len = msg.readInt16("len");<br>msg.readBeingId("player id"));<br>const int groupId = msg.readInt32("group id");<br>mount = msg.readInt16("mount");<br>language = msg.readInt16("language");<br>clanId = msg.readInt32("clan id");
| SMSG_BEING_ATTRS || 0x0b0a || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1930 BeingRecv::processBeingAttrs] || 0 || const int len = msg.readInt16("len");<br>msg.readBeingId("player id"));<br>const int groupId = msg.readInt32("group id");<br>mount = msg.readInt16("mount");<br>language = msg.readInt16("language");<br>clanId = msg.readInt32("clan id");
|-
|-
| SMSG_CHAT_JOIN_CHANNEL || 0x0b08 || 27 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L495 ChatRecv::processJoinChannel] || 0 || const std::string channel = msg.readString(24, "channel name");<br>const int flag = msg.readUInt8("flag");
| SMSG_CHAT_JOIN_CHANNEL || 0x0b08 || 27 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L495 ChatRecv::processJoinChannel] || 0 || const std::string channel = msg.readString(24, "channel name");<br>const int flag = msg.readUInt8("flag");
|-
|-
| SMSG_NPC_CHANGETITLE || 0x0b06 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/npcrecv.cpp#L236 Ea::NpcRecv::processChangeTitle] || 0 || msg.readInt16("len");<br>const std::string str = msg.readString(-1, "title");
| SMSG_NPC_CHANGETITLE || 0x0b06 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/npcrecv.cpp#L236 Ea::NpcRecv::processChangeTitle] || 0 || msg.readInt16("len");<br>const std::string str = msg.readString(-1, "title");
|-
|-
| SMSG_MAP_MUSIC || 0x0b05 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/playerrecv.cpp#L227 Ea::PlayerRecv::processMapMusic] || 0 || const int size = msg.readInt16("len") - 4;<br>const std::string music = msg.readString(size, "name");
| SMSG_MAP_MUSIC || 0x0b05 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/playerrecv.cpp#L227 Ea::PlayerRecv::processMapMusic] || 0 || const int size = msg.readInt16("len") - 4;<br>const std::string music = msg.readString(size, "name");
|-
|-
| SMSG_BEING_MOVE3 || 0x0b04 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/beingrecv.cpp#L429 Ea::BeingRecv::processBeingMove3] || 0 || const int len = msg.readInt16("len") - 14;<br>msg.readBeingId("being id"));<br>msg.readInt16("speed");<br>msg.readInt16("x");<br>msg.readInt16("y");<br>unsigned char *bytes = msg.readBytes(len, "moving path");<br>const int16_t speed = msg.readInt16("speed");<br>const int16_t x = msg.readInt16("x");<br>const int16_t y = msg.readInt16("y");<br>const unsigned char *moves = msg.readBytes(len, "moving path");
| SMSG_BEING_MOVE3 || 0x0b04 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/beingrecv.cpp#L429 Ea::BeingRecv::processBeingMove3] || 0 || const int len = msg.readInt16("len") - 14;<br>msg.readBeingId("being id"));<br>msg.readInt16("speed");<br>msg.readInt16("x");<br>msg.readInt16("y");<br>unsigned char *bytes = msg.readBytes(len, "moving path");<br>const int16_t speed = msg.readInt16("speed");<br>const int16_t x = msg.readInt16("x");<br>const int16_t y = msg.readInt16("y");<br>const unsigned char *moves = msg.readBytes(len, "moving path");
|-
|-
| SMSG_MOB_INFO || 0x0b03 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1916 BeingRecv::processMobInfo] || 0 || const int len = msg.readInt16("len");<br>msg.readBeingId("monster id"));<br>const int attackRange = msg.readInt32("range");
| SMSG_MOB_INFO || 0x0b03 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1916 BeingRecv::processMobInfo] || 0 || const int len = msg.readInt16("len");<br>msg.readBeingId("monster id"));<br>const int attackRange = msg.readInt32("range");
|-
|-
| SMSG_MAP_MASK || 0x0b02 || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/playerrecv.cpp#L239 Ea::PlayerRecv::processMapMask] || 0 || const int mask = msg.readInt32("mask");<br>msg.readInt32("unused");
| SMSG_MAP_MASK || 0x0b02 || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/playerrecv.cpp#L239 Ea::PlayerRecv::processMapMask] || 0 || const int mask = msg.readInt32("mask");<br>msg.readInt32("unused");
|-
|-
| SMSG_BEING_NAME_RESPONSE2 || 0x0b01 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L2197 BeingRecv::processNameResponse2] || 0 || const int len = msg.readInt16("len");<br>const BeingId beingId = msg.readBeingId("account id");<br>const std::string str = msg.readString(len - 8, "name");
| SMSG_BEING_NAME_RESPONSE2 || 0x0b01 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L2197 BeingRecv::processNameResponse2] || 0 || const int len = msg.readInt16("len");<br>const BeingId beingId = msg.readBeingId("account id");<br>const std::string str = msg.readString(len - 8, "name");
|-
|-
| SMSG_NPC_COMMAND || 0x0b00 || 16 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/npcrecv.cpp#L124 Ea::NpcRecv::processNpcCommand] || 0 || const int cmd = msg.readInt16("cmd");<br>const BeingId id = msg.readBeingId("id");<br>const int x = msg.readInt16("x");<br>const int y = msg.readInt16("y");
| SMSG_NPC_COMMAND || 0x0b00 || 16 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/npcrecv.cpp#L124 Ea::NpcRecv::processNpcCommand] || 0 || const int cmd = msg.readInt16("cmd");<br>const BeingId id = msg.readBeingId("id");<br>const int x = msg.readInt16("x");<br>const int y = msg.readInt16("y");
|-
|-
| SMSG_MAIL2_ADD_ITEM_RESULT || 0x0a05 || 53 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/mail2recv.cpp#L81 Mail2Recv::processAddItemResult] || 20141119 || const int res = msg.readUInt8("result");<br>const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>const int amount = msg.readInt16("amount");<br>const int itemId = msg.readItemId("item id");<br>msg.readUInt8("item type"));<br>const uint8_t identify = msg.readUInt8("identify");<br>const Damaged damaged = fromBool(msg.readUInt8("attribute"), Damaged);<br>const uint8_t refine = msg.readUInt8("refine");<br>cards[f] = msg.readItemId("card");<br>const uint16_t idx = msg.readInt16("option index");<br>const uint16_t val = msg.readInt16("option value");<br>msg.readUInt8("option param");<br>msg.readInt16("weight");<br>Favorite favorite = fromBool(msg.readUInt8("favorite"), Favorite);<br>msg.readInt32("location");
| SMSG_MAIL2_ADD_ITEM_RESULT || 0x0a05 || 53 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/mail2recv.cpp#L81 Mail2Recv::processAddItemResult] || 20141119 || const int res = msg.readUInt8("result");<br>const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>const int amount = msg.readInt16("amount");<br>const int itemId = msg.readItemId("item id");<br>msg.readUInt8("item type"));<br>const uint8_t identify = msg.readUInt8("identify");<br>const Damaged damaged = fromBool(msg.readUInt8("attribute"), Damaged);<br>const uint8_t refine = msg.readUInt8("refine");<br>cards[f] = msg.readItemId("card");<br>const uint16_t idx = msg.readInt16("option index");<br>const uint16_t val = msg.readInt16("option value");<br>msg.readUInt8("option param");<br>msg.readInt16("weight");<br>Favorite favorite = fromBool(msg.readUInt8("favorite"), Favorite);<br>msg.readInt32("location");
|-
|-
| SMSG_MAIL2_ICON || 0x09e7 || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/mail2recv.cpp#L69 Mail2Recv::processMailIcon] || 20141112 || msg.readUInt8("has new mail");
| SMSG_MAIL2_ICON || 0x09e7 || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/mail2recv.cpp#L69 Mail2Recv::processMailIcon] || 20141112 || msg.readUInt8("has new mail");
|-
|-
| SMSG_VENDING_OPEN_STATUS || 0x0a28 || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/vendingrecv.cpp#L285 VendingRecv::processOpenStatus] || 20141022 || msg.readUInt8("result");
| SMSG_VENDING_OPEN_STATUS || 0x0a28 || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/vendingrecv.cpp#L285 VendingRecv::processOpenStatus] || 20141022 || msg.readUInt8("result");
|-
|-
| SMSG_PLAYER_SHORTCUTS || 0x0a00 || 269 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/playerrecv.cpp#L71 PlayerRecv::processPlayerShortcuts2] || 20141022 || msg.readUInt8("rotate");<br>msg.readUInt8("type 0: item, 1: skill");<br>msg.readInt32("item or skill id");<br>msg.readInt16("skill level");
| SMSG_PLAYER_SHORTCUTS || 0x0a00 || 269 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/playerrecv.cpp#L71 PlayerRecv::processPlayerShortcuts2] || 20141022 || msg.readUInt8("rotate");<br>msg.readUInt8("type 0: item, 1: skill");<br>msg.readInt32("item or skill id");<br>msg.readInt16("skill level");
|-
|-
| SMSG_PLAYER_SET_TITLE_ACK || 0x0a2f || 7 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/playerrecv.cpp#L581 PlayerRecv::processSetTitleAck] || 20141016 || msg.readUInt8("fail flag");<br>msg.readInt32("title");
| SMSG_PLAYER_SET_TITLE_ACK || 0x0a2f || 7 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/playerrecv.cpp#L581 PlayerRecv::processSetTitleAck] || 20141016 || msg.readUInt8("fail flag");<br>msg.readInt32("title");
|-
|-
| SMSG_BUYINGSTORE_REPORT || 0x09e6 || 22 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/buyingstorerecv.cpp#L210 BuyingStoreRecv::processBuyingStoreReport] || 20141016 || msg.readItemId("item id");<br>msg.readInt16("amount");<br>msg.readInt32("money");<br>msg.readInt32("money limit");<br>msg.readInt32("char id");<br>msg.readInt32("date");<br>msg.readInt32("money limit");
| SMSG_BUYINGSTORE_REPORT || 0x09e6 || 22 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/buyingstorerecv.cpp#L210 BuyingStoreRecv::processBuyingStoreReport] || 20141016 || msg.readItemId("item id");<br>msg.readInt16("amount");<br>msg.readInt32("money");<br>msg.readInt32("money limit");<br>msg.readInt32("char id");<br>msg.readInt32("date");<br>msg.readInt32("money limit");
|-
|-
| SMSG_VENDING_REPORT || 0x09e5 || 18 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/vendingrecv.cpp#L246 VendingRecv::processReport] || 20141016 || const int index = msg.readInt16("inv index") - INVENTORY_OFFSET;<br>const int amount = msg.readInt16("amount");<br>msg.readInt32("char id");<br>msg.readInt32("time");<br>money = msg.readInt32("zeny");
| SMSG_VENDING_REPORT || 0x09e5 || 18 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/vendingrecv.cpp#L246 VendingRecv::processReport] || 20141016 || const int index = msg.readInt16("inv index") - INVENTORY_OFFSET;<br>const int amount = msg.readInt16("amount");<br>msg.readInt32("char id");<br>msg.readInt32("time");<br>money = msg.readInt32("zeny");
|-
|-
| SMSG_ROULETTE_RECV_ITEM_ACK || 0x0a22 || 5 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/rouletterecv.cpp#L59 RouletteRecv::processRouletteItemAck] || 20141016 || msg.readUInt8("result");<br>msg.readItemId("item id");
| SMSG_ROULETTE_RECV_ITEM_ACK || 0x0a22 || 5 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/rouletterecv.cpp#L59 RouletteRecv::processRouletteItemAck] || 20141016 || msg.readUInt8("result");<br>msg.readItemId("item id");
|-
|-
| SMSG_ROULETTE_GENERATE_ACK_TYPE || 0x0a20 || 21 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/rouletterecv.cpp#L66 RouletteRecv::processRouletteGenerateAckType] || 20141016 || msg.readUInt8("result");<br>msg.readInt16("step");<br>msg.readInt16("idx");<br>msg.readItemId("item id");<br>msg.readInt32("remain gold");<br>msg.readInt32("remain silver");<br>msg.readInt32("remain bronze");
| SMSG_ROULETTE_GENERATE_ACK_TYPE || 0x0a20 || 21 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/rouletterecv.cpp#L66 RouletteRecv::processRouletteGenerateAckType] || 20141016 || msg.readUInt8("result");<br>msg.readInt16("step");<br>msg.readInt16("idx");<br>msg.readItemId("item id");<br>msg.readInt32("remain gold");<br>msg.readInt32("remain silver");<br>msg.readInt32("remain bronze");
|-
|-
| SMSG_ROULETTE_INFO_ACK_TYPE || 0x0a1c || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/rouletterecv.cpp#L35 RouletteRecv::processRouletteInfoAckType] || 20141016 || const int count = (msg.readInt16("len") - 8) / 8;<br>msg.readInt32("serial");<br>msg.readInt16("row");<br>msg.readInt16("position");<br>msg.readInt32("item id");<br>msg.readInt16("count");<br>msg.readInt16("unused");<br>msg.readInt16("item id");<br>msg.readInt16("count");
| SMSG_ROULETTE_INFO_ACK_TYPE || 0x0a1c || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/rouletterecv.cpp#L35 RouletteRecv::processRouletteInfoAckType] || 20141016 || const int count = (msg.readInt16("len") - 8) / 8;<br>msg.readInt32("serial");<br>msg.readInt16("row");<br>msg.readInt16("position");<br>msg.readInt32("item id");<br>msg.readInt16("count");<br>msg.readInt16("unused");<br>msg.readInt16("item id");<br>msg.readInt16("count");
|-
|-
| SMSG_ROULETTE_OPEN_ACK || 0x0a1a || 23 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/rouletterecv.cpp#L78 RouletteRecv::processRouletteOpenAck] || 20141016 || msg.readUInt8("result");<br>msg.readInt32("serial");<br>msg.readUInt8("step");<br>msg.readUInt8("idx");<br>msg.readItemId("additional item id");<br>msg.readInt32("gold point");<br>msg.readInt32("silver point");<br>msg.readInt32("bronze point");
| SMSG_ROULETTE_OPEN_ACK || 0x0a1a || 23 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/rouletterecv.cpp#L78 RouletteRecv::processRouletteOpenAck] || 20141016 || msg.readUInt8("result");<br>msg.readInt32("serial");<br>msg.readUInt8("step");<br>msg.readUInt8("idx");<br>msg.readItemId("additional item id");<br>msg.readInt32("gold point");<br>msg.readInt32("silver point");<br>msg.readInt32("bronze point");
|-
|-
| SMSG_ROULETTE_CLOSE || 0x0a1e || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/rouletterecv.cpp#L91 RouletteRecv::processRouletteClose] || 20141008 || msg.readUInt8("result");
| SMSG_ROULETTE_CLOSE || 0x0a1e || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/rouletterecv.cpp#L91 RouletteRecv::processRouletteClose] || 20141008 || msg.readUInt8("result");
|-
|-
| SMSG_BATTLE_UPDATE_HP || 0x0a0e || 14 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/battlegroundrecv.cpp#L111 BattleGroundRecv::processBattleUpdateHp] || 20140613 || msg.readBeingId("account id");<br>msg.readInt32("hp");<br>msg.readInt32("max hp");<br>msg.readString(24, "name");<br>msg.readInt16("hp");<br>msg.readInt16("max hp");
| SMSG_BATTLE_UPDATE_HP || 0x0a0e || 14 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/battlegroundrecv.cpp#L111 BattleGroundRecv::processBattleUpdateHp] || 20140613 || msg.readBeingId("account id");<br>msg.readInt32("hp");<br>msg.readInt32("max hp");<br>msg.readString(24, "name");<br>msg.readInt16("hp");<br>msg.readInt16("max hp");
|-
|-
| SMSG_MAIL2_REMOVE_ITEM_RESULT || 0x0a07 || 9 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/mail2recv.cpp#L182 Mail2Recv::processRemoveItemResult] || 20140521 || const int result = msg.readUInt8("result");<br>const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>const int amount = msg.readInt16("count");<br>msg.readInt16("weight");
| SMSG_MAIL2_REMOVE_ITEM_RESULT || 0x0a07 || 9 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/mail2recv.cpp#L182 Mail2Recv::processRemoveItemResult] || 20140521 || const int result = msg.readUInt8("result");<br>const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>const int amount = msg.readInt16("count");<br>msg.readInt16("weight");
|-
|-
| SMSG_MAIL2_OPEN_NEW_MAIL_WINDOW || 0x0a12 || 27 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/mail2recv.cpp#L75 Mail2Recv::processOpenNewMailWindow] || 20140416 || msg.readString(24, "receiver");<br>msg.readUInt8("result");
| SMSG_MAIL2_OPEN_NEW_MAIL_WINDOW || 0x0a12 || 27 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/mail2recv.cpp#L75 Mail2Recv::processOpenNewMailWindow] || 20140416 || msg.readString(24, "receiver");<br>msg.readUInt8("result");
|-
|-
| SMSG_MAIL2_READ_MAIL || 0x09eb || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/mail2recv.cpp#L390 Mail2Recv::processReadMail] || 20140115 || msg.readInt16("len");<br>msg.readUInt8("open type"));<br>const int64_t mailId = msg.readInt64("mail id");<br>const int textLen = msg.readInt16("text len");<br>const int64_t money = msg.readInt64("money");<br>const int itemsCount = msg.readUInt8("item count");<br>const std::string text = msg.readString(textLen, "text message");<br>msg.readInt16("amount");<br>msg.readItemId("item id");<br>msg.readUInt8("identify");<br>msg.readUInt8("damaged");<br>msg.readUInt8("refine");<br>msg.readItemId("card");<br>msg.readInt32("location");<br>msg.readUInt8("type");<br>msg.readInt16("view sprite");<br>msg.readInt16("bind on equip");<br>msg.readInt16("option index");<br>msg.readInt16("option value");<br>msg.readUInt8("option param");<br>const int amount = msg.readInt16("amount");<br>const int itemId = msg.readItemId("item id");<br>const uint8_t identify = msg.readUInt8("identify");<br>const Damaged damaged = fromBool(msg.readUInt8("attribute"), Damaged);<br>const uint8_t refine = msg.readUInt8("refine");<br>cards[d] = msg.readItemId("card");<br>msg.readInt32("location");<br>msg.readUInt8("item type"));<br>msg.readInt16("view sprite");<br>msg.readInt16("bind on equip");<br>const uint16_t idx = msg.readInt16("option index");<br>const uint16_t val = msg.readInt16("option value");<br>msg.readUInt8("option param");
| SMSG_MAIL2_READ_MAIL || 0x09eb || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/mail2recv.cpp#L390 Mail2Recv::processReadMail] || 20140115 || msg.readInt16("len");<br>msg.readUInt8("open type"));<br>const int64_t mailId = msg.readInt64("mail id");<br>const int textLen = msg.readInt16("text len");<br>const int64_t money = msg.readInt64("money");<br>const int itemsCount = msg.readUInt8("item count");<br>const std::string text = msg.readString(textLen, "text message");<br>msg.readInt16("amount");<br>msg.readItemId("item id");<br>msg.readUInt8("identify");<br>msg.readUInt8("damaged");<br>msg.readUInt8("refine");<br>msg.readItemId("card");<br>msg.readInt32("location");<br>msg.readUInt8("type");<br>msg.readInt16("view sprite");<br>msg.readInt16("bind on equip");<br>msg.readInt16("option index");<br>msg.readInt16("option value");<br>msg.readUInt8("option param");<br>const int amount = msg.readInt16("amount");<br>const int itemId = msg.readItemId("item id");<br>const uint8_t identify = msg.readUInt8("identify");<br>const Damaged damaged = fromBool(msg.readUInt8("attribute"), Damaged);<br>const uint8_t refine = msg.readUInt8("refine");<br>cards[d] = msg.readItemId("card");<br>msg.readInt32("location");<br>msg.readUInt8("item type"));<br>msg.readInt16("view sprite");<br>msg.readInt16("bind on equip");<br>const uint16_t idx = msg.readInt16("option index");<br>const uint16_t val = msg.readInt16("option value");<br>msg.readUInt8("option param");
|-
|-
| SMSG_MAIL2_REQUEST_ITEMS || 0x09f4 || 12 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/mail2recv.cpp#L530 Mail2Recv::processRequestItems] || 20140409 || const int64_t mailId = msg.readInt64("mail id");<br>msg.readUInt8("open type");<br>const int res = msg.readUInt8("result");
| SMSG_MAIL2_REQUEST_ITEMS || 0x09f4 || 12 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/mail2recv.cpp#L530 Mail2Recv::processRequestItems] || 20140409 || const int64_t mailId = msg.readInt64("mail id");<br>msg.readUInt8("open type");<br>const int res = msg.readUInt8("result");
|-
|-
| SMSG_MAIL2_REQUEST_MONEY || 0x09f2 || 12 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/mail2recv.cpp#L501 Mail2Recv::processRequestMoney] || 20140409 || const int64_t mailId = msg.readInt64("mail id");<br>msg.readUInt8("open type");<br>const int res = msg.readUInt8("result");
| SMSG_MAIL2_REQUEST_MONEY || 0x09f2 || 12 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/mail2recv.cpp#L501 Mail2Recv::processRequestMoney] || 20140409 || const int64_t mailId = msg.readInt64("mail id");<br>msg.readUInt8("open type");<br>const int res = msg.readUInt8("result");
|-
|-
| SMSG_PET_EVOLUTION_RESULT || 0x09fc || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/petrecv.cpp#L186 PetRecv::processPetEvolution] || 20140122 || msg.readUInt8("result");
| SMSG_PET_EVOLUTION_RESULT || 0x09fc || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/petrecv.cpp#L186 PetRecv::processPetEvolution] || 20140122 || msg.readUInt8("result");
|-
|-
| SMSG_HOMUNCULUS_INFO || 0x09f7 || 75 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/homunculusrecv.cpp#L196 HomunculusRecv::processHomunculusInfo2] || 20131230 || const std::string name = msg.readString(24, "name");<br>msg.readUInt8("flags");  // 0x01 - renamed, 0x02 - vaporize, 0x04 - alive<br>const int level = msg.readInt16("level");<br>const int hungry = msg.readInt16("hungry");<br>const int intimacy = msg.readInt16("intimacy");<br>const int equip = msg.readItemId("item id");<br>msg.readInt16("atk"),<br>msg.readInt16("matk"),<br>msg.readInt16("hit"),<br>msg.readInt16("luk/3 or crit/10"),<br>msg.readInt16("def"),<br>msg.readInt16("mdef"),<br>msg.readInt16("flee"),<br>msg.readInt16("attack speed"),<br>msg.readInt32("hp"),<br>msg.readInt32("max hp"),<br>msg.readInt16("sp"),<br>msg.readInt16("max sp"),<br>msg.readInt32("exp"),<br>msg.readInt32("next exp"),<br>msg.readInt16("skill points"),<br>const int range = msg.readInt16("attack range");
| SMSG_HOMUNCULUS_INFO || 0x09f7 || 75 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/homunculusrecv.cpp#L196 HomunculusRecv::processHomunculusInfo2] || 20131230 || const std::string name = msg.readString(24, "name");<br>msg.readUInt8("flags");  // 0x01 - renamed, 0x02 - vaporize, 0x04 - alive<br>const int level = msg.readInt16("level");<br>const int hungry = msg.readInt16("hungry");<br>const int intimacy = msg.readInt16("intimacy");<br>const int equip = msg.readItemId("item id");<br>msg.readInt16("atk"),<br>msg.readInt16("matk"),<br>msg.readInt16("hit"),<br>msg.readInt16("luk/3 or crit/10"),<br>msg.readInt16("def"),<br>msg.readInt16("mdef"),<br>msg.readInt16("flee"),<br>msg.readInt16("attack speed"),<br>msg.readInt32("hp"),<br>msg.readInt32("max hp"),<br>msg.readInt16("sp"),<br>msg.readInt16("max sp"),<br>msg.readInt32("exp"),<br>msg.readInt32("next exp"),<br>msg.readInt16("skill points"),<br>const int range = msg.readInt16("attack range");
|-
|-
| SMSG_MAIL2_SEND_RESULT || 0x09ed || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/mail2recv.cpp#L302 Mail2Recv::processSendResult] || 20131230 || const int res = msg.readUInt8("result");
| SMSG_MAIL2_SEND_RESULT || 0x09ed || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/mail2recv.cpp#L302 Mail2Recv::processSendResult] || 20131230 || const int res = msg.readUInt8("result");
|-
|-
| SMSG_CLAN_LEAVE || 0x0989 || 2 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/clanrecv.cpp#L0 ClanRecv::processClanLeave] || 20131223 ||  
| SMSG_CLAN_LEAVE || 0x0989 || 2 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/clanrecv.cpp#L0 ClanRecv::processClanLeave] || 20131223 ||  
|-
|-
| SMSG_SKILL_NO_DAMAGE || 0x09cb || 17 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/beingrecv.cpp#L385 Ea::BeingRecv::processSkillNoDamage] || 20131223 || const int id = msg.readInt16("skill id");<br>heal = msg.readInt32("heal");<br>heal = msg.readInt16("heal");<br>msg.readBeingId("dst being id"));<br>msg.readBeingId("src being id"));<br>msg.readUInt8("fail");
| SMSG_SKILL_NO_DAMAGE || 0x09cb || 17 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/beingrecv.cpp#L385 Ea::BeingRecv::processSkillNoDamage] || 20131223 || const int id = msg.readInt16("skill id");<br>heal = msg.readInt32("heal");<br>heal = msg.readInt16("heal");<br>msg.readBeingId("dst being id"));<br>msg.readBeingId("src being id"));<br>msg.readUInt8("fail");
|-
|-
| SMSG_WHISPER_RESPONSE || 0x09df || 7 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L370 ChatRecv::processWhisperResponse] || 20131223 || const uint8_t type = msg.readUInt8("response");<br>msg.readBeingId("being id");
| SMSG_WHISPER_RESPONSE || 0x09df || 7 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L370 ChatRecv::processWhisperResponse] || 20131223 || const uint8_t type = msg.readUInt8("response");<br>msg.readBeingId("being id");
|-
|-
| SMSG_NPC_MARKET_BUY_ACK || 0x09d7 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/marketrecv.cpp#L96 MarketRecv::processMarketBuyAck] || 20131223 || const int len = (msg.readInt16("len") - 5) / (6 + itemIdLen);<br>const int res = msg.readUInt8("result");<br>msg.readItemId("item id");<br>msg.readInt16("amount");<br>msg.readInt32("price");
| SMSG_NPC_MARKET_BUY_ACK || 0x09d7 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/marketrecv.cpp#L96 MarketRecv::processMarketBuyAck] || 20131223 || const int len = (msg.readInt16("len") - 5) / (6 + itemIdLen);<br>const int res = msg.readUInt8("result");<br>msg.readItemId("item id");<br>msg.readInt16("amount");<br>msg.readInt32("price");
|-
|-
| SMSG_NPC_MARKET_OPEN || 0x09d5 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/marketrecv.cpp#L58 MarketRecv::processMarketOpen] || 20131223 || const int len = (msg.readInt16("len") - 4) / (11 + itemIdLen);<br>const int itemId = msg.readItemId("item id");<br>const ItemTypeT type = static_cast<ItemTypeT>(msg.readUInt8("type"));<br>const int value = msg.readInt32("price");<br>const int amount = msg.readInt32("amount");<br>msg.readInt16("weight");  // +++ compare with item weight from db?
| SMSG_NPC_MARKET_OPEN || 0x09d5 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/marketrecv.cpp#L58 MarketRecv::processMarketOpen] || 20131223 || const int len = (msg.readInt16("len") - 4) / (11 + itemIdLen);<br>const int itemId = msg.readItemId("item id");<br>const ItemTypeT type = static_cast<ItemTypeT>(msg.readUInt8("type"));<br>const int value = msg.readInt32("price");<br>const int amount = msg.readInt32("amount");<br>msg.readInt16("weight");  // +++ compare with item weight from db?
|-
|-
| SMSG_BEING_ACTION2 || 0x08c8 || 34 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1247 BeingRecv::processBeingAction2] || 20131223 || msg.readBeingId("src being id"));<br>msg.readBeingId("dst being id"));<br>msg.readInt32("tick");<br>const int srcSpeed = msg.readInt32("src speed");<br>msg.readInt32("dst speed");<br>param1 = msg.readInt32("damage");<br>param1 = msg.readInt16("damage");<br>msg.readUInt8("is sp damaged");<br>msg.readInt16("count");<br>msg.readUInt8("action"));<br>msg.readInt32("left damage");<br>msg.readInt16("left damage");
| SMSG_BEING_ACTION2 || 0x08c8 || 34 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1247 BeingRecv::processBeingAction2] || 20131223 || msg.readBeingId("src being id"));<br>msg.readBeingId("dst being id"));<br>msg.readInt32("tick");<br>const int srcSpeed = msg.readInt32("src speed");<br>msg.readInt32("dst speed");<br>param1 = msg.readInt32("damage");<br>param1 = msg.readInt16("damage");<br>msg.readUInt8("is sp damaged");<br>msg.readInt16("count");<br>msg.readUInt8("action"));<br>msg.readInt32("left damage");<br>msg.readInt16("left damage");
|-
|-
| SMSG_MAIL2_MAIL_DELETE || 0x09f6 || 11 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/mail2recv.cpp#L489 Mail2Recv::processMailDelete] || 20131218 || msg.readUInt8("open type");<br>const int64_t mailId = msg.readInt64("mail id");
| SMSG_MAIL2_MAIL_DELETE || 0x09f6 || 11 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/mail2recv.cpp#L489 Mail2Recv::processMailDelete] || 20131218 || msg.readUInt8("open type");<br>const int64_t mailId = msg.readInt64("mail id");
|-
|-
| SMSG_SKILL_ENTRY || 0x09ca || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1572 BeingRecv::processSkillEntry] || 20130731 || msg.readInt16("len");<br>const BeingId id = msg.readBeingId("skill unit id");<br>const BeingId creatorId = msg.readBeingId("creator accound id");<br>const int x = msg.readInt16("x");<br>const int y = msg.readInt16("y");<br>job = msg.readInt32("job");<br>msg.readUInt8("radius");<br>msg.readUInt8("visible");<br>level = msg.readUInt8("level");
| SMSG_SKILL_ENTRY || 0x09ca || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1572 BeingRecv::processSkillEntry] || 20130731 || msg.readInt16("len");<br>const BeingId id = msg.readBeingId("skill unit id");<br>const BeingId creatorId = msg.readBeingId("creator accound id");<br>const int x = msg.readInt16("x");<br>const int y = msg.readInt16("y");<br>job = msg.readInt32("job");<br>msg.readUInt8("radius");<br>msg.readUInt8("visible");<br>level = msg.readUInt8("level");
|-
|-
| SMSG_BANK_WITHDRAW || 0x09aa || 16 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/bankrecv.cpp#L59 BankRecv::processBankWithdraw] || 20130724 || const int reason = msg.readInt16("reason");<br>const int money = CAST_S32(msg.readInt64("money"));<br>msg.readInt32("balance");
| SMSG_BANK_WITHDRAW || 0x09aa || 16 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/bankrecv.cpp#L59 BankRecv::processBankWithdraw] || 20130724 || const int reason = msg.readInt16("reason");<br>const int money = CAST_S32(msg.readInt64("money"));<br>msg.readInt32("balance");
|-
|-
| SMSG_BANK_DEPOSIT || 0x09a8 || 16 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/bankrecv.cpp#L49 BankRecv::processBankDeposit] || 20130724 || const int reason = msg.readInt16("reason");<br>const int money = CAST_S32(msg.readInt64("money"));<br>msg.readInt32("balance");
| SMSG_BANK_DEPOSIT || 0x09a8 || 16 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/bankrecv.cpp#L49 BankRecv::processBankDeposit] || 20130724 || const int reason = msg.readInt16("reason");<br>const int money = CAST_S32(msg.readInt64("money"));<br>msg.readInt32("balance");
|-
|-
| SMSG_BANK_STATUS || 0x09a6 || 12 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/bankrecv.cpp#L40 BankRecv::processBankStatus] || 20130724 || const int money = CAST_S32(msg.readInt64("money"));<br>const int reason = msg.readInt16("reason");
| SMSG_BANK_STATUS || 0x09a6 || 12 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/bankrecv.cpp#L40 BankRecv::processBankStatus] || 20130724 || const int money = CAST_S32(msg.readInt64("money"));<br>const int reason = msg.readInt16("reason");
|-
|-
| SMSG_PLAYER_RANK_POINTS || 0x097e || 12 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/playerrecv.cpp#L453 PlayerRecv::processPlayerRankPoints] || 20130710 || msg.readInt16("type");<br>msg.readInt32("points");<br>msg.readInt32("fame");
| SMSG_PLAYER_RANK_POINTS || 0x097e || 12 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/playerrecv.cpp#L453 PlayerRecv::processPlayerRankPoints] || 20130710 || msg.readInt16("type");<br>msg.readInt32("points");<br>msg.readInt32("fame");
|-
|-
| SMSG_CLAN_INFO || 0x098a || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/clanrecv.cpp#L48 ClanRecv::processClanInfo] || 20130626 || msg.readInt16("len");<br>localClan.id = msg.readInt32("clan id");<br>localClan.name = msg.readString(24, "clan name");<br>localClan.masterName = msg.readString(24, "master name");<br>localClan.mapName = msg.readString(16, "map name");<br>const int allyCount = msg.readUInt8("ally clans count");<br>const int antagonistCount = msg.readUInt8("antagonist clans count");<br>msg.readString(24, "ally clan name"));<br>msg.readString(24, "antagonist clan name"));
| SMSG_CLAN_INFO || 0x098a || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/clanrecv.cpp#L48 ClanRecv::processClanInfo] || 20130626 || msg.readInt16("len");<br>localClan.id = msg.readInt32("clan id");<br>localClan.name = msg.readString(24, "clan name");<br>localClan.masterName = msg.readString(24, "master name");<br>localClan.mapName = msg.readString(16, "map name");<br>const int allyCount = msg.readUInt8("ally clans count");<br>const int antagonistCount = msg.readUInt8("antagonist clans count");<br>msg.readString(24, "ally clan name"));<br>msg.readString(24, "antagonist clan name"));
|-
|-
| SMSG_RANKS_LIST || 0x097d || 288 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1400 BeingRecv::processRanksList1] || 20130605 || const int count = (msg.readInt16("len") - 4) / 28;<br>msg.readInt16("rank type");<br>msg.readString(24, "name");<br>msg.readInt32("points");<br>msg.readInt32("my points");
| SMSG_RANKS_LIST || 0x097d || 288 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1400 BeingRecv::processRanksList1] || 20130605 || const int count = (msg.readInt16("len") - 4) / 28;<br>msg.readInt16("rank type");<br>msg.readString(24, "name");<br>msg.readInt32("points");<br>msg.readInt32("my points");
|-
|-
| SMSG_ITEM_DROPPED || 0x084b || 19 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/itemrecv.cpp#L43 ItemRecv::processItemDropped] || 20130000 || const BeingId id = msg.readBeingId("id");<br>const int itemId = msg.readItemId("item id");<br>itemType = static_cast<ItemTypeT>(msg.readInt16("type"));<br>msg.readUInt8("identify"), Identified);<br>const int x = msg.readInt16("x");<br>const int y = msg.readInt16("y");<br>const int subX = CAST_S32(msg.readInt8("subx"));<br>const int subY = CAST_S32(msg.readInt8("suby"));<br>const int amount = msg.readInt16("count");<br>msg.readUInt8("show drop effect");<br>msg.readInt16("show effect mode");
| SMSG_ITEM_DROPPED || 0x084b || 19 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/itemrecv.cpp#L43 ItemRecv::processItemDropped] || 20130000 || const BeingId id = msg.readBeingId("id");<br>const int itemId = msg.readItemId("item id");<br>itemType = static_cast<ItemTypeT>(msg.readInt16("type"));<br>msg.readUInt8("identify"), Identified);<br>const int x = msg.readInt16("x");<br>const int y = msg.readInt16("y");<br>const int subX = CAST_S32(msg.readInt8("subx"));<br>const int subY = CAST_S32(msg.readInt8("suby"));<br>const int amount = msg.readInt16("count");<br>msg.readUInt8("show drop effect");<br>msg.readInt16("show effect mode");
|-
|-
| SMSG_MAP_TYPE_PROPERTY2 || 0x099b || 8 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L977 BeingRecv::processMapTypeProperty] || 20121010 || const int16_t type = msg.readInt16("type");<br>const int flags = msg.readInt32("flags");
| SMSG_MAP_TYPE_PROPERTY2 || 0x099b || 8 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L977 BeingRecv::processMapTypeProperty] || 20121010 || const int16_t type = msg.readInt16("type");<br>const int flags = msg.readInt32("flags");
|-
|-
| SMSG_SHOW_PROGRESS_BAR_FREE || 0x09d1 || 14 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/npcrecv.cpp#L88 NpcRecv::processShowProgressBarFree] || 20130821 || msg.readBeingId("account id");<br>msg.readInt32("color");<br>msg.readInt32("time");
| SMSG_SHOW_PROGRESS_BAR_FREE || 0x09d1 || 14 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/npcrecv.cpp#L88 NpcRecv::processShowProgressBarFree] || 20130821 || msg.readBeingId("account id");<br>msg.readInt32("color");<br>msg.readInt32("time");
|-
|-
| SMSG_PLAYER_UNEQUIP || 0x099a || 9 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L568 InventoryRecv::processPlayerUnEquip] || 20120925 || msg.readInt16("index");<br>equipType = msg.readInt32("wear location");<br>equipType = msg.readInt16("wear location");<br>const uint8_t flag = msg.readUInt8("result");
| SMSG_PLAYER_UNEQUIP || 0x099a || 9 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L568 InventoryRecv::processPlayerUnEquip] || 20120925 || msg.readInt16("index");<br>equipType = msg.readInt32("wear location");<br>equipType = msg.readInt16("wear location");<br>const uint8_t flag = msg.readUInt8("result");
|-
|-
| SMSG_PLAYER_EQUIP || 0x0999 || 11 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L536 InventoryRecv::processPlayerEquip] || 20120925 || const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>equipType = msg.readInt32("wear location");<br>equipType = msg.readInt16("wear location");<br>msg.readInt16("sprite");<br>const uint8_t flag = msg.readUInt8("result");
| SMSG_PLAYER_EQUIP || 0x0999 || 11 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L536 InventoryRecv::processPlayerEquip] || 20120925 || const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>equipType = msg.readInt32("wear location");<br>equipType = msg.readInt16("wear location");<br>msg.readInt16("sprite");<br>const uint8_t flag = msg.readUInt8("result");
|-
|-
| SMSG_PLAYER_STORAGE_ITEMS || 0x0995 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L459 InventoryRecv::processPlayerStorage] || 20120925 || msg.readInt16("len");<br>msg.readString(24, "storage name");<br>const int index = msg.readInt16("item index") - STORAGE_OFFSET;<br>const int itemId = msg.readItemId("item id");<br>msg.readUInt8("item type"));<br>msg.readUInt8("identified");<br>const int amount = msg.readInt16("count");<br>msg.readInt32("wear state / equip");<br>msg.readInt16("wear state / equip");<br>cards[f] = msg.readItemId("card");<br>msg.readInt32("hire expire date (?)");<br>flags.byte = msg.readUInt8("flags");
| SMSG_PLAYER_STORAGE_ITEMS || 0x0995 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L459 InventoryRecv::processPlayerStorage] || 20120925 || msg.readInt16("len");<br>msg.readString(24, "storage name");<br>const int index = msg.readInt16("item index") - STORAGE_OFFSET;<br>const int itemId = msg.readItemId("item id");<br>msg.readUInt8("item type"));<br>msg.readUInt8("identified");<br>const int amount = msg.readInt16("count");<br>msg.readInt32("wear state / equip");<br>msg.readInt16("wear state / equip");<br>cards[f] = msg.readItemId("card");<br>msg.readInt32("hire expire date (?)");<br>flags.byte = msg.readUInt8("flags");
|-
|-
| SMSG_PLAYER_CART_ITEMS || 0x0993 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1131 InventoryRecv::processPlayerCartItems] || 20120925 || msg.readInt16("len");<br>const int index = msg.readInt16("item index") - INVENTORY_OFFSET;<br>const int itemId = msg.readItemId("item id");<br>msg.readUInt8("item type"));<br>msg.readUInt8("identified");<br>const int amount = msg.readInt16("count");<br>msg.readInt32("wear state / equip");<br>cards[f] = msg.readItemId("card");<br>msg.readInt32("hire expire date (?)");<br>flags.byte = msg.readUInt8("flags");
| SMSG_PLAYER_CART_ITEMS || 0x0993 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1131 InventoryRecv::processPlayerCartItems] || 20120925 || msg.readInt16("len");<br>const int index = msg.readInt16("item index") - INVENTORY_OFFSET;<br>const int itemId = msg.readItemId("item id");<br>msg.readUInt8("item type"));<br>msg.readUInt8("identified");<br>const int amount = msg.readInt16("count");<br>msg.readInt32("wear state / equip");<br>cards[f] = msg.readItemId("card");<br>msg.readInt32("hire expire date (?)");<br>flags.byte = msg.readUInt8("flags");
|-
|-
| SMSG_PLAYER_INVENTORY || 0x0991 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L388 InventoryRecv::processPlayerInventory] || 20120925 || msg.readInt16("len");<br>const int index = msg.readInt16("item index") - INVENTORY_OFFSET;<br>const int itemId = msg.readItemId("item id");<br>msg.readUInt8("item type"));<br>msg.readUInt8("identified");<br>const int amount = msg.readInt16("count");<br>msg.readInt32("wear state / equip");<br>msg.readInt16("wear state / equip");<br>cards[f] = msg.readItemId("card");<br>msg.readInt32("hire expire date (?)");<br>flags.byte = msg.readUInt8("flags");
| SMSG_PLAYER_INVENTORY || 0x0991 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L388 InventoryRecv::processPlayerInventory] || 20120925 || msg.readInt16("len");<br>const int index = msg.readInt16("item index") - INVENTORY_OFFSET;<br>const int itemId = msg.readItemId("item id");<br>msg.readUInt8("item type"));<br>msg.readUInt8("identified");<br>const int amount = msg.readInt16("count");<br>msg.readInt32("wear state / equip");<br>msg.readInt16("wear state / equip");<br>cards[f] = msg.readItemId("card");<br>msg.readInt32("hire expire date (?)");<br>flags.byte = msg.readUInt8("flags");
|-
|-
| SMSG_CLAN_CHAT || 0x098e || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/clanrecv.cpp#L95 ClanRecv::processClanChat] || 20120716 || const int chatMsgLength = msg.readInt16("len") - 4 - 24;<br>msg.readString(24, "player name (unused)");<br>std::string chatMsg = msg.readString(chatMsgLength, "message");
| SMSG_CLAN_CHAT || 0x098e || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/clanrecv.cpp#L95 ClanRecv::processClanChat] || 20120716 || const int chatMsgLength = msg.readInt16("len") - 4 - 24;<br>msg.readString(24, "player name (unused)");<br>std::string chatMsg = msg.readString(chatMsgLength, "message");
|-
|-
| SMSG_CLAN_ONLINE_COUNT || 0x0988 || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/clanrecv.cpp#L81 ClanRecv::processClanOnlineCount] || 20120716 || localClan.onlineMembers = msg.readInt16("online members count");<br>localClan.totalMembers = msg.readInt16("total members count");
| SMSG_CLAN_ONLINE_COUNT || 0x0988 || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/clanrecv.cpp#L81 ClanRecv::processClanOnlineCount] || 20120716 || localClan.onlineMembers = msg.readInt16("online members count");<br>localClan.totalMembers = msg.readInt16("total members count");
|-
|-
| SMSG_PLAYER_SKILL_COOLDOWN_LIST || 0x0985 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/skillrecv.cpp#L259 SkillRecv::processSkillCoolDownList] || 20120604 || const int count = (msg.readInt16("len") - 4) / packetLen;<br>const int skillId = msg.readInt16("skill id");<br>msg.readInt32("total");<br>const int duration = msg.readInt32("duration");
| SMSG_PLAYER_SKILL_COOLDOWN_LIST || 0x0985 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/skillrecv.cpp#L259 SkillRecv::processSkillCoolDownList] || 20120604 || const int count = (msg.readInt16("len") - 4) / packetLen;<br>const int skillId = msg.readInt16("skill id");<br>msg.readInt32("total");<br>const int duration = msg.readInt32("duration");
|-
|-
| SMSG_BEING_STATUS_CHANGE || 0x0983 || 29 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1165 BeingRecv::processBeingStatusChange] || 20120618 || const uint16_t status = msg.readInt16("status");<br>const BeingId id = msg.readBeingId("being id");<br>msg.readUInt8("flag: 0: stop, 1: start"), Enable);<br>msg.readInt32("total");<br>msg.readInt32("left");<br>msg.readInt32("val1");<br>msg.readInt32("val2");<br>msg.readInt32("val3");
| SMSG_BEING_STATUS_CHANGE || 0x0983 || 29 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1165 BeingRecv::processBeingStatusChange] || 20120618 || const uint16_t status = msg.readInt16("status");<br>const BeingId id = msg.readBeingId("being id");<br>msg.readUInt8("flag: 0: stop, 1: start"), Enable);<br>msg.readInt32("total");<br>msg.readInt32("left");<br>msg.readInt32("val1");<br>msg.readInt32("val2");<br>msg.readInt32("val3");
|-
|-
| SMSG_CHAR_CHARACTERS || 0x099d || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/charserverrecv.cpp#L544 CharServerRecv::processCharCharacters] || 20120419 || msg.readInt16("packet len");
| SMSG_CHAR_CHARACTERS || 0x099d || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/charserverrecv.cpp#L544 CharServerRecv::processCharCharacters] || 20120419 || msg.readInt16("packet len");
|-
|-
| SMSG_MONSTER_HP || 0x0977 || 14 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1368 BeingRecv::processMonsterHp] || 20120410 || msg.readBeingId("monster id"));<br>const int hp = msg.readInt32("hp");<br>const int maxHP = msg.readInt32("max hp");
| SMSG_MONSTER_HP || 0x0977 || 14 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1368 BeingRecv::processMonsterHp] || 20120410 || msg.readBeingId("monster id"));<br>const int hp = msg.readInt32("hp");<br>const int maxHP = msg.readInt32("max hp");
|-
|-
| SMSG_PLAYER_FAVORITE_ITEM || 0x0908 || 5 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1348 InventoryRecv::processFavoriteItem] || 20120410 || msg.readInt16("item index");<br>msg.readUInt8("favorite (0 - favorite)");
| SMSG_PLAYER_FAVORITE_ITEM || 0x0908 || 5 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1348 InventoryRecv::processFavoriteItem] || 20120410 || msg.readInt16("item index");<br>msg.readUInt8("favorite (0 - favorite)");
|-
|-
| SMSG_BOOKING_REFUSE_VOLUNTEER || 0x08fa || 6 || nullptr || 20120410 ||  
| SMSG_BOOKING_REFUSE_VOLUNTEER || 0x08fa || 6 || nullptr || 20120410 ||  
Line 283: Line 283:
| SMSG_RECRUIT_REGISTER_ACK || 0x08e6 || 4 || nullptr || 20120410 ||  
| SMSG_RECRUIT_REGISTER_ACK || 0x08e6 || 4 || nullptr || 20120410 ||  
|-
|-
| SMSG_BEING_CHARM || 0x08cf || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L2102 BeingRecv::processBeingCharm] || 20120410 || msg.readBeingId("account id");<br>msg.readInt16("charm type");<br>msg.readInt16("charm count");
| SMSG_BEING_CHARM || 0x08cf || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L2102 BeingRecv::processBeingCharm] || 20120410 || msg.readBeingId("account id");<br>msg.readInt16("charm type");<br>msg.readInt16("charm count");
|-
|-
| SMSG_NPC_CASH_BUY || 0x0849 || 16 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/cashshoprecv.cpp#L146 CashShopRecv::processCashShopBuy] || 20120328 || msg.readInt32("id");<br>msg.readInt16("result");<br>msg.readInt32("cash points");<br>msg.readInt32("kafra points");
| SMSG_NPC_CASH_BUY || 0x0849 || 16 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/cashshoprecv.cpp#L146 CashShopRecv::processCashShopBuy] || 20120328 || msg.readInt32("id");<br>msg.readInt16("result");<br>msg.readInt32("cash points");<br>msg.readInt32("kafra points");
|-
|-
| SMSG_ACK_MERGE_ITEMS || 0x096f || 7 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1457 InventoryRecv::processMergeItemResponse] || 20120314 || msg.readInt16("inv index");<br>msg.readInt16("amount");<br>msg.readUInt8("result");
| SMSG_ACK_MERGE_ITEMS || 0x096f || 7 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1457 InventoryRecv::processMergeItemResponse] || 20120314 || msg.readInt16("inv index");<br>msg.readInt16("amount");<br>msg.readUInt8("result");
|-
|-
| SMSG_MERGE_ITEM || 0x096d || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1448 InventoryRecv::processMergeItem] || 20120314 || const int count = (msg.readInt16("len") - 4) / 2;<br>msg.readInt16("inv index");
| SMSG_MERGE_ITEM || 0x096d || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1448 InventoryRecv::processMergeItem] || 20120314 || const int count = (msg.readInt16("len") - 4) / 2;<br>msg.readInt16("inv index");
|-
|-
| SMSG_LOGIN_ERROR2 || 0x083e || 26 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/loginrecv.cpp#L61 LoginRecv::processLoginError2] || 20120000 || const uint32_t code = msg.readInt32("error");<br>msg.readString(20, "error message");<br>msg.readString(20, "date").c_str());
| SMSG_LOGIN_ERROR2 || 0x083e || 26 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/loginrecv.cpp#L61 LoginRecv::processLoginError2] || 20120000 || const uint32_t code = msg.readInt32("error");<br>msg.readString(20, "error message");<br>msg.readString(20, "date").c_str());
|-
|-
| CMSG_NAVIGATE_TO || 0x08e2 || 27 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L2387 BeingRecv::processNavigateTo] || 20111010 || msg.readUInt8("navigate type");<br>msg.readUInt8("transportation flag");<br>msg.readUInt8("hide window");<br>msg.readString(16, "map name");<br>msg.readInt16("x");<br>msg.readInt16("y");<br>msg.readInt16("mob id");
| CMSG_NAVIGATE_TO || 0x08e2 || 27 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L2387 BeingRecv::processNavigateTo] || 20111010 || msg.readUInt8("navigate type");<br>msg.readUInt8("transportation flag");<br>msg.readUInt8("hide window");<br>msg.readString(16, "map name");<br>msg.readInt16("x");<br>msg.readInt16("y");<br>msg.readInt16("mob id");
|-
|-
| SMSG_SKILL_SNAP || 0x08d2 || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L2033 BeingRecv::processBeingSlide] || 20111005 || msg.readBeingId("being id"));<br>const int x = msg.readInt16("x");<br>const int y = msg.readInt16("y");
| SMSG_SKILL_SNAP || 0x08d2 || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L2033 BeingRecv::processBeingSlide] || 20111005 || msg.readBeingId("being id"));<br>const int x = msg.readInt16("x");<br>const int y = msg.readInt16("y");
|-
|-
| SMSG_GUILD_EXPULSION || 0x0839 || 66 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L741 GuildRecv::processGuildExpulsion] || 20100803 || const std::string nick = msg.readString(24, "name");<br>msg.readString(40, "message");
| SMSG_GUILD_EXPULSION || 0x0839 || 66 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L741 GuildRecv::processGuildExpulsion] || 20100803 || const std::string nick = msg.readString(24, "name");<br>msg.readString(40, "message");
|-
|-
| SMSG_SEARCHSTORE_OPEN || 0x083a || 5 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/searchstorerecv.cpp#L108 SearchStoreRecv::processSearchOpen] || 20100701 || msg.readInt16("effect");<br>msg.readUInt8("uses");
| SMSG_SEARCHSTORE_OPEN || 0x083a || 5 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/searchstorerecv.cpp#L108 SearchStoreRecv::processSearchOpen] || 20100701 || msg.readInt16("effect");<br>msg.readUInt8("uses");
|-
|-
| SMSG_SEARCHSTORE_CLICK_ACK || 0x083d || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/searchstorerecv.cpp#L116 SearchStoreRecv::processSearchClickAck] || 20100608 || msg.readInt16("x");<br>msg.readInt16("y");
| SMSG_SEARCHSTORE_CLICK_ACK || 0x083d || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/searchstorerecv.cpp#L116 SearchStoreRecv::processSearchClickAck] || 20100608 || msg.readInt16("x");<br>msg.readInt16("y");
|-
|-
| SMSG_SEARCHSTORE_SEARCH_FAILED || 0x0837 || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/searchstorerecv.cpp#L75 SearchStoreRecv::processSearchFailed] || 20100601 || const int result = msg.readUInt8("result");
| SMSG_SEARCHSTORE_SEARCH_FAILED || 0x0837 || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/searchstorerecv.cpp#L75 SearchStoreRecv::processSearchFailed] || 20100601 || const int result = msg.readUInt8("result");
|-
|-
| SMSG_BUYINGSTORE_SELLER_SELL_FAILED || 0x0824 || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/buyingstorerecv.cpp#L184 BuyingStoreRecv::processBuyingStoreSellerSellFailed] || 20100420 || const int16_t result = msg.readInt16("result");<br>msg.readItemId("item id");
| SMSG_BUYINGSTORE_SELLER_SELL_FAILED || 0x0824 || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/buyingstorerecv.cpp#L184 BuyingStoreRecv::processBuyingStoreSellerSellFailed] || 20100420 || const int16_t result = msg.readInt16("result");<br>msg.readItemId("item id");
|-
|-
| SMSG_BUYINGSTORE_DELETE_ITEM || 0x081c || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/buyingstorerecv.cpp#L230 BuyingStoreRecv::processBuyingStoreDeleteItem] || 20100420 || const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>const int amount = msg.readInt16("amount");<br>msg.readInt32("price");
| SMSG_BUYINGSTORE_DELETE_ITEM || 0x081c || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/buyingstorerecv.cpp#L230 BuyingStoreRecv::processBuyingStoreDeleteItem] || 20100420 || const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>const int amount = msg.readInt16("amount");<br>msg.readInt32("price");
|-
|-
| SMSG_BUYINGSTORE_SELL_FAILED || 0x081a || 4 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/buyingstorerecv.cpp#L166 BuyingStoreRecv::processBuyingStoreSellFailed] || 20100420 || const int16_t result = msg.readInt16("result");
| SMSG_BUYINGSTORE_SELL_FAILED || 0x081a || 4 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/buyingstorerecv.cpp#L166 BuyingStoreRecv::processBuyingStoreSellFailed] || 20100420 || const int16_t result = msg.readInt16("result");
|-
|-
| SMSG_BUYINGSTORE_SHOW_BOARD || 0x0814 || 86 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/buyingstorerecv.cpp#L100 BuyingStoreRecv::processBuyingStoreShowBoard] || 20100420 || const BeingId id = msg.readBeingId("owner id");<br>dstBeing->setBuyBoard(msg.readString(80, "shop name"));<br>msg.readString(80, "shop name");
| SMSG_BUYINGSTORE_SHOW_BOARD || 0x0814 || 86 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/buyingstorerecv.cpp#L100 BuyingStoreRecv::processBuyingStoreShowBoard] || 20100420 || const BeingId id = msg.readBeingId("owner id");<br>dstBeing->setBuyBoard(msg.readString(80, "shop name"));<br>msg.readString(80, "shop name");
|-
|-
| SMSG_BUYINGSTORE_CREATE_FAILED || 0x0812 || 8 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/buyingstorerecv.cpp#L61 BuyingStoreRecv::processBuyingStoreCreateFailed] || 20100420 || const int16_t result = msg.readInt16("result");<br>const int weight = msg.readInt32("weight");
| SMSG_BUYINGSTORE_CREATE_FAILED || 0x0812 || 8 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/buyingstorerecv.cpp#L61 BuyingStoreRecv::processBuyingStoreCreateFailed] || 20100420 || const int16_t result = msg.readInt16("result");<br>const int weight = msg.readInt32("weight");
|-
|-
| SMSG_ELEMENTAL_UPDATE_STATUS || 0x081e || 8 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/elementalrecv.cpp#L45 ElementalRecv::processElementalUpdateStatus] || 20100309 || const int sp = msg.readInt16("type");<br>const int val = msg.readInt32("value");
| SMSG_ELEMENTAL_UPDATE_STATUS || 0x081e || 8 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/elementalrecv.cpp#L45 ElementalRecv::processElementalUpdateStatus] || 20100309 || const int sp = msg.readInt16("type");<br>const int val = msg.readInt32("value");
|-
|-
| SMSG_ELEMENTAL_INFO || 0x081d || 22 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/elementalrecv.cpp#L62 ElementalRecv::processElementalInfo] || 20100309 || const BeingId id = msg.readBeingId("elemental id");<br>msg.readInt32("hp"),<br>msg.readInt32("max hp"),<br>msg.readInt32("sp"),<br>msg.readInt32("max sp"),
| SMSG_ELEMENTAL_INFO || 0x081d || 22 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/elementalrecv.cpp#L62 ElementalRecv::processElementalInfo] || 20100309 || const BeingId id = msg.readBeingId("elemental id");<br>msg.readInt32("hp"),<br>msg.readInt32("max hp"),<br>msg.readInt32("sp"),<br>msg.readInt32("max sp"),
|-
|-
| SMSG_BUYINGSTORE_ITEMS_LIST || 0x0818 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/buyingstorerecv.cpp#L131 BuyingStoreRecv::processBuyingStoreItemsList] || 20100309 || const int count = (msg.readInt16("len") - 16) / (7 + itemIdLen);<br>const BeingId id = msg.readBeingId("account id");<br>const int storeId = msg.readInt32("store id");<br>msg.readInt32("money limit");<br>const int price = msg.readInt32("price");<br>const int amount = msg.readInt16("amount");<br>msg.readUInt8("item type"));<br>const int itemId = msg.readItemId("item id");
| SMSG_BUYINGSTORE_ITEMS_LIST || 0x0818 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/buyingstorerecv.cpp#L131 BuyingStoreRecv::processBuyingStoreItemsList] || 20100309 || const int count = (msg.readInt16("len") - 16) / (7 + itemIdLen);<br>const BeingId id = msg.readBeingId("account id");<br>const int storeId = msg.readInt32("store id");<br>msg.readInt32("money limit");<br>const int price = msg.readInt32("price");<br>const int amount = msg.readInt16("amount");<br>msg.readUInt8("item type"));<br>const int itemId = msg.readItemId("item id");
|-
|-
| SMSG_BUYINGSTORE_HIDE_BOARD || 0x0816 || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/buyingstorerecv.cpp#L116 BuyingStoreRecv::processBuyingStoreHideBoard] || 20100309 || const BeingId id = msg.readBeingId("owner id");
| SMSG_BUYINGSTORE_HIDE_BOARD || 0x0816 || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/buyingstorerecv.cpp#L116 BuyingStoreRecv::processBuyingStoreHideBoard] || 20100309 || const BeingId id = msg.readBeingId("owner id");
|-
|-
| SMSG_BUYINGSTORE_OWN_ITEMS || 0x0813 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/buyingstorerecv.cpp#L82 BuyingStoreRecv::processBuyingStoreOwnItems] || 20100309 || const int count = (msg.readInt16("len") - 12) / (7 + itemIdLen);<br>msg.readBeingId("account id");<br>msg.readInt32("money limit");<br>msg.readInt32("price");<br>msg.readInt16("amount");<br>msg.readUInt8("item type");<br>msg.readItemId("item id");
| SMSG_BUYINGSTORE_OWN_ITEMS || 0x0813 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/buyingstorerecv.cpp#L82 BuyingStoreRecv::processBuyingStoreOwnItems] || 20100309 || const int count = (msg.readInt16("len") - 12) / (7 + itemIdLen);<br>msg.readBeingId("account id");<br>msg.readInt32("money limit");<br>msg.readInt32("price");<br>msg.readInt16("amount");<br>msg.readUInt8("item type");<br>msg.readItemId("item id");
|-
|-
| SMSG_BUYINGSTORE_OPEN || 0x0810 || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/buyingstorerecv.cpp#L56 BuyingStoreRecv::processBuyingStoreOpen] || 20100303 || BuyingStoreSlotsListener::distributeEvent(msg.readUInt8("slots"));
| SMSG_BUYINGSTORE_OPEN || 0x0810 || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/buyingstorerecv.cpp#L56 BuyingStoreRecv::processBuyingStoreOpen] || 20100303 || BuyingStoreSlotsListener::distributeEvent(msg.readUInt8("slots"));
|-
|-
| SMSG_PLAYER_HP || 0x080e || 14 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1343 BeingRecv::processBeingHp] || 20100126 || msg.readBeingId("being id"));<br>hp = msg.readInt32("hp");<br>maxHP = msg.readInt32("max hp");<br>hp = msg.readInt16("hp");<br>maxHP = msg.readInt16("max hp");
| SMSG_PLAYER_HP || 0x080e || 14 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1343 BeingRecv::processBeingHp] || 20100126 || msg.readBeingId("being id"));<br>hp = msg.readInt32("hp");<br>maxHP = msg.readInt32("max hp");<br>hp = msg.readInt16("hp");<br>maxHP = msg.readInt16("max hp");
|-
|-
| SMSG_BOOKING_DELETE_NOTIFY || 0x080b || 6 || nullptr || 20091229 ||  
| SMSG_BOOKING_DELETE_NOTIFY || 0x080b || 6 || nullptr || 20091229 ||  
Line 341: Line 341:
| SMSG_BOOKING_REGISTER_ACK || 0x0803 || 4 || nullptr || 20091222 ||  
| SMSG_BOOKING_REGISTER_ACK || 0x0803 || 4 || nullptr || 20091222 ||  
|-
|-
| SMSG_BATTLE_PLAY || 0x07fe || 26 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/battlegroundrecv.cpp#L77 BattleGroundRecv::processBattlePlay] || 20091201 || msg.readString(24, "battle ground name");
| SMSG_BATTLE_PLAY || 0x07fe || 26 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/battlegroundrecv.cpp#L77 BattleGroundRecv::processBattlePlay] || 20091201 || msg.readString(24, "battle ground name");
|-
|-
| SMSG_SKILL_CASTING || 0x07fb || 25 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1025 BeingRecv::processSkillCasting2] || 20091124 || const BeingId srcId = msg.readBeingId("src id");<br>const BeingId dstId = msg.readBeingId("dst id");<br>const int dstX = msg.readInt16("dst x");<br>const int dstY = msg.readInt16("dst y");<br>const int skillId = msg.readInt16("skill id");<br>msg.readInt32("element");  // +++ use different effects<br>const int castTime = msg.readInt32("cast time");<br>msg.readInt8("dispossable");
| SMSG_SKILL_CASTING || 0x07fb || 25 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1025 BeingRecv::processSkillCasting2] || 20091124 || const BeingId srcId = msg.readBeingId("src id");<br>const BeingId dstId = msg.readBeingId("dst id");<br>const int dstX = msg.readInt16("dst x");<br>const int dstY = msg.readInt16("dst y");<br>const int skillId = msg.readInt16("skill id");<br>msg.readInt32("element");  // +++ use different effects<br>const int castTime = msg.readInt32("cast time");<br>msg.readInt8("dispossable");
|-
|-
| SMSG_PLAYER_INVENTORY_REMOVE2 || 0x07fa || 8 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L598 InventoryRecv::processPlayerInventoryRemove2] || 20091117 || msg.readInt16("reason"));<br>const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>const int amount = msg.readInt16("amount");
| SMSG_PLAYER_INVENTORY_REMOVE2 || 0x07fa || 8 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L598 InventoryRecv::processPlayerInventoryRemove2] || 20091117 || msg.readInt16("reason"));<br>const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>const int amount = msg.readInt16("amount");
|-
|-
| SMSG_WHISPER || 0x0097 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L352 ChatRecv::processWhisper] || 20091104 || const int chatMsgLength = msg.readInt16("len") - packetLen;<br>std::string nick = msg.readString(24, "nick");<br>msg.readInt32("admin flag");<br>processWhisperContinue(nick, msg.readString(chatMsgLength, "message"));
| SMSG_WHISPER || 0x0097 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L352 ChatRecv::processWhisper] || 20091104 || const int chatMsgLength = msg.readInt16("len") - packetLen;<br>std::string nick = msg.readString(24, "nick");<br>msg.readInt32("admin flag");<br>processWhisperContinue(nick, msg.readString(chatMsgLength, "message"));
|-
|-
| SMSG_PLAYER_GET_EXP || 0x07f6 || 14 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/playerrecv.cpp#L238 PlayerRecv::processPlayerGetExp] || 20091027 || const BeingId id = msg.readBeingId("player id");<br>const int exp = msg.readInt32("exp amount");<br>const int stat = msg.readInt16("exp type");<br>const bool fromQuest = msg.readInt16("is from quest") != 0;
| SMSG_PLAYER_GET_EXP || 0x07f6 || 14 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/playerrecv.cpp#L238 PlayerRecv::processPlayerGetExp] || 20091027 || const BeingId id = msg.readBeingId("player id");<br>const int exp = msg.readInt32("exp amount");<br>const int stat = msg.readInt16("exp type");<br>const bool fromQuest = msg.readInt16("is from quest") != 0;
|-
|-
| SMSG_CHAR_CAPTCHA_NOT_SUPPORTED || 0x07e9 || 5 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/charserverrecv.cpp#L514 CharServerRecv::processCharCaptchaNotSupported] || 20090922 || msg.readInt16("5");<br>msg.readUInt8("1");
| SMSG_CHAR_CAPTCHA_NOT_SUPPORTED || 0x07e9 || 5 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/charserverrecv.cpp#L514 CharServerRecv::processCharCaptchaNotSupported] || 20090922 || msg.readInt16("5");<br>msg.readUInt8("1");
|-
|-
| SMSG_SKILL_ITEM_LIST_WINDOW || 0x07e3 || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/skillrecv.cpp#L561 SkillRecv::processSkillItemListWindow] || 20090922 || msg.readInt32("skill level");<br>msg.readInt32("unused");
| SMSG_SKILL_ITEM_LIST_WINDOW || 0x07e3 || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/skillrecv.cpp#L561 SkillRecv::processSkillItemListWindow] || 20090922 || msg.readInt32("skill level");<br>msg.readInt32("unused");
|-
|-
| SMSG_FORMAT_MESSAGE_SKILL || 0x07e6 || 8 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L214 ChatRecv::processFormatMessageSkill] || 20090818 || const int skillId = msg.readInt16("skill id");<br>const int msgId = msg.readInt32("msg id");
| SMSG_FORMAT_MESSAGE_SKILL || 0x07e6 || 8 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L214 ChatRecv::processFormatMessageSkill] || 20090818 || const int skillId = msg.readInt16("skill id");<br>const int msgId = msg.readInt32("msg id");
|-
|-
| SMSG_FORMAT_MESSAGE_NUMBER || 0x07e2 || 8 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L165 ChatRecv::processFormatMessageNumber] || 20090805 || const int msgId = msg.readInt16("msg id");<br>const int value = msg.readInt32("value");
| SMSG_FORMAT_MESSAGE_NUMBER || 0x07e2 || 8 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L165 ChatRecv::processFormatMessageNumber] || 20090805 || const int msgId = msg.readInt16("msg id");<br>const int value = msg.readInt32("value");
|-
|-
| SMSG_PLAYER_UPDATE_SKILL || 0x07e1 || 15 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/skillrecv.cpp#L174 SkillRecv::processSkillUpdate] || 20090715 || const int skillId = msg.readInt16("skill id");<br>msg.readInt32("inf"));<br>const int level = msg.readInt16("skill level");<br>const int sp = msg.readInt16("sp");<br>const int range = msg.readInt16("range");<br>const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
| SMSG_PLAYER_UPDATE_SKILL || 0x07e1 || 15 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/skillrecv.cpp#L174 SkillRecv::processSkillUpdate] || 20090715 || const int skillId = msg.readInt16("skill id");<br>msg.readInt32("inf"));<br>const int level = msg.readInt16("skill level");<br>const int sp = msg.readInt16("sp");<br>const int range = msg.readInt16("range");<br>const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
|-
|-
| SMSG_PARTY_SETTINGS || 0x07d8 || 8 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/partyrecv.cpp#L135 PartyRecv::processPartySettings] || 20090603 || msg.readInt32("party exp"));<br>msg.readInt8("pickup item share (&1)"));<br>msg.readInt8("get auto item share (&2)"));
| SMSG_PARTY_SETTINGS || 0x07d8 || 8 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/partyrecv.cpp#L135 PartyRecv::processPartySettings] || 20090603 || msg.readInt32("party exp"));<br>msg.readInt8("pickup item share (&1)"));<br>msg.readInt8("get auto item share (&2)"));
|-
|-
| SMSG_PLAYER_SKILL_AUTO_SPELLS || 0x01cd || 30 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/skillrecv.cpp#L531 SkillRecv::processSkillAutoSpells1] || 20090406 || msg.readInt32("skill id");
| SMSG_PLAYER_SKILL_AUTO_SPELLS || 0x01cd || 30 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/skillrecv.cpp#L531 SkillRecv::processSkillAutoSpells1] || 20090406 || msg.readInt32("skill id");
|-
|-
| SMSG_MVP_EXP || 0x010b || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L752 ChatRecv::processMVPExp] || 20090401 || msg.readInt32("exp");
| SMSG_MVP_EXP || 0x010b || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L752 ChatRecv::processMVPExp] || 20090401 || msg.readInt32("exp");
|-
|-
| SMSG_QUEST_NPC_EFFECT || 0x0446 || 14 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/questrecv.cpp#L263 QuestRecv::processNpcQuestEffect] || 20090218 || msg.readInt32("npc id");<br>msg.readInt16("x");<br>msg.readInt16("y");<br>msg.readInt16("state");<br>msg.readInt16("color");
| SMSG_QUEST_NPC_EFFECT || 0x0446 || 14 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/questrecv.cpp#L263 QuestRecv::processNpcQuestEffect] || 20090218 || msg.readInt32("npc id");<br>msg.readInt16("x");<br>msg.readInt16("y");<br>msg.readInt16("state");<br>msg.readInt16("color");
|-
|-
| SMSG_PLAYER_DELETE_SKILL || 0x0441 || 4 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/skillrecv.cpp#L230 SkillRecv::processSkillDelete] || 20081217 || const int skillId = msg.readInt16("skill id");
| SMSG_PLAYER_DELETE_SKILL || 0x0441 || 4 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/skillrecv.cpp#L230 SkillRecv::processSkillDelete] || 20081217 || const int skillId = msg.readInt16("skill id");
|-
|-
| SMSG_BEING_MILLENIUM_SHIELD || 0x0440 || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L2093 BeingRecv::processBeingMilleniumShield] || 20081217 || msg.readBeingId("account id");<br>msg.readInt16("shields");<br>msg.readInt16("unused");
| SMSG_BEING_MILLENIUM_SHIELD || 0x0440 || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L2093 BeingRecv::processBeingMilleniumShield] || 20081217 || msg.readBeingId("account id");<br>msg.readInt16("shields");<br>msg.readInt16("unused");
|-
|-
| SMSG_AUTOSHADOW_SPELL_LIST || 0x0442 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/playerrecv.cpp#L445 PlayerRecv::processPlayerAutoShadowSpellList] || 20081210 || const int count = (msg.readInt16("len") - 8) / 2;<br>msg.readInt16("skill id");
| SMSG_AUTOSHADOW_SPELL_LIST || 0x0442 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/playerrecv.cpp#L445 PlayerRecv::processPlayerAutoShadowSpellList] || 20081210 || const int count = (msg.readInt16("len") - 8) / 2;<br>msg.readInt16("skill id");
|-
|-
| SMSG_PET_STATUS || 0x01a2 || 37 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/petrecv.cpp#L143 PetRecv::processPetStatus] || 20081126 || const std::string name = msg.readString(24, "pet name");<br>msg.readUInt8("rename flag");<br>const int level = msg.readInt16("level");<br>const int hungry = msg.readInt16("hungry");<br>const int intimacy = msg.readInt16("intimacy");<br>const int equip = msg.readInt16("equip");  // look like always int16<br>info->race = msg.readInt16("class");
| SMSG_PET_STATUS || 0x01a2 || 37 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/petrecv.cpp#L143 PetRecv::processPetStatus] || 20081126 || const std::string name = msg.readString(24, "pet name");<br>msg.readUInt8("rename flag");<br>const int level = msg.readInt16("level");<br>const int hungry = msg.readInt16("hungry");<br>const int intimacy = msg.readInt16("intimacy");<br>const int equip = msg.readInt16("equip");  // look like always int16<br>info->race = msg.readInt16("class");
|-
|-
| SMSG_PLAYER_SKILL_COOLDOWN || 0x043d || 8 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/skillrecv.cpp#L246 SkillRecv::processSkillCoolDown] || 20081112 || const int skillId = msg.readInt16("skill id");<br>const int duration = msg.readInt32("duration");
| SMSG_PLAYER_SKILL_COOLDOWN || 0x043d || 8 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/skillrecv.cpp#L246 SkillRecv::processSkillCoolDown] || 20081112 || const int skillId = msg.readInt16("skill id");<br>const int duration = msg.readInt32("duration");
|-
|-
| SMSG_BEING_SPAWN_OUTDATED || 0x007c || 44 || nullptr || 20080827 ||  
| SMSG_BEING_SPAWN_OUTDATED || 0x007c || 44 || nullptr || 20080827 ||  
|-
|-
| SMSG_NPC_PROGRESS_BAR_ABORT || 0x02f2 || 2 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/npcrecv.cpp#L0 NpcRecv::processProgressBarAbort] || 20080318 ||  
| SMSG_NPC_PROGRESS_BAR_ABORT || 0x02f2 || 2 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/npcrecv.cpp#L0 NpcRecv::processProgressBarAbort] || 20080318 ||  
|-
|-
| SMSG_NPC_SHOW_PROGRESS_BAR || 0x02f0 || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/npcrecv.cpp#L80 NpcRecv::processNpcShowProgressBar] || 20080318 || msg.readInt32("color");<br>msg.readInt32("seconds");
| SMSG_NPC_SHOW_PROGRESS_BAR || 0x02f0 || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/npcrecv.cpp#L80 NpcRecv::processNpcShowProgressBar] || 20080318 || msg.readInt32("color");<br>msg.readInt32("seconds");
|-
|-
| SMSG_BEING_FONT || 0x02ef || 8 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L2085 BeingRecv::processBeingFont] || 20080102 || msg.readBeingId("account id");<br>msg.readInt16("font");
| SMSG_BEING_FONT || 0x02ef || 8 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L2085 BeingRecv::processBeingFont] || 20080102 || msg.readBeingId("account id");<br>msg.readInt16("font");
|-
|-
| SMSG_MERCENARY_INFO || 0x029b || 80 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/mercenaryrecv.cpp#L85 MercenaryRecv::processMercenaryInfo] || 20071106 || msg.readBeingId("being id"));<br>msg.readInt16("atk"),<br>msg.readInt16("matk"),<br>msg.readInt16("hit"),<br>msg.readInt16("crit/10"),<br>msg.readInt16("def"),<br>msg.readInt16("mdef"),<br>msg.readInt16("flee"),<br>msg.readInt16("attack speed"),<br>const std::string name = msg.readString(24, "name");<br>const int level = msg.readInt16("level");<br>msg.readInt32("hp"),<br>msg.readInt32("max hp"),<br>msg.readInt32("sp"),<br>msg.readInt32("max sp"),<br>msg.readInt32("expire time"),<br>msg.readInt16("faith"),<br>msg.readInt32("calls"),<br>msg.readInt32("kills"),<br>const int range = msg.readInt16("attack range");
| SMSG_MERCENARY_INFO || 0x029b || 80 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/mercenaryrecv.cpp#L85 MercenaryRecv::processMercenaryInfo] || 20071106 || msg.readBeingId("being id"));<br>msg.readInt16("atk"),<br>msg.readInt16("matk"),<br>msg.readInt16("hit"),<br>msg.readInt16("crit/10"),<br>msg.readInt16("def"),<br>msg.readInt16("mdef"),<br>msg.readInt16("flee"),<br>msg.readInt16("attack speed"),<br>const std::string name = msg.readString(24, "name");<br>const int level = msg.readInt16("level");<br>msg.readInt32("hp"),<br>msg.readInt32("max hp"),<br>msg.readInt32("sp"),<br>msg.readInt32("max sp"),<br>msg.readInt32("expire time"),<br>msg.readInt16("faith"),<br>msg.readInt32("calls"),<br>msg.readInt32("kills"),<br>const int range = msg.readInt16("attack range");
|-
|-
| SMSG_BEING_FAKE_NAME || 0x0078 || 55 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1837 BeingRecv::processBeingFakeName] || 20071106 || msg.readBeingId("npc id");<br>msg.readInt16("class?");  // 111<br>msg.readCoordinates(x, y, dir, "position");<br>msg.readUInt8("sx");<br>msg.readUInt8("sy");<br>msg.readUInt8("object type"));<br>const BeingId id = msg.readBeingId("npc id");<br>const uint16_t job = msg.readInt16("class?");  // 111<br>msg.readCoordinates(x, y, dir, "position");<br>msg.readUInt8("sx");<br>msg.readUInt8("sy");
| SMSG_BEING_FAKE_NAME || 0x0078 || 55 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1837 BeingRecv::processBeingFakeName] || 20071106 || msg.readBeingId("npc id");<br>msg.readInt16("class?");  // 111<br>msg.readCoordinates(x, y, dir, "position");<br>msg.readUInt8("sx");<br>msg.readUInt8("sy");<br>msg.readUInt8("object type"));<br>const BeingId id = msg.readBeingId("npc id");<br>const uint16_t job = msg.readInt16("class?");  // 111<br>msg.readCoordinates(x, y, dir, "position");<br>msg.readUInt8("sx");<br>msg.readUInt8("sy");
|-
|-
| SMSG_INSTANCE_INFO || 0x02cd || 71 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/maprecv.cpp#L48 MapRecv::processInstanceInfo] || 20071023 || msg.readString(61, "instance name");<br>msg.readInt32("remaining time");<br>msg.readInt32("no players close time");
| SMSG_INSTANCE_INFO || 0x02cd || 71 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/maprecv.cpp#L48 MapRecv::processInstanceInfo] || 20071023 || msg.readString(61, "instance name");<br>msg.readInt32("remaining time");<br>msg.readInt32("no players close time");
|-
|-
| SMSG_INSTANCE_START || 0x02cb || 65 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/maprecv.cpp#L35 MapRecv::processInstanceStart] || 20071023 || msg.readString(61, "instance name");<br>msg.readInt16("flag");
| SMSG_INSTANCE_START || 0x02cb || 65 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/maprecv.cpp#L35 MapRecv::processInstanceStart] || 20071023 || msg.readString(61, "instance name");<br>msg.readInt16("flag");
|-
|-
| SMSG_PARTY_ITEM_PICKUP || 0x02b8 || 22 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/partyrecv.cpp#L368 PartyRecv::processPartyItemPickup] || 20071002 || msg.readBeingId("account id");<br>msg.readItemId("item id");<br>msg.readUInt8("identify");<br>msg.readUInt8("attribute");<br>msg.readUInt8("refine");<br>msg.readItemId("card");<br>msg.readInt16("equip location");<br>msg.readUInt8("item type");
| SMSG_PARTY_ITEM_PICKUP || 0x02b8 || 22 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/partyrecv.cpp#L368 PartyRecv::processPartyItemPickup] || 20071002 || msg.readBeingId("account id");<br>msg.readItemId("item id");<br>msg.readUInt8("identify");<br>msg.readUInt8("attribute");<br>msg.readUInt8("refine");<br>msg.readItemId("card");<br>msg.readInt16("equip location");<br>msg.readUInt8("item type");
|-
|-
| SMSG_PARTY_INVITED || 0x02c6 || 30 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/partyrecv.cpp#L396 PartyRecv::processPartyInvited] || 20070821 || msg.readInt32("party id");<br>msg.readString(24, "party name");<br>const int id = msg.readInt32("party id");<br>const std::string partyName = msg.readString(24, "party name");
| SMSG_PARTY_INVITED || 0x02c6 || 30 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/partyrecv.cpp#L396 PartyRecv::processPartyInvited] || 20070821 || msg.readInt32("party id");<br>msg.readString(24, "party name");<br>const int id = msg.readInt32("party id");<br>const std::string partyName = msg.readString(24, "party name");
|-
|-
| SMSG_PARTY_INVITE_RESPONSE || 0x02c5 || 30 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/partyrecv.cpp#L326 PartyRecv::processPartyInviteResponse] || 20070821 || const std::string nick = msg.readString(24, "nick");<br>switch (msg.readInt32("result"))
| SMSG_PARTY_INVITE_RESPONSE || 0x02c5 || 30 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/partyrecv.cpp#L326 PartyRecv::processPartyInviteResponse] || 20070821 || const std::string nick = msg.readString(24, "nick");<br>switch (msg.readInt32("result"))
|-
|-
| SMSG_PARTY_INVITATION_STATS || 0x02c9 || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/partyrecv.cpp#L58 PartyRecv::processPartyInvitationStats] || 20070227 || msg.readUInt8("allow party");
| SMSG_PARTY_INVITATION_STATS || 0x02c9 || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/partyrecv.cpp#L58 PartyRecv::processPartyInvitationStats] || 20070227 || msg.readUInt8("allow party");
|-
|-
| SMSG_BATTLE_UPDATE_COORDS || 0x02df || 36 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/battlegroundrecv.cpp#L67 BattleGroundRecv::processBattleUpdateCoords] || 20070227 || msg.readBeingId("account id");<br>msg.readString(24, "name");<br>msg.readInt16("class");<br>msg.readInt16("x");<br>msg.readInt16("y");
| SMSG_BATTLE_UPDATE_COORDS || 0x02df || 36 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/battlegroundrecv.cpp#L67 BattleGroundRecv::processBattleUpdateCoords] || 20070227 || msg.readBeingId("account id");<br>msg.readString(24, "name");<br>msg.readInt16("class");<br>msg.readInt16("x");<br>msg.readInt16("y");
|-
|-
| SMSG_BATTLE_UPDATE_SCORE || 0x02de || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/battlegroundrecv.cpp#L60 BattleGroundRecv::processBattleUpdateScore] || 20070227 || msg.readInt16("camp a points");<br>msg.readInt16("camp b points");
| SMSG_BATTLE_UPDATE_SCORE || 0x02de || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/battlegroundrecv.cpp#L60 BattleGroundRecv::processBattleUpdateScore] || 20070227 || msg.readInt16("camp a points");<br>msg.readInt16("camp b points");
|-
|-
| SMSG_BATTLE_EMBLEM || 0x02dd || 32 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/battlegroundrecv.cpp#L38 BattleGroundRecv::processBattleEmblem] || 20070227 || msg.readBeingId("account id");<br>msg.readString(24, "name");<br>msg.readInt16("bg id");
| SMSG_BATTLE_EMBLEM || 0x02dd || 32 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/battlegroundrecv.cpp#L38 BattleGroundRecv::processBattleEmblem] || 20070227 || msg.readBeingId("account id");<br>msg.readString(24, "name");<br>msg.readInt16("bg id");
|-
|-
| SMSG_BATTLE_CHAT_MESSAGE || 0x02dc || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L808 ChatRecv::processBattleChatMessage] || 20070227 || const int sz = msg.readInt16("len") - 24 - 8;<br>msg.readBeingId("account id");<br>msg.readString(24, "nick");<br>msg.readString(sz, "message");
| SMSG_BATTLE_CHAT_MESSAGE || 0x02dc || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L808 ChatRecv::processBattleChatMessage] || 20070227 || const int sz = msg.readInt16("len") - 24 - 8;<br>msg.readBeingId("account id");<br>msg.readString(24, "nick");<br>msg.readString(sz, "message");
|-
|-
| SMSG_PLAYER_SHOW_EQUIP || 0x02da || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/playerrecv.cpp#L97 PlayerRecv::processPlayerShowEquip] || 20070227 || msg.readUInt8("show equip");  // 1 mean need open "equipment" window
| SMSG_PLAYER_SHOW_EQUIP || 0x02da || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/playerrecv.cpp#L97 PlayerRecv::processPlayerShowEquip] || 20070227 || msg.readUInt8("show equip");  // 1 mean need open "equipment" window
|-
|-
| SMSG_PLAYER_ZC_CONFIG || 0x02d9 || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/playerrecv.cpp#L438 PlayerRecv::processPlayerZCConfig] || 20070227 || msg.readInt32("type");<br>msg.readInt32("flag");
| SMSG_PLAYER_ZC_CONFIG || 0x02d9 || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/playerrecv.cpp#L438 PlayerRecv::processPlayerZCConfig] || 20070227 || msg.readInt32("type");<br>msg.readInt32("flag");
|-
|-
| SMSG_INSTANCE_DELETE || 0x02ce || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/maprecv.cpp#L56 MapRecv::processInstanceDelete] || 20070227 || msg.readInt32("flag");<br>msg.readInt32("unused");
| SMSG_INSTANCE_DELETE || 0x02ce || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/maprecv.cpp#L56 MapRecv::processInstanceDelete] || 20070227 || msg.readInt32("flag");<br>msg.readInt32("unused");
|-
|-
| SMSG_INSTANCE_CREATE || 0x02cc || 4 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/maprecv.cpp#L42 MapRecv::processInstanceCreate] || 20070227 || msg.readInt16("flag");
| SMSG_INSTANCE_CREATE || 0x02cc || 4 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/maprecv.cpp#L42 MapRecv::processInstanceCreate] || 20070227 || msg.readInt16("flag");
|-
|-
| SMSG_COLOR_MESSAGE || 0x02c1 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L225 ChatRecv::processColorChat] || 20070227 || int chatMsgLength = msg.readInt16("len") - 4;<br>msg.readInt32("unused");<br>msg.readInt32("chat color");<br>std::string message = msg.readRawString(chatMsgLength, "message");
| SMSG_COLOR_MESSAGE || 0x02c1 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L225 ChatRecv::processColorChat] || 20070227 || int chatMsgLength = msg.readInt16("len") - 4;<br>msg.readInt32("unused");<br>msg.readInt32("chat color");<br>std::string message = msg.readRawString(chatMsgLength, "message");
|-
|-
| SMSG_ITEM_DAMAGED || 0x02bb || 8 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1340 InventoryRecv::processItemDamaged] || 20070227 || msg.readInt16("position");<br>msg.readBeingId("account id");
| SMSG_ITEM_DAMAGED || 0x02bb || 8 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1340 InventoryRecv::processItemDamaged] || 20070227 || msg.readInt16("position");<br>msg.readBeingId("account id");
|-
|-
| SMSG_QUEST_ACTIVATE || 0x02b7 || 7 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/questrecv.cpp#L254 QuestRecv::processActivateQuest] || 20070227 || msg.readInt32("quest id");<br>msg.readUInt8("activate");
| SMSG_QUEST_ACTIVATE || 0x02b7 || 7 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/questrecv.cpp#L254 QuestRecv::processActivateQuest] || 20070227 || msg.readInt32("quest id");<br>msg.readUInt8("activate");
|-
|-
| SMSG_QUEST_REMOVE || 0x02b4 || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/questrecv.cpp#L233 QuestRecv::processRemoveQuest] || 20070227 || const int var = msg.readInt32("quest id");
| SMSG_QUEST_REMOVE || 0x02b4 || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/questrecv.cpp#L233 QuestRecv::processRemoveQuest] || 20070227 || const int var = msg.readInt32("quest id");
|-
|-
| SMSG_QUEST_LIST_OBJECTIVES || 0x02b2 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/questrecv.cpp#L173 QuestRecv::processAddQuestsObjectives] || 20070227 || msg.readInt16("len");<br>const int quests = msg.readInt32("quests count");<br>msg.readInt32("quest id");<br>msg.readInt32("time diff");<br>msg.readInt32("time");<br>const int num = msg.readInt16("objectives count");<br>msg.readInt32("monster id");<br>msg.readInt16("count");<br>msg.readString(24, "monster name");
| SMSG_QUEST_LIST_OBJECTIVES || 0x02b2 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/questrecv.cpp#L173 QuestRecv::processAddQuestsObjectives] || 20070227 || msg.readInt16("len");<br>const int quests = msg.readInt32("quests count");<br>msg.readInt32("quest id");<br>msg.readInt32("time diff");<br>msg.readInt32("time");<br>const int num = msg.readInt16("objectives count");<br>msg.readInt32("monster id");<br>msg.readInt16("count");<br>msg.readString(24, "monster name");
|-
|-
| SMSG_NPC_CASH_BUY_ACK || 0x0289 || 12 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/cashshoprecv.cpp#L104 CashShopRecv::processCashShopBuyAck] || 20070227 || msg.readInt32("cash points");<br>msg.readInt32("kafra points");<br>const uint16_t res = msg.readInt16("error");
| SMSG_NPC_CASH_BUY_ACK || 0x0289 || 12 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/cashshoprecv.cpp#L104 CashShopRecv::processCashShopBuyAck] || 20070227 || msg.readInt32("cash points");<br>msg.readInt32("kafra points");<br>const uint16_t res = msg.readInt16("error");
|-
|-
| SMSG_MERCENARY_UPDATE || 0x02a2 || 8 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/mercenaryrecv.cpp#L54 MercenaryRecv::processMercenaryUpdate] || 20060424 || const int sp = msg.readInt16("type");<br>const int val = msg.readInt32("value");
| SMSG_MERCENARY_UPDATE || 0x02a2 || 8 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/mercenaryrecv.cpp#L54 MercenaryRecv::processMercenaryUpdate] || 20060424 || const int sp = msg.readInt16("type");<br>const int val = msg.readInt32("value");
|-
|-
| SMSG_MERCENARY_SKILLS || 0x029d || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/mercenaryrecv.cpp#L161 MercenaryRecv::processMercenarySkills] || 20060424 || const int count = (msg.readInt16("len") - 4) / 37;<br>const int skillId = msg.readInt16("skill id");<br>msg.readInt32("inf"));<br>const int level = msg.readInt16("skill level");<br>const int sp = msg.readInt16("sp");<br>const int range = msg.readInt16("range");<br>const std::string name = msg.readString(24, "skill name");<br>const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
| SMSG_MERCENARY_SKILLS || 0x029d || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/mercenaryrecv.cpp#L161 MercenaryRecv::processMercenarySkills] || 20060424 || const int count = (msg.readInt16("len") - 4) / 37;<br>const int skillId = msg.readInt16("skill id");<br>msg.readInt32("inf"));<br>const int level = msg.readInt16("skill level");<br>const int sp = msg.readInt16("sp");<br>const int range = msg.readInt16("range");<br>const std::string name = msg.readString(24, "skill name");<br>const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
|-
|-
| SMSG_PLAYER_ITEM_RENTAL_EXPIRED || 0x0299 || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L887 InventoryRecv::processPlayerItemRentalExpired] || 20060424 || const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>const int id = msg.readItemId("item id");
| SMSG_PLAYER_ITEM_RENTAL_EXPIRED || 0x0299 || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L887 InventoryRecv::processPlayerItemRentalExpired] || 20060424 || const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>const int id = msg.readItemId("item id");
|-
|-
| SMSG_PLAYER_ITEM_RENTAL_TIME || 0x0298 || 8 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L872 InventoryRecv::processPlayerItemRentalTime] || 20060424 || const int id = msg.readItemId("item id");<br>const int seconds = msg.readInt32("seconds");
| SMSG_PLAYER_ITEM_RENTAL_TIME || 0x0298 || 8 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L872 InventoryRecv::processPlayerItemRentalTime] || 20060424 || const int id = msg.readItemId("item id");<br>const int seconds = msg.readInt32("seconds");
|-
|-
| SMSG_PLAYER_READ_BOOK || 0x0294 || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/playerrecv.cpp#L431 PlayerRecv::processPlayerReadBook] || 20060424 || msg.readInt32("book id");<br>msg.readInt32("page");
| SMSG_PLAYER_READ_BOOK || 0x0294 || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/playerrecv.cpp#L431 PlayerRecv::processPlayerReadBook] || 20060424 || msg.readInt32("book id");<br>msg.readInt32("page");
|-
|-
| SMSG_BOSS_MAP_INFO || 0x0293 || 70 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L2071 BeingRecv::processBossMapInfo] || 20060424 || msg.readUInt8("info type");<br>msg.readInt32("x");<br>msg.readInt32("y");<br>msg.readInt16("min hours");<br>msg.readInt16("min minutes");<br>msg.readInt16("max hours");<br>msg.readInt16("max minutes");<br>msg.readString(24, "monster name");  // really can be used 51 byte?
| SMSG_BOSS_MAP_INFO || 0x0293 || 70 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L2071 BeingRecv::processBossMapInfo] || 20060424 || msg.readUInt8("info type");<br>msg.readInt32("x");<br>msg.readInt32("y");<br>msg.readInt16("min hours");<br>msg.readInt16("min minutes");<br>msg.readInt16("max hours");<br>msg.readInt16("max minutes");<br>msg.readString(24, "monster name");  // really can be used 51 byte?
|-
|-
| SMSG_FORMAT_MESSAGE || 0x0291 || 4 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L126 ChatRecv::processFormatMessage] || 20060424 || const int msgId = msg.readInt16("msg id");
| SMSG_FORMAT_MESSAGE || 0x0291 || 4 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L126 ChatRecv::processFormatMessage] || 20060424 || const int msgId = msg.readInt16("msg id");
|-
|-
| SMSG_PLAYER_STATUS_CHANGE2 || 0x028a || 18 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1644 BeingRecv::processPlayerStatusChange2] || 20060424 || const BeingId id = msg.readBeingId("account id");<br>const uint32_t option = msg.readInt32("option");<br>dstBeing->setLevel(msg.readInt32("level"));<br>msg.readInt32("showEFST");
| SMSG_PLAYER_STATUS_CHANGE2 || 0x028a || 18 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1644 BeingRecv::processPlayerStatusChange2] || 20060424 || const BeingId id = msg.readBeingId("account id");<br>const uint32_t option = msg.readInt32("option");<br>dstBeing->setLevel(msg.readInt32("level"));<br>msg.readInt32("showEFST");
|-
|-
| SMSG_NPC_CASH_SHOP_OPEN || 0x0287 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/cashshoprecv.cpp#L61 CashShopRecv::processCashShopOpen] || 20060424 || count = (msg.readInt16("len") - 12) / blockSize;<br>count = (msg.readInt16("len") - 8) / blockSize;<br>const int points = msg.readInt32("cash points");<br>msg.readInt32("kafra points");<br>msg.readInt32("price");<br>const int value = msg.readInt32("discount price");<br>msg.readUInt8("item type"));<br>const int itemId = msg.readItemId("item id");
| SMSG_NPC_CASH_SHOP_OPEN || 0x0287 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/cashshoprecv.cpp#L61 CashShopRecv::processCashShopOpen] || 20060424 || count = (msg.readInt16("len") - 12) / blockSize;<br>count = (msg.readInt16("len") - 8) / blockSize;<br>const int points = msg.readInt32("cash points");<br>msg.readInt32("kafra points");<br>msg.readInt32("price");<br>const int value = msg.readInt32("discount price");<br>msg.readUInt8("item type"));<br>const int itemId = msg.readItemId("item id");
|-
|-
| SMSG_BEING_SPECIAL_EFFECT_NUM || 0x0284 || 14 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1543 BeingRecv::processBeingSpecialEffectNum] || 20060424 || msg.readBeingId("account id");<br>msg.readInt32("effect type");<br>msg.readInt32("num");  // effect variable
| SMSG_BEING_SPECIAL_EFFECT_NUM || 0x0284 || 14 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1543 BeingRecv::processBeingSpecialEffectNum] || 20060424 || msg.readBeingId("account id");<br>msg.readInt32("effect type");<br>msg.readInt32("num");  // effect variable
|-
|-
| SMSG_MAP_ACCOUNT_ID || 0x0283 || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/gamerecv.cpp#L44 GameRecv::processMapAccountId] || 20060424 || msg.readBeingId("account id");
| SMSG_MAP_ACCOUNT_ID || 0x0283 || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/gamerecv.cpp#L44 GameRecv::processMapAccountId] || 20060424 || msg.readBeingId("account id");
|-
|-
| SMSG_MAIL_RETURN || 0x0274 || 8 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/mailrecv.cpp#L238 MailRecv::processMailReturn] || 20060306 || const int mail = msg.readInt32("message id");<br>const int flag = msg.readInt16("fail flag");
| SMSG_MAIL_RETURN || 0x0274 || 8 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/mailrecv.cpp#L238 MailRecv::processMailReturn] || 20060306 || const int mail = msg.readInt32("message id");<br>const int flag = msg.readInt16("fail flag");
|-
|-
| SMSG_MAIL_OPEN_WINDOW || 0x0260 || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/mailrecv.cpp#L51 MailRecv::processMailOpen] || 20051024 || const int flag = msg.readInt32("flag");
| SMSG_MAIL_OPEN_WINDOW || 0x0260 || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/mailrecv.cpp#L51 MailRecv::processMailOpen] || 20051024 || const int flag = msg.readInt32("flag");
|-
|-
| SMSG_AUCTION_OPEN_WINDOW || 0x025f || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/auctionrecv.cpp#L37 AuctionRecv::processOpenWindow] || 20051024 || msg.readInt32("flag");  // 0 - open, 1 - close
| SMSG_AUCTION_OPEN_WINDOW || 0x025f || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/auctionrecv.cpp#L37 AuctionRecv::processOpenWindow] || 20051024 || msg.readInt32("flag");  // 0 - open, 1 - close
|-
|-
| SMSG_AUCTION_CLOSE || 0x025d || 4 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/auctionrecv.cpp#L82 AuctionRecv::processAuctionClose] || 20051017 || msg.readInt16("flag");
| SMSG_AUCTION_CLOSE || 0x025d || 4 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/auctionrecv.cpp#L82 AuctionRecv::processAuctionClose] || 20051017 || msg.readInt16("flag");
|-
|-
| SMSG_PLAYER_COOKING_LIST || 0x025a || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1330 InventoryRecv::processPlayerCookingList] || 20051010 || const int count = (msg.readInt16("len") - 6) / itemIdLen;<br>msg.readInt16("list type");<br>msg.readItemId("item id");
| SMSG_PLAYER_COOKING_LIST || 0x025a || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1330 InventoryRecv::processPlayerCookingList] || 20051010 || const int count = (msg.readInt16("len") - 6) / itemIdLen;<br>msg.readInt16("list type");<br>msg.readItemId("item id");
|-
|-
| SMSG_STARS_KILL || 0x020e || 32 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L2054 BeingRecv::processStarsKill] || 20051010 || msg.readString(24, "map name");<br>msg.readInt32("monster id");<br>msg.readUInt8("start");<br>msg.readUInt8("result");
| SMSG_STARS_KILL || 0x020e || 32 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L2054 BeingRecv::processStarsKill] || 20051010 || msg.readString(24, "map name");<br>msg.readInt32("monster id");<br>msg.readUInt8("start");<br>msg.readUInt8("result");
|-
|-
| SMSG_AUCTION_SET_ITEM || 0x0256 || 5 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/auctionrecv.cpp#L69 AuctionRecv::processAuctionSetItem] || 20050912 || msg.readInt16("index");<br>msg.readUInt8("flag");
| SMSG_AUCTION_SET_ITEM || 0x0256 || 5 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/auctionrecv.cpp#L69 AuctionRecv::processAuctionSetItem] || 20050912 || msg.readInt16("index");<br>msg.readUInt8("flag");
|-
|-
| SMSG_MAIL_DELETE_MAIL_ACK || 0x0257 || 8 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/mailrecv.cpp#L223 MailRecv::processDeleteAck] || 20050829 || const int mail = msg.readInt32("message id");<br>const int flag = msg.readInt16("fail flag");
| SMSG_MAIL_DELETE_MAIL_ACK || 0x0257 || 8 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/mailrecv.cpp#L223 MailRecv::processDeleteAck] || 20050829 || const int mail = msg.readInt32("message id");<br>const int flag = msg.readInt16("fail flag");
|-
|-
| SMSG_MAIL_SET_ATTACHMENT_ACK || 0x0255 || 5 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/mailrecv.cpp#L210 MailRecv::processSetAttachmentAck] || 20050829 || const int index = msg.readInt16("index");<br>const int flag = msg.readUInt8("flag");
| SMSG_MAIL_SET_ATTACHMENT_ACK || 0x0255 || 5 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/mailrecv.cpp#L210 MailRecv::processSetAttachmentAck] || 20050829 || const int index = msg.readInt16("index");<br>const int flag = msg.readUInt8("flag");
|-
|-
| SMSG_MAIL_MAILS_LIST || 0x0240 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/mailrecv.cpp#L79 MailRecv::processMailList] || 20050829 || const int count = (msg.readInt16("len") - 8) / 73;<br>const int amount = msg.readInt32("amount");<br>mail->id = msg.readInt32("message id");<br>mail->title = msg.readString(40, "title");<br>mail->read = msg.readUInt8("unread flag") != 0U ? true : false;<br>mail->sender = msg.readString(24, "sender name");<br>mail->time = msg.readInt32("time stamp");
| SMSG_MAIL_MAILS_LIST || 0x0240 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/mailrecv.cpp#L79 MailRecv::processMailList] || 20050829 || const int count = (msg.readInt16("len") - 8) / 73;<br>const int amount = msg.readInt32("amount");<br>mail->id = msg.readInt32("message id");<br>mail->title = msg.readString(40, "title");<br>mail->read = msg.readUInt8("unread flag") != 0U ? true : false;<br>mail->sender = msg.readString(24, "sender name");<br>mail->time = msg.readInt32("time stamp");
|-
|-
| SMSG_GLADIATOR_FEEL_REQUEST || 0x0253 || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L2064 BeingRecv::processGladiatorFeelRequest] || 20050817 || msg.readUInt8("which");
| SMSG_GLADIATOR_FEEL_REQUEST || 0x0253 || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L2064 BeingRecv::processGladiatorFeelRequest] || 20050817 || msg.readUInt8("which");
|-
|-
| SMSG_MAIL_GET_ATTACHMENT || 0x0245 || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/mailrecv.cpp#L161 MailRecv::processGetAttachment] || 20050801 || const uint8_t flag = msg.readUInt8("flag");
| SMSG_MAIL_GET_ATTACHMENT || 0x0245 || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/mailrecv.cpp#L161 MailRecv::processGetAttachment] || 20050801 || const uint8_t flag = msg.readUInt8("flag");
|-
|-
| SMSG_AUCTION_RESULTS || 0x0252 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/auctionrecv.cpp#L43 AuctionRecv::processAuctionResults] || 20050718 || msg.readInt16("len");<br>msg.readInt32("pages");<br>const int itemCount = msg.readInt32("items count");<br>msg.readInt32("auction id");<br>msg.readString(24, "seller name");<br>msg.readInt16("item id");  // here item always 16 bit<br>msg.readInt32("auction type");<br>msg.readInt16("item amount");  // always 1<br>msg.readUInt8("identify");<br>msg.readUInt8("attribute");<br>msg.readUInt8("refine");<br>msg.readUInt16("card");  // here item always 16 bit<br>msg.readInt32("price");<br>msg.readInt32("buy now");<br>msg.readString(24, "buyer name");<br>msg.readInt32("timestamp");
| SMSG_AUCTION_RESULTS || 0x0252 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/auctionrecv.cpp#L43 AuctionRecv::processAuctionResults] || 20050718 || msg.readInt16("len");<br>msg.readInt32("pages");<br>const int itemCount = msg.readInt32("items count");<br>msg.readInt32("auction id");<br>msg.readString(24, "seller name");<br>msg.readInt16("item id");  // here item always 16 bit<br>msg.readInt32("auction type");<br>msg.readInt16("item amount");  // always 1<br>msg.readUInt8("identify");<br>msg.readUInt8("attribute");<br>msg.readUInt8("refine");<br>msg.readUInt16("card");  // here item always 16 bit<br>msg.readInt32("price");<br>msg.readInt32("buy now");<br>msg.readString(24, "buyer name");<br>msg.readInt32("timestamp");
|-
|-
| SMSG_AUCTION_MESSAGE || 0x0250 || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/auctionrecv.cpp#L76 AuctionRecv::processAuctionMessage] || 20050718 || msg.readUInt8("message");
| SMSG_AUCTION_MESSAGE || 0x0250 || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/auctionrecv.cpp#L76 AuctionRecv::processAuctionMessage] || 20050718 || msg.readUInt8("message");
|-
|-
| SMSG_MAIL_NEW_MAIL || 0x024a || 70 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/mailrecv.cpp#L198 MailRecv::processNewMail] || 20050718 || msg.readInt32("message id");<br>const std::string subj = msg.readString(40, "title");<br>const std::string sender = msg.readString(24, "sender name");
| SMSG_MAIL_NEW_MAIL || 0x024a || 70 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/mailrecv.cpp#L198 MailRecv::processNewMail] || 20050718 || msg.readInt32("message id");<br>const std::string subj = msg.readString(40, "title");<br>const std::string sender = msg.readString(24, "sender name");
|-
|-
| SMSG_MAIL_SEND_MAIL_ACK || 0x0249 || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/mailrecv.cpp#L181 MailRecv::processSendMailAck] || 20050718 || const uint8_t flag = msg.readUInt8("fail flag");
| SMSG_MAIL_SEND_MAIL_ACK || 0x0249 || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/mailrecv.cpp#L181 MailRecv::processSendMailAck] || 20050718 || const uint8_t flag = msg.readUInt8("fail flag");
|-
|-
| SMSG_MAIL_READ_MAIL || 0x0242 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/mailrecv.cpp#L99 MailRecv::processReadMail] || 20050718 || const int sz = msg.readInt16("len") - 101;<br>mail->id = msg.readInt32("message id");<br>mail->title = msg.readString(40, "title");<br>mail->sender = msg.readString(24, "sender name");<br>msg.readInt32("unused");<br>mail->money = msg.readInt32("money");<br>const int amount = msg.readInt32("item amount");<br>const int itemId = msg.readInt16("item id");<br>msg.readInt16("item type"));<br>const uint8_t identify = msg.readUInt8("identify");<br>const Damaged damaged = fromBool(msg.readUInt8("attribute"), Damaged);<br>const uint8_t refine = msg.readUInt8("refine");<br>cards[d] = msg.readUInt16("card");<br>const int msgLen = msg.readUInt8("msg len");<br>mail->text = msg.readString(sz, "message");<br>msg.readUInt8("zero");
| SMSG_MAIL_READ_MAIL || 0x0242 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/mailrecv.cpp#L99 MailRecv::processReadMail] || 20050718 || const int sz = msg.readInt16("len") - 101;<br>mail->id = msg.readInt32("message id");<br>mail->title = msg.readString(40, "title");<br>mail->sender = msg.readString(24, "sender name");<br>msg.readInt32("unused");<br>mail->money = msg.readInt32("money");<br>const int amount = msg.readInt32("item amount");<br>const int itemId = msg.readInt16("item id");<br>msg.readInt16("item type"));<br>const uint8_t identify = msg.readUInt8("identify");<br>const Damaged damaged = fromBool(msg.readUInt8("attribute"), Damaged);<br>const uint8_t refine = msg.readUInt8("refine");<br>cards[d] = msg.readUInt16("card");<br>const int msgLen = msg.readUInt8("msg len");<br>mail->text = msg.readString(sz, "message");<br>msg.readUInt8("zero");
|-
|-
| SMSG_PLAYER_STORAGE_PASSWORD_RESULT || 0x023c || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1322 InventoryRecv::processPlayerStoragePasswordResult] || 20050608 || msg.readInt16("result");<br>msg.readInt16("error count");
| SMSG_PLAYER_STORAGE_PASSWORD_RESULT || 0x023c || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1322 InventoryRecv::processPlayerStoragePasswordResult] || 20050608 || msg.readInt16("result");<br>msg.readInt16("error count");
|-
|-
| SMSG_PLAYER_STORAGE_PASSWORD || 0x023a || 4 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1315 InventoryRecv::processPlayerStoragePassword] || 20050608 || msg.readInt16("info");
| SMSG_PLAYER_STORAGE_PASSWORD || 0x023a || 4 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1315 InventoryRecv::processPlayerStoragePassword] || 20050608 || msg.readInt16("info");
|-
|-
| SMSG_HOMUNCULUS_FOOD || 0x022f || 5 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/homunculusrecv.cpp#L372 HomunculusRecv::processHomunculusFood] || 20050608 || const int flag = msg.readUInt8("fail");<br>const int itemId = msg.readItemId("food id");
| SMSG_HOMUNCULUS_FOOD || 0x022f || 5 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/homunculusrecv.cpp#L372 HomunculusRecv::processHomunculusFood] || 20050608 || const int flag = msg.readUInt8("fail");<br>const int itemId = msg.readItemId("food id");
|-
|-
| SMSG_HOMUNCULUS_SKILL_UP || 0x0239 || 11 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/homunculusrecv.cpp#L349 HomunculusRecv::processHomunculusSkillUp] || 20050531 || const int skillId = msg.readInt16("skill id");<br>const int level = msg.readInt16("level");<br>const int sp = msg.readInt16("sp");<br>const int range = msg.readInt16("range");<br>const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
| SMSG_HOMUNCULUS_SKILL_UP || 0x0239 || 11 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/homunculusrecv.cpp#L349 HomunculusRecv::processHomunculusSkillUp] || 20050531 || const int skillId = msg.readInt16("skill id");<br>const int level = msg.readInt16("level");<br>const int sp = msg.readInt16("sp");<br>const int range = msg.readInt16("range");<br>const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
|-
|-
| SMSG_PK_RANKS_LIST || 0x0238 || 282 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1457 BeingRecv::processPkRanksList] || 20050530 || msg.readString(24, "name");<br>msg.readInt32("points");
| SMSG_PK_RANKS_LIST || 0x0238 || 282 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1457 BeingRecv::processPkRanksList] || 20050530 || msg.readString(24, "name");<br>msg.readInt32("points");
|-
|-
| SMSG_HOMUNCULUS_SKILLS || 0x0235 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/homunculusrecv.cpp#L52 HomunculusRecv::processHomunculusSkills] || 20050530 || const int count = (msg.readInt16("len") - 4) / 37;<br>const int skillId = msg.readInt16("skill id");<br>msg.readInt16("inf"));<br>msg.readInt16("unused");<br>const int level = msg.readInt16("skill level");<br>const int sp = msg.readInt16("sp");<br>const int range = msg.readInt16("range");<br>const std::string name = msg.readString(24, "skill name");<br>const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
| SMSG_HOMUNCULUS_SKILLS || 0x0235 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/homunculusrecv.cpp#L52 HomunculusRecv::processHomunculusSkills] || 20050530 || const int count = (msg.readInt16("len") - 4) / 37;<br>const int skillId = msg.readInt16("skill id");<br>msg.readInt16("inf"));<br>msg.readInt16("unused");<br>const int level = msg.readInt16("skill level");<br>const int sp = msg.readInt16("sp");<br>const int range = msg.readInt16("range");<br>const std::string name = msg.readString(24, "skill name");<br>const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
|-
|-
| SMSG_HOMUNCULUS_DATA || 0x0230 || 12 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/homunculusrecv.cpp#L82 HomunculusRecv::processHomunculusData] || 20050523 || msg.readUInt8("unused");<br>const int cmd = msg.readUInt8("state");<br>const BeingId id = msg.readBeingId("homunculus id");<br>const int data = msg.readInt32("data");
| SMSG_HOMUNCULUS_DATA || 0x0230 || 12 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/homunculusrecv.cpp#L82 HomunculusRecv::processHomunculusData] || 20050523 || msg.readUInt8("unused");<br>const int cmd = msg.readUInt8("state");<br>const BeingId id = msg.readBeingId("homunculus id");<br>const int data = msg.readInt32("data");
|-
|-
| SMSG_PLAYER_STATUS_CHANGE || 0x0229 || 15 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1608 BeingRecv::processPlayerStatusChange] || 20050411 || const BeingId id = msg.readBeingId("account id");<br>msg.readInt16("opt1");<br>msg.readInt16("opt2");<br>msg.readInt32("option");<br>msg.readInt16("option");<br>msg.readUInt8("karma");<br>const uint32_t opt1 = msg.readInt16("opt1");<br>const uint32_t opt2 = msg.readInt16("opt2");<br>option = msg.readInt32("option");<br>option = msg.readInt16("option");<br>dstBeing->setKarma(msg.readUInt8("karma"));
| SMSG_PLAYER_STATUS_CHANGE || 0x0229 || 15 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1608 BeingRecv::processPlayerStatusChange] || 20050411 || const BeingId id = msg.readBeingId("account id");<br>msg.readInt16("opt1");<br>msg.readInt16("opt2");<br>msg.readInt32("option");<br>msg.readInt16("option");<br>msg.readUInt8("karma");<br>const uint32_t opt1 = msg.readInt16("opt1");<br>const uint32_t opt2 = msg.readInt16("opt2");<br>option = msg.readInt32("option");<br>option = msg.readInt16("option");<br>dstBeing->setKarma(msg.readUInt8("karma"));
|-
|-
| SMSG_TAEKWON_RANKS_LIST || 0x0226 || 282 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1447 BeingRecv::processTaekwonRanksList] || 20050328 || msg.readString(24, "name");<br>msg.readInt32("points");
| SMSG_TAEKWON_RANKS_LIST || 0x0226 || 282 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1447 BeingRecv::processTaekwonRanksList] || 20050328 || msg.readString(24, "name");<br>msg.readInt32("points");
|-
|-
| SMSG_PLAYER_FAME_TAEKWON || 0x0224 || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/playerrecv.cpp#L424 PlayerRecv::processPlayerFameTaekwon] || 20050328 || msg.readInt32("points");<br>msg.readInt32("total points");
| SMSG_PLAYER_FAME_TAEKWON || 0x0224 || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/playerrecv.cpp#L424 PlayerRecv::processPlayerFameTaekwon] || 20050328 || msg.readInt32("points");<br>msg.readInt32("total points");
|-
|-
| SMSG_PLAYER_UPGRADE_MESSAGE || 0x0223 || 8 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/playerrecv.cpp#L417 PlayerRecv::processPlayerUpgradeMessage] || 20041129 || msg.readInt32("result");<br>msg.readItemId("item id");
| SMSG_PLAYER_UPGRADE_MESSAGE || 0x0223 || 8 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/playerrecv.cpp#L417 PlayerRecv::processPlayerUpgradeMessage] || 20041129 || msg.readInt32("result");<br>msg.readItemId("item id");
|-
|-
| SMSG_PLAYER_REFINE_LIST || 0x0221 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1297 InventoryRecv::processPlayerRefineList] || 20041129 || const int count = (msg.readInt16("len") - 4) /<br>msg.readInt16("item index");<br>msg.readItemId("item id");<br>msg.readUInt8("refine");<br>msg.readItemId("card");
| SMSG_PLAYER_REFINE_LIST || 0x0221 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1297 InventoryRecv::processPlayerRefineList] || 20041129 || const int count = (msg.readInt16("len") - 4) /<br>msg.readInt16("item index");<br>msg.readItemId("item id");<br>msg.readUInt8("refine");<br>msg.readItemId("card");
|-
|-
| SMSG_PLAYER_FAME_ALCHEMIST || 0x021c || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/playerrecv.cpp#L410 PlayerRecv::processPlayerFameAlchemist] || 20041108 || msg.readInt32("points");<br>msg.readInt32("total points");
| SMSG_PLAYER_FAME_ALCHEMIST || 0x021c || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/playerrecv.cpp#L410 PlayerRecv::processPlayerFameAlchemist] || 20041108 || msg.readInt32("points");<br>msg.readInt32("total points");
|-
|-
| SMSG_PLAYER_FAME_BLACKSMITH || 0x021b || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/playerrecv.cpp#L403 PlayerRecv::processPlayerFameBlacksmith] || 20041108 || msg.readInt32("points");<br>msg.readInt32("total points");
| SMSG_PLAYER_FAME_BLACKSMITH || 0x021b || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/playerrecv.cpp#L403 PlayerRecv::processPlayerFameBlacksmith] || 20041108 || msg.readInt32("points");<br>msg.readInt32("total points");
|-
|-
| SMSG_ALCHEMIST_RANKS_LIST || 0x021a || 282 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1437 BeingRecv::processAlchemistRanksList] || 20041108 || msg.readString(24, "name");<br>msg.readInt32("points");
| SMSG_ALCHEMIST_RANKS_LIST || 0x021a || 282 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1437 BeingRecv::processAlchemistRanksList] || 20041108 || msg.readString(24, "name");<br>msg.readInt32("points");
|-
|-
| SMSG_BLACKSMITH_RANKS_LIST || 0x0219 || 282 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1427 BeingRecv::processBlacksmithRanksList] || 20041108 || msg.readString(24, "name");<br>msg.readInt32("points");
| SMSG_BLACKSMITH_RANKS_LIST || 0x0219 || 282 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1427 BeingRecv::processBlacksmithRanksList] || 20041108 || msg.readString(24, "name");<br>msg.readInt32("points");
|-
|-
| SMSG_FAMILY_ASK_FOR_CHILD_REPLY || 0x0216 || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/familyrecv.cpp#L109 FamilyRecv::processAskForChildReply] || 20041108 || const int type = msg.readInt32("type");
| SMSG_FAMILY_ASK_FOR_CHILD_REPLY || 0x0216 || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/familyrecv.cpp#L109 FamilyRecv::processAskForChildReply] || 20041108 || const int type = msg.readInt32("type");
|-
|-
| SMSG_PLAYER_SKILL_MESSAGE || 0x0215 || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/playerrecv.cpp#L352 PlayerRecv::processPlayerSkillMessage] || 20041101 || const int message = msg.readInt32("type");
| SMSG_PLAYER_SKILL_MESSAGE || 0x0215 || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/playerrecv.cpp#L352 PlayerRecv::processPlayerSkillMessage] || 20041101 || const int message = msg.readInt32("type");
|-
|-
| SMSG_PVP_INFO || 0x0210 || 22 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/playerrecv.cpp#L306 PlayerRecv::processPvpInfo] || 20040817 || msg.readInt32("char id");<br>msg.readBeingId("account id");<br>msg.readInt32("pvp won");<br>msg.readInt32("pvp lost");<br>msg.readInt32("pvp point");
| SMSG_PVP_INFO || 0x0210 || 22 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/playerrecv.cpp#L306 PlayerRecv::processPvpInfo] || 20040817 || msg.readInt32("char id");<br>msg.readBeingId("account id");<br>msg.readInt32("pvp won");<br>msg.readInt32("pvp lost");<br>msg.readInt32("pvp point");
|-
|-
| SMSG_ADMIN_ACCOUNT_STATS || 0x0214 || 42 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/adminrecv.cpp#L53 AdminRecv::processAccountStats] || 20040816 || msg.readUInt8("str");<br>msg.readUInt8("need str");<br>msg.readUInt8("agi");<br>msg.readUInt8("need agi");<br>msg.readUInt8("vit");<br>msg.readUInt8("need vit");<br>msg.readUInt8("int");<br>msg.readUInt8("need int");<br>msg.readUInt8("dex");<br>msg.readUInt8("need dex");<br>msg.readUInt8("luk");<br>msg.readUInt8("need luk");<br>msg.readInt16("attack");<br>msg.readInt16("refine");<br>msg.readInt16("matk max");<br>msg.readInt16("matk min");<br>msg.readInt16("item def");<br>msg.readInt16("plus def");<br>msg.readInt16("mdef");<br>msg.readInt16("plus mdef");<br>msg.readInt16("hit");<br>msg.readInt16("flee");<br>msg.readInt16("flee2/10");<br>msg.readInt16("cri/10");<br>msg.readInt16("speed");<br>msg.readInt16("zero");
| SMSG_ADMIN_ACCOUNT_STATS || 0x0214 || 42 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/adminrecv.cpp#L53 AdminRecv::processAccountStats] || 20040816 || msg.readUInt8("str");<br>msg.readUInt8("need str");<br>msg.readUInt8("agi");<br>msg.readUInt8("need agi");<br>msg.readUInt8("vit");<br>msg.readUInt8("need vit");<br>msg.readUInt8("int");<br>msg.readUInt8("need int");<br>msg.readUInt8("dex");<br>msg.readUInt8("need dex");<br>msg.readUInt8("luk");<br>msg.readUInt8("need luk");<br>msg.readInt16("attack");<br>msg.readInt16("refine");<br>msg.readInt16("matk max");<br>msg.readInt16("matk min");<br>msg.readInt16("item def");<br>msg.readInt16("plus def");<br>msg.readInt16("mdef");<br>msg.readInt16("plus mdef");<br>msg.readInt16("hit");<br>msg.readInt16("flee");<br>msg.readInt16("flee2/10");<br>msg.readInt16("cri/10");<br>msg.readInt16("speed");<br>msg.readInt16("zero");
|-
|-
| SMSG_TRADE_RESPONSE || 0x01f5 || 9 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/traderecv.cpp#L69 TradeRecv::processTradeResponse] || 6 || const uint8_t type = msg.readUInt8("type");<br>msg.readInt32("char id");<br>msg.readInt16("base level");
| SMSG_TRADE_RESPONSE || 0x01f5 || 9 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/traderecv.cpp#L69 TradeRecv::processTradeResponse] || 6 || const uint8_t type = msg.readUInt8("type");<br>msg.readInt32("char id");<br>msg.readInt16("base level");
|-
|-
| SMSG_TRADE_REQUEST || 0x01f4 || 32 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/traderecv.cpp#L58 TradeRecv::processTradeRequest] || 6 || const std::string &partner = msg.readString(24, "name");<br>msg.readInt32("char id");<br>msg.readInt16("base level");
| SMSG_TRADE_REQUEST || 0x01f4 || 32 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/traderecv.cpp#L58 TradeRecv::processTradeRequest] || 6 || const std::string &partner = msg.readString(24, "name");<br>msg.readInt32("char id");<br>msg.readInt16("base level");
|-
|-
| SMSG_BEING_CHANGE_LOOKS2 || 0x01d7 || 11 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L205 BeingRecv::processBeingChangeLook2] || 4 || msg.readBeingId("being id"));<br>const uint8_t type = msg.readUInt8("type");<br>const int id = msg.readItemId("id1");<br>unsigned int id2 = msg.readItemId("id2");
| SMSG_BEING_CHANGE_LOOKS2 || 0x01d7 || 11 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L205 BeingRecv::processBeingChangeLook2] || 4 || msg.readBeingId("being id"));<br>const uint8_t type = msg.readUInt8("type");<br>const int id = msg.readItemId("id1");<br>unsigned int id2 = msg.readItemId("id2");
|-
|-
| SMSG_SKILL_DAMAGE || 0x01de || 33 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L2358 BeingRecv::processSkillDamage] || 3 || const int id = msg.readInt16("skill id");<br>msg.readBeingId("src being id"));<br>msg.readBeingId("dst being id"));<br>msg.readInt32("tick");<br>msg.readInt32("src speed");<br>msg.readInt32("dst speed");<br>param1 = msg.readInt32("damage");<br>param1 = msg.readInt16("damage");<br>const int level = msg.readInt16("skill level");<br>msg.readInt16("div");<br>msg.readUInt8("skill hit/type?");
| SMSG_SKILL_DAMAGE || 0x01de || 33 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L2358 BeingRecv::processSkillDamage] || 3 || const int id = msg.readInt16("skill id");<br>msg.readBeingId("src being id"));<br>msg.readBeingId("dst being id"));<br>msg.readInt32("tick");<br>msg.readInt32("src speed");<br>msg.readInt32("dst speed");<br>param1 = msg.readInt32("damage");<br>param1 = msg.readInt16("damage");<br>const int level = msg.readInt16("skill level");<br>msg.readInt16("div");<br>msg.readUInt8("skill hit/type?");
|-
|-
| SMSG_PLAYER_INVENTORY_USE || 0x01c8 || 13 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1468 InventoryRecv::processPlayerInventoryUse] || 3 || const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>const int itemId = msg.readItemId("item id");<br>const BeingId id = msg.readBeingId("account id");<br>const int amount = msg.readInt16("amount");<br>const uint8_t flag = msg.readUInt8("type");
| SMSG_PLAYER_INVENTORY_USE || 0x01c8 || 13 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1468 InventoryRecv::processPlayerInventoryUse] || 3 || const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>const int itemId = msg.readItemId("item id");<br>const BeingId id = msg.readBeingId("account id");<br>const int amount = msg.readInt16("amount");<br>const uint8_t flag = msg.readUInt8("type");
|-
|-
| SMSG_FORMAT_COLOR_MESSAGE || 0x09cd || 8 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L180 ChatRecv::processFormatColor] || 0 || const int msgId = msg.readInt16("msg id");<br>msg.readInt32("color");
| SMSG_FORMAT_COLOR_MESSAGE || 0x09cd || 8 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L180 ChatRecv::processFormatColor] || 0 || const int msgId = msg.readInt16("msg id");<br>msg.readInt32("color");
|-
|-
| SMSG_FORMAT_MESSAGE_STRING || 0x02c2 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L190 ChatRecv::processFormatMessageString] || 0 || const int strLen = msg.readInt16("len") - 6;<br>const int msgId = msg.readInt16("msg id");<br>const std::string message = msg.readString(strLen, "value");
| SMSG_FORMAT_MESSAGE_STRING || 0x02c2 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L190 ChatRecv::processFormatMessageString] || 0 || const int strLen = msg.readInt16("len") - 6;<br>const int msgId = msg.readInt16("msg id");<br>const std::string message = msg.readString(strLen, "value");
|-
|-
| SMSG_GUILD_ONLINE_INFO || 0x016d || 14 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L823 GuildRecv::processOnlineInfo] || 0 || msg.readBeingId("being id");<br>msg.readInt32("char id");<br>msg.readInt32("online");
| SMSG_GUILD_ONLINE_INFO || 0x016d || 14 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L823 GuildRecv::processOnlineInfo] || 0 || msg.readBeingId("being id");<br>msg.readInt32("char id");<br>msg.readInt32("online");
|-
|-
| SMSG_ADD_MAP_MARKER || 0x09c1 || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/maprecv.cpp#L63 MapRecv::processAddMapMarker] || 0 || msg.readBeingId("account id");<br>msg.readInt16("x");<br>msg.readInt16("y");
| SMSG_ADD_MAP_MARKER || 0x09c1 || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/maprecv.cpp#L63 MapRecv::processAddMapMarker] || 0 || msg.readBeingId("account id");<br>msg.readInt16("x");<br>msg.readInt16("y");
|-
|-
| SMSG_BOOKING_SUB_FILTERING_LIST || 0x090c || 30 || nullptr || 0 ||  
| SMSG_BOOKING_SUB_FILTERING_LIST || 0x090c || 30 || nullptr || 0 ||  
Line 551: Line 551:
| SMSG_BOOKING_CANCEL_VOLUNTEER || 0x0909 || 6 || nullptr || 0 ||  
| SMSG_BOOKING_CANCEL_VOLUNTEER || 0x0909 || 6 || nullptr || 0 ||  
|-
|-
| SMSG_WHO_ANSWER || 0x00c2 || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/gamerecv.cpp#L52 Ea::GameRecv::processWhoAnswer] || 0 || msg.readInt32("users count"));
| SMSG_WHO_ANSWER || 0x00c2 || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/gamerecv.cpp#L52 Ea::GameRecv::processWhoAnswer] || 0 || msg.readInt32("users count"));
|-
|-
| SMSG_WEDDING_EFFECT || 0x01ea || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L2025 BeingRecv::processWddingEffect] || 0 || msg.readBeingId("being id");
| SMSG_WEDDING_EFFECT || 0x01ea || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L2025 BeingRecv::processWddingEffect] || 0 || msg.readBeingId("being id");
|-
|-
| SMSG_WALK_RESPONSE || 0x0087 || 12 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/playerrecv.cpp#L286 PlayerRecv::processWalkResponse] || 0 || msg.readInt32("tick");<br>msg.readCoordinatePair(srcX, srcY, dstX, dstY, "move path");<br>msg.readUInt8("(sx<<4) | (sy&0x0f)");
| SMSG_WALK_RESPONSE || 0x0087 || 12 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/playerrecv.cpp#L286 PlayerRecv::processWalkResponse] || 0 || msg.readInt32("tick");<br>msg.readCoordinatePair(srcX, srcY, dstX, dstY, "move path");<br>msg.readUInt8("(sx<<4) | (sy&0x0f)");
|-
|-
| SMSG_VENDING_SHOW_BOARD || 0x0131 || 86 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/vendingrecv.cpp#L80 VendingRecv::processShowBoard] || 0 || const BeingId id = msg.readBeingId("owner id");<br>dstBeing->setSellBoard(msg.readString(80, "shop name"));<br>msg.readString(80, "shop name");
| SMSG_VENDING_SHOW_BOARD || 0x0131 || 86 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/vendingrecv.cpp#L80 VendingRecv::processShowBoard] || 0 || const BeingId id = msg.readBeingId("owner id");<br>dstBeing->setSellBoard(msg.readString(80, "shop name"));<br>msg.readString(80, "shop name");
|-
|-
| SMSG_VENDING_OPEN_REQ || 0x012d || 4 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/vendingrecv.cpp#L73 VendingRecv::processOpenReq] || 0 || VendingSlotsListener::distributeEvent(msg.readInt16("slots allowed"));
| SMSG_VENDING_OPEN_REQ || 0x012d || 4 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/vendingrecv.cpp#L73 VendingRecv::processOpenReq] || 0 || VendingSlotsListener::distributeEvent(msg.readInt16("slots allowed"));
|-
|-
| SMSG_VENDING_HIDE_BOARD || 0x0132 || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/vendingrecv.cpp#L96 VendingRecv::processHideBoard] || 0 || const BeingId id = msg.readBeingId("owner id");
| SMSG_VENDING_HIDE_BOARD || 0x0132 || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/vendingrecv.cpp#L96 VendingRecv::processHideBoard] || 0 || const BeingId id = msg.readBeingId("owner id");
|-
|-
| SMSG_VENDING_BUY_ACK || 0x0135 || 7 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/vendingrecv.cpp#L178 VendingRecv::processBuyAck] || 0 || msg.readInt16("inv index");<br>msg.readInt16("amount");<br>const int flag = msg.readUInt8("flag");
| SMSG_VENDING_BUY_ACK || 0x0135 || 7 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/vendingrecv.cpp#L178 VendingRecv::processBuyAck] || 0 || msg.readInt16("inv index");<br>msg.readInt16("amount");<br>const int flag = msg.readUInt8("flag");
|-
|-
| SMSG_TRADE_UNDO || 0x00f1 || 2 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/traderecv.cpp#L0 TradeRecv::processTradeUndo] || 0 ||  
| SMSG_TRADE_UNDO || 0x00f1 || 2 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/traderecv.cpp#L0 TradeRecv::processTradeUndo] || 0 ||  
|-
|-
| SMSG_TRADE_OK || 0x00ec || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/traderecv.cpp#L120 Ea::TradeRecv::processTradeOk] || 0 || tradeWindow->receivedOk(msg.readUInt8("status") == 0U);<br>msg.readUInt8("status");
| SMSG_TRADE_OK || 0x00ec || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/traderecv.cpp#L120 Ea::TradeRecv::processTradeOk] || 0 || tradeWindow->receivedOk(msg.readUInt8("status") == 0U);<br>msg.readUInt8("status");
|-
|-
| SMSG_TRADE_ITEM_ADD_RESPONSE || 0x00ea || 5 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/traderecv.cpp#L132 TradeRecv::processTradeItemAddResponse] || 0 || msg.readInt16("index");<br>const uint8_t res = msg.readUInt8("fail");
| SMSG_TRADE_ITEM_ADD_RESPONSE || 0x00ea || 5 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/traderecv.cpp#L132 TradeRecv::processTradeItemAddResponse] || 0 || msg.readInt16("index");<br>const uint8_t res = msg.readUInt8("fail");
|-
|-
| SMSG_TRADE_COMPLETE || 0x00f0 || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/traderecv.cpp#L0 Ea::TradeRecv::processTradeComplete] || 0 ||  
| SMSG_TRADE_COMPLETE || 0x00f0 || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/traderecv.cpp#L0 Ea::TradeRecv::processTradeComplete] || 0 ||  
|-
|-
| SMSG_TRADE_CANCEL || 0x00ee || 2 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/traderecv.cpp#L0 Ea::TradeRecv::processTradeCancel] || 0 ||  
| SMSG_TRADE_CANCEL || 0x00ee || 2 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/traderecv.cpp#L0 Ea::TradeRecv::processTradeCancel] || 0 ||  
|-
|-
| SMSG_SPIRIT_BALL_SINGLE || 0x01e1 || 8 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1998 BeingRecv::processSpiritBalls] || 0 || msg.readBeingId("being id"));<br>const int balls = msg.readInt16("spirits amount");
| SMSG_SPIRIT_BALL_SINGLE || 0x01e1 || 8 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1998 BeingRecv::processSpiritBalls] || 0 || msg.readBeingId("being id"));<br>const int balls = msg.readInt16("spirits amount");
|-
|-
| SMSG_SPIRIT_BALLS || 0x01d0 || 8 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1998 BeingRecv::processSpiritBalls] || 0 || msg.readBeingId("being id"));<br>const int balls = msg.readInt16("spirits amount");
| SMSG_SPIRIT_BALLS || 0x01d0 || 8 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1998 BeingRecv::processSpiritBalls] || 0 || msg.readBeingId("being id"));<br>const int balls = msg.readInt16("spirits amount");
|-
|-
| SMSG_SOLVE_CHAR_NAME || 0x0194 || 30 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L2313 BeingRecv::processSolveCharName] || 0 || const int flag = msg.readInt16("flag");<br>const int id = msg.readInt32("char id");<br>msg.readString(24, "name");<br>actorManager->addChar(id, msg.readString(24, "name"));
| SMSG_SOLVE_CHAR_NAME || 0x0194 || 30 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L2313 BeingRecv::processSolveCharName] || 0 || const int flag = msg.readInt16("flag");<br>const int id = msg.readInt32("char id");<br>msg.readString(24, "name");<br>actorManager->addChar(id, msg.readString(24, "name"));
|-
|-
| SMSG_SKILL_UNIT_UPDATE || 0x01ac || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/skillrecv.cpp#L514 SkillRecv::processSkillUnitUpdate] || 0 || msg.readBeingId("being id");
| SMSG_SKILL_UNIT_UPDATE || 0x01ac || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/skillrecv.cpp#L514 SkillRecv::processSkillUnitUpdate] || 0 || msg.readBeingId("being id");
|-
|-
| SMSG_SKILL_MEMO_MESSAGE || 0x011e || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/skillrecv.cpp#L471 SkillRecv::processSkillMemoMessage] || 0 || const int type = msg.readUInt8("type");
| SMSG_SKILL_MEMO_MESSAGE || 0x011e || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/skillrecv.cpp#L471 SkillRecv::processSkillMemoMessage] || 0 || const int type = msg.readUInt8("type");
|-
|-
| SMSG_SKILL_GROUND_NO_DAMAGE || 0x0117 || 18 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1561 BeingRecv::processSkillGroundNoDamage] || 0 || msg.readInt16("skill id");<br>msg.readInt32("src id");<br>msg.readInt16("val");<br>msg.readInt16("x");<br>msg.readInt16("y");<br>msg.readInt32("tick");
| SMSG_SKILL_GROUND_NO_DAMAGE || 0x0117 || 18 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1561 BeingRecv::processSkillGroundNoDamage] || 0 || msg.readInt16("skill id");<br>msg.readInt32("src id");<br>msg.readInt16("val");<br>msg.readInt16("x");<br>msg.readInt16("y");<br>msg.readInt32("tick");
|-
|-
| SMSG_SKILL_GROUND_DAMAGE_UNUSED || 0x0115 || 35 || nullptr || 0 ||  
| SMSG_SKILL_GROUND_DAMAGE_UNUSED || 0x0115 || 35 || nullptr || 0 ||  
|-
|-
| SMSG_SKILL_FAILED || 0x0110 || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/skillrecv.cpp#L278 SkillRecv::processSkillFailed] || 0 || const int skillId = msg.readInt16("skill id");<br>const int bskill  = msg.readItemId("btype");<br>const int itemId  = msg.readItemId("item id");<br>const signed char success = msg.readUInt8("success");<br>const signed char reason  = msg.readUInt8("reason");
| SMSG_SKILL_FAILED || 0x0110 || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/skillrecv.cpp#L278 SkillRecv::processSkillFailed] || 0 || const int skillId = msg.readInt16("skill id");<br>const int bskill  = msg.readItemId("btype");<br>const int itemId  = msg.readItemId("item id");<br>const signed char success = msg.readUInt8("success");<br>const signed char reason  = msg.readUInt8("reason");
|-
|-
| SMSG_SKILL_DEVOTION_EFFECT || 0x01cf || 28 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/skillrecv.cpp#L551 SkillRecv::processSkillDevotionEffect] || 0 || msg.readBeingId("being id");<br>msg.readInt32("devotee id");<br>msg.readInt16("range");
| SMSG_SKILL_DEVOTION_EFFECT || 0x01cf || 28 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/skillrecv.cpp#L551 SkillRecv::processSkillDevotionEffect] || 0 || msg.readBeingId("being id");<br>msg.readInt32("devotee id");<br>msg.readInt16("range");
|-
|-
| SMSG_SKILL_CAST_CANCEL || 0x01b9 || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L2304 BeingRecv::processSkillCancel] || 0 || msg.readInt32("id?");
| SMSG_SKILL_CAST_CANCEL || 0x01b9 || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L2304 BeingRecv::processSkillCancel] || 0 || msg.readInt32("id?");
|-
|-
| SMSG_SKILL_AUTO_CAST || 0x0147 || 39 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1380 BeingRecv::processSkillAutoCast] || 0 || const int id = msg.readInt16("skill id");<br>msg.readInt16("inf");<br>msg.readInt16("unused");<br>const int level = msg.readInt16("skill level");<br>msg.readInt16("sp");<br>msg.readInt16("range");<br>msg.readString(24, "skill name");<br>msg.readInt8("unused");
| SMSG_SKILL_AUTO_CAST || 0x0147 || 39 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1380 BeingRecv::processSkillAutoCast] || 0 || const int id = msg.readInt16("skill id");<br>msg.readInt16("inf");<br>msg.readInt16("unused");<br>const int level = msg.readInt16("skill level");<br>msg.readInt16("sp");<br>msg.readInt16("range");<br>msg.readString(24, "skill name");<br>msg.readInt8("unused");
|-
|-
| SMSG_SKILL_ARROW_CREATE_LIST || 0x01ad || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/skillrecv.cpp#L521 SkillRecv::processSkillArrowCreateList] || 0 || const int count = (msg.readInt16("len") - 4) / itemIdLen;<br>msg.readItemId("item id");
| SMSG_SKILL_ARROW_CREATE_LIST || 0x01ad || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/skillrecv.cpp#L521 SkillRecv::processSkillArrowCreateList] || 0 || const int count = (msg.readInt16("len") - 4) / itemIdLen;<br>msg.readItemId("item id");
|-
|-
| SMSG_SERVER_PING || 0x007f || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/gamerecv.cpp#L79 GameRecv::processServerTick] || 0 || msg.readInt32("tick");
| SMSG_SERVER_PING || 0x007f || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/gamerecv.cpp#L79 GameRecv::processServerTick] || 0 || msg.readInt32("tick");
|-
|-
| SMSG_SCRIPT_MESSAGE || 0x08b3 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L816 ChatRecv::processScriptMessage] || 0 || const int sz = msg.readInt16("len") - 8;<br>msg.readBeingId("being id");<br>const std::string message = msg.readString(sz, "message");
| SMSG_SCRIPT_MESSAGE || 0x08b3 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L816 ChatRecv::processScriptMessage] || 0 || const int sz = msg.readInt16("len") - 8;<br>msg.readBeingId("being id");<br>const std::string message = msg.readString(sz, "message");
|-
|-
| SMSG_PVP_SET || 0x019a || 14 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L2176 BeingRecv::processPvpSet] || 0 || const BeingId id = msg.readBeingId("being id");<br>const int rank = msg.readInt32("rank");<br>msg.readInt32("num");
| SMSG_PVP_SET || 0x019a || 14 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L2176 BeingRecv::processPvpSet] || 0 || const BeingId id = msg.readBeingId("being id");<br>const int rank = msg.readInt32("rank");<br>msg.readInt32("num");
|-
|-
| SMSG_PVP_MAP_MODE || 0x0199 || 4 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/beingrecv.cpp#L413 Ea::BeingRecv::processPvpMapMode] || 0 || map->setPvpMode(msg.readInt16("pvp mode"));
| SMSG_PVP_MAP_MODE || 0x0199 || 4 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/beingrecv.cpp#L413 Ea::BeingRecv::processPvpMapMode] || 0 || map->setPvpMode(msg.readInt16("pvp mode"));
|-
|-
| SMSG_PLAYER_WARP || 0x0091 || 22 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/playerrecv.cpp#L62 Ea::PlayerRecv::processPlayerWarp] || 0 || std::string mapPath = msg.readString(16, "map name");<br>int x = msg.readInt16("x");<br>int y = msg.readInt16("y");
| SMSG_PLAYER_WARP || 0x0091 || 22 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/playerrecv.cpp#L62 Ea::PlayerRecv::processPlayerWarp] || 0 || std::string mapPath = msg.readString(16, "map name");<br>int x = msg.readInt16("x");<br>int y = msg.readInt16("y");
|-
|-
| SMSG_PLAYER_USE_CARD || 0x017b || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L824 InventoryRecv::processPlayerUseCard] || 0 || const int count = (msg.readInt16("len") - 4) / 2;<br>const int itemIndex = msg.readInt16("item index") - INVENTORY_OFFSET;
| SMSG_PLAYER_USE_CARD || 0x017b || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L824 InventoryRecv::processPlayerUseCard] || 0 || const int count = (msg.readInt16("len") - 4) / 2;<br>const int itemIndex = msg.readInt16("item index") - INVENTORY_OFFSET;
|-
|-
| SMSG_PLAYER_STORAGE_STATUS || 0x00f2 || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/inventoryrecv.cpp#L96 Ea::InventoryRecv::processPlayerStorageStatus] || 0 || msg.readInt16("used count");<br>const int size = msg.readInt16("max size");
| SMSG_PLAYER_STORAGE_STATUS || 0x00f2 || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/inventoryrecv.cpp#L96 Ea::InventoryRecv::processPlayerStorageStatus] || 0 || msg.readInt16("used count");<br>const int size = msg.readInt16("max size");
|-
|-
| SMSG_PLAYER_STORAGE_REMOVE || 0x00f6 || 8 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L908 InventoryRecv::processPlayerStorageRemove] || 0 || const int index = msg.readInt16("index") - STORAGE_OFFSET;<br>const int amount = msg.readInt32("amount");
| SMSG_PLAYER_STORAGE_REMOVE || 0x00f6 || 8 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L908 InventoryRecv::processPlayerStorageRemove] || 0 || const int index = msg.readInt16("index") - STORAGE_OFFSET;<br>const int amount = msg.readInt32("amount");
|-
|-
| SMSG_PLAYER_STORAGE_CLOSE || 0x00f8 || 2 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/inventoryrecv.cpp#L0 Ea::InventoryRecv::processPlayerStorageClose] || 0 ||  
| SMSG_PLAYER_STORAGE_CLOSE || 0x00f8 || 2 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/inventoryrecv.cpp#L0 Ea::InventoryRecv::processPlayerStorageClose] || 0 ||  
|-
|-
| SMSG_PLAYER_STOP || 0x0088 || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/beingrecv.cpp#L345 Ea::BeingRecv::processPlayerStop] || 0 || const BeingId id = msg.readBeingId("account id");<br>const uint16_t x = msg.readInt16("x");<br>const uint16_t y = msg.readInt16("y");<br>msg.readInt16("x");<br>msg.readInt16("y");
| SMSG_PLAYER_STOP || 0x0088 || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/beingrecv.cpp#L345 Ea::BeingRecv::processPlayerStop] || 0 || const BeingId id = msg.readBeingId("account id");<br>const uint16_t x = msg.readInt16("x");<br>const uint16_t y = msg.readInt16("y");<br>msg.readInt16("x");<br>msg.readInt16("y");
|-
|-
| SMSG_PLAYER_STAT_UPDATE_6 || 0x00be || 5 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/playerrecv.cpp#L199 Ea::PlayerRecv::processPlayerStatUpdate6] || 0 || const int type = msg.readInt16("type");<br>const int value = msg.readUInt8("value");
| SMSG_PLAYER_STAT_UPDATE_6 || 0x00be || 5 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/playerrecv.cpp#L199 Ea::PlayerRecv::processPlayerStatUpdate6] || 0 || const int type = msg.readInt16("type");<br>const int value = msg.readUInt8("value");
|-
|-
| SMSG_PLAYER_STAT_UPDATE_5 || 0x00bd || 44 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/playerrecv.cpp#L104 PlayerRecv::processPlayerStatUpdate5] || 0 || msg.readInt16("char points"),<br>unsigned int val = msg.readUInt8("str");<br>msg.readUInt8("str cost"));<br>msg.readUInt8("str need");<br>val = msg.readUInt8("agi");<br>msg.readUInt8("agi cost"));<br>msg.readUInt8("agi cost");<br>val = msg.readUInt8("vit");<br>msg.readUInt8("vit cost"));<br>msg.readUInt8("vit cost");<br>val = msg.readUInt8("int");<br>msg.readUInt8("int cost"));<br>msg.readUInt8("int cost");<br>val = msg.readUInt8("dex");<br>msg.readUInt8("dex cost"));<br>msg.readUInt8("dex cost");<br>val = msg.readUInt8("luk");<br>msg.readUInt8("luk cost"));<br>msg.readUInt8("luk cost");<br>msg.readInt16("left atk"),<br>msg.readInt16("right atk"),<br>val = msg.readInt16("right matk");<br>val = msg.readInt16("left matk");<br>msg.readInt16("left def"),<br>msg.readInt16("right def"),<br>msg.readInt16("left mdef"),<br>msg.readInt16("right mdef"),<br>msg.readInt16("hit"),<br>msg.readInt16("flee"),<br>msg.readInt16("flee2/10"),<br>msg.readInt16("crit/10"),<br>msg.readInt16("attack speed"),<br>msg.readInt16("plus speed = 0");
| SMSG_PLAYER_STAT_UPDATE_5 || 0x00bd || 44 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/playerrecv.cpp#L104 PlayerRecv::processPlayerStatUpdate5] || 0 || msg.readInt16("char points"),<br>unsigned int val = msg.readUInt8("str");<br>msg.readUInt8("str cost"));<br>msg.readUInt8("str need");<br>val = msg.readUInt8("agi");<br>msg.readUInt8("agi cost"));<br>msg.readUInt8("agi cost");<br>val = msg.readUInt8("vit");<br>msg.readUInt8("vit cost"));<br>msg.readUInt8("vit cost");<br>val = msg.readUInt8("int");<br>msg.readUInt8("int cost"));<br>msg.readUInt8("int cost");<br>val = msg.readUInt8("dex");<br>msg.readUInt8("dex cost"));<br>msg.readUInt8("dex cost");<br>val = msg.readUInt8("luk");<br>msg.readUInt8("luk cost"));<br>msg.readUInt8("luk cost");<br>msg.readInt16("left atk"),<br>msg.readInt16("right atk"),<br>val = msg.readInt16("right matk");<br>val = msg.readInt16("left matk");<br>msg.readInt16("left def"),<br>msg.readInt16("right def"),<br>msg.readInt16("left mdef"),<br>msg.readInt16("right mdef"),<br>msg.readInt16("hit"),<br>msg.readInt16("flee"),<br>msg.readInt16("flee2/10"),<br>msg.readInt16("crit/10"),<br>msg.readInt16("attack speed"),<br>msg.readInt16("plus speed = 0");
|-
|-
| SMSG_PLAYER_STAT_UPDATE_4 || 0x00bc || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/playerrecv.cpp#L176 Ea::PlayerRecv::processPlayerStatUpdate4] || 0 || const uint16_t type = msg.readInt16("type");<br>const uint8_t ok = msg.readUInt8("flag");<br>const int value = msg.readUInt8("value");
| SMSG_PLAYER_STAT_UPDATE_4 || 0x00bc || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/playerrecv.cpp#L176 Ea::PlayerRecv::processPlayerStatUpdate4] || 0 || const uint16_t type = msg.readInt16("type");<br>const uint8_t ok = msg.readUInt8("flag");<br>const int value = msg.readUInt8("value");
|-
|-
| SMSG_PLAYER_STAT_UPDATE_3 || 0x0141 || 14 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/playerrecv.cpp#L165 Ea::PlayerRecv::processPlayerStatUpdate3] || 0 || const int type = msg.readInt32("type");<br>const int base = msg.readInt32("base");<br>const int bonus = msg.readInt32("bonus");
| SMSG_PLAYER_STAT_UPDATE_3 || 0x0141 || 14 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/playerrecv.cpp#L165 Ea::PlayerRecv::processPlayerStatUpdate3] || 0 || const int type = msg.readInt32("type");<br>const int base = msg.readInt32("base");<br>const int bonus = msg.readInt32("bonus");
|-
|-
| SMSG_PLAYER_STAT_UPDATE_2 || 0x00b1 || 8 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/playerrecv.cpp#L156 Ea::PlayerRecv::processPlayerStatUpdate2] || 0 || const int type = msg.readInt16("type");<br>const int value = msg.readInt32("value");
| SMSG_PLAYER_STAT_UPDATE_2 || 0x00b1 || 8 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/playerrecv.cpp#L156 Ea::PlayerRecv::processPlayerStatUpdate2] || 0 || const int type = msg.readInt16("type");<br>const int value = msg.readInt32("value");
|-
|-
| SMSG_PLAYER_STAT_UPDATE_1 || 0x00b0 || 8 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/playerrecv.cpp#L141 Ea::PlayerRecv::processPlayerStatUpdate1] || 0 || const int type = msg.readInt16("type");<br>const int value = msg.readInt32("value");
| SMSG_PLAYER_STAT_UPDATE_1 || 0x00b0 || 8 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/playerrecv.cpp#L141 Ea::PlayerRecv::processPlayerStatUpdate1] || 0 || const int type = msg.readInt16("type");<br>const int value = msg.readInt32("value");
|-
|-
| SMSG_PLAYER_SKILL_UP || 0x010e || 11 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/skillrecv.cpp#L38 Ea::SkillRecv::processPlayerSkillUp] || 0 || const int skillId = msg.readInt16("skill id");<br>const int level = msg.readInt16("skill level");<br>const int sp = msg.readInt16("sp");<br>const int range = msg.readInt16("range");<br>const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
| SMSG_PLAYER_SKILL_UP || 0x010e || 11 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/skillrecv.cpp#L38 Ea::SkillRecv::processPlayerSkillUp] || 0 || const int skillId = msg.readInt16("skill id");<br>const int level = msg.readInt16("skill level");<br>const int sp = msg.readInt16("sp");<br>const int range = msg.readInt16("range");<br>const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
|-
|-
| SMSG_PLAYER_SKILL_PRODUCE_MIX_LIST || 0x018d || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/skillrecv.cpp#L493 SkillRecv::processSkillProduceMixList] || 0 || const int count = (msg.readInt16("len") - 4) / 4 * itemIdLen;<br>msg.readItemId("item id");<br>msg.readItemId("material id");
| SMSG_PLAYER_SKILL_PRODUCE_MIX_LIST || 0x018d || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/skillrecv.cpp#L493 SkillRecv::processSkillProduceMixList] || 0 || const int count = (msg.readInt16("len") - 4) / 4 * itemIdLen;<br>msg.readItemId("item id");<br>msg.readItemId("material id");
|-
|-
| SMSG_PLAYER_SKILL_PRODUCE_EFFECT || 0x018f || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/skillrecv.cpp#L506 SkillRecv::processSkillProduceEffect] || 0 || msg.readInt16("flag");<br>msg.readItemId("item id");
| SMSG_PLAYER_SKILL_PRODUCE_EFFECT || 0x018f || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/skillrecv.cpp#L506 SkillRecv::processSkillProduceEffect] || 0 || msg.readInt16("flag");<br>msg.readItemId("item id");
|-
|-
| SMSG_PLAYER_SKILLS || 0x010f || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/skillrecv.cpp#L72 SkillRecv::processPlayerSkills] || 0 || msg.readInt16("len");<br>const int skillId = msg.readInt16("skill id");<br>msg.readInt32("inf"));<br>msg.readInt32("inf2");<br>const int level = msg.readInt16("skill level");<br>const int sp = msg.readInt16("sp");<br>const int range = msg.readInt16("range");<br>const std::string name = msg.readString(24, "skill name");<br>const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
| SMSG_PLAYER_SKILLS || 0x010f || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/skillrecv.cpp#L72 SkillRecv::processPlayerSkills] || 0 || msg.readInt16("len");<br>const int skillId = msg.readInt16("skill id");<br>msg.readInt32("inf"));<br>msg.readInt32("inf2");<br>const int level = msg.readInt16("skill level");<br>const int sp = msg.readInt16("sp");<br>const int range = msg.readInt16("range");<br>const std::string name = msg.readString(24, "skill name");<br>const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
|-
|-
| SMSG_PLAYER_REPAIR_LIST || 0x01fc || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1272 InventoryRecv::processPlayerRepairList] || 0 || const int count = (msg.readInt16("len") - 4) /<br>msg.readInt16("index");<br>msg.readItemId("item id");<br>msg.readUInt8("refine");<br>msg.readItemId("card");
| SMSG_PLAYER_REPAIR_LIST || 0x01fc || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1272 InventoryRecv::processPlayerRepairList] || 0 || const int count = (msg.readInt16("len") - 4) /<br>msg.readInt16("index");<br>msg.readItemId("item id");<br>msg.readUInt8("refine");<br>msg.readItemId("card");
|-
|-
| SMSG_PLAYER_REPAIR_EFFECT || 0x01fe || 5 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1289 InventoryRecv::processPlayerRepairEffect] || 0 || msg.readInt16("item index");<br>msg.readUInt8("flag");
| SMSG_PLAYER_REPAIR_EFFECT || 0x01fe || 5 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1289 InventoryRecv::processPlayerRepairEffect] || 0 || msg.readInt16("item index");<br>msg.readUInt8("flag");
|-
|-
| SMSG_PLAYER_REFINE || 0x0188 || 8 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1231 InventoryRecv::processPlayerRefine] || 0 || const int flag = msg.readInt16("flag");<br>const int index = msg.readInt16("inv index") - INVENTORY_OFFSET;<br>msg.readInt16("refine");
| SMSG_PLAYER_REFINE || 0x0188 || 8 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1231 InventoryRecv::processPlayerRefine] || 0 || const int flag = msg.readInt16("flag");<br>const int index = msg.readInt16("inv index") - INVENTORY_OFFSET;<br>msg.readInt16("refine");
|-
|-
| SMSG_PLAYER_NOTIFY_MAPINFO || 0x0189 || 4 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/playerrecv.cpp#L397 PlayerRecv::processNotifyMapInfo] || 0 || msg.readInt16("type");
| SMSG_PLAYER_NOTIFY_MAPINFO || 0x0189 || 4 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/playerrecv.cpp#L397 PlayerRecv::processNotifyMapInfo] || 0 || msg.readInt16("type");
|-
|-
| SMSG_PLAYER_MOVE_TO_ATTACK || 0x0139 || 16 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/beingrecv.cpp#L369 Ea::BeingRecv::processPlayerMoveToAttack] || 0 || msg.readInt32("target id");<br>msg.readInt16("target x");<br>msg.readInt16("target y");<br>msg.readInt16("x");<br>msg.readInt16("y");<br>msg.readInt16("attack range");
| SMSG_PLAYER_MOVE_TO_ATTACK || 0x0139 || 16 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/beingrecv.cpp#L369 Ea::BeingRecv::processPlayerMoveToAttack] || 0 || msg.readInt32("target id");<br>msg.readInt16("target x");<br>msg.readInt16("target y");<br>msg.readInt16("x");<br>msg.readInt16("y");<br>msg.readInt16("attack range");
|-
|-
| SMSG_PLAYER_INVENTORY_REMOVE || 0x00af || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1394 InventoryRecv::processPlayerInventoryRemove] || 0 || const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>const int amount = msg.readInt16("amount");
| SMSG_PLAYER_INVENTORY_REMOVE || 0x00af || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1394 InventoryRecv::processPlayerInventoryRemove] || 0 || const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>const int amount = msg.readInt16("amount");
|-
|-
| SMSG_PLAYER_INSERT_CARD || 0x017d || 7 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L839 InventoryRecv::processPlayerInsertCard] || 0 || const int itemIndex = msg.readInt16("item index") - INVENTORY_OFFSET;<br>const int cardIndex = msg.readInt16("card index") - INVENTORY_OFFSET;<br>if (msg.readUInt8("flag") != 0U)
| SMSG_PLAYER_INSERT_CARD || 0x017d || 7 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L839 InventoryRecv::processPlayerInsertCard] || 0 || const int itemIndex = msg.readInt16("item index") - INVENTORY_OFFSET;<br>const int cardIndex = msg.readInt16("card index") - INVENTORY_OFFSET;<br>if (msg.readUInt8("flag") != 0U)
|-
|-
| SMSG_PLAYER_IDENTIFY_LIST || 0x0177 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1216 InventoryRecv::processPlayerIdentifyList] || 0 || const int count = msg.readInt16("len") - 4;<br>msg.readInt16("inv index");
| SMSG_PLAYER_IDENTIFY_LIST || 0x0177 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1216 InventoryRecv::processPlayerIdentifyList] || 0 || const int count = msg.readInt16("len") - 4;<br>msg.readInt16("inv index");
|-
|-
| SMSG_PLAYER_IDENTIFIED || 0x0179 || 5 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1225 InventoryRecv::processPlayerIdentified] || 0 || msg.readInt16("inv index");<br>msg.readUInt8("flag");
| SMSG_PLAYER_IDENTIFIED || 0x0179 || 5 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1225 InventoryRecv::processPlayerIdentified] || 0 || msg.readInt16("inv index");<br>msg.readUInt8("flag");
|-
|-
| SMSG_PLAYER_CHAT || 0x008e || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L113 ChatRecv::processChat] || 0 || const int chatMsgLength = msg.readInt16("len") - 4;<br>processChatContinue(msg.readRawString(chatMsgLength, "message"),
| SMSG_PLAYER_CHAT || 0x008e || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L113 ChatRecv::processChat] || 0 || const int chatMsgLength = msg.readInt16("len") - 4;<br>processChatContinue(msg.readRawString(chatMsgLength, "message"),
|-
|-
| SMSG_PLAYER_CART_REMOVE || 0x0125 || 8 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1195 InventoryRecv::processPlayerCartRemove] || 0 || const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>const int amount = msg.readInt32("amount");
| SMSG_PLAYER_CART_REMOVE || 0x0125 || 8 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1195 InventoryRecv::processPlayerCartRemove] || 0 || const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>const int amount = msg.readInt32("amount");
|-
|-
| SMSG_PLAYER_CART_ADD_ERROR || 0x012c || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1354 InventoryRecv::processCartAddError] || 0 || switch (msg.readUInt8("flag"))
| SMSG_PLAYER_CART_ADD_ERROR || 0x012c || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1354 InventoryRecv::processCartAddError] || 0 || switch (msg.readUInt8("flag"))
|-
|-
| SMSG_PLAYER_ATTACK_RANGE || 0x013a || 4 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/inventoryrecv.cpp#L147 Ea::InventoryRecv::processPlayerAttackRange] || 0 || const int range = msg.readInt16("range");
| SMSG_PLAYER_ATTACK_RANGE || 0x013a || 4 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/inventoryrecv.cpp#L147 Ea::InventoryRecv::processPlayerAttackRange] || 0 || const int range = msg.readInt16("range");
|-
|-
| SMSG_PLAYER_ARROW_MESSAGE || 0x013b || 4 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/playerrecv.cpp#L209 Ea::PlayerRecv::processPlayerArrowMessage] || 0 || const int type = msg.readInt16("type");
| SMSG_PLAYER_ARROW_MESSAGE || 0x013b || 4 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/playerrecv.cpp#L209 Ea::PlayerRecv::processPlayerArrowMessage] || 0 || const int type = msg.readInt16("type");
|-
|-
| SMSG_PLAYER_ARROW_EQUIP || 0x013c || 4 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/inventoryrecv.cpp#L162 Ea::InventoryRecv::processPlayerArrowEquip] || 0 || int index = msg.readInt16("index");
| SMSG_PLAYER_ARROW_EQUIP || 0x013c || 4 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/inventoryrecv.cpp#L162 Ea::InventoryRecv::processPlayerArrowEquip] || 0 || int index = msg.readInt16("index");
|-
|-
| SMSG_PLAYER_ADD_SKILL || 0x0111 || 39 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/skillrecv.cpp#L116 SkillRecv::processSkillAdd] || 0 || const int skillId = msg.readInt16("skill id");<br>msg.readInt32("inf"));<br>const int level = msg.readInt16("skill level");<br>const int sp = msg.readInt16("sp");<br>const int range = msg.readInt16("range");<br>const std::string name = msg.readString(24, "skill name");<br>const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
| SMSG_PLAYER_ADD_SKILL || 0x0111 || 39 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/skillrecv.cpp#L116 SkillRecv::processSkillAdd] || 0 || const int skillId = msg.readInt16("skill id");<br>msg.readInt32("inf"));<br>const int level = msg.readInt16("skill level");<br>const int sp = msg.readInt16("sp");<br>const int range = msg.readInt16("range");<br>const std::string name = msg.readString(24, "skill name");<br>const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
|-
|-
| SMSG_PET_ROULETTE || 0x01a0 || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/petrecv.cpp#L58 PetRecv::processPetRoulette] || 0 || const uint8_t data = msg.readUInt8("data");
| SMSG_PET_ROULETTE || 0x01a0 || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/petrecv.cpp#L58 PetRecv::processPetRoulette] || 0 || const uint8_t data = msg.readUInt8("data");
|-
|-
| SMSG_PET_MESSAGE || 0x01aa || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/petrecv.cpp#L52 PetRecv::processPetMessage] || 0 || msg.readBeingId("pet id");<br>msg.readInt32("param");
| SMSG_PET_MESSAGE || 0x01aa || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/petrecv.cpp#L52 PetRecv::processPetMessage] || 0 || msg.readBeingId("pet id");<br>msg.readInt32("param");
|-
|-
| SMSG_PET_FOOD || 0x01a3 || 5 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/petrecv.cpp#L170 PetRecv::processPetFood] || 0 || const int result = msg.readUInt8("result");<br>msg.readItemId("food id");
| SMSG_PET_FOOD || 0x01a3 || 5 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/petrecv.cpp#L170 PetRecv::processPetFood] || 0 || const int result = msg.readUInt8("result");<br>msg.readItemId("food id");
|-
|-
| SMSG_PET_EGGS_LIST || 0x01a6 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/petrecv.cpp#L75 PetRecv::processEggsList] || 0 || const int count = (msg.readInt16("len") - 4) / 2;<br>const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>const int index = msg.readInt16("index") - INVENTORY_OFFSET;
| SMSG_PET_EGGS_LIST || 0x01a6 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/petrecv.cpp#L75 PetRecv::processEggsList] || 0 || const int count = (msg.readInt16("len") - 4) / 2;<br>const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>const int index = msg.readInt16("index") - INVENTORY_OFFSET;
|-
|-
| SMSG_PET_DATA || 0x01a4 || 11 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/petrecv.cpp#L104 PetRecv::processPetData] || 0 || const int cmd = msg.readUInt8("type");<br>const BeingId id = msg.readBeingId("pet id");<br>const int data = msg.readInt32("data");
| SMSG_PET_DATA || 0x01a4 || 11 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/petrecv.cpp#L104 PetRecv::processPetData] || 0 || const int cmd = msg.readUInt8("type");<br>const BeingId id = msg.readBeingId("pet id");<br>const int data = msg.readInt32("data");
|-
|-
| SMSG_PET_CATCH_PROCESS || 0x019e || 2 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/petrecv.cpp#L0 PetRecv::processPetCatchProcess] || 0 ||  
| SMSG_PET_CATCH_PROCESS || 0x019e || 2 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/petrecv.cpp#L0 PetRecv::processPetCatchProcess] || 0 ||  
|-
|-
| SMSG_PARTY_UPDATE_COORDS || 0x0107 || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/partyrecv.cpp#L209 Ea::PartyRecv::processPartyUpdateCoords] || 0 || const BeingId id = msg.readBeingId("account id");<br>m->setX(msg.readInt16("x"));<br>m->setY(msg.readInt16("y"));<br>msg.readInt16("x");<br>msg.readInt16("y");
| SMSG_PARTY_UPDATE_COORDS || 0x0107 || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/partyrecv.cpp#L209 Ea::PartyRecv::processPartyUpdateCoords] || 0 || const BeingId id = msg.readBeingId("account id");<br>m->setX(msg.readInt16("x"));<br>m->setY(msg.readInt16("y"));<br>msg.readInt16("x");<br>msg.readInt16("y");
|-
|-
| SMSG_PARTY_MESSAGE || 0x0109 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/partyrecv.cpp#L295 PartyRecv::processPartyMessage] || 0 || const int msgLength = msg.readInt16("len") - 8;<br>const BeingId id = msg.readBeingId("id");<br>std::string chatMsg = msg.readString(msgLength, "message");
| SMSG_PARTY_MESSAGE || 0x0109 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/partyrecv.cpp#L295 PartyRecv::processPartyMessage] || 0 || const int msgLength = msg.readInt16("len") - 8;<br>const BeingId id = msg.readBeingId("id");<br>std::string chatMsg = msg.readString(msgLength, "message");
|-
|-
| SMSG_PARTY_LEAVE || 0x0105 || 31 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/partyrecv.cpp#L125 Ea::PartyRecv::processPartyLeave] || 0 || const BeingId id = msg.readBeingId("account id");<br>const std::string nick = msg.readString(24, "nick");<br>const int reason = msg.readUInt8("flag");
| SMSG_PARTY_LEAVE || 0x0105 || 31 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/partyrecv.cpp#L125 Ea::PartyRecv::processPartyLeave] || 0 || const BeingId id = msg.readBeingId("account id");<br>const std::string nick = msg.readString(24, "nick");<br>const int reason = msg.readUInt8("flag");
|-
|-
| SMSG_PARTY_LEADER || 0x07fc || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/partyrecv.cpp#L383 PartyRecv::processPartyLeader] || 0 || msg.readBeingId("old leder id"));<br>msg.readBeingId("new leder id"));
| SMSG_PARTY_LEADER || 0x07fc || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/partyrecv.cpp#L383 PartyRecv::processPartyLeader] || 0 || msg.readBeingId("old leder id"));<br>msg.readBeingId("new leder id"));
|-
|-
| SMSG_PARTY_INVITE_RESPONSE_OUTDATED || 0x00fd || 27 || nullptr || 0 ||  
| SMSG_PARTY_INVITE_RESPONSE_OUTDATED || 0x00fd || 27 || nullptr || 0 ||  
|-
|-
| SMSG_PARTY_CREATE || 0x00fa || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/partyrecv.cpp#L57 Ea::PartyRecv::processPartyCreate] || 0 || if (msg.readUInt8("flag") != 0U)
| SMSG_PARTY_CREATE || 0x00fa || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/partyrecv.cpp#L57 Ea::PartyRecv::processPartyCreate] || 0 || if (msg.readUInt8("flag") != 0U)
|-
|-
| SMSG_NPC_VIEWPOINT || 0x0144 || 23 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/npcrecv.cpp#L65 NpcRecv::processNpcViewPoint] || 0 || msg.readInt32("npc id");<br>msg.readInt32("type");  // 0 display for 15 sec,<br>msg.readInt32("x");<br>msg.readInt32("y");<br>msg.readUInt8("number");  // can be used for scripts<br>msg.readInt32("color");
| SMSG_NPC_VIEWPOINT || 0x0144 || 23 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/npcrecv.cpp#L65 NpcRecv::processNpcViewPoint] || 0 || msg.readInt32("npc id");<br>msg.readInt32("type");  // 0 display for 15 sec,<br>msg.readInt32("x");<br>msg.readInt32("y");<br>msg.readUInt8("number");  // can be used for scripts<br>msg.readInt32("color");
|-
|-
| SMSG_NPC_STR_INPUT || 0x01d4 || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/npcrecv.cpp#L0 Ea::NpcRecv::processNpcStrInput] || 0 ||  
| SMSG_NPC_STR_INPUT || 0x01d4 || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/npcrecv.cpp#L0 Ea::NpcRecv::processNpcStrInput] || 0 ||  
|-
|-
| SMSG_NPC_SHOW_DIGIT || 0x01b1 || 7 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/npcrecv.cpp#L119 NpcRecv::processShowDigit] || 0 || msg.readUInt8("type");<br>msg.readInt32("value");
| SMSG_NPC_SHOW_DIGIT || 0x01b1 || 7 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/npcrecv.cpp#L119 NpcRecv::processShowDigit] || 0 || msg.readUInt8("type");<br>msg.readInt32("value");
|-
|-
| SMSG_NPC_SELL_RESPONSE || 0x00cb || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/buysellrecv.cpp#L97 BuySellRecv::processNpcSellResponse] || 0 || switch (msg.readUInt8("result"))
| SMSG_NPC_SELL_RESPONSE || 0x00cb || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/buysellrecv.cpp#L97 BuySellRecv::processNpcSellResponse] || 0 || switch (msg.readUInt8("result"))
|-
|-
| SMSG_NPC_SELL || 0x00c7 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/buysellrecv.cpp#L66 Ea::BuySellRecv::processNpcSell] || 0 || msg.readInt16("len");<br>const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>const int value = msg.readInt32("value");<br>msg.readInt32("value?");
| SMSG_NPC_SELL || 0x00c7 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/buysellrecv.cpp#L66 Ea::BuySellRecv::processNpcSell] || 0 || msg.readInt16("len");<br>const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>const int value = msg.readInt32("value");<br>msg.readInt32("value?");
|-
|-
| SMSG_NPC_NEXT || 0x00b5 || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/npcrecv.cpp#L0 Ea::NpcRecv::processNpcNext] || 0 ||  
| SMSG_NPC_NEXT || 0x00b5 || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/npcrecv.cpp#L0 Ea::NpcRecv::processNpcNext] || 0 ||  
|-
|-
| SMSG_NPC_MESSAGE || 0x00b4 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/npcrecv.cpp#L65 Ea::NpcRecv::processNpcMessage] || 0 || msg.readInt16("len");<br>const std::string message = msg.readString(msg.getLength() - 8, "message");
| SMSG_NPC_MESSAGE || 0x00b4 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/npcrecv.cpp#L65 Ea::NpcRecv::processNpcMessage] || 0 || msg.readInt16("len");<br>const std::string message = msg.readString(msg.getLength() - 8, "message");
|-
|-
| SMSG_NPC_INT_INPUT || 0x0142 || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/npcrecv.cpp#L0 Ea::NpcRecv::processNpcIntInput] || 0 ||  
| SMSG_NPC_INT_INPUT || 0x0142 || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/npcrecv.cpp#L0 Ea::NpcRecv::processNpcIntInput] || 0 ||  
|-
|-
| SMSG_NPC_CUTIN || 0x01b3 || 67 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/npcrecv.cpp#L50 NpcRecv::processNpcCutin] || 0 || msg.readString(64, "image name");<br>msg.readUInt8("type");<br>const std::string image = msg.readString(64, "image name");<br>const CutInT cutin = static_cast<CutInT>(msg.readUInt8("type"));
| SMSG_NPC_CUTIN || 0x01b3 || 67 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/npcrecv.cpp#L50 NpcRecv::processNpcCutin] || 0 || msg.readString(64, "image name");<br>msg.readUInt8("type");<br>const std::string image = msg.readString(64, "image name");<br>const CutInT cutin = static_cast<CutInT>(msg.readUInt8("type"));
|-
|-
| SMSG_NPC_CLOSE_TIMEOUT || 0x08d6 || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/npcrecv.cpp#L98 NpcRecv::processNpcCloseTimeout] || 0 || msg.readInt32("npc id");
| SMSG_NPC_CLOSE_TIMEOUT || 0x08d6 || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/npcrecv.cpp#L98 NpcRecv::processNpcCloseTimeout] || 0 || msg.readInt32("npc id");
|-
|-
| SMSG_NPC_CLOSE || 0x00b6 || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/npcrecv.cpp#L0 Ea::NpcRecv::processNpcClose] || 0 ||  
| SMSG_NPC_CLOSE || 0x00b6 || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/npcrecv.cpp#L0 Ea::NpcRecv::processNpcClose] || 0 ||  
|-
|-
| SMSG_NPC_CHOICE || 0x00b7 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/npcrecv.cpp#L47 Ea::NpcRecv::processNpcChoice] || 0 || msg.readInt16("len");<br>mDialog->parseListItems(msg.readString(msg.getLength() - 8,"select items"));<br>msg.readString(msg.getLength() - 8, "select items");
| SMSG_NPC_CHOICE || 0x00b7 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/npcrecv.cpp#L47 Ea::NpcRecv::processNpcChoice] || 0 || msg.readInt16("len");<br>mDialog->parseListItems(msg.readString(msg.getLength() - 8,"select items"));<br>msg.readString(msg.getLength() - 8, "select items");
|-
|-
| SMSG_NPC_CASH_TAB_PRICE_LIST || 0x08c0 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/cashshoprecv.cpp#L155 CashShopRecv::processCashShopTabPriceList] || 0 || const int count = (msg.readInt16("len") - 10) / 6;<br>msg.readInt32("tab");<br>const int itemsCount = msg.readInt16("count");<br>msg.readInt16("item id");  // item id size always 16 bit<br>msg.readInt32("price");
| SMSG_NPC_CASH_TAB_PRICE_LIST || 0x08c0 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/cashshoprecv.cpp#L155 CashShopRecv::processCashShopTabPriceList] || 0 || const int count = (msg.readInt16("len") - 10) / 6;<br>msg.readInt32("tab");<br>const int itemsCount = msg.readInt16("count");<br>msg.readInt16("item id");  // item id size always 16 bit<br>msg.readInt32("price");
|-
|-
| SMSG_NPC_CASH_SCHEDULE || 0x08ca || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/cashshoprecv.cpp#L174 CashShopRecv::processCashShopSchedule] || 0 || const int count = (msg.readInt16("len") - 8) / blockSize;<br>const int itemsCount = msg.readInt16("count");<br>msg.readInt16("tab");<br>msg.readItemId("item id");<br>msg.readInt32("price");
| SMSG_NPC_CASH_SCHEDULE || 0x08ca || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/cashshoprecv.cpp#L174 CashShopRecv::processCashShopSchedule] || 0 || const int count = (msg.readInt16("len") - 8) / blockSize;<br>const int itemsCount = msg.readInt16("count");<br>msg.readInt16("tab");<br>msg.readItemId("item id");<br>msg.readInt32("price");
|-
|-
| SMSG_NPC_CASH_POINTS || 0x0845 || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/cashshoprecv.cpp#L139 CashShopRecv::processCashShopPoints] || 0 || msg.readInt32("cash points");<br>msg.readInt32("kafra points");
| SMSG_NPC_CASH_POINTS || 0x0845 || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/cashshoprecv.cpp#L139 CashShopRecv::processCashShopPoints] || 0 || msg.readInt32("cash points");<br>msg.readInt32("kafra points");
|-
|-
| SMSG_NPC_BUY_SELL_CHOICE || 0x00c4 || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/buysellrecv.cpp#L59 Ea::BuySellRecv::processNpcBuySellChoice] || 0 || mNpcId = msg.readBeingId("npc id");
| SMSG_NPC_BUY_SELL_CHOICE || 0x00c4 || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/buysellrecv.cpp#L59 Ea::BuySellRecv::processNpcBuySellChoice] || 0 || mNpcId = msg.readBeingId("npc id");
|-
|-
| SMSG_NPC_BUY_RESPONSE || 0x00ca || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/buysellrecv.cpp#L117 BuySellRecv::processNpcBuyResponse] || 0 || const uint8_t response = msg.readUInt8("response");
| SMSG_NPC_BUY_RESPONSE || 0x00ca || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/buysellrecv.cpp#L117 BuySellRecv::processNpcBuyResponse] || 0 || const uint8_t response = msg.readUInt8("response");
|-
|-
| SMSG_NPC_BUY || 0x00c6 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/buysellrecv.cpp#L56 BuySellRecv::processNpcBuy] || 0 || msg.readInt16("len");<br>const int value = msg.readInt32("price");<br>msg.readInt32("dc value?");<br>msg.readUInt8("type"));<br>const int itemId = msg.readItemId("item id");
| SMSG_NPC_BUY || 0x00c6 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/buysellrecv.cpp#L56 BuySellRecv::processNpcBuy] || 0 || msg.readInt16("len");<br>const int value = msg.readInt32("price");<br>msg.readInt32("dc value?");<br>msg.readUInt8("type"));<br>const int itemId = msg.readItemId("item id");
|-
|-
| SMSG_MVP_NO_ITEM || 0x010d || 2 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L0 ChatRecv::processMVPNoItem] || 0 ||  
| SMSG_MVP_NO_ITEM || 0x010d || 2 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L0 ChatRecv::processMVPNoItem] || 0 ||  
|-
|-
| SMSG_MVP_EFFECT || 0x010c || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/chatrecv.cpp#L130 Ea::ChatRecv::processMVPEffect] || 0 || const BeingId id = msg.readBeingId("being id");
| SMSG_MVP_EFFECT || 0x010c || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/chatrecv.cpp#L130 Ea::ChatRecv::processMVPEffect] || 0 || const BeingId id = msg.readBeingId("being id");
|-
|-
| SMSG_MVP_ITEM || 0x010a || 4 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L746 ChatRecv::processMVPItem] || 0 || msg.readItemId("item id");
| SMSG_MVP_ITEM || 0x010a || 4 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L746 ChatRecv::processMVPItem] || 0 || msg.readItemId("item id");
|-
|-
| SMSG_MONSTER_INFO || 0x018c || 29 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1974 BeingRecv::processMonsterInfo] || 0 || msg.readInt16("class");<br>msg.readInt16("level");<br>msg.readInt16("size");<br>msg.readInt32("hp");<br>msg.readInt16("def");<br>msg.readInt16("race");<br>msg.readInt16("mdef");<br>msg.readInt16("ele");
| SMSG_MONSTER_INFO || 0x018c || 29 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1974 BeingRecv::processMonsterInfo] || 0 || msg.readInt16("class");<br>msg.readInt16("level");<br>msg.readInt16("size");<br>msg.readInt32("hp");<br>msg.readInt16("def");<br>msg.readInt16("race");<br>msg.readInt16("mdef");<br>msg.readInt16("ele");
|-
|-
| SMSG_MARRIAGE_PROPOSAL_OUTDATED || 0x01e2 || 34 || nullptr || 0 ||  
| SMSG_MARRIAGE_PROPOSAL_OUTDATED || 0x01e2 || 34 || nullptr || 0 ||  
Line 743: Line 743:
| SMSG_MARRIAGE_PROCESS_OUTDATED || 0x01e4 || 2 || nullptr || 0 ||  
| SMSG_MARRIAGE_PROCESS_OUTDATED || 0x01e4 || 2 || nullptr || 0 ||  
|-
|-
| SMSG_MAP_TYPE || 0x01d6 || 4 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L996 BeingRecv::processMapType] || 0 || const int16_t type = msg.readInt16("type");
| SMSG_MAP_TYPE || 0x01d6 || 4 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L996 BeingRecv::processMapType] || 0 || const int16_t type = msg.readInt16("type");
|-
|-
| SMSG_MAP_QUIT_RESPONSE || 0x018b || 4 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/gamerecv.cpp#L63 Ea::GameRecv::processMapQuitResponse] || 0 || if (msg.readInt16("response") != 0)
| SMSG_MAP_QUIT_RESPONSE || 0x018b || 4 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/gamerecv.cpp#L63 Ea::GameRecv::processMapQuitResponse] || 0 || if (msg.readInt16("response") != 0)
|-
|-
| SMSG_MAP_AUTH_REFUSE || 0x0074 || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/gamerecv.cpp#L85 GameRecv::processMapAuthRefuse] || 0 || msg.readUInt8("error");
| SMSG_MAP_AUTH_REFUSE || 0x0074 || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/gamerecv.cpp#L85 GameRecv::processMapAuthRefuse] || 0 || msg.readUInt8("error");
|-
|-
| SMSG_MANNER_MESSAGE || 0x014a || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L762 ChatRecv::processMannerMessage] || 0 || const int result = msg.readInt32("type");
| SMSG_MANNER_MESSAGE || 0x014a || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L762 ChatRecv::processMannerMessage] || 0 || const int result = msg.readInt32("type");
|-
|-
| SMSG_ITEM_VISIBLE || 0x009d || 17 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/itemrecv.cpp#L126 ItemRecv::processItemVisible] || 0 || const BeingId id = msg.readBeingId("item object id");<br>const int itemId = msg.readItemId("item id");<br>msg.readUInt8("identify"), Identified);<br>const int x = msg.readInt16("x");<br>const int y = msg.readInt16("y");<br>const int amount = msg.readInt16("amount");<br>const int subX = CAST_S32(msg.readInt8("sub x"));<br>const int subY = CAST_S32(msg.readInt8("sub y"));
| SMSG_ITEM_VISIBLE || 0x009d || 17 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/itemrecv.cpp#L126 ItemRecv::processItemVisible] || 0 || const BeingId id = msg.readBeingId("item object id");<br>const int itemId = msg.readItemId("item id");<br>msg.readUInt8("identify"), Identified);<br>const int x = msg.readInt16("x");<br>const int y = msg.readInt16("y");<br>const int amount = msg.readInt16("amount");<br>const int subX = CAST_S32(msg.readInt8("sub x"));<br>const int subY = CAST_S32(msg.readInt8("sub y"));
|-
|-
| SMSG_ITEM_USE_RESPONSE || 0x00a8 || 7 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/inventoryrecv.cpp#L65 Ea::InventoryRecv::processItemUseResponse] || 0 || const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>const int amount = msg.readInt16("amount");<br>if (msg.readUInt8("result") == 0)
| SMSG_ITEM_USE_RESPONSE || 0x00a8 || 7 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/inventoryrecv.cpp#L65 Ea::InventoryRecv::processItemUseResponse] || 0 || const int index = msg.readInt16("index") - INVENTORY_OFFSET;<br>const int amount = msg.readInt16("amount");<br>if (msg.readUInt8("result") == 0)
|-
|-
| SMSG_ITEM_REMOVE || 0x00a1 || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/itemrecv.cpp#L41 Ea::ItemRecv::processItemRemove] || 0 || ->findItem(msg.readBeingId("floor item id")))
| SMSG_ITEM_REMOVE || 0x00a1 || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/itemrecv.cpp#L41 Ea::ItemRecv::processItemRemove] || 0 || ->findItem(msg.readBeingId("floor item id")))
|-
|-
| SMSG_ITEM_MVP_DROPPED || 0x07fd || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/itemrecv.cpp#L115 ItemRecv::processItemMvpDropped] || 0 || msg.readInt16("len");<br>msg.readUInt8("type");<br>msg.readItemId("item id");<br>msg.readUInt8("len");<br>msg.readString(24, "name");<br>msg.readUInt8("monster name len");<br>msg.readString(24, "monster name");
| SMSG_ITEM_MVP_DROPPED || 0x07fd || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/itemrecv.cpp#L115 ItemRecv::processItemMvpDropped] || 0 || msg.readInt16("len");<br>msg.readUInt8("type");<br>msg.readItemId("item id");<br>msg.readUInt8("len");<br>msg.readString(24, "name");<br>msg.readUInt8("monster name len");<br>msg.readString(24, "monster name");
|-
|-
| SMSG_IGNORE_NICK_ACK || 0x00d1 || 4 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L65 ChatRecv::processIgnoreNickAck] || 0 || const int type = msg.readUInt8("type");<br>const int flag = msg.readUInt8("flag");
| SMSG_IGNORE_NICK_ACK || 0x00d1 || 4 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L65 ChatRecv::processIgnoreNickAck] || 0 || const int type = msg.readUInt8("type");<br>const int flag = msg.readUInt8("flag");
|-
|-
| SMSG_IGNORE_ALL_RESPONSE || 0x00d2 || 4 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/chatrecv.cpp#L147 Ea::ChatRecv::processIgnoreAllResponse] || 0 || const uint8_t action = msg.readUInt8("action");<br>const uint8_t fail = msg.readUInt8("result");
| SMSG_IGNORE_ALL_RESPONSE || 0x00d2 || 4 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/chatrecv.cpp#L147 Ea::ChatRecv::processIgnoreAllResponse] || 0 || const uint8_t action = msg.readUInt8("action");<br>const uint8_t fail = msg.readUInt8("result");
|-
|-
| SMSG_GUILD_UPDATE_COORDS || 0x01eb || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L665 GuildRecv::processGuildUpdateCoords] || 0 || const BeingId id = msg.readBeingId("account id");<br>const int x = msg.readInt16("x");<br>const int y = msg.readInt16("y");
| SMSG_GUILD_UPDATE_COORDS || 0x01eb || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L665 GuildRecv::processGuildUpdateCoords] || 0 || const BeingId id = msg.readBeingId("account id");<br>const int x = msg.readInt16("x");<br>const int y = msg.readInt16("y");
|-
|-
| SMSG_GUILD_SKILL_INFO || 0x0162 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L370 GuildRecv::processGuildSkillInfo] || 0 || const int count = (msg.readInt16("len") - 6) / 37;<br>msg.readInt16("skill points");<br>const int skillId = msg.readInt16("skill id");<br>msg.readInt32("inf"));<br>const int level = msg.readInt16("skill level");<br>const int sp = msg.readInt16("sp");<br>const int range = msg.readInt16("range");<br>const std::string name = msg.readString(24, "skill name");<br>const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
| SMSG_GUILD_SKILL_INFO || 0x0162 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L370 GuildRecv::processGuildSkillInfo] || 0 || const int count = (msg.readInt16("len") - 6) / 37;<br>msg.readInt16("skill points");<br>const int skillId = msg.readInt16("skill id");<br>msg.readInt32("inf"));<br>const int level = msg.readInt16("skill level");<br>const int sp = msg.readInt16("sp");<br>const int range = msg.readInt16("range");<br>const std::string name = msg.readString(24, "skill name");<br>const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
|-
|-
| SMSG_GUILD_REQ_ALLIANCE_ACK || 0x0173 || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L602 GuildRecv::processGuildReqAllianceAck] || 0 || msg.readInt32("flag");
| SMSG_GUILD_REQ_ALLIANCE_ACK || 0x0173 || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L602 GuildRecv::processGuildReqAllianceAck] || 0 || msg.readInt32("flag");
|-
|-
| SMSG_GUILD_REQ_ALLIANCE || 0x0171 || 30 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L595 GuildRecv::processGuildReqAlliance] || 0 || msg.readInt32("id");<br>msg.readString(24, "name");
| SMSG_GUILD_REQ_ALLIANCE || 0x0171 || 30 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L595 GuildRecv::processGuildReqAlliance] || 0 || msg.readInt32("id");<br>msg.readString(24, "name");
|-
|-
| SMSG_GUILD_POS_NAME_LIST || 0x0166 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L302 GuildRecv::processGuildPosNameList] || 0 || const int length = msg.readInt16("len");<br>const int id = msg.readInt32("position id");<br>const std::string name = msg.readString(24, "position name");
| SMSG_GUILD_POS_NAME_LIST || 0x0166 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L302 GuildRecv::processGuildPosNameList] || 0 || const int length = msg.readInt16("len");<br>const int id = msg.readInt32("position id");<br>const std::string name = msg.readString(24, "position name");
|-
|-
| SMSG_GUILD_POS_INFO_LIST || 0x0160 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L317 GuildRecv::processGuildPosInfoList] || 0 || const int length = msg.readInt16("len");<br>msg.readInt32("id");<br>msg.readInt32("mode");<br>msg.readInt32("same id");<br>msg.readInt32("exp mode");
| SMSG_GUILD_POS_INFO_LIST || 0x0160 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L317 GuildRecv::processGuildPosInfoList] || 0 || const int length = msg.readInt16("len");<br>msg.readInt32("id");<br>msg.readInt32("mode");<br>msg.readInt32("same id");<br>msg.readInt32("exp mode");
|-
|-
| SMSG_GUILD_POSITION_INFO || 0x016c || 43 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L681 GuildRecv::processGuildPositionInfo] || 0 || const int guildId =  msg.readInt32("guild id");<br>const int emblem =  msg.readInt32("elblem id");<br>static_cast<GuildPositionFlags::Type>(msg.readInt32("mode")));<br>msg.readUInt8("guild master");<br>msg.readInt32("unused");<br>std::string guildName = msg.readString(24, "guild name");
| SMSG_GUILD_POSITION_INFO || 0x016c || 43 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L681 GuildRecv::processGuildPositionInfo] || 0 || const int guildId =  msg.readInt32("guild id");<br>const int emblem =  msg.readInt32("elblem id");<br>static_cast<GuildPositionFlags::Type>(msg.readInt32("mode")));<br>msg.readUInt8("guild master");<br>msg.readInt32("unused");<br>std::string guildName = msg.readString(24, "guild name");
|-
|-
| SMSG_GUILD_POSITION_CHANGED || 0x0174 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L334 GuildRecv::processGuildPositionChanged] || 0 || msg.readInt16("len");<br>msg.readInt32("id");<br>msg.readInt32("mode");<br>msg.readInt32("same ip");<br>msg.readInt32("exp mode");<br>msg.readString(24, "name");
| SMSG_GUILD_POSITION_CHANGED || 0x0174 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L334 GuildRecv::processGuildPositionChanged] || 0 || msg.readInt16("len");<br>msg.readInt32("id");<br>msg.readInt32("mode");<br>msg.readInt32("same ip");<br>msg.readInt32("exp mode");<br>msg.readString(24, "name");
|-
|-
| SMSG_GUILD_OPPOSITION_ACK || 0x0181 || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L615 GuildRecv::processGuildOppositionAck] || 0 || msg.readUInt8("flag");
| SMSG_GUILD_OPPOSITION_ACK || 0x0181 || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L615 GuildRecv::processGuildOppositionAck] || 0 || msg.readUInt8("flag");
|-
|-
| SMSG_GUILD_NOTICE || 0x016f || 182 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L403 GuildRecv::processGuildNotice] || 0 || const std::string msg1 = msg.readString(60, "msg1");<br>const std::string msg2 = msg.readString(120, "msg2");<br>msg.readString(60, "msg1");<br>msg.readString(120, "msg2");
| SMSG_GUILD_NOTICE || 0x016f || 182 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L403 GuildRecv::processGuildNotice] || 0 || const std::string msg1 = msg.readString(60, "msg1");<br>const std::string msg2 = msg.readString(120, "msg2");<br>msg.readString(60, "msg1");<br>msg.readString(120, "msg2");
|-
|-
| SMSG_GUILD_MESSAGE || 0x017f || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L562 GuildRecv::processGuildMessage] || 0 || const int msgLength = msg.readInt16("len") - 4;<br>std::string chatMsg = msg.readString(msgLength, "message");<br>msg.readString(msgLength, "message");
| SMSG_GUILD_MESSAGE || 0x017f || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L562 GuildRecv::processGuildMessage] || 0 || const int msgLength = msg.readInt16("len") - 4;<br>std::string chatMsg = msg.readString(msgLength, "message");<br>msg.readString(msgLength, "message");
|-
|-
| SMSG_GUILD_MEMBER_POS_CHANGE || 0x0156 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L344 GuildRecv::processGuildMemberPosChange] || 0 || msg.readInt16("len");<br>const BeingId accountId = msg.readBeingId("account id");<br>const int charId = msg.readInt32("char id");<br>const int pos = msg.readInt32("position");
| SMSG_GUILD_MEMBER_POS_CHANGE || 0x0156 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L344 GuildRecv::processGuildMemberPosChange] || 0 || msg.readInt16("len");<br>const BeingId accountId = msg.readBeingId("account id");<br>const int charId = msg.readInt32("char id");<br>const int pos = msg.readInt32("position");
|-
|-
| SMSG_GUILD_MEMBER_LOGIN || 0x01f2 || 20 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L716 GuildRecv::processGuildMemberLogin] || 0 || const BeingId accountId = msg.readBeingId("account id");<br>const int charId = msg.readInt32("char id");<br>const int online = msg.readInt32("flag");<br>msg.readInt16("sex")));<br>msg.readInt16("hair");<br>msg.readInt16("hair color");
| SMSG_GUILD_MEMBER_LOGIN || 0x01f2 || 20 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L716 GuildRecv::processGuildMemberLogin] || 0 || const BeingId accountId = msg.readBeingId("account id");<br>const int charId = msg.readInt32("char id");<br>const int online = msg.readInt32("flag");<br>msg.readInt16("sex")));<br>msg.readInt16("hair");<br>msg.readInt16("hair color");
|-
|-
| SMSG_GUILD_MASTER_OR_MEMBER || 0x014e || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L95 GuildRecv::processGuildMasterOrMember] || 0 || msg.readInt32("type");  // Type (0x57 for member, 0xd7 for master)
| SMSG_GUILD_MASTER_OR_MEMBER || 0x014e || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L95 GuildRecv::processGuildMasterOrMember] || 0 || msg.readInt32("type");  // Type (0x57 for member, 0xd7 for master)
|-
|-
| SMSG_GUILD_LEAVE || 0x015a || 66 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L468 GuildRecv::processGuildLeave] || 0 || const std::string nick = msg.readString(24, "nick");<br>msg.readString(40, "message");
| SMSG_GUILD_LEAVE || 0x015a || 66 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L468 GuildRecv::processGuildLeave] || 0 || const std::string nick = msg.readString(24, "nick");<br>msg.readString(40, "message");
|-
|-
| SMSG_GUILD_INVITE_ACK || 0x0169 || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L438 GuildRecv::processGuildInviteAck] || 0 || const uint8_t flag = msg.readUInt8("flag");
| SMSG_GUILD_INVITE_ACK || 0x0169 || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L438 GuildRecv::processGuildInviteAck] || 0 || const uint8_t flag = msg.readUInt8("flag");
|-
|-
| SMSG_GUILD_INVITE || 0x016a || 30 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L423 GuildRecv::processGuildInvite] || 0 || const int guildId = msg.readInt32("guild id");<br>const std::string guildName = msg.readString(24, "guild name");<br>msg.readString(24, "guild name");
| SMSG_GUILD_INVITE || 0x016a || 30 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L423 GuildRecv::processGuildInvite] || 0 || const int guildId = msg.readInt32("guild id");<br>const std::string guildName = msg.readString(24, "guild name");<br>msg.readString(24, "guild name");
|-
|-
| SMSG_GUILD_EMBLEM_DATA || 0x0152 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L359 GuildRecv::processGuildEmblemData] || 0 || const int length = msg.readInt16("len");<br>msg.readInt32("guild id");<br>msg.readInt32("emblem id");
| SMSG_GUILD_EMBLEM_DATA || 0x0152 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L359 GuildRecv::processGuildEmblemData] || 0 || const int length = msg.readInt16("len");<br>msg.readInt32("guild id");<br>msg.readInt32("emblem id");
|-
|-
| SMSG_GUILD_EMBLEM || 0x01b4 || 12 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L814 GuildRecv::processGuildEmblem] || 0 || msg.readBeingId("being id");<br>msg.readInt32("guild id");<br>msg.readInt16("emblem id");
| SMSG_GUILD_EMBLEM || 0x01b4 || 12 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L814 GuildRecv::processGuildEmblem] || 0 || msg.readBeingId("being id");<br>msg.readInt32("guild id");<br>msg.readInt16("emblem id");
|-
|-
| SMSG_GUILD_DEL_ALLIANCE || 0x0184 || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L608 GuildRecv::processGuildDelAlliance] || 0 || msg.readInt32("guild id");<br>msg.readInt32("flag");
| SMSG_GUILD_DEL_ALLIANCE || 0x0184 || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L608 GuildRecv::processGuildDelAlliance] || 0 || msg.readInt32("guild id");<br>msg.readInt32("flag");
|-
|-
| SMSG_GUILD_CREATE_RESPONSE || 0x0167 || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L62 GuildRecv::processGuildCreateResponse] || 0 || const uint8_t flag = msg.readUInt8("flag");
| SMSG_GUILD_CREATE_RESPONSE || 0x0167 || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L62 GuildRecv::processGuildCreateResponse] || 0 || const uint8_t flag = msg.readUInt8("flag");
|-
|-
| SMSG_GUILD_BROKEN || 0x015e || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L621 GuildRecv::processGuildBroken] || 0 || msg.readInt32("flag");
| SMSG_GUILD_BROKEN || 0x015e || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L621 GuildRecv::processGuildBroken] || 0 || msg.readInt32("flag");
|-
|-
| SMSG_GUILD_ALLIANCE_ADDED_DISABLED || 0x0185 || 34 || nullptr || 0 ||  
| SMSG_GUILD_ALLIANCE_ADDED_DISABLED || 0x0185 || 34 || nullptr || 0 ||  
|-
|-
| SMSG_GUILD_ALIANCE_INFO || 0x014c || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/guildrecv.cpp#L190 GuildRecv::processGuildAlianceInfo] || 0 || const int length = msg.readInt16("len");<br>msg.readInt32("opposition");<br>msg.readInt32("guild id");<br>msg.readString(24, "guild name");
| SMSG_GUILD_ALIANCE_INFO || 0x014c || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/guildrecv.cpp#L190 GuildRecv::processGuildAlianceInfo] || 0 || const int length = msg.readInt16("len");<br>msg.readInt32("opposition");<br>msg.readInt32("guild id");<br>msg.readString(24, "guild name");
|-
|-
| SMSG_GRAFFITI_VISIBLE || 0x01c9 || 97 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L2329 BeingRecv::processGraffiti] || 0 || const BeingId id = msg.readBeingId("graffiti id");<br>const BeingId creatorId = msg.readBeingId("creator id");<br>const int x = msg.readInt16("x");<br>const int y = msg.readInt16("y");<br>const int job = msg.readUInt8("job");<br>msg.readUInt8("visible");<br>msg.readUInt8("is content");<br>const std::string text = msg.readString(80, "text");
| SMSG_GRAFFITI_VISIBLE || 0x01c9 || 97 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L2329 BeingRecv::processGraffiti] || 0 || const BeingId id = msg.readBeingId("graffiti id");<br>const BeingId creatorId = msg.readBeingId("creator id");<br>const int x = msg.readInt16("x");<br>const int y = msg.readInt16("y");<br>const int job = msg.readUInt8("job");<br>msg.readUInt8("visible");<br>msg.readUInt8("is content");<br>const std::string text = msg.readString(80, "text");
|-
|-
| SMSG_GM_CHAT2 || 0x01c3 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L328 ChatRecv::processGmChat2] || 0 || const int chatMsgLength = msg.readInt16("len") - 16;<br>msg.readInt32("font color");<br>msg.readInt16("font type");<br>msg.readInt16("font size");<br>msg.readInt16("font align");<br>msg.readInt16("font y");<br>const std::string chatMsg = msg.readRawString(chatMsgLength,"message");<br>msg.readRawString(chatMsgLength, "message");
| SMSG_GM_CHAT2 || 0x01c3 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L328 ChatRecv::processGmChat2] || 0 || const int chatMsgLength = msg.readInt16("len") - 16;<br>msg.readInt32("font color");<br>msg.readInt16("font type");<br>msg.readInt16("font size");<br>msg.readInt16("font align");<br>msg.readInt16("font y");<br>const std::string chatMsg = msg.readRawString(chatMsgLength,"message");<br>msg.readRawString(chatMsgLength, "message");
|-
|-
| SMSG_GM_CHAT || 0x009a || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L309 ChatRecv::processGmChat] || 0 || const int chatMsgLength = msg.readInt16("len") - 4;<br>std::string chatMsg = msg.readRawString(chatMsgLength, "message");
| SMSG_GM_CHAT || 0x009a || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L309 ChatRecv::processGmChat] || 0 || const int chatMsgLength = msg.readInt16("len") - 4;<br>std::string chatMsg = msg.readRawString(chatMsgLength, "message");
|-
|-
| SMSG_FRIENDS_REQUEST_ACK || 0x0209 || 36 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/friendsrecv.cpp#L61 FriendsRecv::processRequestAck] || 0 || msg.readInt16("type");<br>msg.readBeingId("account id");<br>msg.readInt32("char id");<br>msg.readString(24, "name");
| SMSG_FRIENDS_REQUEST_ACK || 0x0209 || 36 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/friendsrecv.cpp#L61 FriendsRecv::processRequestAck] || 0 || msg.readInt16("type");<br>msg.readBeingId("account id");<br>msg.readInt32("char id");<br>msg.readString(24, "name");
|-
|-
| SMSG_FRIENDS_REQUEST || 0x0207 || 34 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/friendsrecv.cpp#L70 FriendsRecv::processRequest] || 0 || msg.readBeingId("account id");<br>msg.readInt32("char id");<br>msg.readString(24, "name");
| SMSG_FRIENDS_REQUEST || 0x0207 || 34 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/friendsrecv.cpp#L70 FriendsRecv::processRequest] || 0 || msg.readBeingId("account id");<br>msg.readInt32("char id");<br>msg.readString(24, "name");
|-
|-
| SMSG_FRIENDS_PLAYER_ONLINE || 0x0206 || 11 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/friendsrecv.cpp#L38 FriendsRecv::processPlayerOnline] || 0 || msg.readBeingId("account id");<br>msg.readInt32("char id");<br>msg.readUInt8("flag");  // 0 - online, 1 - offline<br>msg.readString(24, "player name");
| SMSG_FRIENDS_PLAYER_ONLINE || 0x0206 || 11 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/friendsrecv.cpp#L38 FriendsRecv::processPlayerOnline] || 0 || msg.readBeingId("account id");<br>msg.readInt32("char id");<br>msg.readUInt8("flag");  // 0 - online, 1 - offline<br>msg.readString(24, "player name");
|-
|-
| SMSG_FRIENDS_LIST || 0x0201 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/friendsrecv.cpp#L48 FriendsRecv::processFriendsList] || 0 || const int count = (msg.readInt16("size") - 4) / 32;<br>msg.readBeingId("account id");<br>msg.readInt32("char id");<br>msg.readString(24, "name");
| SMSG_FRIENDS_LIST || 0x0201 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/friendsrecv.cpp#L48 FriendsRecv::processFriendsList] || 0 || const int count = (msg.readInt16("size") - 4) / 32;<br>msg.readBeingId("account id");<br>msg.readInt32("char id");<br>msg.readString(24, "name");
|-
|-
| SMSG_FRIENDS_DELETE_PLAYER || 0x020a || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/friendsrecv.cpp#L78 FriendsRecv::processDeletePlayer] || 0 || msg.readBeingId("account id");<br>msg.readInt32("char id");
| SMSG_FRIENDS_DELETE_PLAYER || 0x020a || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/friendsrecv.cpp#L78 FriendsRecv::processDeletePlayer] || 0 || msg.readBeingId("account id");<br>msg.readInt32("char id");
|-
|-
| SMSG_FAMILY_DIVORCED || 0x0205 || 26 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/familyrecv.cpp#L103 FamilyRecv::processDivorced] || 0 || const std::string name = msg.readString(24, "name");
| SMSG_FAMILY_DIVORCED || 0x0205 || 26 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/familyrecv.cpp#L103 FamilyRecv::processDivorced] || 0 || const std::string name = msg.readString(24, "name");
|-
|-
| SMSG_FAMILY_CALL_PARTNER || 0x01e6 || 26 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/familyrecv.cpp#L90 FamilyRecv::processCallPartner] || 0 || const std::string name = msg.readString(24, "name");
| SMSG_FAMILY_CALL_PARTNER || 0x01e6 || 26 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/familyrecv.cpp#L90 FamilyRecv::processCallPartner] || 0 || const std::string name = msg.readString(24, "name");
|-
|-
| SMSG_FAMILY_ASK_FOR_CHILD || 0x01f6 || 34 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/familyrecv.cpp#L58 FamilyRecv::processAskForChild] || 0 || mParent1 = msg.readBeingId("account id who ask");<br>mParent2 = msg.readBeingId("acoount id for other parent");<br>msg.readString(24, "name who ask");<br>mParent1 = msg.readBeingId("account id who ask");<br>mParent2 = msg.readBeingId("acoount id for other parent");<br>const std::string name1 = msg.readString(24, "name who ask");
| SMSG_FAMILY_ASK_FOR_CHILD || 0x01f6 || 34 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/familyrecv.cpp#L58 FamilyRecv::processAskForChild] || 0 || mParent1 = msg.readBeingId("account id who ask");<br>mParent2 = msg.readBeingId("acoount id for other parent");<br>msg.readString(24, "name who ask");<br>mParent1 = msg.readBeingId("account id who ask");<br>mParent2 = msg.readBeingId("acoount id for other parent");<br>const std::string name1 = msg.readString(24, "name who ask");
|-
|-
| SMSG_CONNECTION_PROBLEM || 0x0081 || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/generalrecv.cpp#L44 GeneralRecv::processConnectionProblem] || 0 || const uint8_t code = msg.readUInt8("flag");
| SMSG_CONNECTION_PROBLEM || 0x0081 || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/generalrecv.cpp#L44 GeneralRecv::processConnectionProblem] || 0 || const uint8_t code = msg.readUInt8("flag");
|-
|-
| SMSG_COMBO_DELAY || 0x01d2 || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L2017 BeingRecv::processComboDelay] || 0 || msg.readBeingId("being id");<br>msg.readInt32("wait");
| SMSG_COMBO_DELAY || 0x01d2 || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L2017 BeingRecv::processComboDelay] || 0 || msg.readBeingId("being id");<br>msg.readInt32("wait");
|-
|-
| SMSG_CLASS_CHANGE || 0x01b0 || 11 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1988 BeingRecv::processClassChange] || 0 || msg.readBeingId("being id");<br>msg.readUInt8("type");<br>msg.readInt32("class");
| SMSG_CLASS_CHANGE || 0x01b0 || 11 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1988 BeingRecv::processClassChange] || 0 || msg.readBeingId("being id");<br>msg.readUInt8("type");<br>msg.readInt32("class");
|-
|-
| SMSG_CHAT_TALKIE_BOX || 0x0191 || 86 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L797 ChatRecv::processChatTalkieBox] || 0 || msg.readBeingId("being id");<br>const std::string message = msg.readString(80, "message");
| SMSG_CHAT_TALKIE_BOX || 0x0191 || 86 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L797 ChatRecv::processChatTalkieBox] || 0 || msg.readBeingId("being id");<br>const std::string message = msg.readString(80, "message");
|-
|-
| SMSG_CHAT_SILENCE || 0x014b || 27 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L778 ChatRecv::processChatSilence] || 0 || const int result = msg.readUInt8("type");<br>const std::string name = msg.readString(24, "gm name");
| SMSG_CHAT_SILENCE || 0x014b || 27 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L778 ChatRecv::processChatSilence] || 0 || const int result = msg.readUInt8("type");<br>const std::string name = msg.readString(24, "gm name");
|-
|-
| SMSG_CHAT_ROOM_SETTINGS || 0x00df || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L701 ChatRecv::processChatRoomSettings] || 0 || const int sz = msg.readInt16("len") - 17;<br>const BeingId ownerId = msg.readBeingId("owner id");<br>const int chatId = msg.readInt32("chat id");<br>const uint16_t limit = msg.readInt16("limit");<br>msg.readInt16("users");<br>const uint8_t type = msg.readUInt8("type");<br>const std::string &title = msg.readString(sz, "title");
| SMSG_CHAT_ROOM_SETTINGS || 0x00df || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L701 ChatRecv::processChatRoomSettings] || 0 || const int sz = msg.readInt16("len") - 17;<br>const BeingId ownerId = msg.readBeingId("owner id");<br>const int chatId = msg.readInt32("chat id");<br>const uint16_t limit = msg.readInt16("limit");<br>msg.readInt16("users");<br>const uint8_t type = msg.readUInt8("type");<br>const std::string &title = msg.readString(sz, "title");
|-
|-
| SMSG_CHAT_ROOM_ROLE_CHANGE || 0x00e1 || 30 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L727 ChatRecv::processChatRoomRoleChange] || 0 || const int role = msg.readInt32("role");<br>const std::string name = msg.readString(24, "name");
| SMSG_CHAT_ROOM_ROLE_CHANGE || 0x00e1 || 30 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L727 ChatRecv::processChatRoomRoleChange] || 0 || const int role = msg.readInt32("role");<br>const std::string name = msg.readString(24, "name");
|-
|-
| SMSG_CHAT_ROOM_LEAVE || 0x00dd || 29 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L458 ChatRecv::processChatRoomLeave] || 0 || msg.readInt16("users");<br>const std::string name = msg.readString(24, "name");<br>const int status = msg.readUInt8("flag");  // 0 - left, 1 - kicked
| SMSG_CHAT_ROOM_LEAVE || 0x00dd || 29 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L458 ChatRecv::processChatRoomLeave] || 0 || msg.readInt16("users");<br>const std::string name = msg.readString(24, "name");<br>const int status = msg.readUInt8("flag");  // 0 - left, 1 - kicked
|-
|-
| SMSG_CHAT_ROOM_JOIN_FAILED || 0x00da || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L658 ChatRecv::processChatRoomJoinFailed] || 0 || const int result = msg.readUInt8("flag");
| SMSG_CHAT_ROOM_JOIN_FAILED || 0x00da || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L658 ChatRecv::processChatRoomJoinFailed] || 0 || const int result = msg.readUInt8("flag");
|-
|-
| SMSG_CHAT_ROOM_JOIN_ACK || 0x00db || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L423 ChatRecv::processChatRoomJoinAck] || 0 || const int count = (msg.readInt16("len") - 8) / 28;<br>const int id = msg.readInt32("chat id");<br>msg.readInt32("role");<br>msg.readString(24, "name");
| SMSG_CHAT_ROOM_JOIN_ACK || 0x00db || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L423 ChatRecv::processChatRoomJoinAck] || 0 || const int count = (msg.readInt16("len") - 8) / 28;<br>const int id = msg.readInt32("chat id");<br>msg.readInt32("role");<br>msg.readString(24, "name");
|-
|-
| SMSG_CHAT_ROOM_DESTROY || 0x00d8 || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L650 ChatRecv::processChatRoomDestroy] || 0 || const int chatId = msg.readInt32("chat id");
| SMSG_CHAT_ROOM_DESTROY || 0x00d8 || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L650 ChatRecv::processChatRoomDestroy] || 0 || const int chatId = msg.readInt32("chat id");
|-
|-
| SMSG_CHAT_ROOM_CREATE_ACK || 0x00d6 || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L617 ChatRecv::processChatRoomCreateAck] || 0 || const int result = msg.readUInt8("flag");
| SMSG_CHAT_ROOM_CREATE_ACK || 0x00d6 || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L617 ChatRecv::processChatRoomCreateAck] || 0 || const int result = msg.readUInt8("flag");
|-
|-
| SMSG_CHAT_ROOM_ADD_MEMBER || 0x00dc || 28 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L692 ChatRecv::processChatRoomAddMember] || 0 || msg.readInt16("users");<br>const std::string name = msg.readString(24, "name");
| SMSG_CHAT_ROOM_ADD_MEMBER || 0x00dc || 28 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L692 ChatRecv::processChatRoomAddMember] || 0 || msg.readInt16("users");<br>const std::string name = msg.readString(24, "name");
|-
|-
| SMSG_CHAT_IGNORE_LIST || 0x00d4 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L397 ChatRecv::processChatIgnoreList] || 0 || const int count = (msg.readInt16("len") - 4) / 24;<br>msg.readString(24, "nick");
| SMSG_CHAT_IGNORE_LIST || 0x00d4 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L397 ChatRecv::processChatIgnoreList] || 0 || const int count = (msg.readInt16("len") - 4) / 24;<br>msg.readString(24, "nick");
|-
|-
| SMSG_CHAT_DISPLAY || 0x00d7 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L406 ChatRecv::processChatDisplay] || 0 || const int len = msg.readInt16("len") - 17;<br>obj->ownerId = msg.readBeingId("owner account id");<br>obj->chatId = msg.readInt32("chat id");<br>obj->maxUsers = msg.readInt16("max users");<br>obj->currentUsers = msg.readInt16("current users");<br>obj->type = msg.readUInt8("type");<br>obj->title = msg.readString(len, "title");
| SMSG_CHAT_DISPLAY || 0x00d7 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L406 ChatRecv::processChatDisplay] || 0 || const int len = msg.readInt16("len") - 17;<br>obj->ownerId = msg.readBeingId("owner account id");<br>obj->chatId = msg.readInt32("chat id");<br>obj->maxUsers = msg.readInt16("max users");<br>obj->currentUsers = msg.readInt16("current users");<br>obj->type = msg.readUInt8("type");<br>obj->title = msg.readString(len, "title");
|-
|-
| SMSG_CHAR_SWITCH_RESPONSE || 0x00b3 || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/gamerecv.cpp#L57 Ea::GameRecv::processCharSwitchResponse] || 0 || if (msg.readUInt8("response") != 0U)
| SMSG_CHAR_SWITCH_RESPONSE || 0x00b3 || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/gamerecv.cpp#L57 Ea::GameRecv::processCharSwitchResponse] || 0 || if (msg.readUInt8("response") != 0U)
|-
|-
| SMSG_CHAR_BAN_CHAR_LIST || 0x020d || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/charserverrecv.cpp#L571 CharServerRecv::processCharBanCharList] || 0 || const int count = (msg.readInt16("len") - 4) / 24;<br>msg.readInt32("char id");<br>msg.readString(20, "unbun time");
| SMSG_CHAR_BAN_CHAR_LIST || 0x020d || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/charserverrecv.cpp#L571 CharServerRecv::processCharBanCharList] || 0 || const int count = (msg.readInt16("len") - 4) / 24;<br>msg.readInt32("char id");<br>msg.readString(20, "unbun time");
|-
|-
| SMSG_CART_REMOVE || 0x012b || 2 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L0 InventoryRecv::processCartRemove] || 0 ||  
| SMSG_CART_REMOVE || 0x012b || 2 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L0 InventoryRecv::processCartRemove] || 0 ||  
|-
|-
| SMSG_CART_INFO || 0x0121 || 14 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L924 InventoryRecv::processCartInfo] || 0 || msg.readInt16("cart items used");<br>const int size = msg.readInt16("max cart items");<br>msg.readInt32("cart weight"),<br>msg.readInt32("max cart weight"),
| SMSG_CART_INFO || 0x0121 || 14 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L924 InventoryRecv::processCartInfo] || 0 || msg.readInt16("cart items used");<br>const int size = msg.readInt16("max cart items");<br>msg.readInt32("cart weight"),<br>msg.readInt32("max cart weight"),
|-
|-
| SMSG_BLADE_STOP || 0x01d1 || 14 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L2008 BeingRecv::processBladeStop] || 0 || msg.readInt32("src being id");<br>msg.readInt32("dst being id");<br>msg.readInt32("flag");
| SMSG_BLADE_STOP || 0x01d1 || 14 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L2008 BeingRecv::processBladeStop] || 0 || msg.readInt32("src being id");<br>msg.readInt32("dst being id");<br>msg.readInt32("flag");
|-
|-
| SMSG_BIND_ITEM || 0x02d3 || 4 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1369 InventoryRecv::processBindItem] || 0 || const int index = msg.readInt16("item index") - INVENTORY_OFFSET;
| SMSG_BIND_ITEM || 0x02d3 || 4 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/inventoryrecv.cpp#L1369 InventoryRecv::processBindItem] || 0 || const int index = msg.readInt16("item index") - INVENTORY_OFFSET;
|-
|-
| SMSG_BEING_STAT_UPDATE_1 || 0x01ab || 12 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1868 BeingRecv::processBeingStatUpdate1] || 0 || const BeingId id = msg.readBeingId("account id");<br>const int type = msg.readInt16("type");<br>const int value = msg.readInt32("value");
| SMSG_BEING_STAT_UPDATE_1 || 0x01ab || 12 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1868 BeingRecv::processBeingStatUpdate1] || 0 || const BeingId id = msg.readBeingId("account id");<br>const int type = msg.readInt16("type");<br>const int value = msg.readInt32("value");
|-
|-
| SMSG_BEING_SPECIAL_EFFECT || 0x01f3 || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1496 BeingRecv::processBeingSpecialEffect] || 0 || const BeingId id = msg.readBeingId("being id");<br>msg.readInt32("effect type");<br>const int effectType = msg.readInt32("effect type");
| SMSG_BEING_SPECIAL_EFFECT || 0x01f3 || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1496 BeingRecv::processBeingSpecialEffect] || 0 || const BeingId id = msg.readBeingId("being id");<br>msg.readInt32("effect type");<br>const int effectType = msg.readInt32("effect type");
|-
|-
| SMSG_BEING_SOUND_EFFECT || 0x01d3 || 35 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1552 BeingRecv::processBeingSoundEffect] || 0 || msg.readString(24, "sound effect name");<br>msg.readUInt8("type");<br>msg.readInt32("unused");<br>msg.readInt32("source being id");
| SMSG_BEING_SOUND_EFFECT || 0x01d3 || 35 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1552 BeingRecv::processBeingSoundEffect] || 0 || msg.readString(24, "sound effect name");<br>msg.readUInt8("type");<br>msg.readInt32("unused");<br>msg.readInt32("source being id");
|-
|-
| SMSG_BEING_SLIDE || 0x01ff || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L2033 BeingRecv::processBeingSlide] || 0 || msg.readBeingId("being id"));<br>const int x = msg.readInt16("x");<br>const int y = msg.readInt16("y");
| SMSG_BEING_SLIDE || 0x01ff || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L2033 BeingRecv::processBeingSlide] || 0 || msg.readBeingId("being id"));<br>const int x = msg.readInt16("x");<br>const int y = msg.readInt16("y");
|-
|-
| SMSG_BEING_SELFEFFECT || 0x019b || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1895 BeingRecv::processBeingSelfEffect] || 0 || const BeingId id = msg.readBeingId("being id");<br>msg.readInt32("effect type");<br>const int effectType = msg.readInt32("effect type");
| SMSG_BEING_SELFEFFECT || 0x019b || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1895 BeingRecv::processBeingSelfEffect] || 0 || const BeingId id = msg.readBeingId("being id");<br>msg.readInt32("effect type");<br>const int effectType = msg.readInt32("effect type");
|-
|-
| SMSG_BEING_RESURRECT || 0x0148 || 8 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1667 BeingRecv::processBeingResurrect] || 0 || const BeingId id = msg.readBeingId("being id");<br>msg.readInt16("unused");
| SMSG_BEING_RESURRECT || 0x0148 || 8 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1667 BeingRecv::processBeingResurrect] || 0 || const BeingId id = msg.readBeingId("being id");<br>msg.readInt16("unused");
|-
|-
| SMSG_BEING_REMOVE_SKILL || 0x0120 || 6 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1821 BeingRecv::processBeingRemoveSkill] || 0 || const BeingId id = msg.readBeingId("skill unit id");
| SMSG_BEING_REMOVE_SKILL || 0x0120 || 6 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1821 BeingRecv::processBeingRemoveSkill] || 0 || const BeingId id = msg.readBeingId("skill unit id");
|-
|-
| SMSG_BEING_REMOVE || 0x0080 || 7 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/beingrecv.cpp#L71 Ea::BeingRecv::processBeingRemove] || 0 || const BeingId id = msg.readBeingId("being id");<br>const uint8_t type = msg.readUInt8("remove flag");
| SMSG_BEING_REMOVE || 0x0080 || 7 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/beingrecv.cpp#L71 Ea::BeingRecv::processBeingRemove] || 0 || const BeingId id = msg.readBeingId("being id");<br>const uint8_t type = msg.readUInt8("remove flag");
|-
|-
| SMSG_BEING_NAME_RESPONSE || 0x0095 || 30 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/beingrecv.cpp#L283 Ea::BeingRecv::processNameResponse] || 0 || const BeingId beingId = msg.readBeingId("being id");<br>const std::string name = msg.readString(24, "name");
| SMSG_BEING_NAME_RESPONSE || 0x0095 || 30 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/beingrecv.cpp#L283 Ea::BeingRecv::processNameResponse] || 0 || const BeingId beingId = msg.readBeingId("being id");<br>const std::string name = msg.readString(24, "name");
|-
|-
| SMSG_BEING_MOVE2 || 0x0086 || 16 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1203 BeingRecv::processBeingMove2] || 0 || msg.readBeingId("being id"));<br>msg.readCoordinatePair(srcX, srcY, dstX, dstY, "move path");<br>msg.readUInt8("(sx<<4) | (sy&0x0f)");<br>msg.readInt32("tick");
| SMSG_BEING_MOVE2 || 0x0086 || 16 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1203 BeingRecv::processBeingMove2] || 0 || msg.readBeingId("being id"));<br>msg.readCoordinatePair(srcX, srcY, dstX, dstY, "move path");<br>msg.readUInt8("(sx<<4) | (sy&0x0f)");<br>msg.readInt32("tick");
|-
|-
| SMSG_BEING_EMOTION || 0x00c0 || 7 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/beingrecv.cpp#L253 Ea::BeingRecv::processBeingEmotion] || 0 || msg.readBeingId("being id"));<br>msg.readUInt8("emote");<br>const uint8_t emote = msg.readUInt8("emote");
| SMSG_BEING_EMOTION || 0x00c0 || 7 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/beingrecv.cpp#L253 Ea::BeingRecv::processBeingEmotion] || 0 || msg.readBeingId("being id"));<br>msg.readUInt8("emote");<br>const uint8_t emote = msg.readUInt8("emote");
|-
|-
| SMSG_BEING_CHAT || 0x008d || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/chatrecv.cpp#L559 ChatRecv::processBeingChat] || 0 || const int chatMsgLength = msg.readInt16("len") - 8;<br>Being *const being = actorManager->findBeing(msg.readBeingId("being id"));<br>std::string chatMsg = msg.readRawString(chatMsgLength, "message");
| SMSG_BEING_CHAT || 0x008d || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/chatrecv.cpp#L559 ChatRecv::processBeingChat] || 0 || const int chatMsgLength = msg.readInt16("len") - 8;<br>Being *const being = actorManager->findBeing(msg.readBeingId("being id"));<br>std::string chatMsg = msg.readRawString(chatMsgLength, "message");
|-
|-
| SMSG_BEING_CHANGE_DIRECTION || 0x009c || 9 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/beingrecv.cpp#L1472 BeingRecv::processBeingChangeDirection] || 0 || msg.readBeingId("being id"));<br>msg.readInt16("head direction");<br>CAST_U8(msg.readUInt8("player direction") & 0x0FU));
| SMSG_BEING_CHANGE_DIRECTION || 0x009c || 9 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/beingrecv.cpp#L1472 BeingRecv::processBeingChangeDirection] || 0 || msg.readBeingId("being id"));<br>msg.readInt16("head direction");<br>CAST_U8(msg.readUInt8("player direction") & 0x0FU));
|-
|-
| SMSG_BEING_ACTION || 0x008a || 29 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/beingrecv.cpp#L158 Ea::BeingRecv::processBeingAction] || 0 || msg.readBeingId("src being id"));<br>msg.readBeingId("dst being id"));<br>msg.readInt32("tick");<br>const int srcSpeed = msg.readInt32("src speed");<br>msg.readInt32("dst speed");<br>const int param1 = msg.readInt16("param1");<br>msg.readInt16("param 2");<br>msg.readUInt8("type"));<br>msg.readInt16("param 3");
| SMSG_BEING_ACTION || 0x008a || 29 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/beingrecv.cpp#L158 Ea::BeingRecv::processBeingAction] || 0 || msg.readBeingId("src being id"));<br>msg.readBeingId("dst being id"));<br>msg.readInt32("tick");<br>const int srcSpeed = msg.readInt32("src speed");<br>msg.readInt32("dst speed");<br>const int param1 = msg.readInt16("param1");<br>msg.readInt16("param 2");<br>msg.readUInt8("type"));<br>msg.readInt16("param 3");
|-
|-
| SMSG_BATTLE_QUEUE_ACK || 0x08d8 || 27 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/battlegroundrecv.cpp#L83 BattleGroundRecv::processBattleQueueAck] || 0 || msg.readUInt8("type");<br>msg.readString(24, "bg name");
| SMSG_BATTLE_QUEUE_ACK || 0x08d8 || 27 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/battlegroundrecv.cpp#L83 BattleGroundRecv::processBattleQueueAck] || 0 || msg.readUInt8("type");<br>msg.readString(24, "bg name");
|-
|-
| SMSG_BATTLE_NOTICE_DELETE || 0x08db || 27 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/battlegroundrecv.cpp#L97 BattleGroundRecv::processBattleNoticeDelete] || 0 || msg.readUInt8("type");<br>msg.readString(24, "bg name");
| SMSG_BATTLE_NOTICE_DELETE || 0x08db || 27 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/battlegroundrecv.cpp#L97 BattleGroundRecv::processBattleNoticeDelete] || 0 || msg.readUInt8("type");<br>msg.readString(24, "bg name");
|-
|-
| SMSG_BATTLE_JOINED || 0x08d9 || 30 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/battlegroundrecv.cpp#L104 BattleGroundRecv::processBattleJoined] || 0 || msg.readString(24, "name");<br>msg.readInt32("position");
| SMSG_BATTLE_JOINED || 0x08d9 || 30 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/battlegroundrecv.cpp#L104 BattleGroundRecv::processBattleJoined] || 0 || msg.readString(24, "name");<br>msg.readInt32("position");
|-
|-
| SMSG_BATTLE_BEGINS || 0x08df || 50 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/battlegroundrecv.cpp#L90 BattleGroundRecv::processBattleBegins] || 0 || msg.readString(24, "bg name");<br>msg.readString(24, "game name");
| SMSG_BATTLE_BEGINS || 0x08df || 50 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/battlegroundrecv.cpp#L90 BattleGroundRecv::processBattleBegins] || 0 || msg.readString(24, "bg name");<br>msg.readString(24, "game name");
|-
|-
| SMSG_ADMIN_SET_TILE_TYPE || 0x0192 || 24 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/adminrecv.cpp#L43 AdminRecv::processSetTileType] || 0 || msg.readInt16("x");<br>msg.readInt16("y");<br>msg.readInt16("type");<br>msg.readString(16, "map name");
| SMSG_ADMIN_SET_TILE_TYPE || 0x0192 || 24 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/adminrecv.cpp#L43 AdminRecv::processSetTileType] || 0 || msg.readInt16("x");<br>msg.readInt16("y");<br>msg.readInt16("type");<br>msg.readString(16, "map name");
|-
|-
| SMSG_ADMIN_KICK_ACK || 0x00cd || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/adminrecv.cpp#L38 Ea::AdminRecv::processKickAck] || 0 || if (msg.readInt32("flag") == 0)
| SMSG_ADMIN_KICK_ACK || 0x00cd || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/adminrecv.cpp#L38 Ea::AdminRecv::processKickAck] || 0 || if (msg.readInt32("flag") == 0)
|-
|-
| SMSG_ADMIN_GET_LOGIN_ACK || 0x01e0 || 30 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/adminrecv.cpp#L35 AdminRecv::processAdminGetLoginAck] || 0 || msg.readBeingId("account id");<br>msg.readString(24, "login");
| SMSG_ADMIN_GET_LOGIN_ACK || 0x01e0 || 30 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/adminrecv.cpp#L35 AdminRecv::processAdminGetLoginAck] || 0 || msg.readBeingId("account id");<br>msg.readString(24, "login");
|-
|-
| SMSG_MAP_NOT_FOUND || 0x0840 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/generalrecv.cpp#L196 GeneralRecv::processMapNotFound] || 0 || const int sz = msg.readInt16("len") - 4;<br>msg.readString(sz, "map name?");
| SMSG_MAP_NOT_FOUND || 0x0840 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/generalrecv.cpp#L196 GeneralRecv::processMapNotFound] || 0 || const int sz = msg.readInt16("len") - 4;<br>msg.readString(sz, "map name?");
|-
|-
| SMSG_CHAR_RENAME || 0x0290 || 4 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/charserverrecv.cpp#L427 CharServerRecv::processCharRename] || 0 || const int flag = msg.readInt16("flag");
| SMSG_CHAR_RENAME || 0x0290 || 4 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/charserverrecv.cpp#L427 CharServerRecv::processCharRename] || 0 || const int flag = msg.readInt16("flag");
|-
|-
| SMSG_CHAR_PINCODE_EDIT_STATUS || 0x08bf || 8 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/charserverrecv.cpp#L382 CharServerRecv::processPincodeEditStatus] || 0 || msg.readInt16("state");<br>msg.readInt32("seed");
| SMSG_CHAR_PINCODE_EDIT_STATUS || 0x08bf || 8 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/charserverrecv.cpp#L382 CharServerRecv::processPincodeEditStatus] || 0 || msg.readInt16("state");<br>msg.readInt32("seed");
|-
|-
| SMSG_CHAR_PINCODE_MAKE_STATUS || 0x08bb || 8 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/charserverrecv.cpp#L375 CharServerRecv::processPincodeMakeStatus] || 0 || msg.readInt16("state");<br>msg.readInt32("seed");
| SMSG_CHAR_PINCODE_MAKE_STATUS || 0x08bb || 8 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/charserverrecv.cpp#L375 CharServerRecv::processPincodeMakeStatus] || 0 || msg.readInt16("state");<br>msg.readInt32("seed");
|-
|-
| SMSG_CHAR_PINCODE_STATUS || 0x08b9 || 12 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/charserverrecv.cpp#L350 CharServerRecv::processPincodeStatus] || 0 || pincodeManager.setSeed(msg.readUInt32("pincode seed"));<br>pincodeManager.setAccountId(msg.readBeingId("account id"));<br>msg.readInt16("state"))) == false)
| SMSG_CHAR_PINCODE_STATUS || 0x08b9 || 12 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/charserverrecv.cpp#L350 CharServerRecv::processPincodeStatus] || 0 || pincodeManager.setSeed(msg.readUInt32("pincode seed"));<br>pincodeManager.setAccountId(msg.readBeingId("account id"));<br>msg.readInt16("state"))) == false)
|-
|-
| SMSG_CHAR_LOGIN_ERROR || 0x006c || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/charserverrecv.cpp#L46 Ea::CharServerRecv::processCharLoginError] || 0 || switch (msg.readUInt8("error"))
| SMSG_CHAR_LOGIN_ERROR || 0x006c || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/charserverrecv.cpp#L46 Ea::CharServerRecv::processCharLoginError] || 0 || switch (msg.readUInt8("error"))
|-
|-
| SMSG_CHAR_LOGIN2 || 0x082d || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/charserverrecv.cpp#L259 CharServerRecv::processCharLogin2] || 0 || msg.readInt16("len");<br>msg.readUInt8("char slots");<br>msg.readUInt8("left slots");<br>msg.readUInt8("left slots");<br>msg.readUInt8("char slots");<br>msg.readUInt8("char slots");
| SMSG_CHAR_LOGIN2 || 0x082d || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/charserverrecv.cpp#L259 CharServerRecv::processCharLogin2] || 0 || msg.readInt16("len");<br>msg.readUInt8("char slots");<br>msg.readUInt8("left slots");<br>msg.readUInt8("left slots");<br>msg.readUInt8("char slots");<br>msg.readUInt8("char slots");
|-
|-
| SMSG_CHAR_LOGIN || 0x006b || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/charserverrecv.cpp#L220 CharServerRecv::processCharLogin] || 0 || msg.readInt16("packet len");<br>slots = msg.readInt8("MAX_CHARS");<br>msg.readInt8("sd->char_slots");<br>msg.readInt8("MAX_CHARS");
| SMSG_CHAR_LOGIN || 0x006b || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/charserverrecv.cpp#L220 CharServerRecv::processCharLogin] || 0 || msg.readInt16("packet len");<br>slots = msg.readInt8("MAX_CHARS");<br>msg.readInt8("sd->char_slots");<br>msg.readInt8("MAX_CHARS");
|-
|-
| SMSG_CHAR_DELETE_SUCCEEDED || 0x006f || 2 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/charserverrecv.cpp#L0 Ea::CharServerRecv::processCharDelete] || 0 ||  
| SMSG_CHAR_DELETE_SUCCEEDED || 0x006f || 2 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/charserverrecv.cpp#L0 Ea::CharServerRecv::processCharDelete] || 0 ||  
|-
|-
| SMSG_CHAR_DELETE_FAILED || 0x0070 || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/charserverrecv.cpp#L495 CharServerRecv::processCharDeleteFailed] || 0 || msg.readUInt8("error");
| SMSG_CHAR_DELETE_FAILED || 0x0070 || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/charserverrecv.cpp#L495 CharServerRecv::processCharDeleteFailed] || 0 || msg.readUInt8("error");
|-
|-
| SMSG_CHAR_DELETE2_CANCEL_ACK || 0x082c || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/charserverrecv.cpp#L538 CharServerRecv::processCharDelete2CancelAck] || 0 || msg.readInt32("char id");<br>msg.readInt32("result");
| SMSG_CHAR_DELETE2_CANCEL_ACK || 0x082c || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/charserverrecv.cpp#L538 CharServerRecv::processCharDelete2CancelAck] || 0 || msg.readInt32("char id");<br>msg.readInt32("result");
|-
|-
| SMSG_CHAR_DELETE2_ACK || 0x0828 || 14 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/charserverrecv.cpp#L521 CharServerRecv::processCharDelete2Ack] || 0 || msg.readInt32("char id");<br>msg.readInt32("result");<br>msg.readInt32("time");
| SMSG_CHAR_DELETE2_ACK || 0x0828 || 14 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/charserverrecv.cpp#L521 CharServerRecv::processCharDelete2Ack] || 0 || msg.readInt32("char id");<br>msg.readInt32("result");<br>msg.readInt32("time");
|-
|-
| SMSG_CHAR_DELETE2_ACCEPT_ACTUAL_ACK || 0x082a || 10 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/charserverrecv.cpp#L531 CharServerRecv::processCharDelete2AcceptActual] || 0 || msg.readInt32("char id");<br>msg.readInt32("result");
| SMSG_CHAR_DELETE2_ACCEPT_ACTUAL_ACK || 0x082a || 10 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/charserverrecv.cpp#L531 CharServerRecv::processCharDelete2AcceptActual] || 0 || msg.readInt32("char id");<br>msg.readInt32("result");
|-
|-
| SMSG_CHAR_CREATE_SUCCEEDED || 0x006d || 149 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/charserverrecv.cpp#L0 CharServerRecv::processCharCreate] || 0 ||  
| SMSG_CHAR_CREATE_SUCCEEDED || 0x006d || 149 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/charserverrecv.cpp#L0 CharServerRecv::processCharCreate] || 0 ||  
|-
|-
| SMSG_CHAR_CREATE_FAILED || 0x006e || 3 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/charserverrecv.cpp#L69 Ea::CharServerRecv::processCharCreateFailed] || 0 || switch (msg.readUInt8("error"))
| SMSG_CHAR_CREATE_FAILED || 0x006e || 3 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/charserverrecv.cpp#L69 Ea::CharServerRecv::processCharCreateFailed] || 0 || switch (msg.readUInt8("error"))
|-
|-
| SMSG_CHAR_CHECK_RENAME || 0x028e || 4 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/charserverrecv.cpp#L403 CharServerRecv::processCharCheckRename] || 0 || if (msg.readInt16("flag") != 0)<br>outMsg.writeBeingId(mRenameId, "char id");
| SMSG_CHAR_CHECK_RENAME || 0x028e || 4 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/charserverrecv.cpp#L403 CharServerRecv::processCharCheckRename] || 0 || if (msg.readInt16("flag") != 0)<br>outMsg.writeBeingId(mRenameId, "char id");
|-
|-
| SMSG_CHAR_CHANGE_SLOT || 0x08d5 || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/charserverrecv.cpp#L486 CharServerRecv::processCharChangeSlot] || 0 || msg.readInt16("len");<br>msg.readInt16("flag");  // 0 - ok, 1 - error<br>msg.readInt16("unused");
| SMSG_CHAR_CHANGE_SLOT || 0x08d5 || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/charserverrecv.cpp#L486 CharServerRecv::processCharChangeSlot] || 0 || msg.readInt16("len");<br>msg.readInt16("flag");  // 0 - ok, 1 - error<br>msg.readInt16("unused");
|-
|-
| SMSG_LOGIN_ERROR || 0x006a || 23 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/ea/loginrecv.cpp#L68 Ea::LoginRecv::processLoginError] || 0 || const uint8_t code = msg.readUInt8("error");<br>std::string date = msg.readString(20, "date");
| SMSG_LOGIN_ERROR || 0x006a || 23 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/ea/loginrecv.cpp#L68 Ea::LoginRecv::processLoginError] || 0 || const uint8_t code = msg.readUInt8("error");<br>std::string date = msg.readString(20, "date");
|-
|-
| SMSG_LOGIN_CODING_KEY || 0x01dc || -1 || [https://gitlab.com/themanaworld/manaplus/manaplus/-/blob/master/src/net/eathena/loginrecv.cpp#L202 LoginRecv::processCondingKey] || 0 || const int sz = msg.readInt16("len") - 4;<br>msg.readString(sz, "coding key");
| SMSG_LOGIN_CODING_KEY || 0x01dc || -1 || [https://git.themanaworld.org/mana/plus/-/blob/master/src/net/eathena/loginrecv.cpp#L202 LoginRecv::processCondingKey] || 0 || const int sz = msg.readInt16("len") - 4;<br>msg.readString(sz, "coding key");
|-
|-
| SMSG_TRADE_RESPONSE_OUTDATED || 0x00e7 || 3 || nullptr || 0 ||  
| SMSG_TRADE_RESPONSE_OUTDATED || 0x00e7 || 3 || nullptr || 0 ||  

Latest revision as of 01:00, 13 June 2022

eAthena Packets

This packet table is generated also one known cast bug feel free to update (debug) the table

PacketName PacketType PacketLen PacketLoc PacketVersion PacketSrc
SMSG_SKILL_WARP_POINT 0x0abe -1 SkillRecv::processSkillWarpPoint2 20170419 const int count = (msg.readInt16("len") - 6) / 16;
const int skillId = msg.readInt16("skill id");
dialog->addText(msg.readString(16, "map name"));
SMSG_CHANGE_MAP_SERVER 0x0ac7 156 CharServerRecv::processChangeMapServer 20170315 GameHandler::setMap(msg.readString(16, "map name"));
const int x = msg.readInt16("x");
const int y = msg.readInt16("y");
msg.readInt32("host");
server.hostname = ipToString(msg.readInt32("host"));
server.port = msg.readInt16("port");
msg.readInt32("unknown");
SMSG_PARTY_MEMBER_DEAD 0x0ab2 7 PartyRecv::processPartyMemberDead 20170524 const BeingId id = msg.readBeingId("account id");
const int isDead = msg.readUInt8("is dead");
SMSG_PARTY_INFO 0x0a44 -1 PartyRecv::processPartyInfo 20170524 const int length = msg.readInt16("len");
const std::string name = msg.readString(24, "party name");
msg.readString(24, "party name");
const BeingId id = msg.readBeingId("account id");
msg.readBeingId("char id");
std::string nick = msg.readString(24, "nick");
std::string map = msg.readString(16, "map name");
const bool leader = msg.readUInt8("leader") == 0U;
const bool online = msg.readUInt8("online") == 0U;
msg.readInt16("class");
level = msg.readInt16("level");
msg.readInt8("pickup item share (&1)");
msg.readInt8("get item share (&2)");
msg.readInt32("unknown");
SMSG_PARTY_MEMBER_INFO 0x0a43 85 PartyRecv::processPartyMemberInfo 20170524 const BeingId id = msg.readBeingId("account id");
msg.readBeingId("char id");
const bool leader = msg.readInt32("leader") == 0U;
msg.readInt16("class");
level = msg.readInt16("level");
const int x = msg.readInt16("x");
const int y = msg.readInt16("y");
const bool online = msg.readInt8("online") == 0U;
msg.readString(24, "party name");
const std::string nick = msg.readString(24, "player name");
const std::string map = msg.readString(16, "map name");
msg.readInt8("pickup item share (&1)");
msg.readInt8("get item share (&2)");
SMSG_PARTY_MEMBER_JOB_LEVEL 0x0abd 10 PartyRecv::processPartyMemberJobLevel 20170502 const BeingId id = msg.readBeingId("account id");
msg.readInt16("class");
const int level = msg.readInt16("level");
SMSG_MAIL2_MAIL_LIST_PAGE 0x0ac2 -1 Mail2Recv::processMailListPage 20170419 msg.readInt16("len");
mailWindow->setOpenType(fromInt(msg.readUInt8("open type"),
const int cnt = msg.readUInt8("cnt");
isEnd = msg.readUInt8("isEnd") != 0;
mail->id = msg.readInt64("mail id");
mail->read = msg.readUInt8("is read") != 0U ? true : false;
msg.readUInt8("type"));
mail->sender = msg.readString(24, "sender name");
mail->time = CAST_S32(cur_time - msg.readInt32("reg time"));
mail->expireTime = msg.readInt32("expire time") + cur_time;
mail->title = msg.readString(-1, "title");
isEnd = msg.readUInt8("isEnd") != 0;
msg.readUInt8("open type");
mail->id = msg.readInt64("mail id");
mail->read = msg.readUInt8("is read") != 0U ? true : false;
msg.readUInt8("type"));
mail->sender = msg.readString(24, "sender name");
mail->expireTime = msg.readInt32("expire time") + cur_time;
mail->title = msg.readString(-1, "title");
SMSG_CHAR_MAP_INFO 0x0ac5 156 CharServerRecv::processCharMapInfo 20170329 PlayerInfo::setCharId(msg.readInt32("char id"));
GameHandler::setMap(msg.readString(16, "map name"));
msg.readInt32("map ip address");
server.hostname = ipToString(msg.readInt32("map ip address"));
server.port = msg.readInt16("map ip port");
msg.readInt32("unused");
SMSG_MAIL2_CHECK_NAME_RESULT 0x0a51 34 Mail2Recv::processCheckNameResult 20160316 const int charId = msg.readInt32("char id");
msg.readInt16("class");
msg.readInt16("level");
msg.readString(24, "name");
SMSG_LOGIN_DATA 0x0ac4 -1 LoginRecv::processLoginData 20170315 msg.readInt16("len");
Ea::LoginRecv::mToken.session_ID1 = msg.readInt32("session id1");
Ea::LoginRecv::mToken.account_ID = msg.readBeingId("accound id");
Ea::LoginRecv::mToken.session_ID2 = msg.readInt32("session id2");
msg.readInt32("old ip");
loginData.lastLogin = msg.readString(24, "last login");
msg.readInt16("unused");
msg.readUInt8("gender") & 3U));
msg.readString(16, "twitter auth token");
msg.readUInt8("twitter flag");
world->address = msg.readInt32("ip address");
world->port = msg.readInt16("port");
world->name = msg.readString(20, "name");
world->online_users = msg.readInt16("online number");
msg.readInt16("maintenance");
msg.readInt16("new");
msg.readInt32("unused2");
SMSG_ITEM_MOVE_FAILED 0x0aa7 6 InventoryRecv::processItemMoveFailed 20161214 const int index = msg.readInt16("index") - INVENTORY_OFFSET;
msg.readInt16("unknown"); // 1
SMSG_REFINE_ADD_ITEM 0x0aa2 -1 RefineRecv::processRefineAddItem 20161130 const int count = (msg.readInt16("len") - 7) / blockSize;
msg.readInt16("item index");
msg.readUInt8("blacksmith blessing");
msg.readItemId("item id");
msg.readUInt8("chance");
msg.readInt32("money");
SMSG_REFINE_WINDOW_OPEN 0x0aa0 2 RefineRecv::processRefineOpen 20161130
SMSG_GUILD_MEMBER_LIST 0x0aa5 -1 GuildRecv::processGuildMemberList 20161026 const int length = msg.readInt16("len");
const BeingId id = msg.readBeingId("account id");
const int charId = msg.readInt32("char id");
msg.readInt16("hair");
msg.readInt16("hair color");
const int gender = msg.readInt16("gender");
const int race = msg.readInt16("class");
const int level = msg.readInt16("level");
const int exp = msg.readInt32("exp");
const int online = msg.readInt32("online");
const int pos = msg.readInt32("position");
name = msg.readString(24, "name");
msg.readInt32("last login"); // for now unused
SMSG_GUILD_EXPULSION_LIST 0x0a87 -1 GuildRecv::processGuildExpulsionList3 20161019 const int length = msg.readInt16("len");
msg.readInt32("char id");
msg.readString(40, "message");
SMSG_GUILD_LEAVE2 0x0a83 46 GuildRecv::processGuildLeave2 20161019 const int charId = msg.readInt32("char id");
msg.readString(40, "message");
SMSG_GUILD_EXPULSION2 0x0a82 46 GuildRecv::processGuildExpulsion2 20161019 msg.readString(40, "message");
const int charId = msg.readInt32("char id");
SMSG_VENDING_ITEMS_LIST 0x0800 -1 VendingRecv::processItemsList 20160921 const int count = (msg.readInt16("len") - offset) / packetLen;
const BeingId id = msg.readBeingId("id");
msg.readInt32("vender id");
const int value = msg.readInt32("price");
const int amount = msg.readInt16("amount");
const int index = msg.readInt16("inv index");
msg.readUInt8("item type"));
const int itemId = msg.readItemId("item id");
msg.readUInt8("identify");
msg.readUInt8("attribute");
msg.readUInt8("refine");
cards[d] = msg.readItemId("card");
const uint16_t idx = msg.readInt16("option index");
const uint16_t val = msg.readInt16("option value");
msg.readUInt8("option param");
msg.readInt32("equip type?");
msg.readInt16("look");
SMSG_PLAYER_INVENTORY_ADD 0x0a37 59 InventoryRecv::processPlayerInventoryAdd 20160921 const int index = msg.readInt16("index") - INVENTORY_OFFSET;
int amount = msg.readInt16("count");
const int itemId = msg.readItemId("item id");
const uint8_t identified = msg.readUInt8("identified");
const uint8_t damaged = msg.readUInt8("is damaged");
const uint8_t refine = msg.readUInt8("refine");
cards[f] = msg.readItemId("card");
equipType = msg.readInt32("location");
equipType = msg.readInt16("location");
msg.readUInt8("item type"));
const unsigned char err = msg.readUInt8("result");
msg.readInt32("hire expire date");
msg.readInt16("bind on equip");
const uint16_t idx = msg.readInt16("option index");
const uint16_t val = msg.readInt16("option value");
msg.readUInt8("option param");
favorite = fromBool(msg.readUInt8("favorite"), Favorite);
msg.readInt16("look");
SMSG_ENCHANT_EQUIPMENT 0x0a3f 9 InventoryRecv::processEnchantEquipment 20160831 msg.readInt16("wear state");
msg.readInt16("card slot");
msg.readItemId("item id");
SMSG_GUILD_BASIC_INFO 0x0a84 94 GuildRecv::processGuildBasicInfo 20160622 const int guildId = msg.readInt32("guild id");
const int level = msg.readInt32("guild level");
const int members = msg.readInt32("connect member");
const int maxMembers = msg.readInt32("max member");
const int avgLevel = msg.readInt32("average level");
const int exp = msg.readInt32("exp");
const int nextExp = msg.readInt32("next exp");
const int emblem = msg.readInt32("emblem id");
std::string name = msg.readString(24, "guild name");
castle = msg.readString(16, "castles");
msg.readInt32("money, unused");
msg.readBeingId("leader char id");
master = msg.readString(24, "master name");
castle = msg.readString(16, "castles");
msg.readInt32("money, unused");
SMSG_FORMAT_MESSAGE_STRING_COLOR 0x0a6f -1 ChatRecv::processFormatMessageStringColor 20160330 const int strLen = msg.readInt16("len") - 10;
const int msgId = msg.readInt16("msg id");
msg.readInt32("color");
const std::string message = msg.readString(strLen, "value");
SMSG_MAP_LOGIN_SUCCESS 0x02eb 13 GameRecv::processMapLogin 20160330 msg.readInt32("start time");
msg.readCoordinates(x, y, direction, "position");
msg.readInt8("x size");
msg.readInt8("y size");
msg.readInt16("font");
msg.readUInt8("sex");
SMSG_SKILL_SCALE 0x0a41 18 SkillRecv::processSkillScale 20151223 msg.readBeingId("being id");
msg.readInt16("skill id");
msg.readInt16("skill level");
msg.readInt16("x");
msg.readInt16("y");
msg.readInt32("cast time");
CMSG_PLAYER_SELECT_STYLE_ACK 0x0a47 3 PlayerRecv::processSelectStyleAck 20151104 msg.readUInt8("flag");
SMSG_SELECT_CART 0x097f -1 InventoryRecv::processSelectCart 20150805 const int count = msg.readInt16("len") - 8;
msg.readBeingId("account id");
msg.readUInt8("cart type");
SMSG_CAMERA_INFO 0x0a78 15 MapRecv::processCameraInfo 20160525 msg.readUInt8("action");
msg.readFloat("range");
msg.readFloat("rotation");
msg.readFloat("latitude");
SMSG_QUEST_NOTIFY_OBJECTIVES 0x08fe -1 QuestRecv::processUpdateQuestsObjectives2 20150513 const int num = (msg.readInt16("len") - 4) / 12;
msg.readInt32("quest id");
msg.readInt32("monster id");
msg.readInt16("max count");
msg.readInt16("count");
SMSG_QUEST_UPDATE_OBJECTIVES 0x09fa -1 QuestRecv::processUpdateQuestsObjectives 20150513 msg.readInt16("len");
const int num = msg.readInt16("objectives count");
msg.readInt32("quest id");
msg.readInt32("hunt ident");
msg.readInt32("hunt ident2");
msg.readInt32("hunt ident");
msg.readInt32("monster id");
msg.readInt16("count old");
msg.readInt16("count new");
SMSG_QUEST_ADD 0x09f9 143 QuestRecv::processAddQuest 20150513 const int var = msg.readInt32("quest id");
const int val = msg.readUInt8("state");
msg.readUInt8("time diff");
msg.readInt32("time");
const int num = msg.readInt16("objectives count");
msg.readInt32("hunt ident");
msg.readInt32("hunt ident2");
msg.readInt32("mob type");
msg.readInt32("hunt ident");
msg.readInt32("mob type");
msg.readInt32("mob id");
msg.readInt16("level min");
msg.readInt16("level max");
msg.readInt16("hunt count");
msg.readInt16("max count");
msg.readString(24, "mob name");
SMSG_QUEST_LIST 0x09f8 -1 QuestRecv::processAddQuests 20150513 msg.readInt16("len");
const int num = msg.readInt32("quests count");
const int var = msg.readInt32("quest id");
const int val = msg.readUInt8("state");
msg.readInt32("time diff");
msg.readInt32("time");
const int cnt = msg.readInt16("objectives count");
msg.readInt32("hunt ident");
msg.readInt32("hunt ident2");
msg.readInt32("mob type");
msg.readInt32("hunt ident");
msg.readInt32("mob type");
msg.readInt32("mob id");
msg.readInt16("level min");
msg.readInt16("level max");
msg.readInt16("hunt count");
msg.readInt16("max count");
msg.readString(24, "mob name");
SMSG_PLAYER_HEAL 0x0a27 8 PlayerRecv::processPlayerHeal 20150513 const int type = msg.readInt16("var id");
amount = msg.readInt32("value");
amount = msg.readInt16("value");
SMSG_BEING_MOVE 0x09fd -1 BeingRecv::processBeingMove 20150513 (sy&0x0f)");
msg.readInt8("xs");
msg.readInt8("ys");
const int level = CAST_S32(msg.readInt16("level"));
msg.readInt16("font");
const int maxHP = msg.readInt32("max hp");
const int hp = msg.readInt32("hp");
msg.readInt8("is boss");
msg.readInt16("body2");
msg.readString(24, "name");
SMSG_BEING_SPAWN 0x09fe -1 BeingRecv::processBeingSpawn 20150513 msg.readInt16("len");
msg.readUInt8("object type"));
const BeingId id = msg.readBeingId("being id");
msg.readBeingId("char id");
int16_t speed = msg.readInt16("speed");
const uint32_t opt1 = msg.readInt16("opt1");
const uint32_t opt2 = msg.readInt16("opt2");
option = msg.readInt32("option");
option = msg.readInt16("option");
const int16_t job = msg.readInt16("class");
const int hairStyle = msg.readInt16("hair style");
weapon = msg.readItemId("weapon");
msg.readItemId("shield");
weapon = CAST_U32(msg.readInt16("weapon"));
const uint16_t headBottom = msg.readInt16("head bottom");
msg.readInt16("shield");
const uint16_t headTop = msg.readInt16("head top");
const uint16_t headMid = msg.readInt16("head mid");
msg.readInt16("hair color"), ItemColor);
const uint16_t shoes = msg.readInt16("shoes or clothes color?");
const uint16_t gloves = msg.readInt16("head dir / gloves");
msg.readInt16("robe");
msg.readInt32("guild id");
msg.readInt16("guild emblem");
dstBeing->setManner(msg.readInt16("manner"));
opt3 = msg.readInt32("opt3");
opt3 = msg.readInt16("opt3");
dstBeing->setKarma(msg.readUInt8("karma"));
const uint8_t gender = CAST_U8(msg.readUInt8("gender") & 3);
msg.readCoordinates(x, y, dir, "position");
msg.readInt8("xs");
msg.readInt8("ys");
const int level = CAST_S32(msg.readInt16("level"));
msg.readInt16("font");
const int maxHP = msg.readInt32("max hp");
const int hp = msg.readInt32("hp");
msg.readInt8("is boss");
msg.readInt16("body2");
msg.readString(24, "name");
SMSG_BEING_VISIBLE 0x09ff -1 BeingRecv::processBeingVisible 20150513 msg.readInt16("len");
msg.readUInt8("object type"));
const BeingId id = msg.readBeingId("being id");
msg.readBeingId("char id");
int16_t speed = msg.readInt16("speed");
const uint32_t opt1 = msg.readInt16("opt1");
const uint32_t opt2 = msg.readInt16("opt2");
option = msg.readInt32("option");
option = msg.readInt16("option");
const int16_t job = msg.readInt16("class");
const int hairStyle = msg.readInt16("hair style");
weapon = msg.readItemId("weapon");
msg.readItemId("shield");
weapon = CAST_U32(msg.readInt16("weapon"));
const uint16_t headBottom = msg.readInt16("head bottom");
msg.readInt16("shield");
const uint16_t headTop = msg.readInt16("head top");
const uint16_t headMid = msg.readInt16("head mid");
const ItemColor hairColor = fromInt(msg.readInt16("hair color"),
const uint16_t shoes = msg.readInt16("shoes or clothes color?");
const uint16_t gloves = msg.readInt16("head dir / gloves");
msg.readInt16("robe");
msg.readInt32("guild id");
msg.readInt16("guild emblem");
dstBeing->setManner(msg.readInt16("manner"));
opt3 = msg.readInt32("opt3");
opt3 = msg.readInt16("opt3");
dstBeing->setKarma(msg.readUInt8("karma"));
const uint8_t gender = CAST_U8(msg.readUInt8("gender") & 3);
msg.readCoordinates(x, y, dir, "position");
msg.readInt8("xs");
msg.readInt8("ys");
applyPlayerAction(msg, dstBeing, msg.readUInt8("action type"));
const int level = CAST_S32(msg.readInt16("level"));
msg.readInt16("font");
const int maxHP = msg.readInt32("max hp");
const int hp = msg.readInt32("hp");
msg.readInt8("is boss");
msg.readInt16("body2");
msg.readString(24, "name");
SMSG_DRESS_ROOM_OPEN 0x0a02 4 PlayerRecv::processDressRoomOpen 20150513 msg.readInt16("view");
SMSG_BEING_HAT_EFFECTS 0x0a3b -1 BeingRecv::processBeingHatEffects 20150507 const int cnt = (msg.readInt16("len") - 9) / 2;
msg.readBeingId("being id");
msg.readUInt8("enable");
msg.readInt16("hat effect");
SMSG_SEARCHSTORE_SEARCH_ACK 0x0836 0 SearchStoreRecv::processSearchAck 20150226 const int count = (msg.readInt16("len") - 7) / (104 + itemIdLen);
msg.readUInt8("is first page");
msg.readUInt8("is next page");
msg.readUInt8("remain uses");
msg.readInt32("store id");
msg.readInt32("aoount id");
msg.readString(80, "store name");
msg.readItemId("item id");
msg.readUInt8("item type");
msg.readInt32("price");
msg.readInt16("amount");
msg.readUInt8("refine");
msg.readItemId("card");
msg.readInt16("option index");
msg.readInt16("option value");
msg.readUInt8("option param");
SMSG_BEING_VIEW_EQUIPMENT 0x0a2d -1 BeingRecv::processBeingViewEquipment 20150226 const int count = (msg.readInt16("len") - 45) / (21 + itemIdLen * 5);
msg.readString(24, "name");
msg.readInt16("job");
msg.readInt16("head");
msg.readInt16("accessory");
msg.readInt16("accessory2");
msg.readInt16("accessory3");
msg.readInt16("robe");
msg.readInt16("hair color");
msg.readInt16("body color");
msg.readUInt8("gender");
msg.readInt16("index");
msg.readItemId("item id");
msg.readUInt8("item type");
msg.readInt32("location");
msg.readInt32("wear state");
msg.readInt8("refine");
msg.readItemId("card");
msg.readInt32("hire expire date (?)");
msg.readInt16("equip type");
msg.readInt16("item sprite number");
msg.readUInt8("flags");
SMSG_PLAYER_STORAGE_EQUIP 0x0a10 -1 InventoryRecv::processPlayerStorageEquip 20150226 msg.readInt16("len");
msg.readString(24, "storage name");
const int index = msg.readInt16("index") - STORAGE_OFFSET;
const int itemId = msg.readItemId("item id");
msg.readUInt8("item type"));
msg.readInt32("location");
msg.readInt32("wear state");
msg.readUInt8("identified");
msg.readInt16("location");
msg.readInt16("wear state");
msg.readUInt8("is damaged");
const uint8_t refine = msg.readUInt8("refine level");
cards[f] = msg.readItemId("card");
msg.readInt32("hire expire date");
msg.readInt16("bind on equip");
msg.readInt16("sprite");
options = new ItemOptionsList(msg.readUInt8("option count"));
const uint16_t idx = msg.readInt16("option index");
const uint16_t val = msg.readInt16("option value");
msg.readUInt8("option param");
flags.byte = msg.readUInt8("flags");
SMSG_PLAYER_CART_EQUIP 0x0a0f -1 InventoryRecv::processPlayerCartEquip 20150226 msg.readInt16("len");
const int index = msg.readInt16("index") - INVENTORY_OFFSET;
const int itemId = msg.readItemId("item id");
msg.readUInt8("item type"));
msg.readInt32("location");
msg.readInt32("wear state");
msg.readUInt8("identified");
msg.readInt16("location");
msg.readInt16("wear state");
msg.readUInt8("is damaged");
const uint8_t refine = msg.readUInt8("refine level");
cards[f] = msg.readItemId("card");
msg.readInt32("hire expire date");
msg.readInt16("bind on equip");
msg.readInt16("sprite");
options = new ItemOptionsList(msg.readUInt8("option count"));
const uint16_t idx = msg.readInt16("option index");
const uint16_t val = msg.readInt16("option value");
msg.readUInt8("option param");
flags.byte = msg.readUInt8("flags");
SMSG_PLAYER_EQUIPMENT 0x0a0d -1 InventoryRecv::processPlayerEquipment 20150226 msg.readInt16("len");
const int index = msg.readInt16("index") - INVENTORY_OFFSET;
const int itemId = msg.readItemId("item id");
msg.readUInt8("item type"));
msg.readInt32("location");
equipType = msg.readInt32("wear state");
msg.readUInt8("identified");
msg.readInt16("location");
equipType = msg.readInt16("wear state");
msg.readUInt8("is damaged");
const uint8_t refine = CAST_U8(msg.readInt8("refine"));
cards[f] = msg.readItemId("card");
msg.readInt32("hire expire date (?)");
msg.readInt16("equip type");
msg.readInt16("item sprite number");
options = new ItemOptionsList(msg.readUInt8("option count"));
const uint16_t idx = msg.readInt16("option index");
const uint16_t val = msg.readInt16("option value");
msg.readUInt8("option param");
flags.byte = msg.readUInt8("flags");
SMSG_PLAYER_CART_ADD 0x0a0b 47 InventoryRecv::processPlayerCartAdd 20150226 const int index = msg.readInt16("index") - INVENTORY_OFFSET;
int amount = msg.readInt32("count");
const int itemId = msg.readItemId("item id");
msg.readUInt8("item type"));
const uint8_t identified = msg.readUInt8("identified");
const Damaged damaged = fromBool(msg.readUInt8("attribute"), Damaged);
const uint8_t refine = msg.readUInt8("refine");
cards[f] = msg.readItemId("card");
const uint16_t idx = msg.readInt16("option index");
const uint16_t val = msg.readInt16("option value");
msg.readUInt8("option param");
SMSG_PLAYER_STORAGE_ADD 0x0a0a 47 InventoryRecv::processPlayerStorageAdd 20150226 const int index = msg.readInt16("index") - STORAGE_OFFSET;
const int amount = msg.readInt32("amount");
const int itemId = msg.readItemId("item id");
itemType = static_cast<ItemTypeT>(msg.readUInt8("type"));
const unsigned char identified = msg.readUInt8("identify");
const Damaged damaged = fromBool(msg.readUInt8("attribute"), Damaged);
const uint8_t refine = msg.readUInt8("refine");
cards[f] = msg.readItemId("card");
const uint16_t idx = msg.readInt16("option index");
const uint16_t val = msg.readInt16("option value");
msg.readUInt8("option param");
SMSG_TRADE_ITEM_ADD 0x0a09 45 TradeRecv::processTradeItemAdd 20150226 const int type = msg.readItemId("item id");
msg.readUInt8("item type"));
const int amount = msg.readInt32("amount");
const uint8_t identify = msg.readUInt8("identify");
const Damaged damaged = fromBool(msg.readUInt8("attribute"), Damaged);
const uint8_t refine = msg.readUInt8("refine");
cards[f] = msg.readItemId("card");
const uint16_t idx = msg.readInt16("option index");
const uint16_t val = msg.readInt16("option value");
msg.readUInt8("option param");
SMSG_VENDING_OPEN 0x0136 -1 VendingRecv::processOpen 20150226 const int count = (msg.readInt16("len") - 8) / packetLen;
msg.readInt32("id");
msg.readInt32("price");
msg.readInt16("inv index");
msg.readInt16("amount");
msg.readUInt8("item type");
msg.readItemId("item id");
msg.readUInt8("identify");
msg.readUInt8("attribute");
msg.readUInt8("refine");
msg.readItemId("card");
msg.readInt16("option index");
msg.readInt16("option value");
msg.readUInt8("option param");
SMSG_PLAYER_GUILD_PARTY_INFO 0x0a30 106 BeingRecv::processPlayerGuilPartyInfo2 20150225 const BeingId beingId = msg.readBeingId("being id");
const std::string name = msg.readString(24, "char name");
dstBeing->setPartyName(msg.readString(24, "party name"));
dstBeing->setGuildName(msg.readString(24, "guild name"));
dstBeing->setGuildPos(msg.readString(24, "guild pos"));
msg.readString(24, "party name");
msg.readString(24, "guild name");
msg.readString(24, "guild pos");
msg.readInt32("title");
SMSG_ACHIEVEMENT_GET_REWARD 0x0a26 6 AchievementRecv::processAchievementGetReward 20150225 msg.readUInt8("received");
msg.readInt32("ach id");
SMSG_ACHIEVEMENT_UPDATE 0x0a24 66 AchievementRecv::processAchievementUpdate 20150225 msg.readInt32("total points");
msg.readInt16("rank level");
msg.readInt32("rank points");
msg.readInt32("rank points need");
msg.readInt32("ach id");
msg.readUInt8("completed");
msg.readInt32("objective");
msg.readInt32("completed at");
msg.readUInt8("reward");
SMSG_ACHIEVEMENT_LIST 0x0a23 -1 AchievementRecv::processAchievementList 20150225 const int count = (msg.readInt16("len") - 22) / 50;
msg.readInt32("total achievements");
msg.readInt32("total points");
msg.readInt16("rank level");
msg.readInt32("rank points");
msg.readInt32("rank points need");
msg.readInt32("ach id");
msg.readUInt8("completed");
msg.readInt32("objective");
msg.readInt32("completed at");
msg.readUInt8("reward");
SMSG_CHAR_PASSWORD_RESPONSE 0x0062 3 LoginRecv::processCharPasswordResponse 0 const uint8_t errMsg = msg.readUInt8("result code");
SMSG_PLAYER_ATTRS 0x0b25 -1 PlayerRecv::processPlayerAttrs 0 const int len = msg.readInt16("len");
const int groupId = msg.readInt32("group id");
SMSG_QUEST_ADD2 0x0b24 23 QuestRecv::processAddQuest2 0 const int var = msg.readInt32("quest id");
msg.readUInt8("state");
const int val1 = msg.readInt32("count1");
const int val2 = msg.readInt32("count2");
const int val3 = msg.readInt32("count3");
const int time = msg.readInt32("time");
SMSG_QUEST_LIST2 0x0b23 -1 QuestRecv::processAddQuests2 0 msg.readInt16("len");
const int num = msg.readInt32("quests count");
const int var = msg.readInt32("quest id");
msg.readUInt8("state");
const int val1 = msg.readInt32("count1");
const int val2 = msg.readInt32("count2");
const int val3 = msg.readInt32("count3");
const int time = msg.readInt32("time");
SMSG_HOMUNCULUS_EXP 0x0b22 10 HomunculusRecv::processHomunculusExp 0 const int exp = msg.readInt32("exp");
msg.readInt32("unused");
SMSG_WALK_ERROR 0x0b21 10 PlayerRecv::processWalkError 0 msg.readInt32("tick");
const int x = msg.readInt16("x");
const int y = msg.readInt16("y");
SMSG_PLAYER_UPDATE_SKILL2 0x0b20 -1 SkillRecv::processSkillUpdate2 0 msg.readInt16("len"); // for now unused
const int skillId = msg.readInt16("skill id");
msg.readInt32("inf"));
msg.readInt32("inf2");
const int level = msg.readInt16("skill level");
const int sp = msg.readInt16("sp");
const int range = msg.readInt16("range");
const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
SMSG_PLAYER_ADD_SKILL2 0x0b1f -1 SkillRecv::processSkillAdd2 0 msg.readInt16("len"); // for now unused
const int skillId = msg.readInt16("skill id");
msg.readInt32("inf"));
msg.readInt32("inf2");
const int level = msg.readInt16("skill level");
const int sp = msg.readInt16("sp");
const int range = msg.readInt16("range");
const std::string name = msg.readString(24, "skill name");
const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
SMSG_SKILL_CASTING2 0x0b1e -1 BeingRecv::processSkillCastingEvol 0 msg.readInt16("len"); // for now unused
const BeingId srcId = msg.readBeingId("src id");
const BeingId dstId = msg.readBeingId("dst id");
const int dstX = msg.readInt16("dst x");
const int dstY = msg.readInt16("dst y");
const int skillId = msg.readInt16("skill id");
const int skillLevel = msg.readInt16("skill level");
msg.readInt32("element"); // +++ use different effects
const int castTime = msg.readInt32("cast time");
const int range = msg.readInt32("skill range");
static_cast<SkillType2::SkillType2>(msg.readInt32("inf2"));
SMSG_PLAYER_KILLED_BY 0x0b1d 6 PlayerRecv::processKilledBy 0 const BeingId id = msg.readBeingId("killer id");
SMSG_NPC_SKIN 0x0b1c -1 NpcRecv::processNpcSkin 0 const int len = msg.readInt16("len");
const std::string skin = msg.readString(len - 8, "skin");
msg.readString(len - 8, "skin");
SMSG_MAP_SET_TILES_TYPE 0x0b1b 34 Ea::MapRecv::processSetTilesType 0 const int x1 = msg.readInt16("x1");
const int y1 = msg.readInt16("y1");
const int x2 = msg.readInt16("x2");
const int y2 = msg.readInt16("y2");
const BlockTypeT mask = static_cast<BlockTypeT>(msg.readInt32("mask"));
const int layer = msg.readInt32("layer");
const std::string name = msg.readString(16, "map name");
SMSG_BATTLE_EMBLEM2 0x0b1a 34 BattleGroundRecv::processBattleEmblem2 0 const BeingId id = msg.readBeingId("account id");
msg.readString(24, "name");
msg.readInt16("bg id");
const int teamId = msg.readInt16("team id");
SMSG_ITEM_DROPPED2 0x0b19 28 ItemRecv::processItemDropped2 0 const BeingId id = msg.readBeingId("id");
const int itemId = msg.readInt16("item id"); // +++ need use int32
const ItemTypeT itemType = static_cast<ItemTypeT>(msg.readUInt8("type"));
msg.readUInt8("identify"), Identified);
const Damaged damaged = fromBool(msg.readUInt8("attribute"), Damaged);
const uint8_t refine = msg.readUInt8("refine");
cards[f] = msg.readUInt16("card"); // ++ need use int32
const int x = msg.readInt16("x");
const int y = msg.readInt16("y");
const int amount = msg.readInt16("amount");
const int subX = CAST_S32(msg.readInt8("subx"));
const int subY = CAST_S32(msg.readInt8("suby"));
SMSG_ITEM_VISIBLE2 0x0b18 28 ItemRecv::processItemVisible2 0 const BeingId id = msg.readBeingId("item object id");
const int itemId = msg.readInt16("item id"); // +++ need use int32
msg.readUInt8("type"));
msg.readUInt8("identify"), Identified);
const Damaged damaged = fromBool(msg.readUInt8("attribute"), Damaged);
const uint8_t refine = msg.readUInt8("refine");
cards[f] = msg.readUInt16("card"); // +++ need use int32
const int x = msg.readInt16("x");
const int y = msg.readInt16("y");
const int amount = msg.readInt16("amount");
const int subX = CAST_S32(msg.readInt8("sub x"));
const int subY = CAST_S32(msg.readInt8("sub y"));
SMSG_BEING_CHANGE_LOOKS_CARDS 0x0b17 19 BeingRecv::processBeingChangeLookCards 0 const BeingId id = msg.readBeingId("being id");
msg.readBeingId("being id"));
const uint8_t type = msg.readUInt8("type");
const int id = msg.readInt16("id1");
unsigned int id2 = msg.readInt16("id2");
cards[f] = msg.readUInt16("card"); // +++ probably need use int32
SMSG_PLAYER_CLIENT_COMMAND 0x0b16 -1 Ea::PlayerRecv::processPlayerClientCommand 0 const int sz = msg.readInt16("len") - 4;
std::string command = msg.readString(sz, "command");
SMSG_ONLINE_LIST 0x0b10 -1 PlayerRecv::processOnlineList 0 const int size = msg.readInt16("len") - 4;
char *const start = reinterpret_cast<char*>(msg.readBytes(size, "nicks"));
SMSG_NPC_AREA 0x0b0b -1 NpcRecv::processArea 0 const int len = msg.readInt16("len");
msg.readBeingId("npc id"));
const int area = msg.readInt32("area size");
SMSG_BEING_ATTRS 0x0b0a -1 BeingRecv::processBeingAttrs 0 const int len = msg.readInt16("len");
msg.readBeingId("player id"));
const int groupId = msg.readInt32("group id");
mount = msg.readInt16("mount");
language = msg.readInt16("language");
clanId = msg.readInt32("clan id");
SMSG_CHAT_JOIN_CHANNEL 0x0b08 27 ChatRecv::processJoinChannel 0 const std::string channel = msg.readString(24, "channel name");
const int flag = msg.readUInt8("flag");
SMSG_NPC_CHANGETITLE 0x0b06 -1 Ea::NpcRecv::processChangeTitle 0 msg.readInt16("len");
const std::string str = msg.readString(-1, "title");
SMSG_MAP_MUSIC 0x0b05 -1 Ea::PlayerRecv::processMapMusic 0 const int size = msg.readInt16("len") - 4;
const std::string music = msg.readString(size, "name");
SMSG_BEING_MOVE3 0x0b04 -1 Ea::BeingRecv::processBeingMove3 0 const int len = msg.readInt16("len") - 14;
msg.readBeingId("being id"));
msg.readInt16("speed");
msg.readInt16("x");
msg.readInt16("y");
unsigned char *bytes = msg.readBytes(len, "moving path");
const int16_t speed = msg.readInt16("speed");
const int16_t x = msg.readInt16("x");
const int16_t y = msg.readInt16("y");
const unsigned char *moves = msg.readBytes(len, "moving path");
SMSG_MOB_INFO 0x0b03 -1 BeingRecv::processMobInfo 0 const int len = msg.readInt16("len");
msg.readBeingId("monster id"));
const int attackRange = msg.readInt32("range");
SMSG_MAP_MASK 0x0b02 10 Ea::PlayerRecv::processMapMask 0 const int mask = msg.readInt32("mask");
msg.readInt32("unused");
SMSG_BEING_NAME_RESPONSE2 0x0b01 -1 BeingRecv::processNameResponse2 0 const int len = msg.readInt16("len");
const BeingId beingId = msg.readBeingId("account id");
const std::string str = msg.readString(len - 8, "name");
SMSG_NPC_COMMAND 0x0b00 16 Ea::NpcRecv::processNpcCommand 0 const int cmd = msg.readInt16("cmd");
const BeingId id = msg.readBeingId("id");
const int x = msg.readInt16("x");
const int y = msg.readInt16("y");
SMSG_MAIL2_ADD_ITEM_RESULT 0x0a05 53 Mail2Recv::processAddItemResult 20141119 const int res = msg.readUInt8("result");
const int index = msg.readInt16("index") - INVENTORY_OFFSET;
const int amount = msg.readInt16("amount");
const int itemId = msg.readItemId("item id");
msg.readUInt8("item type"));
const uint8_t identify = msg.readUInt8("identify");
const Damaged damaged = fromBool(msg.readUInt8("attribute"), Damaged);
const uint8_t refine = msg.readUInt8("refine");
cards[f] = msg.readItemId("card");
const uint16_t idx = msg.readInt16("option index");
const uint16_t val = msg.readInt16("option value");
msg.readUInt8("option param");
msg.readInt16("weight");
Favorite favorite = fromBool(msg.readUInt8("favorite"), Favorite);
msg.readInt32("location");
SMSG_MAIL2_ICON 0x09e7 3 Mail2Recv::processMailIcon 20141112 msg.readUInt8("has new mail");
SMSG_VENDING_OPEN_STATUS 0x0a28 3 VendingRecv::processOpenStatus 20141022 msg.readUInt8("result");
SMSG_PLAYER_SHORTCUTS 0x0a00 269 PlayerRecv::processPlayerShortcuts2 20141022 msg.readUInt8("rotate");
msg.readUInt8("type 0: item, 1: skill");
msg.readInt32("item or skill id");
msg.readInt16("skill level");
SMSG_PLAYER_SET_TITLE_ACK 0x0a2f 7 PlayerRecv::processSetTitleAck 20141016 msg.readUInt8("fail flag");
msg.readInt32("title");
SMSG_BUYINGSTORE_REPORT 0x09e6 22 BuyingStoreRecv::processBuyingStoreReport 20141016 msg.readItemId("item id");
msg.readInt16("amount");
msg.readInt32("money");
msg.readInt32("money limit");
msg.readInt32("char id");
msg.readInt32("date");
msg.readInt32("money limit");
SMSG_VENDING_REPORT 0x09e5 18 VendingRecv::processReport 20141016 const int index = msg.readInt16("inv index") - INVENTORY_OFFSET;
const int amount = msg.readInt16("amount");
msg.readInt32("char id");
msg.readInt32("time");
money = msg.readInt32("zeny");
SMSG_ROULETTE_RECV_ITEM_ACK 0x0a22 5 RouletteRecv::processRouletteItemAck 20141016 msg.readUInt8("result");
msg.readItemId("item id");
SMSG_ROULETTE_GENERATE_ACK_TYPE 0x0a20 21 RouletteRecv::processRouletteGenerateAckType 20141016 msg.readUInt8("result");
msg.readInt16("step");
msg.readInt16("idx");
msg.readItemId("item id");
msg.readInt32("remain gold");
msg.readInt32("remain silver");
msg.readInt32("remain bronze");
SMSG_ROULETTE_INFO_ACK_TYPE 0x0a1c -1 RouletteRecv::processRouletteInfoAckType 20141016 const int count = (msg.readInt16("len") - 8) / 8;
msg.readInt32("serial");
msg.readInt16("row");
msg.readInt16("position");
msg.readInt32("item id");
msg.readInt16("count");
msg.readInt16("unused");
msg.readInt16("item id");
msg.readInt16("count");
SMSG_ROULETTE_OPEN_ACK 0x0a1a 23 RouletteRecv::processRouletteOpenAck 20141016 msg.readUInt8("result");
msg.readInt32("serial");
msg.readUInt8("step");
msg.readUInt8("idx");
msg.readItemId("additional item id");
msg.readInt32("gold point");
msg.readInt32("silver point");
msg.readInt32("bronze point");
SMSG_ROULETTE_CLOSE 0x0a1e 3 RouletteRecv::processRouletteClose 20141008 msg.readUInt8("result");
SMSG_BATTLE_UPDATE_HP 0x0a0e 14 BattleGroundRecv::processBattleUpdateHp 20140613 msg.readBeingId("account id");
msg.readInt32("hp");
msg.readInt32("max hp");
msg.readString(24, "name");
msg.readInt16("hp");
msg.readInt16("max hp");
SMSG_MAIL2_REMOVE_ITEM_RESULT 0x0a07 9 Mail2Recv::processRemoveItemResult 20140521 const int result = msg.readUInt8("result");
const int index = msg.readInt16("index") - INVENTORY_OFFSET;
const int amount = msg.readInt16("count");
msg.readInt16("weight");
SMSG_MAIL2_OPEN_NEW_MAIL_WINDOW 0x0a12 27 Mail2Recv::processOpenNewMailWindow 20140416 msg.readString(24, "receiver");
msg.readUInt8("result");
SMSG_MAIL2_READ_MAIL 0x09eb -1 Mail2Recv::processReadMail 20140115 msg.readInt16("len");
msg.readUInt8("open type"));
const int64_t mailId = msg.readInt64("mail id");
const int textLen = msg.readInt16("text len");
const int64_t money = msg.readInt64("money");
const int itemsCount = msg.readUInt8("item count");
const std::string text = msg.readString(textLen, "text message");
msg.readInt16("amount");
msg.readItemId("item id");
msg.readUInt8("identify");
msg.readUInt8("damaged");
msg.readUInt8("refine");
msg.readItemId("card");
msg.readInt32("location");
msg.readUInt8("type");
msg.readInt16("view sprite");
msg.readInt16("bind on equip");
msg.readInt16("option index");
msg.readInt16("option value");
msg.readUInt8("option param");
const int amount = msg.readInt16("amount");
const int itemId = msg.readItemId("item id");
const uint8_t identify = msg.readUInt8("identify");
const Damaged damaged = fromBool(msg.readUInt8("attribute"), Damaged);
const uint8_t refine = msg.readUInt8("refine");
cards[d] = msg.readItemId("card");
msg.readInt32("location");
msg.readUInt8("item type"));
msg.readInt16("view sprite");
msg.readInt16("bind on equip");
const uint16_t idx = msg.readInt16("option index");
const uint16_t val = msg.readInt16("option value");
msg.readUInt8("option param");
SMSG_MAIL2_REQUEST_ITEMS 0x09f4 12 Mail2Recv::processRequestItems 20140409 const int64_t mailId = msg.readInt64("mail id");
msg.readUInt8("open type");
const int res = msg.readUInt8("result");
SMSG_MAIL2_REQUEST_MONEY 0x09f2 12 Mail2Recv::processRequestMoney 20140409 const int64_t mailId = msg.readInt64("mail id");
msg.readUInt8("open type");
const int res = msg.readUInt8("result");
SMSG_PET_EVOLUTION_RESULT 0x09fc 6 PetRecv::processPetEvolution 20140122 msg.readUInt8("result");
SMSG_HOMUNCULUS_INFO 0x09f7 75 HomunculusRecv::processHomunculusInfo2 20131230 const std::string name = msg.readString(24, "name");
msg.readUInt8("flags"); // 0x01 - renamed, 0x02 - vaporize, 0x04 - alive
const int level = msg.readInt16("level");
const int hungry = msg.readInt16("hungry");
const int intimacy = msg.readInt16("intimacy");
const int equip = msg.readItemId("item id");
msg.readInt16("atk"),
msg.readInt16("matk"),
msg.readInt16("hit"),
msg.readInt16("luk/3 or crit/10"),
msg.readInt16("def"),
msg.readInt16("mdef"),
msg.readInt16("flee"),
msg.readInt16("attack speed"),
msg.readInt32("hp"),
msg.readInt32("max hp"),
msg.readInt16("sp"),
msg.readInt16("max sp"),
msg.readInt32("exp"),
msg.readInt32("next exp"),
msg.readInt16("skill points"),
const int range = msg.readInt16("attack range");
SMSG_MAIL2_SEND_RESULT 0x09ed 3 Mail2Recv::processSendResult 20131230 const int res = msg.readUInt8("result");
SMSG_CLAN_LEAVE 0x0989 2 ClanRecv::processClanLeave 20131223
SMSG_SKILL_NO_DAMAGE 0x09cb 17 Ea::BeingRecv::processSkillNoDamage 20131223 const int id = msg.readInt16("skill id");
heal = msg.readInt32("heal");
heal = msg.readInt16("heal");
msg.readBeingId("dst being id"));
msg.readBeingId("src being id"));
msg.readUInt8("fail");
SMSG_WHISPER_RESPONSE 0x09df 7 ChatRecv::processWhisperResponse 20131223 const uint8_t type = msg.readUInt8("response");
msg.readBeingId("being id");
SMSG_NPC_MARKET_BUY_ACK 0x09d7 -1 MarketRecv::processMarketBuyAck 20131223 const int len = (msg.readInt16("len") - 5) / (6 + itemIdLen);
const int res = msg.readUInt8("result");
msg.readItemId("item id");
msg.readInt16("amount");
msg.readInt32("price");
SMSG_NPC_MARKET_OPEN 0x09d5 -1 MarketRecv::processMarketOpen 20131223 const int len = (msg.readInt16("len") - 4) / (11 + itemIdLen);
const int itemId = msg.readItemId("item id");
const ItemTypeT type = static_cast<ItemTypeT>(msg.readUInt8("type"));
const int value = msg.readInt32("price");
const int amount = msg.readInt32("amount");
msg.readInt16("weight"); // +++ compare with item weight from db?
SMSG_BEING_ACTION2 0x08c8 34 BeingRecv::processBeingAction2 20131223 msg.readBeingId("src being id"));
msg.readBeingId("dst being id"));
msg.readInt32("tick");
const int srcSpeed = msg.readInt32("src speed");
msg.readInt32("dst speed");
param1 = msg.readInt32("damage");
param1 = msg.readInt16("damage");
msg.readUInt8("is sp damaged");
msg.readInt16("count");
msg.readUInt8("action"));
msg.readInt32("left damage");
msg.readInt16("left damage");
SMSG_MAIL2_MAIL_DELETE 0x09f6 11 Mail2Recv::processMailDelete 20131218 msg.readUInt8("open type");
const int64_t mailId = msg.readInt64("mail id");
SMSG_SKILL_ENTRY 0x09ca -1 BeingRecv::processSkillEntry 20130731 msg.readInt16("len");
const BeingId id = msg.readBeingId("skill unit id");
const BeingId creatorId = msg.readBeingId("creator accound id");
const int x = msg.readInt16("x");
const int y = msg.readInt16("y");
job = msg.readInt32("job");
msg.readUInt8("radius");
msg.readUInt8("visible");
level = msg.readUInt8("level");
SMSG_BANK_WITHDRAW 0x09aa 16 BankRecv::processBankWithdraw 20130724 const int reason = msg.readInt16("reason");
const int money = CAST_S32(msg.readInt64("money"));
msg.readInt32("balance");
SMSG_BANK_DEPOSIT 0x09a8 16 BankRecv::processBankDeposit 20130724 const int reason = msg.readInt16("reason");
const int money = CAST_S32(msg.readInt64("money"));
msg.readInt32("balance");
SMSG_BANK_STATUS 0x09a6 12 BankRecv::processBankStatus 20130724 const int money = CAST_S32(msg.readInt64("money"));
const int reason = msg.readInt16("reason");
SMSG_PLAYER_RANK_POINTS 0x097e 12 PlayerRecv::processPlayerRankPoints 20130710 msg.readInt16("type");
msg.readInt32("points");
msg.readInt32("fame");
SMSG_CLAN_INFO 0x098a -1 ClanRecv::processClanInfo 20130626 msg.readInt16("len");
localClan.id = msg.readInt32("clan id");
localClan.name = msg.readString(24, "clan name");
localClan.masterName = msg.readString(24, "master name");
localClan.mapName = msg.readString(16, "map name");
const int allyCount = msg.readUInt8("ally clans count");
const int antagonistCount = msg.readUInt8("antagonist clans count");
msg.readString(24, "ally clan name"));
msg.readString(24, "antagonist clan name"));
SMSG_RANKS_LIST 0x097d 288 BeingRecv::processRanksList1 20130605 const int count = (msg.readInt16("len") - 4) / 28;
msg.readInt16("rank type");
msg.readString(24, "name");
msg.readInt32("points");
msg.readInt32("my points");
SMSG_ITEM_DROPPED 0x084b 19 ItemRecv::processItemDropped 20130000 const BeingId id = msg.readBeingId("id");
const int itemId = msg.readItemId("item id");
itemType = static_cast<ItemTypeT>(msg.readInt16("type"));
msg.readUInt8("identify"), Identified);
const int x = msg.readInt16("x");
const int y = msg.readInt16("y");
const int subX = CAST_S32(msg.readInt8("subx"));
const int subY = CAST_S32(msg.readInt8("suby"));
const int amount = msg.readInt16("count");
msg.readUInt8("show drop effect");
msg.readInt16("show effect mode");
SMSG_MAP_TYPE_PROPERTY2 0x099b 8 BeingRecv::processMapTypeProperty 20121010 const int16_t type = msg.readInt16("type");
const int flags = msg.readInt32("flags");
SMSG_SHOW_PROGRESS_BAR_FREE 0x09d1 14 NpcRecv::processShowProgressBarFree 20130821 msg.readBeingId("account id");
msg.readInt32("color");
msg.readInt32("time");
SMSG_PLAYER_UNEQUIP 0x099a 9 InventoryRecv::processPlayerUnEquip 20120925 msg.readInt16("index");
equipType = msg.readInt32("wear location");
equipType = msg.readInt16("wear location");
const uint8_t flag = msg.readUInt8("result");
SMSG_PLAYER_EQUIP 0x0999 11 InventoryRecv::processPlayerEquip 20120925 const int index = msg.readInt16("index") - INVENTORY_OFFSET;
equipType = msg.readInt32("wear location");
equipType = msg.readInt16("wear location");
msg.readInt16("sprite");
const uint8_t flag = msg.readUInt8("result");
SMSG_PLAYER_STORAGE_ITEMS 0x0995 -1 InventoryRecv::processPlayerStorage 20120925 msg.readInt16("len");
msg.readString(24, "storage name");
const int index = msg.readInt16("item index") - STORAGE_OFFSET;
const int itemId = msg.readItemId("item id");
msg.readUInt8("item type"));
msg.readUInt8("identified");
const int amount = msg.readInt16("count");
msg.readInt32("wear state / equip");
msg.readInt16("wear state / equip");
cards[f] = msg.readItemId("card");
msg.readInt32("hire expire date (?)");
flags.byte = msg.readUInt8("flags");
SMSG_PLAYER_CART_ITEMS 0x0993 -1 InventoryRecv::processPlayerCartItems 20120925 msg.readInt16("len");
const int index = msg.readInt16("item index") - INVENTORY_OFFSET;
const int itemId = msg.readItemId("item id");
msg.readUInt8("item type"));
msg.readUInt8("identified");
const int amount = msg.readInt16("count");
msg.readInt32("wear state / equip");
cards[f] = msg.readItemId("card");
msg.readInt32("hire expire date (?)");
flags.byte = msg.readUInt8("flags");
SMSG_PLAYER_INVENTORY 0x0991 -1 InventoryRecv::processPlayerInventory 20120925 msg.readInt16("len");
const int index = msg.readInt16("item index") - INVENTORY_OFFSET;
const int itemId = msg.readItemId("item id");
msg.readUInt8("item type"));
msg.readUInt8("identified");
const int amount = msg.readInt16("count");
msg.readInt32("wear state / equip");
msg.readInt16("wear state / equip");
cards[f] = msg.readItemId("card");
msg.readInt32("hire expire date (?)");
flags.byte = msg.readUInt8("flags");
SMSG_CLAN_CHAT 0x098e -1 ClanRecv::processClanChat 20120716 const int chatMsgLength = msg.readInt16("len") - 4 - 24;
msg.readString(24, "player name (unused)");
std::string chatMsg = msg.readString(chatMsgLength, "message");
SMSG_CLAN_ONLINE_COUNT 0x0988 6 ClanRecv::processClanOnlineCount 20120716 localClan.onlineMembers = msg.readInt16("online members count");
localClan.totalMembers = msg.readInt16("total members count");
SMSG_PLAYER_SKILL_COOLDOWN_LIST 0x0985 -1 SkillRecv::processSkillCoolDownList 20120604 const int count = (msg.readInt16("len") - 4) / packetLen;
const int skillId = msg.readInt16("skill id");
msg.readInt32("total");
const int duration = msg.readInt32("duration");
SMSG_BEING_STATUS_CHANGE 0x0983 29 BeingRecv::processBeingStatusChange 20120618 const uint16_t status = msg.readInt16("status");
const BeingId id = msg.readBeingId("being id");
msg.readUInt8("flag: 0: stop, 1: start"), Enable);
msg.readInt32("total");
msg.readInt32("left");
msg.readInt32("val1");
msg.readInt32("val2");
msg.readInt32("val3");
SMSG_CHAR_CHARACTERS 0x099d -1 CharServerRecv::processCharCharacters 20120419 msg.readInt16("packet len");
SMSG_MONSTER_HP 0x0977 14 BeingRecv::processMonsterHp 20120410 msg.readBeingId("monster id"));
const int hp = msg.readInt32("hp");
const int maxHP = msg.readInt32("max hp");
SMSG_PLAYER_FAVORITE_ITEM 0x0908 5 InventoryRecv::processFavoriteItem 20120410 msg.readInt16("item index");
msg.readUInt8("favorite (0 - favorite)");
SMSG_BOOKING_REFUSE_VOLUNTEER 0x08fa 6 nullptr 20120410
SMSG_BOOKING_VOLUNTEER_INFO 0x08f2 36 nullptr 20120410
SMSG_RECRUIT_DELETE_NOTIFY 0x08ee 6 nullptr 20120410
SMSG_RECRUIT_UPDATE_NOTIFY 0x08ed 43 nullptr 20120410
SMSG_RECRUIT_INSERT_NOTIFY 0x08ec 73 nullptr 20120410
SMSG_RECRUIT_DELETE_ACK 0x08ea 4 nullptr 20120410
SMSG_RECRUIT_SEARCH_ACK 0x08e8 -1 nullptr 20120410
SMSG_RECRUIT_REGISTER_ACK 0x08e6 4 nullptr 20120410
SMSG_BEING_CHARM 0x08cf 10 BeingRecv::processBeingCharm 20120410 msg.readBeingId("account id");
msg.readInt16("charm type");
msg.readInt16("charm count");
SMSG_NPC_CASH_BUY 0x0849 16 CashShopRecv::processCashShopBuy 20120328 msg.readInt32("id");
msg.readInt16("result");
msg.readInt32("cash points");
msg.readInt32("kafra points");
SMSG_ACK_MERGE_ITEMS 0x096f 7 InventoryRecv::processMergeItemResponse 20120314 msg.readInt16("inv index");
msg.readInt16("amount");
msg.readUInt8("result");
SMSG_MERGE_ITEM 0x096d -1 InventoryRecv::processMergeItem 20120314 const int count = (msg.readInt16("len") - 4) / 2;
msg.readInt16("inv index");
SMSG_LOGIN_ERROR2 0x083e 26 LoginRecv::processLoginError2 20120000 const uint32_t code = msg.readInt32("error");
msg.readString(20, "error message");
msg.readString(20, "date").c_str());
CMSG_NAVIGATE_TO 0x08e2 27 BeingRecv::processNavigateTo 20111010 msg.readUInt8("navigate type");
msg.readUInt8("transportation flag");
msg.readUInt8("hide window");
msg.readString(16, "map name");
msg.readInt16("x");
msg.readInt16("y");
msg.readInt16("mob id");
SMSG_SKILL_SNAP 0x08d2 10 BeingRecv::processBeingSlide 20111005 msg.readBeingId("being id"));
const int x = msg.readInt16("x");
const int y = msg.readInt16("y");
SMSG_GUILD_EXPULSION 0x0839 66 GuildRecv::processGuildExpulsion 20100803 const std::string nick = msg.readString(24, "name");
msg.readString(40, "message");
SMSG_SEARCHSTORE_OPEN 0x083a 5 SearchStoreRecv::processSearchOpen 20100701 msg.readInt16("effect");
msg.readUInt8("uses");
SMSG_SEARCHSTORE_CLICK_ACK 0x083d 6 SearchStoreRecv::processSearchClickAck 20100608 msg.readInt16("x");
msg.readInt16("y");
SMSG_SEARCHSTORE_SEARCH_FAILED 0x0837 3 SearchStoreRecv::processSearchFailed 20100601 const int result = msg.readUInt8("result");
SMSG_BUYINGSTORE_SELLER_SELL_FAILED 0x0824 6 BuyingStoreRecv::processBuyingStoreSellerSellFailed 20100420 const int16_t result = msg.readInt16("result");
msg.readItemId("item id");
SMSG_BUYINGSTORE_DELETE_ITEM 0x081c 10 BuyingStoreRecv::processBuyingStoreDeleteItem 20100420 const int index = msg.readInt16("index") - INVENTORY_OFFSET;
const int amount = msg.readInt16("amount");
msg.readInt32("price");
SMSG_BUYINGSTORE_SELL_FAILED 0x081a 4 BuyingStoreRecv::processBuyingStoreSellFailed 20100420 const int16_t result = msg.readInt16("result");
SMSG_BUYINGSTORE_SHOW_BOARD 0x0814 86 BuyingStoreRecv::processBuyingStoreShowBoard 20100420 const BeingId id = msg.readBeingId("owner id");
dstBeing->setBuyBoard(msg.readString(80, "shop name"));
msg.readString(80, "shop name");
SMSG_BUYINGSTORE_CREATE_FAILED 0x0812 8 BuyingStoreRecv::processBuyingStoreCreateFailed 20100420 const int16_t result = msg.readInt16("result");
const int weight = msg.readInt32("weight");
SMSG_ELEMENTAL_UPDATE_STATUS 0x081e 8 ElementalRecv::processElementalUpdateStatus 20100309 const int sp = msg.readInt16("type");
const int val = msg.readInt32("value");
SMSG_ELEMENTAL_INFO 0x081d 22 ElementalRecv::processElementalInfo 20100309 const BeingId id = msg.readBeingId("elemental id");
msg.readInt32("hp"),
msg.readInt32("max hp"),
msg.readInt32("sp"),
msg.readInt32("max sp"),
SMSG_BUYINGSTORE_ITEMS_LIST 0x0818 -1 BuyingStoreRecv::processBuyingStoreItemsList 20100309 const int count = (msg.readInt16("len") - 16) / (7 + itemIdLen);
const BeingId id = msg.readBeingId("account id");
const int storeId = msg.readInt32("store id");
msg.readInt32("money limit");
const int price = msg.readInt32("price");
const int amount = msg.readInt16("amount");
msg.readUInt8("item type"));
const int itemId = msg.readItemId("item id");
SMSG_BUYINGSTORE_HIDE_BOARD 0x0816 6 BuyingStoreRecv::processBuyingStoreHideBoard 20100309 const BeingId id = msg.readBeingId("owner id");
SMSG_BUYINGSTORE_OWN_ITEMS 0x0813 -1 BuyingStoreRecv::processBuyingStoreOwnItems 20100309 const int count = (msg.readInt16("len") - 12) / (7 + itemIdLen);
msg.readBeingId("account id");
msg.readInt32("money limit");
msg.readInt32("price");
msg.readInt16("amount");
msg.readUInt8("item type");
msg.readItemId("item id");
SMSG_BUYINGSTORE_OPEN 0x0810 3 BuyingStoreRecv::processBuyingStoreOpen 20100303 BuyingStoreSlotsListener::distributeEvent(msg.readUInt8("slots"));
SMSG_PLAYER_HP 0x080e 14 BeingRecv::processBeingHp 20100126 msg.readBeingId("being id"));
hp = msg.readInt32("hp");
maxHP = msg.readInt32("max hp");
hp = msg.readInt16("hp");
maxHP = msg.readInt16("max hp");
SMSG_BOOKING_DELETE_NOTIFY 0x080b 6 nullptr 20091229
SMSG_BOOKING_UPDATE_NOTIFY 0x080a 18 nullptr 20091229
SMSG_BOOKING_INSERT_NOTIFY 0x0809 50 nullptr 20091229
SMSG_BOOKING_DELETE_ACK 0x0807 4 nullptr 20091229
SMSG_BOOKING_SEARCH_ACK 0x0805 -1 nullptr 20091222
SMSG_BOOKING_REGISTER_ACK 0x0803 4 nullptr 20091222
SMSG_BATTLE_PLAY 0x07fe 26 BattleGroundRecv::processBattlePlay 20091201 msg.readString(24, "battle ground name");
SMSG_SKILL_CASTING 0x07fb 25 BeingRecv::processSkillCasting2 20091124 const BeingId srcId = msg.readBeingId("src id");
const BeingId dstId = msg.readBeingId("dst id");
const int dstX = msg.readInt16("dst x");
const int dstY = msg.readInt16("dst y");
const int skillId = msg.readInt16("skill id");
msg.readInt32("element"); // +++ use different effects
const int castTime = msg.readInt32("cast time");
msg.readInt8("dispossable");
SMSG_PLAYER_INVENTORY_REMOVE2 0x07fa 8 InventoryRecv::processPlayerInventoryRemove2 20091117 msg.readInt16("reason"));
const int index = msg.readInt16("index") - INVENTORY_OFFSET;
const int amount = msg.readInt16("amount");
SMSG_WHISPER 0x0097 -1 ChatRecv::processWhisper 20091104 const int chatMsgLength = msg.readInt16("len") - packetLen;
std::string nick = msg.readString(24, "nick");
msg.readInt32("admin flag");
processWhisperContinue(nick, msg.readString(chatMsgLength, "message"));
SMSG_PLAYER_GET_EXP 0x07f6 14 PlayerRecv::processPlayerGetExp 20091027 const BeingId id = msg.readBeingId("player id");
const int exp = msg.readInt32("exp amount");
const int stat = msg.readInt16("exp type");
const bool fromQuest = msg.readInt16("is from quest") != 0;
SMSG_CHAR_CAPTCHA_NOT_SUPPORTED 0x07e9 5 CharServerRecv::processCharCaptchaNotSupported 20090922 msg.readInt16("5");
msg.readUInt8("1");
SMSG_SKILL_ITEM_LIST_WINDOW 0x07e3 6 SkillRecv::processSkillItemListWindow 20090922 msg.readInt32("skill level");
msg.readInt32("unused");
SMSG_FORMAT_MESSAGE_SKILL 0x07e6 8 ChatRecv::processFormatMessageSkill 20090818 const int skillId = msg.readInt16("skill id");
const int msgId = msg.readInt32("msg id");
SMSG_FORMAT_MESSAGE_NUMBER 0x07e2 8 ChatRecv::processFormatMessageNumber 20090805 const int msgId = msg.readInt16("msg id");
const int value = msg.readInt32("value");
SMSG_PLAYER_UPDATE_SKILL 0x07e1 15 SkillRecv::processSkillUpdate 20090715 const int skillId = msg.readInt16("skill id");
msg.readInt32("inf"));
const int level = msg.readInt16("skill level");
const int sp = msg.readInt16("sp");
const int range = msg.readInt16("range");
const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
SMSG_PARTY_SETTINGS 0x07d8 8 PartyRecv::processPartySettings 20090603 msg.readInt32("party exp"));
msg.readInt8("pickup item share (&1)"));
msg.readInt8("get auto item share (&2)"));
SMSG_PLAYER_SKILL_AUTO_SPELLS 0x01cd 30 SkillRecv::processSkillAutoSpells1 20090406 msg.readInt32("skill id");
SMSG_MVP_EXP 0x010b 6 ChatRecv::processMVPExp 20090401 msg.readInt32("exp");
SMSG_QUEST_NPC_EFFECT 0x0446 14 QuestRecv::processNpcQuestEffect 20090218 msg.readInt32("npc id");
msg.readInt16("x");
msg.readInt16("y");
msg.readInt16("state");
msg.readInt16("color");
SMSG_PLAYER_DELETE_SKILL 0x0441 4 SkillRecv::processSkillDelete 20081217 const int skillId = msg.readInt16("skill id");
SMSG_BEING_MILLENIUM_SHIELD 0x0440 10 BeingRecv::processBeingMilleniumShield 20081217 msg.readBeingId("account id");
msg.readInt16("shields");
msg.readInt16("unused");
SMSG_AUTOSHADOW_SPELL_LIST 0x0442 -1 PlayerRecv::processPlayerAutoShadowSpellList 20081210 const int count = (msg.readInt16("len") - 8) / 2;
msg.readInt16("skill id");
SMSG_PET_STATUS 0x01a2 37 PetRecv::processPetStatus 20081126 const std::string name = msg.readString(24, "pet name");
msg.readUInt8("rename flag");
const int level = msg.readInt16("level");
const int hungry = msg.readInt16("hungry");
const int intimacy = msg.readInt16("intimacy");
const int equip = msg.readInt16("equip"); // look like always int16
info->race = msg.readInt16("class");
SMSG_PLAYER_SKILL_COOLDOWN 0x043d 8 SkillRecv::processSkillCoolDown 20081112 const int skillId = msg.readInt16("skill id");
const int duration = msg.readInt32("duration");
SMSG_BEING_SPAWN_OUTDATED 0x007c 44 nullptr 20080827
SMSG_NPC_PROGRESS_BAR_ABORT 0x02f2 2 NpcRecv::processProgressBarAbort 20080318
SMSG_NPC_SHOW_PROGRESS_BAR 0x02f0 10 NpcRecv::processNpcShowProgressBar 20080318 msg.readInt32("color");
msg.readInt32("seconds");
SMSG_BEING_FONT 0x02ef 8 BeingRecv::processBeingFont 20080102 msg.readBeingId("account id");
msg.readInt16("font");
SMSG_MERCENARY_INFO 0x029b 80 MercenaryRecv::processMercenaryInfo 20071106 msg.readBeingId("being id"));
msg.readInt16("atk"),
msg.readInt16("matk"),
msg.readInt16("hit"),
msg.readInt16("crit/10"),
msg.readInt16("def"),
msg.readInt16("mdef"),
msg.readInt16("flee"),
msg.readInt16("attack speed"),
const std::string name = msg.readString(24, "name");
const int level = msg.readInt16("level");
msg.readInt32("hp"),
msg.readInt32("max hp"),
msg.readInt32("sp"),
msg.readInt32("max sp"),
msg.readInt32("expire time"),
msg.readInt16("faith"),
msg.readInt32("calls"),
msg.readInt32("kills"),
const int range = msg.readInt16("attack range");
SMSG_BEING_FAKE_NAME 0x0078 55 BeingRecv::processBeingFakeName 20071106 msg.readBeingId("npc id");
msg.readInt16("class?"); // 111
msg.readCoordinates(x, y, dir, "position");
msg.readUInt8("sx");
msg.readUInt8("sy");
msg.readUInt8("object type"));
const BeingId id = msg.readBeingId("npc id");
const uint16_t job = msg.readInt16("class?"); // 111
msg.readCoordinates(x, y, dir, "position");
msg.readUInt8("sx");
msg.readUInt8("sy");
SMSG_INSTANCE_INFO 0x02cd 71 MapRecv::processInstanceInfo 20071023 msg.readString(61, "instance name");
msg.readInt32("remaining time");
msg.readInt32("no players close time");
SMSG_INSTANCE_START 0x02cb 65 MapRecv::processInstanceStart 20071023 msg.readString(61, "instance name");
msg.readInt16("flag");
SMSG_PARTY_ITEM_PICKUP 0x02b8 22 PartyRecv::processPartyItemPickup 20071002 msg.readBeingId("account id");
msg.readItemId("item id");
msg.readUInt8("identify");
msg.readUInt8("attribute");
msg.readUInt8("refine");
msg.readItemId("card");
msg.readInt16("equip location");
msg.readUInt8("item type");
SMSG_PARTY_INVITED 0x02c6 30 PartyRecv::processPartyInvited 20070821 msg.readInt32("party id");
msg.readString(24, "party name");
const int id = msg.readInt32("party id");
const std::string partyName = msg.readString(24, "party name");
SMSG_PARTY_INVITE_RESPONSE 0x02c5 30 PartyRecv::processPartyInviteResponse 20070821 const std::string nick = msg.readString(24, "nick");
switch (msg.readInt32("result"))
SMSG_PARTY_INVITATION_STATS 0x02c9 3 PartyRecv::processPartyInvitationStats 20070227 msg.readUInt8("allow party");
SMSG_BATTLE_UPDATE_COORDS 0x02df 36 BattleGroundRecv::processBattleUpdateCoords 20070227 msg.readBeingId("account id");
msg.readString(24, "name");
msg.readInt16("class");
msg.readInt16("x");
msg.readInt16("y");
SMSG_BATTLE_UPDATE_SCORE 0x02de 6 BattleGroundRecv::processBattleUpdateScore 20070227 msg.readInt16("camp a points");
msg.readInt16("camp b points");
SMSG_BATTLE_EMBLEM 0x02dd 32 BattleGroundRecv::processBattleEmblem 20070227 msg.readBeingId("account id");
msg.readString(24, "name");
msg.readInt16("bg id");
SMSG_BATTLE_CHAT_MESSAGE 0x02dc -1 ChatRecv::processBattleChatMessage 20070227 const int sz = msg.readInt16("len") - 24 - 8;
msg.readBeingId("account id");
msg.readString(24, "nick");
msg.readString(sz, "message");
SMSG_PLAYER_SHOW_EQUIP 0x02da 3 PlayerRecv::processPlayerShowEquip 20070227 msg.readUInt8("show equip"); // 1 mean need open "equipment" window
SMSG_PLAYER_ZC_CONFIG 0x02d9 10 PlayerRecv::processPlayerZCConfig 20070227 msg.readInt32("type");
msg.readInt32("flag");
SMSG_INSTANCE_DELETE 0x02ce 10 MapRecv::processInstanceDelete 20070227 msg.readInt32("flag");
msg.readInt32("unused");
SMSG_INSTANCE_CREATE 0x02cc 4 MapRecv::processInstanceCreate 20070227 msg.readInt16("flag");
SMSG_COLOR_MESSAGE 0x02c1 -1 ChatRecv::processColorChat 20070227 int chatMsgLength = msg.readInt16("len") - 4;
msg.readInt32("unused");
msg.readInt32("chat color");
std::string message = msg.readRawString(chatMsgLength, "message");
SMSG_ITEM_DAMAGED 0x02bb 8 InventoryRecv::processItemDamaged 20070227 msg.readInt16("position");
msg.readBeingId("account id");
SMSG_QUEST_ACTIVATE 0x02b7 7 QuestRecv::processActivateQuest 20070227 msg.readInt32("quest id");
msg.readUInt8("activate");
SMSG_QUEST_REMOVE 0x02b4 6 QuestRecv::processRemoveQuest 20070227 const int var = msg.readInt32("quest id");
SMSG_QUEST_LIST_OBJECTIVES 0x02b2 -1 QuestRecv::processAddQuestsObjectives 20070227 msg.readInt16("len");
const int quests = msg.readInt32("quests count");
msg.readInt32("quest id");
msg.readInt32("time diff");
msg.readInt32("time");
const int num = msg.readInt16("objectives count");
msg.readInt32("monster id");
msg.readInt16("count");
msg.readString(24, "monster name");
SMSG_NPC_CASH_BUY_ACK 0x0289 12 CashShopRecv::processCashShopBuyAck 20070227 msg.readInt32("cash points");
msg.readInt32("kafra points");
const uint16_t res = msg.readInt16("error");
SMSG_MERCENARY_UPDATE 0x02a2 8 MercenaryRecv::processMercenaryUpdate 20060424 const int sp = msg.readInt16("type");
const int val = msg.readInt32("value");
SMSG_MERCENARY_SKILLS 0x029d -1 MercenaryRecv::processMercenarySkills 20060424 const int count = (msg.readInt16("len") - 4) / 37;
const int skillId = msg.readInt16("skill id");
msg.readInt32("inf"));
const int level = msg.readInt16("skill level");
const int sp = msg.readInt16("sp");
const int range = msg.readInt16("range");
const std::string name = msg.readString(24, "skill name");
const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
SMSG_PLAYER_ITEM_RENTAL_EXPIRED 0x0299 6 InventoryRecv::processPlayerItemRentalExpired 20060424 const int index = msg.readInt16("index") - INVENTORY_OFFSET;
const int id = msg.readItemId("item id");
SMSG_PLAYER_ITEM_RENTAL_TIME 0x0298 8 InventoryRecv::processPlayerItemRentalTime 20060424 const int id = msg.readItemId("item id");
const int seconds = msg.readInt32("seconds");
SMSG_PLAYER_READ_BOOK 0x0294 10 PlayerRecv::processPlayerReadBook 20060424 msg.readInt32("book id");
msg.readInt32("page");
SMSG_BOSS_MAP_INFO 0x0293 70 BeingRecv::processBossMapInfo 20060424 msg.readUInt8("info type");
msg.readInt32("x");
msg.readInt32("y");
msg.readInt16("min hours");
msg.readInt16("min minutes");
msg.readInt16("max hours");
msg.readInt16("max minutes");
msg.readString(24, "monster name"); // really can be used 51 byte?
SMSG_FORMAT_MESSAGE 0x0291 4 ChatRecv::processFormatMessage 20060424 const int msgId = msg.readInt16("msg id");
SMSG_PLAYER_STATUS_CHANGE2 0x028a 18 BeingRecv::processPlayerStatusChange2 20060424 const BeingId id = msg.readBeingId("account id");
const uint32_t option = msg.readInt32("option");
dstBeing->setLevel(msg.readInt32("level"));
msg.readInt32("showEFST");
SMSG_NPC_CASH_SHOP_OPEN 0x0287 -1 CashShopRecv::processCashShopOpen 20060424 count = (msg.readInt16("len") - 12) / blockSize;
count = (msg.readInt16("len") - 8) / blockSize;
const int points = msg.readInt32("cash points");
msg.readInt32("kafra points");
msg.readInt32("price");
const int value = msg.readInt32("discount price");
msg.readUInt8("item type"));
const int itemId = msg.readItemId("item id");
SMSG_BEING_SPECIAL_EFFECT_NUM 0x0284 14 BeingRecv::processBeingSpecialEffectNum 20060424 msg.readBeingId("account id");
msg.readInt32("effect type");
msg.readInt32("num"); // effect variable
SMSG_MAP_ACCOUNT_ID 0x0283 6 GameRecv::processMapAccountId 20060424 msg.readBeingId("account id");
SMSG_MAIL_RETURN 0x0274 8 MailRecv::processMailReturn 20060306 const int mail = msg.readInt32("message id");
const int flag = msg.readInt16("fail flag");
SMSG_MAIL_OPEN_WINDOW 0x0260 6 MailRecv::processMailOpen 20051024 const int flag = msg.readInt32("flag");
SMSG_AUCTION_OPEN_WINDOW 0x025f 6 AuctionRecv::processOpenWindow 20051024 msg.readInt32("flag"); // 0 - open, 1 - close
SMSG_AUCTION_CLOSE 0x025d 4 AuctionRecv::processAuctionClose 20051017 msg.readInt16("flag");
SMSG_PLAYER_COOKING_LIST 0x025a -1 InventoryRecv::processPlayerCookingList 20051010 const int count = (msg.readInt16("len") - 6) / itemIdLen;
msg.readInt16("list type");
msg.readItemId("item id");
SMSG_STARS_KILL 0x020e 32 BeingRecv::processStarsKill 20051010 msg.readString(24, "map name");
msg.readInt32("monster id");
msg.readUInt8("start");
msg.readUInt8("result");
SMSG_AUCTION_SET_ITEM 0x0256 5 AuctionRecv::processAuctionSetItem 20050912 msg.readInt16("index");
msg.readUInt8("flag");
SMSG_MAIL_DELETE_MAIL_ACK 0x0257 8 MailRecv::processDeleteAck 20050829 const int mail = msg.readInt32("message id");
const int flag = msg.readInt16("fail flag");
SMSG_MAIL_SET_ATTACHMENT_ACK 0x0255 5 MailRecv::processSetAttachmentAck 20050829 const int index = msg.readInt16("index");
const int flag = msg.readUInt8("flag");
SMSG_MAIL_MAILS_LIST 0x0240 -1 MailRecv::processMailList 20050829 const int count = (msg.readInt16("len") - 8) / 73;
const int amount = msg.readInt32("amount");
mail->id = msg.readInt32("message id");
mail->title = msg.readString(40, "title");
mail->read = msg.readUInt8("unread flag") != 0U ? true : false;
mail->sender = msg.readString(24, "sender name");
mail->time = msg.readInt32("time stamp");
SMSG_GLADIATOR_FEEL_REQUEST 0x0253 3 BeingRecv::processGladiatorFeelRequest 20050817 msg.readUInt8("which");
SMSG_MAIL_GET_ATTACHMENT 0x0245 3 MailRecv::processGetAttachment 20050801 const uint8_t flag = msg.readUInt8("flag");
SMSG_AUCTION_RESULTS 0x0252 -1 AuctionRecv::processAuctionResults 20050718 msg.readInt16("len");
msg.readInt32("pages");
const int itemCount = msg.readInt32("items count");
msg.readInt32("auction id");
msg.readString(24, "seller name");
msg.readInt16("item id"); // here item always 16 bit
msg.readInt32("auction type");
msg.readInt16("item amount"); // always 1
msg.readUInt8("identify");
msg.readUInt8("attribute");
msg.readUInt8("refine");
msg.readUInt16("card"); // here item always 16 bit
msg.readInt32("price");
msg.readInt32("buy now");
msg.readString(24, "buyer name");
msg.readInt32("timestamp");
SMSG_AUCTION_MESSAGE 0x0250 3 AuctionRecv::processAuctionMessage 20050718 msg.readUInt8("message");
SMSG_MAIL_NEW_MAIL 0x024a 70 MailRecv::processNewMail 20050718 msg.readInt32("message id");
const std::string subj = msg.readString(40, "title");
const std::string sender = msg.readString(24, "sender name");
SMSG_MAIL_SEND_MAIL_ACK 0x0249 3 MailRecv::processSendMailAck 20050718 const uint8_t flag = msg.readUInt8("fail flag");
SMSG_MAIL_READ_MAIL 0x0242 -1 MailRecv::processReadMail 20050718 const int sz = msg.readInt16("len") - 101;
mail->id = msg.readInt32("message id");
mail->title = msg.readString(40, "title");
mail->sender = msg.readString(24, "sender name");
msg.readInt32("unused");
mail->money = msg.readInt32("money");
const int amount = msg.readInt32("item amount");
const int itemId = msg.readInt16("item id");
msg.readInt16("item type"));
const uint8_t identify = msg.readUInt8("identify");
const Damaged damaged = fromBool(msg.readUInt8("attribute"), Damaged);
const uint8_t refine = msg.readUInt8("refine");
cards[d] = msg.readUInt16("card");
const int msgLen = msg.readUInt8("msg len");
mail->text = msg.readString(sz, "message");
msg.readUInt8("zero");
SMSG_PLAYER_STORAGE_PASSWORD_RESULT 0x023c 6 InventoryRecv::processPlayerStoragePasswordResult 20050608 msg.readInt16("result");
msg.readInt16("error count");
SMSG_PLAYER_STORAGE_PASSWORD 0x023a 4 InventoryRecv::processPlayerStoragePassword 20050608 msg.readInt16("info");
SMSG_HOMUNCULUS_FOOD 0x022f 5 HomunculusRecv::processHomunculusFood 20050608 const int flag = msg.readUInt8("fail");
const int itemId = msg.readItemId("food id");
SMSG_HOMUNCULUS_SKILL_UP 0x0239 11 HomunculusRecv::processHomunculusSkillUp 20050531 const int skillId = msg.readInt16("skill id");
const int level = msg.readInt16("level");
const int sp = msg.readInt16("sp");
const int range = msg.readInt16("range");
const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
SMSG_PK_RANKS_LIST 0x0238 282 BeingRecv::processPkRanksList 20050530 msg.readString(24, "name");
msg.readInt32("points");
SMSG_HOMUNCULUS_SKILLS 0x0235 -1 HomunculusRecv::processHomunculusSkills 20050530 const int count = (msg.readInt16("len") - 4) / 37;
const int skillId = msg.readInt16("skill id");
msg.readInt16("inf"));
msg.readInt16("unused");
const int level = msg.readInt16("skill level");
const int sp = msg.readInt16("sp");
const int range = msg.readInt16("range");
const std::string name = msg.readString(24, "skill name");
const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
SMSG_HOMUNCULUS_DATA 0x0230 12 HomunculusRecv::processHomunculusData 20050523 msg.readUInt8("unused");
const int cmd = msg.readUInt8("state");
const BeingId id = msg.readBeingId("homunculus id");
const int data = msg.readInt32("data");
SMSG_PLAYER_STATUS_CHANGE 0x0229 15 BeingRecv::processPlayerStatusChange 20050411 const BeingId id = msg.readBeingId("account id");
msg.readInt16("opt1");
msg.readInt16("opt2");
msg.readInt32("option");
msg.readInt16("option");
msg.readUInt8("karma");
const uint32_t opt1 = msg.readInt16("opt1");
const uint32_t opt2 = msg.readInt16("opt2");
option = msg.readInt32("option");
option = msg.readInt16("option");
dstBeing->setKarma(msg.readUInt8("karma"));
SMSG_TAEKWON_RANKS_LIST 0x0226 282 BeingRecv::processTaekwonRanksList 20050328 msg.readString(24, "name");
msg.readInt32("points");
SMSG_PLAYER_FAME_TAEKWON 0x0224 10 PlayerRecv::processPlayerFameTaekwon 20050328 msg.readInt32("points");
msg.readInt32("total points");
SMSG_PLAYER_UPGRADE_MESSAGE 0x0223 8 PlayerRecv::processPlayerUpgradeMessage 20041129 msg.readInt32("result");
msg.readItemId("item id");
SMSG_PLAYER_REFINE_LIST 0x0221 -1 InventoryRecv::processPlayerRefineList 20041129 const int count = (msg.readInt16("len") - 4) /
msg.readInt16("item index");
msg.readItemId("item id");
msg.readUInt8("refine");
msg.readItemId("card");
SMSG_PLAYER_FAME_ALCHEMIST 0x021c 10 PlayerRecv::processPlayerFameAlchemist 20041108 msg.readInt32("points");
msg.readInt32("total points");
SMSG_PLAYER_FAME_BLACKSMITH 0x021b 10 PlayerRecv::processPlayerFameBlacksmith 20041108 msg.readInt32("points");
msg.readInt32("total points");
SMSG_ALCHEMIST_RANKS_LIST 0x021a 282 BeingRecv::processAlchemistRanksList 20041108 msg.readString(24, "name");
msg.readInt32("points");
SMSG_BLACKSMITH_RANKS_LIST 0x0219 282 BeingRecv::processBlacksmithRanksList 20041108 msg.readString(24, "name");
msg.readInt32("points");
SMSG_FAMILY_ASK_FOR_CHILD_REPLY 0x0216 6 FamilyRecv::processAskForChildReply 20041108 const int type = msg.readInt32("type");
SMSG_PLAYER_SKILL_MESSAGE 0x0215 6 PlayerRecv::processPlayerSkillMessage 20041101 const int message = msg.readInt32("type");
SMSG_PVP_INFO 0x0210 22 PlayerRecv::processPvpInfo 20040817 msg.readInt32("char id");
msg.readBeingId("account id");
msg.readInt32("pvp won");
msg.readInt32("pvp lost");
msg.readInt32("pvp point");
SMSG_ADMIN_ACCOUNT_STATS 0x0214 42 AdminRecv::processAccountStats 20040816 msg.readUInt8("str");
msg.readUInt8("need str");
msg.readUInt8("agi");
msg.readUInt8("need agi");
msg.readUInt8("vit");
msg.readUInt8("need vit");
msg.readUInt8("int");
msg.readUInt8("need int");
msg.readUInt8("dex");
msg.readUInt8("need dex");
msg.readUInt8("luk");
msg.readUInt8("need luk");
msg.readInt16("attack");
msg.readInt16("refine");
msg.readInt16("matk max");
msg.readInt16("matk min");
msg.readInt16("item def");
msg.readInt16("plus def");
msg.readInt16("mdef");
msg.readInt16("plus mdef");
msg.readInt16("hit");
msg.readInt16("flee");
msg.readInt16("flee2/10");
msg.readInt16("cri/10");
msg.readInt16("speed");
msg.readInt16("zero");
SMSG_TRADE_RESPONSE 0x01f5 9 TradeRecv::processTradeResponse 6 const uint8_t type = msg.readUInt8("type");
msg.readInt32("char id");
msg.readInt16("base level");
SMSG_TRADE_REQUEST 0x01f4 32 TradeRecv::processTradeRequest 6 const std::string &partner = msg.readString(24, "name");
msg.readInt32("char id");
msg.readInt16("base level");
SMSG_BEING_CHANGE_LOOKS2 0x01d7 11 BeingRecv::processBeingChangeLook2 4 msg.readBeingId("being id"));
const uint8_t type = msg.readUInt8("type");
const int id = msg.readItemId("id1");
unsigned int id2 = msg.readItemId("id2");
SMSG_SKILL_DAMAGE 0x01de 33 BeingRecv::processSkillDamage 3 const int id = msg.readInt16("skill id");
msg.readBeingId("src being id"));
msg.readBeingId("dst being id"));
msg.readInt32("tick");
msg.readInt32("src speed");
msg.readInt32("dst speed");
param1 = msg.readInt32("damage");
param1 = msg.readInt16("damage");
const int level = msg.readInt16("skill level");
msg.readInt16("div");
msg.readUInt8("skill hit/type?");
SMSG_PLAYER_INVENTORY_USE 0x01c8 13 InventoryRecv::processPlayerInventoryUse 3 const int index = msg.readInt16("index") - INVENTORY_OFFSET;
const int itemId = msg.readItemId("item id");
const BeingId id = msg.readBeingId("account id");
const int amount = msg.readInt16("amount");
const uint8_t flag = msg.readUInt8("type");
SMSG_FORMAT_COLOR_MESSAGE 0x09cd 8 ChatRecv::processFormatColor 0 const int msgId = msg.readInt16("msg id");
msg.readInt32("color");
SMSG_FORMAT_MESSAGE_STRING 0x02c2 -1 ChatRecv::processFormatMessageString 0 const int strLen = msg.readInt16("len") - 6;
const int msgId = msg.readInt16("msg id");
const std::string message = msg.readString(strLen, "value");
SMSG_GUILD_ONLINE_INFO 0x016d 14 GuildRecv::processOnlineInfo 0 msg.readBeingId("being id");
msg.readInt32("char id");
msg.readInt32("online");
SMSG_ADD_MAP_MARKER 0x09c1 10 MapRecv::processAddMapMarker 0 msg.readBeingId("account id");
msg.readInt16("x");
msg.readInt16("y");
SMSG_BOOKING_SUB_FILTERING_LIST 0x090c 30 nullptr 0
SMSG_BOOKING_ADD_FILTERING_LIST 0x090b 30 nullptr 0
SMSG_BOOKING_CANCEL_VOLUNTEER 0x0909 6 nullptr 0
SMSG_WHO_ANSWER 0x00c2 6 Ea::GameRecv::processWhoAnswer 0 msg.readInt32("users count"));
SMSG_WEDDING_EFFECT 0x01ea 6 BeingRecv::processWddingEffect 0 msg.readBeingId("being id");
SMSG_WALK_RESPONSE 0x0087 12 PlayerRecv::processWalkResponse 0 (sy&0x0f)");
SMSG_VENDING_SHOW_BOARD 0x0131 86 VendingRecv::processShowBoard 0 const BeingId id = msg.readBeingId("owner id");
dstBeing->setSellBoard(msg.readString(80, "shop name"));
msg.readString(80, "shop name");
SMSG_VENDING_OPEN_REQ 0x012d 4 VendingRecv::processOpenReq 0 VendingSlotsListener::distributeEvent(msg.readInt16("slots allowed"));
SMSG_VENDING_HIDE_BOARD 0x0132 6 VendingRecv::processHideBoard 0 const BeingId id = msg.readBeingId("owner id");
SMSG_VENDING_BUY_ACK 0x0135 7 VendingRecv::processBuyAck 0 msg.readInt16("inv index");
msg.readInt16("amount");
const int flag = msg.readUInt8("flag");
SMSG_TRADE_UNDO 0x00f1 2 TradeRecv::processTradeUndo 0
SMSG_TRADE_OK 0x00ec 3 Ea::TradeRecv::processTradeOk 0 tradeWindow->receivedOk(msg.readUInt8("status") == 0U);
msg.readUInt8("status");
SMSG_TRADE_ITEM_ADD_RESPONSE 0x00ea 5 TradeRecv::processTradeItemAddResponse 0 msg.readInt16("index");
const uint8_t res = msg.readUInt8("fail");
SMSG_TRADE_COMPLETE 0x00f0 3 Ea::TradeRecv::processTradeComplete 0
SMSG_TRADE_CANCEL 0x00ee 2 Ea::TradeRecv::processTradeCancel 0
SMSG_SPIRIT_BALL_SINGLE 0x01e1 8 BeingRecv::processSpiritBalls 0 msg.readBeingId("being id"));
const int balls = msg.readInt16("spirits amount");
SMSG_SPIRIT_BALLS 0x01d0 8 BeingRecv::processSpiritBalls 0 msg.readBeingId("being id"));
const int balls = msg.readInt16("spirits amount");
SMSG_SOLVE_CHAR_NAME 0x0194 30 BeingRecv::processSolveCharName 0 const int flag = msg.readInt16("flag");
const int id = msg.readInt32("char id");
msg.readString(24, "name");
actorManager->addChar(id, msg.readString(24, "name"));
SMSG_SKILL_UNIT_UPDATE 0x01ac 6 SkillRecv::processSkillUnitUpdate 0 msg.readBeingId("being id");
SMSG_SKILL_MEMO_MESSAGE 0x011e 3 SkillRecv::processSkillMemoMessage 0 const int type = msg.readUInt8("type");
SMSG_SKILL_GROUND_NO_DAMAGE 0x0117 18 BeingRecv::processSkillGroundNoDamage 0 msg.readInt16("skill id");
msg.readInt32("src id");
msg.readInt16("val");
msg.readInt16("x");
msg.readInt16("y");
msg.readInt32("tick");
SMSG_SKILL_GROUND_DAMAGE_UNUSED 0x0115 35 nullptr 0
SMSG_SKILL_FAILED 0x0110 10 SkillRecv::processSkillFailed 0 const int skillId = msg.readInt16("skill id");
const int bskill = msg.readItemId("btype");
const int itemId = msg.readItemId("item id");
const signed char success = msg.readUInt8("success");
const signed char reason = msg.readUInt8("reason");
SMSG_SKILL_DEVOTION_EFFECT 0x01cf 28 SkillRecv::processSkillDevotionEffect 0 msg.readBeingId("being id");
msg.readInt32("devotee id");
msg.readInt16("range");
SMSG_SKILL_CAST_CANCEL 0x01b9 6 BeingRecv::processSkillCancel 0 msg.readInt32("id?");
SMSG_SKILL_AUTO_CAST 0x0147 39 BeingRecv::processSkillAutoCast 0 const int id = msg.readInt16("skill id");
msg.readInt16("inf");
msg.readInt16("unused");
const int level = msg.readInt16("skill level");
msg.readInt16("sp");
msg.readInt16("range");
msg.readString(24, "skill name");
msg.readInt8("unused");
SMSG_SKILL_ARROW_CREATE_LIST 0x01ad -1 SkillRecv::processSkillArrowCreateList 0 const int count = (msg.readInt16("len") - 4) / itemIdLen;
msg.readItemId("item id");
SMSG_SERVER_PING 0x007f 6 GameRecv::processServerTick 0 msg.readInt32("tick");
SMSG_SCRIPT_MESSAGE 0x08b3 -1 ChatRecv::processScriptMessage 0 const int sz = msg.readInt16("len") - 8;
msg.readBeingId("being id");
const std::string message = msg.readString(sz, "message");
SMSG_PVP_SET 0x019a 14 BeingRecv::processPvpSet 0 const BeingId id = msg.readBeingId("being id");
const int rank = msg.readInt32("rank");
msg.readInt32("num");
SMSG_PVP_MAP_MODE 0x0199 4 Ea::BeingRecv::processPvpMapMode 0 map->setPvpMode(msg.readInt16("pvp mode"));
SMSG_PLAYER_WARP 0x0091 22 Ea::PlayerRecv::processPlayerWarp 0 std::string mapPath = msg.readString(16, "map name");
int x = msg.readInt16("x");
int y = msg.readInt16("y");
SMSG_PLAYER_USE_CARD 0x017b -1 InventoryRecv::processPlayerUseCard 0 const int count = (msg.readInt16("len") - 4) / 2;
const int itemIndex = msg.readInt16("item index") - INVENTORY_OFFSET;
SMSG_PLAYER_STORAGE_STATUS 0x00f2 6 Ea::InventoryRecv::processPlayerStorageStatus 0 msg.readInt16("used count");
const int size = msg.readInt16("max size");
SMSG_PLAYER_STORAGE_REMOVE 0x00f6 8 InventoryRecv::processPlayerStorageRemove 0 const int index = msg.readInt16("index") - STORAGE_OFFSET;
const int amount = msg.readInt32("amount");
SMSG_PLAYER_STORAGE_CLOSE 0x00f8 2 Ea::InventoryRecv::processPlayerStorageClose 0
SMSG_PLAYER_STOP 0x0088 10 Ea::BeingRecv::processPlayerStop 0 const BeingId id = msg.readBeingId("account id");
const uint16_t x = msg.readInt16("x");
const uint16_t y = msg.readInt16("y");
msg.readInt16("x");
msg.readInt16("y");
SMSG_PLAYER_STAT_UPDATE_6 0x00be 5 Ea::PlayerRecv::processPlayerStatUpdate6 0 const int type = msg.readInt16("type");
const int value = msg.readUInt8("value");
SMSG_PLAYER_STAT_UPDATE_5 0x00bd 44 PlayerRecv::processPlayerStatUpdate5 0 msg.readInt16("char points"),
unsigned int val = msg.readUInt8("str");
msg.readUInt8("str cost"));
msg.readUInt8("str need");
val = msg.readUInt8("agi");
msg.readUInt8("agi cost"));
msg.readUInt8("agi cost");
val = msg.readUInt8("vit");
msg.readUInt8("vit cost"));
msg.readUInt8("vit cost");
val = msg.readUInt8("int");
msg.readUInt8("int cost"));
msg.readUInt8("int cost");
val = msg.readUInt8("dex");
msg.readUInt8("dex cost"));
msg.readUInt8("dex cost");
val = msg.readUInt8("luk");
msg.readUInt8("luk cost"));
msg.readUInt8("luk cost");
msg.readInt16("left atk"),
msg.readInt16("right atk"),
val = msg.readInt16("right matk");
val = msg.readInt16("left matk");
msg.readInt16("left def"),
msg.readInt16("right def"),
msg.readInt16("left mdef"),
msg.readInt16("right mdef"),
msg.readInt16("hit"),
msg.readInt16("flee"),
msg.readInt16("flee2/10"),
msg.readInt16("crit/10"),
msg.readInt16("attack speed"),
msg.readInt16("plus speed = 0");
SMSG_PLAYER_STAT_UPDATE_4 0x00bc 6 Ea::PlayerRecv::processPlayerStatUpdate4 0 const uint16_t type = msg.readInt16("type");
const uint8_t ok = msg.readUInt8("flag");
const int value = msg.readUInt8("value");
SMSG_PLAYER_STAT_UPDATE_3 0x0141 14 Ea::PlayerRecv::processPlayerStatUpdate3 0 const int type = msg.readInt32("type");
const int base = msg.readInt32("base");
const int bonus = msg.readInt32("bonus");
SMSG_PLAYER_STAT_UPDATE_2 0x00b1 8 Ea::PlayerRecv::processPlayerStatUpdate2 0 const int type = msg.readInt16("type");
const int value = msg.readInt32("value");
SMSG_PLAYER_STAT_UPDATE_1 0x00b0 8 Ea::PlayerRecv::processPlayerStatUpdate1 0 const int type = msg.readInt16("type");
const int value = msg.readInt32("value");
SMSG_PLAYER_SKILL_UP 0x010e 11 Ea::SkillRecv::processPlayerSkillUp 0 const int skillId = msg.readInt16("skill id");
const int level = msg.readInt16("skill level");
const int sp = msg.readInt16("sp");
const int range = msg.readInt16("range");
const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
SMSG_PLAYER_SKILL_PRODUCE_MIX_LIST 0x018d -1 SkillRecv::processSkillProduceMixList 0 const int count = (msg.readInt16("len") - 4) / 4 * itemIdLen;
msg.readItemId("item id");
msg.readItemId("material id");
SMSG_PLAYER_SKILL_PRODUCE_EFFECT 0x018f 6 SkillRecv::processSkillProduceEffect 0 msg.readInt16("flag");
msg.readItemId("item id");
SMSG_PLAYER_SKILLS 0x010f -1 SkillRecv::processPlayerSkills 0 msg.readInt16("len");
const int skillId = msg.readInt16("skill id");
msg.readInt32("inf"));
msg.readInt32("inf2");
const int level = msg.readInt16("skill level");
const int sp = msg.readInt16("sp");
const int range = msg.readInt16("range");
const std::string name = msg.readString(24, "skill name");
const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
SMSG_PLAYER_REPAIR_LIST 0x01fc -1 InventoryRecv::processPlayerRepairList 0 const int count = (msg.readInt16("len") - 4) /
msg.readInt16("index");
msg.readItemId("item id");
msg.readUInt8("refine");
msg.readItemId("card");
SMSG_PLAYER_REPAIR_EFFECT 0x01fe 5 InventoryRecv::processPlayerRepairEffect 0 msg.readInt16("item index");
msg.readUInt8("flag");
SMSG_PLAYER_REFINE 0x0188 8 InventoryRecv::processPlayerRefine 0 const int flag = msg.readInt16("flag");
const int index = msg.readInt16("inv index") - INVENTORY_OFFSET;
msg.readInt16("refine");
SMSG_PLAYER_NOTIFY_MAPINFO 0x0189 4 PlayerRecv::processNotifyMapInfo 0 msg.readInt16("type");
SMSG_PLAYER_MOVE_TO_ATTACK 0x0139 16 Ea::BeingRecv::processPlayerMoveToAttack 0 msg.readInt32("target id");
msg.readInt16("target x");
msg.readInt16("target y");
msg.readInt16("x");
msg.readInt16("y");
msg.readInt16("attack range");
SMSG_PLAYER_INVENTORY_REMOVE 0x00af 6 InventoryRecv::processPlayerInventoryRemove 0 const int index = msg.readInt16("index") - INVENTORY_OFFSET;
const int amount = msg.readInt16("amount");
SMSG_PLAYER_INSERT_CARD 0x017d 7 InventoryRecv::processPlayerInsertCard 0 const int itemIndex = msg.readInt16("item index") - INVENTORY_OFFSET;
const int cardIndex = msg.readInt16("card index") - INVENTORY_OFFSET;
if (msg.readUInt8("flag") != 0U)
SMSG_PLAYER_IDENTIFY_LIST 0x0177 -1 InventoryRecv::processPlayerIdentifyList 0 const int count = msg.readInt16("len") - 4;
msg.readInt16("inv index");
SMSG_PLAYER_IDENTIFIED 0x0179 5 InventoryRecv::processPlayerIdentified 0 msg.readInt16("inv index");
msg.readUInt8("flag");
SMSG_PLAYER_CHAT 0x008e -1 ChatRecv::processChat 0 const int chatMsgLength = msg.readInt16("len") - 4;
processChatContinue(msg.readRawString(chatMsgLength, "message"),
SMSG_PLAYER_CART_REMOVE 0x0125 8 InventoryRecv::processPlayerCartRemove 0 const int index = msg.readInt16("index") - INVENTORY_OFFSET;
const int amount = msg.readInt32("amount");
SMSG_PLAYER_CART_ADD_ERROR 0x012c 3 InventoryRecv::processCartAddError 0 switch (msg.readUInt8("flag"))
SMSG_PLAYER_ATTACK_RANGE 0x013a 4 Ea::InventoryRecv::processPlayerAttackRange 0 const int range = msg.readInt16("range");
SMSG_PLAYER_ARROW_MESSAGE 0x013b 4 Ea::PlayerRecv::processPlayerArrowMessage 0 const int type = msg.readInt16("type");
SMSG_PLAYER_ARROW_EQUIP 0x013c 4 Ea::InventoryRecv::processPlayerArrowEquip 0 int index = msg.readInt16("index");
SMSG_PLAYER_ADD_SKILL 0x0111 39 SkillRecv::processSkillAdd 0 const int skillId = msg.readInt16("skill id");
msg.readInt32("inf"));
const int level = msg.readInt16("skill level");
const int sp = msg.readInt16("sp");
const int range = msg.readInt16("range");
const std::string name = msg.readString(24, "skill name");
const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
SMSG_PET_ROULETTE 0x01a0 3 PetRecv::processPetRoulette 0 const uint8_t data = msg.readUInt8("data");
SMSG_PET_MESSAGE 0x01aa 10 PetRecv::processPetMessage 0 msg.readBeingId("pet id");
msg.readInt32("param");
SMSG_PET_FOOD 0x01a3 5 PetRecv::processPetFood 0 const int result = msg.readUInt8("result");
msg.readItemId("food id");
SMSG_PET_EGGS_LIST 0x01a6 -1 PetRecv::processEggsList 0 const int count = (msg.readInt16("len") - 4) / 2;
const int index = msg.readInt16("index") - INVENTORY_OFFSET;
const int index = msg.readInt16("index") - INVENTORY_OFFSET;
SMSG_PET_DATA 0x01a4 11 PetRecv::processPetData 0 const int cmd = msg.readUInt8("type");
const BeingId id = msg.readBeingId("pet id");
const int data = msg.readInt32("data");
SMSG_PET_CATCH_PROCESS 0x019e 2 PetRecv::processPetCatchProcess 0
SMSG_PARTY_UPDATE_COORDS 0x0107 10 Ea::PartyRecv::processPartyUpdateCoords 0 const BeingId id = msg.readBeingId("account id");
m->setX(msg.readInt16("x"));
m->setY(msg.readInt16("y"));
msg.readInt16("x");
msg.readInt16("y");
SMSG_PARTY_MESSAGE 0x0109 -1 PartyRecv::processPartyMessage 0 const int msgLength = msg.readInt16("len") - 8;
const BeingId id = msg.readBeingId("id");
std::string chatMsg = msg.readString(msgLength, "message");
SMSG_PARTY_LEAVE 0x0105 31 Ea::PartyRecv::processPartyLeave 0 const BeingId id = msg.readBeingId("account id");
const std::string nick = msg.readString(24, "nick");
const int reason = msg.readUInt8("flag");
SMSG_PARTY_LEADER 0x07fc 10 PartyRecv::processPartyLeader 0 msg.readBeingId("old leder id"));
msg.readBeingId("new leder id"));
SMSG_PARTY_INVITE_RESPONSE_OUTDATED 0x00fd 27 nullptr 0
SMSG_PARTY_CREATE 0x00fa 3 Ea::PartyRecv::processPartyCreate 0 if (msg.readUInt8("flag") != 0U)
SMSG_NPC_VIEWPOINT 0x0144 23 NpcRecv::processNpcViewPoint 0 msg.readInt32("npc id");
msg.readInt32("type"); // 0 display for 15 sec,
msg.readInt32("x");
msg.readInt32("y");
msg.readUInt8("number"); // can be used for scripts
msg.readInt32("color");
SMSG_NPC_STR_INPUT 0x01d4 6 Ea::NpcRecv::processNpcStrInput 0
SMSG_NPC_SHOW_DIGIT 0x01b1 7 NpcRecv::processShowDigit 0 msg.readUInt8("type");
msg.readInt32("value");
SMSG_NPC_SELL_RESPONSE 0x00cb 3 BuySellRecv::processNpcSellResponse 0 switch (msg.readUInt8("result"))
SMSG_NPC_SELL 0x00c7 -1 Ea::BuySellRecv::processNpcSell 0 msg.readInt16("len");
const int index = msg.readInt16("index") - INVENTORY_OFFSET;
const int value = msg.readInt32("value");
msg.readInt32("value?");
SMSG_NPC_NEXT 0x00b5 6 Ea::NpcRecv::processNpcNext 0
SMSG_NPC_MESSAGE 0x00b4 -1 Ea::NpcRecv::processNpcMessage 0 msg.readInt16("len");
const std::string message = msg.readString(msg.getLength() - 8, "message");
SMSG_NPC_INT_INPUT 0x0142 6 Ea::NpcRecv::processNpcIntInput 0
SMSG_NPC_CUTIN 0x01b3 67 NpcRecv::processNpcCutin 0 msg.readString(64, "image name");
msg.readUInt8("type");
const std::string image = msg.readString(64, "image name");
const CutInT cutin = static_cast<CutInT>(msg.readUInt8("type"));
SMSG_NPC_CLOSE_TIMEOUT 0x08d6 6 NpcRecv::processNpcCloseTimeout 0 msg.readInt32("npc id");
SMSG_NPC_CLOSE 0x00b6 6 Ea::NpcRecv::processNpcClose 0
SMSG_NPC_CHOICE 0x00b7 -1 Ea::NpcRecv::processNpcChoice 0 msg.readInt16("len");
mDialog->parseListItems(msg.readString(msg.getLength() - 8,"select items"));
msg.readString(msg.getLength() - 8, "select items");
SMSG_NPC_CASH_TAB_PRICE_LIST 0x08c0 -1 CashShopRecv::processCashShopTabPriceList 0 const int count = (msg.readInt16("len") - 10) / 6;
msg.readInt32("tab");
const int itemsCount = msg.readInt16("count");
msg.readInt16("item id"); // item id size always 16 bit
msg.readInt32("price");
SMSG_NPC_CASH_SCHEDULE 0x08ca -1 CashShopRecv::processCashShopSchedule 0 const int count = (msg.readInt16("len") - 8) / blockSize;
const int itemsCount = msg.readInt16("count");
msg.readInt16("tab");
msg.readItemId("item id");
msg.readInt32("price");
SMSG_NPC_CASH_POINTS 0x0845 10 CashShopRecv::processCashShopPoints 0 msg.readInt32("cash points");
msg.readInt32("kafra points");
SMSG_NPC_BUY_SELL_CHOICE 0x00c4 6 Ea::BuySellRecv::processNpcBuySellChoice 0 mNpcId = msg.readBeingId("npc id");
SMSG_NPC_BUY_RESPONSE 0x00ca 3 BuySellRecv::processNpcBuyResponse 0 const uint8_t response = msg.readUInt8("response");
SMSG_NPC_BUY 0x00c6 -1 BuySellRecv::processNpcBuy 0 msg.readInt16("len");
const int value = msg.readInt32("price");
msg.readInt32("dc value?");
msg.readUInt8("type"));
const int itemId = msg.readItemId("item id");
SMSG_MVP_NO_ITEM 0x010d 2 ChatRecv::processMVPNoItem 0
SMSG_MVP_EFFECT 0x010c 6 Ea::ChatRecv::processMVPEffect 0 const BeingId id = msg.readBeingId("being id");
SMSG_MVP_ITEM 0x010a 4 ChatRecv::processMVPItem 0 msg.readItemId("item id");
SMSG_MONSTER_INFO 0x018c 29 BeingRecv::processMonsterInfo 0 msg.readInt16("class");
msg.readInt16("level");
msg.readInt16("size");
msg.readInt32("hp");
msg.readInt16("def");
msg.readInt16("race");
msg.readInt16("mdef");
msg.readInt16("ele");
SMSG_MARRIAGE_PROPOSAL_OUTDATED 0x01e2 34 nullptr 0
SMSG_MARRIAGE_PROCESS_OUTDATED 0x01e4 2 nullptr 0
SMSG_MAP_TYPE 0x01d6 4 BeingRecv::processMapType 0 const int16_t type = msg.readInt16("type");
SMSG_MAP_QUIT_RESPONSE 0x018b 4 Ea::GameRecv::processMapQuitResponse 0 if (msg.readInt16("response") != 0)
SMSG_MAP_AUTH_REFUSE 0x0074 3 GameRecv::processMapAuthRefuse 0 msg.readUInt8("error");
SMSG_MANNER_MESSAGE 0x014a 6 ChatRecv::processMannerMessage 0 const int result = msg.readInt32("type");
SMSG_ITEM_VISIBLE 0x009d 17 ItemRecv::processItemVisible 0 const BeingId id = msg.readBeingId("item object id");
const int itemId = msg.readItemId("item id");
msg.readUInt8("identify"), Identified);
const int x = msg.readInt16("x");
const int y = msg.readInt16("y");
const int amount = msg.readInt16("amount");
const int subX = CAST_S32(msg.readInt8("sub x"));
const int subY = CAST_S32(msg.readInt8("sub y"));
SMSG_ITEM_USE_RESPONSE 0x00a8 7 Ea::InventoryRecv::processItemUseResponse 0 const int index = msg.readInt16("index") - INVENTORY_OFFSET;
const int amount = msg.readInt16("amount");
if (msg.readUInt8("result") == 0)
SMSG_ITEM_REMOVE 0x00a1 6 Ea::ItemRecv::processItemRemove 0 ->findItem(msg.readBeingId("floor item id")))
SMSG_ITEM_MVP_DROPPED 0x07fd -1 ItemRecv::processItemMvpDropped 0 msg.readInt16("len");
msg.readUInt8("type");
msg.readItemId("item id");
msg.readUInt8("len");
msg.readString(24, "name");
msg.readUInt8("monster name len");
msg.readString(24, "monster name");
SMSG_IGNORE_NICK_ACK 0x00d1 4 ChatRecv::processIgnoreNickAck 0 const int type = msg.readUInt8("type");
const int flag = msg.readUInt8("flag");
SMSG_IGNORE_ALL_RESPONSE 0x00d2 4 Ea::ChatRecv::processIgnoreAllResponse 0 const uint8_t action = msg.readUInt8("action");
const uint8_t fail = msg.readUInt8("result");
SMSG_GUILD_UPDATE_COORDS 0x01eb 10 GuildRecv::processGuildUpdateCoords 0 const BeingId id = msg.readBeingId("account id");
const int x = msg.readInt16("x");
const int y = msg.readInt16("y");
SMSG_GUILD_SKILL_INFO 0x0162 -1 GuildRecv::processGuildSkillInfo 0 const int count = (msg.readInt16("len") - 6) / 37;
msg.readInt16("skill points");
const int skillId = msg.readInt16("skill id");
msg.readInt32("inf"));
const int level = msg.readInt16("skill level");
const int sp = msg.readInt16("sp");
const int range = msg.readInt16("range");
const std::string name = msg.readString(24, "skill name");
const Modifiable up = fromBool(msg.readUInt8("up flag"), Modifiable);
SMSG_GUILD_REQ_ALLIANCE_ACK 0x0173 3 GuildRecv::processGuildReqAllianceAck 0 msg.readInt32("flag");
SMSG_GUILD_REQ_ALLIANCE 0x0171 30 GuildRecv::processGuildReqAlliance 0 msg.readInt32("id");
msg.readString(24, "name");
SMSG_GUILD_POS_NAME_LIST 0x0166 -1 GuildRecv::processGuildPosNameList 0 const int length = msg.readInt16("len");
const int id = msg.readInt32("position id");
const std::string name = msg.readString(24, "position name");
SMSG_GUILD_POS_INFO_LIST 0x0160 -1 GuildRecv::processGuildPosInfoList 0 const int length = msg.readInt16("len");
msg.readInt32("id");
msg.readInt32("mode");
msg.readInt32("same id");
msg.readInt32("exp mode");
SMSG_GUILD_POSITION_INFO 0x016c 43 GuildRecv::processGuildPositionInfo 0 const int guildId = msg.readInt32("guild id");
const int emblem = msg.readInt32("elblem id");
static_cast<GuildPositionFlags::Type>(msg.readInt32("mode")));
msg.readUInt8("guild master");
msg.readInt32("unused");
std::string guildName = msg.readString(24, "guild name");
SMSG_GUILD_POSITION_CHANGED 0x0174 -1 GuildRecv::processGuildPositionChanged 0 msg.readInt16("len");
msg.readInt32("id");
msg.readInt32("mode");
msg.readInt32("same ip");
msg.readInt32("exp mode");
msg.readString(24, "name");
SMSG_GUILD_OPPOSITION_ACK 0x0181 3 GuildRecv::processGuildOppositionAck 0 msg.readUInt8("flag");
SMSG_GUILD_NOTICE 0x016f 182 GuildRecv::processGuildNotice 0 const std::string msg1 = msg.readString(60, "msg1");
const std::string msg2 = msg.readString(120, "msg2");
msg.readString(60, "msg1");
msg.readString(120, "msg2");
SMSG_GUILD_MESSAGE 0x017f -1 GuildRecv::processGuildMessage 0 const int msgLength = msg.readInt16("len") - 4;
std::string chatMsg = msg.readString(msgLength, "message");
msg.readString(msgLength, "message");
SMSG_GUILD_MEMBER_POS_CHANGE 0x0156 -1 GuildRecv::processGuildMemberPosChange 0 msg.readInt16("len");
const BeingId accountId = msg.readBeingId("account id");
const int charId = msg.readInt32("char id");
const int pos = msg.readInt32("position");
SMSG_GUILD_MEMBER_LOGIN 0x01f2 20 GuildRecv::processGuildMemberLogin 0 const BeingId accountId = msg.readBeingId("account id");
const int charId = msg.readInt32("char id");
const int online = msg.readInt32("flag");
msg.readInt16("sex")));
msg.readInt16("hair");
msg.readInt16("hair color");
SMSG_GUILD_MASTER_OR_MEMBER 0x014e 6 GuildRecv::processGuildMasterOrMember 0 msg.readInt32("type"); // Type (0x57 for member, 0xd7 for master)
SMSG_GUILD_LEAVE 0x015a 66 GuildRecv::processGuildLeave 0 const std::string nick = msg.readString(24, "nick");
msg.readString(40, "message");
SMSG_GUILD_INVITE_ACK 0x0169 3 GuildRecv::processGuildInviteAck 0 const uint8_t flag = msg.readUInt8("flag");
SMSG_GUILD_INVITE 0x016a 30 GuildRecv::processGuildInvite 0 const int guildId = msg.readInt32("guild id");
const std::string guildName = msg.readString(24, "guild name");
msg.readString(24, "guild name");
SMSG_GUILD_EMBLEM_DATA 0x0152 -1 GuildRecv::processGuildEmblemData 0 const int length = msg.readInt16("len");
msg.readInt32("guild id");
msg.readInt32("emblem id");
SMSG_GUILD_EMBLEM 0x01b4 12 GuildRecv::processGuildEmblem 0 msg.readBeingId("being id");
msg.readInt32("guild id");
msg.readInt16("emblem id");
SMSG_GUILD_DEL_ALLIANCE 0x0184 10 GuildRecv::processGuildDelAlliance 0 msg.readInt32("guild id");
msg.readInt32("flag");
SMSG_GUILD_CREATE_RESPONSE 0x0167 3 GuildRecv::processGuildCreateResponse 0 const uint8_t flag = msg.readUInt8("flag");
SMSG_GUILD_BROKEN 0x015e 6 GuildRecv::processGuildBroken 0 msg.readInt32("flag");
SMSG_GUILD_ALLIANCE_ADDED_DISABLED 0x0185 34 nullptr 0
SMSG_GUILD_ALIANCE_INFO 0x014c -1 GuildRecv::processGuildAlianceInfo 0 const int length = msg.readInt16("len");
msg.readInt32("opposition");
msg.readInt32("guild id");
msg.readString(24, "guild name");
SMSG_GRAFFITI_VISIBLE 0x01c9 97 BeingRecv::processGraffiti 0 const BeingId id = msg.readBeingId("graffiti id");
const BeingId creatorId = msg.readBeingId("creator id");
const int x = msg.readInt16("x");
const int y = msg.readInt16("y");
const int job = msg.readUInt8("job");
msg.readUInt8("visible");
msg.readUInt8("is content");
const std::string text = msg.readString(80, "text");
SMSG_GM_CHAT2 0x01c3 -1 ChatRecv::processGmChat2 0 const int chatMsgLength = msg.readInt16("len") - 16;
msg.readInt32("font color");
msg.readInt16("font type");
msg.readInt16("font size");
msg.readInt16("font align");
msg.readInt16("font y");
const std::string chatMsg = msg.readRawString(chatMsgLength,"message");
msg.readRawString(chatMsgLength, "message");
SMSG_GM_CHAT 0x009a -1 ChatRecv::processGmChat 0 const int chatMsgLength = msg.readInt16("len") - 4;
std::string chatMsg = msg.readRawString(chatMsgLength, "message");
SMSG_FRIENDS_REQUEST_ACK 0x0209 36 FriendsRecv::processRequestAck 0 msg.readInt16("type");
msg.readBeingId("account id");
msg.readInt32("char id");
msg.readString(24, "name");
SMSG_FRIENDS_REQUEST 0x0207 34 FriendsRecv::processRequest 0 msg.readBeingId("account id");
msg.readInt32("char id");
msg.readString(24, "name");
SMSG_FRIENDS_PLAYER_ONLINE 0x0206 11 FriendsRecv::processPlayerOnline 0 msg.readBeingId("account id");
msg.readInt32("char id");
msg.readUInt8("flag"); // 0 - online, 1 - offline
msg.readString(24, "player name");
SMSG_FRIENDS_LIST 0x0201 -1 FriendsRecv::processFriendsList 0 const int count = (msg.readInt16("size") - 4) / 32;
msg.readBeingId("account id");
msg.readInt32("char id");
msg.readString(24, "name");
SMSG_FRIENDS_DELETE_PLAYER 0x020a 10 FriendsRecv::processDeletePlayer 0 msg.readBeingId("account id");
msg.readInt32("char id");
SMSG_FAMILY_DIVORCED 0x0205 26 FamilyRecv::processDivorced 0 const std::string name = msg.readString(24, "name");
SMSG_FAMILY_CALL_PARTNER 0x01e6 26 FamilyRecv::processCallPartner 0 const std::string name = msg.readString(24, "name");
SMSG_FAMILY_ASK_FOR_CHILD 0x01f6 34 FamilyRecv::processAskForChild 0 mParent1 = msg.readBeingId("account id who ask");
mParent2 = msg.readBeingId("acoount id for other parent");
msg.readString(24, "name who ask");
mParent1 = msg.readBeingId("account id who ask");
mParent2 = msg.readBeingId("acoount id for other parent");
const std::string name1 = msg.readString(24, "name who ask");
SMSG_CONNECTION_PROBLEM 0x0081 3 GeneralRecv::processConnectionProblem 0 const uint8_t code = msg.readUInt8("flag");
SMSG_COMBO_DELAY 0x01d2 10 BeingRecv::processComboDelay 0 msg.readBeingId("being id");
msg.readInt32("wait");
SMSG_CLASS_CHANGE 0x01b0 11 BeingRecv::processClassChange 0 msg.readBeingId("being id");
msg.readUInt8("type");
msg.readInt32("class");
SMSG_CHAT_TALKIE_BOX 0x0191 86 ChatRecv::processChatTalkieBox 0 msg.readBeingId("being id");
const std::string message = msg.readString(80, "message");
SMSG_CHAT_SILENCE 0x014b 27 ChatRecv::processChatSilence 0 const int result = msg.readUInt8("type");
const std::string name = msg.readString(24, "gm name");
SMSG_CHAT_ROOM_SETTINGS 0x00df -1 ChatRecv::processChatRoomSettings 0 const int sz = msg.readInt16("len") - 17;
const BeingId ownerId = msg.readBeingId("owner id");
const int chatId = msg.readInt32("chat id");
const uint16_t limit = msg.readInt16("limit");
msg.readInt16("users");
const uint8_t type = msg.readUInt8("type");
const std::string &title = msg.readString(sz, "title");
SMSG_CHAT_ROOM_ROLE_CHANGE 0x00e1 30 ChatRecv::processChatRoomRoleChange 0 const int role = msg.readInt32("role");
const std::string name = msg.readString(24, "name");
SMSG_CHAT_ROOM_LEAVE 0x00dd 29 ChatRecv::processChatRoomLeave 0 msg.readInt16("users");
const std::string name = msg.readString(24, "name");
const int status = msg.readUInt8("flag"); // 0 - left, 1 - kicked
SMSG_CHAT_ROOM_JOIN_FAILED 0x00da 3 ChatRecv::processChatRoomJoinFailed 0 const int result = msg.readUInt8("flag");
SMSG_CHAT_ROOM_JOIN_ACK 0x00db -1 ChatRecv::processChatRoomJoinAck 0 const int count = (msg.readInt16("len") - 8) / 28;
const int id = msg.readInt32("chat id");
msg.readInt32("role");
msg.readString(24, "name");
SMSG_CHAT_ROOM_DESTROY 0x00d8 6 ChatRecv::processChatRoomDestroy 0 const int chatId = msg.readInt32("chat id");
SMSG_CHAT_ROOM_CREATE_ACK 0x00d6 3 ChatRecv::processChatRoomCreateAck 0 const int result = msg.readUInt8("flag");
SMSG_CHAT_ROOM_ADD_MEMBER 0x00dc 28 ChatRecv::processChatRoomAddMember 0 msg.readInt16("users");
const std::string name = msg.readString(24, "name");
SMSG_CHAT_IGNORE_LIST 0x00d4 -1 ChatRecv::processChatIgnoreList 0 const int count = (msg.readInt16("len") - 4) / 24;
msg.readString(24, "nick");
SMSG_CHAT_DISPLAY 0x00d7 -1 ChatRecv::processChatDisplay 0 const int len = msg.readInt16("len") - 17;
obj->ownerId = msg.readBeingId("owner account id");
obj->chatId = msg.readInt32("chat id");
obj->maxUsers = msg.readInt16("max users");
obj->currentUsers = msg.readInt16("current users");
obj->type = msg.readUInt8("type");
obj->title = msg.readString(len, "title");
SMSG_CHAR_SWITCH_RESPONSE 0x00b3 3 Ea::GameRecv::processCharSwitchResponse 0 if (msg.readUInt8("response") != 0U)
SMSG_CHAR_BAN_CHAR_LIST 0x020d -1 CharServerRecv::processCharBanCharList 0 const int count = (msg.readInt16("len") - 4) / 24;
msg.readInt32("char id");
msg.readString(20, "unbun time");
SMSG_CART_REMOVE 0x012b 2 InventoryRecv::processCartRemove 0
SMSG_CART_INFO 0x0121 14 InventoryRecv::processCartInfo 0 msg.readInt16("cart items used");
const int size = msg.readInt16("max cart items");
msg.readInt32("cart weight"),
msg.readInt32("max cart weight"),
SMSG_BLADE_STOP 0x01d1 14 BeingRecv::processBladeStop 0 msg.readInt32("src being id");
msg.readInt32("dst being id");
msg.readInt32("flag");
SMSG_BIND_ITEM 0x02d3 4 InventoryRecv::processBindItem 0 const int index = msg.readInt16("item index") - INVENTORY_OFFSET;
SMSG_BEING_STAT_UPDATE_1 0x01ab 12 BeingRecv::processBeingStatUpdate1 0 const BeingId id = msg.readBeingId("account id");
const int type = msg.readInt16("type");
const int value = msg.readInt32("value");
SMSG_BEING_SPECIAL_EFFECT 0x01f3 10 BeingRecv::processBeingSpecialEffect 0 const BeingId id = msg.readBeingId("being id");
msg.readInt32("effect type");
const int effectType = msg.readInt32("effect type");
SMSG_BEING_SOUND_EFFECT 0x01d3 35 BeingRecv::processBeingSoundEffect 0 msg.readString(24, "sound effect name");
msg.readUInt8("type");
msg.readInt32("unused");
msg.readInt32("source being id");
SMSG_BEING_SLIDE 0x01ff 10 BeingRecv::processBeingSlide 0 msg.readBeingId("being id"));
const int x = msg.readInt16("x");
const int y = msg.readInt16("y");
SMSG_BEING_SELFEFFECT 0x019b 10 BeingRecv::processBeingSelfEffect 0 const BeingId id = msg.readBeingId("being id");
msg.readInt32("effect type");
const int effectType = msg.readInt32("effect type");
SMSG_BEING_RESURRECT 0x0148 8 BeingRecv::processBeingResurrect 0 const BeingId id = msg.readBeingId("being id");
msg.readInt16("unused");
SMSG_BEING_REMOVE_SKILL 0x0120 6 BeingRecv::processBeingRemoveSkill 0 const BeingId id = msg.readBeingId("skill unit id");
SMSG_BEING_REMOVE 0x0080 7 Ea::BeingRecv::processBeingRemove 0 const BeingId id = msg.readBeingId("being id");
const uint8_t type = msg.readUInt8("remove flag");
SMSG_BEING_NAME_RESPONSE 0x0095 30 Ea::BeingRecv::processNameResponse 0 const BeingId beingId = msg.readBeingId("being id");
const std::string name = msg.readString(24, "name");
SMSG_BEING_MOVE2 0x0086 16 BeingRecv::processBeingMove2 0 (sy&0x0f)");
msg.readInt32("tick");
SMSG_BEING_EMOTION 0x00c0 7 Ea::BeingRecv::processBeingEmotion 0 msg.readBeingId("being id"));
msg.readUInt8("emote");
const uint8_t emote = msg.readUInt8("emote");
SMSG_BEING_CHAT 0x008d -1 ChatRecv::processBeingChat 0 const int chatMsgLength = msg.readInt16("len") - 8;
Being *const being = actorManager->findBeing(msg.readBeingId("being id"));
std::string chatMsg = msg.readRawString(chatMsgLength, "message");
SMSG_BEING_CHANGE_DIRECTION 0x009c 9 BeingRecv::processBeingChangeDirection 0 msg.readBeingId("being id"));
msg.readInt16("head direction");
CAST_U8(msg.readUInt8("player direction") & 0x0FU));
SMSG_BEING_ACTION 0x008a 29 Ea::BeingRecv::processBeingAction 0 msg.readBeingId("src being id"));
msg.readBeingId("dst being id"));
msg.readInt32("tick");
const int srcSpeed = msg.readInt32("src speed");
msg.readInt32("dst speed");
const int param1 = msg.readInt16("param1");
msg.readInt16("param 2");
msg.readUInt8("type"));
msg.readInt16("param 3");
SMSG_BATTLE_QUEUE_ACK 0x08d8 27 BattleGroundRecv::processBattleQueueAck 0 msg.readUInt8("type");
msg.readString(24, "bg name");
SMSG_BATTLE_NOTICE_DELETE 0x08db 27 BattleGroundRecv::processBattleNoticeDelete 0 msg.readUInt8("type");
msg.readString(24, "bg name");
SMSG_BATTLE_JOINED 0x08d9 30 BattleGroundRecv::processBattleJoined 0 msg.readString(24, "name");
msg.readInt32("position");
SMSG_BATTLE_BEGINS 0x08df 50 BattleGroundRecv::processBattleBegins 0 msg.readString(24, "bg name");
msg.readString(24, "game name");
SMSG_ADMIN_SET_TILE_TYPE 0x0192 24 AdminRecv::processSetTileType 0 msg.readInt16("x");
msg.readInt16("y");
msg.readInt16("type");
msg.readString(16, "map name");
SMSG_ADMIN_KICK_ACK 0x00cd 3 Ea::AdminRecv::processKickAck 0 if (msg.readInt32("flag") == 0)
SMSG_ADMIN_GET_LOGIN_ACK 0x01e0 30 AdminRecv::processAdminGetLoginAck 0 msg.readBeingId("account id");
msg.readString(24, "login");
SMSG_MAP_NOT_FOUND 0x0840 -1 GeneralRecv::processMapNotFound 0 const int sz = msg.readInt16("len") - 4;
msg.readString(sz, "map name?");
SMSG_CHAR_RENAME 0x0290 4 CharServerRecv::processCharRename 0 const int flag = msg.readInt16("flag");
SMSG_CHAR_PINCODE_EDIT_STATUS 0x08bf 8 CharServerRecv::processPincodeEditStatus 0 msg.readInt16("state");
msg.readInt32("seed");
SMSG_CHAR_PINCODE_MAKE_STATUS 0x08bb 8 CharServerRecv::processPincodeMakeStatus 0 msg.readInt16("state");
msg.readInt32("seed");
SMSG_CHAR_PINCODE_STATUS 0x08b9 12 CharServerRecv::processPincodeStatus 0 pincodeManager.setSeed(msg.readUInt32("pincode seed"));
pincodeManager.setAccountId(msg.readBeingId("account id"));
msg.readInt16("state"))) == false)
SMSG_CHAR_LOGIN_ERROR 0x006c 3 Ea::CharServerRecv::processCharLoginError 0 switch (msg.readUInt8("error"))
SMSG_CHAR_LOGIN2 0x082d -1 CharServerRecv::processCharLogin2 0 msg.readInt16("len");
msg.readUInt8("char slots");
msg.readUInt8("left slots");
msg.readUInt8("left slots");
msg.readUInt8("char slots");
msg.readUInt8("char slots");
SMSG_CHAR_LOGIN 0x006b -1 CharServerRecv::processCharLogin 0 msg.readInt16("packet len");
slots = msg.readInt8("MAX_CHARS");
msg.readInt8("sd->char_slots");
msg.readInt8("MAX_CHARS");
SMSG_CHAR_DELETE_SUCCEEDED 0x006f 2 Ea::CharServerRecv::processCharDelete 0
SMSG_CHAR_DELETE_FAILED 0x0070 3 CharServerRecv::processCharDeleteFailed 0 msg.readUInt8("error");
SMSG_CHAR_DELETE2_CANCEL_ACK 0x082c 10 CharServerRecv::processCharDelete2CancelAck 0 msg.readInt32("char id");
msg.readInt32("result");
SMSG_CHAR_DELETE2_ACK 0x0828 14 CharServerRecv::processCharDelete2Ack 0 msg.readInt32("char id");
msg.readInt32("result");
msg.readInt32("time");
SMSG_CHAR_DELETE2_ACCEPT_ACTUAL_ACK 0x082a 10 CharServerRecv::processCharDelete2AcceptActual 0 msg.readInt32("char id");
msg.readInt32("result");
SMSG_CHAR_CREATE_SUCCEEDED 0x006d 149 CharServerRecv::processCharCreate 0
SMSG_CHAR_CREATE_FAILED 0x006e 3 Ea::CharServerRecv::processCharCreateFailed 0 switch (msg.readUInt8("error"))
SMSG_CHAR_CHECK_RENAME 0x028e 4 CharServerRecv::processCharCheckRename 0 if (msg.readInt16("flag") != 0)
outMsg.writeBeingId(mRenameId, "char id");
SMSG_CHAR_CHANGE_SLOT 0x08d5 -1 CharServerRecv::processCharChangeSlot 0 msg.readInt16("len");
msg.readInt16("flag"); // 0 - ok, 1 - error
msg.readInt16("unused");
SMSG_LOGIN_ERROR 0x006a 23 Ea::LoginRecv::processLoginError 0 const uint8_t code = msg.readUInt8("error");
std::string date = msg.readString(20, "date");
SMSG_LOGIN_CODING_KEY 0x01dc -1 LoginRecv::processCondingKey 0 const int sz = msg.readInt16("len") - 4;
msg.readString(sz, "coding key");
SMSG_TRADE_RESPONSE_OUTDATED 0x00e7 3 nullptr 0
SMSG_BEING_CHANGE_LOOKS_OUTDATED 0x00c3 8 nullptr 1

Jak1 (talk) 07:49, 26 January 2022 (UTC)