#ifndef _CASTLE_PACKET_H_ #define _CASTLE_PACKET_H_ #include #include #include #include #include #include #include #include #pragma pack(1) using namespace Castle; using namespace Siege; // ¼º °ü¸® ±ÇÇÑ struct CastleRight { enum Index { CONTROL_CASTLE_EMBLEM = 0, // ¼º »ó¡¹° °ü¸® CONTROL_CASTLE_GATE = 1, // ¼º¹® °ü¸® USE_CASTLE_GATE = 2, // ¼º¹® ÀÌ¿ë CONTROL_CASTLE_ARMS = 3, // º´±â °ü¸® USE_CASTLE_ARMS = 4, // º´±â ÀÌ¿ë MAX_RIGHT_NUM = 10 }; unsigned char m_aryCastleRight[MAX_RIGHT_NUM]; CastleRight() { std::fill_n(&m_aryCastleRight[0], int(MAX_RIGHT_NUM), Guild::COMMON); }; bool Check(unsigned char cRightType, unsigned char cTitle) { return (m_aryCastleRight[cRightType] >= cTitle); } }; // ±æµå ¿ä»õ °ü¸® ±ÇÇÑ struct CampRight { enum Index { CAMP_CONTROL = 0, // ±æµå ¿ä»õ °ü¸® ±ÇÇÑ MAX_RIGHT_NUM = 10 }; unsigned char m_aryCampRight[MAX_RIGHT_NUM]; CampRight() { std::fill_n(&m_aryCampRight[0], int(MAX_RIGHT_NUM), Guild::MASTER); } bool Check(unsigned char cRightType, unsigned char cTitle) { return (m_aryCampRight[cRightType] >= cTitle); } }; // ¼º Á¤º¸ DB µ¥ÀÌÅÍ struct CastleInfoDB { unsigned long m_dwCastleID; // Castle ID unsigned char m_cNation; // ¼ÒÀ¯ ±¹°¡ unsigned char m_cZone; // Á¸ ¹øÈ£ unsigned char m_cChannel; // ä³Î ¹øÈ£ unsigned char m_cNameID; // ¼º À̸§ ID unsigned char m_cSiegeCount; // °ø¼º Ƚ¼ö (Àӽà ¼¼±Ý -> ´©Àû ¼¼±ÝÀ¸·Î ¿Å±æ¶§ »ç¿ë) unsigned char m_cInvincibleCount; // ¹«Àû Ƚ¼ö unsigned short m_wTotalSiegeCount; // ´©Àû °ø¼º Ƚ¼ö unsigned long m_dwTotalTaxMoney; // ´©Àû ¼¼±Ý ȸ¼ö·® char m_szRight[CastleRight::MAX_RIGHT_NUM]; // ±æµå¿øµéÀÇ ¼º °ü¸® ±ÇÇÑ POS m_InPos; // µÞ¹® »ç¿ë½Ã ¼º¾ÈÀ¸·Î À̵¿µÉ À§Ä¡ POS m_OutPos; // µÞ¹® »ç¿ë½Ã ¼º¹ÛÀ¸·Î À̵¿µÉ À§Ä¡ unsigned short m_wItemID; // ¾÷±×·¹À̵忡 »ç¿ëÇÒ º¸¼® ¾ÆÀÌÅÛ ¾ÆÀ̵ð unsigned char m_cItemNum; // ¾÷±×·¹À̵忡 »ç¿ëÇÒ º¸¼® ¾ÆÀÌÅÛ °¹¼ö }; // ¼ºÀÇ ¼¼À² ¹× ¼¼±Ý DB µ¥ÀÌÅÍ struct CastleTaxInfoDB { unsigned long m_dwCastleID; // Castle ID unsigned char m_cTaxType; // Á¾·ù (±¸¸Å/ÆÇ¸Å, ¼ö¸®, Àç·Ã, ¿ä»õ Gold, ¿ä»õ ±¤¹°) unsigned char m_cTax; // ¼¼À² unsigned long m_dwTempTaxMoney; // Àӽà ¼¼±Ý unsigned long m_dwTaxMoney; // ¼¼±Ý unsigned char m_cTaxChangable; // ¼¼À² º¯°æ °¡´É ¿©ºÎ }; // ¼ºÀÇ ±¤¹° ¼¼±Ý µ¥ÀÌÅÍ struct CastleMineralInfoDB { unsigned long m_dwCastleID; // Castle ID unsigned short m_wMineralID; // ±¤¹° Item ID unsigned short m_wAmount; // ¾ç unsigned char m_cFlag; // ´©Àû or Àӽà üũ Ç÷¡±× }; // ¼º °ü·Ã ¿ÀºêÁ§Æ® DB µ¥ÀÌÅÍ struct CastleObjectInfoDB { unsigned long m_dwCID; unsigned long m_dwCastleID; // CastleID : ¼º »ó¡¹°, ¼º¹®, µÞ¹®, °¡µå, ±Ù°Å¸®/¿ø°Å¸® ¼ö¼ºº´±â unsigned long m_dwOwnerID; // ±Ù°Å¸®/¿ø°Å¸® ¼ö¼ºº´±âÀÇ ¼ÒÀ¯ÀÚ CID unsigned long m_dwHP; // HP unsigned short m_wObjectType; // ¼º ¿ÀºêÁ§Æ® ŸÀÔ ( ¼º »ó¡¹°, ¼º¹®, µÞ¹®, °¡µå, ±Ù°Å¸®/¿ø°Å¸® ¼ö¼ºº´±â) float m_fDefaultDir; // ¼º ¿ÀºêÁ§Æ®ÀÇ ±âº» ¹æÇâ unsigned char m_cState; // ÇöÀç ¿ÀºêÁ§Æ®ÀÇ »óÅ unsigned char m_cSubState; // ÇöÀç ¿ÀºêÁ§Æ®ÀÇ ¼­ºê »óÅ (Use EMBLEM & GATE) unsigned char m_cUpgradeStep; // ÇöÀç ¿ÀºêÁ§Æ®ÀÇ ¾÷±×·¹ÀÌµå ´Ü°è (Except GUARD) unsigned char m_cUpgradeType; // ¼º »ó¡¹°ÀÇ ¾÷±×·¹À̵å ŸÀÔ (Only EMBLEM) TIME m_RemainUpTime; // °¢Á¾ ³²Àº ½Ã°£ ÀúÀå º¯¼ö TIME m_LastUseTime; // ¸¶Áö¸· »ç¿ë ½Ã°£ POS m_Pos; // À§Ä¡ }; // ¿ä»õ ¿ÀºêÁ§Æ® DB µ¥ÀÌÅÍ struct CampInfoDB { unsigned long m_dwCampID; // CampID unsigned long m_dwGID; // ¼ÒÀ¯ Guild ID unsigned long m_dwHP; // HP unsigned char m_cZone; // Á¸ unsigned char m_cChannel; // ä³Î Á¤º¸ unsigned short m_wObjectType; // ¿ä»õ ¿ÀºêÁ§Æ® ŸÀÔ ( ¿ä»õ, ä±¼±â, »óÁ¡, ¿ùµå¿þÆù ) unsigned char m_cState; // ±æµå ¿ä»õ »óÅ unsigned char m_cSubState; // ±æµå ¿ä»õ ¼­ºê »óÅ ( ä±¼±âÀÇ On/Off/Ready »óÅ ) unsigned char m_cUpgradeStep; // ¾÷±×·¹ÀÌµå ´Ü°è TIME m_TimeValue; // ±¸Ãà½Ã±îÁö ³²Àº ½Ã°£ TIME m_LastUseTime; // ¸¶Áö¸·À¸·Î »ç¿ëÇÑ ½Ã°£ char m_szRight[CampRight::MAX_RIGHT_NUM]; // ±æµå¿øµéÀÇ ±æµå ¿ä»õ °ü¸® ±ÇÇÑ POS m_Pos; // À§Ä¡ unsigned char m_cMaterial; // °ø¼º¿ë ÀÚÀç °¹¼ö unsigned char m_cSiegeCount; // °ø¼ºÀÌ Áö³ª°£ Ƚ¼ö }; // ä±¼±âÀÇ ±¤¹° Á¤º¸ DB µ¥ÀÌÅÍ struct CampMineralInfoDB { unsigned long m_dwCampID; // CampID unsigned short m_wMineralID; // ±¤¹° Item ID unsigned short m_wAmount; // ¾ç unsigned char m_cFlag; // ´©Àû or Àӽà üũ Ç÷¡±× }; // Áö·Â Á¤º¸ DB µ¥ÀÌÅÍ struct FertilityInfoDB { unsigned long m_dwVeinColor; // ±¤¸Æ »ö»ó unsigned long m_dwFertility; // ÇöÀç Áö·Â unsigned char m_cZone; // Á¸ ¹øÈ£ unsigned char m_cChannel; // ä³Î ¹øÈ£ }; // °ÔÀÓ ½Ã°£ DB µ¥ÀÌÅÍ struct GameTimeDB { unsigned char m_cGuildTime; // ±æµå ÀüÀï ½Ã°£ Á¤º¸ unsigned char m_cRealmTime; // ±¹°¡ ÀüÀï ½Ã°£ Á¤º¸ unsigned char m_cSiegeTime; // °ø¼ºÀü ½Ã°£ Á¤º¸ unsigned char m_cMiningTime; // Àӽà ä±¼±â ½Ã°£ Á¤º¸ unsigned char m_cEnterTime; // Å×¼·¿ë ½Å±ÔÁ¸ ÁøÀÔÁ¦ÇÑ Ç÷¡±× unsigned char m_cEventTime; // À̺¥Æ® ŸÀÓ }; // ±æµå ¿ä»õ »óÁ¡ Á¤º¸ DB Å×ÀÌÅÍ struct CampShopInfoDB { enum { MAX_CONTAINER_SIZE = 7995 // m_dwTotalSize + m_cItemNum + m_aryItemContainer = 8000 }; unsigned long m_dwCampID; // ±æµå ¿ä»õ ID unsigned long m_dwTotalSize; // ¾ÆÀÌÅÛ »çÀÌÁî (¾ÆÀÌÅÛ ¹öÆÛ + °¡°Ý) unsigned char m_cItemNum; // ¾ÆÀÌÅÛ °¹¼ö unsigned char m_aryItemContainer[MAX_CONTAINER_SIZE]; // ÆÇ¸ÅÁßÀÎ ¾ÆÀÌÅÛ ¸ñ·Ï unsigned long m_dwTempSafe; // Àӽà ±Ý°í unsigned char m_cTax; // ¼¼À² }; // ¿ùµå ¿þÆù Á¤º¸ DB µ¥ÀÌÅÍ struct WorldWeaponInfoDB { unsigned char m_cZone; // Á¸ ¹øÈ£ unsigned char m_cChannel; // ä³Î ¹øÈ£ unsigned char m_cKarRemainSiegeTime; // Ä«¸£Å×¶õÆ® ¿ùµå ¿þÆùÀÌ ºÎ¼­Áö°í³­ ÈÄ Áö³ª¾ßÇÒ °ø¼º ½Ã°£ unsigned char m_cMerRemainSiegeTime; // ¸Þ¸£Ä«µð¾Æ ¿ùµå ¿þÆùÀÌ ºÎ¼­Áö°í³­ ÈÄ Áö³ª¾ßÇÒ °ø¼º ½Ã°£ }; // ±¹°¡ ÀüÀï ¼®»ó Á¤º¸ DB µ¥ÀÌÅÍ struct StatueInfoDB { unsigned long m_dwIndex; // ¼®»ó À妽º (Á¸¿¡ ¹èÄ¡ÇÑ ¼ýÀÚ¸¸Å­ Á¸Àç) unsigned char m_cChannel; // ä³Î unsigned short m_wKID; // ÇöÀç ¼®»óÀÇ »óÅ (KID ·Î »óÅ ÆÇº°) unsigned long m_dwLostHP; // ¼®»óÀÇ ±ïÀÎ HP Á¤º¸ }; // ¼º Á¤º¸ (DBAgentServer -> GameServer) // °¡º¯ Á¤º¸ : + CastleInfoDB // + CastleTaxInfo * Castle::MAX_TAX_TYPE // + CastleMineralInfo + CastleMineral * ( m_cAccumulatedNum + m_cTemporaryNum ) // + CastleObjectInfo * m_cCastleObjectNum struct PktCastleInfo : public PktBase { bool m_bStartFlag; // óÀ½ Á¤º¸Àΰ¡? unsigned char m_cCastleObjectNum; // ¼º °ü·Ã ¿ÀºêÁ§Æ® ¼ö unsigned short m_wSize; // ¼º Á¤º¸ Å©±â }; struct CastleTaxInfo { unsigned char m_cTaxType; // Á¾·ù (±¸¸Å/ÆÇ¸Å, ¼ö¸®, Àç·Ã, ¿ä»õ Gold, ¿ä»õ ±¤¹°) unsigned char m_cTax; // ¼¼À² unsigned long m_dwTempTaxMoney; // Àӽà ¼¼±Ý unsigned long m_dwTaxMoney; // ¼¼±Ý unsigned char m_cTaxChangable; // ¼¼À² º¯°æ °¡´É ¿©ºÎ }; struct CastleMineral { unsigned short m_wMineralID; // ±¤¹° Item ID unsigned short m_wAmount; // ±¤¹° °¹¼ö }; struct CastleMineralInfo { unsigned char m_cAccumulatedNum; // ´©Àû º¸°üµÈ ±¤¹°ÀÇ °¹¼ö unsigned char m_cTemporaryNum; // Àӽà º¸°üµÈ ±¤¹°ÀÇ °¹¼ö unsigned short m_wSize; // ±¤¹° Á¤º¸ Å©±â }; struct CastleObjectInfo { unsigned long m_dwCID; // CID unsigned long m_dwCastleID; // CastleID : ¼º »ó¡¹°, ¼º¹®, µÞ¹®, °¡µå, ±Ù°Å¸®/¿ø°Å¸® ¼ö¼ºº´±â unsigned long m_dwOwnerID; // ±Ù°Å¸®/¿ø°Å¸® ¼ö¼º º´±âÀÇ ¼ÒÀ¯ÀÚ CID unsigned char m_cNation; // ±¹°¡ unsigned long m_dwHP; // HP unsigned short m_wObjectType; // ¼º ¿ÀºêÁ§Æ® ŸÀÔ ( ¼º »ó¡¹°, ¼º¹®, µÞ¹®, °¡µå, ±Ù°Å¸®/¿ø°Å¸® ¼ö¼ºº´±â) float m_fDefaultDir; // ¼º ¿ÀºêÁ§Æ®ÀÇ ±âº» ¹æÇâ unsigned char m_cState; // ÇöÀç ¿ÀºêÁ§Æ®ÀÇ »óÅ unsigned char m_cSubState; // ÇöÀç ¿ÀºêÁ§Æ®ÀÇ ¼­ºê »óÅ (Use EMBLEM & GATE) unsigned char m_cUpgradeStep; // ÇöÀç ¿ÀºêÁ§Æ®ÀÇ ¾÷±×·¹ÀÌµå ´Ü°è (Except GUARD) unsigned char m_cUpgradeType; // ¼º »ó¡¹°ÀÇ ¾÷±×·¹À̵å ŸÀÔ (Only EMBLEM) POS m_Pos; // À§Ä¡ }; // ¼¼±Ý À̵¿ Á¤º¸ ÆÐŶ // DBAgentServer -> GameServer -> Client : Àӽà ¼¼±Ý -> ´©Àû ¼¼±ÝÀ¸·Î À̵¿ // GameServer -> DBAgentServer -> DB : Àӽà ¼¼±Ý Á¤º¸ ¾÷µ¥ÀÌÆ® typedef struct PktCastleTaxMove* LPPktCastleTaxMove; struct PktCastleTaxMove : public PktBase { unsigned long m_dwCastleID; // ¼º ID unsigned long m_dwMoveTempMoney[ Castle::MAX_TAX_TYPE ]; // ´©Àû ¼¼±ÝÀ¸·Î À̵¿ÇÑ Àӽà ¼¼±Ý ¾×¼ö, ¾÷µ¥ÀÌÆ® µÉ Àӽà ¼¼±Ý Á¤º¸ unsigned long m_dwResultTaxMoney[ Castle::MAX_TAX_TYPE ]; // Àӽà ¼¼±ÝÀÌ À̵¿µÈ ÈÄÀÇ ´©Àû ¼¼±Ý ¾×¼ö }; // ¼ºÀÇ ±¤¹° ¼¼±Ý Á¤º¸ ÆÐŶ // °¡º¯ Á¤º¸ : + CastleMineral * m_cNum typedef struct PktCastleMineralInfo* LPPktCastleMineralInfo; struct PktCastleMineralInfo : public PktBase { unsigned long m_dwCastleID; // ¼º ID unsigned char m_cMineralType; // ±¤¹° ŸÀÔ (´©Àû, ÀÓ½Ã) unsigned char m_cNum; // ±¤¹° ¼ö unsigned short m_wSize; // ±¤¹° Á¤º¸ Å©±â }; // ¼ºÀÇ °ø¼º Ƚ¼ö Á¤º¸ ÆÐŶ typedef struct PktCastleSiegeCount* LPPktCastleSiegeCount; struct PktCastleSiegeCount : public PktBase { unsigned long m_dwCastleID; // ¼º ID unsigned char m_cSiegeCount; // °ø¼º Ƚ¼ö (Àӽà ¼¼±Ý -> ´©Àû ¼¼±Ý) unsigned char m_cInvincibleCount; // ³²Àº ¹«Àû °ø¼º Ƚ¼ö unsigned short m_wTotalSiegeCount; // ´©Àû °ø¼º Ƚ¼ö }; // ±¹°¡ ÀüÀï ¼®»ó Á¤º¸ ±¸Á¶Ã¼ struct StatueInfo { unsigned long m_dwIndex; unsigned short m_wKID; unsigned long m_dwLostHP; }; // ±¹°¡ ÀüÀï ¼®»ó µð½ºÇ÷¹ÀÌ Á¤º¸ ±¸Á¶Ã¼ struct StatueDisplayInfo { unsigned long m_dwIndex; unsigned long m_dwKID; unsigned char m_cNation; bool m_bSummoning; bool m_bAttacked; POS m_Pos; }; // ±¹°¡ ÀüÀï ¼®»ó Á¤º¸ ÆÐŶ (DBAgentServer <-> GameServer / GameServer -> Client) // °¡º¯ Á¤º¸ : // wSubCmd : CMD_INFO + StatueInfo * ¼®»ó ¼ö // : CMD_UPDATE_LOST_HP + StatueInfo // : CMD_UPDATE_KID + StatueInfo // : CMD_DISPLAY_INFO + StatueDisplayInfo * ¼®»ó ¼ö (Ŭ¶óÀÌ¾ðÆ® Ã³À½ ·Î±×ÀνÃ) // + StatueDisplayInfo (¼®»ó Á¤º¸ º¯°æ½Ã) typedef struct PktStatueCmd* LPPktStatueCmd; struct PktStatueCmd : public PktBase { enum SubCmd { CMD_INFO = 0, // DBAgentServer -> GameServer CMD_UPDATE_LOST_HP = 1, // GameServer -> DBAgentServer CMD_UPDATE_KID = 2, // GameServer -> DBAgentServer CMD_DISPLAY_INFO = 3 // GameServer -> Client }; enum Const { MAX_STATUE_NUM = 16 }; unsigned short m_wSubCmd; unsigned short m_wSize; // INFO : °¡º¯ ¹öÆÛ »çÀÌÁî / LOST_HP : sizeof(StatueInfo) / KID : sizeof(StatueInfo) / DISPLAY_INFO : °¡º¯ ¹öÆÛ »çÀÌÁî unsigned long m_dwValue; // INFO : ¼®»ó ¼ö / LOST_HP : Channel / KID : Channel / DISPLAY_INFO : ¼®»ó ¼ö }; // ±æµå ¿ä»õ Á¤º¸ (DBAgentServer -> GameServer) // °¡º¯ Á¤º¸ : ä±¼±â - CampInfoDB + MiningCampInfo + CampMineralInfo * (m_cAccumulatedNum + m_cTemporaryNum) // »óÁ¡ - CampInfoDB + CampShopInfo + ¾ÆÀÌÅÛ ¹öÆÛ // ¿ùµå¿þÆù - struct PktCampInfo : public PktBase { bool m_bStartFlag; // óÀ½ Á¤º¸Àΰ¡? unsigned long m_dwCID; // ¿ä»õÀÇ CID unsigned short m_wSize; // ¿ä»õ Á¤º¸ Å©±â }; struct MiningCampInfo { unsigned char m_cAccumulatedNum; // ´©Àû º¸°üµÈ ±¤¹°ÀÇ °¹¼ö unsigned char m_cTemporaryNum; // Àӽà º¸°üµÈ ±¤¹°ÀÇ °¹¼ö unsigned short m_wSize; // ±¤¹° Á¤º¸ Å©±â }; struct CampMineralInfo { unsigned short m_wMineralID; // ±¤¹° Item ID unsigned short m_wAmount; // ±¤¹° °¹¼ö }; struct CampShopInfo { unsigned long m_dwTempSafe; // Àӽà ±Ý°í unsigned char m_cTax; // ¼¼À² unsigned long m_dwBufferSize; // ¾ÆÀÌÅÛ ¹öÆÛ »çÀÌÁî unsigned char m_cItemNum; // ¾ÆÀÌÅÛ °¹¼ö }; // ¿ùµå ¿þÆù Á¤º¸ Àü¼Û (DBAgentServer -> GameServer) struct PktWorldWeaponInfo : public PktBase { unsigned char m_cKarRemainSiegeTime; // Ä«¸£Å×¶õÆ® ±¹°¡ÀÇ ¿ùµå ¿þÆùÀÌ ºÎ¼­ÁøÈÄ Áö³ª¾ßÇÒ °ø¼º ½Ã°£ unsigned char m_cMerRemainSiegeTime; // ¸Þ¸£Ä«µð¾Æ ±¹°¡ÀÇ ¿ùµå ¿þÆùÀÌ ºÎ¼­ÁøÈÄ Áö³ª¾ßÇÒ °ø¼º ½Ã°£ }; // Áö·Â Á¤º¸ // °¡º¯ Á¤º¸ (DBAgentServer -> GameServer) : + (dwVeinColor + dwFertility) * m_wNum // °¡º¯ Á¤º¸ (GameServer -> DBAgentServer) : + ZoneChannelInfo + (dwVeinColor + dwFertility) * m_wNum struct PktFertilityInfo : public PktBase { unsigned short m_wNum; // ±¤¸Æ °¹¼ö unsigned short m_wSize; // Áö·Â Á¤º¸ Å©±â }; // ±æµå ¿ä»õ »óÁ¡ Á¤º¸ (+ ¾ÆÀÌÅÛ ¹öÆÛ) struct PktCampShopInfo : public PktBase { unsigned long m_dwCampID; // ±æµå ¿ä»õ ID CampShopInfo m_CampShopInfo; // ±æµå ¿ä»õ »óÁ¡ Á¤º¸ }; struct ZoneChannelInfo { unsigned char m_cZone; unsigned char m_cChannel; }; // ÇöÀç ´©ÀûµÈ ä±¼±â ±¤¹°·® È®ÀÎ ÆÐŶ // °¡º¯ Á¤º¸ : + CampMineralInfo * m_cNum typedef struct PktMiningCampMineralInfo* LPPktMiningCampMineralInfo; struct PktMiningCampMineralInfo : public PktBase { unsigned long m_dwCampID; // ä±¼±â ¿ä»õ ID unsigned long m_dwRemainTime; // ³²Àº ½Ã°£ (´ÜÀ§: ÀÏ) unsigned char m_cState; // ÇöÀç »óÅ unsigned char m_cMineralType; // ±¤¹° ŸÀÔ (´©Àû, ÀÓ½Ã) unsigned char m_cNum; // ±¤¹° ¼ö unsigned short m_wSize; // ±¤¹° Á¤º¸ Å©±â }; // ä±¼±â ÇÁ·Î¼¼½º ½ÇÇà ÆÐŶ typedef struct PktProcessMining* LPPktProcessMining; struct PktProcessMining : public PktBase { enum { TEMPORARY_PROCESS = 1, ACCUMULATED_PROCESS = 2 }; unsigned long m_dwProcessType; // Àӽà ä±¼ ÇÁ·Î¼¼½ºÀÎÁö, ´©Àû ä±¼ ÇÁ·Î¼¼½ºÀÎÁö }; // ¼º »ý¼º (GameServer -> Client) // ¼ºÀÇ ±¤¹° Á¤º¸´Â ÇÊ¿äÇÒ¶§ ¼­¹ö¿¡¼­ º¸³»ÁØ´Ù. typedef struct PktCreateCastle* LPPktCreateCastle; struct PktCreateCastle : public PktBase { unsigned long m_dwCastleID; // CastleID unsigned char m_cNation; // ¼ÒÀ¯ ±¹°¡ unsigned char m_cZone; // Á¸ ¹øÈ£ unsigned char m_cNameID; // ¼º À̸§ ID unsigned char m_cUpgradeStep; // ¼º »ó¡¹° ¾÷±×·¹ÀÌµå ´Ü°è unsigned char m_cInvincibleCount; // ¹«Àû Ƚ¼ö unsigned short m_wTotalSiegeCount; // ´©Àû °ø¼º Ƚ¼ö unsigned long m_dwTotalTaxMoney; // ´©Àû ¼¼±Ý ȸ¼ö·® float m_fPosX ; // ¼ºÀÇ À§Ä¡ float m_fPosY ; float m_fPosZ ; unsigned short m_wItemID; // ¾÷±×·¹À̵忡 »ç¿ëÇÒ º¸¼® ¾ÆÀÌÅÛ ID unsigned char m_cItemNum[Castle::EMBLEM_UPGRADE_JEWEL_POS_NUM]; // ¾÷±×·¹À̵忡 »ç¿ëÇÒ º¸¼® ¾ÆÀÌÅÛ °¹¼ö CastleRight m_CastleRight; // ±æµå¿øµéÀÇ ¼º °ü¸® ±ÇÇÑ CastleTaxInfo m_CastleTax[Castle::MAX_TAX_TYPE]; // ¼º ¼¼À²/¼¼±Ý Á¤º¸ }; // ±æµå ¿ä»õ »ý¼º (GameServer -> Client, GameServer -> DBAgentServer) typedef struct PktCreateCamp* LPPktCreateCamp; struct PktCreateCamp : public PktBase { enum Error { ERROR_EXIST_ANOTHER_WEAPON = 2, // ÀÌ¹Ì ¿ùµå ¿þÆùÀÌ Á¸ÀçÇÒ °æ¿ì }; unsigned long m_dwActorCID; // ¿ä»õ »ý¼ºÀ» ¿äûÇÑ Ä³¸¯ÅÍÀÇ CID unsigned long m_dwCID; // CID unsigned long m_dwCampID; // CampID unsigned long m_dwGID; // ¼ÒÀ¯ Guild ID unsigned long m_dwHP; // HP unsigned short m_wObjectType; // ±æµå ¿ä»õ ŸÀÔ unsigned char m_cZone; // Á¸ ¹øÈ£ (GameServer -> DBAgentServer ¿¡¼­ »ç¿ë) unsigned char m_cChannel; // ä³Î ¹øÈ£ (GameServer -> DBAgentServer ¿¡¼­ »ç¿ë) unsigned char m_cState; // ±æµå ¿ä»õ »óÅ unsigned char m_cSubState; // ±æµå ¿ä»õ ¼­ºê »óÅ unsigned char m_cUpgradeStep; // ¾÷±×·¹ÀÌµå ´Ü°è unsigned char m_cNation; // Ä·ÇÁ ±¹Àû (±æµå ±¹Àû : Ŭ¶óÀÌ¾ðÆ®¿¡ ±æµå Á¤º¸°¡ ¾øÀ»¶§¸¦ À§Çؼ­) CampRight m_CampRight; // ±æµå ¿ä»õ °ü¸® ±ÇÇÑ POS m_Pos; // À§Ä¡ unsigned char m_cMaterial; // °ø¼º¿ë ÀÚÀç °¹¼ö }; // °ø¼º º´±â »ý¼º (GameServer -> Client, GameServer -> DBAgentServer) typedef struct PktCreateSiegeArms* LPPktCreateSiegeArms; struct PktCreateSiegeArms : public PktBase { unsigned long m_dwCID; // CID (°ø¼º º´±â ID) unsigned long m_dwOwnerID; // °ø¼º º´±â ÁÖÀÎ CID unsigned short m_wObjectType; // °ø¼º º´±â ŸÀÔ unsigned char m_cNation; // °ø¼º º´±â ¼ÒÀ¯ÁÖÀÇ ±¹°¡ unsigned long m_dwHP; // HP unsigned char m_cZone; // Á¸ ¹øÈ£ (GameServer -> DBAgentServer ¿¡¼­ »ç¿ë) unsigned char m_cChannel; // ä³Î ¹øÈ£ (GameServer -> DBAgentServer ¿¡¼­ »ç¿ë) unsigned char m_cState; // °ø¼º º´±â »óÅ unsigned char m_cUpgradeStep; // °ø¼º º´±â ¾÷±×·¹ÀÌµå ´Ü°è POS m_Pos; // À§Ä¡ }; // ±æµå ¿ä»õ °ü·Ã ¸í·É ÆÐŶ ( Client <-> GameServer <-> DBAgentServer ) typedef struct PktCampCmd* LPPktCampCmd; struct PktCampCmd : public PktBase { enum SubCmd { CAMP_NO_CMD = 0, // ±æµå ¿ä»õ ±âº» ¸í·É CAMP_BUILD = 1, // ±æµå ¿ä»õ ±¸Ãà (»ç¿ë ¾ÈÇÔ, ½ºÅ¸Æ®Å¶ ¾ÆÀÌÅÛÀ¸·Î »ç¿ë) CAMP_BUILD_COMPLETE = 2, // ±æµå ¿ä»õ ±¸Ãà ¿Ï·á CAMP_CANCEL = 3, // ±æµå ¿ä»õ ±¸Ãà ÇØÁ¦ CAMP_CANCEL_COMPLETE = 4, // ±æµå ¿ä»õ ±¸Ãà ÇØÁ¦ ¿Ï·á CAMP_UPGRADE = 5, // ±æµå ¿ä»õ ¾÷±×·¹À̵å CAMP_UPGRADE_COMPLETE = 6, // ±æµå ¿ä»õ ¾÷±×·¹ÀÌµå ¿Ï·á CAMP_REPAIR = 7, // ±æµå ¿ä»õ ¼ö¸® CAMP_REPAIR_COMPLETE = 8, // ÁöÁö ¼ö¸® ¿Ï·á CAMP_TO_STARTKIT = 9, // ½ºÅ¸Æ®Å¶À¸·Î CAMP_TO_STARTKIT_COMPLETE = 10, // ½ºÅ¸Æ®Å¶À¸·Î ¿Ï·á CAMP_CHANGE_TYPE = 11, // ±æµå ¿ä»õ ŸÀÔ º¯Çü CAMP_CHANGE_COMPLETE = 12, // ±æµå ¿ä»õ ŸÀÔ º¯Çü ¿Ï·á CAMP_DESTROY = 13, // ±æµå ¿ä»õ ÆÄ±«½Ã / 7Àϰ£ Ä·ÇÁ ¹Ì»ç¿ë½Ã ÆÄ±« CAMP_CARE = 14, // ¼ÕÁúÇϱâ CAMP_UPDATE_HP = 15, // HP Á¤º¸¸¦ ¾÷µ¥ÀÌÆ® (°ÔÀÓ ¼­¹öÀÇ HP Á¤º¸·Î ¾÷µ¥ÀÌÆ®) // ä±¼±â Àü¿ë ¸í·É MINING_CAMP_SHOW_MINERAL = 16, // ´©Àû ±¤¹° È®ÀÎ MINING_CAMP_ON_OFF = 17, // ä±¼±â Äѱâ / ²ô±â ( dwValue1 : On / Off ) MINING_CAMP_GAIN_MINERAL = 18, // ±¤¹° ȹµæ ( dwValue1 : ±¤¹° Index, dwValue2 : ȹµæ·® ) // »óÁ¡ Àü¿ë ¸í·É CAMP_SHOP_CHANGE_TAX = 19, // ¼¼À² º¯°æ CAMP_SHOP_GAIN_TAX = 20, // ¼öÀÍ±Ý È¹µæ // ¿ùµå¿þÆù Àü¿ë ¸í·É WORLDWEAPON_CHARGE = 21, // ¹«±â ÀåÀü WORLDWEAPON_CHARGE_COMPLETE = 22, // ¹«±â ÀåÀü ¿Ï·á WORLDWEAPON_FIRE = 23, // ¹«±â ¹ß»ç WORLDWEAPON_FIRE_COMPLETE = 24, // ¹«±â ¹ß»ç ¿Ï·á CAMP_NOT_REBUILDTIME = 25 // ±æµå ¿ä»õ ÆÄ±« ÈÄ ´Ù½Ã ±¸ÃàÇÒ ¼ö ÀÖ´Â ½Ã°£ÀÌ Áö³ªÁö ¾Ê¾ÒÀ» °æ¿ì. }; enum Error { FAIL_NOT_EXIST_GUILD = 2, // Á¸Àç ÇÏÁö ¾Ê´Â ±æµå FAIL_NOT_EXIST_CAMP = 3, // Á¸Àç ÇÏÁö ¾Ê´Â ¼º FAIL_NOT_CAMP = 4, // ÁøÁö°¡ ¾Æ´Ô FAIL_CAMP_STATE = 5, // ±æµå ¿ä»õ »óŰ¡ ÀÌ»óÇÔ FAIL_DIFFERENT_GUILD = 6, // ±æµå ¾ÆÀ̵𰡠´Ù¸§ FAIL_NOT_MASTER = 7, // ±æµå ¸¶½ºÅͰ¡ ¾Æ´Ô FAIL_CAMP_RIGHT = 8, // ±æµå ¿ä»õ ±ÇÇÑ ¾øÀ½ FAIL_NOT_ENOUGH_MATERIAL = 9, // ÀÚÀç ºÎÁ· FAIL_DIFFERENT_GOLD = 10, // Ŭ¶óÀÌ¾ðÆ®¿Í ¼­¹öÀÇ µ·ÀÌ ´Ù¸§ FAIL_NOT_ENOUGH_GOLD = 11, // ±æµå¿¡ µ·ÀÌ ºÎÁ· FAIL_NOT_MINING_CAMP = 12, // ä±¼±â°¡ ¾Æ´Ô (ä±¼±â·Î ij½ºÆÃ ½ÇÆÐ) FAIL_NOT_COMPLETE_STATE = 13, // ¿Ï·á»óÅÂ(º¸Åë»óÅÂ)°¡ ¾Æ´Õ´Ï´Ù. FAIL_NOW_MINING = 14, // ä±¼ÁßÀÔ´Ï´Ù. FAIL_UPGRADE_STEP = 15, // ¾÷±×·¹ÀÌµå ´Ü°è°¡ ºÎÁ·ÇÕ´Ï´Ù. FAIL_NOT_ENOUGH_MINERAL = 16, // ±¤¹°¼ö°¡ ºÎÁ·ÇÕ´Ï´Ù. FAIL_NOT_CAMP_SHOP = 17, // ±æµå ¿ä»õ »óÁ¡ÀÌ ¾Æ´Õ´Ï´Ù. FAIL_NOT_ZERO_CUSTOMER = 18, // ÀÔÀå°´ÀÌ ÀÖÀ» ¶§´Â ¼¼À²À» º¯°æÇÒ ¼ö ¾ø½À´Ï´Ù. FAIL_TOO_MANY_TAX = 19, // ¼¼À²ÀÌ ÃÖ´ëÄ¡¸¦ ÃʰúÇÏ¿´½À´Ï´Ù. FAIL_NOT_WORLDWEAPON = 20, // ¿ùµå ¿þÆùÀÌ ¾Æ´Õ´Ï´Ù. FAIL_NOT_EMPTY_WEAPON = 21, // ¿ùµå ¿þÆùÀÇ ¹«±â°¡ ºñ¾î ÀÖÁö ¾Ê½À´Ï´Ù. (ÀåÀüÁß, ÀåÀüµÊ, ¹ß»çÁß) FAIL_NOT_READY_WEAPON = 22, // ¿ùµå ¿þÆùÀÇ ¹«±â°¡ Áغñ µÇ¾î ÀÖÁö ¾Ê½À´Ï´Ù. (ºñ¾îÀÖÀ½, ÀåÀüÁß, ¹ß»çÁß) FAIL_NOW_CHARGING = 23, // ¿ùµå ¿þÆù ¹«±â ÀåÀüÁßÀÔ´Ï´Ù. FAIL_NOW_FIRING = 24, // ¿ùµå ¿þÆù ¹«±â ¹ß»çÁßÀÔ´Ï´Ù. FAIL_MAX_UPGRADE = 25, // ¾÷±×·¹À̵å Max ÀÔ´Ï´Ù. FAIL_HAS_MINERAL = 26, // ä±¼±â ŸÀÔÀ» º¯ÇüÇÏ·Á ÇÒ¶§ ±¤¹°ÀÌ ³²¾Æ ÀÖÀ» °æ¿ì FAIL_HAS_ITEM = 27 // »óÁ¡ ŸÀÔÀ» º¯ÇüÇÏ·Á ÇÒ¶§ ¾ÆÀÌÅÛÀÌ ³²¾Æ ÀÖÀ» °æ¿ì }; unsigned long m_dwCID; // Client -> GameServer : º¸³½ »ç¶÷ CID GameServer -> DBAgentServer : º¸³½ »ç¶÷ CID ȤÀº 0 // Client <- GameServer : ±æµå ¿ä»õ CID GameServer <- DBAgentServer : ±æµå ¿ä»õ CID unsigned long m_dwCampID; unsigned char m_cState; unsigned long m_dwValue1; unsigned long m_dwValue2; unsigned char m_cSubCmd; }; // ¼º °ü·Ã ¸í·É ÆÐŶ ( Client <-> GameServer <-> DBAgentServer ) typedef struct PktCastleCmd* LPPktCastleCmd; struct PktCastleCmd : public PktBase { enum SubCmd { CASTLE_NO_CMD = 0, // »ó¡¹° °ü·Ã ¸í·É CASTLE_SET_TAX = 1, // ¼¼À² Á¶Á¤ // CASTLE_SET_RIGHT = 2, // ±ÇÇÑ ¼³Á¤ (µû·Î ÆÐŶ ¸¸µé¾î¼­ º¸³¿) CASTLE_UPGRADE_EMBLEM = 3, // »ó¡¹° ¾÷±×·¹À̵å CASTLE_UPGRADE_EMBLEM_COMPLETE = 4, // »ó¡¹° ¾÷±×·¹ÀÌµå ¿Ï·á CASTLE_UPGRADE_ITEM_INFO = 5, // ¼º »ó¡¹° ¾÷±×·¹ÀÌµå º¸¼® Á¤º¸ (GameServer --> DBAgentServer) CASTLE_UPDATE_EMBLEM = 6, // »ó¡¹° ºÎ¼­Áü CASTLE_SUMMON_EMBLEM_COMPLETE = 7, // »ó¡¹° ¼Òȯ ¿Ï·á CASTLE_CHANGE_MASTER = 8, // ¼ºÁÖ º¯°æ CASTLE_TAKE_TAXMONEY = 9, // ¼¼±Ý ȸ¼ö CASTLE_LOSE_OWNERSHIP = 10, // ±æµå ÆÄ±«µîÀ¸·Î ¼ºÁÖ ¾ø¾îÁü CASTLE_SHOW_MINERAL = 11, // ´©Àû ±¤¹° ¼¼±Ý Á¤º¸ ¿äû CASTLE_GAIN_MINERAL = 12, // ±¤¹° ȹµæ ( dwValue1 : ±¤¹°ID, dwValue2 : ȹµæ·® ) // ¼º¹®/µÞ¹® °ü·Ã ¸í·É CASTLE_GATE_OPEN = 13, // ¼º¹® ¿­±â CASTLE_GATE_CLOSE = 14, // ¼º¹® ´Ý±â CASTLE_GATE_PROTECT = 15, // ¼º¹® ¸·±â CASTLE_GATE_PROTECT_CANCEL = 16, // ¼º¹® ¸·±â ÇØÁ¦ CASTLE_GATE_PROTECT_INFO = 17, // ¼º¹® ¸·±â Á¤º¸ CASTLE_UPGRADE_GATE = 18, // ¼º¹® ¾÷±×·¹À̵å CASTLE_UPGRADE_GATE_COMPLETE = 19, // ¼º¹® ¾÷±×·¹ÀÌµå ¿Ï·á CASTLE_REPAIR_GATE = 20, // ¼º¹® ¼ö¸® CASTLE_REPAIR_GATE_COMPLETE = 21, // ¼º¹® ¼ö¸® ¿Ï·á CASTLE_RESTORE_GATE = 22, // ¼º¹® º¹±¸ CASTLE_RESTORE_GATE_COMPLETE = 23, // ¼º¹® º¹±¸ ¿Ï·á CASTLE_DESTROY_GATE = 24, // ¼º¹® ÆÄ±« CASTLE_BACKDOOR = 25, // µÞ¹® »ç¿ë // ¼ö¼º º´±â °ü·Ã ¸í·É CASTLE_CREATE_ARMS = 26, // ¼ö¼º º´±â °³¹ß CASTLE_CREATE_ARMS_COMPLETE = 27, // ¼ö¼º º´±â °³¹ß ¿Ï·á CASTLE_RIDE_ARMS = 28, // ¼ö¼º º´±â ž½Â CASTLE_GETOFF_ARMS = 29, // ¼ö¼º º´±â ³»¸² CASTLE_UPGRADE_ARMS = 30, // ¼ö¼º º´±â ¾÷±×·¹À̵å CASTLE_UPGRADE_ARMS_COMPLETE = 31, // ¼ö¼º º´±â ¾÷±×·¹ÀÌµå ¿Ï·á CASTLE_REPAIR_ARMS = 32, // ¼ö¼º º´±â ¼ö¸® CASTLE_REPAIR_ARMS_COMPLETE = 33, // ¼ö¼º º´±â ¼ö¸® ¿Ï·á CASTLE_DESTROY_ARMS = 34, // ¼ö¼º º´±â ÆÄ±« CASTLE_ARMS_CHANGE_MASTER = 35, // ¼ö¼º º´±â ¼ºÁÖ º¯°æ // HP ¾÷µ¥ÀÌÆ® CASTLE_UPDATE_HP = 36, // HP ¸¦ °ÔÀÓ¼­¹öÀÇ °ªÀ¸·Î ¾÷µ¥ÀÌÆ® (GameServer --> DBAgentServer) // ¼º¹® Ãß°¡ ±â´É ( DBAgentServer -> GameServer ) CASTLE_GATE_FORCE_OPEN = 37, // Áß°è ¼­¹ö°¡ ¼º¹®À» °­Á¦·Î ¿­¸° »óÅ·Π¸¸µç´Ù. CASTLE_GATE_FORCE_CLOSE = 38, // Áß°è ¼­¹ö°¡ ¼º¹®À» °­Á¦·Î ´ÝÈù »óÅ·Π¸¸µç´Ù. // ¼º »ó¡¹° °ø°Ý ¹Þ°í ÀÖ´Ù´Â ¸Þ¼¼Áö ¸í·É CASTLE_EMBLEM_ATTACKED = 39, // ¼º »ó¡¹° °ø°Ý ¹ÞÀ½ }; enum Const { DESTROY = 0, // ¼ö¼º º´±â ÆÄ±« TO_NPC = 1, // ¼ö¼º º´±â¸¦ º´±â °ü¸® NPC ·Î ( »ý»ê ºñ¿ë Àý¹ÝÀ» µ¹·ÁÁÜ ) }; enum Error { FAIL_NOT_GUILD_MEMBER = 2, // ±æµå¿¡ °¡ÀÔÇÏÁö ¾Ê¾Ò½À´Ï´Ù. FAIL_NOT_EXIST_CASTLE = 3, // Á¸Àç ÇÏÁö ¾Ê´Â ¼º FAIL_DIFFERENT_GUILD = 4, // ±æµå ¾ÆÀ̵𰡠´Ù¸§ FAIL_NOT_EXIST_GUILD = 5, // Á¸Àç ÇÏÁö ¾Ê´Â ±æµå FAIL_CASTLE_RIGHT = 6, // ¼º °ü·Ã ±ÇÇÑÀÌ ¾ø½À´Ï´Ù. FAIL_MAX_UPGRADE = 7, // ÃÖ´ë ¾÷±×·¹ÀÌµå »óÅÂÀÓ FAIL_NOT_ENOUGH_JEWEL = 8, // º¸¼® °¹¼ö ºÎÁ· FAIL_JEWEL_KIND = 9, // ÀûÀýÇÏÁö ¾ÊÀº º¸¼® Á¾·ù FAIL_CASTLE_OBJECT_STATE = 10, // ¼º °ü·Ã ¿ÀºêÁ§Æ®ÀÇ »óŰ¡ ÀûÀýÄ¡ ¸øÇÒ °æ¿ì FAIL_DIFFERENT_GOLD = 11, // Ŭ¶óÀÌ¾ðÆ®¿Í ¼­¹öÀÇ µ·ÀÌ ´Ù¸§ FAIL_NOT_ENOUGH_GOLD = 12, // ±Ý¾×ÀÌ ºÎÁ·ÇÒ °æ¿ì FAIL_ALREADY_RIDE = 13, // º´±â¿¡ ž½ÂÇØ ÀÖÀ½ FAIL_NOT_RIDE = 14, // º´±â¸¦ Ÿ°í ÀÖÁö ¾ÊÀ½ FAIL_CHANGE_TAX = 15, // ¼¼À²À» º¯°æÇÒ¼ö ¾øÀ½ FAIL_NOT_GUILD_MASTER = 16, // ±æµå ¸¶½ºÅͰ¡ ¾Æ´Ï´Ù. FAIL_REQUEST_TOO_MUCH_GOLD = 17, // ³Ê¹« ¸¹Àº µ·À» ¿äûÇß½À´Ï´Ù. FAIL_NOT_ENOUGH_MINERAL = 18, // ³Ê¹« ¸¹Àº ¼öÀÇ ±¤¹°À» ¿äûÇß½À´Ï´Ù. FAIL_HAS_ANOTHER_CASTLE_ARMS = 19, // ÀÌ¹Ì ´Ù¸¥ ¼ö¼º º´±â¸¦ °¡Áö°í ÀÖ½À´Ï´Ù. FAIL_NOT_MY_CASTLE_ARMS = 20, // ÀÚ½ÅÀÇ ¼ö¼º º´±â°¡ ¾Æ´Õ´Ï´Ù. FAIL_NOT_SIEGE_TIME = 21, // ¼ö¼º º´±â¸¦ ¸¸µé¼ö ÀÖ´Â ½Ã°£ÀÌ ¾Æ´Õ´Ï´Ù. FAIL_HAS_ANOTHER_SIEGE_ARMS = 22, // ÀÌ¹Ì ´Ù¸¥ °ø¼º º´±â¸¦ °¡Áö°í ÀÖ½À´Ï´Ù. NOT_LIMIT_LEVEL = 23, // 80 ·¹º§ ¹Ì¸¸ÀÏ °æ¿ì. }; unsigned long m_dwCID; // º¸³½ »ç¶÷ CID unsigned long m_dwCastleID; // ¼º ID unsigned long m_dwCastleObjectID; // ¼º ¿ÀºêÁ§Æ® ID unsigned long m_dwValue1; unsigned long m_dwValue2; unsigned char m_cState; unsigned char m_cSubCmd; }; // ¼º °ü¸® ±ÇÇÑ typedef struct PktCastleRight* LPPktCastleRight; struct PktCastleRight : public PktBase { enum eError { FAIL_NOT_EXIST_GUILD = 2, // Á¸Àç ÇÏÁö ¾Ê´Â ±æµå FAIL_NOT_EXIST_CASTLE = 3, // Á¸Àç ÇÏÁö ¾Ê´Â ¼º FAIL_DIFFERENT_GUILD = 4, // ±æµå ¾ÆÀ̵𰡠´Ù¸§ FAIL_NOT_MASTER = 5 // ±æµå ¸¶½ºÅͰ¡ ¾Æ´Ô }; unsigned long m_dwCID; // ¾ÆÀ̵ð (C -> S : CID) unsigned long m_dwCastleID; CastleRight m_CastleRight; // ¼º °ü¸® ±ÇÇÑ }; // ±æµå ¿ä»õ °ü¸® ±ÇÇÑ typedef struct PktCampRight* LPPktCampRight; struct PktCampRight : public PktBase { enum eError { FAIL_NOT_EXIST_GUILD = 2, // Á¸Àç ÇÏÁö ¾Ê´Â ±æµå FAIL_NOT_EXIST_CAMP = 3, // Á¸Àç ÇÏÁö ¾Ê´Â ±æµå ¿ä»õ FAIL_NOT_CAMP = 4, // Ä·ÇÁ°¡ ¾Æ´Ô FAIL_DIFFERENT_GUILD = 5, // ±æµå ¾ÆÀ̵𰡠´Ù¸§ FAIL_CAMP_STATE = 6, // ±æµå ¿ä»õ »óŰ¡ ÀÌ»óÇÔ FAIL_NOT_MASTER = 7 // ±æµå ¸¶½ºÅͰ¡ ¾Æ´Ô }; unsigned long m_dwCID; // ¾ÆÀ̵ð (C -> S : CID) unsigned long m_dwCampID; CampRight m_CampRight; // ±æµå ¿ä»õ °ü¸® ±ÇÇÑ }; // °ø¼º ¿ÀºêÁ§Æ® ÀÚÀç À̵¿ ÆÐŶ typedef struct PktTakeMaterial* LPPktTakeMaterial; struct PktTakeMaterial : public PktBase { enum SubCmd { SC_TAKE_IN = 1, // ±æµå ¿ä»õ¿¡ ÀÚÀç ³Ö±â SC_TAKE_OUT = 2 // ±æµå ¿ä»õ¿¡¼­ ÀÚÀç ²¨³»±â }; enum eError { FAIL_ITEM_NUMBER = 2, // °¹¼ö°¡ ÀÌ»óÇÔ FAIL_NOT_EXIST_ITEMINFO = 3, // Á¸ÀçÇÏÁö ¾Ê´Â ¾ÆÀÌÅÛ Á¤º¸ (ÀÚÀç ¾ÆÀÌÅÛ ¾ÆÀ̵ð ÀÌ»ó) FAIL_OVER_STACK = 4, // ½ºÅà °¹¼ö Ãʰú FAIL_NOT_EXIST_CAMP = 5, // ÇØ´ç ¿ä»õ°¡ Á¸Àç ÇÏÁö ¾ÊÀ½ FAIL_CREATE_ITEM = 6, // °ø¼º¿ë ÀÚÀç »ý¼º ½ÇÆÐ FAIL_NOT_EXIST_ITEM = 7, // °ø¼º¿ë ÀÚÀç°¡ ¾øÀ½ FAIL_CAMP_RIGHT = 8 // ±ÇÇÑ ¾øÀ½ }; unsigned long m_dwCID; // ÇàÀ§ÀÚ unsigned long m_dwCampID; // ¿ä»õ ¾ÆÀ̵ð unsigned char m_cSubCmd; // ³Ö±â/»©±â Ä¿¸Çµå unsigned char m_cNum; // °¹¼ö Item::ItemPos m_Pos; // ¾ÆÀÌÅÛÀÇ À§Ä¡ }; // ¼º ¾÷±×·¹ÀÌµå º¸¼® ¾ÆÀÌÅÛ À̵¿ ÆÐŶ typedef struct PktTakeCastleJewel* LPPktTakeCastleJewel; struct PktTakeCastleJewel : public PktBase { enum SubCmd { SC_TAKE_IN = 1, // ¼º »ó¡¹° ¾÷±×·¹À̵忡 º¸¼® ³Ö±â SC_TAKE_OUT = 2 // ¼º »ó¡¹° ¾÷±×·¹À̵忡¼­ º¸¼® ²¨³»±â }; enum eError { FAIL_NOT_EXIST_CASTLE = 2, // Á¸Àç ÇÏÁö ¾Ê´Â ¼º FAIL_NOT_EXIST_EMBLEM = 3, // Á¸Àç ÇÏÁö ¾Ê´Â ¼º »ó¡¹° FAIL_WRONG_JEWEL = 4, // ÀûÀýÇÏÁö ¸øÇÑ º¸¼® FAIL_DIFFERENT_JEWEL = 5, // ´Ù¸¥ Á¾·ùÀÇ º¸¼® FAIL_NOT_EXIST_ITEM_PROTOTYPE = 6, // ¾ÆÀÌÅÛ ÇÁ·ÎÅä ŸÀÔÀÌ Á¸ÀçÇÏÁö ¾ÊÀ½ FAIL_OVER_STACK = 7, // ½ºÅà ¿À¹ö Ç÷¯¿ì FAIL_NOT_EXIST_ITEM = 8, // ÇØ´ç À§Ä¡¿¡ º¸¼® ¾ÆÀÌÅÛÀÌ Á¸ÀçÇÏÁö ¾ÊÀ½ FAIL_ITEM_NUMBER = 9, // ¾ÆÀÌÅÛ °¹¼ö°¡ ÀÌ»óÇÔ FAIL_CREATE_ITEM = 10, // º¸¼® ¾ÆÀÌÅÛ »ý¼º ½ÇÆÐ }; unsigned long m_dwCID; // ÇàÀ§ÀÚ unsigned long m_dwCastleID; // ¼º ¾ÆÀ̵ð unsigned char m_cSubCmd; // ³Ö±â/»©±â Ä¿¸Çµå unsigned short m_wItemID; // º¸¼® ¾ÆÀ̵ð unsigned char m_cIndex; // º¸¼®À» ³ÖÀº UI »óÀÇ À§Ä¡ (0 ~ 9) unsigned char m_cNum; // °¹¼ö Item::ItemPos m_Pos; // ¾ÆÀÌÅÛÀÇ À§Ä¡ }; // °ø¼º º´±â °ü·Ã ¸í·É ÆÐŶ ( Client <-> GameServer <-> DBAgentServer ) typedef struct PktSiegeArmsCmd* LPPktSiegeArmsCmd; struct PktSiegeArmsCmd : public PktBase { enum SubCmd { SIEGE_NO_CMD = 0, SIEGE_CREATE_ARMS = 1, // °ø¼º º´±â »ý¼º (»ç¿ë ¾ÈÇÔ, ½ºÅ¸Æ®Å¶ ¾ÆÀÌÅÛÀ¸·Î »ç¿ë) SIEGE_CREATE_ARMS_COMPLETE = 2, // °ø¼º º´±â »ý¼º ¿Ï·á SIEGE_CANCEL = 3, // °ø¼º º´±â »ý¼º Ãë¼Ò (¹Ù·ÎµÊ) SIEGE_RIDE_ARMS = 4, // °ø¼º º´±â ž½Â SIEGE_GETOFF_ARMS = 5, // °ø¼º º´±â ³»¸² SIEGE_REPAIR_ARMS = 6, // °ø¼º º´±â ¼ö¸® SIEGE_REPAIR_ARMS_COMPLETE = 7, // °ø¼º º´±â ¼ö¸® ¿Ï·á SIEGE_TO_STARTKIT = 8, // °ø¼º º´±â¸¦ ½ºÅ¸Æ®Å¶À¸·Î SIEGE_TO_STARTKIT_COMPLETE = 9, // °ø¼º º´±â¸¦ ½ºÅ¸Æ®Å¶À¸·Î ¿Ï·á SIEGE_DESTROY_ARMS = 10, // °ø¼º º´±â ÆÄ±« // HP ¾÷µ¥ÀÌÆ® SIEGE_UPDATE_HP = 12, // HP ¸¦ °ÔÀÓ¼­¹öÀÇ °ªÀ¸·Î ¾÷µ¥ÀÌÆ® (GameServer --> DBAgentServer) }; enum Error { FAIL_NOT_EXIST_GUILD = 2, // Á¸Àç ÇÏÁö ¾Ê´Â ±æµå FAIL_NOT_EXIST_SIEGE_ARMS = 3, // Á¸Àç ÇÏÁö ¾Ê´Â °ø¼º º´±â FAIL_NOT_SIEGE_ARMS = 4, // °ø¼º º´±â°¡ ¾Æ´Ô FAIL_NOT_OWNER = 5, // º´±â ¼ÒÀ¯ÀÚ°¡ ¾Æ´Ô FAIL_SIEGE_ARMS_STATE = 6, // °ø¼º º´±âÀÇ »óŰ¡ ÀûÀýÄ¡ ¾ÊÀ½ FAIL_ALREADY_RIDE = 7, // º´±â¿¡ ž½ÂÇØ ÀÖÀ½ FAIL_NOT_RIDE = 8, // º´±â¸¦ Ÿ°í ÀÖÁö ¾ÊÀ½ FAIL_RIDE_SIEGE_ARMS = 9, // º´±â ž½Â¿¡ ½ÇÆÐ FAIL_GET_OFF_SIEGE_ARMS = 10, // º´±â ³»¸®±â ½ÇÆÐ FAIL_NOT_ENOUGH_MATERIAL = 11 // ÀÚÀç ºÎÁ· }; unsigned long m_dwCID; // OwnerID ¶ó°í º¸¸éµÈ´Ù. unsigned long m_dwArmsID; unsigned char m_cState; unsigned long m_dwValue; // ž½ÂÇÑ Ä³¸¯ÅÍ CID, ³»¸° ij¸¯ÅÍ CID, ¼ö¸®½Ã ¸ñÇ¥ HP, ÀÚÀ縦 ¸ðµÎ µ¹·ÁÁִ°¡? unsigned char m_cSubCmd; }; // °ø¼º ¿ÀºêÁ§Æ® ºê·Îµå ij½ºÆ® typedef struct PktSiegeBroadCast* LPPktSiegeBroadCast; struct PktSiegeBroadCast : public PktBase { // CASTLE_TODO : »ç¿ëÇÏÁö ¾Ê´Â ¿¾³¯ °ø¼º ¿ÀºêÁ§Æ® ºê·Îµå ij½ºÆ® ÆÐŶ unsigned long m_dwCID; unsigned long m_dwOwnerID; // ¼º, ±æµå ¿ä»õ, ¼ÒÀ¯Ä³¸¯ÅÍ ID unsigned long m_dwGID; // ±æµå ID unsigned long m_dwNowHP; unsigned long m_dwMaxHP; unsigned long m_dwRiderID[Siege::AIRSHIP_RIDER_NUM]; unsigned short m_wObjectType; unsigned char m_cState; unsigned char m_cSubState; unsigned char m_cUpgradeStep; unsigned char m_cUpgradeType; float m_fDefaultDir; CNetworkPos m_NetworkPos; }; typedef struct PktSiegeBroadCast2nd* LPPktSiegeBroadCast2nd; struct PktSiegeBroadCast2nd : public PktBase { // CASTLE_TODO : »ç¿ëÇÏÁö ¾Ê´Â ¿¾³¯ °ø¼º ¿ÀºêÁ§Æ® ºê·Îµå ij½ºÆ® ÆÐŶ }; typedef struct PktNewSiegeBroadCast* LPPktNewSiegeBroadCast; struct PktNewSiegeBroadCast : public PktBase { unsigned long m_dwCID; unsigned char m_cType; }; // °ÔÀÓ ½Ã°£ ÆÐŶ struct TimeInfo { unsigned char m_cMonth; unsigned char m_cDay; unsigned char m_cHour; unsigned char m_cMinute; unsigned long m_dwTime; // DBAgentServer -> GameServer : Duration Minutes // GameServer -> Client : Remain Seconds }; struct GuildTimeInfo { bool m_bUpdated; unsigned char m_cNowGuildTime; TimeInfo m_TimeInfo; }; struct RealmTimeInfo { bool m_bUpdated; unsigned char m_cNowRealmTime; TimeInfo m_TimeInfo; }; struct SiegeTimeInfo { bool m_bUpdated; unsigned char m_cNowSiegeTime; TimeInfo m_TimeInfo; }; struct EnterTimeInfo { bool m_bUpdated; unsigned char m_cNowEnterTime; TimeInfo m_TimeInfo; }; struct EventTimeInfo { bool m_bUpdated; unsigned char m_cNowEventTime; TimeInfo m_TimeInfo; }; struct CastleSiegeInfo { unsigned long m_dwCastleID; bool m_bEnableSiege; // ÇöÀç °ø¼ºÀÌ °¡´ÉÇѰ¡? }; // °¡º¯Á¤º¸ : + CastleSiegeInfo * SiegeTimeInfo::m_cCastleNum typedef struct PktGameTimeInfo* LPPktGameTimeInfo; struct PktGameTimeInfo : public PktBase { unsigned char m_cType; unsigned char m_cCastleNum; unsigned short m_wSize; GuildTimeInfo m_GuildTimeInfo; RealmTimeInfo m_RealmTimeInfo; SiegeTimeInfo m_SiegeTimeInfo; EnterTimeInfo m_EnterTimeInfo; EventTimeInfo m_EventTimeInfo; }; // ½ºÅÚ½º »ç¿ë °¡´É ¿©ºÎ ÆÐŶ typedef struct PktStealthInfo* LPPktStealthInfo; struct PktStealthInfo : public PktBase { bool m_bUseStealth; // ½ºÅÚ½º¸¦ »ç¿ëÇÒ¼ö Àִ°¡? }; // ¼º Á¤º¸ ¾÷µ¥ÀÌÆ® ( DBAgentServer --> GameServer --> Client ) typedef struct PktCastleUpdate* LPPktCastleUpdate; struct PktCastleUpdate : public PktBase { unsigned long m_dwCastleID; // CastleID unsigned long m_dwGID; // ¼ÒÀ¯ Guild ID unsigned short m_wTax; // ¼¼À² unsigned long m_dwTaxMoney; // ¼¼±Ý ¼öÀÔ±Ý unsigned char m_cInvincibleDay; // ³²Àº ¹«Àû Ƚ¼ö unsigned char m_cTaxMoneyRemainDay; // ¼öÀÔ±ÝÀ» ¹Þ±â±îÁö ³²Àº ³¯ (GameServer -> Client) CastleRight m_CastleRight; // ±æµå¿øµéÀÇ ¼º °ü¸® ±ÇÇÑ // char m_szCastleName[MAX_CASTLE_NAME_LEN]; // ¼º À̸§ }; // ±æµå ¿ä»õ °ü·Ã ¸Þ¼¼Áö ÆÐŶ typedef struct PktCampMessage* LPPktCampMessage; struct PktCampMessage : public PktBase { enum { MAX_NAME_LEN = 16 }; enum { MSGCMD_ENCAMP_START = 0, // ±æµå ¿ä»õ ±¸Ãà ½ÃÀÛ MSGCMD_ENCAMPING, // ±æµå ¿ä»õ ±¸Ãà Áß MSGCMD_ENCAMP_END, // ±æµå ¿ä»õ ±¸Ãà ¿Ï·á MSGCMD_CANCEL_START, // ±æµå ¿ä»õ ±¸Ãà Ãë¼Ò MSGCMD_CANCEL_END, // ±æµå ¿ä»õ ±¸Ãà Ãë¼Ò ¿Ï·á MSGCMD_REPAIR_START, // ±æµå ¿ä»õ ¼ö¸® MSGCMD_REPAIR_END, // ±æµå ¿ä»õ ¼ö¸® ¿Ï·á MSGCMD_UPGRADE_START, // ±æµå ¿ä»õ ¾÷±×·¹À̵å MSGCMD_UPGRADE_END, // ±æµå ¿ä»õ ¾÷±×·¹ÀÌµå ¿Ï·á MSGCMD_SET_RIGHT, // ±æµå ¿ä»õ °ü¸® ±ÇÇÑ º¯°æ MSGCMD_SELF_DESTROY_START, // ±æµå ¿ä»õ ½º½º·Î ÆÄ±« ½ÃÀÛ MSGCMD_SELF_DESTROY_END, // ±æµå ¿ä»õ ½º½º·Î ÆÄ±« ¿Ï·á MSGCMD_CHANGE_TYPE_START, // ±æµå ¿ä»õ ŸÀÔ º¯Çü ½ÃÀÛ MSGCMD_CHANGE_TYPE_END, // ±æµå ¿ä»õ ŸÀÔ º¯Çü ¿Ï·á MSGCMD_ATTACKED, // ±æµå ¿ä»õ °ø°Ý ´çÇÔ MSGCMD_DESTROYED, // ±æµå ¿ä»õ ÆÄ±«µÊ (ÆÄ±« ´çÇÔ) MSGCMD_DESTROY, // ±æµå ¿ä»õ ÆÄ±«ÇÔ (ÆÄ±« ÇÔ) MSGCMD_MINING_END, // ä±¼±â ä±¼ ¿Ï·á MSGCMD_SHOP_GAIN_TAX, // ±æµå ¿ä»õ »óÁ¡ ¼¼±Ý ¼öÀÍ±Ý È¹µæ MSGCMD_WEAPON_ENCAMP_START, // ¿ùµå ¿þÆù ±¸Ãà ½ÃÀÛ MSGCMD_WEAPON_ENCAMPING, // ¿ùµå ¿þÆù ±¸Ãà Áß MSGCMD_WEAPON_ENCAMP_END, // ¿ùµå ¿þÆù ±¸Ãà ¿Ï·á MSGCMD_WEAPON_CANCEL_START, // ¿ùµå ¿þÆù ±¸Ãà Ãë¼Ò MSGCMD_WEAPON_CANCEL_END, // ¿ùµå ¿þÆù ±¸Ãà Ãë¼Ò ¿Ï·á MSGCMD_WEAPON_REPAIR_START, // ¿ùµå ¿þÆù ¼ö¸® MSGCMD_WEAPON_REPAIR_END, // ¿ùµå ¿þÆù ¼ö¸® ¿Ï·á MSGCMD_WEAPON_UPGRADE_START, // ¿ùµå ¿þÆù ¾÷±×·¹À̵å MSGCMD_WEAPON_UPGRADE_END, // ¿ùµå ¿þÆù ¾÷±×·¹ÀÌµå ¿Ï·á MSGCMD_WEAPON_SET_RIGHT, // ¿ùµå ¿þÆù °ü¸® ±ÇÇÑ º¯°æ MSGCMD_WEAPON_SELF_DESTROY_START, // ¿ùµå ¿þÆù ½º½º·Î ÆÄ±« ½ÃÀÛ MSGCMD_WEAPON_SELF_DESTROY_END, // ¿ùµå ¿þÆù ½º½º·Î ÆÄ±« ¿Ï·á MSGCMD_WEAPON_CHARGE_START, // ¿ùµå ¿þÆù ¹«±â ÀåÀü ½ÃÀÛ MSGCMD_WEAPON_CHARGE_END, // ¿ùµå ¿þÆù ¹«±â ÀåÀü ¿Ï·á MSGCMD_WEAPON_ATTACKED, // ¿ùµå ¿þÆù °ø°Ý ´çÇÔ MSGCMD_WEAPON_DESTROYED, // ¿ùµå ¿þÆù ÆÄ±«µÊ MSGCMD_WEAPON_FIRE_WARNING, // ¿ùµå ¿þÆù ¹ß»ç °æ°í MSGCMD_TAKE_IN_MATERIAL, // ±æµå ¿ä»õ¿¡ ÀÚÀç ³Ö±â MSGCMD_TAKE_OUT_MATERIAL, // ±æµå ¿ä»õ¿¡¼­ ÀÚÀç »©±â MSGCMD_GUILD_TIME_COMPLETE, // ±æµå ÀçÁ¤ºñ ½Ã°£ ¿Ï·á. MSGCMD_MAX_CMD }; struct sRight { unsigned char m_cCampControl; }; char m_szMasterName[MAX_NAME_LEN]; char m_szPCName[MAX_NAME_LEN]; char m_szGuildName[Guild::MAX_GUILD_NAME_LEN]; unsigned long m_dwCampID; unsigned long m_dwGID; unsigned char m_cZone; unsigned char m_cMsgCmd; unsigned char m_cRemainTime; unsigned char m_cNation; sRight m_Right; bool m_bNotify; int m_nValue1; // ¸í¼ºÄ¡, º¯ÇüµÈ ŸÀÔ, ¿ùµå ¿þÆù ¹ß»ç XÁÂÇ¥, ¿ùµå¿þÆùÀ» ÆÄ±«´çÇÑ ±¹°¡, °ø¼º ÀÚÀç À̵¿ °¹¼ö int m_nValue2; // ±âÁ¸ ŸÀÔ, ¿ùµå ¿þÆù ¹ß»ç ZÁÂÇ¥, °ø¼º ÀÚÀç ÃÖÁ¾ °¹¼ö unsigned char m_cTimeChk; // ÃÖ´ë 256 ºÐ. }; struct PktWarOnOff : public PktBase { enum Error { E_WAR_OFF = 2, // ÀüÀï Ç÷¡±×¸¦ Off ½Ãų¼ö ¾øÀ½ E_WAR_ON = 3, // ÀüÀï Ç÷¡±×¸¦ On ½Ãų¼ö ¾øÀ½ E_WAR_INSTANCE = 4, // ÀüÀï Ç÷¡±×¸¦ Instance ½Ãų¼ö ¾øÀ½ E_INVALID_TYPE = 5 // Á¸ÀçÇÏÁö ¾Ê´Â ÀüÀï ŸÀÔ }; unsigned long m_dwCID; unsigned char m_cType; // GameTime::eTimeType unsigned char m_cFlag; // Creature::WarFlag }; // ±¹°¡ÀüÀï °øÇåÈÆÀå Æ÷ÀÎÆ®. struct PktRealmPoint : public PktBase { enum { REALM_JOIN = 1, // ±¹°¡ ÀüÀï¿¡ Âü¿© ÇßÀ» °æ¿ì. REALM_OUT = 2 // ±¹°¡ ÀüÀï¿¡ ¹ÌÂü¿© ÇßÀ» °æ¿ì. }; unsigned char m_cRealmPoint; // °øÇåÈÆÀå Æ÷ÀÎÆ®. unsigned long m_dwCID; // ij¸¯ÅÍ CID. unsigned char m_cType; // Âü¿©, ¹ÌÂü¿©. }; #pragma pack() #endif // _CASTLE_PACKET_H_