Mana
Loading...
Searching...
No Matches
Classes | Typedefs | Enumerations | Functions | Variables
ManaServ Namespace Reference

Classes

class  AbilityHandler
 
class  AdminHandler
 
class  BeingHandler
 
class  BuySellHandler
 
class  CharHandler
 Deals with incoming messages related to character selection. More...
 
class  ChatHandler
 
class  Connection
 
class  EffectHandler
 
class  EquipBackend
 
class  GameHandler
 
class  GeneralHandler
 
class  GuildHandler
 
class  InventoryHandler
 
class  ItemHandler
 
class  LoginHandler
 
class  ManaServItemDB
 Item information database TmwAthena specific class. More...
 
class  MessageHandler
 
class  MessageIn
 Used for parsing an incoming message from manaserv. More...
 
class  MessageOut
 Used for building an outgoing message to manaserv. More...
 
class  NpcHandler
 
class  PartyHandler
 
class  PlayerHandler
 
struct  RespawnRequestListener
 
class  TradeHandler
 

Typedefs

using MessageHandlerPtr = const std::unique_ptr< MessageHandler >
 

Enumerations

enum  SpriteLayer { SPRITE_LAYER_BASE = 0 , SPRITE_LAYER_HAIR , FIXED_SPRITE_LAYER_SIZE }
 enum for sprites layers. More...
 
enum  { PROTOCOL_VERSION = 9 , MIN_PROTOCOL_VERSION = 9 , SUPPORTED_DB_VERSION = 27 }
 
enum  ValueType {
  Int8 , Int16 , Int32 , String ,
  Double
}
 The type of a value in a message. More...
 
