#pragma once #include #include #include #include #pragma pack(push,1) #define PACKET_DW_OPEN( c, p ) struct MSG_##p : public MSG_BASE_FORWARD { MSG_##p(){ m_byCategory = c; m_byProtocol = p; } #define PACKET_DW_CLOSE }; ////////////////////////////////// // Á¢¼Ó °ü·Ã ÇÁ·ÎÅäÄÝ PACKET_DW_OPEN(DW_CONNECTION, DW_CONNECTION_SERVER_INFO_CMD) SERVER_KEY m_ServerKey; DWORD m_dwServerGUID; char m_szDBProxyServerIP[MAX_IP_STRING_LEN]; WORD m_wDBProxyServerPort; PACKET_DW_CLOSE; /////////////////////////////////// // Ä£±¸ °ü·Ã ÇÁ·ÎÅäÄÝ // Ä£±¸ ¸ñ·Ï ¿äû PACKET_DW_OPEN(DW_FRIEND, DW_FRIEND_GETLIST_SYN) CHARGUID m_CharGuid; //< Ä£±¸ ¸ñ·ÏÀ» ¿äûÇϴ ij¸¯ÅÍ guid uint16_t GetSize() const { return sizeof(*this); } PACKET_DW_CLOSE; // ¸®ÆÑÅ丵 ¹öÀü //#ifdef _NA_0_20080612_WORLDSERVER_REFACTORING PACKET_DW_OPEN(DW_COMMUNITY, DW_COMMUNITY_MYLIST_SYN) CHARGUID m_CharGuid; uint16_t GetSize() const { return sizeof(*this); } PACKET_DW_CLOSE; PACKET_DW_OPEN(DW_COMMUNITY, DW_COMMUNITY_MYLIST_ACK) WORD dataNum; CHARGUID charGuid; COMMUNITY_DB_INFO communityInfo[MAX_FRIENDBLOCK_STAT_NUM]; uint16_t GetSize() const { const size_t kMinSize = sizeof(*this) - sizeof(communityInfo); return static_cast(kMinSize + sizeof(communityInfo[0]) * dataNum); } PACKET_DW_CLOSE; PACKET_DW_OPEN(DW_COMMUNITY, DW_COMMUNITY_CONTACT_ME_ACK) WORD m_DataNum; CHARGUID m_CharGuid; CHARGUID m_CotactMEList[MAX_FRIENDBLOCK_STAT_NUM]; uint16_t GetSize() const { const size_t kMinSize = sizeof(*this) - sizeof(m_CotactMEList); return static_cast(kMinSize + sizeof(m_CotactMEList[0]) * m_DataNum); } PACKET_DW_CLOSE; PACKET_DW_OPEN(DW_COMMUNITY, DW_COMMUNITY_MYLIST_NAK) enum {ERR_DEFAULT,}; BYTE m_byResult; CHARGUID m_CharGuid; PACKET_DW_CLOSE; //#endif//_NA_0_20080612_WORLDSERVER_REFACTORING // ±¸¹öÀü PACKET_DW_OPEN(DW_FRIEND, DW_FRIEND_GETLIST_ACK) // CHANGES: f110104.1L, fixed a data type for counting to solve type overflow. CHARGUID m_CharGuid; //< Ä£±¸ ¸ñ·ÏÀ» ¹ÞÀ» ij¸¯ÅÍÀÇ guid uint16_t number_of_friends; //< Ä£±¸ ¼ýÀÚ STRUCT_FRIEND_DB_INFO m_sFriendInfo[MAX_FRIENDBLOCK_STAT_NUM]; uint16_t GetSize() const { const size_t kMinSize = sizeof(*this) - sizeof(m_sFriendInfo); return static_cast(kMinSize + sizeof(m_sFriendInfo[0]) * number_of_friends); } PACKET_DW_CLOSE; // Ä£±¸ ¸ñ·Ï ¼ö½Å ½ÇÆÐ PACKET_DW_OPEN(DW_FRIEND, DW_FRIEND_GETLIST_NAK) enum { ERR_DEFAULT, // NO_FRIEND, //< Ä£±¸ ¾ø~´Ù~ }; CHARGUID m_CharGuid; BYTE m_byResult; PACKET_DW_CLOSE; // Ä£±¸ ¿äû PACKET_DW_OPEN(DW_FRIEND, DW_FRIEND_ADD_SYN) CHARGUID m_CharGuidFrom; //< Ä£±¸ ½ÅûÇÑ ÂÊÀÇ guid TCHAR m_ptszCharNameTo[MAX_CHARNAME_LENGTH+1]; //< Ä£±¸ ½ÅûÀ» ¹ÞÀº ÂÊÀÇ Ä³¸¯Å͸í PACKET_DW_CLOSE; // Ä£±¸ ¿äû ¼º°ø PACKET_DW_OPEN(DW_FRIEND, DW_FRIEND_ADD_ACK) CHARGUID m_CharGuidFrom; //< Ä£±¸ ½ÅûÇÑ ÂÊÀÇ guid STRUCT_FRIEND_INFO m_ToFriendInfo; //< Ä£±¸ ½ÅûÀ» ¹ÞÀº ÂÊÀÇ Ä³¸¯ÅÍÁ¤º¸ PACKET_DW_CLOSE; // Ä£±¸ ¿äû ½ÇÆÐ PACKET_DW_OPEN(DW_FRIEND, DW_FRIEND_ADD_NAK) enum { ERR_DEFAULT = 0, //< ±âŸ µîµî NO_USER = 1, //< ÇØ´ç GUIDÀÇ À¯Àú°¡ ¾øÀ½ ALREADY_FRIEND = 2, //< ÀÌ¹Ì Ä£±¸ »óÅ BLOCKED_USER , //< Â÷´Ü »óÅ }; CHARGUID m_CharGuidFrom; BYTE m_byResult; PACKET_DW_CLOSE; // Ä£±¸ »èÁ¦ ¿äû PACKET_DW_OPEN(DW_FRIEND, DW_FRIEND_DEL_SYN) CHARGUID m_CharGuidFrom; //< »èÁ¦¸¦ ¿äûÇÑ ÂÊ CHARGUID m_CharGuidTo; //< »èÁ¦µÇ´Â ÂÊ BYTE m_Sts; //< Ä£±¸ °ü°è ÄÚµå, STRUCT_FRIEND_DB_INFO::eNodeType, _KR_0_20091021_FIRENDINVITATION_EXTEND PACKET_DW_CLOSE; // Ä£±¸ »èÁ¦ ¼º°ø PACKET_DW_OPEN(DW_FRIEND, DW_FRIEND_DEL_ACK) CHARGUID m_CharGuidFrom; //< »èÁ¦¸¦ ¿äûÇÑ ÂÊ CHARGUID m_CharGuidTo; //< »èÁ¦µÇ´Â ÂÊ PACKET_DW_CLOSE; // Ä£±¸ »èÁ¦ ½ÇÆÐ PACKET_DW_OPEN(DW_FRIEND, DW_FRIEND_DEL_NAK) enum { ERR_DEFAULT, //< ¾Ë ¼ö ¾ø´Â ÀÌÀ¯ NOT_FRIEND_USER, //< Ä£±¸ ¾Æ´Ô }; CHARGUID m_CharGuidFrom; //< »èÁ¦¸¦ ¿äûÇÑ ÂÊ BYTE m_byResult; PACKET_DW_CLOSE; // Â÷´Ü ¿äû(Ä£±¸µç ¾Æ´Ïµç) PACKET_DW_OPEN(DW_FRIEND, DW_FRIEND_BLOCK_SYN) CHARGUID m_CharGuidFrom; //< Â÷´Ü ¿äûÇÑ ÂÊ guid TCHAR m_ptszCharNameTo[MAX_CHARNAME_LENGTH+1]; //< Â÷´Ü ´çÇÏ´Â ÂÊ PACKET_DW_CLOSE; // Â÷´Ü ¼º°ø PACKET_DW_OPEN(DW_FRIEND, DW_FRIEND_BLOCK_ACK) CHARGUID m_CharGuidFrom; //< Â÷´Ü ¿äûÇÑ ÂÊ guid STRUCT_BLOCK_INFO m_BlockInfo; PACKET_DW_CLOSE; // Â÷´Ü ½ÇÆÐ PACKET_DW_OPEN(DW_FRIEND, DW_FRIEND_BLOCK_NAK) CHARGUID m_CharGuidFrom; //< Â÷´Ü ¿äûÇÑ ÂÊ guid BYTE m_byResult; PACKET_DW_CLOSE; // Â÷´Ü »èÁ¦ ¿äû PACKET_DW_OPEN(DW_FRIEND, DW_FRIEND_BLOCK_FREE_SYN) CHARGUID m_CharGuidFrom; //< Â÷´Ü »èÁ¦ ¿äûÇÑ ÂÊ guid CHARGUID m_CharGuidTo; //< »èÁ¦µÇ´Â ÂÊ PACKET_DW_CLOSE; // Â÷´Ü »èÁ¦ ¼º°ø PACKET_DW_OPEN(DW_FRIEND, DW_FRIEND_BLOCK_FREE_ACK) CHARGUID m_CharGuidFrom; //< Â÷´Ü »èÁ¦ ¿äûÇÑ ÂÊ guid CHARGUID m_CharGuidTo; //< »èÁ¦µÇ´Â ÂÊ PACKET_DW_CLOSE; // Â÷´Ü »èÁ¦ ½ÇÆÐ PACKET_DW_OPEN(DW_FRIEND, DW_FRIEND_BLOCK_FREE_NAK) enum { ERR_DEFAULT =0, //< ¾Ë ¼ö ¾ø´Â ÀÌÀ¯ NO_USER =1, //< Á¸ÀçÇÏÁö ¾Ê´Â ij¸¯ÅÍ À̸§ NOT_BLOCKED, //< Â÷´ÜµÈ ij¸¯ÅͰ¡ ¾Æ´Ô }; CHARGUID m_CharGuidFrom; //< Â÷´Ü »èÁ¦ ¿äûÇÑ ÂÊ guid BYTE m_byResult; PACKET_DW_CLOSE; //_KR_0_20091021_FIRENDINVITATION_EXTEND PACKET_DW_OPEN( DW_FRIEND, DW_FRIEND_INVITATIONRELATION_FREE_CMD ) CHARGUID m_CharGuid; // Ãßõ´çÇÑ Ä³¸¯ÀÇ GUID PACKET_DW_CLOSE PACKET_DW_OPEN( DW_FRIEND, DW_FRIEND_INVITATIONRELATION_REWARDINSERT_CMD ) CHARGUID m_SendGuid; CHARGUID m_RevGuid; WORD m_Level; TCHAR m_ptszRecvName[MAX_CHARNAME_LENGTH+1]; TCHAR m_ptszMemo[MAX_MEMO_LENGTH + 1]; PACKET_DW_CLOSE //_NA_0_20100527_ADD_CHAR_RELATION_MEMO PACKET_DW_OPEN( DW_FRIEND, DW_FRIEND_DETAIL_INFO_SYN ) CHARGUID m_dwToCharGuid; PACKET_DW_CLOSE PACKET_DW_OPEN( DW_FRIEND, DW_FRIEND_DETAIL_INFO_ACK ) CHARGUID m_dwToCharGuid; TCHAR m_ptszToCharName[MAX_CHARNAME_LENGTH+1]; TCHAR m_ptszMemo[MAX_FRIEND_MEMO_LENGHT+1]; TCHAR m_ptszToCharGuildName[MAX_GUILDNAME_LENGTH+1]; BYTE m_byToCharGuildDuty; PACKET_DW_CLOSE PACKET_DW_OPEN( DW_FRIEND, DW_FRIEND_DETAIL_INFO_NAK ) BYTE m_byErrorCode; PACKET_DW_CLOSE PACKET_DW_OPEN( DW_FRIEND, DW_FRIEND_MEMO_UPDATE_SYN ) CHARGUID m_dwToCharGuid; TCHAR m_ptszMemo[MAX_FRIEND_MEMO_LENGHT+1]; PACKET_DW_CLOSE PACKET_DW_OPEN( DW_FRIEND, DW_FRIEND_MEMO_UPDATE_ACK ) CHARGUID m_dwToCharGuid; PACKET_DW_CLOSE PACKET_DW_OPEN( DW_FRIEND, DW_FRIEND_MEMO_UPDATE_NAK ) BYTE m_byErrorCode; PACKET_DW_CLOSE ////////////////////////////////// // GM °ü·Ã ÇÁ·ÎÅäÄÝ // äÆÃ±ÝÁö PACKET_DW_OPEN( DW_GM, DW_GM_CHATBLOCK_SYN ) TCHAR m_ptszGMAccountID[ID_MAX_LEN+1]; // Â÷´Ü ¸í·ÉÇÑ GM °èÁ¤¸í CHARGUID m_CharGuid; // Â÷´Ü ´ë»ó »ç¿ëÀÚ DWORD m_dwBlockTIme; // äÆÃ ±ÝÁö ½Ã°£(ºÐ´ÜÀ§) PACKET_DW_CLOSE PACKET_DW_OPEN( DW_GM, DW_GM_CHATBLOCK_ACK ) CHARGUID m_CharGuid; DWORD m_dwBlockTime; PACKET_DW_CLOSE PACKET_DW_OPEN( DW_GM, DW_GM_CHATBLOCK_NAK ) WORD m_wErrorCode; PACKET_DW_CLOSE // äÆÃÇã¿ë PACKET_DW_OPEN( DW_GM, DW_GM_CHATALLOW_SYN ) TCHAR m_ptszGMAccountID[ID_MAX_LEN+1]; // Çã¿ë ¸í·ÉÇÑ GM °èÁ¤¸í CHARGUID m_CharGuid; PACKET_DW_CLOSE PACKET_DW_OPEN( DW_GM, DW_GM_CHATALLOW_ACK ) CHARGUID m_CharGuid; PACKET_DW_CLOSE PACKET_DW_OPEN( DW_GM, DW_GM_CHATALLOW_NAK ) WORD m_wErrorCode; PACKET_DW_CLOSE // äÆÃ±ÝÁö ½Ã°£ Â÷°¨ PACKET_DW_OPEN( DW_GM, DW_GM_CHATBLOCK_UPDATE_SYN ) DWORD m_dwRemainTime; // Â÷°¨µÇ°í ³²Àº ½Ã°£ PACKET_DW_CLOSE //PACKET_DW_OPEN( DW_GM, DW_GM_CHATBLOCK_UPDATE_ACK ) //PACKET_DW_CLOSE PACKET_DW_OPEN( DW_GM, DW_GM_CHATBLOCK_UPDATE_NAK ) WORD m_wErrorCode; PACKET_DW_CLOSE PACKET_DW_OPEN( DW_GM, DW_GM_CHATBLOCKTIME_REQ ) PACKET_DW_CLOSE PACKET_DW_OPEN( DW_GM, DW_GM_CHATBLOCKTIME_ANS ) DWORD m_dwRemainTime; // ³²Àº ½Ã°£(0À̸é Block»óÅ ¾Æ´Ô) PACKET_DW_CLOSE PACKET_DW_OPEN( DW_GM, DW_GM_CHATBLOCKTIME_NAK ) WORD m_wErrorCode; PACKET_DW_CLOSE ////////////////////////////////// // ¹«´Ü PK °ü·Ã ÇÁ·ÎÅäÄÝ // ¸®º¥Áö ¸®½ºÆ®¿¡ µî·Ï ¿äû PACKET_DW_OPEN( DW_CHAO, DW_CHAO_ADD_REVENGE_CHAR_SYN ) CHARGUID m_CharGuidFrom; //< µî·Ï ¿äûÇÑ ÂÊÀÇ guid TCHAR m_ptszCharNameTo[MAX_CHARNAME_LENGTH+1]; //< µî·ÏÇÒ Ä³¸¯Å͸í PACKET_DW_CLOSE PACKET_DW_OPEN( DW_CHAO, DW_CHAO_ADD_REVENGE_CHAR_ACK ) CHARGUID m_CharGuidFrom; //< µî·Ï ¿äûÇÑ ÂÊÀÇ guid STRUCT_REVENGE_INFO m_sRevengeUserInfo; //< µî·ÏÇÑ Ä³¸¯ÅÍ Á¤º¸ PACKET_DW_CLOSE PACKET_DW_OPEN( DW_CHAO, DW_CHAO_ADD_REVENGE_CHAR_NAK ) CHARGUID m_CharGuidFrom; //< µî·Ï ¿äûÇÑ ÂÊÀÇ guid BYTE m_byErrorCode; //< RC::eREVENGE_RESULT Âü°í PACKET_DW_CLOSE // ¸®º¥Áö ¸®½ºÆ®¿¡¼­ »èÁ¦ ¿äû(C->W->D) PACKET_DW_OPEN( DW_CHAO, DW_CHAO_REMOVE_REVENGE_CHAR_SYN ) CHARGUID m_CharGuidFrom; //< »èÁ¦ ¿äûÇÑ ÂÊÀÇ guid CHARGUID m_RevengeGuidTo; //< »èÁ¦ÇÒ Ä³¸¯ÅÍ Guid PACKET_DW_CLOSE PACKET_DW_OPEN( DW_CHAO, DW_CHAO_REMOVE_REVENGE_CHAR_ACK ) CHARGUID m_CharGuidFrom; //< »èÁ¦ ¿äûÇÑ ÂÊÀÇ guid CHARGUID m_RevengeGuidTo; //< »èÁ¦ÇÑ Ä³¸¯ÅÍ Guid PACKET_DW_CLOSE PACKET_DW_OPEN( DW_CHAO, DW_CHAO_REMOVE_REVENGE_CHAR_NAK ) CHARGUID m_CharGuidFrom; //< µî·Ï ¿äûÇÑ ÂÊÀÇ guid BYTE m_byErrorCode; //< RC:eREVENGE_RESULT Âü°í PACKET_DW_CLOSE // ¸®º¥Áö ¼º°øÇÏ¿© ¸®½ºÆ®¿¡¼­ »èÁ¦ ¿äû(G->A->W->D) // -- ÀÌ ÆÐŶ ±¸Á¶Ã¼µéÀº ±âº»ÀûÀ¸·Î DW_CHAO_REMOVE_REVENGE_CHAR...¿Í ¿ÏÀüÈ÷ µ¿ÀÏÇÏ´Ù. ´ÜÁö WorldServerÀÇ ÇൿÀÌ ´Ù¸£±â ¶§¹®¿¡ ŸÀÔ ±¸ºÐ typedef MSG_DW_CHAO_REMOVE_REVENGE_CHAR_SYN MSG_DW_CHAO_PK_REVENGE_CHAR_SYN; typedef MSG_DW_CHAO_REMOVE_REVENGE_CHAR_ACK MSG_DW_CHAO_PK_REVENGE_CHAR_ACK; typedef MSG_DW_CHAO_REMOVE_REVENGE_CHAR_NAK MSG_DW_CHAO_PK_REVENGE_CHAR_NAK; /* PACKET_DW_OPEN( DW_CHAO, DW_CHAO_PK_REVENGE_CHAR_SYN ) CHARGUID m_CharGuidFrom; //< »èÁ¦ ¿äûÇÑ ÂÊÀÇ guid TCHAR m_ptszCharNameTo[MAX_CHARNAME_LENGTH+1]; //< »èÁ¦ÇÒ Ä³¸¯Å͸í PACKET_DW_CLOSE PACKET_DW_OPEN( DW_CHAO, DW_CHAO_PK_REVENGE_CHAR_ACK ) CHARGUID m_CharGuidFrom; //< »èÁ¦ ¿äûÇÑ ÂÊÀÇ guid TCHAR m_ptszCharNameTo[MAX_CHARNAME_LENGTH+1]; //< »èÁ¦ÇÑ Ä³¸¯Å͸í PACKET_DW_CLOSE PACKET_DW_OPEN( DW_CHAO, DW_CHAO_PK_REVENGE_CHAR_NAK ) CHARGUID m_CharGuidFrom; //< µî·Ï ¿äûÇÑ ÂÊÀÇ guid BYTE m_byErrorCode; //< RC:eREVENGE_RESULT Âü°í PACKET_DW_CLOSE */ ////////////////////////////////// // ÂÊÁö °ü·Ã ÇÁ·ÎÅäÄÝ // ÂÊÁö Àü¼Û PACKET_DW_OPEN( DW_MEMO, DW_MEMO_SEND_SYN ) CHARGUID m_SendGuid; TCHAR m_ptszRecvName[MAX_CHARNAME_LENGTH+1]; TCHAR m_ptszMemo[MAX_MEMO_LENGTH + 1]; // added by _NA_20100812_INTEGRATE_SYSTEM_MEMO_DOMINATION = { CHARGUID m_recvGuid;//º¸»ó ¹ÞÀ» Guid SLOTCODE m_recvItemCode;//º¸»ó ¹ÞÀ» ¾ÆÀÌÅÛ ÄÚµå ULONGLONG m_amountCost;//º¸»ó ¹ÞÀ» ±Ý¾× eSYSTEM_MEMO_TYPE m_typeSystemMemo;//½Ã½ºÅÛ ¸Þ¸ð ±¸ºÐÀÚ // } PACKET_DW_CLOSE PACKET_DW_OPEN( DW_MEMO, DW_MEMO_SEND_ACK ) CHARGUID m_SendGuid; CHARGUID m_RecvGuid; TCHAR m_ptszRecvName[MAX_CHARNAME_LENGTH+1]; STRUCT_SUBJECT_PACKETINFO m_Subject; // added by _NA_20100812_INTEGRATE_SYSTEM_MEMO_DOMINATION = { SLOTCODE m_recvItemCode;//ȯ±Þ ¹ÞÀ» ¾ÆÀÌÅÛ ÄÚµå ULONGLONG m_amountCost;//ȯ±Þ ¹ÞÀ» ±Ý¾× eSYSTEM_MEMO_TYPE m_typeSystemMemo;//½Ã½ºÅÛ ¸Þ¸ð ±¸ºÐÀÚ // } PACKET_DW_CLOSE PACKET_DW_OPEN( DW_MEMO, DW_MEMO_SEND_NAK ) CHARGUID m_SendGuid; BYTE m_byErrorCode; PACKET_DW_CLOSE // ÂÊÁö ¸ñ·Ï È®ÀÎ PACKET_DW_OPEN( DW_MEMO, DW_MEMO_LIST_REQ ) CHARGUID m_RecvGuid; PACKET_DW_CLOSE PACKET_DW_OPEN( DW_MEMO, DW_MEMO_LIST_ANS ) CHARGUID m_RecvGuid; BYTE m_byMemoCnt; // ÂÊÁö °³¼ö(ÇöÀç ÆäÀÌÁö¿¡¼­) BYTE m_byMemoPage; // ÂÊÁö ¸ñ·ÏÀÇ ÇöÀç ÆäÀÌÁö(10°³ ´ÜÀ§·Î Àü¼Û) BYTE m_byMemoPageCnt; // ÂÊÁö ¸ñ·ÏÀÇ ÃÑ ÆäÀÌÁö(ÇöÀç ÂÊÁö 123°³¸é 7ÆäÀÌÁö°¡ µÊ. m_byMemoPage=m_byMemoPageCnt¸é ¼Û½Å ¿Ï·á) STRUCT_SUBJECT_PACKETINFO m_Memo[MAX_MEMO_PAGENUM]; WORD GetSize() { return ( sizeof(MSG_DW_MEMO_LIST_ANS) - ( sizeof(STRUCT_SUBJECT_PACKETINFO) * (MAX_MEMO_PAGENUM - m_byMemoCnt) ) ); } PACKET_DW_CLOSE PACKET_DW_OPEN( DW_MEMO, DW_MEMO_LIST_NAK ) CHARGUID m_RecvGuid; BYTE m_byErrorCode; PACKET_DW_CLOSE // ÂÊÁö ³»¿ë È®ÀÎ PACKET_DW_OPEN( DW_MEMO, DW_MEMO_VIEW_REQ ) CHARGUID m_RecvGuid; MEMOGUID m_MemoGuid; PACKET_DW_CLOSE PACKET_DW_OPEN( DW_MEMO, DW_MEMO_VIEW_ANS ) CHARGUID m_RecvGuid; MEMOGUID m_MemoGuid; TCHAR m_ptszMemo[MAX_MEMO_LENGTH + 1]; // _NA_20100812_INTEGRATE_SYSTEM_MEMO_DOMINATION = { SLOTCODE m_recvItemCode;//ȯ±Þ ¹ÞÀ» ¾ÆÀÌÅÛ ÄÚµå ULONGLONG m_amountCost;//ȯ±Þ ¹ÞÀ» ±Ý¾× eSYSTEM_MEMO_TYPE m_typeSystemMemo;//½Ã½ºÅÛ ¸Þ¸ð ±¸ºÐÀÚ // } PACKET_DW_CLOSE PACKET_DW_OPEN( DW_MEMO, DW_MEMO_VIEW_NAK ) CHARGUID m_RecvGuid; BYTE m_byErrorCode; PACKET_DW_CLOSE // ÂÊÁö »èÁ¦ PACKET_DW_OPEN( DW_MEMO, DW_MEMO_DELETE_SYN ) CHARGUID m_RecvGuid; MEMOGUID m_MemoGuid; STRUCT_SUBJECT_PACKETINFO::eMEMOTYPE m_MemoType; //_NA_1798_20110114_SYSTEM_MEMO_ADDITIONAL_LOGGING PACKET_DW_CLOSE PACKET_DW_OPEN( DW_MEMO, DW_MEMO_DELETE_ACK ) CHARGUID m_RecvGuid; MEMOGUID m_MemoGuid; STRUCT_SUBJECT_PACKETINFO::eMEMOTYPE m_MemoType; //_NA_1798_20110114_SYSTEM_MEMO_ADDITIONAL_LOGGING PACKET_DW_CLOSE PACKET_DW_OPEN( DW_MEMO, DW_MEMO_DELETE_NAK ) CHARGUID m_RecvGuid; BYTE m_byErrorCode; PACKET_DW_CLOSE PACKET_DW_OPEN( DW_STATUS, DW_STATUS_INTERCEPTION_REQ ) CHARGUID m_CharGuid; PACKET_DW_CLOSE PACKET_DW_OPEN( DW_STATUS, DW_STATUS_INTERCEPTION_ANS ) CHARGUID m_CharGuid; BOOL m_bWhisperFlag; PACKET_DW_CLOSE PACKET_DW_OPEN( DW_STATUS, DW_STATUS_INTERCEPTION_NAK ) CHARGUID m_CharGuid; BYTE m_byErrorCode; PACKET_DW_CLOSE // ±æµå ·Î±× È®ÀÎ PACKET_DW_OPEN(DW_GUILD, DW_GUILD_WAREHOUSE_LOGLIST_REQ) GUILDGUID m_GuildGuid; CHARGUID m_ReqCharGuid; PACKET_DW_CLOSE PACKET_DW_OPEN(DW_GUILD, DW_GUILD_WAREHOUSE_LOGLIST_ANS) GUILDGUID m_GuildGuid; CHARGUID m_ReqCharGuid; BYTE m_byLogCount; // ·Î±× °³¼ö(ÇöÀç ÆäÀÌÁö¿¡¼­) BYTE m_byCurrentPage; // Àü¼Û µÇ´Â ÇöÀç ÆäÀÌÁö WORD m_byLogPageCount; // ·Î±× ¸ñ·ÏÀÇ ÃÑ ÆäÀÌÁö(ÇöÀç ·Î±× 123°³¸é 7ÆäÀÌÁö°¡ µÊ. m_byCurrentPage=m_byLogPageCount¸é ¼Û½Å ¿Ï·á) STRUCT_GUILDWAREHOUSE_LOGINFO m_LogList[MAX_GUILDWAREHOUSE_LOGPAGE_NUM]; WORD GetSize() { return (sizeof(MSG_DW_GUILD_WAREHOUSE_LOGLIST_ANS) - (sizeof(STRUCT_GUILDWAREHOUSE_LOGINFO) * (MAX_GUILDWAREHOUSE_LOGPAGE_NUM - m_byLogCount))); } PACKET_DW_CLOSE PACKET_DW_OPEN(DW_GUILD, DW_GUILD_WAREHOUSE_LOGLIST_NAK) CHARGUID m_ReqCharGuid; BYTE m_byErrorCode; PACKET_DW_CLOSE PACKET_DW_OPEN(DW_GUILD, DW_GUILD_SELECT_NOTICE_SYN) BYTE m_NoticeType; GUILDGUID m_GuildGuid; CHARGUID m_OperCharGuid; PACKET_DW_CLOSE PACKET_DW_OPEN(DW_GUILD, DW_GUILD_SELECT_NOTICE_ACK) BYTE m_GuildNoticeType; GUILDGUID m_GuildGuid; CHARGUID m_OperCharGuid; TCHAR m_szGuildNotice[MAX_GUILDNOTICE_LENGTH+1]; PACKET_DW_CLOSE PACKET_DW_OPEN(DW_GUILD, DW_GUILD_SELECT_NOTICE_NAK) DWORD m_dwErrorCode; PACKET_DW_CLOSE //Áö¿ª Á¡·ÉÀü º¸»ó/ȯºÒ ³»¿ª Á¶È¸ ÆÐŶ //_KR_001385_20091202_DOMINATION_RETURN_HEIM PACKET_DW_OPEN(DW_GUILD, DW_DOMINATION_FINDMONEY_SYN) eSYSTEM_MEMO_TYPE m_CostType; MAPCODE m_MapCode; CHARGUID m_RecvCharGuid; PACKET_DW_CLOSE PACKET_DW_OPEN(DW_GUILD, DW_DOMINATION_FINDMONEY_ACK) INT32 m_Result; MAPCODE m_DBMapCode; MAPCODE m_RequestMapCode; eSYSTEM_MEMO_TYPE m_CostType; eSYSTEM_MEMO_TYPE m_DBCostType; CHARGUID m_RecvCharGuid; CHARGUID m_DBCharGuid; ULONGLONG m_TenderCost; PACKET_DW_CLOSE //#ifdef _NA_0_20080612_WORLDSERVER_REFACTORING PACKET_DW_OPEN( DW_COMMUNITY, DW_COMMUNITY_INFO_SYN ) CHARGUID m_RequestCharGuid; PACKET_DW_CLOSE PACKET_DW_OPEN( DW_COMMUNITY, DW_COMMUNITY_INFO_ANS ) CHARGUID m_RequestCharGuid; BYTE m_RevengePoint; BOOL m_bWhisperFlag; PACKET_DW_CLOSE PACKET_DW_OPEN( DW_COMMUNITY, DW_COMMUNITY_INFO_NAK ) CHARGUID m_RequestCharGuid; PACKET_DW_CLOSE //#endif //_NA_0_20080612_WORLDSERVER_REFACTORING PACKET_DW_OPEN( DW_MEMO, DW_MULTIMEMO_SEND_SYN ) MMEMO_INFOS m_MMemoInfo; PACKET_DW_CLOSE PACKET_DW_OPEN( DW_MEMO, DW_MULTIMEMO_SEND_ACK ) DWORD m_dwCount; char m_SendName[MAX_CHARNAME_LENGTH+1]; MMEMO_RESULT m_arrResultInfoList[MMEMO_ERR_RESULT::MAX_RESULT_INFO]; PACKET_DW_CLOSE // declared by __NA_001359_20090619_HEIM_LOTTO_SYSTEM = { DW_LOTTO~ } //------------------------------------------------------------------------------ // DW_LOTTO : ÇÏÀÓ ·Î¶Ç Ä«Å×°í¸® //------------------------------------------------------------------------------ // ÇÏÀÓ ·Î¶Ç ÀÀ¸ð ³»¿ª ·Îµù ¿äû PACKET_DW_OPEN(DW_LOTTO, DW_LOTTO_LOAD_ENTRY_SYN) BYTE bFlag; // Ŭ¶óÀÌ¾ðÆ® Àü¿ë Ç÷¡±× CHARGUID iCharGuid; // Á¶È¸ÇÒ Ä³¸¯ÅÍ ID BYTE bNumRecent; // ÇöÀç ȸÂ÷ Æ÷ÇÔ ÃÖ´ë ¸î ȸÂ÷ÀÇ Á¤º¸¸¦ °¡Á®¿Ã °ÍÀÎÁö BYTE bInPreLoading; // 0ÀÌ ¾Æ´Ï¸é Ŭ¶óÀÌ¾ðÆ® ¿äûÀÌ ¾Æ´Ñ ÇÁ¸®·Îµù PACKET_DW_CLOSE // ÇÏÀÓ ·Î¶Ç ÀÀ¸ð ³»¿ª ·Îµù ÀÀ´ä PACKET_DW_OPEN(DW_LOTTO, DW_LOTTO_LOAD_ENTRY_ACK) BYTE bFlag; // Ŭ¶óÀÌ¾ðÆ® Àü¿ë Ç÷¡±× CHARGUID iCharGuid; // ij¸¯ÅÍ ID BYTE bNumRemainingTickets; // ³²Àº º¹±Ç ¿ëÁö °³¼ö BYTE bNumUsedTickets; // ÇöÀç ȸÂ÷¿¡ ÀÌ¹Ì ÀÀ¸ðÇÑ º¹±Ç ¿ëÁö °³¼ö DWORD dwEffectivePayment; // ÇöÀç À¯È¿ ¼Òºñ ÇÏÀÓ ¾×¼ö BYTE bInPreLoading; // ¿äû¿¡¼­ ÁöÁ¤µÈ ÇÁ¸®·Îµù Ç÷¡±× static const size_t MAX_ENTRIES = LOTTO_NUM_RECENT_DRAWS * LOTTO_MAX_TICKETS; WORD wNumEntries; // ÃÑ ¸î °³ÀÇ ÀÀ¸ð ³»¿ª µ¥ÀÌÅͰ¡ Æ÷ÇԵǾî ÀÖ´ÂÁö ServerLottoEntry entries[MAX_ENTRIES]; // ÀÀ¸ð ³»¿ª uint16_t GetSize() const { const size_t kMinSize = sizeof(*this) - sizeof(entries); return static_cast(kMinSize + sizeof(entries[0]) * wNumEntries); } PACKET_DW_CLOSE // ÇÏÀÓ ·Î¶Ç Á¤º¸ ·Îµù ¿äû PACKET_DW_OPEN(DW_LOTTO, DW_LOTTO_LOAD_SYN) BYTE bNumRecent; // ÇöÀç ȸÂ÷ Æ÷ÇÔ ÃÖ´ë ¸î ȸÂ÷ÀÇ Á¤º¸¸¦ °¡Á®¿Ã °ÍÀÎÁö PACKET_DW_CLOSE // ÇÏÀÓ ·Î¶Ç Á¤º¸ ·Îµù ÀÀ´ä PACKET_DW_OPEN(DW_LOTTO, DW_LOTTO_LOAD_ACK) WORD wCurrentDrawNum; // ÇöÀç ȸÂ÷ INT64 i64TotalAccum; // ÇöÀç ÃÑ Àû¸³¾× static const size_t MAX_RESULTS = LOTTO_NUM_RECENT_DRAWS; BYTE bNumResultRecords; // ÇöÀç ȸÂ÷ Æ÷ÇÔ ÃÑ ¸î ȸÀÇ ·Î¶Ç °á°ú µ¥ÀÌÅͰ¡ Æ÷ÇԵǾî ÀÖ´ÂÁö ServerLottoResult results[MAX_RESULTS]; // ÇöÀç ȸÂ÷ Æ÷ÇÔ Ãß÷ °á°ú PACKET_DW_CLOSE // ÇÏÀÓ ·Î¶Ç ´ç÷ÀÚ ¸ñ·Ï ·Îµù ¿äû PACKET_DW_OPEN(DW_LOTTO, DW_LOTTO_WINNER_LIST_SYN) WORD wDrawNum; // ȸÂ÷ ¹øÈ£ INT32 iPage; // ¿äûÇÒ ÆäÀÌÁö ¹øÈ£ PACKET_DW_CLOSE // ÇÏÀÓ ·Î¶Ç ´ç÷ÀÚ ¸ñ·Ï ·Îµù ÀÀ´ä PACKET_DW_OPEN(DW_LOTTO, DW_LOTTO_WINNER_LIST_ACK) WORD wDrawNum; // ȸÂ÷ ¹øÈ£ INT32 iPage; // ¿äûµÈ ÆäÀÌÁö ¹øÈ£ INT32 iMaxPage; // ÃÖ´ë ÆäÀÌÁö ¹øÈ£ (ÆäÀÌÁöÀÇ ÃÑ ¼ö) static const size_t MAX_RECORDS = LOTTO_NUM_WINNERS_PER_PAGE; INT32 iNumRecords; // ¸î °³ÀÇ ´ç÷ÀÚ Á¤º¸°¡ Æ÷ÇԵǾî ÀÖ´ÂÁö ServerLottoWinner winners[MAX_RECORDS]; // ´ç÷ÀÚ ¸ñ·Ï int GetSize() const { return (sizeof(MSG_DW_LOTTO_WINNER_LIST_ACK) \ - (sizeof(ServerLottoWinner) * (MAX_RECORDS - iNumRecords))); } PACKET_DW_CLOSE // ÇÏÀÓ ·Î¶Ç ÀÀ¸ð ó¸® ¿äû PACKET_DW_OPEN(DW_LOTTO, DW_LOTTO_SAVE_ENTRY_SYN) CHARGUID iCharGuid; // ij¸¯ÅÍ ID WORD wDrawNum; // ÀÀ¸ð ȸÂ÷ BYTE bIsAuto; // ÀÚµ¿ ¼±Åà ¿©ºÎ BYTE bStatus; // ÀÀ¸ð/´ç÷ »óÅ BYTE bPickedNum[LOTTO_NUM_PICKS]; // ÀÀ¸ð ¹øÈ£ PACKET_DW_CLOSE // ÇÏÀÓ ·Î¶Ç ÀÀ¸ð ó¸® ÀÀ´ä PACKET_DW_OPEN(DW_LOTTO, DW_LOTTO_SAVE_ENTRY_ACK) CHARGUID iCharGuid; // ij¸¯ÅÍ ID WORD wDrawNum; // ÀÀ¸ð ȸÂ÷ BYTE bIsAuto; // ÀÚµ¿ ¼±Åà ¿©ºÎ BYTE bStatus; // ÀÀ¸ð/´ç÷ »óÅ BYTE bPickedNum[LOTTO_NUM_PICKS]; // ÀÀ¸ð ¹øÈ£ INT32 iResult; // ½ÇÇà °á°ú (0:Á¤»ó, 1:¿À·ù) PACKET_DW_CLOSE // ÇÏÀÓ ·Î¶Ç Ãß÷ ¹× ÀÌ¿ù ó¸® ¿äû PACKET_DW_OPEN(DW_LOTTO, DW_LOTTO_ROLLOVER_SYN) WORD wCurrentDrawNum; // ÇöÀç ȸÂ÷ INT8 iNumWinners; // 1µî ´ç÷ÀÚ ¼ö INT64 i64Jackpot; // 1µî ´ç÷±Ý INT64 i64Prize2; // 2µî ´ç÷±Ý INT64 i64Prize3; // 3µî ´ç÷±Ý BYTE bWinningNum[LOTTO_NUM_PICKS]; // Â÷ȸ ´ç÷ ¹øÈ£ PACKET_DW_CLOSE // ÇÏÀÓ ·Î¶Ç Ãß÷ ¹× ÀÌ¿ù ó¸® ÀÀ´ä PACKET_DW_OPEN(DW_LOTTO, DW_LOTTO_ROLLOVER_ACK) INT32 iResult; // ½ÇÇà °á°ú (0:Á¤»ó, 1:¿À·ù) PACKET_DW_CLOSE // ÇÏÀÓ ·Î¶Ç ÃÑ Àû¸³¾× °»½Å Å뺸 PACKET_DW_OPEN(DW_LOTTO, DW_LOTTO_ACCUM_NTF) WORD wCurrentDrawNum; // ȸÂ÷ ¹øÈ£ INT64 i64TotalAccum; // ÃÑ Àû¸³¾× PACKET_DW_CLOSE // ÇÏÀÓ ·Î¶Ç º¹±Ç ¿ëÁö ¼ö Áõ°¡ ¿äû PACKET_DW_OPEN(DW_LOTTO, DW_LOTTO_ADD_TICKET_SYN) CHARGUID iCharGuid; // ij¸¯ÅÍ ID BYTE bNumRemainingTickets; // ³²Àº º¹±Ç ¿ëÁö ¼ö BYTE bMaxTickets; // ÃÖ´ë·Î º¸À¯ °¡´ÉÇÑ º¹±Ç ¿ëÁö ¼ö PACKET_DW_CLOSE // ÇÏÀÓ ·Î¶Ç º¹±Ç ¿ëÁö ¼ö Áõ°¡ ÀÀ´ä PACKET_DW_OPEN(DW_LOTTO, DW_LOTTO_ADD_TICKET_ACK) CHARGUID iCharGuid; // ij¸¯ÅÍ ID BYTE bNumRemainingTickets; // ³²Àº º¹±Ç ¿ëÁö ¼ö INT32 iResult; // ½ÇÇà °á°ú (0:Á¤»ó, 1:¿À·ù) PACKET_DW_CLOSE // ÇÏÀÓ ·Î¶Ç ´ç÷±Ý Áö±Þ ¿äû PACKET_DW_OPEN(DW_LOTTO, DW_LOTTO_REWARD_SYN) DWORD dwUserKey; // DB User Key INT64 i64Idx; // ÀÀ¸ð °Ç ID WORD wDrawNum; CHARGUID iCharGuid; // ij¸¯ÅÍ ID BYTE bStatus; INT64 i64Prize; PACKET_DW_CLOSE // ÇÏÀÓ ·Î¶Ç ´ç÷±Ý Áö±Þ ÀÀ´ä PACKET_DW_OPEN(DW_LOTTO, DW_LOTTO_REWARD_ACK) INT32 iResult; // ½ÇÇà °á°ú (0:Á¤»ó, 1:¿À·ù) DWORD dwUserKey; // DB User Key INT64 i64Idx; // ÀÀ¸ð °Ç ID WORD wDrawNum; CHARGUID iCharGuid; // ij¸¯ÅÍ ID BYTE bStatus; INT64 i64Prize; TCHAR szCharName[MAX_CHARNAME_LENGTH + 1]; // ij¸¯Å͸í PACKET_DW_CLOSE // ÇÏÀÓ ·Î¶Ç ´ç÷¾È³» ÂÊÁö ¸ñ·Ï ·Îµù ¿äû PACKET_DW_OPEN(DW_LOTTO, DW_LOTTO_NOTICE_LIST_SYN) CHARGUID iCharGuid; // ij¸¯ÅÍ ID BYTE bMaxCount; // °¡Á®¿Ã ÃÖ±Ù ÂÊÁöÀÇ ÃÖ´ë °³¼ö PACKET_DW_CLOSE // ÇÏÀÓ ·Î¶Ç ´ç÷¾È³» ÂÊÁö ¸ñ·Ï ·Îµù ÀÀ´ä PACKET_DW_OPEN(DW_LOTTO, DW_LOTTO_NOTICE_LIST_ACK) CHARGUID iCharGuid; static const size_t MAX_RECORDS = LOTTO_MAX_NOTICE; INT iNumRecords; // ¸î °³ÀÇ ÂÊÁö Ç׸ñÀÌ Æ÷ÇԵǾî ÀÖ´ÂÁö ( <=LOTTO_MAX_NOTICE ) LottoNoticeRecord notices[MAX_RECORDS]; // ´ç÷ ¾È³» ÂÊÁö ¸ñ·Ï int GetSize() const { return (sizeof(MSG_DW_LOTTO_NOTICE_LIST_ACK) \ - (sizeof(LottoNoticeRecord) * (MAX_RECORDS - iNumRecords))); } PACKET_DW_CLOSE // ÇÏÀÓ ·Î¶Ç ´ç÷¾È³» ÂÊÁö »èÁ¦ ¿äû PACKET_DW_OPEN(DW_LOTTO, DW_LOTTO_NOTICE_DEL_SYN) CHARGUID iCharGuid; // ¿äûÀÚ Ä³¸¯ÅÍ ID INT64 i64EntryIdx; // »èÁ¦ÇÒ ÂÊÁöÀÇ EntryIdx PACKET_DW_CLOSE // ÇÏÀÓ ·Î¶Ç ´ç÷¾È³» ÂÊÁö »èÁ¦ ÀÀ´ä PACKET_DW_OPEN(DW_LOTTO, DW_LOTTO_NOTICE_DEL_ACK) INT32 iResult; // 0: ¼º°ø, 2:·¹ÄÚµå¾øÀ½, 1:±âŸ¿À·ù CHARGUID iCharGuid1; // ¿äûÀÚ Ä³¸¯ÅÍ ID CHARGUID iCharGuid2; // ÀÀ¸ð °ÇÀÇ Ä³¸¯ÅÍ ID INT64 i64Prize; // »ó±Ý PACKET_DW_CLOSE // ij¸¯ÅÍ À¯È¿ ¼Òºñ ÇÏÀÓ ¾×¼ö ÀúÀå PACKET_DW_OPEN(DW_LOTTO, DW_LOTTO_PAYMENT_UPDATE_NTF) CHARGUID iCharGuid; // ij¸¯ÅÍ ID DWORD dwEffectivePayment; // ij¸¯ÅÍ ¼¼¼ÇÀÇ ÃÖÁ¾ À¯È¿ ¼Òºñ ÇÏÀÓ ¾×¼ö PACKET_DW_CLOSE ////////////////////////////////////////////////////////////////////////// //±×·ì¸Î±â ½Ã½ºÅÛ ////////////////////////////////////////////////////////////////////////// //±×·ì ¸Î±â ½Ã½ºÅÛ : ¸É¹ö Ãß°¡ °ü·Ã ÆÐŶ ±¸Á¶Ã¼ PACKET_DW_OPEN( DW_GROUP, DW_GROUP_ADD_SYN ) // : ¿äû CHARGUID m_fromCharGUID; //±×·ì ¸Î±â¸¦ ¿äûÇÑ CharGuid CHARGUID m_toCharGUID; //±×·ì ¸Î±â ¿äûÀ» ¹ÞÀº CharGuid eGROUP_STAT m_GroupSTATFirst; //»óÀ§ ¸É¹ö »óÅ ǥ½Ã eGROUP_STAT m_GroupSTATSecond; //ÇÏÀ§ ¸É¹ö »óÅ ǥ½Ã PACKET_DW_CLOSE PACKET_DW_OPEN( DW_GROUP, DW_GROUP_ADD_NAK ) // : ½ÇÆÐ CHARGUID m_fromCharGUID; //±×·ì ¸Î±â¸¦ ¿äûÇÑ CharGuid CHARGUID m_toCharGUID; BYTE m_byResult; //½ÇÆÐ °á°ú °ª PACKET_DW_CLOSE PACKET_DW_OPEN( DW_GROUP, DW_GROUP_ADD_ACK ) // : ¼º°ø CHARGUID m_fromCharGUID; //±×·ì ¸Î±â¸¦ ¿äûÇÑ CharGuid CHARGUID m_toCharGUID; //±×·ì ¸Î±â ¿äûÀ» ¹ÞÀº CharGuid PACKET_DW_CLOSE //±×·ì ¸Î±â ½Ã½ºÅÛ : ¸É¹ö »èÁ¦ °ü·Ã ÆÐŶ ±¸Á¶Ã¼ PACKET_DW_OPEN( DW_GROUP, DW_GROUP_DEL_SYN ) // : ¿äû CHARGUID m_fromCharGUID; //±×·ì ¸É¹ö »èÁ¦¸¦ ¿äûÇÑ CharGUID CHARGUID m_toCharGUID; //±×·ì ¸É¹ö¿¡¼­ »èÁ¦µÉ CharGUID PACKET_DW_CLOSE PACKET_DW_OPEN( DW_GROUP, DW_GROUP_DEL_NAK ) // : ½ÇÆÐ CHARGUID m_fromCharGUID; //±×·ì ¸É¹ö »èÁ¦¸¦ ¿äûÇÑ CharGUID CHARGUID m_toCharGUID; BYTE m_byResult; //½ÇÆÐ °á°ú °ª PACKET_DW_CLOSE PACKET_DW_OPEN( DW_GROUP, DW_GROUP_DEL_ACK ) // : ¼º°ø CHARGUID m_fromCharGUID; //±×·ì ¸É¹ö »èÁ¦¸¦ ¿äûÇÑ CharGUID CHARGUID m_toCharGUID; //±×·ì ¸É¹ö¿¡¼­ »èÁ¦µÉ CharGUID PACKET_DW_CLOSE //±×·ì ¸Î±â ½Ã½ºÅÛ : ¸É¹ö ¸®½ºÆ® ¿äû ÆÐŶ ±¸Á¶Ã¼ PACKET_DW_OPEN( DW_GROUP, DW_GROUP_LIST_REQ )// : ¿äû CHARGUID m_CharGUID; //±×·ì ¸É¹ö ¸®½ºÆ®¸¦ ¿äûÇÑ CharGUID PACKET_DW_CLOSE PACKET_DW_OPEN( DW_GROUP, DW_GROUP_LIST_ACK )// : ¼º°ø BYTE m_DataNum; //DB¿¡ ÀúÀåµÇ¾îÀÖ´À´À ±×·ì ¸É¹öÀÇ °³¼ö CHARGUID m_CharGUID; //±×·ì ¸É¹ö ¸®½ºÆ®¸¦ ¿äûÇÑ CharGUID STRUCT_GROUP_MEMBER_INFO m_GroupInfo[MAX_GROUP_MEMBER]; // (CHANGES) (f100425.3L) (WAVERIX) prevent buffer overrun process uint16_t GetSize() const { assert(m_DataNum <= _countof(m_GroupInfo)); // <- default fixed length -> <- variable length -> return (sizeof(*this) - sizeof(m_GroupInfo)) + (sizeof(m_GroupInfo[0]) * m_DataNum); } PACKET_DW_CLOSE //±×·ì ¸Î±â ½Ã½ºÅÛ : °æÇèÄ¡ ÃàÀû °ü·Ã ÆÐŶ ±¸Á¶Ã¼ PACKET_DW_OPEN( DW_GROUP, DW_GROUP_ACCUMEXP_CMD )// : ¿äû DWORD m_UserKey; //°æÇèÄ¡ ÃàÀûÀ» ¿äûÇÑ CharGUID CHARGUID m_HighCharGUID; //°æÇèÄ¡ ÃàÀû ¹ÞÀ» CharGUID DWORD m_AccumEXP; //ÃàÀûÇÒ °æÇèÄ¡ PACKET_DW_CLOSE //±×·ì ¸Î±â ½Ã½ºÅÛ : °æÇèÄ¡ ÃàÀû °ü·Ã ÆÐŶ ±¸Á¶Ã¼ PACKET_DW_OPEN( DW_GROUP, DW_GROUP_INIT_ACCUMEXP_CMD )// : ¿äû CHARGUID m_CharGUID; //°æÇèÄ¡ ÃàÀû ¹ÞÀ» CharGUID PACKET_DW_CLOSE //±×·ì ¸Î±â ½Ã½ºÅÛ : ±×·ì ¸É¹ö Á¤º¸ ¼¼ÆÃ PACKET_DW_OPEN(DW_GROUP, DW_GROUP_SET_MEMBERINFO_CMD)// : ¿äû DWORD m_UserKey; eGROUP_STAT m_HighGroupinfo; eGROUP_STAT m_LowGroupInfo; PACKET_DW_CLOSE #ifdef _NA_008283_20150511_NOTIFICATIONS_SYSTEM PACKET_DW_OPEN(DW_NOTIFICATION, DW_NOTIFICATION_ITEM_SYN) NotificationInfo info; PACKET_DW_CLOSE PACKET_DW_OPEN(DW_NOTIFICATION, DW_NOTIFICATION_CLEAR_SYN) PACKET_DW_CLOSE #endif // _NA_008283_20150511_NOTIFICATIONS_SYSTEM #pragma pack(pop)