#ifndef PROTOCOL_IGC_H #define PROTOCOL_IGC_H ////////// // // Define // #ifdef _YJ_IGC #pragma pack(1) #define HEARTBEAT_INTERVAL 1000 * 60 // HEARTBEAT Àü¼Û °£°Ý, 1ºÐ¿¡ Çѹø¾¿ º¸³½´Ù /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ // // IGC Server <-> Game Client Packet Define // /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ #define MAX_FAQ_COUNT 5 // Ä«Å×°í¸®´ç ÃÖ´ë FAQ°³¼ö #define MAX_IP 18 // »ç¿ëÀÚ IP #define MAX_USER_ID 41 // »ç¿ëÀÚ ID #define MAX_USER_CHAR_NAME 41 // ij¸¯ÅÍ À̸§ #define MAX_CATEGORY_NAME 101 // Ä«Å×°í¸®¸í #define MAX_SUBCATEGORY_NAME 101 // ¼­ºê Ä«Å×°í¸®¸í #define MAX_FAQ_NAME 201 // FAQ¸í #define MAX_CLIENT_CHAT_STRING 1025 // Ŭ¶óÀÌ¾ðÆ® Ã¤ÆÃ ¸Þ½ÃÁö #define MAX_CLIENT_MESSAGE_STRING 1025 // ¸Þ½ÃÁö ´äº¯ #define MAX_USER_OPINION 201 // °í°´¸¸Á·µµ ¼³¹®½Ã °í°´ÀÇ°ß #define MAX_LOCATION 201 // À§Ä¡Á¤º¸ #define MAX_INQUIRY_TITLE 201 // ¹®ÀÇ Á¦¸ñ #define MAX_INQUIRY_CONTENT 2001 // ¹®ÀÇ ³»¿ë #define MAX_FAQ_CONTENT 2001 // FAQ ³»¿ë #define IGC_PACKET_HEADER_SIZE 4 // Çì´õ »çÀÌÁî #define DEFOULT_INQUIRY_TYPE 5 // °íÁ¤°ª. /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ // // IGC Server -> GameClient Error Code // /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ // CATEGORY ERROR CODE #define CATEGORY_SUCCESS_TRANSFER 0 // Àü¼Û ¼º°ø #define CATEGORY_EMPTY 1 // Ä«Å×°í¸® Á¤º¸ ¾øÀ½ // FAQ ERROR CODE #define FAQ_SUCCESS_TRANSFER 0 // Àü¼Û ¼º°ø #define FAQ_EMPTY 1 // FAQ Á¤º¸ ¾øÀ½ // REGISTER INQUIRY CODE #define ALREADY_REGISTERED 0 // ÀÌ¹Ì µî·ÏµÇ¾î ÀÖÀ½ #define USING_REGISTERED_NUMBER 1 // ÀÌ¹Ì »ç¿ëÁßÀÎ µî·Ï¹øÈ£ #define CANNOT_REGISTERED 2 // ¼­¹ö Àå¾Ö·Î ¹®Àǵî·Ï ½ÇÆÐ #define INQUIRY_OVERTIME 3 // 1ÀÏ ¹®ÀÇ Á¦ÇѼö Ãʰú #define INVLAID_PARAMETER 4 // µî·Ï Á¤º¸°¡ ¿Ã¹Ù¸£Áö ¾ÊÀ½. // CANCEL INQUIRY CODE #define CANCEL_SUCCESS 0 // ¹®ÀÇ Ãë¼Ò ¼º°ø #define CANCEL_FAILED 1 // ¹®ÀÇ Ãë¼Ò ½ÇÆÐ // 1:1 CHAT ERROR CODE #define INVALID_GM_CONNECTION 0 // À¯È¿ÇÏÁö ¾ÊÀº GM ¼¼¼Ç #define GM_DISCONNECTED 1 // GM ¼¼¼ÇÀÌ ²÷±è #define CANNOT_DB_CHANGE_STATE 2 // GM ¼¼¼ÇÀÌ ²÷±ä´ÙÀ½ ÇØ´ç ¹®ÀÇ »óź¯°æ ½ÇÆÐ // SATISFACTION ERROR CODE #define SATISFACTION_SUCCESS_REGISTER 0 // ¸¸Á·µµ °á°ú µî·Ï ¼º°ø #define SATISFACTION_FAILED_REGISTER 1 // ¸¸Á·µµ °á°ú µî·Ï ½ÇÆÐ // RECEIVE USER INFO ERROR CODE #define RECEIVE_SUCCESS_USER_INFO 0 // À¯ÀúÀÇ Á¤º¸ ¼ö½Å ¼º°ø #define RECEIVE_FAILED_USER_INFO 1 // À¯ÀúÀÇ Á¤º¸°¡ ¿Ã¹Ù¸£Áö ¾ÊÀ½(ÀçÀü¼Û ¿äû) #define ALREADY_CLIENT_CONNECTED 2 // ÀÌ¹Ì ¼­¹ö¿¡ Á¢¼ÓµÈ Ŭ¶óÀ̾ðÆ®ÀÓ #define FINISHED_CHAT 0 //À¯Àú¿Í äÆÃ »ó´ã Á¾·á. #define FINISHED_MESSAGE_NFT 1 //¸Þ¼¼Áö »ó´ã Á¾·á. /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ // // Game Client <-> IGC Server Protocol, 0x01XX // /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ #define C_TO_S_CATEGORY_REQ 0x0101 // CATEGORY ¸ñ·Ï ¿äû #define C_TO_S_SUBCATEGORY_REQ 0x0102 // SUB CATEGORY ¸ñ·Ï ¿äû #define S_TO_C_CATEGORY_ANS 0x0103 // CATEGORY ¸ñ·Ï Àü¼Û #define S_TO_C_SUBCATEGORY_ANS 0x0104 // SUBCATEGORY ¸ñ·Ï Àü¼Û #define S_TO_C_CATEGORY_ANS_FINISH 0x0105 // CATEGORY ¸ñ·Ï Àü¼Û¿Ï·á #define S_TO_C_SUBCATEGORY_ANS_FINISH 0x0106 // SUBCATEGORY ¸ñ·Ï Àü¼Û¿Ï·á #define C_TO_S_FAQ_REQ 0x0107 // FAQ Á¤º¸ ¿äû #define S_TO_C_FAQ_ANS 0x0108 // FAQ Á¤º¸ Àü¼Û #define S_TO_C_FAQ_ANS_FINISH 0x0109 // FAQ Á¤º¸ Àü¼Û¿Ï·á #define C_TO_S_REGISTER_INQUIRY_REQ 0x0110 // ¹®ÀÇ µî·Ï ¿äû #define S_TO_C_REGISTER_INQUIRY_FAILED 0x0111 // ¹®ÀÇ µî·Ï ½ÇÆÐ(½ÇÆÐ½Ã¸¸ Àü¼ÛÇÑ´Ù) #define C_TO_S_CANCEL_INQUIRY_REQ 0x0112 // ¹®ÀÇ Ãë¼Ò ¿äû #define S_TO_C_CANCEL_INQUIRY_ANS 0x0113 // ¹®ÀÇ Ãë¼Ò °á°ú(0:¼º°ø, 1:½ÇÆÐ) #define S_TO_C_WAITING_NUMBER_NTF 0x0114 // ¹®Àǵî·Ï½Ã »ý¼ºµÈ ´ë±âÇ¥ #define C_TO_S_UPDATE_WAITING_NUMBER_REQ 0x0115 // À¯ÀúÀÇ ´ë±âÇ¥ ¿äû #define S_TO_C_UPDATE_WAITING_NUMBER_ANS 0x0116 // À¯ÀúÀÇ ¿äû½Ã º¸³»´Â ´ë±âÇ¥ #define C_TO_S_CHAT_MESSAGE 0x0117 // À¯Àú äÆÃ¸Þ½ÃÁö #define S_TO_C_CHAT_MESSAGE 0x0118 // GM äÆÃ¸Þ½ÃÁö #define S_TO_C_INVALID_GM_SESSION 0x0119 // À¯È¿ÇÏÁö ¾ÊÀº GM ¼¼¼Ç°ú Åë½ÅÇÑ °æ¿ì #define S_TO_C_MESSAGE_NTF 0x0120 // ¸Þ½ÃÁö ´äº¯ #define S_TO_C_SATISFACTION_REQ 0x0121 // ¸¸Á·µµ Á¶»ç #define C_TO_S_SATISFACTION_ANS 0x0122 // ¸¸Á·µµ °á°ú #define S_TO_C_SATISFACTION_REGISTER_RESULT 0x0123 // ¸¸Á·µµ ÀúÀå °á°ú(0:¼º°ø, 1:½ÇÆÐ) //// °ÔÀÓ Å¬¶óÀÌ¾ðÆ®¿Í Ã³À½ Á¢¼ÓÀ» ¸ÎÀ»¶§ Ŭ¶óÀ̾ðÆ®ÀÇ Á¤º¸¸¦ ¿äû #define S_TO_C_USER_INFO_REQ 0x0124 // À¯ÀúÀÇ ±âº»Á¤º¸ ¿äû #define C_TO_S_USER_INFO_ANS 0x0125 // À¯ÀúÀÇ ±âº»Á¤º¸ #define S_TO_C_RECEIVE_USER_INFO_RESULT 0x0126 // À¯ÀúÀÇ Á¤º¸ ¼ö½Å »óÅ #define C_TO_S_HEARTBEAT 0x0127 // ´ë±âÁß¿¡ ÁÖ±âÀûÀ¸·Î Ä¿³Ø¼Ç ÀÌ»óÀ¯¹«¸¦ È®ÀÎ #define S_TO_C_CONGESTION_NTF 0x0128 // ¼­¹ö ÆøÁÖ·Î ¿¬°áÇÒ ¼ö ¾øÀ½À» ¾Ë¸² #define C_TO_S_CONGESTION_ANS 0x0129 // À§ ÆÐŶ¿¡ ´ëÇÑ ´ä½Å ÆÐŶ #define S_TO_C_DISCONNECT_NTF 0X0130 //¼­¹ö¿¡¼­ Ŭ¶óÀÌ¾ðÆ® ¼¼¼Ç Á¾·á¸¦ Å뺸. /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ // // Å×ÀÌºí ±¸Á¶Ã¼ Á¤ÀÇ // /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ // ¹®ÀÇ ¿äû½Ã ÀÛ¼ºµÉ ³»¿ë( C -> S ¸Þ½ÃÁö ) <== ¼öÁ¤µÈ DB·Î ¾÷µ¥ÀÌÆ® ÇØ¾ßÇÔ typedef struct sInquiry { BYTE btWorldID; // ¿ùµå ID BYTE btChannel; // ä³Î BYTE btInquiryType; // ¹®ÀÇ Å¸ÀÔ char szUserID[MAX_USER_ID]; // À¯Àú ID char szCharacterName[MAX_USER_CHAR_NAME]; // ij¸¯Å͸í BYTE btCategoryID; // ¹®ÀÇ Ä«Å×°í¸® ID BYTE btSubCategoryID; // ¹®ÀÇ ¼­ºê Ä«Å×°í¸® ID WORD wInquiryTitleLen; // ¹®ÀÇ Á¦¸ñ ±æÀÌ WORD wInquiryContentLen; // ¹®ÀÇ ³»¿ë ±æÀÌ char szInquiryTitle[MAX_INQUIRY_TITLE]; // ¹®ÀÇ Á¦¸ñ char szInquiryContent[MAX_INQUIRY_CONTENT] ; // ¹®ÀÇ ³»¿ë char szIP[MAX_IP]; // Ŭ¶óÀÌ¾ðÆ® IP char szLocation[MAX_LOCATION]; // À§Ä¡ Á¤º¸ sInquiry() { memset(this, 0, sizeof(*this)); } } INQUIRY, *LPINQUIRY; // FAQÆÐŶ ¼ö½Å½Ã °¢°¢ÀÇ FAQ¿¡ ´ëÇÑ Á¤º¸¸¦ ÀúÀåÇÑ´Ù typedef struct sFAQInfo { char szFaqName[MAX_FAQ_NAME]; // FAQ ¸í char szFaqContent[MAX_FAQ_CONTENT]; // FAQ ³»¿ë sFAQInfo() { Reset(); } void Reset() { memset(this, 0, sizeof(*this)); } } FAQINFO, *LPFAQINFO; ///////////////////////////////// // // // ¸Þ½ÃÁöº° ÆÐŶ Ŭ·¡½º Á¤ÀÇ // // // ///////////////////////////////// /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ // // Game Cilent <-> IGC Server ÆÐŶ Ŭ·¡½º // /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ // ¹®ÀÇ Ä«Å×°í¸® Á¤º¸ ¿äû class MSG_C_TO_S_CATEGORY_REQ : public IGC_MSG_HEADER8 { public: MSG_C_TO_S_CATEGORY_REQ() { // dwPacketSize = sizeof(*this); dwID = C_TO_S_CATEGORY_REQ; } ~MSG_C_TO_S_CATEGORY_REQ() { } }; // ¼­ºê ¹®ÀÇ Ä«Å×°í¸® Á¤º¸ ¿äû class MSG_C_TO_S_SUBCATEGORY_REQ : public IGC_MSG_HEADER8 // 2 depthÀÏ °æ¿ì { public: MSG_C_TO_S_SUBCATEGORY_REQ() { // dwPacketSize = sizeof(*this); dwID = C_TO_S_SUBCATEGORY_REQ; } ~MSG_C_TO_S_SUBCATEGORY_REQ() { } BYTE btCategoryID; // »óÀ§ Ä«Å×°í¸® ID }; // ¹®ÀÇ Ä«Å×°í¸® Á¤º¸ Àü¼Û class MSG_S_TO_C_CATEGORY_ANS : public IGC_MSG_HEADER8 { public: MSG_S_TO_C_CATEGORY_ANS() { Initialize(); } ~MSG_S_TO_C_CATEGORY_ANS() { } void Initialize() { // dwPacketSize = sizeof(*this); dwID = S_TO_C_CATEGORY_ANS; btCategoryID = 0; memset(&szCategoryName[0], 0, MAX_CATEGORY_NAME); } BYTE btCategoryID; // ¹®ÀÇ Ä«Å×°í¸® ID char szCategoryName[MAX_CATEGORY_NAME]; // ¹®ÀÇ Ä«Å×°í¸® Á¦¸ñ }; // ¼­ºê ¹®ÀÇ Ä«Å×°í¸® Á¤º¸ Àü¼Û class MSG_S_TO_C_SUBCATEGORY_ANS : public IGC_MSG_HEADER8 { public: MSG_S_TO_C_SUBCATEGORY_ANS() { Initialize(); } ~MSG_S_TO_C_SUBCATEGORY_ANS() { } void Initialize() { // dwPacketSize = sizeof(*this); dwID = S_TO_C_SUBCATEGORY_ANS; btCategoryID = 0; btSubCategoryID = 0; memset(&szSubCategoryName[0], 0, MAX_SUBCATEGORY_NAME); } BYTE btCategoryID; // ¹®ÀÇ Ä«Å×°í¸® ID BYTE btSubCategoryID; // ¼­ºê ¹®ÀÇ Ä«Å×°í¸® id char szSubCategoryName[MAX_SUBCATEGORY_NAME]; // ¼­ºê ¹®ÀÇ Ä«Å×°í¸® Á¦¸ñ }; // ¹®ÀÇ Ä«Å×°í¸® Á¤º¸ Àü¼Û¿Ï·á class MSG_S_TO_C_CATEGORY_ANS_FINISH : public IGC_MSG_HEADER8 { public: MSG_S_TO_C_CATEGORY_ANS_FINISH() : dwErrorCode(CATEGORY_SUCCESS_TRANSFER) { // dwPacketSize = sizeof(*this); dwID = S_TO_C_CATEGORY_ANS_FINISH; } ~MSG_S_TO_C_CATEGORY_ANS_FINISH() { } DWORD dwErrorCode; // ¿¡·¯ÄÚµå }; // ¼­ºê ¹®ÀÇ Ä«Å×°í¸® Á¤º¸ Àü¼Û¿Ï·á class MSG_S_TO_C_SUBCATEGORY_ANS_FINISH : public IGC_MSG_HEADER8 { public: MSG_S_TO_C_SUBCATEGORY_ANS_FINISH() : dwErrorCode(CATEGORY_SUCCESS_TRANSFER) { // dwPacketSize = sizeof(*this); dwID = S_TO_C_SUBCATEGORY_ANS_FINISH; } ~MSG_S_TO_C_SUBCATEGORY_ANS_FINISH() { } DWORD dwErrorCode; // ¿¡·¯ÄÚµå }; // FAQ Á¤º¸ ¿äû class MSG_C_TO_S_FAQ_REQ : public IGC_MSG_HEADER8 { public: MSG_C_TO_S_FAQ_REQ() { // dwPacketSize = sizeof(*this); dwID = C_TO_S_FAQ_REQ; } ~MSG_C_TO_S_FAQ_REQ() { } BYTE btFAQID; // FAQ ID BYTE btSubFAQID; // ÇÏÀ§ FAQ ID }; // FAQ Á¤º¸ Àü¼Û class MSG_S_TO_C_FAQ_ANS : public IGC_MSG_HEADER8 { public: MSG_S_TO_C_FAQ_ANS() : btFAQID(0), btSubFAQID(0), dwFAQCount(0), dwUseBufferSize(0) { // dwPacketSize = sizeof(*this); dwID = S_TO_C_FAQ_ANS; memset(&szFAQStream[0], 0, (MAX_FAQ_NAME + MAX_FAQ_CONTENT) * MAX_FAQ_COUNT); } ~MSG_S_TO_C_FAQ_ANS() { } void SetPacket(MSG_S_TO_C_FAQ_ANS* SendPacket) { SendPacket->btFAQID = btFAQID; SendPacket->btSubFAQID = btSubFAQID; SendPacket->dwFAQCount = dwFAQCount; SendPacket->dwUseBufferSize = dwUseBufferSize; memcpy(&SendPacket->szFAQStream[0], &szFAQStream[0], dwUseBufferSize); } bool SetFAQName(char* pFAQName, int nFAQNameLen) { if( dwFAQCount && dwUseBufferSize ) { if( szFAQStream[dwUseBufferSize - 1] != '/' ) { szFAQStream[dwUseBufferSize] = '/'; ++dwUseBufferSize; } } memcpy(&szFAQStream[dwUseBufferSize], pFAQName, nFAQNameLen); dwUseBufferSize += nFAQNameLen; szFAQStream[dwUseBufferSize] = ':'; // ±¸ºÐÀÚ »ðÀÔ ++dwUseBufferSize; return true; } bool SetFAQContent(char* pFAQContent, int nFAQContentLen) { if( !dwUseBufferSize ) { return false; } if( dwFAQCount && dwFAQCount ) { if( szFAQStream[dwUseBufferSize - 1] != ':' ) { szFAQStream[dwUseBufferSize] = ':'; ++dwUseBufferSize; } } memcpy(&szFAQStream[dwUseBufferSize], pFAQContent, nFAQContentLen); dwUseBufferSize += nFAQContentLen; ++dwFAQCount; return true; } BYTE btFAQID; // FAQ ID BYTE btSubFAQID; // ¼­ºê FAQ ID DWORD dwFAQCount; // FAQ °³¼ö DWORD dwUseBufferSize; // »ç¿ëÇÑ ¹öÆÛ »çÀÌÁî // ÇϳªÀÇ Ä«Å×°í¸®¿¡ 2°³ÀÌ»óÀÇ FAQ°¡ Á¸ÀçÇÒ¼ö ÀÖ°í ´Ù¼öÀÇ FAQ Á¸Àç½Ã¿¡´Â // °¢°¢À» ±¸º°ÇÒ¼ö ÀÖ´Â ±¸ºÐÀÚ¸¦ µÎ¾î 'ÇϳªÀÇ ÆÐŶ'¿¡ º¹»çÇÏ¿© Àü¼ÛÇÑ´Ù // ±¸ºÐÀÚ´Â ':', '/' °¡Áö¸¦ »ç¿ëÇϸç ':'´Â FAQÁ¦¸ñ°ú ³»¿ëÀ» ±¸ºÐÇϰí '/'´Â FAQÁ¤º¸(Á¦¸ñ+³»¿ë)¸¦ ±¸ºÐÇÑ´Ù // ÆÐŶ Format ex) 'FAQÁ¦¸ñ:FAQ³»¿ë/FAQÁ¦¸ñ:FAQ³»¿ë...' char szFAQStream[ (MAX_FAQ_NAME + MAX_FAQ_CONTENT) * MAX_FAQ_COUNT ]; // FAQÁ¤º¸¸¦ ÀúÀåÇÒ ¹è¿­ Stream }; // FAQ Á¤º¸ Àü¼Û¿Ï·á class MSG_S_TO_C_FAQ_ANS_FINISH : public IGC_MSG_HEADER8 { public: MSG_S_TO_C_FAQ_ANS_FINISH() : dwErrorCode(FAQ_SUCCESS_TRANSFER) { // dwPacketSize = sizeof(*this); dwID = S_TO_C_FAQ_ANS_FINISH; } ~MSG_S_TO_C_FAQ_ANS_FINISH() { } DWORD dwErrorCode; // ¿¡·¯ÄÚµå }; // ¹®ÀÇ µî·Ï ¿äû class MSG_C_TO_S_REGISTER_INQUIRY_REQ : public IGC_MSG_HEADER8 { public: MSG_C_TO_S_REGISTER_INQUIRY_REQ() { // dwPacketSize = sizeof(*this); dwID = C_TO_S_REGISTER_INQUIRY_REQ; memset(&User_Inquiry, 0, sizeof(INQUIRY)); // ±¸Á¶Ã¼ ÃʱâÈ­ } ~MSG_C_TO_S_REGISTER_INQUIRY_REQ() { } INQUIRY User_Inquiry; // À¯Àú ¹®ÀÇ ±¸Á¶Ã¼ }; // ¹®ÀÇ µî·Ï ½ÇÆÐ(µî·Ï ½ÇÆÐ½Ã º¸³½´Ù. ¼º°øÇÏ¸é ´ë±âÇ¥¸¦ º¸³½´Ù) class MSG_S_TO_C_REGISTER_INQUIRY_FAILED : public IGC_MSG_HEADER8 { public: MSG_S_TO_C_REGISTER_INQUIRY_FAILED() : dwErrorCode(0) { // dwPacketSize = sizeof(*this); dwID = S_TO_C_REGISTER_INQUIRY_FAILED; } ~MSG_S_TO_C_REGISTER_INQUIRY_FAILED() { } DWORD dwErrorCode; // ¿¡·¯ÄÚµå }; // ¹®ÀÇ Ãë¼Ò ¿äû class MSG_C_TO_S_CANCEL_INQUIRY_REQ : public IGC_MSG_HEADER8 { public: MSG_C_TO_S_CANCEL_INQUIRY_REQ() { // dwPacketSize = sizeof(*this); dwID = C_TO_S_CANCEL_INQUIRY_REQ; } ~MSG_C_TO_S_CANCEL_INQUIRY_REQ() { } }; // ¹®ÀÇ Ãë¼Ò °á°ú(0:¼º°ø, 1:½ÇÆÐ) class MSG_S_TO_C_CANCEL_INQUIRY_ANS : public IGC_MSG_HEADER8 { public: MSG_S_TO_C_CANCEL_INQUIRY_ANS() : dwResult(CANCEL_SUCCESS) { // dwPacketSize = sizeof(*this); dwID = S_TO_C_CANCEL_INQUIRY_ANS; } ~MSG_S_TO_C_CANCEL_INQUIRY_ANS() { } DWORD dwResult; // ¹®ÀÇ Ãë¼Ò °á°ú }; // ¹®Àǵî·Ï½Ã »ý¼ºÇÑ ´ë±âÇ¥ Àü¼Û class MSG_S_TO_C_WAITING_NUMBER_NTF : public IGC_MSG_HEADER8 { public: MSG_S_TO_C_WAITING_NUMBER_NTF() : dwWaitNum(0) { // dwPacketSize = sizeof(*this); dwID = S_TO_C_WAITING_NUMBER_NTF; } ~MSG_S_TO_C_WAITING_NUMBER_NTF() { } DWORD dwWaitNum; // ´ë±âÇ¥ }; // À¯ÀúÀÇ ´ë±âÇ¥ ¿äû class MSG_C_TO_S_UPDATE_WAITING_NUMBER_REQ : public IGC_MSG_HEADER8 { public: MSG_C_TO_S_UPDATE_WAITING_NUMBER_REQ() { // dwPacketSize = sizeof(*this); dwID = C_TO_S_UPDATE_WAITING_NUMBER_REQ; } ~MSG_C_TO_S_UPDATE_WAITING_NUMBER_REQ() { } }; // À¯ÀúÀÇ ¿äû½Ã º¸³»´Â ´ë±âÇ¥ class MSG_S_TO_C_UPDATE_WAITING_NUMBER_ANS : public IGC_MSG_HEADER8 { public: MSG_S_TO_C_UPDATE_WAITING_NUMBER_ANS() : dwWaitNum(0) { // dwPacketSize = sizeof(*this); dwID = S_TO_C_UPDATE_WAITING_NUMBER_ANS; } ~MSG_S_TO_C_UPDATE_WAITING_NUMBER_ANS() { } DWORD dwWaitNum; // ´ë±âÇ¥ }; // À¯Àú äÆÃ¸Þ½ÃÁö class MSG_C_TO_S_CHAT_MESSAGE : public IGC_MSG_HEADER8 { public: MSG_C_TO_S_CHAT_MESSAGE() : dwStrLen(0) { // dwPacketSize = sizeof(*this); dwID = C_TO_S_CHAT_MESSAGE; memset(&szStr[0], 0, MAX_CLIENT_CHAT_STRING); } ~MSG_C_TO_S_CHAT_MESSAGE() { } DWORD dwStrLen; // äÆÃ ¹®ÀÚ¿­ ±æÀÌ char szStr[MAX_CLIENT_CHAT_STRING]; // äÆÃ ¸Þ½ÃÁö ¹öÆÛ }; // GM äÆÃ ¸Þ½ÃÁö class MSG_S_TO_C_CHAT_MESSAGE : public IGC_MSG_HEADER8 { public: MSG_S_TO_C_CHAT_MESSAGE() : dwStrLen(0) { // dwPacketSize = sizeof(*this); dwID = S_TO_C_CHAT_MESSAGE; memset(&szStr[0], 0, MAX_CLIENT_CHAT_STRING); } ~MSG_S_TO_C_CHAT_MESSAGE() { } DWORD dwStrLen; // äÆÃ ¹®ÀÚ¿­ ±æÀÌ char szStr[MAX_CLIENT_CHAT_STRING]; // äÆÃ ¸Þ½ÃÁö ¹öÆÛ }; // À¯È¿ÇÏÁö ¾ÊÀº GM¼¼¼Ç class MSG_S_TO_C_INVALID_GM_SESSION : public IGC_MSG_HEADER8 { public: MSG_S_TO_C_INVALID_GM_SESSION() : dwErrorCode(INVALID_GM_CONNECTION) { // dwPacketSize = sizeof(*this); dwID = S_TO_C_INVALID_GM_SESSION; } ~MSG_S_TO_C_INVALID_GM_SESSION() { } DWORD dwErrorCode; // ¿¡·¯ÄÚµå }; // ¸Þ½ÃÁö ´äº¯ class MSG_S_TO_C_MESSAGE_NTF : public IGC_MSG_HEADER8 { public: MSG_S_TO_C_MESSAGE_NTF() : dwStrLen(0) { // dwPacketSize = sizeof(*this); // ¸Þ½ÃÁö´Â °íÁ¤±æÀÌ·Î º¸³¿ dwID = S_TO_C_MESSAGE_NTF; memset(&szStr[0], 0, MAX_CLIENT_MESSAGE_STRING); } ~MSG_S_TO_C_MESSAGE_NTF() { } DWORD dwStrLen; // ¸Þ½ÃÁö ±æÀÌ char szStr[MAX_CLIENT_MESSAGE_STRING]; // ¸Þ½ÃÁö ¹öÆÛ }; // ¸¸Á·µµ Á¶»ç class MSG_S_TO_C_SATISFACTION_REQ : public IGC_MSG_HEADER8 { public: MSG_S_TO_C_SATISFACTION_REQ() : btGrade(0) { // dwPacketSize = sizeof(*this); dwID = S_TO_C_SATISFACTION_REQ; } ~MSG_S_TO_C_SATISFACTION_REQ() { } BYTE btGrade; // ¸¸Á·µµ Á¡¼ö }; // ¸¸Á·µµ °á°ú class MSG_C_TO_S_SATISFACTION_ANS : public IGC_MSG_HEADER8 { public: MSG_C_TO_S_SATISFACTION_ANS() : btGrade(0) { // dwPacketSize = sizeof(*this); dwID = C_TO_S_SATISFACTION_ANS; memset(&szUser_Opinion[0], 0, MAX_USER_OPINION); } ~MSG_C_TO_S_SATISFACTION_ANS() { } BYTE btGrade; // ¸¸Á·µµ Á¡¼ö char szUser_Opinion[MAX_USER_OPINION]; // °í°´ ÀÇ°ß }; // ¸¸Á·µµ µî·Ï °á°ú(0:¼º°ø, 1:½ÇÆÐ) class MSG_S_TO_C_SATISFACTION_REGISTER_RESULT : public IGC_MSG_HEADER8 { public: MSG_S_TO_C_SATISFACTION_REGISTER_RESULT() : dwResult(SATISFACTION_SUCCESS_REGISTER) // Default·Î ¼º°ø { // dwPacketSize = sizeof(*this); dwID = S_TO_C_SATISFACTION_REGISTER_RESULT; } ~MSG_S_TO_C_SATISFACTION_REGISTER_RESULT() { } DWORD dwResult; // ¸¸Á·µµ ÀúÀå °á°ú }; // °ÔÀÓ Å¬¶óÀÌ¾ðÆ® Á¢¼Ó½Ã °ÔÀÓ Å¬¶óÀ̾ðÆ®ÀÇ Á¤º¸ ¿äû class MSG_S_TO_C_USER_INFO_REQ : public IGC_MSG_HEADER8 { public: MSG_S_TO_C_USER_INFO_REQ() { // dwPacketSize = sizeof(*this); dwID = S_TO_C_USER_INFO_REQ; } ~MSG_S_TO_C_USER_INFO_REQ() { } }; // °ÔÀÓ Å¬¶óÀ̾ðÆ®ÀÇ Á¤º¸¸¦ Àü¼Û class MSG_C_TO_S_USER_INFO_ANS : public IGC_MSG_HEADER8 { public: MSG_C_TO_S_USER_INFO_ANS() { // dwPacketSize = sizeof(*this); dwID = C_TO_S_USER_INFO_ANS; memset(&szUserID[0], 0, MAX_USER_ID); memset(&szCharacterName[0], 0, MAX_USER_CHAR_NAME); } ~MSG_C_TO_S_USER_INFO_ANS() { } char szUserID[MAX_USER_ID]; // À¯Àú ID char szCharacterName[MAX_USER_CHAR_NAME]; // ij¸¯ÅÍ À̸§ }; // °ÔÀÓ Å¬¶óÀÌ¾ðÆ® Á¤º¸ ¼ö½Å °á°ú class MSG_S_TO_C_RECEIVE_USER_INFO_RESULT : public IGC_MSG_HEADER8 { public: MSG_S_TO_C_RECEIVE_USER_INFO_RESULT() : dwErrorCode(RECEIVE_SUCCESS_USER_INFO) { // dwPacketSize = sizeof(*this); dwID = S_TO_C_RECEIVE_USER_INFO_RESULT; } ~MSG_S_TO_C_RECEIVE_USER_INFO_RESULT() { } DWORD dwErrorCode; // ¿¡·¯ÄÚµå }; class MSG_C_TO_S_HEARTBEAT : public IGC_MSG_HEADER8 { public: MSG_C_TO_S_HEARTBEAT() { // dwPacketSize = sizeof(*this); dwID = C_TO_S_HEARTBEAT; } ~MSG_C_TO_S_HEARTBEAT() { } }; class MSG_S_TO_C_CONGESTION_NTF : public IGC_MSG_HEADER8 { public: MSG_S_TO_C_CONGESTION_NTF() { // dwPacketSize = sizeof(*this); dwID = S_TO_C_CONGESTION_NTF; } ~MSG_S_TO_C_CONGESTION_NTF() { } }; class MSG_C_TO_S_CONGESTION_ANS : public IGC_MSG_HEADER8 { public: MSG_C_TO_S_CONGESTION_ANS() { // dwPacketSize = sizeof(*this); dwID = C_TO_S_CONGESTION_ANS; } ~MSG_C_TO_S_CONGESTION_ANS() { } }; class MSG_S_TO_C_DISCONNECT_NTF : public IGC_MSG_HEADER8 { public: MSG_S_TO_C_DISCONNECT_NTF() { dwID = S_TO_C_DISCONNECT_NTF; } ~MSG_S_TO_C_DISCONNECT_NTF() { } DWORD dwErrorCode; //Á¾·áÄÚµå. }; #pragma pack() #endif //_YJ_IGC #endif