enum  {
  PAMSG_REGISTER = 0x0000 , APMSG_REGISTER_RESPONSE = 0x0002 , PAMSG_UNREGISTER = 0x0003 , APMSG_UNREGISTER_RESPONSE = 0x0004 ,
  PAMSG_REQUEST_REGISTER_INFO = 0x0005 , APMSG_REGISTER_INFO_RESPONSE = 0x0006 , PAMSG_LOGIN = 0x0010 , APMSG_LOGIN_RESPONSE = 0x0012 ,
  PAMSG_LOGOUT = 0x0013 , APMSG_LOGOUT_RESPONSE = 0x0014 , PAMSG_LOGIN_RNDTRGR = 0x0015 , APMSG_LOGIN_RNDTRGR_RESPONSE = 0x0016 ,
  PAMSG_STELLAR_LOGIN = 0x0017 , APMSG_STELLAR_LOGIN_RESPONSE = 0x0018 , PAMSG_CHAR_CREATE = 0x0020 , APMSG_CHAR_CREATE_RESPONSE = 0x0021 ,
  PAMSG_CHAR_DELETE = 0x0022 , APMSG_CHAR_DELETE_RESPONSE = 0x0023 , APMSG_CHAR_INFO = 0x0024 , PAMSG_CHAR_SELECT = 0x0026 ,
  APMSG_CHAR_SELECT_RESPONSE = 0x0027 , PAMSG_EMAIL_CHANGE = 0x0030 , APMSG_EMAIL_CHANGE_RESPONSE = 0x0031 , PAMSG_PASSWORD_CHANGE = 0x0034 ,
  APMSG_PASSWORD_CHANGE_RESPONSE = 0x0035 , PGMSG_CONNECT = 0x0050 , GPMSG_CONNECT_RESPONSE = 0x0051 , PCMSG_CONNECT = 0x0053 ,
  CPMSG_CONNECT_RESPONSE = 0x0054 , PGMSG_DISCONNECT = 0x0060 , GPMSG_DISCONNECT_RESPONSE = 0x0061 , PCMSG_DISCONNECT = 0x0063 ,
  CPMSG_DISCONNECT_RESPONSE = 0x0064 , PAMSG_RECONNECT = 0x0065 , APMSG_RECONNECT_RESPONSE = 0x0066 , GPMSG_PLAYER_MAP_CHANGE = 0x0100 ,
  GPMSG_PLAYER_SERVER_CHANGE = 0x0101 , PGMSG_PICKUP = 0x0110 , PGMSG_DROP = 0x0111 , PGMSG_EQUIP = 0x0112 ,
  PGMSG_UNEQUIP = 0x0113 , GPMSG_INVENTORY = 0x0120 , GPMSG_INVENTORY_FULL = 0x0121 , GPMSG_EQUIP = 0x0122 ,
  GPMSG_EQUIP_RESPONSE = 0x0123 , GPMSG_UNEQUIP = 0x0124 , GPMSG_UNEQUIP_RESPONSE = 0x0125 , GPMSG_PLAYER_ATTRIBUTE_CHANGE = 0x0130 ,
  GPMSG_ATTRIBUTE_POINTS_STATUS = 0x0140 , PGMSG_RAISE_ATTRIBUTE = 0x0160 , GPMSG_RAISE_ATTRIBUTE_RESPONSE = 0x0161 , PGMSG_LOWER_ATTRIBUTE = 0x0170 ,
  GPMSG_LOWER_ATTRIBUTE_RESPONSE = 0x0171 , PGMSG_RESPAWN = 0x0180 , GPMSG_BEING_ENTER = 0x0200 , GPMSG_BEING_LEAVE = 0x0201 ,
  GPMSG_ITEM_APPEAR = 0x0202 , GPMSG_BEING_LOOKS_CHANGE = 0x0210 , GPMSG_BEING_EMOTE = 0x0211 , PGMSG_BEING_EMOTE = 0x0212 ,
  PGMSG_WALK = 0x0260 , PGMSG_ACTION_CHANGE = 0x0270 , GPMSG_BEING_ACTION_CHANGE = 0x0271 , PGMSG_DIRECTION_CHANGE = 0x0272 ,
  GPMSG_BEING_DIR_CHANGE = 0x0273 , GPMSG_BEING_HEALTH_CHANGE = 0x0274 , GPMSG_BEINGS_MOVE = 0x0280 , GPMSG_ITEMS = 0x0281 ,
  GPMSG_BEING_ABILITY_POINT = 0x0282 , GPMSG_BEING_ABILITY_BEING = 0x0283 , GPMSG_BEING_ABILITY_DIRECTION = 0x0284 , PGMSG_USE_ABILITY_ON_BEING = 0x0290 ,
  PGMSG_USE_ABILITY_ON_POINT = 0x0291 , PGMSG_USE_ABILITY_ON_DIRECTION = 0x0292 , GPMSG_ABILITY_STATUS = 0x02A0 , GPMSG_ABILITY_REMOVED = 0x02A1 ,
  GPMSG_ABILITY_COOLDOWN = 0x02A2 , PGMSG_SAY = 0x02B0 , GPMSG_SAY = 0x02B1 , GPMSG_NPC_CHOICE = 0x02C0 ,
  GPMSG_NPC_MESSAGE = 0x02C1 , PGMSG_NPC_TALK = 0x02C2 , PGMSG_NPC_TALK_NEXT = 0x02C3 , PGMSG_NPC_SELECT = 0x02C4 ,
  GPMSG_NPC_BUY = 0x02C5 , GPMSG_NPC_SELL = 0x02C6 , PGMSG_NPC_BUYSELL = 0x02C7 , GPMSG_NPC_ERROR = 0x02C8 ,
  GPMSG_NPC_CLOSE = 0x02C9 , GPMSG_NPC_POST = 0x02D0 , PGMSG_NPC_POST_SEND = 0x02D1 , GPMSG_NPC_POST_GET = 0x02D2 ,
  PGMSG_NPC_NUMBER = 0x02D3 , PGMSG_NPC_STRING = 0x02D4 , GPMSG_NPC_NUMBER = 0x02D5 , GPMSG_NPC_STRING = 0x02D6 ,
  GPMSG_NPC_BUYSELL_RESPONSE = 0x02D7 , PGMSG_TRADE_REQUEST = 0x02E0 , GPMSG_TRADE_REQUEST = 0x02E1 , GPMSG_TRADE_START = 0x02E2 ,
  GPMSG_TRADE_COMPLETE = 0x02E3 , PGMSG_TRADE_CANCEL = 0x02E4 , GPMSG_TRADE_CANCEL = 0x02E5 , PGMSG_TRADE_AGREED = 0x02E6 ,
  GPMSG_TRADE_AGREED = 0x02E7 , PGMSG_TRADE_CONFIRM = 0x02E8 , GPMSG_TRADE_CONFIRM = 0x02E9 , PGMSG_TRADE_ADD_ITEM = 0x02EA ,
  GPMSG_TRADE_ADD_ITEM = 0x02EB , PGMSG_TRADE_SET_MONEY = 0x02EC , GPMSG_TRADE_SET_MONEY = 0x02ED , GPMSG_TRADE_BOTH_CONFIRM = 0x02EE ,
  PGMSG_USE_ITEM = 0x0300 , GPMSG_USE_RESPONSE = 0x0301 , GPMSG_BEINGS_DAMAGE = 0x0310 , GPMSG_CREATE_EFFECT_POS = 0x0320 ,
  GPMSG_CREATE_EFFECT_BEING = 0x0321 , GPMSG_CREATE_TEXT_PARTICLE = 0x0322 , GPMSG_SHAKE = 0x0330 , PCMSG_GUILD_CREATE = 0x0350 ,
  CPMSG_GUILD_CREATE_RESPONSE = 0x0351 , PCMSG_GUILD_INVITE = 0x0352 , CPMSG_GUILD_INVITE_RESPONSE = 0x0353 , PCMSG_GUILD_ACCEPT = 0x0354 ,
  CPMSG_GUILD_ACCEPT_RESPONSE = 0x0355 , PCMSG_GUILD_GET_MEMBERS = 0x0356 , CPMSG_GUILD_GET_MEMBERS_RESPONSE = 0x0357 , CPMSG_GUILD_UPDATE_LIST = 0x0358 ,
  PCMSG_GUILD_QUIT = 0x0360 , CPMSG_GUILD_QUIT_RESPONSE = 0x0361 , PCMSG_GUILD_PROMOTE_MEMBER = 0x0365 , CPMSG_GUILD_PROMOTE_MEMBER_RESPONSE = 0x0366 ,
  PCMSG_GUILD_KICK_MEMBER = 0x0370 , CPMSG_GUILD_KICK_MEMBER_RESPONSE = 0x0371 , CPMSG_GUILD_KICK_NOTIFICATION = 0x0372 , CPMSG_GUILD_INVITED = 0x0388 ,
  CPMSG_GUILD_REJOIN = 0x0389 , PGMSG_PARTY_INVITE = 0x03A0 , GPMSG_PARTY_INVITE_ERROR = 0x03A1 , GCMSG_PARTY_INVITE = 0x03A2 ,
  CPMSG_PARTY_INVITED = 0x03A4 , PCMSG_PARTY_INVITE_ANSWER = 0x03A5 , CPMSG_PARTY_INVITE_ANSWER_RESPONSE = 0x03A6 , CPMSG_PARTY_REJECTED = 0x03A8 ,
  PCMSG_PARTY_QUIT = 0x03AA , CPMSG_PARTY_QUIT_RESPONSE = 0x03AB , CPMSG_PARTY_NEW_MEMBER = 0x03B0 , CPMSG_PARTY_MEMBER_LEFT = 0x03B1 ,
  CPMSG_ERROR = 0x0401 , CPMSG_ANNOUNCEMENT = 0x0402 , CPMSG_PRIVMSG = 0x0403 , CPMSG_PUBMSG = 0x0404 ,
  PCMSG_CHAT = 0x0410 , PCMSG_PRIVMSG = 0x0412 , PCMSG_WHO = 0x0415 , CPMSG_WHO_RESPONSE = 0x0416 ,
  CPMSG_CHANNEL_EVENT = 0x0430 , PCMSG_ENTER_CHANNEL = 0x0440 , CPMSG_ENTER_CHANNEL_RESPONSE = 0x0441 , PCMSG_QUIT_CHANNEL = 0x0443 ,
  CPMSG_QUIT_CHANNEL_RESPONSE = 0x0444 , PCMSG_LIST_CHANNELS = 0x0445 , CPMSG_LIST_CHANNELS_RESPONSE = 0x0446 , PCMSG_LIST_CHANNELUSERS = 0x0460 ,
  CPMSG_LIST_CHANNELUSERS_RESPONSE = 0x0461 , PCMSG_TOPIC_CHANGE = 0x0462 , PCMSG_USER_MODE = 0x0465 , PCMSG_KICK_USER = 0x0466 ,
  GPMSG_QUESTLOG_STATUS = 0x0470 , GAMSG_REGISTER = 0x0500 , AGMSG_REGISTER_RESPONSE = 0x0501 , AGMSG_ACTIVE_MAP = 0x0502 ,
  AGMSG_PLAYER_ENTER = 0x0510 , GAMSG_PLAYER_DATA = 0x0520 , GAMSG_REDIRECT = 0x0530 , AGMSG_REDIRECT_RESPONSE = 0x0531 ,
  GAMSG_PLAYER_RECONNECT = 0x0532 , GAMSG_PLAYER_SYNC = 0x0533 , GAMSG_SET_VAR_CHR = 0x0540 , GAMSG_GET_VAR_CHR = 0x0541 ,
  AGMSG_GET_VAR_CHR_RESPONSE = 0x0542 , GAMSG_SET_VAR_MAP = 0x0546 , GAMSG_SET_VAR_WORLD = 0x0547 , AGMSG_SET_VAR_WORLD = 0x0548 ,
  GAMSG_BAN_PLAYER = 0x0550 , GAMSG_CHANGE_ACCOUNT_LEVEL = 0x0556 , GAMSG_STATISTICS = 0x0560 , CGMSG_CHANGED_PARTY = 0x0590 ,
  GCMSG_REQUEST_POST = 0x05A0 , CGMSG_POST_RESPONSE = 0x05A1 , GCMSG_STORE_POST = 0x05A5 , CGMSG_STORE_POST_RESPONSE = 0x05A6 ,
  GAMSG_TRANSACTION = 0x0600 , GAMSG_CREATE_ITEM_ON_MAP = 0x0601 , GAMSG_REMOVE_ITEM_ON_MAP = 0x0602 , GAMSG_ANNOUNCE = 0x0603 ,
  XXMSG_DEBUG_FLAG = 0x8000 , XXMSG_INVALID = 0x7FFF
}
 Enumerated type for communicated messages: More...
 
