#ifndef _CHAR_ATTACK_PACKET_H_ #define _CHAR_ATTACK_PACKET_H_ // CharAttackPacket.h #include #include #include #include "CharAttackPacketStruct.h" #include #pragma pack(1) // ij¸¯ÅÍ °ø°Ý ÆÐŶ typedef struct PktAt* LPPktAt; struct PktAt : public PktBase { POS m_Postion; // °ø°ÝÀÚ Ä³¸¯ÅÍ À§Ä¡ float m_fDir; // °ø°ÝÀÚ ¹æÇâ unsigned long m_dwCharID; // °ø°ÝÀÚ Ä³¸¯ÅÍ ¾ÆÀ̵ð AtType m_AtType; // °ø°Ý ŸÀÔ AtNode m_AtNode; // ¹æ¾îÀÚ Á¤º¸ }; // ij¸¯ÅÍ °ø°Ý ÆÐŶ Ack (°¡º¯ ±æÀÌ) + ¹æ¾îÀÚ ³ëµå typedef struct PktAtAck* LPPktAtAck; struct PktAtAck : public PktBase { enum PktAtAckErr { FAIL_ALREADY_DEAD = 2, // ÀÌ¹Ì Á×Àº Å©¸®ÃÄ¿¡°Ô °ø°Ý FAIL_TOO_FAR = 3, // °Å¸®°¡ ¸Ö¾îÁ®¼­ ½ºÅ³ »ç¿ë ºÒ°¡ FAIL_SUICIDE = 4, // ½ºÅ³À» »ç¿ëÇϸé ÀÚ»ìÇÏ°Ô µÈ´Ù. FAIL_PEACE_TO_WAR = 5, // ¹ÝÀü ¸ðµå ij¸¯ÅͰ¡ ÀüÅõ ¸ðµå ij¸¯ÅÍ¿¡°Ô ±àÁ¤ÀûÀÎ ÀÎæƮ ºÎ¿© ½Ãµµ FAIL_SPELL = 6, // ½ºÆç »ç¿ë ½ÇÆÐ FAIL_TO_SIEGE_OBJECT = 7, // °ø¼º ¿ÀºêÁ§Æ®¿¡°Ô ÇÒ¼ö ¾ø´Â °ø°Ý ½Ãµµ FAIL_TO_MONSTER = 8, // ¸ó½ºÅÍ¿¡°Ô ÇÒ¼ö ¾ø´Â °ø°Ý ½Ãµµ FAIL_FRIENDLY_ATTACK = 9, // ¾Æ±º¿¡°Ô °ø°ÝÇÒ¼ö ¾ø´Ù FAIL_NOT_SIEGE_ATTACK = 10, // °ø¼ºº´±âÀÇ °ø°ÝÀÌ À߸øµÇ¾ú´Ù. FAIL_NOT_STEALTH = 11, // ½ºÅÚ½º¸¦ »ç¿ëÇÒ ¼ö ¾ø´Ù. }; unsigned long m_dwCharID; // °ø°ÝÀÚ Ä³¸¯ÅÍ ¾ÆÀ̵ð AtType m_AtType; // °ø°Ý ŸÀÔ unsigned short m_wHP; // °ø°ÝÀÚ HP unsigned short m_wMP; // °ø°ÝÀÚ MP unsigned short m_wMPHeal; // °ø°ÝÀÚ MP ȸº¹·® unsigned char m_cJudge; // Ç÷¡±× unsigned char m_cDefenserNum; // ¹æ¾îÀÚ ¼ö }; // ij¸¯ÅÍ °ø°Ý Á¤º¸ (°¡º¯ ±æÀÌ) + ¹æ¾îÀÚ ³ëµå typedef struct PktAtInfo* LPPktAtInfo; struct PktAtInfo : public PktBase { unsigned long m_dwCharID; // ij¸¯ÅÍ ¾ÆÀ̵ð AtType m_AtType; // °ø°Ý ŸÀÔ unsigned char m_cDefenserNum; // ¹æ¾îÀÚ ¼ö }; // ij¸¯ÅÍ °ø°Ý ¹ÞÀ½ ÆÐŶ typedef struct PktAted* LPPktAted; struct PktAted : public PktBase { POS m_Postion; // °ø°ÝÀÚ À§Ä¡ float m_fDir; // °ø°ÝÀÚ ¹æÇâ unsigned long m_dwCharID; // °ø°ÝÀÚ ¾ÆÀ̵ð unsigned long m_dwMyID; // ¹æ¾îÀÚ ¾ÆÀ̵ð AtType m_AtType; // °ø°Ý ŸÀÔ unsigned short m_wMyHP; // ¹æ¾îÀÚ HP unsigned short m_wMyMP; // ¹æ¾îÀÚ MP unsigned short m_wMyMPHeal; // ¹æ¾îÀÚ MP ȸº¹·® unsigned char m_cJudge; // ÆÇÁ¤ °ª }; // ij¸¯ÅÍ Àåºñ ³»±¸µµ typedef struct PktEquipDurability* LPPktEquipDurability; struct PktEquipDurability : public PktBase { unsigned long m_dwCharID; // ij¸¯ÅÍ ¾ÆÀ̵ð unsigned char m_cIndex; // Àåºñ À§Ä¡ unsigned char m_cValue; // ³²Àº ³»±¸µµ unsigned char m_cValueMax; // ³²Àº ÃÖ´ë³»±¸µµ }; // µà¾ó ¸í·É // // ¸í·É : // 0 = Á¦¾È, 1 = ¼ö¶ô, 2 = °ÅÀý, 3 = ·Î±×¾Æ¿ô, 4 = »ç¸Á // // ¿¡·¯ : // 0 = ¼º°ø, 1 = ¼­¹ö ¿¡·¯, 2 = ÀÌ¹Ì µà¾óÁßÀΠij¸¯ÅÍ¿¡°Ô µà¾ó ½Åû, // 3 = °ÅºÎ ¿É¼ÇÀÌ ÄÑÁø »óÅ typedef struct PktDuC* LPPktDuC; struct PktDuC : public PktBase { enum DuelCmd { DUC_PROPOSE = 0, DUC_READY = 1, DUC_REFUSE = 2, DUC_LOGOUT = 3, DUC_DEAD = 4, DUC_PARTY_PROPOSE = 5, DUC_PARTY_READY = 6, DUC_REQUEST_PARTY_INFO = 7, DUC_CANCEL = 8 }; enum PktDuCError { NO_SERVER_ERR = 0, SERVER_ERROR = 1, FAIL_DUELING_CHAR = 2, FAIL_REJECT = 3, FAIL_NOT_LEADER = 4, FAIL_NOT_PARTY = 5 }; unsigned long m_dwSenderID; // º¸³½ÀÌ ¾ÆÀ̵ð unsigned long m_dwRecverID; // ¹Þ´ÂÀÌ ¾ÆÀ̵ð unsigned char m_cCmd; // ¸í·É }; // ÆÀ¹èƲ Á¤º¸ typedef struct PktTBInfo* LPPktTBInfo; struct PktTBInfo : public PktBase { enum DuelCmd { DUC_PROPOSE = 0, DUC_READY = 1, DUC_REFUSE = 2, DUC_LOGOUT = 3, DUC_DEAD = 4, DUC_PARTY_PROPOSE = 5, DUC_PARTY_READY = 6, DUC_REQUEST_PARTY_INFO = 7 }; unsigned long m_dwCharID; char m_strChallengerName[CHAR_INFOST::MAX_NAME_LEN]; unsigned char m_cCmd; unsigned char m_cMemberNum; }; // ij¸¯ÅÍ Ã¦Æ®&ÀÎæƮ Á¤º¸ typedef struct PktSpInfo* LPPktSpInfo; struct PktSpInfo : public PktBase { unsigned long m_dwCharID; // ij¸¯ÅÍ ¾ÆÀ̵ð unsigned short m_nEnchantLevel; // ÁÖ¹® ·¹º§ unsigned char m_cSpellType; // ÁÖ¹® ŸÀÔ ( namespace Skill::SpellTypeÂüÁ¶ ) unsigned long m_dwEnchantTime; // ÁÖ¹® À¯Áö½Ã°£ bool m_bOnOff; // ÄÑÁü/²¨Áü }; // ij¸¯ÅÍ ¸®½ºÆù typedef struct PktRs* LPPktRs; struct PktRs : public PktBase { enum RespawnCmd { RS_NORMAL = 0, // ÀϹÝÀûÀÎ ¹æ½Ä (±âº» ¸®½ºÆù Àå¼Ò¿¡¼­ ¸®½ºÆù) RS_SELECT = 1, // ¸®½ºÆù Àå¼Ò ¼±Åà ȮÁ¤ RS_FORMER_PLACE = 2, // Á¦ÀÚ¸® ¸®½ºÆù (½ºÅ³¿¡ ÀÇÇØ) RS_BG_HUMAN1 = 3, // ÈÞ¸Õ Æ÷ÀÎÆ®1 (¹èƲ±×¶ó¿îµå) RS_BG_HUMAN2 = 4, // ÈÞ¸Õ Æ÷ÀÎÆ®2 (¹èƲ±×¶ó¿îµå) RS_BG_HUMAN3 = 5, // ÈÞ¸Õ Æ÷ÀÎÆ®3 (¹èƲ±×¶ó¿îµå) RS_BG_AKHAN1 = 6, // ¾ÆÄ­ Æ÷ÀÎÆ®1 (¹èƲ±×¶ó¿îµå) RS_BG_AKHAN2 = 7, // ¾ÆÄ­ Æ÷ÀÎÆ®2 (¹èƲ±×¶ó¿îµå) RS_BG_AKHAN3 = 8, // ¾ÆÄ­ Æ÷ÀÎÆ®3 (¹èƲ±×¶ó¿îµå) RS_BGSERVER_RANDOM = 9, // ¹èƲ ±×¶ó¿îµå ¼­¹ö±º RS_BG_EXIT = 10 // ¹èƲ±×¶ó¿îµå Å»Ãâ }; unsigned long m_dwCharID; unsigned char m_cCmd; unsigned long m_dwTownID; POS m_Position; }; // ij¸¯ÅÍ ¸®½ºÆù Ack typedef struct PktRsAck* LPPktRsAck; struct PktRsAck : public PktBase { enum Error { ERR_NOT_EXIST_CAMP = 2, // Á¸ÀçÇÏÁö ¾Ê´Â ¿ä»õ }; POS m_Position; // ÇöÀç À§Ä¡ __int64 m_dlExp; // ÇöÀç °æÇèÁ¡ unsigned long m_dwGold; // ÇöÀç º¸À¯ ±Ý¾× unsigned long m_dwCharID; // ij¸¯ÅÍ ¾ÆÀ̵ð unsigned short m_wHP; // HP unsigned short m_wMP; // MP }; // ¸®½ºÆù Ack (¹èƲ±×¶ó¿îµå ´ë±âÁß) typedef struct PktBGRsAck* LPPktBGRsAck; struct PktBGRsAck : public PktBase { enum PktBGRsAckErr { FAIL_PERSONNEL_OVER = 2 }; unsigned long m_dwCharID; // ij¸¯ÅÍ ¾ÆÀ̵ð unsigned short m_wTurn; // ij¸¯ÅÍ ¼ø¼­ unsigned short m_wWaitNum; // Àüü ´ë±âÀÎ ¼ö unsigned short m_wLeftTime; // ³²Àº ½Ã°£ unsigned short m_wHumanNum; // Àüü ÈÞ¸Õ ¼ö unsigned short m_wAkhanNum; // Àüü ¾ÆÄ­ ¼ö }; // ¸®½ºÆù Å¥ ´ë±âÀÎ Á¤º¸ (¹èƲ±×¶ó¿îµå¿ë) typedef struct PktRsWaitQueue* LPPktRsWaitQueue; struct PktRsWaitQueue : public PktBase { unsigned long m_dwCharID; // ij¸¯ÅÍ ¾ÆÀ̵ð }; // ¸®½ºÆù Å¥ ´ë±âÀÎ Á¤º¸ Ack (¹èƲ±×¶ó¿îµå¿ë) typedef struct PktRsWaitQueueAck* LPPktRsWaitQueueAck; struct PktRsWaitQueueAck : public PktBase { enum { MAX_POINT_NUM_PER_RACE = 3}; unsigned long m_dwCharID; // ij¸¯ÅÍ ¾ÆÀ̵ð unsigned short m_wWaitNum[MAX_POINT_NUM_PER_RACE]; // °¢ ¸®½ºÆù À§Ä¡º° ´ë±âÀÎ ¼ö }; // ij¸¯ÅÍ ¸®½ºÆù Á¤º¸ (¸®½ºÆù À§Ä¡µé) // Ãß°¡ Á¤º¸°¡ µÚ¿¡ µû¶ó ºÙ¾î¼­ °£´Ù. typedef struct PktRsInfo* LPPktRsInfo; struct PktRsInfo : public PktBase { unsigned long m_dwCharID; }; // ij¸¯ÅÍ ¸®½ºÆù Á¤º¸ Ack (¸®½ºÆù À§Ä¡µé) // Ãß°¡ Á¤º¸°¡ µÚ¿¡ µû¶ó ºÙ¾î¼­ °£´Ù. typedef struct PktRsInfoAck* LPPktRsInfoAck; struct PktRsInfoAck : public PktBase { enum Const { MAX_RESPAWN_POINT = 50 }; unsigned long m_dwCharID; unsigned char m_cRsAreaNum; unsigned short m_wSize; }; struct RespawnArea { unsigned long m_dwTownID; POS m_RespawnPos; }; // ij¸¯ÅÍ ¸®½ºÆù Áö¿ª ¼¼ºÎ Á¤º¸ typedef struct PktRsAreaInfo* LPPktRsAreaInfo; struct PktRsAreaInfo : public PktBase { unsigned long m_dwCharID; unsigned long m_dwTownID; // ¸¶À», ±æµå ¿ä»õ, ¼º ID }; // ij¸¯ÅÍ ¸®½ºÆù Áö¿ª ¼¼ºÎ Á¤º¸ Ack typedef struct PktRsAreaInfoAck* LPPktRsAreaInfoAck; struct PktRsAreaInfoAck : public PktBase { unsigned long m_dwCharID; unsigned long m_dwTownID; unsigned short m_nWaitOrder; // ´ë±â¼øÀ§ unsigned char m_cRemainHour; // ³²Àº ½Ã°£ (½Ã) unsigned char m_cRemainMin; // ³²Àº ½Ã°£ (ºÐ) unsigned char m_cRemainSec; // ³²Àº ½Ã°£ (ÃÊ) bool m_bCount; // ½Ã°£ Ä«¿îÆÃ ½ÃÀÛ¿©ºÎ }; // ¾î¿öµå ó¸® typedef struct PktAw* LPPktAw; struct PktAw : public PktBase { unsigned long m_dwCharID; // ij¸¯ÅÍ ¾ÆÀ̵ð unsigned long m_dwExp; // °æÇèÄ¡ }; // ¹ÝÀü/ÀüÀï¸ðµå Àüȯ typedef struct PktPeace* LPPktPeace; struct PktPeace : public PktBase { enum PktPeaceErr { FAIL_WRONG_SYNC = 2, // Ŭ¶óÀ̾ðÆ®/¼­¹ö °£ÀÇ ½ÌÅ©°¡ ¸ÂÁö ¾ÊÀ½ FAIL_BATTLE_GROUND = 3, // ¹èƲ±×¶ó¿îµå¿¡¼­´Â ¸ðµå º¯°æ ºÒ°¡´É FAIL_GUILD_MEMBER = 4 // ±æµå¿øÀº ¸ðµå º¯°æ ºÒ°¡´É }; unsigned long m_dwCharID; // ij¸¯ÅÍ ¾ÆÀ̵ð unsigned char m_cLeftTime; // ³²Àº ½Ã°£ bool m_bPeace; // ¹ÝÀü ¸ðµå }; // ¼Òȯ¼ö ¸í·É typedef struct PktSummonCmd* LPPktSummonCmd; struct PktSummonCmd : public PktBase { enum SummonCmd { SUC_ATTACK = 0, SUC_RETURN = 1, SUC_DIE = 2, SUC_GUARD_ON = 3, SUC_GUARD_OFF = 4 }; unsigned long m_dwCharID; // ij¸¯ÅÍ ¾ÆÀ̵ð unsigned long m_dwTargetID; // ´ë»ó ¾ÆÀ̵ð unsigned char m_cCmd; // ¸í·É }; // ¼®»ó Á¤º¸ typedef struct PktStatueInfo* LPPktStatueInfo; struct PktStatueInfo : public PktBase { unsigned long m_dwMileage; // º¸³Ê½º°¡ Ãß°¡µÈ °øÇå¸Þ´Þ (0ÀÌ¸é º¸³Ê½º ¾øÀ½) unsigned short m_wHumanNum; // Àüü ÈÞ¸Õ ¼ö unsigned short m_wAkhanNum; // Àüü ¾ÆÄ­ ¼ö unsigned short m_wNowHP; // ¼®»óÀÇ ³²Àº HP unsigned short m_wKID; // ¼®»ó Á¾·ù ¾ÆÀ̵ð unsigned char m_cState; // ¼®»ó »óÅ (¸ó½ºÅÍ State¿Í µ¿ÀÏ) unsigned char m_cIndex; // ¼®»ó À妽º }; // Ä«¸Þ¶ó ½ºÅ©¸³Æ® typedef struct PktCameraScript* LPPktCameraScript; struct PktCameraScript : public PktBase { unsigned long m_dwDeleteObject; // »ç¶óÁö´Â ¿ÀºêÁ§Æ® ¾ÆÀ̵ð unsigned long m_dwNewObject; // »ý¼ºµÇ´Â ¿ÀºêÁ§Æ® ¾ÆÀ̵ð POS m_NewPos; // »ý¼ºµÇ´Â ¿ÀºêÁ§Æ® À§Ä¡ }; // »ç¸Á ¹× ºÎȰ Á¤º¸ struct PktDeadInfo : public PktDD { enum TypeCode { DEAD = 0, RESPAWN = 1, RESURRECT = 2 }; /* typecode:00 HP/MP Á×Àº³ÑCID / Á×Àº³ÑÀ̸§ / »ìÇØÀÚCID / »ìÇØÀÚÀ̸§ / »ìÇØÀÚ±æµå¸í typecode:00 HP/MP Á×Àº³ÑCID / Á×Àº³ÑÀ̸§ / »ìÇØÀÚCID / »ìÇØÀÚÀ̸§ / 'XXXXX´ÔÀÌ ¸ó½ºÅÍ YYYYY¿¡ ÀÇÇØ »ç¸ÁÇϼ̽À´Ï´Ù.' 'XXXXX´ÔÀÌ YYYYY±æµåÀÇ ZZZZZ´Ô¿¡ ÀÇÇØ »ç¸ÁÇϼ̽À´Ï´Ù.' 'XXXXX´ÔÀÌ ZZZZZ´Ô¿¡ ÀÇÇØ »ç¸ÁÇϼ̽À´Ï´Ù.' typecode:01 HP/MP Á×Àº³ÑCID / Á×Àº³ÑÀ̸§ / 'XXXXX´ÔÀÌ ÀÏ¹Ý ºÎȰÀ» ¼±ÅÃÇϼ̽À´Ï´Ù. ¸¶À»À̳ª ¿ä»õ¿¡¼­ ¸®½ºÆùÇÏ°Ô µË´Ï´Ù.' typecode:02 HP/MP Á×Àº³ÑCID / Á×Àº³ÑÀ̸§ / »ì¸°³ÑCID / »ì¸°³ÑÀ̸§ / »ì¸°³Ñ±æµå¸í typecode:02 HP/MP Á×Àº³ÑCID / Á×Àº³ÑÀ̸§ / 'XXXXX´Ô¿¡ ÀÇÇØ YYYYY´ÔÀÌ ºÎȰ Çϼ̽À´Ï´Ù.' '´©±º°¡¿¡ ÀÇÇØ YYYYY´ÔÀÌ ºÎȰ Çϼ̽À´Ï´Ù.' */ unsigned char m_cTypeCode; // ŸÀÔÄÚµå unsigned short m_usDeadMemCurrHP; // Á×Àº³Ñ HP unsigned short m_usDeadMemCurrMP; // Á×Àº³Ñ MP unsigned long m_dwDeadCID; // Á×Àº³Ñ CID unsigned long m_dwDeadPID; // Á×Àº³Ñ PID unsigned long m_dwReferenceID; // Á×À̰ųª »ì¸°³Ñ CID unsigned char m_cDeadNation; // Á×Àº³Ñ ±¹Àû unsigned char m_cDeadClass; // Á×Àº³Ñ Ŭ·¡½º unsigned char m_cRefNation; // Á×À̰ųª »ì¸°³Ñ ±¹Àû unsigned char m_cRefClass; // Á×À̰ųª »ì¸°³Ñ Ŭ·¡½º char m_szDeadName[CHAR_INFOST::MAX_NAME_LEN]; char m_szRefName[CHAR_INFOST::MAX_NAME_LEN]; char m_szRefGuildName[Guild::MAX_GUILD_NAME_LEN]; }; #pragma pack() #endif