/* ========================================================================== * ÆÄ ÀÏ : PVP_Common.h * ¸ñ Àû : * ÀÛ ¼º ÀÚ : ¹Ú°æÈñ * ÀÛ ¼º ÀÏ : 2008-09-04 * ÁÖÀÇ»çÇ× : *===========================================================================*/ #pragma once #include "CommonNetworkMsgStruct.h" #pragma pack(push,1) const int PVP_DM_TEAM_CNT = 30; /// µ¥½º¸ÅÄ¡ ÆÀÀοø const int PVP_DM_NOTICE_TIME = 5 * MINUTE; /// µ¥½º¸ÅÄ¡ °øÁö ¹ß¼Û ½Ã°£ const int PVP_DM_JOIN_TIME = 1 * MINUTE; /// µ¥½º¸ÅÄ¡ ÀÔÀå ½Ã°£ const int PVP_DM_READY_TIME = 2 * MINUTE; /// ÀÔÀå ½ÃÀÛºÎÅÍ ÀüÅõ ½ÃÀÛ±îÁö ½Ã°£ const int PVP_DM_READY_PRINT1_TIME = 30 * SECOND; /// ½ÃÀÛÀü ³²Àº ½Ã°£ ¾Ë¸²1 const int PVP_DM_READY_PRINT2_TIME = 10 * SECOND; /// ½ÃÀÛÀü ³²Àº ½Ã°£ ¾Ë¸²2 (1Ãʰ£°Ý) const int PVP_DM_READY_OUT_TIME = 1 * MINUTE; /// µ¥½º¸ÅÄ¡ ÀüÅõ½ÃÀÛ Ä«¿îÆ® ºÒ°¡½Ã °ÔÀÓ out ½Ã°£ const int PVP_DM_TEAM_MINCNT_TIME = 5 * MINUTE; /// µ¥½º¸ÅÄ¡½Ã ÆÀÀοø ºÎÁ·½Ã ½Ã°£ Á¦ÇÑ const int PVP_DM_OUTWAIT_TIME = 1 * MINUTE; /// µ¥½º¸ÅÄ¡ °ÔÀÓÁ¾·áÈÄ ÀÚµ¿ Á¾·á ´ë±â ½Ã°£ const int PVP_DM_MEMBER_DIE_POINT = 1; /// µ¥½º¸ÅÄ¡ÆÀ¿ø Á×Àº°æ¿ì Æ÷ÀÎÆ® const int PVP_DM_LEADER_DIE_POINT = 5; /// µ¥½º¸ÅÄ¡¼öÀå Á×Àº°æ¿ì Æ÷ÀÎÆ® const int PVP_DM_LEADER_CHANGETIME = 1 * MINUTE; /// ¼öÀåÀÌ ¼±ÅÃµÈ ÈÄ ´ÙÀ½ ¼±Åà ½Ã°£ const int PVP_DM_LEADER_DIECHANGETIME = 5 * SECOND; /// ¼öÀåÀÌ Á×Àº ÈÄ ´ÙÀ½ ¼±Åà ½Ã°£ const int PVP_DM_RESURRECTION_TIME = 10 * SECOND; /// µ¥½º¸ÅÄ¡½Ã Á×Àº°æ¿ì ºÎȰ´ë±â ½Ã°£ const int PVP_DM_LEADER_SKILL = 300001; /// ¸®´õ Àü¿ë È¿°ú const int PVP_DM_LEADER_INFLUENCE = 100001; /// ¸®´õ Àü¿ë È¿°ú const int PVP_DM_LEADER_INFLUENCE2 = 100008; /// ¸®´õ Àü¿ë È¿°ú const int PVP_DM2_FLAG_INFLUENCE = 100009; /// ¸®´õ Àü¿ë È¿°ú const int PVP_DM_NODAMAGE_INFLUENCE = 100002; /// ¹«Àû È¿°ú const int PVP_DM_CANTPVP_INFLUENCE = 100003; /// PVP ÁøÀÔ ºÒ°¡ È¿°ú const int PVP_DM_WIN_INFLUENCE = 100006; /// ½Â¸® º¸»ó È¿°ú const int PVP_DM_LOSE_INFLUENCE = 100007; /// ÆÐ¹è º¸»ó È¿°ú const int PVP_DM_ADD_TOTEMIDX_BUFF = 1001; /// ÀÚ½ÅÀÇ Áö¿ª¿¡ À̷οî È¿°ú¸¦ ÁÖ´Â ÅäÅÛÀ妽º const int PVP_DM_ADD_TOTEMIDX_DEBUFF = 1002; /// ÀÚ½ÅÀÇ Áö¿ª¿¡ ÇØ·Î¿î È¿°ú¸¦ ÁÖ´Â ÅäÅÛÀ妽º /// unsigned char enum ePVPDM_TEAM_TYPE { ePVPDM_TEAMTYPE_A = 0, ePVPDM_TEAMTYPE_B, ePVPDM_TEAMTYPE_MAX, }; enum ePVPDM_END_TYPE { ePVPDM_ENDTYPE_POINT, /// Æ÷ÀÎÆ® ´Þ¼º ePVPDM_ENDTYPE_TIME, /// ½Ã°£ Ãʰú(Æ÷ÀÎÆ®·®) ePVPDM_ENDTYPE_LEADERDIE, /// ¼öÀå »ç¸Á Ƚ¼ö ePVPDM_ENDTYPE_FIRSTKILL, /// ÃÖÃÊ Å³·¯ º¸À¯ ePVPDM_ENDTYPE_KILLTOTAL, /// Kill ÃÑÇÕ ePVPDM_ENDTYPE_RANDOM, /// random ePVPDM_ENDTYPE_FIRSTFLAG, /// ÃÖÃÊ °Ô¾çÆÀ ePVPDM_ENDTYPE_LASTFLAG, /// ¸¶Áö¸· ±ê¹ß º¸À¯ÆÀ ePVPDM_ENDTYPE_MEMBER, /// ÃÖ¼ÒÀοø ºÎÁ· }; /// ±¸°£º° Á¤º¸ struct sDMBlockInfo { unsigned char mLevelMin; /// ÃÖ¼Ò·¹º§ unsigned char mLevelMax; /// ÃÖ´ë·¹º§ unsigned long mGoalPoint; /// ¸ñÇ¥ Æ÷ÀÎÆ® unsigned long mLoseDMBasePoint; /// ÆÐ¹è½Ã ÀüÀåÆ÷ÀÎÆ® º¸»ó±âÁØ unsigned long mLoseFriendlyBasePoint; /// ÆÐ¹è½Ã Ä£¹Ðµµ º¸»ó±âÁØ }; /// ÃÖÁ¾ º¸»ó struct sDMGiveInfo { unsigned char mLevel; // ij¸¯ÅÍ ·¹º§ unsigned long mWinMoney; // µ· º¸»ó-½Â¸® unsigned long mLoseMoney; // µ· º¸»ó-ÆÐ¹è float mWinExpPer; // EXP º¸»ó-½Â¸®(%) float mLoseExpPer; // EXP º¸»ó-ÆÐ¹è(%) float mWinSxpPer; // SXP º¸»ó-½Â¸®(%) float mLoseSxpPer; // SXP º¸»ó-ÆÐ¹è(%) unsigned long mKillPoint; // kill-ÀÏ¹Ý unsigned long mLeaderKillPoint; // kill-¼öÀå unsigned long mWinMyForcePoint; // Àڱ⼼·ÂÆ÷ÀÎÆ®-½Â¸® unsigned long mWinMyForceFriendly; // Àڱ⼼·ÂÄ£¹Ðµµ-½Â¸® unsigned long mLoseMyForcePoint; // Àڱ⼼·ÂÆ÷ÀÎÆ®-ÆÐ¹è unsigned long mLoseMyForceFriendly; // Àڱ⼼·ÂÄ£¹Ðµµ-ÆÐ¹è unsigned long mWinFamilyForcePoint; // µ¿¸Í¼¼·ÂÆ÷ÀÎÆ®-½Â¸® unsigned long mWinFamilyForceFriendly; // µ¿¸Í¼¼·ÂÄ£¹Ðµµ-½Â¸® }; /// ÀüÀå ½ÃÀÛ ½Ã°£ struct sPvPStartTime { unsigned char mHour; /// ½ÃÀÛ ½Ã unsigned char mMinute; /// ½ÃÀÛ ºÐ }; struct sDMInfo { unsigned char mType; /// ÀüÀå Á¾·ù unsigned long mTotalDMTime; /// ÃÑÁøÇà½Ã°£ unsigned char mTeamPlayerMin; /// Áø¿µÃÖ¼ÒÀοø unsigned char mTeamPlayerMax; /// Áø¿µÃÖ´ëÀοø /// ·¹º§ ±¸°£º° ¸®½ºÆ® tPointerArray mLevelBlockInfo; /// ·¹º§º° º¸»óÁ¤º¸ tPointerHashMap mGiveInfo; ~sDMInfo() { unsigned int count = mLevelBlockInfo.GetSize(); for( unsigned int i=0;i::cIterator b = mGiveInfo.Begin(); tPointerHashMap::cIterator end = mGiveInfo.End(); for( ; b!= end; b++ ) { sDMGiveInfo* info = (sDMGiveInfo*)(*b).mSecond; SAFE_DELETE(info); } mGiveInfo.Clear(); } sDMBlockInfo* GetBlockInfo( unsigned short level ) { unsigned int count = mLevelBlockInfo.GetSize(); for( unsigned int i=0;i= info->mLevelMin && level <= info->mLevelMax ) return info; } } return 0; } sDMGiveInfo* GetGiveInfo( unsigned short level ) { return (sDMGiveInfo*)mGiveInfo.GetAt( level ); } }; struct sPvPPlayerList { short mCharacterChannel; /// Ç÷¹À̾îÀÇ ½Åû½Ã ä³Î unsigned long mPlayerIdx; /// Ç÷¹À̾îidx unsigned char mLevel; /// Ç÷¹À̾º§ unsigned char mForceType; /// ¼¼·ÂŸÀÔ bool mSelection; /// ÀüÀåÂü¿©¿¡ ¼±Á¤/ºñ¼±Á¤ ¿©ºÎ }; struct MSG_SYN_PVP_DM_NOTICE : public MSGROOT { unsigned short mPvPType; /// pvp Á¾·ù unsigned char mLeftTime; /// ³²Àº ½Ã°£(ºÐ) }; //struct MSG_SYN_PVP_DM_JOIN : public MSGROOT //{ // unsigned char mMinLevel; // unsigned char mMaxLevel; // unsigned long mLeftTime; /// ³²Àº ½Ã°£ //}; struct MSG_SYN_PVP_READYQUESTION : public MSGROOT { unsigned short mPvPType; /// pvp Á¾·ù unsigned char mMinLevel; /// ·¹º§ ±¸°£ unsigned char mMaxLevel; unsigned long mLeftTime; /// ³²Àº ½Ã°£ }; struct MSG_RES_PVP_DM_JOIN : public MSGROOT { unsigned long mDMIdx; unsigned char mTeamType; /// ePVPDM_TEAM_TYPE }; struct sMsgMemberInfo { unsigned long mCharacterIdx; wchar_t mName[MAX_NAME_BUFFER_SIZE]; unsigned char mForceType; /// eFORCE_TYPE }; struct MSG_SYN_PVP_DM_MEMBERIN : public MSGROOT { sMsgMemberInfo mMemberInfo; }; struct MSG_RES_PVP_DM_MEMBERIN : public MSGROOT { bool mFireForce; /// ÆÀ¼¼·Â À¯¹« bool mWaterForce; bool mWindForce; bool mEarthForce; unsigned char mMemberCnt; /// Á¢¼ÓÁßÀÎ À¯Àú Ä«¿îÆ® sMsgMemberInfo mMemberInfo[1]; /// Á¡¼ÓÁßÀÎ À¯Àú Á¤º¸ MSG_RES_PVP_DM_MEMBERIN() { memset( this, 0, sizeof(MSG_RES_PVP_DM_MEMBERIN) ); } unsigned long GetMsgLength() { return sizeof(MSG_RES_PVP_DM_MEMBERIN) - sizeof(mMemberInfo) + (mMemberCnt * sizeof(sMsgMemberInfo));} }; struct MSG_SYN_PVP_DM_MEMBEROUT : public MSGROOT { unsigned long mCharacterIdx; }; struct MSG_SYN_PVP_DM_LEADERCHANGE : public MSGROOT { unsigned long mCharacterIdx; /// ¼öÀå Ç÷¹À̾îIDX }; struct MSG_SYN_PVP_JOINTIME : public MSGROOT { unsigned long mFightLeftTime; /// ÀüÅõ±îÁö ³²Àº½Ã°£ }; struct MSG_SYN_PVP_FIGHT : public MSGROOT { unsigned long mFightTime; /// ÀüÅõ ½Ã°£ }; struct MSG_SYN_PVP_DM_SCORE : public MSGROOT { unsigned char mTeamType; /// ePVPDM_TEAM_TYPE unsigned long mTotalScore; unsigned long mPlusScore; unsigned long mPlayerIdx; unsigned long mPlayerScore; }; struct MSG_SYN_PVP_DM2_SCORE : public MSGROOT { unsigned char mTeamType; /// ePVPDM_TEAM_TYPE unsigned long mTotalScore; }; struct MSG_SYN_PVP_DM2_PLAYER_SCORE : public MSGROOT { unsigned char mTeamType; /// ePVPDM_TEAM_TYPE unsigned long mPlayerIdx; unsigned long mPlayerScore; }; struct sPvPDMTeamScore { unsigned long mCharacterIdx; unsigned long mScore; }; struct MSG_SYN_PVP_DM_FIGHTEND : public MSGROOT { unsigned char mEndType; unsigned long mFireFriendly; unsigned long mFirePoint; unsigned long mWaterFriendly; unsigned long mWaterPoint; unsigned long mWindFriendly; unsigned long mWindPoint; unsigned long mEarthFriendly; unsigned long mEarthPoint; unsigned long mFireFriendlyTotal; unsigned long mFirePointTotal; unsigned long mWaterFriendlyTotal; unsigned long mWaterPointTotal; unsigned long mWindFriendlyTotal; unsigned long mWindPointTotal; unsigned long mEarthFriendlyTotal; unsigned long mEarthPointTotal; unsigned long mMoney; unsigned long mSxp; unsigned long mExp; unsigned long mTeamCnt; sPvPDMTeamScore mTeam[1]; /// ½ÇÁ¦º¸³»´Â ¸Þ¼¼Áö Å©±â unsigned long GetMsgLength() { return sizeof(MSG_SYN_PVP_DM_FIGHTEND) - sizeof(mTeam) + (mTeamCnt * sizeof(sPvPDMTeamScore)); } }; struct MSG_RES_PVP_DM_RANKINFO : public MSGROOT { unsigned long mTeamCnt; sPvPDMTeamScore mTeam[1]; /// ½ÇÁ¦º¸³»´Â ¸Þ¼¼Áö Å©±â unsigned long GetMsgLength() { return sizeof(MSG_RES_PVP_DM_RANKINFO) - sizeof(mTeam) + (mTeamCnt * sizeof(sPvPDMTeamScore)); } }; struct MSG_SYN_PVP_DM2_INFO : public MSGROOT { unsigned long mFlagOwnerIdx; // ±ê¹ß ¼ÒÀ¯ÀÚ NiPoint2 mFlagPointPos; // °Ô¾ç Æ÷ÀÎÆ® À§Ä¡ bool mPrintNewGenMsg;// ½Å±Ô Á¨¿¡ ´ëÇÑ ¸ÞÁ¦½Ã Ãâ·Â¿©ºÎ }; struct MSG_SYN_PVP_DM2_FLAGPOS : public MSGROOT { NiPoint2 mFlagPos; // ±ê¹ß À§Ä¡ }; #pragma pack(pop)