enum  {
  ERRMSG_OK = 0 , ERRMSG_FAILURE , ERRMSG_NO_LOGIN , ERRMSG_NO_CHARACTER_SELECTED ,
  ERRMSG_INSUFFICIENT_RIGHTS , ERRMSG_INVALID_ARGUMENT , ERRMSG_EMAIL_ALREADY_EXISTS , ERRMSG_ALREADY_TAKEN ,
  ERRMSG_SERVER_FULL , ERRMSG_TIME_OUT , ERRMSG_LIMIT_REACHED , ERRMSG_ADMINISTRATIVE_LOGOFF ,
  ERRMSG_ALREADY_MEMBER , ERRMSG_LOGIN_WAS_TAKEN_OVER
}
 
enum  { DATA_VERSION_OK = 0x00 , DATA_VERSION_OUTDATED = 0x01 }
 
enum  { PASSWORD_OK = 0x00 , PASSWORD_BAD = 0x01 }
 
enum  { SYNC_CHARACTER_POINTS = 0x01 , SYNC_CHARACTER_ATTRIBUTE = 0x02 , SYNC_ONLINE_STATUS = 0x04 }
 
enum  { LOGIN_INVALID_VERSION = 0x40 , LOGIN_INVALID_TIME = 0x50 , LOGIN_BANNED }
 
