/* ========================================================================== * ÆÄ ÀÏ : Party_Common.h * ¸ñ Àû : * ÀÛ ¼º ÀÚ : ±è°¡¶÷ * ÀÛ ¼º ÀÏ : 2007-11-05 * ÁÖÀÇ»çÇ× : *===========================================================================*/ #pragma once #include "Skill_Common.h" #pragma pack(push,1) #include "CommonDefines.h" #include "CommonNetworkMsgStruct.h" const int MAX_PARTY = 5; // Ŭ¶óÀÌ¾ðÆ®»óÀÇ µ¥ÀÌÅÍ ÀúÀå »çÀÌÁî /*-- ÆÄƼ °¡ÀÔ±ÇÀ¯ */ #define ERROR_PARTY_ADD_SUCCESS 0 // ¼º°ø - ÆÄƼ½Åû ¼º°ø #define ERROR_PARTY_ADD_CREATE_SUCCESS 1 // ¼º°ø - ÆÄƼ»ý¼ºµÊ #define ERROR_PARTY_ADD_STATUS 2 // ½ÇÆÐ - ½ÅûÇÒ¼ö ¾ø´Â »óÅ #define ERROR_PARTY_ADD_COMPLETE 3 // ½ÇÆÐ - ÇØ´çÀ¯Àú°¡ ÆÄƼ °¡ÀÔÁß #define ERROR_PARTY_ADD_CONTINUE 4 // ½ÇÆÐ - ÀÚ±âÀÚ½ÅÀÌ ÃÊ´ëÁßÀÎ À¯Àú°¡ ÀÖÀ¸¹Ç·Î ÃÊ´ëºÒ°¡. #define ERROR_PARTY_ADD_USER 5 // ½ÇÆÐ - ÃÊ´ëÇÑij¸¯ÅÍ ¾øÀ½. #define ERROR_PARTY_ADD_COUNT 6 // ½ÇÆÐ - ÆÄƼÀοø Ç® #define ERROR_PARTY_ADD_REFUSE 7 // ½ÇÆÐ - ÆÄƼÃÊ´ë °ÅÀý #define ERROR_PARTY_ADD_NOTLEADER 8 // ½ÇÆÐ - ±ÇÇѾøÀ½ #define ERROR_PARTY_ADD_USEROUT 9 // ½ÇÆÐ - ÃÊ´ëÇÑ À¯Àú°¡ °ÔÀÓÁ¾·áÇÔ #define ERROR_PARTY_ADD_MAP 10 // ½ÇÆÐ - ÃÊ´ëÇÑ À¯Àú°¡ ¸ÊÀ̵¿Áß #define ERROR_PARTY_ADD_CREATEFAIL 11 // ½ÇÆÐ - ÆÄƼ »ý¼º ½ÇÆÐ #define ERROR_PARTY_ADD_OPTIONREFUSE 12 // ½ÇÆÐ - °ÅºÎ »óÅ #define ERROR_PARTY_ADD_FAIL 13 // ½ÇÆÐ - ½Åû ½ÇÆÐ #define ERROR_PARTY_ADD_PARTYUNION 14 // ½ÇÆÐ - ÆÄƼ ¿¬ÇÕÁß #define ERROR_PARTY_ADD_REFUSETIME 15 // ÀÀ´ä½Ã°£Ãʰú struct MSG_REQ_PARTY_ADD : MSGROOT { wchar_t Name[MAX_NAME_BUFFER_SIZE]; /// ÆÄƼÃÊ´ëÇÒ Ä³¸¯ÅÍ À̸§ }; struct MSG_RES_PARTY_ADD : MSG_ERROR {}; struct MSG_SYN_PARTY_ADD : MSGROOT { wchar_t Name[MAX_NAME_BUFFER_SIZE]; /// ÆÄƼÃÊ´ëÇÑ Ä³¸¯ÅÍ À̸§ }; /*-- ÆÄƼ °¡ÀÔ°á°ú */ #define ERROR_PARTY_REP_SUCESS 0 // ¼º°ø - °¡ÀÔ #define ERROR_PARTY_REP_REFUSE 1 // ¼º°ø - ÃÊ´ë °ÅÀý #define ERROR_PARTY_REP_FULL 2 // ½ÇÆÐ - ÆÄƼ Ç® #define ERROR_PARTY_REP_FAIL 3 // ½ÇÆÐ - Á¸ÀçÇÏÁö ¾ÊÀ½ #define ERROR_PARTY_REP_PARTYUNION 4 // ½ÇÆÐ - ÆÄƼ¿¬ÇÕÁß #define ERROR_PARTY_REP_REFUSETIME 5 // ½ÇÆÐ - ÀÀ´ä½Ã°£ Ãʰú #define PARTY_REP_ACCEPT 0 // ½Â¶ô #define PARTY_REP_REJECT 1 // °ÅÀý #define PARTY_REP_REJECTTIME 2 // °ÅÀý - ÀÀ´ä½Ã°£ Ãʰú struct MSG_REQ_PARTY_REP : MSGROOT { char Reply; /// 0 : °ÅÀý 1: ¼ö¶ô }; struct MSG_RES_PARTY_REP : MSG_ERROR {}; /*-- ÆÄƼ Á¤º¸ ¸®½ºÆ® */ enum ePLAYER_JOB; enum PARTY_DIVIDE_TYPE { PARTY_DIVIDE_NONE = 0, PARTY_DIVIDE_TURN, /// ¼ø¼­´ë·Î PARTY_DIVIDE_RANDOM, /// ·£´ý PARTY_DIVIDE_DAMAGE, /// µ¥¹ÌÁö PARTY_DIVIDE_FREE, /// ÀÚÀ¯ºÐ¹è (ȹµæ±ÇÇÑÀÚÀ¯) PARTY_DIVIDE_LEADER, /// ÆÄƼÀåºÐ¹è PARTY_DEVIDE_MAX, }; struct sPartyUserData { unsigned long userIndex; wchar_t name[MAX_NAME_BUFFER_SIZE]; unsigned char level; unsigned short job; short mapNum; short roomNum; DWORD channelNum; float posX; float posY; unsigned int hp; unsigned int maxhp; unsigned int mp; unsigned int maxmp; }; /// ÆÄƼ Á¤º¸ ¹× ÆÄƼ¿ø ¸®½ºÆ® struct MSG_SYN_PARTY_LIST : MSGROOT { unsigned long mIndex; /// ÆÄƼ À妽º unsigned long mLeaderIndex; /// ÆÄƼÀå À妽º char mDivideType; /// ÆÄƼ ºÐ¹è¹æ½Ä unsigned char RowCount; sPartyUserData mTable[1]; }; /// ÆÄƼ¿ø 1¸í Á¤º¸ struct MSG_SYN_PARTY_ADDONE : MSGROOT { sPartyUserData mTable; }; #define ERROR_PARTY_OUT_SUCCESS 0 // ¼º°ø #define ERROR_PARTY_OUT_FAIL 1 // ½ÇÆÐ /// ÆÄƼ Å»Åð ¿äû struct MSG_REQ_PARTY_OUT : MSGROOT {}; struct MSG_RES_PARTY_OUT : MSG_ERROR {}; struct MSG_SYN_PARTY_OUT : MSGROOT { unsigned long UserIndex; /// ÆÄƼŻÅðÇÑ À¯Àú À妽º }; /// ÆÄƼ ÇØ»ê ( ÀοøºÎÁ· ) struct MSG_SYN_PARTY_DELETE : MSGROOT {}; /// ÆÄƼ °­Á¦ ÇØÃ¼ struct MSG_SYN_PARTY_BREAK : MSGROOT {}; /*-- ÆÄƼÀåÀ§ÀÓ °á°ú */ #define ERROR_PARTY_CHANGELEADER_SUCESS 0 // ¼º°ø - À§ÀÓ #define ERROR_PARTY_CHANGELEADER_LEADER 1 // ½ÇÆÐ - ±ÇÇÑ ¾øÀ½ #define ERROR_PARTY_CHANGELEADER_FAIL 2 // ½ÇÆÐ /// ÆÄƼÀåÀ§ÀÓ struct MSG_REQ_PARTY_CHANGELEADER : MSGROOT { unsigned long UserIndex; /// ÆÄƼÀåÀ¸·Î À§ÀÓÇÒ À¯Àú À妽º }; struct MSG_RES_PARTY_CHANGELEADER : MSG_ERROR {}; struct MSG_SYN_PARTY_CHANGELEADER : MSGROOT { unsigned long UserIndex; /// ÆÄƼÀåÀÌ µÈ À¯Àú À妽º }; /*-- ÆÄƼ ºÐ¹èŸÀÔ º¯°æ °á°ú */ #define ERROR_PARTY_CHANGEDIVIDE_SUCESS 0 // ¼º°ø - ºÐ¹èŸÀÔ #define ERROR_PARTY_CHANGEDIVIDE_LEADER 1 // ½ÇÆÐ - ±ÇÇÑ ¾øÀ½ #define ERROR_PARTY_CHANGEDIVIDE_FAIL 2 // ½ÇÆÐ struct MSG_REQ_PARTY_CHANGEDIVIDE : MSGROOT { char type; /// º¯°æÇÒ ºÐ¹èŸÀÔ }; struct MSG_RES_PARTY_CHAGNEDIVIDE : MSG_ERROR {}; struct MSG_SYN_PARTY_CHANGEDIVDE : MSGROOT { char type; /// º¯°æµÈ ºÐ¹èŸÀÔ }; /*-- ÆÄƼ¿ø Ãß¹æ ¿äû°á°ú */ #define ERROR_PARTY_THROW_SUCESS 0 // ¼º°ø #define ERROR_PARTY_THROW_LEADER 1 // ½ÇÆÐ - ±ÇÇÑ ¾øÀ½ #define ERROR_PARTY_THROW_FAIL 2 // ½ÇÆÐ - Ãß¹æ ½ÇÆÐ struct MSG_REQ_PARTY_THROW : MSGROOT { unsigned long UserIndex; /// Ãß¹æÇÏ·Á´Â À¯Àú }; struct MSG_RES_PARTY_THROW : MSG_ERROR {}; struct MSG_SYN_PARTY_THROW : MSGROOT { unsigned long UserIndex; /// Ãß¹æµÈ À¯Àú }; /// ÆÄƼ·ÎºÎÅÍ Ãß¹æ´çÇÔ struct MSG_SYN_PARTY_CUT : MSGROOT {}; /// ÆÄƼ¿ø ¸ÊüÀÎÁö struct MSG_SYN_PARTY_MAPCHANGE : MSGROOT { unsigned long UserIndex; /// À̵¿ÇÑÀ¯Àú short MapNum; /// ¸Ê¹øÈ£ short RoomNum; DWORD ChannelNum; /// ä³Î ¹øÈ£ }; /// ÆÄƼ¿ø Á¤º¸ : ÀÏÁ¤½Ã°£¸¶´Ù ½ô struct MSG_SYN_PARTY_DATA : MSGROOT { unsigned long userIndex; unsigned char level; unsigned int maxHP; unsigned int maxMP; unsigned int hp; unsigned int mp; float posX; /// ÁÂÇ¥ float posY; short RowCount; sInfluenceClient mTable[1]; /// º¸À¯È¿°ú ¸®½ºÆ® unsigned long GetMsgLength() { return sizeof(MSG_SYN_PARTY_DATA) - sizeof(mTable) + (RowCount * sizeof(sInfluenceClient)); } }; /// ´Ù¸¥¸Ê¿¡ Á¸ÀçÇÒ¶§, ·¹º§Á¤º¸¸¸ º¸³½´Ù struct MSG_SYN_PARTYLEVEL_DATA : MSGROOT { unsigned long userIndex; unsigned char level; }; /// ÆÄƼ¿ø ¾ÆÀÌÅÛ È¹µæ struct MSG_SYN_PARTY_ITEMGET : MSGROOT { unsigned long UserIndex; /// ÆÄƼ¿ø À妽º short RowCount; unsigned long ItemIndex[1]; /// ¾ÆÀÌÅÛ }; struct MSG_SYN_PARTY_CHANGEJOB : MSGROOT { unsigned long userIndex; unsigned short job; }; /// ÁÖ»çÀ§ ±¼¸®±â #define PARTY_DICETIME 30000 /// ±¼¸®±â µô·¹ÀÌ 30 ÃÊ #define ERROR_DICE_START_SUCCESS 0 /// ¼º°ø #define ERROR_DICE_START_FAIL 1 /// ½ÇÆÐ #define ERROR_DICE_START_PARTY_LEADER 2 /// ½ÇÆÐ - ÆÄƼÀå #define ERROR_DICE_START_PARTY_STATE 3 /// ½ÇÆÐ - ÆÄƼ »óÅ #define ERROR_DICE_ROLL_SUCCESS 0 #define ERROR_DICE_ROLL_NOT_START 1 /// ½ÇÆÐ - ÁÖ»çÀ§ ±¼¸®±â ½ÃÀÛ ¾ÈÇÔ #define ERROR_DICE_ROLL_ALREADY 2 /// ½ÇÆÐ - ÀÌ¹Ì ÁÖ»çÀ§ ±¼¸®±â ¼±ÅÃÇÔ #define ERROR_DICE_ROLL_PARTY_STATE 3 #define ERROR_DICE_ROLL_MEMBER 4 /// ½ÇÆÐ - ÁÖ»çÀ§ Âü¿© ¸â¹ö°¡ ¾Æ´Ï´Ù struct MSG_REQ_PARTY_DICE_ROLL : public MSGROOT { unsigned char mRoll; /// 1:±¼¸®±â, 0:Æ÷±â }; struct MSG_RES_PARTY_DICE_ROLL : public MSG_ERROR { unsigned short mRandom; /// 0 ÀÌ¸é Æ÷±â, ±×¿Ü´Â ±¼¸° °ª }; struct MSG_SYN_PARTY_DICE_REMAIN_TIME : public MSG_ERROR { unsigned long mTime; }; struct sDiceResult { wchar_t mCharName[MAX_NAME_BUFFER_SIZE]; unsigned short mRandom; }; struct MSG_SYN_PARTY_DICE_END : public MSGROOT { short mTotalCnt; short mNotRollCnt; short mRowCount; sDiceResult mResult[1]; unsigned long GetMsgLength() { return sizeof(MSG_SYN_PARTY_DICE_END) - sizeof(mResult) + (mRowCount * sizeof(sDiceResult)); } }; //------------------------------------------------------------------------------- // ÆÄƼ ¿¬ÇÕ // ±×·ì Á¤º¸ enum ePARTYUNION_GROUP { eUNION_GROUP1 = 0, eUNION_GROUP2, eUNION_GROUP3, eUNION_MAX }; const int MAX_PARTYUSER = 6; const int MAX_PARTYGROUP = 3; const int MAX_PARTYUNION = MAX_PARTYUSER * MAX_PARTYGROUP; struct sUnionUserData { unsigned int idx; // ¹è¿­»ó À妽º unsigned long userIndex; wchar_t name[MAX_NAME_BUFFER_SIZE]; unsigned char level; unsigned short job; unsigned short mapNum; DWORD channelNum; float posX; float posY; unsigned int hp; unsigned int maxhp; unsigned int mp; unsigned int maxmp; }; // ¿¬ÇÕ ¸®½ºÆ® struct MSG_SYN_PARTYUNION_LIST : MSGROOT { unsigned long mIndex; unsigned long mLeaderIndex; unsigned char RowCount; sUnionUserData mTable[1]; }; // ¿¬ÇÕ¿ø Ãß°¡ struct MSG_SYN_PARTYUNION_ADDONE : MSGROOT { sUnionUserData mTable; }; #define ERROR_PARTYUNION_OUT_SUCESS 0 // ¼º°ø #define ERROR_PARTYUNION_OUT_FAIL 1 // ½ÇÆÐ // ¿¬ÇÕ¿ø Å»Åð struct MSG_RES_PARTYUNION_OUT : MSG_ERROR {}; struct MSG_SYN_PARTYUNION_OUT : MSGROOT { unsigned long mPlayerIndex; }; #define ERROR_PARTYUNION_CHANGELEADER_SUCESS 0 // ¼º°ø #define ERROR_PARTYUNION_CHANGELEADER_LEADER 1 // ½ÇÆÐ - ±ÇÇÑ ¾øÀ½ #define ERROR_PARTYUNION_CHANGELEADER_FAIL 2 // ½ÇÆÐ // ¿¬ÇÕÀå À§ÀÓ struct MSG_REQ_PARTYUNION_CHANGELEADER : MSGROOT { unsigned long mPlayerIndex; }; struct MSG_RES_PARTYUNION_CHANGELEADER : MSG_ERROR {}; struct MSG_SYN_PARTYUNION_CHANGELEADER : MSGROOT { unsigned long mPlayerIndex; }; #define ERROR_PARTYUNION_MOVEGROUP_SUCESS 0 // ¼º°ø #define ERROR_PARTYUNION_MOVEGROUP_LEADER 1 // ½ÇÆÐ - ±ÇÇÑ ¾øÀ½ #define ERROR_PARTYUNION_MOVEGROUP_FAIL 2 // ½ÇÆÐ // ¿¬ÇÕ³» ±×·ìÀ̵¿ struct MSG_REQ_PARTYUNION_MOVEGROUP : MSGROOT { unsigned char mIndex0; // ¹è¿­ ¹øÈ£ unsigned char mIndex1; // ¹è¿­ ¹øÈ£ }; struct MSG_RES_PARTYUNION_MOVEGROUP : MSG_ERROR {}; struct MSG_SYN_PARTYUNION_MOVEGROUP : MSGROOT { unsigned char mIndex0; // ¹è¿­ ¹øÈ£ unsigned char mIndex1; // ¹è¿­ ¹øÈ£ }; struct sUnionUpdate { unsigned long idx; unsigned long userIndex; unsigned int maxhp; unsigned int hp; float posX; float posY; }; // Àüü Á¤º¸ °»½Å struct MSG_SYN_PARTYUNION_UPDATE : MSGROOT { unsigned char rowCount; sUnionUpdate table[1]; unsigned long GetMsgLength() { return sizeof(MSG_SYN_PARTYUNION_UPDATE) - sizeof(table) + (rowCount * sizeof(sUnionUpdate)); } }; // ±×·ì Á¤º¸ °»½Å struct MSG_SYN_PARTYUNION_GROUPUPDATE : MSGROOT { unsigned int idx; // ¹è¿­»ó À妽º unsigned long userIndex; unsigned char level; unsigned int maxhp; unsigned int maxmp; unsigned int hp; unsigned int mp; float posX; float posY; short rowCount; sInfluenceClient table[1]; /// º¸À¯È¿°ú ¸®½ºÆ® unsigned long GetMsgLength() { return sizeof(MSG_SYN_PARTYUNION_GROUPUPDATE) - sizeof(table) + (rowCount * sizeof(sInfluenceClient)); } }; /*-- ÆÄƼ ä³Î°£ Åë½Å Á¤ÀÇ --*/ enum PARTY_SYNC_PROTOCOL { PSP_SYN_PARTY=0, PSP_ASK_PARTY, PSP_REP_PARTY, PSP_ADD_PARTY, PSP_DEL_PARTY, PSP_CHT_PARTY, PSP_ADD_USER, PSP_DEL_USER, PSP_OUT_USER, PSP_SYN_LEADER, PSP_SYN_DIVIDE_TYPE, PSP_SYN_LEVEL_DATA, PSP_SYN_MAP_DATA, PSP_SYN_USER, PSP_SYN_DICE_START, PSP_SYN_DICE_RESULT, }; struct PARTY_DATA_SYNC { unsigned long protocol; union { struct { unsigned long partyIdx; unsigned long leaderIdx; sPartyUserData player[MAX_PARTYUSER]; } synParty; struct { unsigned long partyIdx; sPartyUserData leader; wchar_t playerName[MAX_NAME_BUFFER_SIZE]; } askParty; struct { unsigned long leaderIdx; wchar_t playerName[MAX_NAME_BUFFER_SIZE]; unsigned long error; unsigned char replay; } repParty; struct { unsigned long partyIdx; sPartyUserData leader; sPartyUserData player; } addParty; struct { unsigned long partyIdx; } delParty; struct { unsigned long partyIdx; sInventory inventory; unsigned long playerIdx; unsigned short job; wchar_t Name[MAX_NAME_BUFFER_SIZE]; wchar_t Message[MAX_CHAT_BUFFER_SIZE]; } chtParty; struct { unsigned long partyIdx; sPartyUserData player; } addUser; struct { unsigned long partyIdx; unsigned long leaderIdx; unsigned long playerIdx; } delUser; struct { unsigned long partyIdx; unsigned long leaderIdx; unsigned long playerIdx; } outUser; struct { unsigned long partyIdx; unsigned long leaderIdx; } synLeader; struct { unsigned long partyIdx; unsigned char divideType; } synDivideType; struct { unsigned long partyIdx; sPartyUserData player; } synLevelData; struct { unsigned long partyIdx; sPartyUserData player; } synMapData; struct { long gotoCID; unsigned long partyIdx; unsigned long playerIdx; } synUser; struct { unsigned long partyIdx; } synDiceStart; struct { unsigned long partyIdx; unsigned long playerIdx; unsigned short value; } synDiceResult; }; int SYNPARTY ( ) { return sizeof(protocol) + sizeof(synParty); } int ASKPARTY ( ) { return sizeof(protocol) + sizeof(askParty); } int REPPARTY ( ) { return sizeof(protocol) + sizeof(repParty); } int ADDPARTY ( ) { return sizeof(protocol) + sizeof(addParty); } int DELPARTY ( ) { return sizeof(protocol) + sizeof(delParty); } int CHTPARTY ( ) { return sizeof(protocol) + sizeof(chtParty); } int ADDUSER ( ) { return sizeof(protocol) + sizeof(addUser); } int DELUSER ( ) { return sizeof(protocol) + sizeof(delUser); } int OUTUSER ( ) { return sizeof(protocol) + sizeof(outUser); } int SYNLEADER ( ) { return sizeof(protocol) + sizeof(synLeader); } int SYNDIVIDETYPE ( ) { return sizeof(protocol) + sizeof(synDivideType); } int SYNLEVELDATA ( ) { return sizeof(protocol) + sizeof(synLevelData); } int SYNMAPDATA ( ) { return sizeof(protocol) + sizeof(synMapData); } int SYNUSER ( ) { return sizeof(protocol) + sizeof(synUser); } int SYNDICESTART ( ) { return sizeof(protocol) + sizeof(synDiceStart); } int SYNDICERESULT ( ) { return sizeof(protocol) + sizeof(synDiceResult); } }; #pragma pack(pop)