Mana
Loading...
Searching...
No Matches
manaserv_protocol.h
Go to the documentation of this file.
1/*
2 * The Mana Client
3 * Copyright (C) 2004-2009 The Mana World Development Team
4 * Copyright (C) 2009-2012 The Mana Developers
5 *
6 * This file is part of The Mana Client.
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program. If not, see <http://www.gnu.org/licenses/>.
20 */
21
22#pragma once
23
24#include "being.h"
25
26namespace ManaServ {
27
28enum {
32};
33
45
65enum {
66 // Login/Register
67 PAMSG_REGISTER = 0x0000, // D version, S username, S password, S email, S captcha response
68 APMSG_REGISTER_RESPONSE = 0x0002, // B error, S updatehost, S Client data URL, B Character slots
69 PAMSG_UNREGISTER = 0x0003, // S username, S password
70 APMSG_UNREGISTER_RESPONSE = 0x0004, // B error
72 APMSG_REGISTER_INFO_RESPONSE = 0x0006, // B byte registration Allowed, byte minNameLength, byte maxNameLength, string captchaURL, string captchaInstructions
73 PAMSG_LOGIN = 0x0010, // D version, S username, S password
74 APMSG_LOGIN_RESPONSE = 0x0012, // B error, S updatehost, S Client data URL, B Character slots, {content of APMSG_CHAR_CREATE_RESPONSE (without error code)}*
75 PAMSG_LOGOUT = 0x0013, // -
76 APMSG_LOGOUT_RESPONSE = 0x0014, // B error
77 PAMSG_LOGIN_RNDTRGR = 0x0015, // -
78 APMSG_LOGIN_RNDTRGR_RESPONSE = 0x0016, // S random seed
79 PAMSG_STELLAR_LOGIN = 0x0017, // D version
80 APMSG_STELLAR_LOGIN_RESPONSE = 0x0018, // B error, S token, S url
81 PAMSG_CHAR_CREATE = 0x0020, // S name, B hair style, B hair color, B gender, B slot, {W stats}*
82 APMSG_CHAR_CREATE_RESPONSE = 0x0021, // B error, on success: B slot, S name, B gender, B hair style, B hair color,
83 // W character points, W correction points, B amount of items equipped,
84 // { W slot, W itemId }*
85 // B attributeCount,
86 // {D attr id, D base value (in 1/256ths) D mod value (in 256ths) }*
87 PAMSG_CHAR_DELETE = 0x0022, // B slot
88 APMSG_CHAR_DELETE_RESPONSE = 0x0023, // B error
89 APMSG_CHAR_INFO = 0x0024, // {content of APMSG_CHAR_CREATE_RESPONSE (without error code)}*
90 PAMSG_CHAR_SELECT = 0x0026, // B slot
91 APMSG_CHAR_SELECT_RESPONSE = 0x0027, // B error, B*32 token, S game address, W game port, S chat address, W chat port
92 PAMSG_EMAIL_CHANGE = 0x0030, // S email
93 APMSG_EMAIL_CHANGE_RESPONSE = 0x0031, // B error
94 PAMSG_PASSWORD_CHANGE = 0x0034, // S old password, S new password
95 APMSG_PASSWORD_CHANGE_RESPONSE = 0x0035, // B error
96
97 PGMSG_CONNECT = 0x0050, // B*32 token
98 GPMSG_CONNECT_RESPONSE = 0x0051, // B error
99 PCMSG_CONNECT = 0x0053, // B*32 token
100 CPMSG_CONNECT_RESPONSE = 0x0054, // B error
101
102 PGMSG_DISCONNECT = 0x0060, // B reconnect account
103 GPMSG_DISCONNECT_RESPONSE = 0x0061, // B error, B*32 token
104 PCMSG_DISCONNECT = 0x0063, // -
105 CPMSG_DISCONNECT_RESPONSE = 0x0064, // B error
106
107 PAMSG_RECONNECT = 0x0065, // B*32 token
108 APMSG_RECONNECT_RESPONSE = 0x0066, // B error
109
110 // Game
111 GPMSG_PLAYER_MAP_CHANGE = 0x0100, // S filename, W x, W y
112 GPMSG_PLAYER_SERVER_CHANGE = 0x0101, // B*32 token, S game address, W game port
113 PGMSG_PICKUP = 0x0110, // W * 2 items position
114 PGMSG_DROP = 0x0111, // W slot, W amount
115 PGMSG_EQUIP = 0x0112, // W inventory slot
116 PGMSG_UNEQUIP = 0x0113, // W item Instance id
117 GPMSG_INVENTORY = 0x0120, // { W slot, W item id [, W amount] (if item id is nonzero) }*
118 GPMSG_INVENTORY_FULL = 0x0121, // W inventory slot count { W slot, W itemId, W amount, W equipmentSlot }
119 GPMSG_EQUIP = 0x0122, // W equipped inventory slot, W slot equipmentSlot
120 GPMSG_EQUIP_RESPONSE = 0x0123, // B error, W slot
121 GPMSG_UNEQUIP = 0x0124, // W equipped inventory slot
122 GPMSG_UNEQUIP_RESPONSE = 0x0125, // B error, W slot
123 GPMSG_PLAYER_ATTRIBUTE_CHANGE = 0x0130, // { W attribute, D base value (in 1/256ths), D modified value (in 1/256ths)}*
124 GPMSG_ATTRIBUTE_POINTS_STATUS = 0x0140, // W character points, W correction points
125 PGMSG_RAISE_ATTRIBUTE = 0x0160, // W attribute
126 GPMSG_RAISE_ATTRIBUTE_RESPONSE = 0x0161, // B error, W attribute
127 PGMSG_LOWER_ATTRIBUTE = 0x0170, // W attribute
128 GPMSG_LOWER_ATTRIBUTE_RESPONSE = 0x0171, // B error, W attribute
129 PGMSG_RESPAWN = 0x0180, // -
130 GPMSG_BEING_ENTER = 0x0200, // B type, W being id, B action, W*2 position, B direction, B gender
131 // character: S name, B hair style, B hair color [, B sprite layers changed, { B slot type, W item id }*]
132 // monster: W type id
133 // npc: W type id
134 GPMSG_BEING_LEAVE = 0x0201, // W being id
135 GPMSG_ITEM_APPEAR = 0x0202, // W item id, W*2 position
136 GPMSG_BEING_LOOKS_CHANGE = 0x0210, // B hairstyle, B haircolor [, B sprite layers changed, { B slot type, W item id }*]
137 GPMSG_BEING_EMOTE = 0x0211, // W being id, W emote id
138 PGMSG_BEING_EMOTE = 0x0212, // W emoticon id
139 PGMSG_WALK = 0x0260, // W*2 destination
140 PGMSG_ACTION_CHANGE = 0x0270, // B Action
141 GPMSG_BEING_ACTION_CHANGE = 0x0271, // W being id, B action
142 PGMSG_DIRECTION_CHANGE = 0x0272, // B Direction
143 GPMSG_BEING_DIR_CHANGE = 0x0273, // W being id, B direction
144 GPMSG_BEING_HEALTH_CHANGE = 0x0274, // W being id, W hp, W max hp
145 GPMSG_BEINGS_MOVE = 0x0280, // { W being id, B flags [, [W*2 position,] W*2 destination, B speed] }*
146 GPMSG_ITEMS = 0x0281, // { W item id, W*2 position }*
147 GPMSG_BEING_ABILITY_POINT = 0x0282, // W being id, B abilityId, W*2 point
148 GPMSG_BEING_ABILITY_BEING = 0x0283, // W being id, B abilityId, W target being id
149 GPMSG_BEING_ABILITY_DIRECTION = 0x0284, // W being id, B abilityId, B direction
150 PGMSG_USE_ABILITY_ON_BEING = 0x0290, // B abilityID, W being id
151 PGMSG_USE_ABILITY_ON_POINT = 0x0291, // B abilityID, W*2 position
152 PGMSG_USE_ABILITY_ON_DIRECTION = 0x0292, // B abilityID, B direction
153 GPMSG_ABILITY_STATUS = 0x02A0, // { B abilityID, D remainingTicks }
154 GPMSG_ABILITY_REMOVED = 0x02A1, // B abilityID
155 GPMSG_ABILITY_COOLDOWN = 0x02A2, // W ticks to wait
156 PGMSG_SAY = 0x02B0, // S text
157 GPMSG_SAY = 0x02B1, // W being id, S text
158 GPMSG_NPC_CHOICE = 0x02C0, // W being id, { S text }*
159 GPMSG_NPC_MESSAGE = 0x02C1, // W being id, B* text
160 PGMSG_NPC_TALK = 0x02C2, // W being id
161 PGMSG_NPC_TALK_NEXT = 0x02C3, // W being id
162 PGMSG_NPC_SELECT = 0x02C4, // W being id, B choice
163 GPMSG_NPC_BUY = 0x02C5, // W being id, { W item id, W amount, W cost }*
164 GPMSG_NPC_SELL = 0x02C6, // W being id, { W item id, W amount, W cost }*
165 PGMSG_NPC_BUYSELL = 0x02C7, // W item id, W amount
166 GPMSG_NPC_ERROR = 0x02C8, // B error
167 GPMSG_NPC_CLOSE = 0x02C9, // W being id
168 GPMSG_NPC_POST = 0x02D0, // W being id
169 PGMSG_NPC_POST_SEND = 0x02D1, // W being id, { S name, S text, W item id }
170 GPMSG_NPC_POST_GET = 0x02D2, // W being id, { S name, S text, W item id }
171 PGMSG_NPC_NUMBER = 0x02D3, // W being id, D number
172 PGMSG_NPC_STRING = 0x02D4, // W being id, S string
173 GPMSG_NPC_NUMBER = 0x02D5, // W being id, D min, D max, D default
174 GPMSG_NPC_STRING = 0x02D6, // W being id
175 GPMSG_NPC_BUYSELL_RESPONSE = 0x02D7, // B error, W item id, W amount
176 PGMSG_TRADE_REQUEST = 0x02E0, // W being id
177 GPMSG_TRADE_REQUEST = 0x02E1, // W being id
178 GPMSG_TRADE_START = 0x02E2, // -
179 GPMSG_TRADE_COMPLETE = 0x02E3, // -
180 PGMSG_TRADE_CANCEL = 0x02E4, // -
181 GPMSG_TRADE_CANCEL = 0x02E5, // -
182 PGMSG_TRADE_AGREED = 0x02E6, // -
183 GPMSG_TRADE_AGREED = 0x02E7, // -
184 PGMSG_TRADE_CONFIRM = 0x02E8, // -
185 GPMSG_TRADE_CONFIRM = 0x02E9, // -
186 PGMSG_TRADE_ADD_ITEM = 0x02EA, // B slot, B amount
187 GPMSG_TRADE_ADD_ITEM = 0x02EB, // W item id, B amount
188 PGMSG_TRADE_SET_MONEY = 0x02EC, // D amount
189 GPMSG_TRADE_SET_MONEY = 0x02ED, // D amount
191 PGMSG_USE_ITEM = 0x0300, // B slot
192 GPMSG_USE_RESPONSE = 0x0301, // B error
193 GPMSG_BEINGS_DAMAGE = 0x0310, // { W being id, W amount }*
194 GPMSG_CREATE_EFFECT_POS = 0x0320, // W effect id, W*2 position
195 GPMSG_CREATE_EFFECT_BEING = 0x0321, // W effect id, W BeingID
196 GPMSG_CREATE_TEXT_PARTICLE = 0x0322, // S text
197 GPMSG_SHAKE = 0x0330, // W intensityX, W intensityY, [W decay_times_10000, [W duration]]
198
199 // Guild
200 PCMSG_GUILD_CREATE = 0x0350, // S name
201 CPMSG_GUILD_CREATE_RESPONSE = 0x0351, // B error, W guild, B rights, W channel
202 PCMSG_GUILD_INVITE = 0x0352, // W id, S name
203 CPMSG_GUILD_INVITE_RESPONSE = 0x0353, // B error
204 PCMSG_GUILD_ACCEPT = 0x0354, // W id, B accepted (0 if false, 1 if true)
205 CPMSG_GUILD_ACCEPT_RESPONSE = 0x0355, // B error, W guild, B rights, W channel
206 PCMSG_GUILD_GET_MEMBERS = 0x0356, // W id
207 CPMSG_GUILD_GET_MEMBERS_RESPONSE = 0x0357, // S names, B online
208 CPMSG_GUILD_UPDATE_LIST = 0x0358, // W id, S name, B event
209 PCMSG_GUILD_QUIT = 0x0360, // W id
210 CPMSG_GUILD_QUIT_RESPONSE = 0x0361, // B error
211 PCMSG_GUILD_PROMOTE_MEMBER = 0x0365, // W guild, S name, B rights
213 PCMSG_GUILD_KICK_MEMBER = 0x0370, // W guild, S name
215 CPMSG_GUILD_KICK_NOTIFICATION = 0x0372, // W guild, S player that kicked
216
217 CPMSG_GUILD_INVITED = 0x0388, // S char name, S guild name, W id
218 CPMSG_GUILD_REJOIN = 0x0389, // S name, W guild, W rights, W channel, S announce
219
220 // Party
221 PGMSG_PARTY_INVITE = 0x03A0, // S name
222 GPMSG_PARTY_INVITE_ERROR = 0x03A1, // S name
223 GCMSG_PARTY_INVITE = 0x03A2, // S inviter, S invitee
224 CPMSG_PARTY_INVITED = 0x03A4, // S name
225 PCMSG_PARTY_INVITE_ANSWER = 0x03A5, // S name, B accept
226 CPMSG_PARTY_INVITE_ANSWER_RESPONSE = 0x03A6, // B error, { S name }
227 CPMSG_PARTY_REJECTED = 0x03A8, // S name, B error
228 PCMSG_PARTY_QUIT = 0x03AA, // -
229 CPMSG_PARTY_QUIT_RESPONSE = 0x03AB, // B error
230 CPMSG_PARTY_NEW_MEMBER = 0x03B0, // S name, S inviter
231 CPMSG_PARTY_MEMBER_LEFT = 0x03B1, // D character id
232
233 // Chat
234 CPMSG_ERROR = 0x0401, // B error
235 CPMSG_ANNOUNCEMENT = 0x0402, // S text, S sender
236 CPMSG_PRIVMSG = 0x0403, // S user, S text
237 CPMSG_PUBMSG = 0x0404, // W channel, S user, S text
238 PCMSG_CHAT = 0x0410, // S text, W channel
239 PCMSG_PRIVMSG = 0x0412, // S user, S text
240 PCMSG_WHO = 0x0415, // -
241 CPMSG_WHO_RESPONSE = 0x0416, // { S user }
242
243 // -- Channeling
244 CPMSG_CHANNEL_EVENT = 0x0430, // W channel, B event, S info
245 PCMSG_ENTER_CHANNEL = 0x0440, // S channel, S password
246 CPMSG_ENTER_CHANNEL_RESPONSE = 0x0441, // B error, W id, S name, S topic, S userlist
247 PCMSG_QUIT_CHANNEL = 0x0443, // W channel id
248 CPMSG_QUIT_CHANNEL_RESPONSE = 0x0444, // B error, W channel id
249 PCMSG_LIST_CHANNELS = 0x0445, // -
250 CPMSG_LIST_CHANNELS_RESPONSE = 0x0446, // S names, W number of users
251 PCMSG_LIST_CHANNELUSERS = 0x0460, // S channel
252 CPMSG_LIST_CHANNELUSERS_RESPONSE = 0x0461, // S channel, { S user, B mode }
253 PCMSG_TOPIC_CHANGE = 0x0462, // W channel id, S topic
254 // -- User modes
255 PCMSG_USER_MODE = 0x0465, // W channel id, S name, B mode
256 PCMSG_KICK_USER = 0x0466, // W channel id, S name
257
258 // -- Questlog
259 GPMSG_QUESTLOG_STATUS = 0x0470, // {W quest id, B flags, [B status], [S questname], [S questdescription]}*
260
261 // Inter-server
262 GAMSG_REGISTER = 0x0500, // S address, W port, S password, D items db revision
263 AGMSG_REGISTER_RESPONSE = 0x0501, // W item version, W password response, { S globalvar_key, S globalvar_value }
264 AGMSG_ACTIVE_MAP = 0x0502, // W map id, W Number of mapvar_key mapvar_value sent, { S mapvar_key, S mapvar_value }, W Number of map items, { D item Id, W amount, W posX, W posY }
265 AGMSG_PLAYER_ENTER = 0x0510, // B*32 token, D id, S name, serialised character data
266 GAMSG_PLAYER_DATA = 0x0520, // D id, serialised character data
267 GAMSG_REDIRECT = 0x0530, // D id
268 AGMSG_REDIRECT_RESPONSE = 0x0531, // D id, B*32 token, S game address, W game port
269 GAMSG_PLAYER_RECONNECT = 0x0532, // D id, B*32 token
270 GAMSG_PLAYER_SYNC = 0x0533, // serialised sync data
271 GAMSG_SET_VAR_CHR = 0x0540, // D id, S name, S value
272 GAMSG_GET_VAR_CHR = 0x0541, // D id, S name
273 AGMSG_GET_VAR_CHR_RESPONSE = 0x0542, // D id, S name, S value
274 //reserved GAMSG_SET_VAR_ACC = 0x0543, // D charid, S name, S value
275 //reserved GAMSG_GET_VAR_ACC = 0x0544, // D charid, S name
276 //reserved AGMSG_GET_VAR_ACC_RESPONSE = 0x0545, // D charid, S name, S value
277 GAMSG_SET_VAR_MAP = 0x0546, // D mapid, S name, S value
278 GAMSG_SET_VAR_WORLD = 0x0547, // S name, S value
279 AGMSG_SET_VAR_WORLD = 0x0548, // S name, S value
280 GAMSG_BAN_PLAYER = 0x0550, // D id, W duration
281 GAMSG_CHANGE_ACCOUNT_LEVEL = 0x0556, // D id, W level
282 GAMSG_STATISTICS = 0x0560, // { W map id, W entity nb, W monster nb, W player nb, { D character id }* }*
283 CGMSG_CHANGED_PARTY = 0x0590, // D character id, D party id
284 GCMSG_REQUEST_POST = 0x05A0, // D character id
285 CGMSG_POST_RESPONSE = 0x05A1, // D receiver id, { S sender name, S letter, W num attachments { W attachment item id, W quantity } }
286 GCMSG_STORE_POST = 0x05A5, // D sender id, S receiver name, S letter, { W attachment item id, W quantity }
287 CGMSG_STORE_POST_RESPONSE = 0x05A6, // D id, B error
288 GAMSG_TRANSACTION = 0x0600, // D character id, D action, S message
289 GAMSG_CREATE_ITEM_ON_MAP = 0x0601, // D map id, D item id, W amount, W pos x, W pos y
290 GAMSG_REMOVE_ITEM_ON_MAP = 0x0602, // D map id, D item id, W amount, W pos x, W pos y
291 GAMSG_ANNOUNCE = 0x0603, // S text, W senderid, S sendername
292
293 XXMSG_DEBUG_FLAG = 0x8000, // Message in debug mode
294 XXMSG_INVALID = 0x7FFF
296
297// Generic return values
298
299enum {
300 ERRMSG_OK = 0, // everything is fine
301 ERRMSG_FAILURE, // the action failed
302 ERRMSG_NO_LOGIN, // the user is not yet logged
303 ERRMSG_NO_CHARACTER_SELECTED, // the user needs a character
304 ERRMSG_INSUFFICIENT_RIGHTS, // the user is not privileged
305 ERRMSG_INVALID_ARGUMENT, // part of the received message was invalid
306 ERRMSG_EMAIL_ALREADY_EXISTS, // The Email Address already exists
307 ERRMSG_ALREADY_TAKEN, // name used was already taken
308 ERRMSG_SERVER_FULL, // the server is overloaded
309 ERRMSG_TIME_OUT, // data failed to arrive in due time
310 ERRMSG_LIMIT_REACHED, // limit reached
311 ERRMSG_ADMINISTRATIVE_LOGOFF, // kicked by server administrator
312 ERRMSG_ALREADY_MEMBER, // is already member of guild/party
313 ERRMSG_LOGIN_WAS_TAKEN_OVER // a different connection took over
315
316// used in AGMSG_REGISTER_RESPONSE to show state of item db
317enum {
321
322// used in AGMSG_REGISTER_RESPNSE to show if password was accepted
323enum {
325 PASSWORD_BAD = 0x01
327
328// used to identify part of sync message
329enum {
330 SYNC_CHARACTER_POINTS = 0x01, // D charId, D charPoints, D corrPoints
331 SYNC_CHARACTER_ATTRIBUTE = 0x02, // D charId, D attrId, DF base, DF mod
332 SYNC_ONLINE_STATUS = 0x04 // D charId, B 0 = offline, 1 = online
334
335// Login specific return values
336enum {
337 LOGIN_INVALID_VERSION = 0x40, // the user is using an incompatible protocol
338 LOGIN_INVALID_TIME = 0x50, // the user tried logging in too fast
339 LOGIN_BANNED // the user is currently banned
341
342// Account register specific return values
343enum {
344 REGISTER_INVALID_VERSION = 0x40, // the user is using an incompatible protocol
345 REGISTER_EXISTS_USERNAME, // there already is an account with this username
346 REGISTER_EXISTS_EMAIL, // there already is an account with this email address
347 REGISTER_CAPTCHA_WRONG // user didn't solve the captcha correctly
349
350// Character creation specific return values
351enum {
362
363// Character attribute modification specific return value
370
371// Entity type enumeration
373{
374 // A simple item.
376 // Non-Playable-Character is an actor capable of movement and maybe actions.
378 // A monster (moving actor with AI. Should be able to toggle map/quest
379 // actions, too).
381 // A normal being.
383 // A effect to be shown.
385 // Server-only object.
386 OBJECT_OTHER = 6
388
389// Moving object flags
390enum {
391 // Payload contains the current position.
393 // Payload contains the destination.
396
397// Chat errors return values
398enum {
402
403// Chat channels event values
404enum {
411
412// Guild member event values
413enum {
419
420enum {
426
440
447{
448 DOWN = 1,
449 LEFT = 2,
450 UP = 4,
451 RIGHT = 8
453
463
464// Helper functions for gender
465
469inline Gender getGender(int gender)
470{
471 switch (gender)
472 {
473 case GENDER_MALE:
474 return Gender::Male;
475 case GENDER_FEMALE:
476 return Gender::Female;
477 default:
478 return Gender::Neutral;
479 }
480}
481
492
499{
500 switch (status)
501 {
502 case 0:
504 case 1:
506 case 2:
508 default:
510 }
511}
512
514const int PICKUP_RANGE = 32 + 16;
515
517const int NPC_TALK_RANGE = 32 * 7;
518
519} // namespace ManaServ
Gender
Definition being.h:58
const int PICKUP_RANGE
The permited range to pick up an item.
QuestStatus
Quest states.
@ ATTRIBMOD_INVALID_ATTRIBUTE
BeingAction
Moves enum for beings and actors for others players vision.
BeingDirection
Beings and actors directions WARNING: Has to be in sync with the same enum in the Being class of the ...
@ CREATE_ATTRIBUTES_OUT_OF_RANGE
const int NPC_TALK_RANGE
The permited range to to talk to a NPC.
@ QUESTLOG_UPDATE_DESCRIPTION
Gender getGender(int gender)
Helper function for getting gender by int.
ValueType
The type of a value in a message.
BeingGender
Beings Genders.
ManaServ::QuestStatus getQuestStatus(int status)
Helper function for getting quest status by id.
@ ERRMSG_NO_CHARACTER_SELECTED
@ ERRMSG_EMAIL_ALREADY_EXISTS
@ ERRMSG_ADMINISTRATIVE_LOGOFF
@ ERRMSG_LOGIN_WAS_TAKEN_OVER
@ CPMSG_GUILD_ACCEPT_RESPONSE
@ CPMSG_GUILD_CREATE_RESPONSE
@ APMSG_REGISTER_INFO_RESPONSE
@ PGMSG_USE_ABILITY_ON_DIRECTION
@ APMSG_CHAR_CREATE_RESPONSE
@ CPMSG_ENTER_CHANNEL_RESPONSE
@ CPMSG_GUILD_KICK_NOTIFICATION
@ CPMSG_QUIT_CHANNEL_RESPONSE
@ APMSG_CHAR_SELECT_RESPONSE
@ CPMSG_LIST_CHANNELUSERS_RESPONSE
@ GPMSG_ATTRIBUTE_POINTS_STATUS
@ CPMSG_GUILD_PROMOTE_MEMBER_RESPONSE
@ APMSG_PASSWORD_CHANGE_RESPONSE
@ APMSG_UNREGISTER_RESPONSE
@ GPMSG_RAISE_ATTRIBUTE_RESPONSE
@ CPMSG_PARTY_INVITE_ANSWER_RESPONSE
@ APMSG_EMAIL_CHANGE_RESPONSE
@ PAMSG_REQUEST_REGISTER_INFO
@ CPMSG_LIST_CHANNELS_RESPONSE
@ GPMSG_BEING_ABILITY_DIRECTION
@ APMSG_LOGIN_RNDTRGR_RESPONSE
@ GPMSG_LOWER_ATTRIBUTE_RESPONSE
@ CPMSG_GUILD_INVITE_RESPONSE
@ CPMSG_GUILD_KICK_MEMBER_RESPONSE
@ APMSG_CHAR_DELETE_RESPONSE
@ APMSG_STELLAR_LOGIN_RESPONSE
@ CPMSG_GUILD_GET_MEMBERS_RESPONSE
@ GPMSG_PLAYER_ATTRIBUTE_CHANGE