enum  { REGISTER_INVALID_VERSION = 0x40 , REGISTER_EXISTS_USERNAME , REGISTER_EXISTS_EMAIL , REGISTER_CAPTCHA_WRONG }
 
enum  {
  CREATE_INVALID_HAIRSTYLE = 0x40 , CREATE_INVALID_HAIRCOLOR , CREATE_INVALID_GENDER , CREATE_ATTRIBUTES_TOO_HIGH ,
  CREATE_ATTRIBUTES_TOO_LOW , CREATE_ATTRIBUTES_OUT_OF_RANGE , CREATE_EXISTS_NAME , CREATE_TOO_MUCH_CHARACTERS ,
  CREATE_INVALID_SLOT
}
 
enum  AttribmodResponseCode { ATTRIBMOD_OK = ERRMSG_OK , ATTRIBMOD_INVALID_ATTRIBUTE = 0x40 , ATTRIBMOD_NO_POINTS_LEFT , ATTRIBMOD_DENIED }
 
enum  EntityType {
  OBJECT_ITEM = 0 , OBJECT_NPC = 2 , OBJECT_MONSTER = 3 , OBJECT_CHARACTER = 4 ,
  OBJECT_EFFECT = 5 , OBJECT_OTHER = 6
}
 
enum  { MOVING_POSITION = 1 , MOVING_DESTINATION = 2 }
 
enum  { CHAT_USING_BAD_WORDS = 0x40 , CHAT_UNHANDLED_COMMAND }
 
enum  {
  CHAT_EVENT_NEW_PLAYER = 0 , CHAT_EVENT_LEAVING_PLAYER , CHAT_EVENT_TOPIC_CHANGE , CHAT_EVENT_MODE_CHANGE ,
  CHAT_EVENT_KICKED_PLAYER
}
 
enum  { GUILD_EVENT_NEW_PLAYER = 0 , GUILD_EVENT_LEAVING_PLAYER , GUILD_EVENT_ONLINE_PLAYER , GUILD_EVENT_OFFLINE_PLAYER }
 
enum  { QUESTLOG_UPDATE_STATE = 1 , QUESTLOG_UPDATE_TITLE = 2 , QUESTLOG_UPDATE_DESCRIPTION = 4 , QUESTLOG_SHOW_NOTIFICATION = 8 }
 
enum  BeingAction {
  STAND , WALK , SIT , DEAD ,
  HURT
}
 Moves enum for beings and actors for others players vision. More...
 
enum  BeingDirection { DOWN = 1 , LEFT = 2 , UP = 4 , RIGHT = 8 }
 Beings and actors directions WARNING: Has to be in sync with the same enum in the Being class of the client! More...
 
enum  BeingGender { GENDER_MALE = 0 , GENDER_FEMALE , GENDER_UNSPECIFIED }
 Beings Genders. More...
 
enum  QuestStatus { STATUS_OPEN = 0 , STATUS_STARTED , STATUS_FINISHED , STATUS_INVALID }
 Quest states. More...
 

Functions

Gender getGender (int gender)
 Helper function for getting gender by int.
 
ManaServ::QuestStatus getQuestStatus (int status)
 Helper function for getting quest status by id.
 
void initialize ()
 Initializes the network subsystem.
 
void finalize ()
 Finalizes the network subsystem.
 
ConnectiongetConnection ()
 Returns a new Connection object.
 
void registerHandler (MessageHandler *handler)
 Registers a message handler.
 
void unregisterHandler (MessageHandler *handler)
 Unregisters a message handler.
 
void clearNetworkHandlers ()
 Clears all registered message handlers.
 
void flush ()
 

Variables

ConnectiongameServerConnection = nullptr
 
