#ifndef _CHAR_ITEM_PACKET_H_ #define _CHAR_ITEM_PACKET_H_ // CharItemPacket.h // ItemStructure.hÀ» Æ÷ÇÔÇØ¾ß ÇÔ. (Áý±â, ¶³±¸±â, ) #include #include #include "CharItemPacketStruct.h" #pragma pack(1) // Áý±â ÆÐŶ (ÀÀ´ä ÇÊ¿ä) typedef struct PktPU* LPPktPU; struct PktPU : public PktBase { unsigned long m_dwCharID; // ij¸¯ÅÍ ¾ÆÀ̵ð unsigned long m_dwObjectID; // ¿ÀºêÁ§Æ® ¾ÆÀ̵ð Item::ItemPos m_itemPos; // ¾ÆÀÌÅÛ À§Ä¡ }; // Áý±â ÆÐŶ Ack typedef struct PktPUAck* LPPktPUAck; struct PktPUAck : public PktBase { enum ObjectType { Item = 0, Gold = 1 }; enum PktPUAckError { SERVER_ERROR = 1, FAIL_GET_CELL = 2, FAIL_GET_ITEM = 3, FAIL_PICKUP_INVEN = 4 }; unsigned long m_dwCharID; // ij¸¯ÅÍ ¾ÆÀ̵ð unsigned long m_dwObjectID; // ¿ÀºêÁ§Æ® ¾ÆÀ̵ð unsigned long m_dwSize; // ObjectÅ©±â(ȤÀº µ· ¾ç) Item::ItemPos m_itemPos; // ¾ÆÀÌÅÛÀÌ ³õÀÏ À§Ä¡ unsigned char m_cType; // ObjectÁ¾·ù(¾ÆÀÌÅÛ È¤Àº µ·) unsigned char m_cNum; // ¾ÆÀÌÅÛ °³¼ö }; // Áý±â Á¤º¸ typedef struct PktPUInfo PktPUInfo, *LPPktPUInfo; struct PktPUInfo : public PktBase { unsigned long m_dwCharID; // ij¸¯ÅÍ Á¤º¸ unsigned long m_dwObjectID; // ¿ÀºêÁ§Æ® ¾ÆÀ̵ð }; // ¶³±¸±â (ÀÀ´ä ÇÊ¿ä) typedef struct PktPD* LPPktPD; struct PktPD : public PktBase { unsigned long m_dwCharID; // ij¸¯ÅÍ ¾ÆÀ̵ð Item::ItemPos m_itemPos; // ¾ÆÀÌÅÛ À§Ä¡ ¹× À妽º unsigned char m_cNum; // ¾ÆÀÌÅÛ °³¼ö }; // ¶³±¸±â Ack typedef struct PktPDAck* LPPktPDAck; struct PktPDAck : public PktBase { enum PktPDAckError { SERVER_ERROR = 1, FAIL_GET_CELL = 2, FAIL_DROP_INVEN = 3, FAIL_DROP_FIELD = 4, FAIL_ZERO_ITEM = 5 }; unsigned long m_dwCharID; // ij¸¯ÅÍ ¾ÆÀ̵ð FieldObject m_FieldObject; // FieldObject Item::ItemPos m_itemPos; // ¾ÆÀÌÅÛ À§Ä¡ ¹× À妽º }; // ¶³±¸±â Á¤º¸ typedef struct PktPDInfo* LPPktPDInfo; struct PktPDInfo : public PktBase { unsigned long m_dwCharID; FieldObject m_FieldObject; }; // ¼¿ Á¤º¸ typedef struct PktCeInfo* LPPktCeInfo; struct PktCeInfo : public PktBase { unsigned char m_cObjectNum; // ¿ÀºêÁ§Æ® °³¼ö }; // ¾ÆÀÌÅÛ Ã³¸® ÆÐŶ (ÀÀ´ä ÇÊ¿ä) typedef struct PktTI* LPPktTI; struct PktTI : public PktBase { enum PktTIError { SERVER_ERROR = 1, FAIL_MOVE = 2 }; unsigned long m_dwCharID; // ij¸¯ÅÍ ¾ÆÀ̵ð TakeType m_TakeType; // ¾ÆÀÌÅÛ Áý±â ±¸Á¶Ã¼ }; // µ· ó¸® ÆÐŶ (ÀÀ´ä ÇÊ¿ä) typedef struct PktTG* LPPktTG; struct PktTG : public PktBase { enum PktTGError { SERVER_ERROR = 1, FAIL_MOVE = 2, GOLD_OVERFLOW = 3 }; unsigned long m_dwCharID; // ij¸¯ÅÍ ¾ÆÀ̵ð unsigned long m_dwGold; // µ· ¾×¼ö unsigned char m_cSrcPos : 4; // SrcÀ§Ä¡ - TakeType ÂüÁ¶ unsigned char m_cDstPos : 4; // DstÀ§Ä¡ - TakeType ÂüÁ¶ }; // ¾ÆÀÌÅÛ Ã³¸® ÆÐŶ (ÀÀ´ä ÇÊ¿ä) typedef struct PktTIs* LPPktTIs; struct PktTIs : public PktBase { enum PktTlsError { SERVER_ERROR = 1 }; unsigned long m_dwCharID; // ij¸¯ÅÍ ¾ÆÀ̵ð unsigned char m_TakeNum; // ¾ÆÀÌÅÛ Áý±â ¼ýÀÚ }; // ¾ÆÀÌÅÛ ½º¿Ò ÆÐŶ typedef struct PktSwI* LPPktSwI; struct PktSwI : public PktBase { enum PktSwlError { SERVER_ERROR = 1, FAIL_SRC_MOVE = 2, FAIL_DST_MOVE = 3, CANT_SWAP = 4 }; unsigned long m_dwCharID; // - ij¸¯ÅÍ ¾ÆÀ̵ð TakeType m_SwapSrc; // - ½º¿Ò ¼Ò½º ¾ÆÀÌÅÛ Áý±â ±¸Á¶Ã¼ TakeType m_SwapDst; // - ½º¿Ò ´ë»ó ¾ÆÀÌÅÛ Áý±â ±¸Á¶Ã¼ }; // ¾ÆÀÌÅÛ °Å·¡ ÆÐŶ typedef struct PktTr* LPPktTr; struct PktTr : public PktBase { enum PktTrError { NO_SERVER_ERR = 0, SERVER_ERROR = 1, FAIL_DROP_INVEN = 2, WRONG_NPC = 3, FAIL_ITEM_BUY = 4, FAIL_PUT_INVEN = 5 }; unsigned long m_dwCustomerID; // ¼Õ´Ô ¾ÆÀ̵ð unsigned long m_dwOwnerID; // »óÁ¡ ÁÖÀÎ ¾ÆÀ̵ð (NPC ¶Ç´Â ij¸¯ÅÍ) unsigned short m_wBuyItemID; // »ç·Á°í ÇÏ´Â ¾ÆÀÌÅÛ Á¾·ù ID (0ÀÌ¸é ÆÈ±â) TakeType m_TakeType; // ¾ÆÀÌÅÛ Áý±â ±¸Á¶Ã¼ }; // ¾ÆÀÌÅÛ °Å·¡ ÆÐŶ Ack (+ °¡º¯±æÀÌ ¾ÆÀÌÅÛ) typedef struct PktTrAck* LPPktTrAck; struct PktTrAck : public PktBase { unsigned long m_dwCharID; // ij¸¯ÅÍ ¾ÆÀ̵ð unsigned long m_dwNPCID; // »óÁ¡ NPC ¾ÆÀ̵ð unsigned long m_dwGold; // ÇöÀç ¼ÒÁö±Ý unsigned short m_wSize; // ¾ÆÀÌÅÛ Å©±â(0 = ÆÈ±â, 0ÀÌ ¾Æ´Ï¸é »ç±â) Item::ItemPos m_itemPos; // ¾ÆÀÌÅÛ À§Ä¡ unsigned char m_cNum; // ¾ÆÀÌÅÛ °¹¼ö }; // ¾ÆÀÌÅÛÀÇ ¼ö¸® ÆÐŶ (ÀÀ´ä ÇÊ¿ä) typedef struct PktRpI* LPPktRpI; struct PktRpI : public PktBase { enum Pos { EQUIPMENT = 1, INVENTORY = 2, EQUIPMENT_ALL = 3, INVENTORY_ALL = 4, }; unsigned long m_dwCharID; // ij¸¯ÅÍ ¾ÆÀ̵ð unsigned long m_dwGold; // ¼ö¸® ºñ¿ë Item::ItemPos m_itemPos; // ¼ö¸® ¾ÆÀÌÅÛ À§Ä¡ }; // ¾ÆÀÌÅÛÀÇ »ç¿ë ÆÐŶ (ÀÀ´ä ÇÊ¿ä) typedef struct PktUI* LPPktUI; struct PktUI : public PktBase { enum PktUIAck { SERVER_ERROR = 1, USE_FAILED = 2 }; unsigned long m_dwSender; // »ç¿ëÀÚ ¾ÆÀ̵ð unsigned long m_dwRecver; // ´ë»óÀÚ ¾ÆÀ̵ð Item::ItemPos m_itemPos; // »ç¿ë ¾ÆÀÌÅÛ À§Ä¡ }; // ¿ÀºêÁ§Æ® ´øÁö±â ÆÐŶ ( ÀÀ´ä ÇÊ¿ä ) typedef struct PktCO* LPPktCO; struct PktCO : public PktBase { CastObject m_sCastObject; unsigned long m_dwSenderID; // ´øÁö´Â »ç¶÷ unsigned long m_dwReceiverID; // ¹Þ´Â »ç¶÷ }; // ¿ÀºêÁ§Æ® ´øÁö±â ÆÐŶ (Cast Object) typedef struct PktCOInfo* LPPktCOInfo; struct PktCOInfo : public PktBase { CastObject m_sCastObject; unsigned long m_dwSenderID; // ´øÁö´Â »ç¶÷ unsigned long m_dwReceiverID; // ¹Þ´Â »ç¶÷ }; // ¼ÒÄÏ ¼³Ä¡ ÆÐŶ typedef struct PktIS* LPPktIS; struct PktIS : public PktBase { unsigned long m_dwCharID; Item::ItemPos m_equipPos; // Àåºñ À§Ä¡ Item::ItemPos m_gemPos; // º¸¼® À§Ä¡ }; // ¼ÒÄÏ ¼³Ä¡ ÆÐŶ Ack (+ ¼ÒÄÏÀÌ ¼³Ä¡µÈ Àåºñ ¾ÆÀÌÅÛ) typedef struct PktISAck* LPPktISAck; struct PktISAck : public PktBase { unsigned long m_dwCharID; Item::ItemPos m_equipPos; // Àåºñ À§Ä¡ Item::ItemPos m_gemPos; // º¸¼® À§Ä¡ unsigned char m_wSize; // ¾ÆÀÌÅÛ Å©±â }; // ¾÷±×·¹ÀÌµå ¾ÆÀÌÅÛ typedef struct PktUgI* LPPktUgI; struct PktUgI : public PktBase { unsigned long m_dwCharID; // ij¸¯ÅÍ ¾ÆÀ̵ð unsigned char m_cMineralNum; // ±¤¹° ¼ýÀÚ }; // ¾÷±×·¹ÀÌµå ¾ÆÀÌÅÛ Ack (+ ¾ÆÀÌÅÛ ±¸Á¶Ã¼) typedef struct PktUgIAck* LPPktUgIAck; struct PktUgIAck : public PktBase { unsigned long m_dwCharID; // ij¸¯ÅÍ ¾ÆÀ̵ð unsigned char m_cSize; // ¾ÆÀÌÅÛ Å©±â }; // ¾ÆÀÌÅÛ ½ºÇø´ ¿äû (ÀÀ´ä ÇÊ¿ä) typedef struct PktSplt* LPPktSplt; struct PktSplt : public PktBase { unsigned long m_dwCharID; // ij¸¯ÅÍ ¾ÆÀ̵ð TakeType m_TakeType; // ¾ÆÀÌÅÛ Áý±â ±¸Á¶Ã¼ // ( Src : ³ª´­ ¾ÆÀÌÅÛ, Dst : ³ª´©¾î¼­ ³õÀ» ÀÚ¸®(Ç×»ó ºñ¾î ÀÖ¾î¾ß ÇÔ), // Num : ³ª´­ ¾ÆÀÌÅÛ °³¼ö) }; // ¾ÆÀÌÅÛ ½ºÇø´ Ack (ÀÀ´ä ÇÊ¿ä) (+ °¡º¯±æÀÌ ¾ÆÀÌÅÛ ±¸Á¶Ã¼ (³ª´©¾î¼­ »ý±ä ¾ÆÀÌÅÛ Á¤º¸)) typedef struct PktSpItAck* LPPktSpItAck; struct PktSpItAck : public PktBase { enum PktSpltAckError { SERVER_ERROR = 1, FAIL_SPLIT = 2 }; unsigned long m_dwCharID; // ij¸¯ÅÍ ¾ÆÀ̵ð TakeType m_TakeType; // ¾ÆÀÌÅÛ Áý±â ±¸Á¶Ã¼ unsigned char m_cSize; // ¾ÆÀÌÅÛ Å©±â }; // Äü ½½·Ô À̵¿ (ÀÀ´ä ÇÊ¿ä) typedef struct PktQSM* LPPktQSM; struct PktQSM : public PktBase { enum PktQSMError { SERVER_ERROR = 1, FAIL_MOVE = 2 }; TakeType m_TakeType; }; // ½ºÀ§Ä¡ ÇÚµå typedef struct PktSwH* LPPktSwH; struct PktSwH : public PktBase { unsigned char m_cSelect; // ¼±Åà ÇÚµå ( 1 = ¹«±â1 & ¹æÆÐ1, 2 = ¹«±â2 & ¹æÆÐ2 ) }; // ±³È¯ ¸í·É // // ¸í·É : // 0 = Á¦¾È, 1 = ¼ö¶ô, 2 = °ÅÀý, 3 = È®ÀÎ, 4 = È®ÀÎ Ãë¼Ò, 5 = °Å·¡ ¼º¸³, 6 = °Å·¡ Ãë¼Ò // // ¿¡·¯ : // 0 = ¼º°ø, 1 = ¼­¹ö ¿¡·¯, 2 = ÀÌ¹Ì ±³È¯ÁßÀΠij¸¯ÅÍ¿¡°Ô ±³È¯ ½Åû, // 3 = ¾çÂÊ ¸ðµÎ È®ÀÎÇÏÁö ¾ÊÀº »óÅ¿¡¼­ °Å·¡ ¼º¸³, 4 = °ÅºÎ ¿É¼ÇÀÌ ÄÑÁø »óÅ // typedef struct PktExC* LPPktExC; struct PktExC : public PktBase { enum ExchageCmd { EXC_PROPOSE = 0, EXC_ACCEPT = 1, EXC_REFUSE = 2, EXC_OK = 3, EXC_CANCEL = 4, EXC_EXCHANGE = 5, EXC_QUIT = 6, EXC_LOCK = 7, EXC_UNLOCK = 8 }; enum PktExCError { NO_SERVER_ERR = 0, SERVER_ERROR = 1, FAIL_EXCHANGING_CHAR = 2, FAIL_NOT_ALL_OK = 3, FAIL_REJECT = 4 }; unsigned long m_dwSenderID; // º¸³½ÀÌ ¾ÆÀ̵ð unsigned long m_dwRecverID; // ¹Þ´ÂÀÌ ¾ÆÀ̵ð unsigned char m_cCmd; // ¸í·É }; // ±³È¯ ¾ÆÀÌÅÛ (+ ¾ÆÀÌÅÛ ±¸Á¶Ã¼) typedef struct PktExI* LPPktExI; struct PktExI : public PktBase { enum Type { Item = 0, Gold = 1, Remove = 2 }; unsigned long m_dwCharID; // ij¸¯ÅÍ ¾ÆÀ̵ð unsigned long m_dwSize; // ¾ÆÀÌÅÛ µ¥ÀÌÅÍ Å©±â(ȤÀº µ· ¾ç) Item::ItemPos m_itemPos; // ¾ÆÀÌÅÛ À§Ä¡ unsigned char m_cType; // ¾ÆÀÌÅÛ Á¾·ù(¾ÆÀÌÅÛ = 0, µ· = 1) unsigned char m_cNum; // ¾ÆÀÌÅÛ °³¼ö(stack¾ÆÀÌÅÛÀÎ °æ¿ì, °³¼ö¸¸ º¸³¿) }; namespace Deposit { enum Const { PASSWORD_LENGTH = 4 }; }; // â°í ÆÐŶ (GameServer <--> DBAgent) // ·Î±×Àνÿ¡, PktDBUpdate¸¦ º¸³½ ÈÄ, PktDepositUpdateDB¸¦ ¿©·¯°³ ÁØ´Ù. // ¸¶Áö¸· ÆÐŶ¿¡ m_bUpdateComplete¸¦ true·Î SetÇØ ÁØ´Ù. // °ÔÀÓ Áß¿¡´Â °ÔÀÓ ¼­¹ö°¡ ¼ö½Ã·Î Update¸¦ ÇÑ´Ù. typedef struct PktDepositUpdateDB* LPPktDepositUpdateDB; struct PktDepositUpdateDB : public PktBase { enum TabFlag { ITEM_TAB1 = ( 1 << 0 ), ITEM_TAB2 = ( 1 << 1 ), ITEM_TAB3 = ( 1 << 2 ), ITEM_TAB4 = ( 1 << 3 ), USED_DEPOSIT = ( 1 << 30), // 0 : â°í »ç¿ë X, 1 : â°í »ç¿ëÇÔ. SAVED_PASSWORD = ( 1 << 31) // 0 : NOSAVE 1 : SAVE }; enum TabNum { TAB_12 = 0, TAB_34 = 1, }; unsigned long m_dwUID; // ij¸¯ÅÍ UID unsigned long m_dwCID; // ij¸¯ÅÍ CID unsigned long m_dwTabFlag; // ÇöÀç ÅÇÀÇ ±¸ÀÔ »óŸ¦ ³ªÅ¸³»´Â bitset unsigned short m_usDataSize; // ÅÇ(ȤÀº ¾ÏÈ£) µ¥ÀÌÅÍ Å©±â. ¾ÏÈ£ÀÎ °æ¿ì´Â Deposit::PASSWORD_LENGTH¿Í °°¾Æ¾ß ÇÑ´Ù. unsigned char m_cTabNum; // passwordÀÎ °æ¿ì´Â PASSWORD_TABNUMÀÓ bool m_bUpdateComplete; // ¾÷µ¥ÀÌÆ®°¡ ¿Ï·áµÇ´Â °æ¿ì, true·Î set. }; // â°í ÆÐŶ (Client <--> GameServer) struct PktDeposit : public PktBase { enum CMD { LOGIN = 1, // AckÀÖÀ½(Ackµ¥ÀÌÅÍ ¾øÀ½) (Client<->GameServer) szData[0]~[3]´Â password, ±× ´ÙÀ½¿¡ ¾ÏÈ£ ÀúÀå ¿©ºÎ 1byte (0, 1) BUY_TAB = 2, // AckÀÖÀ½(Ackµ¥ÀÌÅÍ ¾øÀ½) (Client<->GameServer) szData[0]¿¡ »ç¿ëÇÒ ÅÇ ¹øÈ£¸¦ ³Ö¾î ÁÜ RETURN_TAB = 3, // AckÀÖÀ½(Ackµ¥ÀÌÅÍ ¾øÀ½) (Client<->GameServer) szData[0]¿¡ »ç¿ëÇÒ ÅÇ ¹øÈ£¸¦ ³Ö¾î ÁÜ, ¾ÆÁ÷ ±¸ÇöµÇÁö ¾ÊÀ½ LOGOUT = 4, // AckÀÖÀ½ (Client->GameServer) µ¥ÀÌÅÍ ¾øÀ½. CHANGE_PASS = 5, // AckÀÖÀ½ (Client->GameServer) szData[0]~[3]´Â password. ÀÎÁõµÈ »óÅ¿¡¼­¸¸ °¡´É. SAVED_PASS = 6, // Ack¾øÀ½ (GameServer -> Client) °ÔÀÓ ·Î±×Àνà ÁÜ. szData[0]~[3]´Â Gold, [4]´Â ¾ÏÈ£ ÀúÀå ¿©ºÎ 1byte (0, 1) PASSWORD = 7, // AgentServer -> GameServer (CID, Password), GameServer -> AgentServer (UID, Password) GOLD = 8 // AgentServer -> GameServer (CID, Gold), GameServer -> AgentServer (UID, Gold) }; enum DepositError { SERVER_ERROR = 1, INSUFFICIENT_MONEY = 2, AUTH_FAILED = 3, INVALID_ARGUMENT = 4 }; enum { MIN_DATA_SIZE = Deposit::PASSWORD_LENGTH + 4 }; unsigned char m_cCmd; char m_szData[MIN_DATA_SIZE]; }; #pragma pack() #endif