/* * The Mana Client * Copyright (C) 2004-2009 The Mana World Development Team * Copyright (C) 2009-2012 The Mana Developers * * This file is part of The Mana Client. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef TA_PROTOCOL_H #define TA_PROTOCOL_H #include namespace TmwAthena { enum { JOB = 0xa, STRENGTH = 0xd, AGILITY, VITALITY, INTELLIGENCE, DEXTERITY, LUCK, ATK, DEF, MATK, MDEF, HIT, FLEE, CRIT }; enum { SPRITE_BASE = 0, SPRITE_SHOE, SPRITE_BOTTOMCLOTHES, SPRITE_TOPCLOTHES, SPRITE_MISC1, SPRITE_MISC2, SPRITE_HAIR, SPRITE_HAT, SPRITE_CAPE, SPRITE_GLOVES, SPRITE_WEAPON, SPRITE_SHIELD, SPRITE_VECTOREND }; enum class LOOK : uint8_t { BASE = 0, HAIR = 1, WEAPON = 2, HEAD_BOTTOM = 3, HEAD_TOP = 4, HEAD_MID = 5, HAIR_COLOR = 6, CLOTHES_COLOR = 7, SHIELD = 8, SHOES = 9, GLOVES = 10, CAPE = 11, MISC1 = 12, MISC2 = 13, }; enum NpcCommand { NPC_REQUEST_LANG = 0, NPC_CAMERA_ACTOR = 1, NPC_CAMERA_POS = 2, NPC_CAMERA_RESTORE = 3, NPC_CAMERA_RELATIVE = 4, NPC_CLOSE_DIALOG = 5, NPC_SHOW_AVATAR = 6, NPC_SET_AVATAR_DIRECTION = 7, NPC_SET_AVATAR_ACTION = 8, NPC_CLEAR_DIALOG = 9, NPC_REQUEST_ITEM = 10, NPC_REQUEST_ITEM_INDEX = 11, NPC_REQUEST_ITEMS = 12, }; static const int INVENTORY_OFFSET = 2; static const int STORAGE_OFFSET = 1; enum { // login server messages SMSG_UPDATE_HOST = 0x0063, // update host notify CMSG_LOGIN_REGISTER = 0x0064, // account login SMSG_LOGIN_DATA = 0x0069, // account login success SMSG_LOGIN_ERROR = 0x006a, // account login error // char server messages CMSG_CHAR_PASSWORD_CHANGE = 0x0061, // change password SMSG_CHAR_PASSWORD_RESPONSE = 0x0062, // change password result CMSG_CHAR_SERVER_CONNECT = 0x0065, // connect char CMSG_CHAR_SELECT = 0x0066, // select character CMSG_CHAR_CREATE = 0x0067, // create character CMSG_CHAR_DELETE = 0x0068, // delete character SMSG_CHAR_LOGIN = 0x006b, // connect char success SMSG_CHAR_LOGIN_ERROR = 0x006c, // connect char error SMSG_CHAR_CREATE_SUCCEEDED = 0x006d, // create character success SMSG_CHAR_CREATE_FAILED = 0x006e, // create character error SMSG_CHAR_DELETE_SUCCEEDED = 0x006f, // delete character success SMSG_CHAR_DELETE_FAILED = 0x0070, // delete character error SMSG_CHAR_MAP_INFO = 0x0071, // select character success // map server messages CMSG_MAP_SERVER_CONNECT = 0x0072, // connect map SMSG_MAP_LOGIN_SUCCESS = 0x0073, // connect map success SMSG_BEING_VISIBLE = 0x0078, // being appear notify SMSG_BEING_MOVE = 0x007b, // being move notify SMSG_BEING_SPAWN = 0x007c, // being spawn notify CMSG_MAP_LOADED = 0x007d, // map loaded CMSG_MAP_PING = 0x007e, // ping SMSG_SERVER_PING = 0x007f, // pong SMSG_BEING_REMOVE = 0x0080, // remove being notify CMSG_PLAYER_CHANGE_DEST = 0x0085, // walk SMSG_WALK_RESPONSE = 0x0087, // walk success SMSG_PLAYER_STOP = 0x0088, // stop walking notify CMSG_PLAYER_CHANGE_ACT = 0x0089, // player action SMSG_BEING_ACTION = 0x008a, // being action notify CMSG_CHAT_MESSAGE = 0x008c, // global chat SMSG_BEING_CHAT = 0x008d, // global chat notify SMSG_PLAYER_CHAT = 0x008e, // global chat result CMSG_NPC_TALK = 0x0090, // npc click SMSG_PLAYER_WARP = 0x0091, // change map notify SMSG_CHANGE_MAP_SERVER = 0x0092, // change map server notify CMSG_NAME_REQUEST = 0x0094, // get being name SMSG_BEING_NAME_RESPONSE = 0x0095, // get being name result CMSG_CHAT_WHISPER = 0x0096, // whisper SMSG_WHISPER = 0x0097, // receive whisper SMSG_WHISPER_RESPONSE = 0x0098, // whisper result SMSG_GM_CHAT = 0x009a, // gm announcement notify CMSG_PLAYER_CHANGE_DIR = 0x009b, // face direction SMSG_BEING_CHANGE_DIRECTION = 0x009c, // face direction notify SMSG_ITEM_VISIBLE = 0x009d, // item visible notify SMSG_ITEM_DROPPED = 0x009e, // item dropped notify CMSG_ITEM_PICKUP = 0x009f, // item pickup SMSG_PLAYER_INVENTORY_ADD = 0x00a0, // inventory add notify SMSG_ITEM_REMOVE = 0x00a1, // flooritem delete notify CMSG_PLAYER_INVENTORY_DROP = 0x00a2, // drop item SMSG_PLAYER_EQUIPMENT = 0x00a4, // inventory equipment notify SMSG_PLAYER_STORAGE_EQUIP = 0x00a6, // storage equipment notify CMSG_PLAYER_INVENTORY_USE = 0x00a7, // use item SMSG_ITEM_USE_RESPONSE = 0x00a8, // use item result CMSG_PLAYER_EQUIP = 0x00a9, // equip item SMSG_PLAYER_EQUIP = 0x00aa, // equip item result CMSG_PLAYER_UNEQUIP = 0x00ab, // unequip item SMSG_PLAYER_UNEQUIP = 0x00ac, // unequip item result SMSG_PLAYER_INVENTORY_REMOVE = 0x00af, // inventory delete notify SMSG_PLAYER_STAT_UPDATE_1 = 0x00b0, // player stat update 1 notify SMSG_PLAYER_STAT_UPDATE_2 = 0x00b1, // player stat update 2 notify CMSG_PLAYER_REBOOT = 0x00b2, // respawn or switch character SMSG_CHAR_SWITCH_RESPONSE = 0x00b3, // character switch success SMSG_NPC_MESSAGE = 0x00b4, // script message notify SMSG_NPC_NEXT = 0x00b5, // (reverse) script next SMSG_NPC_CLOSE = 0x00b6, // (reverse) script close SMSG_NPC_CHOICE = 0x00b7, // (reverse) script menu CMSG_NPC_LIST_CHOICE = 0x00b8, // (reverse) script menu result CMSG_NPC_NEXT_REQUEST = 0x00b9, // (reverse) script next result CMSG_STAT_UPDATE_REQUEST = 0x00bb, // stat increase SMSG_PLAYER_STAT_UPDATE_4 = 0x00bc, // stat increase result SMSG_PLAYER_STAT_UPDATE_5 = 0x00bd, // player stat update 5 notify SMSG_PLAYER_STAT_UPDATE_6 = 0x00be, // stat price notify CMSG_PLAYER_EMOTE = 0x00bf, // emote SMSG_BEING_EMOTION = 0x00c0, // emote notify SMSG_NPC_BUY_SELL_CHOICE = 0x00c4, // npc click result shop CMSG_NPC_BUY_SELL_REQUEST = 0x00c5, // npc shop buy/sell select SMSG_NPC_BUY = 0x00c6, // npc shop buy select result SMSG_NPC_SELL = 0x00c7, // npc shop sell select result CMSG_NPC_BUY_REQUEST = 0x00c8, // npc shop buy CMSG_NPC_SELL_REQUEST = 0x00c9, // npc shop sell SMSG_NPC_BUY_RESPONSE = 0x00ca, // npc shop buy result SMSG_NPC_SELL_RESPONSE = 0x00cb, // npc shop sell result SMSG_ADMIN_KICK_ACK = 0x00cd, // kick result CMSG_TRADE_REQUEST = 0x00e4, // trade please SMSG_TRADE_REQUEST = 0x00e5, // incoming trade request CMSG_TRADE_RESPONSE = 0x00e6, // incoming trade request result SMSG_TRADE_RESPONSE = 0x00e7, // trade please result CMSG_TRADE_ITEM_ADD_REQUEST = 0x00e8, // trade add SMSG_TRADE_ITEM_ADD = 0x00e9, // trade item added notify CMSG_TRADE_ADD_COMPLETE = 0x00eb, // trade lock SMSG_TRADE_OK = 0x00ec, // trade lock notify CMSG_TRADE_CANCEL_REQUEST = 0x00ed, // trade cancel SMSG_TRADE_CANCEL = 0x00ee, // trade cancel notify CMSG_TRADE_OK = 0x00ef, // trade commit SMSG_TRADE_COMPLETE = 0x00f0, // trade complete notify SMSG_PLAYER_STORAGE_STATUS = 0x00f2, // storage size notify CMSG_MOVE_TO_STORAGE = 0x00f3, // storage put SMSG_PLAYER_STORAGE_ADD = 0x00f4, // storage added notify CMSG_MOVE_FROM_STORAGE = 0x00f5, // storage take SMSG_PLAYER_STORAGE_REMOVE = 0x00f6, // storage removed notify CMSG_CLOSE_STORAGE = 0x00f7, // storage close SMSG_PLAYER_STORAGE_CLOSE = 0x00f8, // storage closed notify CMSG_PARTY_CREATE = 0x00f9, // party create SMSG_PARTY_CREATE = 0x00fa, // party create result SMSG_PARTY_INFO = 0x00fb, // party info notify CMSG_PARTY_INVITE = 0x00fc, // party invite SMSG_PARTY_INVITE_RESPONSE = 0x00fd, // party invite result SMSG_PARTY_INVITED = 0x00fe, // (reverse) party invitation CMSG_PARTY_INVITED = 0x00ff, // (reverse) party invitation result CMSG_PARTY_LEAVE = 0x0100, // party leave SMSG_PARTY_SETTINGS = 0x0101, // party option notify CMSG_PARTY_SETTINGS = 0x0102, // party option CMSG_PARTY_KICK = 0x0103, // party kick SMSG_PARTY_LEAVE = 0x0105, // party left notify SMSG_PARTY_UPDATE_HP = 0x0106, // party hp notify SMSG_PARTY_UPDATE_COORDS = 0x0107, // party xy notify CMSG_PARTY_MESSAGE = 0x0108, // party message SMSG_PARTY_MESSAGE = 0x0109, // party message notify SMSG_PLAYER_SKILL_UP = 0x010e, // skill raise result SMSG_PLAYER_SKILLS = 0x010f, // skill info notify SMSG_SKILL_FAILED = 0x0110, // skill failed CMSG_SKILL_LEVELUP_REQUEST = 0x0112, // skill raise CMSG_PLAYER_STOP_ATTACK = 0x0118, // attack stop SMSG_PLAYER_STATUS_CHANGE = 0x0119, // player option notify SMSG_PLAYER_MOVE_TO_ATTACK = 0x0139, // player move attack range notify SMSG_PLAYER_ATTACK_RANGE = 0x013a, // player attack range notify SMSG_PLAYER_ARROW_MESSAGE = 0x013b, // player arrow fail notify SMSG_PLAYER_ARROW_EQUIP = 0x013c, // player arrow equip notify SMSG_PLAYER_STAT_UPDATE_3 = 0x0141, // player stat update 3 SMSG_NPC_INT_INPUT = 0x0142, // (reverse) script input integer CMSG_NPC_INT_RESPONSE = 0x0143, // (reverse) script input integer result CMSG_NPC_CLOSE = 0x0146, // (reverse) script close response SMSG_BEING_RESURRECT = 0x0148, // being resurrected notify CMSG_CLIENT_QUIT = 0x018a, // client quit SMSG_MAP_QUIT_RESPONSE = 0x018b, // client quit result SMSG_PLAYER_GUILD_PARTY_INFO = 0x0195, // guild party info notify SMSG_BEING_STATUS_CHANGE = 0x0196, // being status change notify SMSG_PVP_MAP_MODE = 0x0199, // map pvp status SMSG_PVP_SET = 0x019a, // being pvp status SMSG_BEING_SELFEFFECT = 0x019b, // being effect SMSG_TRADE_ITEM_ADD_RESPONSE = 0x01b1, // trade add result SMSG_PLAYER_INVENTORY_USE = 0x01c8, // use item result SMSG_NPC_STR_INPUT = 0x01d4, // (reverse) script input string CMSG_NPC_STR_RESPONSE = 0x01d5, // (reverse) script input string result SMSG_BEING_CHANGE_LOOKS2 = 0x01d7, // being change look SMSG_PLAYER_UPDATE_1 = 0x01d8, // player appear notify SMSG_PLAYER_UPDATE_2 = 0x01d9, // player appear notify SMSG_PLAYER_MOVE = 0x01da, // player move notify SMSG_SKILL_DAMAGE = 0x01de, // deal skill damage SMSG_PLAYER_INVENTORY = 0x01ee, // inventory list notify SMSG_PLAYER_STORAGE_ITEMS = 0x01f0, // storage list notify SMSG_BEING_IP_RESPONSE = 0x020c, // player ip notify CMSG_ONLINE_LIST = 0x0210, // online list request SMSG_ONLINE_LIST = 0x0211, // advanced online list SMSG_NPC_COMMAND = 0x0212, // npc command SMSG_QUEST_SET_VAR = 0x0214, // send quest SMSG_QUEST_PLAYER_VARS = 0x0215, // send all quest SMSG_BEING_MOVE3 = 0x0225, // being move 3 SMSG_MAP_MASK = 0x0226, // send map mask SMSG_MAP_MUSIC = 0x0227, // change map music SMSG_NPC_CHANGETITLE = 0x0228, // npc change title SMSG_SCRIPT_MESSAGE = 0x0229, // script message SMSG_PLAYER_CLIENT_COMMAND = 0x0230, // remote client command SMSG_MAP_SET_TILES_TYPE = 0x0231, // send area collision SMSG_PLAYER_HP = 0x0232, // send hp update SMSG_PLAYER_HP_FULL = 0x0233, // send full hp // any server messages SMSG_CONNECTION_PROBLEM = 0x0081, // connect foo error CMSG_SERVER_VERSION_REQUEST = 0x7530, // version SMSG_SERVER_VERSION_RESPONSE = 0x7531, // version result CMSG_CLIENT_DISCONNECT = 0x7532, // disconnect }; } #endif