ConnectionchatServerConnection = nullptr
 
ConnectionaccountServerConnection = nullptr
 
std::string netToken
 
ServerInfo gameServer
 
ServerInfo chatServer
 
int connections = 0
 
const int PICKUP_RANGE = 32 + 16
 The permited range to pick up an item.
 
const int NPC_TALK_RANGE = 32 * 7
 The permited range to to talk to a NPC.
 

Typedef Documentation

◆ MessageHandlerPtr

using ManaServ::MessageHandlerPtr = typedef const std::unique_ptr<MessageHandler>

Definition at line 43 of file messagehandler.h.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
PROTOCOL_VERSION 
MIN_PROTOCOL_VERSION 
SUPPORTED_DB_VERSION 

Definition at line 28 of file manaserv_protocol.h.

◆ anonymous enum

anonymous enum

Enumerated type for communicated messages:

  • PAMSG_*: from client to account server
  • APMSG_*: from account server to client
  • PCMSG_*: from client to chat server
  • CPMSG_*: from chat server to client
  • PGMSG_*: from client to game server
  • GPMSG_*: from game server to client
  • GAMSG_*: from game server to account server

Components: B byte, W word, D double word, S variable-size string C tile-based coordinates (B*3)

Hosts: P (player's client), A (account server), C (chat server), G (game server)

TODO - Document specific error codes for each packet

Enumerator
PAMSG_REGISTER 
APMSG_REGISTER_RESPONSE 
PAMSG_UNREGISTER 
APMSG_UNREGISTER_RESPONSE 
PAMSG_REQUEST_REGISTER_INFO 
APMSG_REGISTER_INFO_RESPONSE 
PAMSG_LOGIN 
APMSG_LOGIN_RESPONSE 
PAMSG_LOGOUT 
APMSG_LOGOUT_RESPONSE 
PAMSG_LOGIN_RNDTRGR 
APMSG_LOGIN_RNDTRGR_RESPONSE 
PAMSG_STELLAR_LOGIN 
APMSG_STELLAR_LOGIN_RESPONSE 
PAMSG_CHAR_CREATE 
APMSG_CHAR_CREATE_RESPONSE 
PAMSG_CHAR_DELETE 
APMSG_CHAR_DELETE_RESPONSE 
APMSG_CHAR_INFO 
PAMSG_CHAR_SELECT 
APMSG_CHAR_SELECT_RESPONSE 
PAMSG_EMAIL_CHANGE 
APMSG_EMAIL_CHANGE_RESPONSE 
PAMSG_PASSWORD_CHANGE 
APMSG_PASSWORD_CHANGE_RESPONSE 
PGMSG_CONNECT 
GPMSG_CONNECT_RESPONSE 
PCMSG_CONNECT 
CPMSG_CONNECT_RESPONSE 
PGMSG_DISCONNECT 
GPMSG_DISCONNECT_RESPONSE 
PCMSG_DISCONNECT 
CPMSG_DISCONNECT_RESPONSE 
PAMSG_RECONNECT 
APMSG_RECONNECT_RESPONSE 
GPMSG_PLAYER_MAP_CHANGE 
GPMSG_PLAYER_SERVER_CHANGE 
PGMSG_PICKUP 
PGMSG_DROP 
PGMSG_EQUIP 
PGMSG_UNEQUIP 
GPMSG_INVENTORY 
GPMSG_INVENTORY_FULL 
GPMSG_EQUIP 
GPMSG_EQUIP_RESPONSE 
GPMSG_UNEQUIP 
GPMSG_UNEQUIP_RESPONSE 
GPMSG_PLAYER_ATTRIBUTE_CHANGE 
GPMSG_ATTRIBUTE_POINTS_STATUS 
PGMSG_RAISE_ATTRIBUTE 
GPMSG_RAISE_ATTRIBUTE_RESPONSE 
PGMSG_LOWER_ATTRIBUTE 
GPMSG_LOWER_ATTRIBUTE_RESPONSE 
PGMSG_RESPAWN 
GPMSG_BEING_ENTER 
GPMSG_BEING_LEAVE 
GPMSG_ITEM_APPEAR 
GPMSG_BEING_LOOKS_CHANGE 
GPMSG_BEING_EMOTE 
PGMSG_BEING_EMOTE 
PGMSG_WALK 
PGMSG_ACTION_CHANGE 
GPMSG_BEING_ACTION_CHANGE 
PGMSG_DIRECTION_CHANGE 
GPMSG_BEING_DIR_CHANGE 
GPMSG_BEING_HEALTH_CHANGE 
GPMSG_BEINGS_MOVE 
GPMSG_ITEMS 
GPMSG_BEING_ABILITY_POINT 
GPMSG_BEING_ABILITY_BEING 
GPMSG_BEING_ABILITY_DIRECTION 
PGMSG_USE_ABILITY_ON_BEING 
PGMSG_USE_ABILITY_ON_POINT 
PGMSG_USE_ABILITY_ON_DIRECTION 
GPMSG_ABILITY_STATUS 
GPMSG_ABILITY_REMOVED 
GPMSG_ABILITY_COOLDOWN 
PGMSG_SAY 
GPMSG_SAY 
GPMSG_NPC_CHOICE 
GPMSG_NPC_MESSAGE 
PGMSG_NPC_TALK 
PGMSG_NPC_TALK_NEXT 
PGMSG_NPC_SELECT 
GPMSG_NPC_BUY 
GPMSG_NPC_SELL 
PGMSG_NPC_BUYSELL 
GPMSG_NPC_ERROR 
GPMSG_NPC_CLOSE 
GPMSG_NPC_POST 
PGMSG_NPC_POST_SEND 
GPMSG_NPC_POST_GET 
PGMSG_NPC_NUMBER 
PGMSG_NPC_STRING 
GPMSG_NPC_NUMBER 
GPMSG_NPC_STRING 
GPMSG_NPC_BUYSELL_RESPONSE 
PGMSG_TRADE_REQUEST 
GPMSG_TRADE_REQUEST 
GPMSG_TRADE_START 
GPMSG_TRADE_COMPLETE 
PGMSG_TRADE_CANCEL 
GPMSG_TRADE_CANCEL 
PGMSG_TRADE_AGREED 
GPMSG_TRADE_AGREED 
PGMSG_TRADE_CONFIRM 
GPMSG_TRADE_CONFIRM 
PGMSG_TRADE_ADD_ITEM 
GPMSG_TRADE_ADD_ITEM 
PGMSG_TRADE_SET_MONEY 
GPMSG_TRADE_SET_MONEY 
GPMSG_TRADE_BOTH_CONFIRM 
PGMSG_USE_ITEM 
GPMSG_USE_RESPONSE 
GPMSG_BEINGS_DAMAGE 
GPMSG_CREATE_EFFECT_POS 
GPMSG_CREATE_EFFECT_BEING 
GPMSG_CREATE_TEXT_PARTICLE 
GPMSG_SHAKE 
PCMSG_GUILD_CREATE 
CPMSG_GUILD_CREATE_RESPONSE 
PCMSG_GUILD_INVITE 
CPMSG_GUILD_INVITE_RESPONSE 
PCMSG_GUILD_ACCEPT 
CPMSG_GUILD_ACCEPT_RESPONSE 
PCMSG_GUILD_GET_MEMBERS 
CPMSG_GUILD_GET_MEMBERS_RESPONSE 
CPMSG_GUILD_UPDATE_LIST 
PCMSG_GUILD_QUIT 
CPMSG_GUILD_QUIT_RESPONSE 
PCMSG_GUILD_PROMOTE_MEMBER 
CPMSG_GUILD_PROMOTE_MEMBER_RESPONSE 
PCMSG_GUILD_KICK_MEMBER 
CPMSG_GUILD_KICK_MEMBER_RESPONSE 
CPMSG_GUILD_KICK_NOTIFICATION 
CPMSG_GUILD_INVITED 
CPMSG_GUILD_REJOIN 
PGMSG_PARTY_INVITE 
GPMSG_PARTY_INVITE_ERROR 
GCMSG_PARTY_INVITE 
CPMSG_PARTY_INVITED 
PCMSG_PARTY_INVITE_ANSWER 
CPMSG_PARTY_INVITE_ANSWER_RESPONSE 
CPMSG_PARTY_REJECTED 
PCMSG_PARTY_QUIT 
CPMSG_PARTY_QUIT_RESPONSE 
CPMSG_PARTY_NEW_MEMBER 
CPMSG_PARTY_MEMBER_LEFT 
CPMSG_ERROR 
CPMSG_ANNOUNCEMENT 
CPMSG_PRIVMSG 
CPMSG_PUBMSG 
PCMSG_CHAT 
PCMSG_PRIVMSG 
PCMSG_WHO 
CPMSG_WHO_RESPONSE 
CPMSG_CHANNEL_EVENT 
PCMSG_ENTER_CHANNEL 
CPMSG_ENTER_CHANNEL_RESPONSE 
PCMSG_QUIT_CHANNEL 
CPMSG_QUIT_CHANNEL_RESPONSE 
PCMSG_LIST_CHANNELS 
CPMSG_LIST_CHANNELS_RESPONSE 
PCMSG_LIST_CHANNELUSERS 
CPMSG_LIST_CHANNELUSERS_RESPONSE 
PCMSG_TOPIC_CHANGE 
PCMSG_USER_MODE 
PCMSG_KICK_USER 
GPMSG_QUESTLOG_STATUS 
GAMSG_REGISTER 
AGMSG_REGISTER_RESPONSE 
AGMSG_ACTIVE_MAP 
AGMSG_PLAYER_ENTER 
GAMSG_PLAYER_DATA 
GAMSG_REDIRECT 
AGMSG_REDIRECT_RESPONSE 
GAMSG_PLAYER_RECONNECT 
GAMSG_PLAYER_SYNC 
GAMSG_SET_VAR_CHR 
GAMSG_GET_VAR_CHR 
AGMSG_GET_VAR_CHR_RESPONSE 
GAMSG_SET_VAR_MAP 
GAMSG_SET_VAR_WORLD 
AGMSG_SET_VAR_WORLD 
GAMSG_BAN_PLAYER 
GAMSG_CHANGE_ACCOUNT_LEVEL 
GAMSG_STATISTICS 
CGMSG_CHANGED_PARTY 
GCMSG_REQUEST_POST 
CGMSG_POST_RESPONSE 
GCMSG_STORE_POST 
CGMSG_STORE_POST_RESPONSE 
GAMSG_TRANSACTION 
GAMSG_CREATE_ITEM_ON_MAP 
GAMSG_REMOVE_ITEM_ON_MAP 
GAMSG_ANNOUNCE 
XXMSG_DEBUG_FLAG 
XXMSG_INVALID 

Definition at line 65 of file manaserv_protocol.h.

◆ anonymous enum

anonymous enum
Enumerator
ERRMSG_OK 
ERRMSG_FAILURE 
ERRMSG_NO_LOGIN 
ERRMSG_NO_CHARACTER_SELECTED 
ERRMSG_INSUFFICIENT_RIGHTS 
ERRMSG_INVALID_ARGUMENT 
ERRMSG_EMAIL_ALREADY_EXISTS 
ERRMSG_ALREADY_TAKEN 
ERRMSG_SERVER_FULL 
ERRMSG_TIME_OUT 
ERRMSG_LIMIT_REACHED 
ERRMSG_ADMINISTRATIVE_LOGOFF 
ERRMSG_ALREADY_MEMBER 
ERRMSG_LOGIN_WAS_TAKEN_OVER 

Definition at line 299 of file manaserv_protocol.h.

◆ anonymous enum

anonymous enum
Enumerator
DATA_VERSION_OK 
DATA_VERSION_OUTDATED 

Definition at line 317 of file manaserv_protocol.h.

◆ anonymous enum

anonymous enum
Enumerator
PASSWORD_OK 
PASSWORD_BAD 

Definition at line 323 of file manaserv_protocol.h.

◆ anonymous enum

anonymous enum
Enumerator
SYNC_CHARACTER_POINTS 
SYNC_CHARACTER_ATTRIBUTE 
SYNC_ONLINE_STATUS 

Definition at line 329 of file manaserv_protocol.h.

◆ anonymous enum

anonymous enum
Enumerator
LOGIN_INVALID_VERSION 
LOGIN_INVALID_TIME 
LOGIN_BANNED 

Definition at line 336 of file manaserv_protocol.h.

◆ anonymous enum

anonymous enum
Enumerator
REGISTER_INVALID_VERSION 
REGISTER_EXISTS_USERNAME 
REGISTER_EXISTS_EMAIL 
REGISTER_CAPTCHA_WRONG 

Definition at line 343 of file manaserv_protocol.h.

◆ anonymous enum

anonymous enum
Enumerator
CREATE_INVALID_HAIRSTYLE 
CREATE_INVALID_HAIRCOLOR 
CREATE_INVALID_GENDER 
CREATE_ATTRIBUTES_TOO_HIGH 
CREATE_ATTRIBUTES_TOO_LOW 
CREATE_ATTRIBUTES_OUT_OF_RANGE 
CREATE_EXISTS_NAME 
CREATE_TOO_MUCH_CHARACTERS 
CREATE_INVALID_SLOT 

Definition at line 351 of file manaserv_protocol.h.

◆ anonymous enum

anonymous enum
Enumerator
MOVING_POSITION 
MOVING_DESTINATION 

Definition at line 390 of file manaserv_protocol.h.

◆ anonymous enum

anonymous enum
Enumerator
CHAT_USING_BAD_WORDS 
CHAT_UNHANDLED_COMMAND 

Definition at line 398 of file manaserv_protocol.h.

◆ anonymous enum

anonymous enum
Enumerator
CHAT_EVENT_NEW_PLAYER 
CHAT_EVENT_LEAVING_PLAYER 
CHAT_EVENT_TOPIC_CHANGE 
CHAT_EVENT_MODE_CHANGE 
CHAT_EVENT_KICKED_PLAYER 

Definition at line 404 of file manaserv_protocol.h.

◆ anonymous enum

anonymous enum
Enumerator
GUILD_EVENT_NEW_PLAYER 
GUILD_EVENT_LEAVING_PLAYER 
GUILD_EVENT_ONLINE_PLAYER 
GUILD_EVENT_OFFLINE_PLAYER 

Definition at line 413 of file manaserv_protocol.h.

◆ anonymous enum

anonymous enum
Enumerator
QUESTLOG_UPDATE_STATE 
QUESTLOG_UPDATE_TITLE 
QUESTLOG_UPDATE_DESCRIPTION 
QUESTLOG_SHOW_NOTIFICATION 

Definition at line 420 of file manaserv_protocol.h.

◆ AttribmodResponseCode

Enumerator
ATTRIBMOD_OK 
ATTRIBMOD_INVALID_ATTRIBUTE 
ATTRIBMOD_NO_POINTS_LEFT 
ATTRIBMOD_DENIED 

Definition at line 364 of file manaserv_protocol.h.

◆ BeingAction

Moves enum for beings and actors for others players vision.

WARNING: Has to be in sync with the same enum in the Being class of the client!

Enumerator
STAND 
WALK 
SIT 
DEAD 
HURT 

Definition at line 432 of file manaserv_protocol.h.

◆ BeingDirection

Beings and actors directions WARNING: Has to be in sync with the same enum in the Being class of the client!

Enumerator
DOWN 
LEFT 
UP 
RIGHT 

Definition at line 446 of file manaserv_protocol.h.

◆ BeingGender

Beings Genders.

Enumerator
GENDER_MALE 
GENDER_FEMALE 
GENDER_UNSPECIFIED 

Definition at line 457 of file manaserv_protocol.h.

◆ EntityType

Enumerator
OBJECT_ITEM 
OBJECT_NPC 
OBJECT_MONSTER 
OBJECT_CHARACTER 
OBJECT_EFFECT 
OBJECT_OTHER 

Definition at line 372 of file manaserv_protocol.h.

◆ QuestStatus

Quest states.

Enumerator
STATUS_OPEN 
STATUS_STARTED 
STATUS_FINISHED 
STATUS_INVALID 

Definition at line 485 of file manaserv_protocol.h.

◆ SpriteLayer

enum for sprites layers.

Enumerator
SPRITE_LAYER_BASE 
SPRITE_LAYER_HAIR 
FIXED_SPRITE_LAYER_SIZE 

Definition at line 31 of file beinghandler.h.

◆ ValueType

The type of a value in a message.

Prepended before each value when the protocol is running in debug mode.

Enumerator
Int8 
Int16 
Int32 
String 
Double 

Definition at line 38 of file manaserv_protocol.h.

Function Documentation

◆ clearNetworkHandlers()

void ManaServ::clearNetworkHandlers ( )

Clears all registered message handlers.

Definition at line 100 of file network.cpp.

◆ finalize()

void ManaServ::finalize ( )

Finalizes the network subsystem.

Definition at line 62 of file network.cpp.

◆ flush()

void ManaServ::flush ( )

Definition at line 135 of file network.cpp.

◆ getConnection()

Connection * ManaServ::getConnection ( )

Returns a new Connection object.

Should be deleted by the caller.

Definition at line 77 of file network.cpp.

◆ getGender()

Gender ManaServ::getGender ( int  gender)
inline

Helper function for getting gender by int.

Definition at line 469 of file manaserv_protocol.h.

◆ getQuestStatus()

ManaServ::QuestStatus ManaServ::getQuestStatus ( int  status)
inline

Helper function for getting quest status by id.

Parameters
statusid of the status
Returns
the status as enum value

Definition at line 498 of file manaserv_protocol.h.

◆ initialize()

void ManaServ::initialize ( )

Initializes the network subsystem.

Definition at line 47 of file network.cpp.

◆ registerHandler()

void ManaServ::registerHandler ( MessageHandler handler)

Registers a message handler.

A message handler handles a certain subset of incoming messages.

Definition at line 88 of file network.cpp.

◆ unregisterHandler()

void ManaServ::unregisterHandler ( MessageHandler handler)

Unregisters a message handler.

Definition at line 94 of file network.cpp.

Variable Documentation

◆ accountServerConnection

Connection * ManaServ::accountServerConnection = nullptr

Definition at line 53 of file generalhandler.cpp.

◆ chatServer

ServerInfo ManaServ::chatServer

Definition at line 55 of file chathandler.cpp.

◆ chatServerConnection

Connection * ManaServ::chatServerConnection = nullptr

Definition at line 56 of file charhandler.cpp.

◆ connections

int ManaServ::connections = 0

Definition at line 26 of file internal.cpp.

◆ gameServer

ServerInfo ManaServ::gameServer

Definition at line 41 of file gamehandler.cpp.

◆ gameServerConnection

Connection * ManaServ::gameServerConnection = nullptr

Definition at line 55 of file charhandler.cpp.

◆ netToken

std::string ManaServ::netToken

Definition at line 54 of file chathandler.cpp.

◆ NPC_TALK_RANGE

const int ManaServ::NPC_TALK_RANGE = 32 * 7

The permited range to to talk to a NPC.

Definition at line 517 of file manaserv_protocol.h.

◆ PICKUP_RANGE

const int ManaServ::PICKUP_RANGE = 32 + 16

The permited range to pick up an item.

Definition at line 514 of file manaserv_protocol.h.