#pragma once #ifndef SERVERCOMMON_PACKET_STRUCT_AW_H #define SERVERCOMMON_PACKET_STRUCT_AW_H //================================================================================================== #include #include "./PacketStruct_AG.h" //================================================================================================== #pragma pack(push,1) //================================================================================================== #define PACKET_AW_OPEN(c, p) struct MSG_##p : public MSG_BASE_FORWARD { MSG_##p(){ m_byCategory = c; m_byProtocol = p; } #define PACKET_AW_CLOSE }; #define PACKET_AW_INHERIT_OPEN(c, p, b) struct MSG_##p : public b { MSG_##p(){ m_byCategory = c; m_byProtocol = p; } #define PACKET_AW_INHERIT_CLOSE }; //================================================================================================== // NOTE: f110727.1L, added broadcaster, use 'MSG_ONEtoN_BROADCASTER_INTERNAL' PACKET_AW_INHERIT_OPEN(AW_CONNECTION, AW_CONNECTION_PACKET_BROADCASTER_ONEtoN_SYN, MSG_AG_CONNECTION_PACKET_BROADCASTER_ONEtoN_SYN) PACKET_AW_INHERIT_CLOSE; typedef VARMSG_EX \ MSG_ONEtoN_BROADCASTER_WORLD_INTERNAL; //================================================================================================== // AW_CONNECTION Ä«Å×°í¸® PACKET_AW_OPEN(AW_CONNECTION, AW_AGENTSERVER_INFO_SYN) DWORD dwChannelID; PACKET_AW_CLOSE; PACKET_AW_OPEN(AW_CONNECTION, AW_PREPARE_NEW_USER_SYN) DWORD dwAuthUserID; //AuthServer¿¡¼­ ¹ß±ÞÇÑ ½Äº°ÀÚ DWORD dwUserGuid; //DB¿¡¼­ Àоî¿Â GUID // set to default (+1) that was added by __CH1305_090303_ACCOUNT_ID_LENGTH_EXTENTION__ TCHAR ptszAccountID[ID_MAX_LEN + 1]; // °èÁ¤ ¾ÆÀ̵ð char szClientIP[MAX_IP_STRING_LEN + 1]; //Ŭ¶óÀÌ¾ðÆ® ¾ÆÀÌÇÇ BYTE byGMGrade; //GM±ÇÇÑ DWORD dwPCRoomID; // PC¹æÀÎÁö ¾Æ´ÑÁö(0À̸é ÀÏ¹Ý À¯Àú) PACKET_AW_CLOSE; PACKET_AW_OPEN(AW_CONNECTION, AW_PREPARE_NEW_USER_ACK) bool enabled; // CHANGES: f110916.1L, added by _NA002676_WORLD_SERVER_RENEWAL PACKET_AW_CLOSE; // NOTE: f110916.1L, does not use anymore after _NA002676_WORLD_SERVER_RENEWAL PACKET_AW_OPEN(AW_CONNECTION, AW_PREPARE_NEW_USER_NAK) PACKET_AW_CLOSE; PACKET_AW_OPEN(AW_USER_STATUS, AW_USER_SET_CHARNAME_SYN) DWORD dwCharGuid; //ij¸¯ÅÍ guid char szCharName[MAX_CHARNAME_LENGTH+1]; GUILDGUID m_GuildGuid; // ¼Ò¼Ó ±æµå Guid(¾øÀ¸¸é 0) LEVELTYPE m_CharLevel; BYTE m_CharClass; #ifdef _NA_006642_20120416_COMMUNITY_INFO_BUG_MODIFY BYTE gender; #endif // _NA_006642_20120416_COMMUNITY_INFO_BUG_MODIFY void Clear() { const size_t clear_size = static_cast((uint8_t*)(this + 1) - (uint8_t*)(&m_dwKey)); ZeroMemory(&m_dwKey, clear_size); }; PACKET_AW_CLOSE; // unused PACKET_AW_OPEN(AW_USER_STATUS, AW_USER_UNSET_CHARNAME_SYN) PACKET_AW_CLOSE; PACKET_AW_OPEN(AW_USER_STATUS, AW_USER_ENTER_ZONE_SYN) DWORD dwZoneKey; BYTE byZoneType; BYTE chaoszone_type; CODETYPE MapCode; PACKET_AW_CLOSE; //_NA_008679_20160202_REWORK_BATTLEGROUND PACKET_AW_OPEN(AW_USER_STATUS, AW_USER_BATTLEGROUND_FALSENAME_CMD) TCHAR false_name[MAX_CHARNAME_LENGTH+1]; VOID Clear() { ZeroMemory(false_name, sizeof(false_name)); } PACKET_AW_CLOSE; PACKET_AW_OPEN(AW_USER_STATUS, AW_USER_LEAVE_ZONE_SYN) DWORD dwZoneKey; BYTE byZoneType; PACKET_AW_CLOSE; PACKET_AW_OPEN(AW_USER_STATUS, AW_USER_LOGOUT) PACKET_AW_CLOSE; // À¯Àú Á¤º¸ º¹±¸ ¿äû PACKET_AW_OPEN(AW_USER_STATUS, AW_USER_RESTORE_SYN) PACKET_AW_CLOSE; // À¯Àú Á¤º¸ ¸ñ·Ï PACKET_AW_OPEN(AW_USER_STATUS, AW_USER_RESTORE_CMD) DWORD dwAuthUserID; DWORD dwUserGUID; #ifdef __CH1305_090303_ACCOUNT_ID_LENGTH_EXTENTION__ TCHAR ptszAccountID[ID_MAX_LEN + 1]; // °èÁ¤ ¾ÆÀ̵ð #else TCHAR ptszAccountID[ID_MAX_LEN]; // °èÁ¤ ¾ÆÀ̵ð #endif char pszClientIP[IP_MAX_LEN]; //< ip´Â charÇü CHARGUID CharGuid; TCHAR tszCharName[MAX_CHARNAME_LENGTH+1]; DWORD dwZoneKey; BYTE byZoneType; MAPCODE map_code; // NOTE: f110929.1L, _NA002676_WORLD_SERVER_RENEWAL WORD wPartyKey; // ÆÄƼ °¡ÀԵǾî ÀÖ´Â °æ¿ì ÆÄƼ Ű Àü¼Û DWORD dwPCRoomID; // ¿¹¾à°ª...Àε¥ ½ÇÁ¦·Î´Â PC¹æ ¿©ºÎ(0À̸é ÀÏ¹Ý À¯Àú) BYTE byGMGrade; // GM Grade GUILDGUID m_GuildGuid; // ¼Ò¼Ó ±æµå Guid(¾øÀ¸¸é 0) LEVELTYPE m_CharLevel; BYTE m_CharClass; void Clear() { const size_t kClearSize = (char*)(this + 1) - (char*)(&dwAuthUserID); ZeroMemory(&dwAuthUserID, kClearSize); }; uint16_t GetSize() const { return sizeof(*this); }; PACKET_AW_CLOSE; // À¯Àú ·¹º§¾÷(±æµå/Ä£±¸ Á¤º¸ °»½Å À§ÇØ ÇÊ¿ä) PACKET_AW_OPEN(AW_USER_STATUS, AW_USER_LEVELUP_CMD) CHARGUID m_CharGuid; // ·¹º§¾÷ÇÑ ³ð LEVELTYPE m_Level; // ÇöÀç ·¹º§ PACKET_AW_CLOSE; PACKET_AW_OPEN(AW_USER_STATUS, AW_USER_STATUS_INTERCEPTION_SYN) eINTERCEPTION_TYPE m_byInterceptionCode; BOOL m_bFlag; PACKET_AW_CLOSE; PACKET_AW_OPEN(AW_USER_STATUS, AW_USER_STATUS_INTERCEPTION_ACK) eINTERCEPTION_TYPE m_byInterceptionCode; BOOL m_bFlag; PACKET_AW_CLOSE; PACKET_AW_OPEN(AW_USER_STATUS, AW_USER_STATUS_INTERCEPTION_NAK) PACKET_AW_CLOSE; // __KR_001355_20090608_GROUPINGSYSTEM_GW PACKET_AW_OPEN(AW_USER_STATUS, AW_STATUS_GROUP_ADDEXP_CMD) CHARGUID m_CharGuid; // ij¸¯ÅÍ Guid EXPTYPE m_Amount; // °æÇèÄ¡·® TCHAR m_szCharName[MAX_CHARNAME_LENGTH+1];//Low memeber name PACKET_AW_CLOSE; PACKET_AW_OPEN(AW_USER_STATUS, AW_STATUS_GROUP_ADDMONEY_CMD) CHARGUID m_CharGuid; // ij¸¯ÅÍ Guid MONEY m_Amount; // º¸³Ê½º ÇÏÀÓ TCHAR m_szCharName[MAX_CHARNAME_LENGTH+1];//Hight memeber name PACKET_AW_CLOSE; PACKET_AW_OPEN(AW_USER_STATUS, AW_STATUS_GROUP_EXP_ACQUISITION_CMD) CHARGUID m_CharGuid; // ij¸¯ÅÍ ID BYTE m_byAcquisitionType; // ȹµæ »çÀ¯ (eHEIM_ACQUISITION_TYPE) EXPTYPE m_Amount; // °æÇèÄ¡·® PACKET_AW_CLOSE; //__NA_0_20090627_HEIM_ACQUISITION_S2S_NOTIFICATION PACKET_AW_OPEN(AW_USER_STATUS, AW_USER_STATUS_HEIM_ACQUISITION_NTF) CHARGUID m_CharGuid; // ij¸¯ÅÍ ID BYTE m_byAcquisitionType; // ȹµæ »çÀ¯ (eHEIM_ACQUISITION_TYPE) MONEY m_Amount; // ÇÏÀÓ ±Ý¾× PACKET_AW_CLOSE; PACKET_AW_OPEN(AW_USER_STATUS, AW_USER_STATUS_HEIM_CONSUMPTION_NTF) CHARGUID m_CharGuid; // ij¸¯ÅÍ ID BYTE m_byConsumptionType; // ¼Òºñ »çÀ¯ (eHEIM_CONSUMPTION_TYPE) MONEY m_Amount; // ÇÏÀÓ ±Ý¾× //_NA_0_20091119_HEIM_LOTTO_ACCUM_CTRL_BY_SHOP int m_LottoAccumRatio; // ÇÏÀÓ Çà¿î Àû¸³À² PACKET_AW_CLOSE; // __KR_001355_20090608_GROUPINGSYSTEM_GW PACKET_AW_OPEN(AW_USER_STATUS, AW_STATUS_GROUP_SET_MEMBERINFO_CMD) CHARGUID m_CharGuid; eGROUP_STAT m_HighGroupinfo; eGROUP_STAT m_LowGroupInfo; PACKET_AW_CLOSE; PACKET_AW_OPEN(AW_USER_STATUS, AW_STATUS_GROUP_START_CMD) CHARGUID m_CharGuid; PACKET_AW_CLOSE; // declared by __NA_001359_20090619_HEIM_LOTTO_SYSTEM = { AW_USER_LOTTO_~ } PACKET_AW_OPEN(AW_USER_STATUS, AW_USER_LOTTO_REWARD_SYN) CHARGUID m_CharGuid; MONEY m_Prize; PACKET_AW_CLOSE; PACKET_AW_OPEN(AW_USER_STATUS, AW_USER_LOTTO_REWARD_ACK) enum eRESULT_CODE { RESULT_OK = 0, ERROR_CHAR_NOT_ONLINE }; INT32 m_iResult; CHARGUID m_CharGuid; MONEY m_Prize; PACKET_AW_CLOSE; #ifdef _NA_0_20100115_HEIM_LOTTO_TICKET_PURCHASE // ÇÏÀÓ ·Î¶Ç º¹±Ç¿ëÁö Á÷Á¢ ±¸ÀÔ ¿äû PACKET_AW_OPEN(AW_USER_STATUS, AW_USER_LOTTO_TICKET_PURCHASE_SYN) CHARGUID iCharGuid; // ij¸¯ÅÍ ID WORD wDrawNum; // ȸÂ÷ BYTE bAuto; // ÀÚµ¿ ¿©ºÎ BYTE bPickedNum[LOTTO_NUM_PICKS]; // ÀÀ¸ð ¹øÈ£ INT64 i64TicketPrice; // º¹±Ç¿ëÁö °¡°Ý PACKET_AW_CLOSE; // ÇÏÀÓ ·Î¶Ç º¹±Ç¿ëÁö Á÷Á¢ ±¸ÀÔ ÀÀ´ä PACKET_AW_OPEN(AW_USER_STATUS, AW_USER_LOTTO_TICKET_PURCHASE_ACK) enum eRC_LOTTO_TICKET_PURCHASE { RESULT_OK = 0, ERROR_NOT_ENOUGH_MONEY = 1, ERROR_CHAR_NOT_ONLINE = 2 }; INT32 iResult; // °á°ú ÄÚµå CHARGUID iCharGuid; // ij¸¯ÅÍ ID WORD wDrawNum; // ȸÂ÷ BYTE bAuto; // ÀÚµ¿ ¿©ºÎ BYTE bPickedNum[LOTTO_NUM_PICKS]; // ÀÀ¸ð ¹øÈ£ PACKET_AW_CLOSE; #endif // _NA_0_20100115_HEIM_LOTTO_TICKET_PURCHASE //#ifdef _PCBANG_POLICY_CHANGE_POST_EXPIRED PACKET_AW_OPEN(AW_USER_STATUS, AW_USER_STATUS_PCBANG_BILLING_NTF) DWORD m_PcRoomId; // ReservedValue #ifdef _NA_006413_20130201_PREMIUMSERVICE_ITEM DWORD premiumservice_; #endif //_NA_006413_20130201_PREMIUMSERVICE_ITEM PACKET_AW_CLOSE; //#endif PACKET_AW_OPEN(AW_USER_STATUS, AW_USER_DOMINATION_RETURNHIEM_CMD) CHARGUID m_CharGuid; // ij¸¯ÅÍ Guid eSYSTEM_MEMO_TYPE m_Type; // ŸÀÔ ULONGLONG m_TenderCost; // ÀÔÂû ÇÏÀÓ | ¿ÕÀÇ ÁõÇ¥ °¹¼ö PACKET_AW_CLOSE; //_NA_20100812_INTEGRATE_SYSTEM_MEMO_DOMINATION PACKET_AW_OPEN(AW_USER_STATUS, AW_USER_SYSTEMMEMO_SEND_CMD) DWORD system_memo_list_num_;//½Ã½ºÅÛ ¸Þ¸ð °¹¼ö BasicSystemMemoInfo system_memo_info_[MAX_SYSTEM_MEMO_LIST];//½Ã½ºÅÛ ¸Þ¸ð Á¤º¸ ¸®½ºÆ® uint16_t GetSize() const { assert(system_memo_list_num_ <= _countof(system_memo_info_)); const size_t kMinSize = sizeof(*this) - sizeof(system_memo_info_); return static_cast(kMinSize + //°íÁ¤ Å©±â (sizeof(system_memo_info_[0]) * system_memo_list_num_)); //°¡º¯ Å©±â } PACKET_AW_CLOSE; // declared by _NA002676_WORLD_SERVER_RENEWAL PACKET_AW_OPEN(AW_USER_STATUS, AW_USER_STADING_POSITION_CMD) static const DWORD kMaxNumberOfNodes = MSG_AG_PARTY_NAVI_INFO_BRD::MAX_OBJECT_ARRAY_SIZE; struct Node { DWORD user_guid; int16_t pos_x; int16_t pos_y; }; uint8_t paddings_0_; uint8_t number_of_nodes; Node nodes[kMaxNumberOfNodes]; uint16_t GetSize() const { const size_t kMinSize = sizeof(*this) - sizeof(nodes); return static_cast(kMinSize + sizeof(nodes[0]) * number_of_nodes); }; PACKET_AW_CLOSE; //========================================================================================== // AW_PARTY_PROTOCOL Ä«Å×°í¸® // ÆÄƼ °á¼º PACKET_AW_OPEN(AW_PARTY, AW_PARTY_MAKE_SYN) WORD wPartyKey; // ÆÄƼ Ű PACKET_AW_CLOSE; // ÆÄƼ °¡ÀÔ PACKET_AW_OPEN(AW_PARTY, AW_PARTY_JOIN_MEMBER_SYN) WORD wPartyKey; // ÆÄƼ Ű CHARGUID m_CharGUID; // °¡ÀÔÇÒ Ä³¸¯ÅÍ GUID PACKET_AW_CLOSE; // ÆÄƼ Å»Åð PACKET_AW_OPEN(AW_PARTY, AW_PARTY_WITHDRAW_MEMBER_SYN) WORD wPartyKey; // ÆÄƼ Ű CHARGUID m_CharGUID; // ³ª°¥ ij¸¯ÅÍ GUID PACKET_AW_CLOSE; // ÆÄƼ ÇØ»ê PACKET_AW_OPEN(AW_PARTY, AW_PARTY_DESTROY_SYN) WORD wPartyKey; // ÆÄƼ Ű PACKET_AW_CLOSE; #ifdef _NA_004694_20120412_1202_PARTY_ROOM_KEY // ·ëŰ ¼³Á¤ PACKET_AW_OPEN(AW_PARTY, AW_PARTY_ROOM_KEY_SYN) WORD party_key_; // ÆÄƼ Ű WORD room_key_; // ·ë Ű PACKET_AW_CLOSE; #endif // _NA_004694_20120412_1202_PARTY_ROOM_KEY // AW_GM_PROTOCOL Ä«Å×°í¸® PACKET_AW_OPEN(AW_GM, AW_GM_WHISPER_SET_CMD) BOOL m_bOn; // FALSE: ±Ó¸» ²û TRUE: ±Ó¸» ÄÔ PACKET_AW_CLOSE; PACKET_AW_OPEN(AW_GM, AW_GM_USERCHAT_BLOCK_CMD) CHARGUID m_CharGuid; // ÇØ´ç »ç¿ëÀÚ CharGuid BOOL m_bBlock; // FALSE: äÆÃ Çã¿ë TRUE: äÆÃ ±ÝÁö DWORD m_dwBlockTime; // äÆÃ ±ÝÁöÀÏ °æ¿ì Á¦Çѽð£(ºÐ ´ÜÀ§) //__NA_000313_20070223_REALTIME_CHAT_BLOCK PACKET_AW_CLOSE; PACKET_AW_OPEN(AW_GM, AW_GM_NOTICE_CMD) eNOTICE_TYPE m_eType; WORD m_wLen; TCHAR m_tszNoticeMsg[MAX_NOTICE_LEN + 1]; uint16 GetSize() const { // CHANGES: f101210.2L const size_t kMinSize = sizeof(*this) - sizeof(m_tszNoticeMsg); return static_cast(kMinSize + m_wLen * sizeof(m_tszNoticeMsg[0])); } PACKET_AW_CLOSE; // declared by __NA_001359_20090619_HEIM_LOTTO_SYSTEM = { AW_GM_LOTTO_~ } PACKET_AW_OPEN(AW_GM, AW_GM_LOTTO_NUM_CMD) DWORD dwUserKey; PACKET_AW_CLOSE; PACKET_AW_OPEN(AW_GM, AW_GM_LOTTO_SETTLE_CMD) DWORD dwUserKey; PACKET_AW_CLOSE; PACKET_AW_OPEN(AW_GM, AW_GM_LOTTO_FUND_CMD) DWORD user_key; INT64 amount_delta; PACKET_AW_CLOSE; //---------------------------------------------------------------------------------- // AW_FRIENDINVITATE ÇÁ·ÎÅäÄÝ ½ÃÀÛ //---------------------------------------------------------------------------------- //W->A ÃÊ´ëÇÑ Ä³¸¯ÅÍ ¸ñ·Ï (°¡º¯) PACKET_AW_OPEN(AW_FRIENDINVITATE, AW_FRIENDINVITATE_INVITATELIST_CMD) INVITATEFRIENDLIST_INFO m_InvitateFriendListInfo; WORD GetSize() const { // (CHANGES) (f100624.2L) const WORD kMinSize = sizeof(*this) - sizeof(m_InvitateFriendListInfo); return static_cast(kMinSize + m_InvitateFriendListInfo.GetSize()); //return (sizeof(MSG_AW_FRIENDINVITATE_INVITATELIST_CMD) - ((MAX_FRIEND_STAT_NUM - m_InvitateFriendListInfo.m_byListCount) * sizeof(DWORD))); } PACKET_AW_CLOSE; PACKET_AW_OPEN(AW_FRIENDINVITATE, AW_FRIEND_INVITATIONR_INSERT_CMD) STRUCT_FRIEND_INVITATE_INFO InvitateInfo; PACKET_AW_CLOSE; //---------------------------------------------------------------------------------- // AW_FRIENDINVITATE ÇÁ·ÎÅäÄÝ ³¡ //---------------------------------------------------------------------------------- //---------------------------------------------------------------------------------- // AW_CHAO °ü·Ã ÇÁ·ÎÅäÄÝ //---------------------------------------------------------------------------------- PACKET_AW_OPEN(AW_CHAO, AW_CHAO_REQUEST_REVENGEINFO_SYN) DWORD m_dwCharGuid; // ¿äûÇÏ´Â º»ÀÎ CharGuid PACKET_AW_CLOSE; // ¸®º¥Áö Á¤º¸ Àü´Þ(°¡º¯) PACKET_AW_OPEN(AW_CHAO, AW_CHAO_REQUEST_REVENGEINFO_ACK) DWORD m_dwCharGuid; // ¿äûÇÑ Ä³¸¯ÅÍÀÇ CharGuid BYTE m_byRevengePoint; // ³²Àº Revenge Point BYTE m_byRevengeStatNum; STRUCT_REVENGE_INFO m_sRevengeUserInfo[MAX_REVENGE_STAT_NUM]; // µî·ÏµÈ ij¸¯ÅÍ ¸ñ·Ï uint16_t GetSize() const { const size_t kMinSize = sizeof(*this) - sizeof(m_sRevengeUserInfo); return static_cast(kMinSize + sizeof(m_sRevengeUserInfo[0]) * m_byRevengeStatNum); }; PACKET_AW_CLOSE; PACKET_AW_OPEN(AW_CHAO, AW_CHAO_REQUEST_REVENGEINFO_NAK) DWORD m_dwCharGuid; // ¿äûÇÑ Ä³¸¯ÅÍÀÇ CharGuid BYTE m_byErrorCode; // ¿äû ½ÇÆÐÇÑ ÀÌÀ¯(0: ¾Ë ¼ö ¾ø´Â ¿¡·¯ 1: ´ë»óÀÌ WorldServer¿¡ ¿¬°áµÇ¾î ÀÖÁö ¾ÊÀ½) PACKET_AW_CLOSE; // Ŭ¶óÀÌ¾ðÆ®°¡ ¸®º¥Áö ¸®½ºÆ® »èÁ¦ ¿äûÇßÀ½(W->A) PACKET_AW_OPEN(AW_CHAO, AW_CHAO_REMOVE_REVENGE_CHAR_CMD) DWORD m_dwCharGuid; // ¿äûÇÏ´Â º»ÀÎ CharGuid DWORD m_dwRevengeCharGuid; // »èÁ¦ÇÒ ¸®º¥Áö(³ª»ÛÄ£±¸) CharGuid PACKET_AW_CLOSE; // A->·Î PK ¼º°øÇßÀ¸´Ï ¸®º¥Áö ¸®½ºÆ® »èÁ¦ ¿äû PACKET_AW_OPEN(AW_CHAO, AW_CHAO_REMOVE_REVENGE_CHAR_SYN) DWORD m_dwCharGuid; // ¿äûÇÏ´Â º»ÀÎ CharGuid DWORD m_dwRevengeCharGuid; // »èÁ¦ÇÒ ¸®º¥Áö(³ª»ÛÄ£±¸) CharGuid PACKET_AW_CLOSE; PACKET_AW_OPEN(AW_CHAO, AW_CHAO_REMOVE_REVENGE_CHAR_ACK) DWORD m_dwCharGuid; // ¿äûÇÏ´Â º»ÀÎ CharGuid DWORD m_dwRevengeCharGuid; // »èÁ¦ÇÒ ¸®º¥Áö(³ª»ÛÄ£±¸) CharGuid PACKET_AW_CLOSE; PACKET_AW_OPEN(AW_CHAO, AW_CHAO_REMOVE_REVENGE_CHAR_NAK) DWORD m_dwCharGuid; // ¿äûÇÏ´Â º»ÀÎ CharGuid BYTE m_byErrorCode; // eREVENGE_RESULT Âü°í PACKET_AW_CLOSE; // ¸®º¥Áö ´ë»ó Ãß°¡ ¿äû PACKET_AW_OPEN(AW_CHAO, AW_CHAO_ADD_REVENGE_CHAR_SYN) DWORD m_dwCharGuid; // ¿äûÇÏ´Â º»ÀÎ CharGuid TCHAR m_ptszRevengeName[MAX_CHARNAME_LENGTH+1]; // ¸®º¥Áö ¸®½ºÆ®¿¡ Ãß°¡ÇÒ ´ë»ó Name // ·Î±×¾Æ¿ô ÁßÀÌ¶óµµ Ãß°¡°¡ µÇ¾î¾ß ÇϹǷΠm_dwRevengeCharGuid ´ë½Å À̸§À» »ç¿ëÇÑ´Ù. PACKET_AW_CLOSE; PACKET_AW_OPEN(AW_CHAO, AW_CHAO_ADD_REVENGE_CHAR_ACK) DWORD m_dwCharGuid; // ¿äûÇÏ´Â º»ÀÎ CharGuid DWORD m_dwRevengeCharGuid; // Ãß°¡ÇÒ ¸®º¥Áö(³ª»ÛÄ£±¸) CharGuid TCHAR m_ptszRevengeName[MAX_CHARNAME_LENGTH+1]; // ¸®º¥Áö ¸®½ºÆ®¿¡ Ãß°¡ÇÑ ´ë»ó Name PACKET_AW_CLOSE; PACKET_AW_OPEN(AW_CHAO, AW_CHAO_ADD_REVENGE_CHAR_NAK) DWORD m_dwCharGuid; // ¿äûÇÏ´Â º»ÀÎ CharGuid BYTE m_byErrorCode; // eREVENGE_RESULT Âü°í PACKET_AW_CLOSE; // ½ºÆä¼È ¾ÆÀÌÅÛ ¼ÒÀ¯ º¯°æ PACKET_AW_OPEN(AW_ITEM, AW_ITEM_CHANGE_SPECIAL_ITEM_OWN_CMD) enum { MAX_SPECIAL_ITEM_COUNT = 30 }; DWORD m_dwCharGuid; BYTE m_Count; SPECIAL_ITEM_OWN_INFO m_ItemInfo[MAX_SPECIAL_ITEM_COUNT]; uint16_t GetSize() const { const size_t kMinSize = sizeof(*this) - sizeof(m_ItemInfo); return static_cast(kMinSize + sizeof(m_ItemInfo[0]) * m_Count); }; PACKET_AW_CLOSE; // ½ºÆä¼È ¾ÆÀÌÅÛ ¿äû(W -> A) PACKET_AW_OPEN(AW_ITEM, AW_ITEM_CHANGE_SPECIAL_ITEM_SYN) DWORD m_dwUserGuid; PACKET_AW_CLOSE; // ½ºÆä¼È ¾ÆÀÌÅÛ Å¬¸®¾î ¸í·É(A->W) PACKET_AW_OPEN(AW_ITEM, AW_ITEM_SPECIAL_ITEM_CLEAR_CMD) DWORD m_dwCharGuid; PACKET_AW_CLOSE; PACKET_AW_OPEN(AW_ITEM, AW_ITEM_USE_DECREE_ITEM_SYN) DWORD m_dwCharGuid; PACKET_AW_CLOSE; PACKET_AW_OPEN(AW_ITEM, AW_ITEM_USE_DECREE_ITEM_ACK) PACKET_AW_CLOSE; PACKET_AW_OPEN(AW_ITEM, AW_ITEM_USE_DECREE_ITEM_NAK) BYTE m_byErrorCode; PACKET_AW_CLOSE; #ifdef _NA_20101011_HEIM_LOTTO_CASH_TICKET // A->W ÇÏÀÓÇà¿î ij½Ã ÀÀ¸ð±Ç »ç¿ë ¿äû PACKET_AW_OPEN(AW_ITEM, AW_ITEM_USE_HEIM_LOTTO_TICKET_SYN) CHARGUID char_guid; // ij¸¯ÅÍ ID SLOTIDX index; POSTYPE pos; PACKET_AW_CLOSE; // W->A ÇÏÀÓÇà¿î ij½Ã ÀÀ¸ð±Ç »ç¿ë ÀÀ´ä PACKET_AW_OPEN(AW_ITEM, AW_ITEM_USE_HEIM_LOTTO_TICKET_ACK) WORD result_code; // °á°ú ÄÚµå : eITEM_RESULT CHARGUID char_guid; // ij¸¯ÅÍ ID SLOTIDX index; POSTYPE pos; PACKET_AW_CLOSE; #endif // _NA_20101011_HEIM_LOTTO_CASH_TICKET #ifndef __SSQ_MSG_HDR__ #define __SSQ_MSG_HDR__ // // Àüü ¸Þ½ÃÁöÀÇ ±æÀ̰¡ ´ã°ÜÁø´Ù. (variable stream) struct WAR_MSG_HDR { typedef ulong MSG_SIZE_T; // expanded by _NA001605_EP2_CHANGE_SKILL_BROADCASTER_ MSG_SIZE_T size; }; // // - °¢ ¸Þ½ÃÁöÀÇ Å¸ÀÔµéÀÌ ±âÀçµÈ´Ù. // - 1Byte, ÇÏÁö¸¸ raw streamÀÎ WAR_TAG_VÀÇ À̰ÍÀ» Á÷Á¢ »ç¿ëÇÏ´Â °æ¿ì´Â ¾ø¾î¾ß ÇÑ´Ù. // (ÀÌ°Í common routine¿¡¼­ÀÇ offset¿¬»ê ÆíÀǼºÀÌ ¸ñÀûÀÌ´Ù.) // ¸ðµç ¸Þ½ÃÁöµéÀº ½ÇÁúÀûÀ¸·Î WAR_TAG1_À» »ó¼ÓÇØ¼­ ±¸ÇöµÇ°Ô µÇ¾î ÀÖ´Ù. // <¸ñÀû> // - Server/Client °¢°¢ pointer¿¬»êÀ» ¼öÇàÇϸ鼭 ¹ö±×¸¦ À¯¹ßÇÒ ¼ö ÀÖ´Ù. // ÇϳªÀÇ ·ÎÁ÷À¸·Î serializing input/outputÀÌ °¡´ÉÇØÁöµµ·Ï ÇÏ´Â °ÍÀÌ ¸ñÇ¥´Ù. typedef struct WAR_TAG_V { BYTE _TAG; } *WAR_TAG_P; #endif PACKET_AW_OPEN(AW_OPERATION, AW_OPERATION_ROOM_CTRL_CMD) WAR_MSG_HDR m_Header[1]; // Stream Header, next pointer is data stream uint16_t GetSize() const { return static_cast(sizeof(*this) + m_Header->size); } PACKET_AW_CLOSE; PACKET_AW_OPEN(AW_CONNECTION, AW_ABUSING_USER_VERIFY_QUERY_CMD) CHARGUID m_CharGuid; // ¿äûÇÏ´Â º»ÀÎ CharGuid eABUSE_SUB_TYPE m_eAbuseSubType; PACKET_AW_CLOSE; // USERCOUNT_SYNÀº ¿ùµå ¼­¹ö ÀÚü¿¡¼­ Áý°èÇϱâ·Î ¼öÁ¤Çϰí, USERMONEY_SYNÀº GMÀ¸·Î ¿Å°åÀ½ /* // AW_USER_OPERATION Ä«Å×°í¸® struct MSG_AW_USERCOUNT_SYN : public MSG_BASE_FORWARD { MSG_AW_USERCOUNT_SYN() { m_byCategory = AW_OPERATION; m_byProtocol = AW_USERCOUNT_SYN; } DWORD dwVillageUserCount; // ¸¶À»Á¸ °³¼ö DWORD dwHuntingLobbyZoneCount; // Hunting·Îºñ¹æ °³¼ö DWORD dwHuntingLobbyUserCount; // Hunting·Îºñ¹æ ÃÑ µ¿Á¢ DWORD dwMissionLobbyZoneCount; // Mission·Îºñ¹æ °³¼ö DWORD dwMissionLobbyUserCount; // Mission·Îºñ¹æ ÃÑ µ¿Á¢ DWORD dwPVPLobbyZoneCount; // PVP·Îºñ¹æ °³¼ö DWORD dwPVPLobbyUserCount; // PVP·Îºñ¹æ ÃÑ µ¿Á¢ DWORD dwHuntingZoneCount; // ÇåÆÃ¹æ °³¼ö DWORD dwHuntingUserCount; // ÇåÆÃ¹æ ÃÑ µ¿Á¢ DWORD dwMissionZoneCount; // ¹Ì¼Ç¹æ °³¼ö DWORD dwMissionUserCount; // ¹Ì¼Ç¹æ ÃÑ µ¿Á¢ DWORD dwPVPZoneCount; // PVPÁ¸ °³¼ö DWORD dwPVPUserCount; // PVPÁ¸ ÃÑ µ¿Á¢ DWORD GetTotalUserNum() { return dwVillageUserCount +dwHuntingLobbyUserCount +dwMissionLobbyUserCount +dwPVPLobbyUserCount +dwHuntingUserCount +dwMissionUserCount +dwPVPUserCount; } }; struct MSG_AW_USERMONEY_SYN : public MSG_BASE_FORWARD { MSG_AW_USERMONEY_SYN() { m_byCategory = AW_OPERATION; m_byProtocol = AW_USERMONEY_SYN; } DWORD dwTotalGetMoney; // ÀÏÁ¤ ½Ã°£ µ¿¾È »ý°Ü³­ µ· ÃѰè DWORD dwTotalLoseMoney; // ÀÏÁ¤ ½Ã°£ µ¿¾È ¾ø¾îÁø µ· ÃѰè DWORD dwTotalUserMoney; // ÇöÀç µ¿Á¢ À¯ÀúµéÀÌ °®°í ÀÖ´Â Æò±Õ ±Ý¾× }; */ //================================================================================================== #pragma pack(pop) //================================================================================================== #endif //SERVERCOMMON_PACKET_STRUCT_AW_H