/* ==================================================================== * ÆÄ ÀÏ : * ¸ñ Àû : * ÀÛ ¼º ÀÚ : Á¤¿øÁÖ * ÀÛ ¼º ÀÏ : 2006.09.28 * * Ãß°¡³»¿ë : * Ãß°¡³¯Â¥ ÀÛ¾÷ÀÚ Ãß°¡³»¿ë * 2006.09.28 Á¤¿øÁÖ »ý¼º * * ÁÖÀÇ»çÇ× : * =================================================================== */ #pragma once #include "BaseObject_Common.h" #include "Player_Common.h" #include "float.h" #include "sqltypes.h" #pragma pack(push,1) const unsigned short PERCENT_HUNDRED = 100; const unsigned long NORMAL_ATTACK_SKILL = 1; const unsigned long NORMAL_ATTACK_SKILL_MAX = 99; const unsigned short SECOND_THOUSAND = 1000; const unsigned char SKILL_START_STEP = 0; const unsigned char TARGET_CNT_MAX = 50; const unsigned long SKILL_PUSHPULL_SPEED = 2000; // ÃÖ´ë ÀüÁ÷ Â÷¼ö const unsigned short MAX_JOBSTEP = 9; //enum eDAMAGE_KIND //{ // /// Á¤ÀǾÈÇÔ // eDAMAGE_NONE = 0, // /// ÀϹݰø°Ý // eDAMAGE_NORMAL, // /// Å©¸®Æ¼Äà // eDAMAGE_CRITICAL, // /// ¹Ì½º-ȸÇÇ // eDAMAGE_MISS, //}; enum eDAMAGE_KIND { /// Á¤ÀǾÈÇÔ eDAMAGE_NONE = 0, /// ÀϹݰø°Ý eDAMAGE_NORMAL, /// Å©¸®Æ¼Äà eDAMAGE_CRITICAL, /// ÀϹݰø°Ý eDAMAGE_NORMAL_MP, /// Å©¸®Æ¼Äà eDAMAGE_CRITICAL_MP, /// ¹Ì½º-ȸÇÇ eDAMAGE_MISS, }; /// ½ºÅ³ ºÐ·ù enum eSKILLTYPE { eSKILLTYPE_PASSIVE = 1, /// ÆÐ½Ãºê eSKILLTYPE_DAMAGE, /// ¾×Ƽºê-µ¥¹ÌÁö eSKILLTYPE_NONACTIVE, /// ¾×Ƽºê-ºñ°ø°ÝÇü(È¿°ú»ý¼º) eSKILLTYPE_HEAL, /// ¾×Ƽºê-Èú eSKILLTYPE_MPDAMAGE, /// ¾×Ƽºê-mpµ¥¹ÌÁö eSKILLTYPE_TOTEM, /// ÅäÅÛ»ý¼º eSKILLTYPE_PORTAL, /// Æ÷Å» »ý¼º eSKILLTYPE_NONSTOP, /// Á¤Áö¾øÀÌ È¿°ú¸¸ »ý¼º }; /// ¸ó½ºÅÍ ½ºÅ³ ºÐ·ù enum eMONSTERSKILLTYPE { eMONSTERSKILLTYPE_DAMAGE = 1, /// ¾×Ƽºê-µ¥¹ÌÁö eMONSTERSKILLTYPE_NONACTIVE, /// ¾×Ƽºê-ºñ°ø°ÝÇü(È¿°ú»ý¼º) eMONSTERSKILLTYPE_HEAL, /// ¾×Ƽºê-Èú eMONSTERSKILLTYPE_MPDAMAGE, /// ¾×Ƽºê-mpµ¥¹ÌÁö eMONSTERSKILLTYPE_TOTEM, /// ÅäÅÛ»ý¼º eMONSTERSKILLTYPE_PORTAL, /// Æ÷Å»»ý¼º eMONSTERSKILLTYPE_NONSTOP, /// Á¤Áö¾øÀÌ È¿°ú¸¸ »ý¼º }; enum eATTRIBUTETYPE { eATTRIBUTETYPE_NONE = 0, eATTRIBUTETYPE_PHYSICAL, /// ¹°¸® eATTRIBUTETYPE_MAGIC, /// ¸¶¹ý }; enum eSHOTTYPE { eSHOTTYPE_NONE = 0, /// ¾øÀ½ eSHOTTYPE_SPOT, /// Áï½Ã½ÃÀü eSHOTTYPE_CASTING, /// ij½ºÆÃ eSHOTTYPE_CHANNEL, /// ä³Î¸µ eSHOTTYPE_AURA, /// ¿À¶ó eSHOTTYPE_BLINK, /// ¼ø°£À̵¿ }; enum eMONSTERSHOTTYPE { eMONSTERSHOTTYPE_SPOT = 1, /// Áï½Ã½ÃÀü eMONSTERSHOTTYPE_CASTING, /// ij½ºÆÃ }; /// ½ºÅ³ ¹ßµ¿½Ã ¹üÀ§ ¹æ½Ä enum eBOUNDTYPE { eBOUNDTYPE_NONE = 0, /// ¹üÀ§ ¾øÀ½ eBOUNDTYPE_SELF_TARGET, /// ½ÃÀüÀÚ(ÀÚ½Å) ±âÁعüÀ§ - ¹ßµ¿½Ã Ÿ°Ù Á¸Àç eBOUNDTYPE_SELF_NOTARGET, /// ½ÃÀüÀÚ(ÀÚ½Å) ±âÁعüÀ§ - ¹ßµ¿½Ã Ÿ°Ù ¾ø¾îµµ µÊ eBOUNDTYPE_TARGET, /// Ÿ°Ù ±âÁعüÀ§ eBOUNDTYPE_FIELD, /// ÇÊµå ±âÁعüÀ§ eBOUNDTYPE_AUTOFIELD, /// Àü¹æ ÇÊµå ¹üÀ§ }; /// È¿°ú¸¦ Àû¿ë¹Þ´Â ´ë»ó enum eAPPLYTYPE { eAPPLYTYPE_SELF = 1, /// ½ÃÀüÀÚ(ÀÚ½Å) eAPPLYTYPE_ENEMY, /// Àû eAPPLYTYPE_BUDDY, /// µ¿·á /// ÀÌÇÏ ¸ó½ºÅÍ »ç¿ë ¾ÈÇÔ eAPPLYTYPE_PARTY, /// ÆÄƼ eAPPLYTYPE_DIEBUDDY, /// Á×Àºµ¿·á }; enum eRANGETYPE { eRANGETYPE_CLOSE = 1, /// ±Ù°Å¸® eRANGETYPE_LONG, /// ¿ø°Å¸® }; enum eDOT_TYPE { eDOTTYPE_NONE = 0, /// ¾øÀ½ eDOTTYPE_PHYSICALCLOSE, /// ¹°¸® ±Ù°Å¸® eDOTTYPE_PHYSICALRANGE, /// ¹°¸® ¿ø°Å¸® eDOTTYPE_MAGIC, /// ¸¶¹ý }; enum eEQUIPTYPE { eEQUIPTYPE_NONE = 0, eEQUIPTYPE_SWORD, eEQUIPTYPE_LONGSWORD, eEQUIPTYPE_DOUBLESWORD, eEQUIPTYPE_SHORTSWORD, eEQUIPTYPE_GUN, eEQUIPTYPE_STAFF, eEQUIPTYPE_SHIELD, eEQUIPTYPE_SWORD_LONGSWORD, eEQUIPTYPE_SWORD_DOUBLESWORD, eEQUIPTYPE_LONGSWORD_DOUBLESWORD, eEQUIPTYPE_SWORD_LONGSWORD_DOUBLESWORD, eEQUIPTYPE_SHORTSWORD_GUN, eEQUIPTYPE_CLOTH, eEQUIPTYPE_LIGHTARMOR, eEQUIPTYPE_HEAVYARMOR, }; enum /* eINFLUENCETYPE */ { eINFLUENCETYPE_BUF = 1, /// ¹öÇÁ eINFLUENCETYPE_DEBUF, /// µð¹öÇÁ eINFLUENCETYPE_CASH = 11, /// ij½¬ eINFLUENCETYPE_PC, /// PC¹æ }; enum /* eINFLUENCETYPEDETAIL */ { eINFLUENCETYPEDETAIL_AURA = 1, /// ¿À¶ó eINFLUENCETYPEDETAIL_BUILD, /// °­È­ eINFLUENCETYPEDETAIL_MAGIC, /// ¸¶¹ý eINFLUENCETYPEDETAIL_TRAUMA = 101, /// ¿Ü»ó eINFLUENCETYPEDETAIL_ELEMENT, /// ¿ø¼Ò eINFLUENCETYPEDETAIL_WEAK, /// ¾àÈ­ (¼Õ»ó+Áßµ¶) eINFLUENCETYPEDETAIL_AFTEREFFECT, /// ºÎȰÈÄÀ¯Áõ eINFLUENCETYPEDETAIL_LEADER, /// ¼öÀå¼±Åà eINFLUENCETYPEDETAIL_NOPROPERTY, /// ¹«¼Ó¼º eINFLUENCETYPEDETAIL_RESURRECTION = 201, /// ºÎȰ eINFLUENCETYPEDETAIL_POTION = 301, /// ¹°¾à eINFLUENCETYPEDETAIL_GOODS, /// ¼Ò¸ð ÀâÈ­ ¹öÇÁ eINFLUENCETYPEDETAIL_COOKFULL = 311, /// ¿ä¸®-Æ÷¸¸°¨ eINFLUENCETYPEDETAIL_COOKSATISFACTION, /// ¿ä¸®-¸¸Á·°¨ eINFLUENCETYPEDETAIL_COOKFLAVOR, /// ¿ä¸®-°¨Ä¥¸À eINFLUENCETYPEDETAIL_COOKRECOVERY, /// ¿ä¸®-ȸº¹ eINFLUENCETYPEDETAIL_ALCHEMYPOTION = 321, /// ¿¬±Ý¼ú-¹°¾à eINFLUENCETYPEDETAIL_ALCHEMYPROMOTION, /// ¿¬±Ý¼ú-ÃËÁøÁ¦ eINFLUENCETYPEDETAIL_ALCHEMYENHANCE, /// ¿¬±Ý¼ú-°­È­Á¦ eINFLUENCETYPEDETAIL_ALCHEMYDRUG, /// ¿¬±Ý¼ú-¿µ¾à eINFLUENCETYPEDETAIL_CARD = 401, /// Ä«µå ¹öÇÁ eINFLUENCETYPEDETAIL_NAME = 501, /// ȣĪ ¹öÇÁ EINFLUENCETYPEDETAIL_VEHICLE = 601, /// ž½Â }; enum /* eSKILLRACE */ { eSKILLRACE_ALL = 0, eSKILLRACE_HUMAN, eSKILLRACE_BEAST, eSKILLRACE_ELF, eSKILLRACE_HUMAN_BEAST, eSKILLRACE_HUMAN_ELF, eSKILLRACE_BEAST_ELF, }; enum eSWITCH_TYPE { eSWITCHTYPE_NORMAL, /// ÀϹÝÈ¿°ú eSWITCHTYPE_PARENT, /// ½ºÀ§Ä¡ ŸÀÔÀÇ ºÎ¸ð È¿°ú eSWITCHTYPE_CHILD, /// ½ºÀ§Ä¡ ŸÀÔÀÇ ÀÚ½Ä È¿°ú eSWITCHTYPE_TOTEM, /// ÅäÅÛ¿¡¼­ »ý¼ºµÈ ½ºÀ§Ä¡ ŸÀÔÀÇ ÀÚ½Ä È¿°ú }; enum eMONSTERATTACK_TYPE { eMONSTERATTACK_NORMAL1 = 0, eMONSTERATTACK_NORMAL2, eMONSTERATTACK_SKILL1, eMONSTERATTACK_SKILL2, eMONSTERATTACK_SKILL3, eMONSTERATTACK_MAX, /// ¸ðµå ½ºÅ³ eMONSTERATTACK_MODESKILL_START = 11, eMONSTERATTACK_MODESKILL_1 = eMONSTERATTACK_MODESKILL_START, eMONSTERATTACK_MODESKILL_2, eMONSTERATTACK_MODESKILL_3, eMONSTERATTACK_MODESKILL_4, eMONSTERATTACK_MODESKILL_5, eMONSTERATTACK_MODESKILL_6, eMONSTERATTACK_MODESKILL_7, eMONSTERATTACK_MODESKILL_END, }; enum eMONSTERHPCHECK { eMONSTERHPCHECK_NONE = 0, /// Á¶°Ç ¾øÀ½ eMONSTERHPCHECK_LOWHP40, /// hp40%ÀÌÇÏ eMONSTERHPCHECK_LOWHP80, /// hp80%ÀÌÇÏ }; enum eACTSTATUS { eACTSTATUS_ACTIVESKILL = 1, /// active target skill eACTSTATUS_HEALSKILL, /// heal skill eACTSTATUS_DAMAGE, /// damage }; enum eINFGUARD_TYPE { eINFGUARDTYPE_NONE = 0, eINFGUARDTYPE_PHY, eINFGUARDTYPE_MAG, eINFGUARDTYPE_ALL, }; enum eINFCHANGEMP_TYPE { eINFCHANGEMPTYPE_NONE = 0, eINFCHANGEMPTYPE_PHY, eINFCHANGEMPTYPE_MAG, eINFCHANGEMPTYPE_ALL, }; enum eINF_TIMETYPE { eINFTIMETYPE_GAME = 0, /// °ÔÀÓ Ç÷¹ÀÌ ½Ã°£ eINFTIMETYPE_REAL, /// Çö½Ç ½Ã°£ }; enum eSTATUS_PLUS; /// skillÀÇ ´Ü°èº° Á¤º¸ struct sPlayerSkillStepInfo { /// ÅøÆÁIndex unsigned long mToolTipIdx; /// SPÇʿ䰪 unsigned short mRequireSP; /// Á÷¾÷ Index unsigned long mJobType; /// ij¸¯ÅÍ ÇÊ¿äLv unsigned char mPlayerLevel; /// ½ºÅ³½ÀµæÁ¶°Ç - Çʿ佺ųidx 1 unsigned long mLearnSkillIdx1; /// ½ºÅ³½ÀµæÁ¶°Ç - ÇÊ¿ä´Ü°è 1 unsigned char mLearnSkillStep1; /// ½ºÅ³½ÀµæÁ¶°Ç - Çʿ佺ųidx 2 unsigned long mLearnSkillIdx2; /// ½ºÅ³½ÀµæÁ¶°Ç - ÇÊ¿ä´Ü°è 2 unsigned char mLearnSkillStep2; /// ¼Ò¸ð±Ý¾× unsigned long mUseMoney; /// »óżöÄ¡°ª unsigned short mUseStateValue; /// ¼Ò¸ðMP°ª unsigned long mUseMP; /// ¼Ò¸ðHP°ª unsigned long mUseHP; /// ¼Ò¸ð¾ÆÀÌÅÛ°³¼ö unsigned char mUseItemCount; /// »ç°Å¸® float mTargetDist; /// ij½ºÆÃ½Ã°£ unsigned long mCastingTime; /// ÄðŸÀÓ unsigned long mCoolTime; /// ¹üÀ§°Å¸® unsigned short mBoundDist1; /// ¹üÀ§°Å¸® unsigned short mBoundDist2; /// Àû¿ëÀοø unsigned char mApplyCnt; /// °íÀ¯¸íÁß·ü short mAccuracyValue; /// °íÀ¯Å©¸®Æ¼Äà unsigned short mCriticalValue; /// °íÀ¯¾î±×·Î int mDistressValue; /// Àû¿ë°ª type1 unsigned short mApplyValueType1; /// Àû¿ë°ª1 int mApplyValue1; /// Àû¿ë°ª type2 unsigned short mApplyValueType2; /// Àû¿ë°ª2 int mApplyValue2; /// È¿°ú Index unsigned long mInfulenceIdx; }; /// skillÀÇ ±âº» Á¤º¸ struct sPlayerSkillBaseInfo { /// ½ºÅ³ Á¾·ùIdx unsigned long mSkillIdx; /// ½ºÅ³ À̸§Idx unsigned long mNameIdx; /// ½ºÅ³ ¾ÆÀÌÄÜIdx unsigned long mIconIdx; /// ½ºÅ³½ÀµæÁ¶°Ç - Á¾Á· unsigned char mRace; /// Á÷¾÷ ´Ü°è unsigned char mJobStep; /// ½ºÅ³½ÀµæÁ¶°Ç - ÀÌÀüÁ÷¾÷ ¿ä±¸ SP·® unsigned long mBeforeReqSP; /// ½ºÅ³»ç¿ëÁ¶°Ç - ÇÊ¿äÀåºñ eEQUIPTYPE unsigned char mUseEquipment; /// ½ºÅ³»ç¿ëÁ¶°Ç - ij¸¯ÅÍ»óÅ unsigned char mUseState; /// ½ºÅ³»ç¿ëÁ¶°Ç - ¼Ò¸ð¾ÆÀÌÅÛ unsigned long mUseItem; /// ½ºÅ³¼Ó¼º - ºÐ·ù eSKILLTYPE mType; /// ½ºÅ³¼Ó¼º - ¼Ó¼ºÀ¯Çü eATTRIBUTETYPE mAttributeType; /// ½ºÅ³¼Ó¼º - ½ÃÀüÀ¯Çü eSHOTTYPE mShotType; /// ½ºÅ³¼Ó¼º - ¹üÀ§¹æ½Ä eBOUNDTYPE mBoundType; /// ½ºÅ³¼Ó¼º - È¿°úÀû¿ëŸ°Ù eAPPLYTYPE mApplyType; /// ½ºÅ³¼Ó¼º - °Å¸®À¯Çü eRANGETYPE mRangeType; /// ½ºÅ³¼Ó¼º - ±Û·Î¹úÄðŸÀÓ Àû¿ë ¿©ºÎ bool mIsGlobalCoolTime; /// ½ºÅ³¼Ó¼º - ±×·ìÄðŸÀÓ ¹øÈ£ unsigned int mGroupCoolTimeIdx; /// ½ºÅ³ÀÇ ´Ü°èº°Á¤º¸¸¦ Á¤ÀÇ unsigned char mStepCount; sPlayerSkillStepInfo* mpSetpInfoArray; sPlayerSkillBaseInfo() { mStepCount = 0; mpSetpInfoArray = 0; } ~sPlayerSkillBaseInfo() { SAFE_DELETE_ARRAY(mpSetpInfoArray); } }; struct sMonsterSkillScript { /// ¸ó½ºÅÍIdx unsigned long mMonsterIdx; /// °ø°Ý¹æ½Ä eMONSTERATTACK_TYPE mAttackType; /// Drama file name cString mDramaFile; /// ÅøÆÁIdx unsigned long mToolTipIdx; /// ½ºÅ³ ºÐ·ù eMONSTERSKILLTYPE mType; /// ¼Ó¼ºÀ¯Çü eATTRIBUTETYPE mAttributeType; /// °Å¸®À¯Çü eRANGETYPE mRangeType; /// °ø°Ý·Â(¼Ò) unsigned long mMinAttackValue; /// °ø°Ý·Â(´ë) unsigned long mMaxAttackValue; /// °íÀ¯¸íÁß·ü short mAccuracyValue; /// °íÀ¯Å©¸®Æ¼Äà unsigned short mCriticalValue; /// »ç¿ëÁ¶°Ç(HP) eMONSTERHPCHECK mUseHPCheck; /// »ç¿ëÁ¶°Ç(¼Ò¸ðMP) unsigned long mUseMP; /// »ç°Å¸® float mTargetDist; /// °ø°Ý¼Óµµ unsigned long mAttackSpd; /// ÄðŸÀÓ unsigned long mCoolTime; /// »ç¿ëÈ®·ü unsigned char mSkillUsePer; /// ½ÃÀüÀ¯Çü eMONSTERSHOTTYPE mShotType; /// ¹üÀ§¹æ½Ä eBOUNDTYPE mBoundType; /// ¹üÀ§°Å¸® unsigned short mBoundDist1; /// ¹üÀ§°Å¸® unsigned short mBoundDist2; /// Àû¿ëÀοø unsigned char mApplyCnt; /// È¿°úÀû¿ëŸ°Ù eAPPLYTYPE mApplyType; /// ij½ºÆÃ½Ã°£ unsigned long mCastingTime; /// È¿°ú¹øÈ£1 unsigned short mApplyValueType1; /// È¿°ú°ª1 int mApplyValue1; /// È¿°ú¹øÈ£2 unsigned short mApplyValueType2; /// È¿°ú°ª2 int mApplyValue2; /// È¿°úIdx unsigned long mInfulenceIdx; }; struct sTargetDamageDetail { unsigned short mDamage; unsigned char mDamageKind; /// eDAMAGE_KIND /// °ø°ÝÀÚ¿¡°Ô µ¥¹ÌÁö¸¦ ¹Ý»çÇÏ´Â ·® short mDamageReflection; /// °ø°ÝÀÚ°¡ Ÿ°ÙÀÇ µ¥¹ÌÁö¸¦ °¡Á®¿Í HPȸº¹ÇÏ´Â ·® short mDamageAbsorbHP; /// °ø°ÝÀÚ°¡ Ÿ°ÙÀÇ µ¥¹ÌÁö¸¦ °¡Á®¿Í MPȸº¹ÇÏ´Â ·® short mDamageAbsorbMP; }; struct sTargetDamage { sObject mTarget; bool mIsOnlyClientObjectDel; /// Ÿ°ÙÀº ÀÌ¹Ì Á×¾ú°í Ŭ¶óÀÌ¾ðÆ® °´Ã¼¸¸ Áö¿ì±â À§ÇÔ unsigned char mDetailCnt; bool mInfluenceMiss; /// È¿°ú »ý¼º½Ã ½ÇÆÐ À¯¹« sTargetDamageDetail mDetail[1]; unsigned long GetLength() { return sizeof(sTargetDamage) - sizeof(mDetail) + (mDetailCnt * sizeof(sTargetDamageDetail)); } }; struct sTargetHeal { sObject mTarget; unsigned short mHeal; bool mInfluenceMiss; /// È¿°ú »ý¼º½Ã ½ÇÆÐ À¯¹« }; struct sTargetDamageHP { unsigned long mObjectHP; unsigned long mObjectMaxHP; unsigned char mDamageKind; /// eDAMAGE_KIND unsigned long mObjectMP; unsigned long mObjectMaxMP; bool mDie; sObject mTarget; }; struct sTargetApply { sObject mTarget; bool mInfluenceMiss; /// È¿°ú »ý¼º½Ã ½ÇÆÐ À¯¹« }; struct sInfluenceScript { /// È¿°úIdx unsigned long mInfluenceIdx; /// È¿°ú ¿¬Ãâ ÆÄÀϸí cString mDramaturgyFile; /// À̸§Idx unsigned long mNameidx; /// È¿°ú¾ÆÀÌÄÜIdx unsigned long mIconIdx; /// ÅøÆÁÈ¿°úIdx unsigned long mToolTipIdx; /// ¼Ó¼º unsigned char mType; /// eINFLUENCETYPE /// µµÆ®¼Ó¼º unsigned char mDotType; /// eDOTTYPE /// ºÐ·ù unsigned long mTypeDetail; /// eINFLUENCETYPEDETAIL /// Á״°æ¿ì È¿°úÁ¦°Å bool mDieDelete; /// È¿·Â ±×·ì unsigned long mGroupIdx; /// È¿·Â unsigned long mGroupOrder; /// Áߺ¹ºÒ°¡±×·ì unsigned long mNotOverlapGroupIdx; /// ½Ã°£ ŸÀÔ unsigned char mTimeType; /// eINF_TIMETYPE /// Áö¼Ó(ä³Î¸µ)½Ã°£ long mContinuanceTime; /// ¹ßµ¿È®·ü unsigned char mActivityPer; /// Áö¼ÓÈ¿°ú¹øÈ£1 unsigned short mStatusPlusIdx1; /// ½Ã°£1 unsigned long mTime1; /// È¿°ú°ª1 long mValue1; /// Áö¼ÓÈ¿°ú¹øÈ£2 unsigned short mStatusPlusIdx2; /// ½Ã°£2 unsigned long mTime2; /// È¿°ú°ª2 long mValue2; /// Áö¼ÓÈ¿°ú¹øÈ£3 unsigned short mStatusPlusIdx3; /// È¿°ú°ª3 long mValue3; }; /// ¹ßµ¿ struct sActInfluenceScript { /// ¹ßµ¿ Idx unsigned long mActivityIdx; /// ¹ßµ¿ ÅøÆÁ unsigned long mTooltipIdx; /// ¿¬Ãâ ÆÄÀÏ cString mDramaturgyFile; /// ¹ßµ¿ »óȲ eACTSTATUS mActivityState; /// ¹ßµ¿ È®·ü unsigned long mActivityPer; /// Àç»ç¿ë ´ë±â ½Ã°£ unsigned long mCooltime; /// Àû¿ë ´ë»ó eAPPLYTYPE mApplyType; /// ¹üÀ§ ¹æ½Ä eBOUNDTYPE mBoundType; float mBoundDist; /// ÇüÅ¿¡ µû¸¥ ÂüÁ¶ ¹øÈ£ unsigned long mInfIdx; }; struct sSkillInfo { unsigned long skillIdx; unsigned char skillStep; }; /// ½ºÅ³ struct sHaveSkill { unsigned long mSkillIdx; /// ½ºÅ³ À妽º unsigned char mSkillStep; /// ½ºÅ³ ´Ü°è unsigned long mRestCoolTime; /// ÄðŸÀÓ ³²Àº ½Ã°£ }; /// È¿°ú struct sInfluence { unsigned long mUniqueIdx; unsigned long mDbIdx; unsigned long mInfluenceClassIdx; sObject mAttacker; bool mIsRealTime; unsigned long mRestTime; TIMESTAMP_STRUCT mStartDate; TIMESTAMP_STRUCT mEndDate; unsigned long mTime1; unsigned long mTime2; long mInfluenceValue1; long mInfluenceValue2; unsigned char mAttriButeType; unsigned char mAttackerLv; unsigned long mAttackerDamageMin; unsigned long mAttackerDamageMax; unsigned long mHeal; unsigned char mLeftGuardCnt; unsigned short mLeftGuardValue; }; /// Ŭ¶óÀÌ¾ðÆ® Àü¼Û¿ë È¿°ú struct sInfluenceClient { unsigned long mUniqueIdx; /// È¿°ú °íÀ¯ ¹øÈ£ unsigned long mInfluenceClassIdx; /// È¿°ú Á¾·ù ¹øÈ£ unsigned long mAuraSkillClassIdx; /// ¿À¶ó ½ºÅ³ À妽º bool mDieDelete; /// Á×Àº°æ¿ì »èÁ¦ ¿©ºÎ unsigned long mRestTime; /// È¿°ú ³²Àº ½Ã°£ sInfluenceClient() { memset( this, 0, sizeof(sInfluenceClient) ); } }; /// Ŭ¶óÀÌ¾ðÆ® Àü¼Û¿ë È¿°ú½Ã°£ struct sInfluenceTimeClient { unsigned long mUniqueIdx; unsigned long mRestTime; /// È¿°ú ³²Àº ½Ã°£ }; /// Ŭ¶óÀÌ¾ðÆ®¿¡¼­ ¼­¹ö¿¡ Ÿ°Ù Á᫐ ½ºÅ³ ¿äû struct MSG_REQ_SKILL_USED : public MSGROOT { unsigned long mSkillClassIndex; /// ½ºÅ³ Á¾·ùindex unsigned char mSkillStep; /// unsigned long mManagedKey; /// Ŭ¶óÀÌ¾ðÆ®¿¡¼­ »ý¼ºµÈ Àӽà °íÀ¯Å° sObject mTarget; /// Ÿ°Ù Á¤º¸ float mClientPosX; /// °ø°ÝÀÚ À§Ä¡ ÁÂÇ¥ float mClientPosY; }; /// Ÿ°ÙÁß½ÉÀÇ ½ºÅ³(+ÀϹݰø°Ý) ½ÌÅ© struct MSG_SYN_SKILL_USED : public MSGROOT { unsigned long mSkillClassIndex; /// ½ºÅ³ Á¾·ùindex unsigned char mSkillStep; unsigned long mSkillIndex; /// ½ºÅ³ °íÀ¯index sObject mAttacker; /// °ø°ÝÀÚ Á¤º¸ float mAttackerPosX; /// °ø°ÝÀÚ ÁÂÇ¥ float mAttackerPosY; sObject mTarget; /// Ÿ°Ù Á¤º¸ float mTargetPosX; /// Ÿ°Ù ÁÂÇ¥ float mTargetPosY; unsigned long mObjectMP; /// °ø°ÝÀÚÀÇ mp¼öÄ¡ unsigned long mObjectMaxMP; }; struct MSG_REQ_SKILL_ITEMMAPCHANGE : public MSG_REQ_SKILL_USED { unsigned short mSlotNumber; unsigned long mUseItemIndex; }; struct MSG_REQ_SKILL_VEHICLE : public MSG_REQ_SKILL_ITEMMAPCHANGE { }; /// ¼ø°£À̵¿ ¸Þ¼¼Áö struct MSG_REQ_SKILL_BLINK : public MSGROOT { unsigned long mSkillClassIndex; /// ½ºÅ³ Á¾·ùindex unsigned char mSkillStep; unsigned long mManagedKey; /// Ŭ¶óÀÌ¾ðÆ®¿¡¼­ »ý¼ºµÈ Àӽà °íÀ¯Å° float mTargetPosX; /// ¼ø°£À̵¿ ¿äû ¸ñÀûÁö float mTargetPosY; }; struct MSG_RES_SKILL_BLINK : public MSG_ERROR { unsigned long mSkillClassIndex; /// ½ºÅ³ Á¾·ùindex unsigned long mSkillIndex; /// ½ºÅ³ °íÀ¯index unsigned long mManagedKey; /// Ŭ¶óÀÌ¾ðÆ®¿¡¼­ »ý¼ºµÈ Àӽà °íÀ¯Å° unsigned long mObjectMP; /// °ø°ÝÀÚÀÇ mp¼öÄ¡ unsigned long mMaxMP; float mTargetPosX; /// ¼ø°£À̵¿ ¸ñÀûÁö float mTargetPosY; }; struct MSG_SYN_SKILL_BLINK : public MSGROOT { unsigned long mSkillClassIndex; /// ½ºÅ³ Á¾·ùindex unsigned char mSkillStep; unsigned long mSkillIndex; /// ½ºÅ³ °íÀ¯index sObject mAttacker; /// °ø°ÝÀÚ Á¤º¸ float mTargetPosX; /// ¼ø°£À̵¿ ¸ñÀûÁö float mTargetPosY; unsigned long mObjectMP; /// °ø°ÝÀÚÀÇ mp¼öÄ¡ unsigned long mObjectMaxMP; }; struct MSG_RES_SKILL_NONSTOP : public MSG_ERROR { unsigned long mSkillClassIndex; /// ½ºÅ³ Á¾·ùindex unsigned long mManagedKey; /// Ŭ¶óÀÌ¾ðÆ®¿¡¼­ »ý¼ºµÈ Àӽà °íÀ¯Å° unsigned long mObjectMP; /// °ø°ÝÀÚÀÇ mp¼öÄ¡ unsigned long mMaxMP; unsigned char mCount; sTargetApply mTarget[1]; unsigned long GetLength() { return sizeof(MSG_RES_SKILL_NONSTOP) - sizeof(mTarget) + (mCount * sizeof(sTargetApply)); } }; struct MSG_SYN_SKILL_NONSTOP_TARGET : public MSGROOT { unsigned long mSkillClassIndex; /// ½ºÅ³ Á¾·ùindex unsigned char mSkillStep; sObject mAttacker; /// °ø°ÝÀÚ Á¤º¸ unsigned long mObjectMP; /// °ø°ÝÀÚÀÇ mp¼öÄ¡ unsigned long mMaxMP; sTargetApply mTargetApply; /// ÀÚ½ÅÀÌ ¹ÞÀº È¿°ú ¼º°ø/½ÇÆÐ }; struct MSG_SYN_SKILL_NONSTOP_AROUND : public MSGROOT { unsigned long mSkillClassIndex; /// ½ºÅ³ Á¾·ùindex unsigned char mSkillStep; sObject mAttacker; /// °ø°ÝÀÚ Á¤º¸ unsigned long mObjectMP; /// °ø°ÝÀÚÀÇ mp¼öÄ¡ unsigned long mMaxMP; }; /// ¸ó½ºÅÍ - Ÿ°ÙÁß½ÉÀÇ ½ºÅ³(+ÀϹݰø°Ý) ½ÌÅ© struct MSG_SYN_MONSTER_SKILL_USED : public MSGROOT { unsigned long mSkillIndex; /// ½ºÅ³ °íÀ¯index unsigned char mAttackType; /// °ø°Ý¹æ½Ä eMONSTERATTACK_TYPE sObject mAttacker; /// °ø°ÝÀÚ Á¤º¸ float mAttackerPosX; /// ¸ó½ºÅÍ ÁÂÇ¥ float mAttackerPosY; float mAttackSpeedFactor; /// °ø°Ý¼Óµµ sObject mTarget; /// Ÿ°Ù Á¤º¸ }; /// Ŭ¶óÀÌ¾ðÆ®¿¡¼­ ¼­¹ö¿¡ ÁÂÇ¥ Á᫐ ½ºÅ³ ¿äû struct MSG_REQ_POS_USED : public MSGROOT { unsigned long mSkillClassIndex; /// ½ºÅ³ Á¾·ùindex unsigned char mSkillStep; unsigned long mManagedKey; /// Ŭ¶óÀÌ¾ðÆ®¿¡¼­ »ý¼ºµÈ Àӽà °íÀ¯Å° float mTargetPosX; /// Ÿ°Ù(Çʵå) ÁÂÇ¥ float mTargetPosY; float mClientPosX; /// °ø°ÝÀÚ À§Ä¡ ÁÂÇ¥ float mClientPosY; }; /// ÁÂÇ¥Áß½ÉÀÇ ½ºÅ³ ½ÌÅ© struct MSG_SYN_POS_USED : public MSGROOT { unsigned long mSkillClassIndex; /// ½ºÅ³ Á¾·ùindex unsigned char mSkillStep; unsigned long mSkillIndex; /// ½ºÅ³ °íÀ¯index unsigned long mManagedKey; /// Ŭ¶óÀÌ¾ðÆ®¿¡¼­ »ý¼ºµÈ Àӽà °íÀ¯Å° sObject mAttacker; /// °ø°ÝÀÚ Á¤º¸ float mAttackerPosX; /// °ø°ÝÀÚ ÁÂÇ¥ float mAttackerPosY; float mTargetPosX; /// Ÿ°Ù(Çʵå) ÁÂÇ¥ float mTargetPosY; unsigned long mObjectMP; /// °ø°ÝÀÚÀÇ mp¼öÄ¡ unsigned long mObjectMaxMP; }; /// ¸ó½ºÅÍ - ÁÂÇ¥½ÉÀÇ ½ºÅ³ ½ÌÅ© struct MSG_SYN_POS_MONSTER_SKILL_USED : public MSGROOT { unsigned long mSkillIndex; /// ½ºÅ³ °íÀ¯index unsigned char mAttackType; /// °ø°Ý¹æ½Ä eMONSTERATTACK_TYPE sObject mAttacker; /// °ø°ÝÀÚ Á¤º¸ float mAttackerPosX; /// ¸ó½ºÅÍ ÁÂÇ¥ float mAttackerPosY; float mTargetPosX; /// Ÿ°Ù(Çʵå) ÁÂÇ¥ float mTargetPosY; }; const int SKILL_USED_ERR_SUCCESS = 0; const int SKILL_USED_ERR_SKILLTYPE = 1; /// ½ºÅ³ Á¾·ù / À妽º°¡ Ʋ¸² const int SKILL_USED_ERR_SCRIPT = 2; /// ½ºÅ©¸³Æ® ¿À·ù const int SKILL_USED_ERR_UNIQUEIDX = 3; /// ½ºÅ³ °´Ã¼ °íÀ¯¹øÈ£ ¿À·ù const int SKILL_USED_ERR_OBJECTINIT = 4; /// ½ºÅ³ °´Ã¼ ÃʱâÈ­ ½ÇÆÐ const int SKILL_USED_ERR_ATTAKCERPOS = 101; /// °ø°ÝÀÚ À§Ä¡°¡ ¾È¸ÂÀ½ const int SKILL_USED_ERR_USING = 102; /// ½ºÅ³ »ç¿ëÁß const int SKILL_USED_ERR_TARGETDIST = 103; /// ½ºÅ³ »ç°Å¸®¹Û¿¡ Ÿ°Ù const int SKILL_USED_ERR_COOLTIME = 104; /// ÄðŸÀÓ const int SKILL_USED_ERR_ATTACKERSTATE = 105; /// °ø°ÝÀÚ »óÅ º¯°æ ºÒ°¡ const int SKILL_USED_ERR_USEVALUE = 106; /// ¼Ò¸ð°ª ºÎÁ· const int SKILL_USED_ERR_TARGETOBJECT = 107; /// Ÿ°Ù °´Ã¼ ¿À·ù const int SKILL_USED_ERR_TARGETSELECT = 108; /// Ÿ°Ù¼±Á¤ ¿À·ù const int SKILL_USED_ERR_PASSIVE = 109; /// ÆÐ½Ãºê »ç¿ë const int SKILL_USED_ERR_DONTHAVE = 110; /// º¸À¯½ºÅ³ÀÌ ¾Æ´Ô const int SKILL_USED_ERR_EQUIPMENT = 111; /// Àåºñ ¿À·ù const int SKILL_USED_ERR_CHG_MONSTER = 112; /// ¸ó½ºÅÍ º¯½ÅÁß - ½ºÅ³»ç¿ë ºÒ°¡ const int SKILL_USED_ERR_MAPCHANGE_STATE = 113; /// ¸Ê À̵¿ »óÅ º¯°æ ºÒ°¡ /// ½ºÅ³(+ÀϹݰø°Ý) ¼º°ø/½ÇÆÐ struct MSG_RES_SKILL_USED : public MSG_ERROR { unsigned long mSkillClassIndex; /// ½ºÅ³ Á¾·ùindex unsigned long mSkillIndex; /// ½ºÅ³ °íÀ¯index unsigned long mManagedKey; /// Ŭ¶óÀÌ¾ðÆ®¿¡¼­ »ý¼ºµÈ Àӽà °íÀ¯Å° unsigned long mObjectMP; /// °ø°ÝÀÚÀÇ mp¼öÄ¡ unsigned long mMaxMP; }; /// Ÿ°Ù Áß½ÉÀÇ Ä³½ºÆÃ ½ºÅ³ ¹ßµ¿ ½ÌÅ© struct MSG_SYN_SKILL_CAST_ACTIVE : public MSGROOT { unsigned long mSkillIndex; /// ½ºÅ³ °íÀ¯index sObject mAttacker; /// °ø°ÝÀÚ Á¤º¸ float mAttackerPosX; /// °ø°ÝÀÚ ÁÂÇ¥ float mAttackerPosY; unsigned long mObjectMP; /// °ø°ÝÀÚÀÇ mp¼öÄ¡ unsigned long mObjectMaxMp; }; /// ½ºÅ³ ij½ºÆÃ ½ÇÆÐ #define FAIL_SKILL_CASTING_MP_EMPTY 1 /// »ç¿ëÁ¶°Ç ºÎÁ· #define FAIL_SKILL_CASTING_DONT_TARGET 2 /// Ÿ°ÙÀÌ ¾ø´Ù. #define FAIL_SKILL_CASTING_DONT_ATTACKER 3 /// °ø°ÝÀÚ°¡ Á×¾ú´Ù #define FAIL_SKILL_CASTING_DONT_MAPCHANGE 4 /// ¸ÊÀ̵¿ ½ÇÆÐ #define FAIL_SKILL_CASTING_DONT_VEHICLE 5 /// Å»°Í ½ÇÆÐ #define FAIL_SKILL_CASTING_DONT_SCRIPT 6 /// ½ºÅ©¸³Æ® ¿¡·¯ #define FAIL_SKILL_CASTING_DONT_OBSTACLE 7 /// °­Á¦ ÇØÁ¦ struct MSG_SYN_SKILL_CAST_ACTIVITY_FAIL : public MSGROOT { unsigned long mSkillIndex; /// ½ºÅ³ °íÀ¯index sObject mAttacker; /// °ø°ÝÀÚ Á¤º¸ unsigned char mFailCode; /// ½ºÅ³ ½ÇÆÐ ÄÚµå }; struct MSG_REQ_SKILL_CAST_CANCEL : public MSGROOT { sObject mAttacker; /// ij½ºÆÃ ½ÃÀüÀÚ Á¤º¸ }; /// ij½ºÆÃ Ãë¼Ò ÀÀ´ä ¸Þ¼¼Áö´Â Ãë¼Ò ¼º°ø½Ã¿¡¸¸ ¹ß¼ÛµÈ´Ù. struct MSG_RES_SKILL_CAST_CANCEL : public MSGROOT { unsigned long mSkillIndex; /// ½ºÅ³ °íÀ¯index }; struct MSG_SYN_SKILL_CAST_CANCEL : public MSGROOT { unsigned long mSkillIndex; /// ½ºÅ³ °íÀ¯index }; struct MSG_SYN_SKILL_DAMAGE_HP : public MSGROOT { sObject mAttacker; unsigned char mCount; sTargetDamageHP mTargetDamage[100]; unsigned long GetMsgLength() { return sizeof(MSG_SYN_SKILL_DAMAGE_HP) - sizeof(mTargetDamage) + (mCount * sizeof(sTargetDamageHP)); } }; struct MSG_SYN_SKILL_DAMAGE_ATTACKER : public MSGROOT { unsigned short mMsgSize; unsigned long mSkillIndex; /// ½ºÅ³ °íÀ¯index unsigned char mSkillStep; unsigned char mAttackerType; /// eOBJECTTYPE unsigned long mSkillClassIndex; unsigned long mDramaKey; /// (player: race/gender/weapon) || (monster : class index) bool mIsChangeMonster; /// ¸ó½ºÅÍ º¯½Å»óÅ ¿©ºÎ bool mAttackerDie; /// °ø°ÝÀÚ°¡ Á×¾î °´Ã¼¸¸ Á¦°Å unsigned char mTargetCount; /// µ¥¹ÌÁö¸¦ ¹Þ´Â Ÿ°ÙÀÇ °¹¼ö sTargetDamage mTargetDamage[1]; /// µ¥¹ÌÁö Á¤º¸ MSG_SYN_SKILL_DAMAGE_ATTACKER() { mMsgSize = 0; } /// ½ÇÁ¦º¸³»´Â ¸Þ¼¼Áö Å©±â unsigned short GetMsgLength() { return mMsgSize; } void SetMsgLength( unsigned short msgSize ) { mMsgSize = msgSize; } }; struct sDamageTargetHead : public MSGROOT { unsigned short mMsgSize; unsigned long mSkillIndex; /// ½ºÅ³ °íÀ¯index unsigned char mAttackerType; /// eOBJECTTYPE unsigned long mSkillClassIndex; unsigned char mSkillStep; unsigned long mDramaKey; /// (player: race/gender/weapon) || (monster : class index) bool mIsChangeMonster; /// ¸ó½ºÅÍ º¯½Å»óÅ ¿©ºÎ bool mAttackerDie; /// °ø°ÝÀÚ°¡ Á×¾î °´Ã¼¸¸ Á¦°Å unsigned char mTargetCount; /// ¿¬Ãâ Ÿ°Ù }; struct MSG_SYN_SKILL_DAMAGE_TARGET : public sDamageTargetHead { sObject mTarget[1]; sTargetDamage mTargetDamage; /// µ¥¹ÌÁö Á¤º¸ sObject* GetTarget() { return mTarget; } sTargetDamage* GetTargetDamage() { return (sTargetDamage*)(mTarget + mTargetCount); } unsigned long GetMsgLength() { return mMsgSize; } void SetMsgLength( unsigned short size ) { mMsgSize = size; } }; struct MSG_SYN_SKILL_DAMAGE_AROUND : public MSGROOT { unsigned long mSkillIndex; /// ½ºÅ³ °íÀ¯index unsigned char mAttackerType; /// eOBJECTTYPE unsigned long mSkillClassIndex; unsigned char mSkillStep; unsigned long mDramaKey; /// (player: race/gender/weapon) || (monster : class index) bool mIsChangeMonster; /// ¸ó½ºÅÍ º¯½Å»óÅ ¿©ºÎ bool mAttackerDie; /// °ø°ÝÀÚ°¡ Á×¾î °´Ã¼¸¸ Á¦°Å unsigned char mTargetCount; /// µ¥¹ÌÁö¸¦ ¹Þ´Â Ÿ°ÙÀÇ °¹¼ö sObject mTarget[1]; /// µ¥¹ÌÁö¸¦ ¹Þ´Â Ÿ°Ù /// ½ÇÁ¦º¸³»´Â ¸Þ¼¼Áö Å©±â unsigned long GetMsgLength() { return sizeof(MSG_SYN_SKILL_DAMAGE_AROUND) - sizeof(mTarget) + (mTargetCount * sizeof(sObject)); } }; struct MSG_SYN_SKILL_HEAL_ATTACKER : public MSGROOT { unsigned long mSkillIndex; /// ½ºÅ³ °íÀ¯index unsigned char mAttackerType; /// eOBJECTTYPE unsigned long mSkillClassIndex; unsigned char mSkillStep; unsigned long mDramaKey; /// (player: race/gender/weapon) || (monster : class index) bool mIsChangeMonster; /// ¸ó½ºÅÍ º¯½Å»óÅ ¿©ºÎ bool mAttackerDie; /// °ø°ÝÀÚ°¡ Á×¾î °´Ã¼¸¸ Á¦°Å unsigned char mTargetCount; /// ÈúÀ» ¹Þ´Â Ÿ°ÙÀÇ °¹¼ö sTargetHeal mTargetHeal[1]; /// Èú Á¤º¸ /// ½ÇÁ¦º¸³»´Â ¸Þ¼¼Áö Å©±â unsigned long GetMsgLength() { return sizeof(MSG_SYN_SKILL_HEAL_ATTACKER) - sizeof(mTargetHeal) + (mTargetCount * sizeof(sTargetHeal)); } }; struct MSG_SYN_SKILL_HEAL_TARGET : public MSGROOT { unsigned long mSkillIndex; /// ½ºÅ³ °íÀ¯index unsigned char mAttackerType; /// eOBJECTTYPE unsigned long mSkillClassIndex; unsigned char mSkillStep; unsigned long mDramaKey; /// (player: race/gender/weapon) || (monster : class index) bool mIsChangeMonster; /// ¸ó½ºÅÍ º¯½Å»óÅ ¿©ºÎ bool mAttackerDie; /// °ø°ÝÀÚ°¡ Á×¾î °´Ã¼¸¸ Á¦°Å sTargetHeal mTargetHeal; /// ÀÚ½ÅÀÌ ¹ÞÀº ÈúÁ¤º¸ unsigned char mTargetCount; /// ÁÖº¯¿¡ ÈúÀ» ¹ÞÀºÀ¯Àú ¸ñ·Ï sObject mTarget[1]; /// ½ÇÁ¦º¸³»´Â ¸Þ¼¼Áö Å©±â unsigned long GetMsgLength() { return sizeof(MSG_SYN_SKILL_HEAL_TARGET) - sizeof(mTarget) + (mTargetCount * sizeof(sObject)); } }; struct MSG_SYN_SKILL_HEAL_AROUND : public MSGROOT { unsigned long mSkillIndex; /// ½ºÅ³ °íÀ¯index unsigned char mAttackerType; /// eOBJECTTYPE unsigned long mSkillClassIndex; unsigned char mSkillStep; unsigned long mDramaKey; /// (player: race/gender/weapon) || (monster : class index) bool mIsChangeMonster; /// ¸ó½ºÅÍ º¯½Å»óÅ ¿©ºÎ bool mAttackerDie; /// °ø°ÝÀÚ°¡ Á×¾î °´Ã¼¸¸ Á¦°Å unsigned char mTargetCount; /// ÁÖº¯¿¡ ÈúÀ» ¹ÞÀºÀ¯Àú ¸ñ·Ï sObject mTarget[1]; /// ½ÇÁ¦º¸³»´Â ¸Þ¼¼Áö Å©±â unsigned long GetMsgLength() { return sizeof(MSG_SYN_SKILL_HEAL_AROUND) - sizeof(mTarget) + (mTargetCount * sizeof(sObject)); } }; struct MSG_SYN_SKILL_APPLY : public MSGROOT { unsigned long mSkillIndex; /// ½ºÅ³ °íÀ¯index unsigned char mAttackerType; /// eOBJECTTYPE unsigned long mSkillClassIndex; unsigned char mSkillStep; unsigned long mDramaKey; /// (player: race/gender/weapon) || (monster : class index) bool mIsChangeMonster; /// ¸ó½ºÅÍ º¯½Å»óÅ ¿©ºÎ bool mAttackerDie; /// °ø°ÝÀÚ°¡ Á×¾î °´Ã¼¸¸ Á¦°Å unsigned char mApplyCount; /// Àû¿ëÀ» ¹Þ´Â Ÿ°ÙÀÇ °¹¼ö sTargetApply mApplyObject[1]; /// Àû¿ë ¿ÀºêÁ§Æ® Á¤º¸ /// ½ÇÁ¦º¸³»´Â ¸Þ¼¼Áö Å©±â unsigned long GetMsgLength() { return sizeof(MSG_SYN_SKILL_APPLY) - sizeof(mApplyObject) + (mApplyCount * sizeof(sTargetApply)); } }; struct MSG_SYN_SKILL_DELTARGET : public MSGROOT { unsigned long mSkillIndex; unsigned long mSkillClassIndex; unsigned char mSkillStep; unsigned char mAttackerType; /// eOBJECTTYPE bool mAttackerDie; /// °ø°ÝÀÚ°¡ Á×¾î °´Ã¼¸¸ Á¦°Å unsigned char mDelTargetType; unsigned long mDelTargetIndex; unsigned long mDramaKey; /// (player: race/gender/weapon) || (monster : class index) unsigned char mApplyCount; sTargetApply mApplyObject[1]; unsigned long GetMsgLength() { return sizeof(MSG_SYN_SKILL_DELTARGET) - sizeof(mApplyObject) + (mApplyCount * sizeof(sTargetApply)); } }; /// ½ºÅ³ ¹ßµ¿ ½ÇÆÐ½Ã ÁÂÇ¥ º¸°£ struct MSG_RES_SKILL_POS : public MSGROOT { sObject mAttacker; /// °ø°ÝÀÚ Á¤º¸ float mAttackerPosX; /// °ø°ÝÀÚ ÁÂÇ¥ float mAttackerPosY; sObject mTarget; /// ÀÚ°Ù Á¤º¸ float mTargetPosX; /// Ÿ°Ù ÁÂÇ¥ float mTargetPosY; }; struct MSG_SYN_INFLUENCE_CREATE : public MSGROOT { sObject mTarget; sObject mAttacker; unsigned long mUniqueIdx; unsigned long mInfluenceClassIdx; unsigned long mAuraSkillClassIdx; bool mDieDelete; unsigned long mPlusTime; MSG_SYN_INFLUENCE_CREATE() { memset( this, 0, sizeof( MSG_SYN_INFLUENCE_CREATE ) ); } }; struct MSG_SYN_ACTINFLUNCE_ACTION : public MSGROOT { sObject mPlayer; unsigned long mActIdx; MSG_SYN_ACTINFLUNCE_ACTION() { memset( this, 0, sizeof( MSG_SYN_ACTINFLUNCE_ACTION ) ); } }; struct sInfluenceCreate { sObject mTarget; sObject mAttacker; unsigned long mUniqueIdx; unsigned long mInfluenceClassIdx; unsigned long mAuraSkillClassIdx; bool mDieDelete; unsigned long mPlusTime; sInfluenceCreate() { memset( this, 0, sizeof( sInfluenceCreate ) ); } }; struct MSG_SYN_INFLUENCEARY_CREATE : public MSGROOT { unsigned short mTargetCnt; sInfluenceCreate mTable[1]; unsigned long GetMsgLength() { return sizeof(MSG_SYN_INFLUENCEARY_CREATE) - sizeof(mTable) + (mTargetCnt * sizeof(sInfluenceCreate)); } }; struct MSG_SYN_INFLUENCE_UPDATE : public MSGROOT { unsigned long mUniqueIdx; unsigned long mInfluenceClassIdx; }; struct MSG_REQ_INFLUENCE_DELETE : public MSGROOT { unsigned long mUniqueIdx; }; struct MSG_SYN_INFLUENCE_DELETE : public MSGROOT { unsigned long mUniqueIdx; MSG_SYN_INFLUENCE_DELETE() { memset( this, 0, sizeof( MSG_SYN_INFLUENCE_DELETE ) ); } }; struct MSG_REQ_INFLUENCE_AURA_DELETE : public MSGROOT { unsigned long mUniqueIdx; unsigned long mSkillClassIdx; }; struct MSG_SYN_INFLUENCE_DAMAGE_HP : public MSGROOT { sObject mTarget; unsigned long mUniqueIdx; unsigned long mTargetHP; bool mTargetDie; }; struct MSG_SYN_INFLUENCE_DAMAGE_MP : public MSGROOT { sObject mTarget; unsigned long mUniqueIdx; unsigned long mTargetMP; }; struct MSG_RES_SKILL_LIST : public MSGROOT { unsigned char mRowCount; /// º¸À¯½ºÅ³ °¹¼ö sHaveSkill mTable[1]; /// º¸À¯½ºÅ³ ¸®½ºÆ® /// ½ÇÁ¦º¸³»´Â ¸Þ¼¼Áö Å©±â unsigned long GetMsgLength() { return sizeof(MSG_RES_SKILL_LIST) - sizeof(mTable) + (mRowCount * sizeof(sHaveSkill)); } }; struct MSG_RES_INFLUENCE_LIST : public MSGROOT { unsigned char mRowCount; /// º¸À¯È¿°ú °¹¼ö sInfluenceClient mTable[1]; /// º¸À¯È¿°ú ¸®½ºÆ® /// ½ÇÁ¦º¸³»´Â ¸Þ¼¼Áö Å©±â unsigned long GetMsgLength() { return sizeof(MSG_RES_INFLUENCE_LIST) - sizeof(mTable) + (mRowCount * sizeof(sInfluenceClient)); } }; struct sInfGuardList { sInfluenceClient mInfInfo; /// È¿°ú Á¤º¸ unsigned char mGuardCnt; /// º¸È£¸· Ƚ¼ö unsigned short mGuardValue; /// º¸È£¸· ¼öÄ¡ }; struct MSG_SYN_SKILL_INFLUENCE_GUARDLIST : public MSGROOT { unsigned char mRowCount; sInfGuardList mGuardList[1]; /// ½ÇÁ¦º¸³»´Â ¸Þ¼¼Áö Å©±â unsigned long GetMsgLength() { return sizeof(MSG_SYN_SKILL_INFLUENCE_GUARDLIST) - sizeof(mGuardList) + (mRowCount * sizeof(sInfGuardList)); } }; struct MSG_SYN_INFLUENCE_ADDLIST : public MSGROOT { sObject mObject; unsigned char mRowCount; /// º¸À¯È¿°ú °¹¼ö sInfluenceClient mTable[1]; /// º¸À¯È¿°ú ¸®½ºÆ® /// ½ÇÁ¦º¸³»´Â ¸Þ¼¼Áö Å©±â unsigned long GetMsgLength() { return sizeof(MSG_SYN_INFLUENCE_ADDLIST) - sizeof(mTable) + (mRowCount * sizeof(sInfluenceClient)); } }; struct MSG_SYN_SKILL_INFLUENCE_HPCHANGE : public MSGROOT { unsigned long mInfluenceIdx; /// È¿°ú °íÀ¯¹øÈ£ sObject mTarget; /// Ÿ°Ù short mChangeValue; /// º¯µ¿°ª }; struct MSG_SYN_SKILL_INFLUENCE_MPCHANGE : public MSGROOT { unsigned long mInfluenceIdx; /// È¿°ú °íÀ¯¹øÈ£ sObject mTarget; /// Ÿ°Ù short mChangeValue; /// º¯µ¿°ª }; struct MSG_SYN_SKILL_APPLY_HPMP : public MSGROOT { sObject mTarget; unsigned long mHP; unsigned long mMaxHP; unsigned long mMP; unsigned long mMaxMP; }; struct MSG_SYN_SKILL_APPLY_DIE : public MSGROOT { sObject mAttacker; /// °ø°ÝÀÚ sObject mTarget; unsigned char mDamageKind; }; struct MSG_SYN_SKILL_NONSKILL_HPCHANGE: public MSGROOT { unsigned long mInfluenceClassIdx; /// È¿°ú Á¾·ù ¹øÈ£ sObject mTarget; /// Ÿ°Ù short mChangeValue; /// º¯µ¿°ª }; struct MSG_SYN_SKILL_NONSKILL_MPCHANGE : public MSGROOT { unsigned long mInfluenceClassIdx; /// È¿°ú Á¾·ù ¹øÈ£ sObject mTarget; /// Ÿ°Ù short mChangeValue; /// º¯µ¿°ª }; struct MSG_RES_SKILL_RESURRECTION : public MSGROOT { unsigned long mAttackerIdx; /// ºÎȰ½ºÅ³À» ½áÁØÇ÷¹À̾î }; struct MSG_SYN_SKILL_RESURRECTION : public MSGROOT { sObject mTarget; /// ºÎȰµÈ Ÿ°Ù unsigned long mTargetHP; /// hpȸº¹·® unsigned long mTargetMaxHp; unsigned long mTargetMP; /// mpȸº¹·® unsigned long mTargetMaxMp; }; struct MSG_RES_SKILL_CHGMON_COOLTIME : public MSGROOT { unsigned long mSkill1CoolTime; unsigned long mSkill2CoolTime; unsigned long mSkill3CoolTime; }; struct MSG_SYN_SKILL_INFLUENCE_GUARDCHANGE : public MSGROOT { unsigned long mInfluenceIdx; unsigned char mChangeCnt; unsigned short mChangeValue; }; struct MSG_SYN_SKLL_PUSHPULL : public MSGROOT { sObject mTarget; float mPosX; float mPosY; }; #pragma pack(pop)