#pragma once #pragma pack(1) /************************************************************************************************** ÀÛ¼ºÀÏ: 2008-07-18 ÀÛ¼ºÀÚ: ¹®»óÇö (youngmoon@webzen.co.kr) ¼³¸í: ºô¸µ¼­¹ö ÇÁ·ÎÅäÄÝ Á¤ÀÇ **************************************************************************************************/ #define MAX_ACCOUNTID 51 #define MAX_QUREY_LENGTH 1024 #define MAX_PCROOM_GAMECODE_LENGTH 3 #define PROTOCOL_CLIENT_LOGIN 0x01 #define PROTOCOL_SERVER_USERSTATUS 0x02 #define PROTOCOL_CLIENT_LOGOUT 0x03 #define PROTOCOL_CLIENT_INQUIRE 0x04 #define PROTOCOL_CLIENT_INQUIRE_MULTIUSER 0x05 #define PROTOCOL_SERVER_INQUIRE_MULTIUSER 0x06 #define PROTOCOL_CLIENT_INQUIRE_PERSON_DEDUCT 0x07 #define PROTOCOL_SERVER_INQUIRE_PERSON_DEDUCT 0x08 #define PROTOCOL_CLIENT_INQUIRE_PCROOM_DEDUCT 0x09 #define PROTOCOL_SERVER_INQUIRE_PCROOM_DEDUCT 0x0A #define PROTOCOL_SERVER_CHECK_LOGIN_USER 0x0B #define PROTOCOL_CLIENT_UPDATE_PCBANGIPADDR 0x0C #define PROTOCOL_SERVER_UPDATE_PCBANGIPADDR 0x0D namespace BillingProtocol { template class MSG_BASE { public: MSG_BASE() {} MSG_BASE(DWORD dwID) : dwProtocolID(dwID), dwPacketSize(sizeof( _subcls )) {} public: DWORD dwPacketSize; //ÆÐŶÀÇ Àüü »çÀÌÁî DWORD dwProtocolID; //ÆÐŶ ¾ÆÀ̵ð }; /// 2.3.1. ºô¸µ ·Î±×ÀÎ ¿äû /* (Client->Server) ·Î±×ÀÎ ÇÒ¶§ º¸³»´Â ÆÐŶ */ class MSG_CLIENT_LOGIN : public MSG_BASE { public: MSG_CLIENT_LOGIN() : MSG_BASE(PROTOCOL_CLIENT_LOGIN), dwAccountGUID(0), dwIPAddress(0), dwRoomGUID(0), dwGameCode(0), dwServerType(0) {} public: DWORD dwAccountGUID; //°èÁ¤ GUID DWORD dwIPAddress; //Ŭ¶óÀÌ¾ðÆ® ¾ÆÀÌÇÇ ÁÖ¼Ò DWORD dwRoomGUID; //PC ¹æ GUID(¾øÀ»°æ¿ì 0) //PC ¹æ GUID´Â °ÔÀÓ DB¿¡¼­ Á¶È¸ ÇÏ½Ã¸é µË´Ï´Ù. //(PC¹æ Á¤º¸´Â °ÔÀÓ DB¿Í ºô¸µ DB µ¿±âÈ­ µÊ) DWORD dwGameCode; //°ÔÀÓ ÄÚµå DWORD dwServerType; //¼­¹ö À¯Çü ÄÚµå : Å×¼·ÀÎÁö ¶óÀ̺êÀÎÁö ±¸ºÐ ÄÚµå }; /// 2.3.2. ºô¸µ ·Î±×¾Æ¿ô ¿äû /* (Client->Server) ·Î±×¾Æ¿ô ÇÒ¶§ º¸³»´Â ÆÐŶ */ class MSG_CLIENT_LOGOUT : public MSG_BASE { public: MSG_CLIENT_LOGOUT() : MSG_BASE(PROTOCOL_CLIENT_LOGOUT), dwBillingGUID(0) {} public: long dwBillingGUID; //·Î±×ÀÎ °á°ú·Î ¹ÞÀº GUID }; /// 2.3.3. ºô¸µ ·Î±×ÀÎ Á¤º¸ Á¶È¸ ¿äû /* (Client->Server) »ç¿ëÀÚ Á¤º¸ Á¶È¸ */ class MSG_CLIENT_INQUIRE : public MSG_BASE { public: MSG_CLIENT_INQUIRE() : MSG_BASE(PROTOCOL_CLIENT_INQUIRE), dwBillingGUID(0) {} public: long dwBillingGUID; //·Î±×ÀÎ °á°ú·Î ¹ÞÀº GUID }; /// 2.3.4. ·Î±×ÀΠó¸® °á°ú / ºô¸µ Á¤º¸ º¯°æ Å뺸 / °ú±Ý ¸¸·á·Î ÀÎÇÑ ·Î±× ¾Æ¿ô Å뺸 / ¿À·ù·Î ÀÎÇÑ °­Á¦ ·Î±× ¾Æ¿ô Å뺸 (2.3.1 ~ 2.3.3ÀÇ Ã³¸® °á°ú) /* (Server->Client) À¯Àú »óÅ Á¤º¸ º¯°æ */ class MSG_SERVER_USERSTATUS : public MSG_BASE { public: MSG_SERVER_USERSTATUS() : MSG_BASE(PROTOCOL_SERVER_USERSTATUS), dwAccountGUID(0), dwBillingGUID(0), RealEndDate(0), EndDate(0), dRestPoint(0), dRestTime(0), sDeductType(0), sAccessCheck(0), sResultCode(0) {} public: DWORD dwAccountGUID; //¾ÆÀ̵ð GUID long dwBillingGUID; //ºô¸µ¿¡¼­ »ç¿ëÇÏ´Â GUID (·Î±×¾Æ¿ô½Ã º¸³»Áà¾ß ÇÑ´Ù.) DWORD RealEndDate; //Á¤¾×Àϰæ¿ì ½ÇÁ¦ Á¾·áÀÏÀÚ (ƯÁ¤ ½Ã°£ Á¤¾×ÀÏ °æ¿ì Àû¿ë) DWORD EndDate; //Á¤¾×Àϰæ¿ì °áÁ¦ Á¾·áÀÏÀÚ double dRestPoint; //Á¤·®ÀÏ °æ¿ì ÀÜ¿©Æ÷ÀÎÆ® double dRestTime; //Á¤·®ÀÏ °æ¿ì ½Ã°£ (Sec) short sDeductType; //»ç¿ëÀÚ Â÷°¨ À¯Çü short sAccessCheck; //Á¢±Ù üũ °á°ú short sResultCode; //ó¸® °á°ú ÄÚµå }; /// 2.4.1. PC¹æ ¸ÖƼ Á¢¼Ó °¡´É ¿©ºÎ Á¶È¸ /* (Client->Server) ¸ÖƼÀ¯Àú °¡´ÉÇÑÁö Á¶È¸ */ class MSG_CLIENT_INQUIRE_MULTIUSER : public MSG_BASE { public: MSG_CLIENT_INQUIRE_MULTIUSER() : MSG_BASE(PROTOCOL_CLIENT_INQUIRE_MULTIUSER), dwRoomGUID(0) {} public: DWORD dwAccountID; DWORD dwRoomGUID; //°ÔÀÓ¹æ °íÀ¯ ¹øÈ£ }; //2.4.1. PC¹æ ¸ÖƼ Á¢¼Ó °¡´É ¿©ºÎ Á¶È¸ /* (Server->Client) ¸ÖƼÀ¯Àú °¡´ÉÇÑÁö Á¶È¸ */ class MSG_SERVER_INQUIRE_MULTIUSER : public MSG_BASE { public: MSG_SERVER_INQUIRE_MULTIUSER() : MSG_BASE(PROTOCOL_SERVER_INQUIRE_MULTIUSER), dwRoomGUID(0) {} public: DWORD dwAccountID; DWORD dwRoomGUID; //°ÔÀÓ¹æ °íÀ¯ ¹øÈ£ long result; //Á¶È¸ °á°ú }; /// 2.4.3. °³ÀÎ Á¤¾× Á¤·® º¸À¯ ¿©ºÎ Á¶È¸ /* (Client->Server) °³ÀÎÀÇ °ÔÀÓ º° »ç¿ë °¡´ÉÇÑ Á¤¾×,Á¤·® º¸À¯ ¿©ºÎ¸¦ Á¶È¸ÇÑ´Ù. */ class MSG_CLIENT_INQUIRE_PERSON_DEDUCT : public MSG_BASE { public: MSG_CLIENT_INQUIRE_PERSON_DEDUCT() : MSG_BASE(PROTOCOL_CLIENT_INQUIRE_PERSON_DEDUCT), dwAccountGUID(0), dwGameCode(0) { } public: DWORD dwAccountGUID; DWORD dwGameCode; }; /// 2.4.3. °³ÀÎ Á¤¾× Á¤·® º¸À¯ ¿©ºÎ Á¶È¸ /* (Server->Client) °³ÀÎÀÇ °ÔÀÓ º° »ç¿ë °¡´ÉÇÑ Á¤¾×,Á¤·® º¸À¯ ¿©ºÎ¸¦ Á¶È¸ÇÑ´Ù. */ class MSG_SERVER_INQUIRE_PERSON_DEDUCT : public MSG_BASE { public: MSG_SERVER_INQUIRE_PERSON_DEDUCT() : MSG_BASE(PROTOCOL_SERVER_INQUIRE_PERSON_DEDUCT), dwAccountGUID(0), dwGameCode(0) { } public: DWORD dwAccountGUID; DWORD dwGameCode; long ResultCode; }; /// 2.4.2. PC¹æ Á¤¾× Á¤·® º¸À¯ ¿©ºÎ Á¶È¸ /* (Client->Server) ƯÁ¤ PC¹æÀÇ °ÔÀÓ º° Á¤·® º¸À¯ ¿©ºÎ¸¦ Á¶È¸ÇÑ´Ù. */ class MSG_CLIENT_INQUIRE_PCROOM_DEDUCT : public MSG_BASE { public: MSG_CLIENT_INQUIRE_PCROOM_DEDUCT() : MSG_BASE(PROTOCOL_CLIENT_INQUIRE_PCROOM_DEDUCT), dwAccountGUID(0), dwRoomGUID(0), dwGameCode(0) { } public: DWORD dwAccountGUID; DWORD dwRoomGUID; DWORD dwGameCode; }; /// 2.4.2. PC¹æ Á¤¾× Á¤·® º¸À¯ ¿©ºÎ Á¶È¸ /* (Server->Client) ƯÁ¤ PC¹æÀÇ °ÔÀÓ º° Á¤·® º¸À¯ ¿©ºÎ¸¦ Á¶È¸ÇÑ´Ù. */ class MSG_SERVER_INQUIRE_PCROOM_DEDUCT: public MSG_BASE { public: MSG_SERVER_INQUIRE_PCROOM_DEDUCT() : MSG_BASE(PROTOCOL_SERVER_INQUIRE_PCROOM_DEDUCT), dwAccountGUID(0), dwRoomGUID(0), dwGameCode(0) { } public: DWORD dwAccountGUID; DWORD dwRoomGUID; DWORD dwGameCode; long ResultCode; }; /// 2.3.5. ·Î±×ÀÎ À¯Àú üũ /* (Server->Client) üũ ·Î±×ÀÎ À¯Àú ºô¸µ¿¡ ·Î±×ÀÎÇÑ À¯Àú Á¤º¸¸¦ ÀÎÁõ¼­¹ö¿¡ Àü¼Û ½ÇÁ¦·Î ÀÎÁõ¼­¹ö¿¡ ·Î±×ÀÎ Çß´ÂÁö üũÇϵµ·Ï ¾Ë·ÁÁÖ´Â ÀÎÅÍÆäÀ̽ºÀÌ´Ù. */ class MSG_SERVER_CHECK_LOGIN_USER: public MSG_BASE { public: MSG_SERVER_CHECK_LOGIN_USER() : MSG_BASE(PROTOCOL_SERVER_CHECK_LOGIN_USER), dwAccountGUID(0), dwBillingGUID(0) { } public: DWORD dwAccountGUID; long dwBillingGUID; }; /// 2.5.1. PC¹æ IPº¯°æ ¾Ë¸² /* Client->Server : PC¹æ IP º¯°æ IBS Manager¿¡¼­¸¸ »ç¿ëÇÏ°í °ÔÀÓ ½ºÆ©µð¿À´Â MSG_SERVER_UPDATE_PCBANGIPADDR ¸¦ ¹Þ´Â´Ù. */ class MSG_CLIENT_UPDATE_PCBANGIPADDR : public MSG_BASE { public: MSG_CLIENT_UPDATE_PCBANGIPADDR() : MSG_BASE(PROTOCOL_CLIENT_UPDATE_PCBANGIPADDR), dwRoomGUID(0), dwGameCode(0) {} public: DWORD dwRoomGUID; //°ÔÀÓ¹æ °íÀ¯ ¹øÈ£ DWORD dwGameCode; }; /// 2.5.1. PC¹æ IPº¯°æ ¾Ë¸² /* Server->Client : PC¹æ IP º¯°æ */ class MSG_SERVER_UPDATE_PCBANGIPADDR : public MSG_BASE { public: MSG_SERVER_UPDATE_PCBANGIPADDR() : MSG_BASE(PROTOCOL_SERVER_UPDATE_PCBANGIPADDR), dwRoomGUID(0), dwGameCode(0) {} public: DWORD dwRoomGUID; //°ÔÀÓ¹æ °íÀ¯ ¹øÈ£ DWORD dwGameCode; //°ÔÀÓ ÄÚµå }; } #pragma pack()