/* ==================================================================== * ÆÄ ÀÏ : * ¸ñ Àû : * ÀÛ ¼º ÀÚ : Á¤¼º´ë * ÀÛ ¼º ÀÏ : 2006.08.29 * * Ãß°¡³»¿ë : * Ãß°¡³¯Â¥ ÀÛ¾÷ÀÚ Ãß°¡³»¿ë * 2006.08.29 Á¤¼º´ë »ý¼º * * ÁÖÀÇ»çÇ× : * =================================================================== */ #pragma once #pragma pack(push,1) #include "BaseObject_Common.h" #include "CommonDefines.h" #include "CommonNetworkMsgStruct.h" #include "Cheat_Common.h" // Àκ¥Å丮, â°í ÃÖ´ë ¼ÒÁöÇÒ ¼ö ÀÖ´Â ±Ý¾× - 30¾ï const unsigned long MAX_HAVE_MONEY = 3000000000; // ÃÖ´ë °Å·¡ ±Ý¾× - 10¾ï const unsigned long MAX_TRADE_MONEY = 1000000000; // °¡¹æ Ãß°¡½Ã Áõ°¡µÇ´Â ¹«°Ô ¼öÄ¡(´©Àû°ªÀ¸·Î Àû¿ë) const unsigned long ADD_BAG1_WEIGHT = 200; const unsigned long ADD_BAG2_WEIGHT = 600; // ADD_BAG1_WEIGHT + 400 const unsigned long ADD_BAG3_WEIGHT = 1400; // ADD_BAG2_WEIGHT + 800 /// ºÎȰ °æÇèÄ¡ ¹üÀ§ const float RESURRECTION_EXP_STAND_MIN = 3.0f; const float RESURRECTION_EXP_STAND_MAX = 5.0f; const float RESURRECTION_EXP_SAFE_MIN = 1.0f; const float RESURRECTION_EXP_SAFE_MAX = 3.0f; const float RESURRECTION_EXP_SKILL_MIN = 1.0f; const float RESURRECTION_EXP_SKILL_MAX = 3.0f; const float RESURRECTION_THEME_EXP_SAFE_MIN = 0.1f; const float RESURRECTION_THEME_EXP_SAFE_MAX = 0.3f; const float RESURRECTION_THEME_EXP_SKILL_MIN = 0.1f; const float RESURRECTION_THEME_EXP_SKILL_MAX = 0.3f; /// Á¦ÀÚ¸®ºÎȰ µð¹öÇÁ const int RESURRECTION_STAND_INFLUENCE_CLASSIDX = 25000; const int PLAYER_ITEMMAPCHANGE_WAITTIME = 10 * SECOND; const int PLAYER_ITEMMAPCHANGE_CLEARTIME = 3 * SECOND; /// ÀÚ¿¬È¸º¹ ½Ã°£ const unsigned long NATURE_RECOVERY_TIME = 10 * SECOND; const unsigned long SITDOWN_RECOVERY_TIME = 5 * SECOND; /// ¸ó½ºÅÍ º¯½Å½Ã ü°ø ½Ã°£ const unsigned long PLAYER_JUMPTIME_CHGMONSTER = 1100; /// enum º¯¼öµé... enum /*Gender*/ { eGENDER_MALE = 0, eGENDER_FEMALE, eGENDER_MAX, }; enum /*Race*/ { eRACE_HUMAN = 0, eRACE_BEAST, eRACE_ELF, eRACE_MAX, }; enum eHAND_TYPE { eHAND_LEFT = 0, eHAND_RIGHT, eHAND_ALL, eHAND_NONE, }; enum eCOSTUME_LINK { eCOSTUME_HEAD = 0, eCOSTUME_BACK, eCOSTUME_MAX, }; /// head, wear typeÀº ±¸Á¶Ã¼ °ü¸®¸¦ À§ÇÑ ÇüÅ enum eHEAD_TYPE { eHEAD_HAIR = 0, eHEAD_HAIRCOLOR, eHEAD_FACE, eHEAD_FACE_STATIC, /// static face emote eHEAD_MAX, }; /* unsigned char */ enum eWEAR_TYPE { eWEAR_BODY1 = 0, eWEAR_BODY2, eWEAR_HAND, eWEAR_FOOT, eWEAR_HAT, eWEAR_MAX, eWEAR_ONEPIECE, }; /// /* unsigned char */ enum eWEAPON_STATE { // eWEAPON_STATE_NONE = 0, eWEAPON_STATE_SWORD = 1, // ÇÑ¼Õ°Ë // eWEAPON_STATE_LONGSWORD, // ¾ç¼Õ°Ë eWEAPON_STATE_DOUBLESWORD, // À̵µ·ù eWEAPON_STATE_SHORTSWORD, // ´Ü°Ë eWEAPON_STATE_GUN, // ÃÑ eWEAPON_STATE_STAFF, // ÁöÆÎÀÌ eWEAPON_STATE_MAX, // ÀÌ °ªÀº ¿¬Ãâ°ú¾Ö´Ï ¿¬°á¿¡¸¸ »ç¿ëÇÑ´Ù. /// ¾Æ·¡ µÎ°³´Â ¾Ö´Ï ¹× °¢Á¾ »óÅ¿¡¼­ ¿¹¿Üó¸® µÈ´Ù. eWEAPON_STATE_SHEILD, // ¹æÆÐ¸¸ eWEAPON_STATE_SWORD_SHEILD = eWEAPON_STATE_SWORD + eWEAPON_STATE_SHEILD, // ÇÑ¼Õ°Ë + ¹æÆÐ }; enum ePLAYER_ANIMATIONTYPE { /// ¹«±âº° ¾Ö´Ï¿Í °øÅë ¾Ö´Ï¸¦ ±¸ºÐÇϱâ À§ÇÑ Á¤ÀÇ ANITYPE_COMMON = 799, /// ¹«±âº° ANITYPE_IDLE = 0, ANITYPE_IDLE2 = 10, ANITYPE_RUN = 20, ANITYPE_ATTACK1 = 30, ANITYPE_ATTACK2 = 40, ANITYPE_ATTACK3 = 50, ANITYPE_CASTING1 = 60, ANITYPE_CASTING2 = 70, ANITYPE_CASTING3 = 80, ANITYPE_DAMAGE1 = 90, ANITYPE_DAMAGE2 = 100, ANITYPE_DIE1 = 110, ANITYPE_DIE2 = 120, ANITYPE_COMMON_SKILL_BEGIN = 130, ANITYPE_USESKILL1 = ANITYPE_COMMON_SKILL_BEGIN, ANITYPE_USESKILL2 = 140, ANITYPE_COMMON_SKILL_END = 150, ANITYPE_JUMP = 180, ANITYPE_JUMP_END = 190, ANITYPE_SKILL_BEGIN = 201, ANITYPE_SWORD_SKILL = ANITYPE_SKILL_BEGIN, ANITYPE_LONGSWORD_SKILL = 301, ANITYPE_DOUBLESWORD_SKILL = 401, ANITYPE_SHORTSWORD_SKILL = 501, ANITYPE_GUN_SKILL = 601, ANITYPE_STAFF_SKILL = 701, ANITYPE_SKILL_END = 800, /// °øÅë ¾Ö´Ï ANITYPE_PEACE_IDLE = 801, ANITYPE_PEACE_IDLE2 = 802, ANITYPE_ITEMPICK = 803, ANITYPE_SITDOWN = 804, ANITYPE_SITDOWN_IDLE = 805, ANITYPE_STANDUP = 806, ANITYPE_ENHANCED = 816, ANITYPE_ENHANCEDSUCCESS = 817, ANITYPE_ENHANCEDFAIL = 818, ANITYPE_DUELWIN = 819, ANITYPE_DUELLOSE = 820, ANITYPE_GATHERING1 = 831, ANITYPE_GATHERING2 = 832, ANITYPE_EMOTE_START = 900, /// ANITYPE_VEHICLE_IDLE = 1001, ANITYPE_VEHICLE_IDLE2 = 1501, ANITYPE_VEHICLE_RUN = 2001, }; enum ePLAYER_JOB_GROUP { /// Á÷¾÷°è¿­ÀÇ ÃÖ»óÀ§ Á¤º¸.. ePLAYER_JOBGROUP_FIGHTER = 1, ePLAYER_JOBGROUP_MAGE, ePLAYER_JOBGROUP_RANGER, ePLAYER_JOBGROUP_SHAMAN, ePLAYER_JOBGROUP_WARRIOR, ePLAYER_JOBGROUP_ROGUE, ePLAYER_JOBGROUP_MAX = ePLAYER_JOBGROUP_ROGUE, }; /// Ç÷¹À̾î Á÷¾÷ Á¤ÀÇ enum ePLAYER_JOB /* unsigned short */ { /// Á÷¾÷±¸ºÐÀ̾ø´Ù. ePLAYER_NONEJOB = 0, /// ÆÄÀÌÅÍ ±º ePLAYER_FIGHTER = 1000, /// ÆÄÀÌÅÍ ePLAYER_KNIGHT = 1101, /// ³ªÀÌÆ® ePLAYER_GLADIATOR = 1102, /// ±Û¶óµð¿¡ÀÌÅÍ ePLAYER_MERCENARY = 1103, /// ¸Ó¼Å³Ê¸® ePLAYER_CRUSADER = 1201, /// Å©·ç¼¼ÀÌ´õ ePLAYER_TEMPLAR = 1202, /// ÅÛÇ÷¯ ePLAYER_SOULBLADER = 1203, /// ¼Ò¿ïºí·¹ÀÌ´õ /// ¸ÞÀÌÁö ±º ePLAYER_MAGE = 2000, /// ¸ÞÀÌÁö ePLAYER_MAGICIAN = 2101, /// ¸ÅÁö¼Ç ePLAYER_PRIEST = 2102, /// ÇÁ¸®½ºÆ® ePLAYER_WIZARD = 2201, /// À§ÀÚµå ePLAYER_HIGHPRIEST = 2202, /// ÇÏÀÌÇÁ¸®½ºÆ® /// ¿ø´õ·¯ ±º ePLAYER_WANDERER = 3000, /// ¿ø´õ·¯ ePLAYER_WINDWALKER = 3101, /// À©µå¿öÄ¿ ePLAYER_SCOUT = 3102, /// ½ºÄ«¿ìÆ® ePLAYER_ASSASSIN = 3201, /// ¾î½Ø½Å ePLAYER_SNIPER = 3202, /// ½º³ªÀÌÆÛ /// ¿ö·Ï ±º ePLAYER_WARLOCK = 4000, /// ¿ö·Ï ePLAYER_SHAMAN = 4101, /// »þ¸Õ ePLAYER_SAGE = 4102, /// ¼¼ÀÌÁö ePLAYER_SORCERER = 4201, /// ¼Ò¼­·¯ ePLAYER_MENTALIST = 4202, /// ¸àÅ»¸®½ºÆ® /// ¾ÏÁî¸Ç ±º ePLAYER_ARMSMAN = 5000, /// ¾ÏÁî¸Ç ePLAYER_VETERAN = 5101, /// º£Å×¶û ePLAYER_BERSERK = 5102, /// ¹ö¼­Ä¿ ePLAYER_WARRIOR = 5103, /// ¿ö¸®¾î ePLAYER_CHAMPION = 5201, /// èÇǿ ePLAYER_SLAYER = 5202, /// ½½·¹À̾î ePLAYER_HIGHLANDER = 5203, /// ÇÏÀÌ·£´õ /// ·¹ÀÎÀú ±º ePLAYER_RANGER = 6000, /// ·¹ÀÎÁ® ePLAYER_SHADOWWALKER = 6101, /// ¼¨µµ¿ì¿öÄ¿ ePLAYER_HUNTER = 6102, /// ÇåÅÍ ePLAYER_AVENGER = 6201, /// ¾î¹êÁ® ePLAYER_SHARPSHOOTER = 6202, /// »þÇÁ½´ÅÍ ePLAYERJOB_MAX, /// db½ºÅ©¸³Æ® insert¿ë ÃÖ´ë°ª }; enum ePLAYER_STATUS { ePLAYER_STATUS_STR = 0, /// Èû ePLAYER_STATUS_DEX, /// ¹Îø ePLAYER_STATUS_CON, /// ü·Â ePLAYER_STATUS_INT, /// Áö´É ePLAYER_STATUS_WIS, /// ÁöÇý ePLAYER_STATUS_LEVEL, /// ·¹º§ - ½ºÅ©¸³Æ®¿¡¼­¸¸ »ç¿ë = ePLAYER_STATUS_MAX ePLAYER_STATUS_LEVEL_MAX /// ·¹º§ Æ÷ÇÔ ÃÖ´ë °ª }; enum ePLAYER_STATUS_EXT { ePLAYER_STATUS_EXT_ATK = 0, /// ¹°¸®±ÙÁ¢°ø°Ý ePLAYER_STATUS_EXT_RATK, /// ¹°¸®¿ø°Å¸®°ø°Ý ePLAYER_STATUS_EXT_DEF, /// ¹°¸® ¹æ¾î·Â ePLAYER_STATUS_EXT_MATK, /// ¸¶¹ý °ø°Ý·Â ePLAYER_STATUS_EXT_MDEF, /// ¸¶¹ý ¹æ¾î·Â ePLAYER_STATUS_EXT_CRI, /// ¹°¸® °ø°Ý Å©¸® ePLAYER_STATUS_EXT_MCRI, /// ¸¶¹ý °ø°Ý Å©¸® ePLAYER_STATUS_EXT_MAXHP, /// HP ePLAYER_STATUS_EXT_MAXMP, /// MP ePLAYER_STATUS_EXT_RECOVHP, /// HP ȸº¹·® ePLAYER_STATUS_EXT_RECOVMP, /// MP ȸº¹·® ePLAYER_STATUS_EXT_HIT, /// ¹°¸®¸íÁß·ü ePLAYER_STATUS_EXT_MHIT, /// ¸¶¹ý¸íÁß·ü ePLAYER_STATUS_EXT_AVOID, /// ȸÇÇÀ² ePLAYER_STATUS_EXT_WEIGHT, /// ¹«°Ô ePLAYER_STATUS_EXT_ASPD, /// ÀϹݰø°Ý¼Óµµ ePLAYER_STATUS_EXT_COOLTIME, /// cooltime ePLAYER_STATUS_EXT_RANGE, /// ±Ù°Å¸®»çÁ¤°Å¸® ePLAYER_STATUS_EXT_RRANGE, /// ¿ø°Å¸®(+¸¶¹ý)»çÁ¤°Å¸® ePLAYER_STATUS_EXT_SPD, /// À̵¿¼Óµµ ePLAYER_STATUS_EXT_HEAL, /// Èúȸº¹·® ePLAYER_STATUS_EXT_RECEIVEHEAL, /// ¹Þ´Â ȸº¹·® Áõ°¡Ä¡ ePLAYER_STATUS_EXT_MAVOID, /// ¸¶¹ýȸÇÇÀ²(ÀúÇ×·Â) ePLAYER_STATUS_EXT_CRIDEF, /// ¹°¸® °ø°Ý Å©¸® °¨¼Ò ePLAYER_STATUS_EXT_MCRIDEF, /// ¸¶¹ý °ø°Ý Å©¸® °¨¼Ò ePLAYER_STATUS_EXT_DISTRESS, /// ¾î±×·Î °¨¼Ò Ãß°¡ ePLAYER_STATUS_EXT_USE_MP, /// MP ¼Ò¸ð·® ePLAYER_STATUS_EXT_CASTING, /// ij½ºÆÃ ½Ã°£ ePLAYER_STATUS_EXT_HUMAN_ATK, /// Àΰ£Çü °ø°Ý·Â ePLAYER_STATUS_EXT_ANIMAL_ATK, /// µ¿¹°Çü °ø°Ý·Â ePLAYER_STATUS_EXT_PLANT_ATK, /// ½Ä¹°Çü °ø°Ý·Â ePLAYER_STATUS_EXT_BUG_ATK, /// °ïÃæÇü °ø°Ý·Â ePLAYER_STATUS_EXT_SOUL_ATK, /// Á¤·ÉÇü °ø°Ý·Â ePLAYER_STATUS_EXT_UNDEAD_ATK, /// ¾ðµ¥µåÇü °ø°Ý·Â ePLAYER_STATUS_EXT_GIANT_ATK, /// °ÅÀÎÇü °ø°Ý·Â ePLAYER_STATUS_EXT_DRAGON_ATK, /// ¿ëÇü °ø°Ý·Â ePLAYER_STATUS_EXT_NORMAL_ATK, /// ÀÏ¹Ý ¸ó½ºÅÍÇü °ø°Ý·Â ePLAYER_STATUS_EXT_VETERAN_ATK, /// Á¤¿¹ ¸ó½ºÅÍÇü °ø°Ý·Â ePLAYER_STATUS_EXT_ELITE_ATK, /// ¿¤¸®Æ® ¸ó½ºÅÍÇü °ø°Ý·Â ePLAYER_STATUS_EXT_BOSS_ATK, /// º¸½º ¸ó½ºÅÍÇü °ø°Ý·Â ePLAYER_STATUS_EXT_CHARACTER_ATK,/// ij¸¯ÅÍÇü °ø°Ý·Â ePLAYER_STATUS_EXT_ATKTOTAL, /// °ø°Ý·Â Àüü ePLAYER_STATUS_EXT_DEFTOTAL, /// ¹æ¾î·Â Àüü ePLAYER_STATUS_EXT_ATKMin, /// ¹°¸®±ÙÁ¢ °ø°Ý·Â ÃÖ¼Ò ePLAYER_STATUS_EXT_ATKMax, /// ¹°¸®±ÙÁ¢ °ø°Ý·Â ÃÖ´ë ePLAYER_STATUS_EXT_RATKMin, /// ¹°¸®¿ø°Å¸® °ø°Ý·Â ÃÖ¼Ò ePLAYER_STATUS_EXT_RATKMax, /// ¹°¸®¿ø°Å¸® °ø°Ý·Â ÃÖ´ë ePLAYER_STATUS_EXT_MATKMin, /// ¸¶¹ý °ø°Ý·Â ÃÖ¼Ò ePLAYER_STATUS_EXT_MATKMax, /// ¸¶¹ý °ø°Ý·Â ÃÖ¼Ò ePLAYER_STATUS_EXT2_MAX, /// ÃÖ¼Ò Ãִ븦 Æ÷ÇÔÇÑ ÃÖ´ë°ª ePLAYER_STATUS_EXT_MAX = ePLAYER_STATUS_EXT_ATKTOTAL, /// ÃÖ¼Ò Ãִ븦 Æ÷ÇÔ ÇÏÁö ¾ÊÀº ÃÖ´ë°ª ePLAYER_STATUS_EXT_JUMP = 99, /// Á¡ÇÁ ü°ø½Ã°£ }; enum ePLAYER_STATUS_EXT_ADD { ePLAYER_STATUS_EXT_ADD_EXPADDPER, /// °æÇèÄ¡ ePLAYER_STATUS_EXT_ADD_EXPADDPLUS, ePLAYER_STATUS_EXT_ADD_SXPADDPER, /// ½ºÅ³°æÇèÄ¡ ePLAYER_STATUS_EXT_ADD_SXPADDPLUS, ePLAYER_STATUS_EXT_ADD_MONEYPER, /// Å׸£ ePLAYER_STATUS_EXT_ADD_PVPPOINTPER, /// ÀüÀåÆ÷ÀÎÆ® ePLAYER_STATUS_EXT_ADD_MAX, }; enum ePLAYER_STATUS_DAMAGE { /// °ø°Ý ¼º°ø È®·ü ePLAYER_STATUS_DAMAGE_INSTANTPERHIT, /// %¼ø°£ È¿°ú ePLAYER_STATUS_DAMAGE_INSTANTPLUSHIT, /// ¼ø°£ È¿°ú /// Å©¸®Æ¼Äà ¹ß»ý È®·ü(¹°¸®) ePLAYER_STATUS_DAMAGE_PHYINSTANTPERCRI, /// %¼ø°£ È¿°ú ePLAYER_STATUS_DAMAGE_PHYINSTANTPLUSCRI, /// ¼ø°£ È¿°ú /// Å©¸®Æ¼Äà ¹ß»ý È®·ü(¸¶¹ý) ePLAYER_STATUS_DAMAGE_MAGICINSTANTPERCRI, /// %¼ø°£ È¿°ú ePLAYER_STATUS_DAMAGE_MAGICINSTANTPLUSCRI, /// ¼ø°£ È¿°ú /// °ø°Ý·Â(¹°¸®) ePLAYER_STATUS_DAMAGE_PHYINSTANTPERATTACK, /// %¼ø°£ È¿°ú ePLAYER_STATUS_DAMAGE_PHYINSTANTPLUSATTACK, /// ¼ø°£ È¿°ú /// °ø°Ý·Â(¸¶¹ý) ePLAYER_STATUS_DAMAGE_MAGICINSTANTPERATTACK, /// %¼ø°£ È¿°ú ePLAYER_STATUS_DAMAGE_MAGICINSTANTPLUSATTACK, /// ¼ø°£ È¿°ú /// ÃÖÁ¾ µ¥¹ÌÁö ePLAYER_STATUS_DAMAGE_INSTANTPERFINAL, /// %¼ø°£ È¿°ú ePLAYER_STATUS_DAMAGE_INSTANTPLUSFINAL, /// ¼ø°£ È¿°ú ePLAYER_STATUS_DAMAGE_MAX, }; enum ePLAYERIDLE { ePLAYER_IDLE_WAR, ePLAYER_IDLE_PEACE, }; enum //ePLAYERSTATE { ePLAYER_STATE_SITDOWN = eOBJECT_STATE_MAX, ePLAYER_STATE_ITEMPICK, ePLAYER_STATE_GATHERING, ePLAYER_STATE_RUSH, }; enum eIDLEFLAG { eIDLE_NORMAL = 0, eIDLE_PEACE, }; enum eSTOPFLAG { eSTOP_NONE = 0, eSTOP_READYTAROT, /// °³¼³ÀÚ ´ë±â»óÅ eSTOP_OPENTAROT, /// °³¼³ÀÚ ¿ÀÇ »óÅ eSTOP_ENTERTAROT, /// °ü¶÷ÀÚ Å¸·Ô eSTOP_USETAROT, /// Âü¿©ÀÚ Å¸·Ô »ç¿ëÁß eSTOP_SELFTAROT, /// Ÿ·Ô »ç¿ëÁß(SELF) eSTOP_OPENSTALL, /// ³ëÁ¡ ¿ÀÇ »óÅ eSTOP_USESTALL, /// ³ëÁ¡ ÀÌ¿ë »óÅ eSTOP_NPCSPEECH, /// NPC´ëÈ­Áß // eSTOP_GAMEFINISH, /// °ÔÀÓ Á¾·áÁß eSTOP_ENHANCED, /// °­È­ eSTOP_ITEMMIX, /// Á¶ÇÕ eSTOP_SKILLRESET, /// ½ºÅ³ÃʱâÈ­ eSTOP_MAPCHANGE, /// ¸ÊüÀÎÁö »óÅ ó¸® eSTOP_CHEATSTOP, /// ġƮ ¸í·ÉÀ¸·Î ÀÎÇÑ Á¤Áö eSTOP_TELEPORTPORTAL, /// ÅÚ·¹Æ÷Æ® Æ÷Å» ÀÌ¿ëÁß eSTOP_THEMERESET, /// Å׸¶ÃʱâÈ­ eSTOP_SUMMON_PAPER, /// ¼ÒȯÁÖ¹®¼­ »ç¿ëÁß }; enum eRESURRECTION_TYPE { eRESURRECTIONTYPE_STAND = 0, /// Á¦ÀÚ¸® ºÎȰ eRESURRECTIONTYPE_SAFE, /// ¾ÈÀüÁö´ë ºÎȰ eRESURRECTIONTYPE_SKILL, /// ½ºÅ³ ºÎȰ }; enum eFORCE_TYPE { eFORCETYPE_NONE = 0, eFORCETYPE_FIRE, eFORCETYPE_WATER, eFORCETYPE_WIND, eFORCETYPE_EARTH, eFORCETYPE_MAX, }; /// ±¸Á¶Ã¼... struct sPlayerInfo { unsigned long CharacterIdx; /// ij¸¯ÅÍ À妽º wchar_t strName[MAX_NAME_BUFFER_SIZE]; /// ij¸¯ÅÍ À̸§ unsigned char Level; /// ÇöÀç ·¹º§ unsigned char Race; /// Á¾Á· - enum /*Race*/ unsigned char Gender; /// ¼ºº° - enum /*Gender*/ ePLAYER_JOB Job; /// Á÷¾÷ unsigned long HeadInfo[eHEAD_MAX]; sPlayerInfo() { ::memset(this, 0, sizeof(sPlayerInfo)); HeadInfo[eHEAD_FACE] = 1; } }; struct sPlayerWearInfo { /// ±×·¡ÇÈ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù.(HATÀº ¿¹¿Ü·Î ÇÑ´Ù.) unsigned long WearIdx[eWEAR_MAX]; /// ÄÚ½ºÆ¬ Âø¿ë Á¤º¸ unsigned long CostumeIdx[eWEAR_MAX]; /// ÄÚ½ºÆ¬ ¾Ç¼¼¼­¸® unsigned long CostumeAccIdx[eCOSTUME_MAX]; /// ±×·¡ÇÈÀû µ¥ÀÌÅÍÀÇ º¯°æÀÌ ÇÊ¿ä ¾ø´Â ºÎºÐ // unsigned long Hat; unsigned long Earring; unsigned long Necklace; unsigned long Brooch; unsigned long Bracelet; unsigned long Ring; sPlayerWearInfo() { ::memset(this, 0, sizeof(sPlayerWearInfo)); } }; struct sPlayerWeaponInfo { unsigned long WeaponIdx[eHAND_ALL]; unsigned char WeaponEnhanced[eHAND_ALL]; sPlayerWeaponInfo() { ::memset(this, 0, sizeof(sPlayerWeaponInfo)); } }; struct sPlayerExrInfo { unsigned long RestHP; /// ³²Àº »ý¸í·Â unsigned long RestMP; /// ³²Àº ¸¶³ª unsigned long MaxHP; unsigned long MaxMP; /// player´Â ÀÌ º¯¼ö¿¡ ´ã¾ÆÁ® Àϰý ¹ß¼ÛµÇ°í /// hero´Â status°è»ê ÀüÀ̶ó °è»êÈÄ¿¡ µû·Î(heroinfo) ¹ß¼ÛÇÑ´Ù. /////////////////////////////////////////////////////// float mBaseFixedSize; /// ¿ÀºêÁ§Æ® ±âº» Å©±â unsigned short mFixedObjectSizePer; /// ¿ÀºêÁ§Æ®ÀÇ °Å¸® üũ ¼öÁ¤ °Å¸® - Àû¿ë ¹üÀ§ long mMoveSpeed; /// À̵¿ ¼Óµµ float mAttackSpeed; /// ±âº»°ø°Ý °ø¼ÓÀ» À§ÇÑ º¯¼ö unsigned long mChgMonsterIdx; /// ¸ó½ºÅÍ ¿ÜÇü º¯½Å ¸ó½ºÅÍ °íÀ¯¹øÈ£ unsigned long mVehicleIdx; /// Å»°Í /////////////////////////////////////////////////////// /// 071109 PKH ÆòÈ­ ´ë±â»óÅ - ¼­¹ö¿¡¼­ 󸮴 ÇÏÁö¾Ê°í Ŭ¶óÀÌ¾ðÆ®¿¡ ¾Ë·ÁÁֱ⸸ÇÔ unsigned char mStateIdle; /// eIDLEFLAG /// 070601 PKH Ç÷¹ÀÌ¾î »óÅ unsigned char mState; /// eOBJECTSTATE /// 071109 PKH Á¤Áö »óÅÂÀϰæ¿ì ¼¼ºÎ»çÇ× unsigned char mStateStop; /// eSTOPFLAG unsigned long mCommunitySkillIdx; /// °áÅõÁßÀÎÁö ¿©ºÎ bool mIsDuelIdx; unsigned char mForceType; /// eFORCE_TYPE /// pvp unsigned char mPvPDMTeamType; /// ePVPDM_TEAM_TYPE /// ¼³Á¤µÈ ȣĪ Á¤º¸ unsigned long mTitleIndex; /// ÆÄƼ À妽º unsigned long mPartyIndex; /// ÆÄƼ ¿¬ÇÕ À妽º unsigned long mPartyUnionIndex; /// ±æµå unsigned long mGuildIndex; wchar_t mGuildName[MAX_GUILDNAME_BUFFER_SIZE]; /// ±æµå¸í unsigned char mGuildPosition; /// ±æµå Á÷À§ À妽º // ±æµå¸¶Å©Á¤º¸ tm mGuildMarkDate; bool mUseGuildMark; /// ±æµå¸¶Å© »ç¿ë ¿©ºÎ /// ¿À´ÃÀÇ ÇѸ¶µð wchar_t mTodayWord[MAX_TODAYWORD_BUFFER_SIZE]; unsigned long mTodayColor; /// »ö sPlayerExrInfo() { memset(this, 0, sizeof(sPlayerExrInfo)); } }; struct sMakeSkill { unsigned char mIndex; // ½ºÅ³ À妽º unsigned char mStep; // ´Ü°è unsigned long mExp; // ¼÷·Ãµµ sMakeSkill() { memset(this, 0, sizeof(sMakeSkill)); } }; struct sHeroInfo { unsigned long Exp; // ÇöÀç °æÇèÄ¡ /// --½ºÅ³°ú °ü·ÃµÈ Æ÷ÀÎÆ®-- unsigned char SkillLevel; /// ½ºÅ³ °æÇèÄ¡·Î ·¹º§¾÷À» ÇÔ unsigned int SkillExp; /// ÇöÀç ½ºÅ³°æÇèÄ¡ unsigned short SkillPointRemain; /// ÀÜ¿© ½ºÅ³Æ÷ÀÎÆ® unsigned short SkillPointTotal; /// ÃÑ È¹µæ ½ºÅ³ Æ÷ÀÎÆ® /// ¼¼·Â Æ÷ÀÎÆ® unsigned long mFirePoint; unsigned long mFireFriendly; unsigned long mWaterPoint; unsigned long mWaterFriendly; unsigned long mWindPoint; unsigned long mWindFriendly; unsigned long mEarthPoint; unsigned long mEarthFriendly; /// Ÿ·Î Æ÷ÀÎÆ® unsigned long TarotPoint; /// Àü¹® ±â¼ú sMakeSkill MakeSkill1; sMakeSkill MakeSkill2; unsigned short BagEnd; unsigned short WearEnd; unsigned short WareHouseEnd; unsigned short MakeSkillEnd; /// Ç϶ôµÈ °æÇèÄ¡·® - º¹±¸ °¡´É°æÇèÄ¡ unsigned long mLoseExp; sHeroInfo() { memset(this, 0, sizeof(sHeroInfo)); } }; struct sStatus1 { float mStr; /// Èû float mDex; /// ¹Îø float mCon; /// ü·Â float mInt; /// Áö´É float mWis; /// ÁöÇý sStatus1() { memset(this, 0, sizeof(sStatus1)); } }; struct sStatus2 { float mPhysicMinAttack; /// ¹°¸®:ÃּұٰŸ®°ø°Ý·Â float mPhysicMaxAttack; /// ¹°¸®:ÃÖ´ë±Ù°Å¸®°ø°Ý·Â float mPhysicMinRangeAttack; /// ¹°¸®:ÃÖ¼Ò¿ø°Å¸®°ø°Ý·Â float mPhysicMaxRangeAttack; /// ¹°¸®:ÃÖ´ë¿ø°Å¸®°ø°Ý·Â float mPhysicDefense; /// ¹°¸®:¹æ¾î·Â float mMagicMinAttack; /// ¸¶¹ý:ÃÖ¼Ò°ø°Ý·Â float mMagicMaxAttack; /// ¸¶¹ý:ÃÖ´ë°ø°Ý·Â float mMagicDefense; /// ¸¶¹ý:¹æ¾î·Â float mPhysicCritical; /// ¹°¸®:Å©¸®Æ¼Äà float mMagicCritical; /// ¸¶¹ý:Å©¸®Æ¼Äà // float mMaxHP; /// Áõ°¡:ÃÖ´ëHP // float mMaxMP; /// Áõ°¡:ÃÖ´ëMP float mRecovHP; /// Áõ°¡:ȸº¹HP% float mRecovMP; /// Áõ°¡:ȸº¹MP% float mPhysicAttackRate; /// ¹°¸®:°ø°Ý·ü float mMagicAttackRate; /// ¸¶¹ý:°ø°Ý·ü float mPhysicAvoid; /// Áõ°¡:ȸÇÇ float mMagicAvoid; /// Áõ°¡:ȸÇÇ float mMaxWeight; /// ¹«°Ô float mAttackSpeed; /// ÀϹݰø°Ý¼Óµµ float mCooltime; /// cooltime float mInRange; /// ±Ù°Å¸®»çÁ¤°Å¸® float mOutRange; /// ¿ø°Å¸®(+¸¶¹ý)»çÁ¤°Å¸® float mMoveSpeed; /// À̵¿¼Óµµ float mHeal; /// ȸº¹·® float mReceiveHeal; /// ¹Þ´Â ȸº¹·® Áõ°¡ float mPhyCriDef; /// ¹°¸® Å©¸® °¨¼Ò(¹æÈ£) float mMagCriDef; /// ¸¶¹ý Å©¸® °¨¼Ò(¹æÈ£) float mDistress; /// ¾î±×·Î ¼öÄ¡ -¾ÆÁ÷ ÀÛ¾÷ ¾ÈµÊ[4/14/2010 Jo_Client] float mUseMP; /// MP ¼Ò¸ð·® °¨¼Ò float mCasting; /// ij½ºÆÃ°¨¼Ò -¾ÆÁ÷ ÀÛ¾÷ ¾ÈµÊ[4/14/2010 Jo_Client] float mHumanTypePer; /// Áõ°¡:Àΰ£Çü °ø°Ý·Â(%) float mAnimalTypePer; /// Áõ°¡:µ¿¹°Çü °ø°Ý·Â(%) float mPlantTypePer; /// Áõ°¡:Áõ°¡:½Ä¹°Çü °ø°Ý·Â(%) float mBugTypePer; /// Áõ°¡:°ïÃæÇü °ø°Ý·Â(%) float mSoulTypePer; /// Áõ°¡:Á¤·ÉÇü °ø°Ý·Â(%) float mUndeadTypePer; /// Áõ°¡:¾ðµ¥µåÇü °ø°Ý·Â(%) float mGiantTypePer; /// Áõ°¡:°ÅÀÎÇü °ø°Ý·Â(%) float mDragonTypePer; /// Áõ°¡:¿ëÇü °ø°Ý·Â(%) float mNormalTypePer; /// Áõ°¡:ÀÏ¹Ý ¸ó½ºÅÍ °ø°Ý·Â(%) float mVeteranTypePer; /// Áõ°¡:Á¤¿¹ ¸ó½ºÅÍ °ø°Ý·Â(%) float mEliteTypePer; /// Áõ°¡:¿¤¸®Æ® ¸ó½ºÅÍ °ø°Ý·Â(%) float mBossTypePer; /// Áõ°¡:º¸½º ¸ó½ºÅÍ °ø°Ý·Â(%) sStatus2() { memset(this, 0, sizeof(sStatus2)); } }; struct sStatusEtc { float mExpAddPer; /// exp Áõ°¡ % float mExpAddPlus; /// exp Áõ°¡ + float mSxpAddPer; /// sxp Áõ°¡ % float mSxpAddPlus; /// sxp Áõ°¡ + float mMoneyAddPer; /// Å׸£ ȹµæ Áõ°¡ % float mPvPPointAddPer; /// ÀüÀå Æ÷ÀÎÆ® ȹµæ Áõ°¡ % }; struct sDamageCalc { /// °ø°Ý ¼º°ø È®·ü long mInstantPerHit; /// %¼ø°£ È¿°ú long mInstantPlusHit; /// ¼ø°£ È¿°ú /// Å©¸®Æ¼Äà ¹ß»ý È®·ü(¹°¸®) long mPhyInstantPerCri; /// %¼ø°£ È¿°ú long mPhyInstantPlusCri; /// ¼ø°£ È¿°ú /// Å©¸®Æ¼Äà ¹ß»ý È®·ü(¸¶¹ý) long mMagicInstantPerCri; /// %¼ø°£ È¿°ú long mMagicInstantPlusCri; /// ¼ø°£ È¿°ú /// °ø°Ý·Â(¹°¸®) long mPhyInstantPerAttack; /// %¼ø°£ È¿°ú long mPhyInstantPlusAttack; /// ¼ø°£ È¿°ú /// °ø°Ý·Â(¸¶¹ý) long mMagicInstantPerAttack; /// %¼ø°£ È¿°ú long mMagicInstantPlusAttack; /// ¼ø°£ È¿°ú /// ÃÖÁ¾ µ¥¹ÌÁö long mInstantPerFinal; /// %¼ø°£ È¿°ú long mInstantPlusFinal; /// ¼ø°£ È¿°ú }; struct sMoveMsg { bool mMsgError; char mProtocol; NiPoint2 mStartPos; NiPoint2 mDestPos; float mRange; sObject mTargetInfo; NiPoint2 mTargetPos; }; /// GM À̺¥Æ® Á¤º¸ ±¸Á¶Ã¼ struct sGMEventInfo { unsigned long index; // DB Index; unsigned long influenceIdx; // È¿°ú¹øÈ£ time_t startTime; // ½ÃÀ۽ð£ time_t validThru; // À¯È¿¸¸±â }; typedef tList cGMEventList; /// 070418 À̵¿ "CommonNetworkMsgStruct.h(219)" /// struct MSG_PLAYERINFO : public MSGROOT /// ij¸¯ÅÍ ¼±ÅÃâ¿¡ º¸¿©Áú Á¤º¸ ±¸Á¶Ã¼ struct MSG_CHARACTER_BASEINFO { sPlayerInfo PlayerInfo; /// ij¸¯ÅÍ Á¤º¸ sPlayerWeaponInfo WeaponInfo; /// ¹«±â Á¤º¸ sPlayerWearInfo WearInfo; /// ¹æ¾î±¸ Á¤º¸ char StandIdx; /// ij¸¯ÅÍ ¼ø¼­ unsigned short MapNum; /// ¸Ê ¹øÈ£ long DelWaitTime; /// »èÁ¦´ë±â½Ã°£ }; /// ij¸¯ÅÍ ¼±ÅÃâÀ¸·Î À̵¿½Ã º¸³»´Â network msg ±¸Á¶Ã¼ struct MSG_CHARACTER_LIST : public MSG_ERROR { unsigned char CharacterNum; /// ¸¸µé¾îÁø ij¸¯ÅÍ ¼ö unsigned char StandIdx; /// ¸¶Áö¸· »ç¿ë ij¸¯ÅÍ MSG_CHARACTER_BASEINFO BaseInfo[1]; /// ij¸¯ÅÍ Á¤º¸ /// ½ÇÁ¦º¸³»´Â ¸Þ¼¼Áö Å©±â unsigned long GetMsgLength() { return sizeof(MSG_CHARACTER_LIST) - sizeof(MSG_CHARACTER_BASEINFO) + (CharacterNum * sizeof(MSG_CHARACTER_BASEINFO)); } }; /// ³×Æ®¿öÅ© ±¸Á¶Ã¼.. struct MSG_PLAYERINFO : public MSG_ERROR { sPlayerInfo PlayerInfo; /// ij¸¯ÅÍ ±âº» sPlayerWeaponInfo WeaponInfo; /// ij¸¯ÅÍ ¹«±â sPlayerWearInfo WearInfo; /// ij¸¯ÅÍ Àåºñ sPlayerExrInfo Exrinfo; /// ij¸¯ÅÍ ... (070122 PKH ±âº»Á¤º¸ ¿Ü¿¡ Ãß°¡ Á¤º¸) unsigned short MapNum; /// ¸Ê ¹øÈ£ float XPos; /// X À§Ä¡ float YPos; /// Y À§Ä¡ unsigned char MapMode; unsigned char IndunType; /// SERVER_TYPE float RotAngle; /// }; struct MSG_HEROINFO : public MSG_ERROR { sHeroInfo mHeroInfo; sPlayerExrInfo mExrInfo; bool mCanTMove; bool mCanTSkillPhy; bool mCanTSkillMag; bool mSleep; bool mStun; bool mAvoidMonLook; unsigned long mChgMonsterIdx; }; /* struct MSG_MOVE_INFO : public MSG_ERROR { unsigned long characterIdx; /// characteridx´Â NM_PLAYER_MOVE_SYN¿¡¼­¸¸ ¾²½Ã¿À int nStartX; int nStartZ; int nEndX; int nEndZ; /// 070216 PKH ¼­¹ö¿Í Ŭ¶óÀÌ¾ðÆ® µ¿±âÈ­µÈ ½Ã°è unsigned long mClientTimer; /// characteridx´Â NM_PLAYER_MOVE_RES¿¡¼­¸¸ ¾²½Ã¿À void SetStartPos( float fx, float fz ) { nStartX = (int)fx; nStartZ = (int)fz; } void SetEndPos( float fx, float fz ) { nEndX = (int)fx; nEndZ = (int)fz; } }; */ struct MSG_REQ_MOVE : public MSGROOT { float startX; float startY; float destX; float destY; unsigned long mClientTime; }; struct MSG_REQ_ACTIONMOVE : public MSGROOT { float range; float startX; float startY; /// ¹üÀ§ °Ë»ç ±âÁØ float targetX; float targetY; float destX; float destY; sObject targetInfo; unsigned long mClientTime; }; /// Űº¸µå À̵¿ struct MSG_REQ_KEYMOVE : public MSGROOT { float mStartX; float mStartY; float mDestX; float mDestY; unsigned long mClientTime; }; struct MSG_SYN_MOVE : public MSGROOT { unsigned long characterIdx; float destX; float destY; unsigned short moveSpeed; }; struct MSG_SYN_ACTIONMOVE : public MSG_SYN_MOVE { /// ¹üÀ§ float range; /// ¹üÀ§ °Ë»ç ±âÁØ float targetX; float targetY; sObject targetInfo; }; struct MSG_SYN_KEYMOVE : public MSGROOT { unsigned long mCharacterIdx; float mDestX; float mDestY; long mMoveSpeed; }; struct MSG_RES_KEYMOVE : public MSGROOT { float mCharacterPosX; float mCharacterPosY; }; struct MSG_REQ_MOVE_STOP : public MSGROOT { float mClientPosX; float mClientPosY; unsigned long mClientTime; }; struct MSG_RES_MOVE_STOP : public MSGROOT { float mCharacterPosX; float mCharacterPosY; }; struct MSG_SYN_MOVE_STOP : public MSGROOT { unsigned long mCharacterIdx; float mCharacterPosX; float mCharacterPosY; }; struct MSG_SERVERPOS_TEST : public MSGROOT { unsigned long mCharacterIdx; float mServerPosX; float mServerPosY; }; struct MSG_SYN_MOVESPEED : public MSGROOT { unsigned long mCharacterIdx; long moveSpeed; /// À̵¿ ¼Óµµ }; struct MSG_RES_ERR_MOVE : public MSGROOT { float destX; float destY; }; struct MSG_SYN_ATTACKSPEED : public MSGROOT { unsigned long mCharacterIdx; float mAttackSpeed; }; #define ERROR_CHARACTER_NAME_SUCCESS 0 /// ¼º°ø. #define ERROR_CHARACTER_NAME_EXIST 1 /// ½ÇÆÐ-Áߺ¹. #define ERROR_CHARACTER_NAME_RULE 2 /// ½ÇÆÐ-À̸§ ·ê ¿À·ù. #define ERROR_CHARACTER_NAME_FAIL 3 /// ½ÇÆÐ. struct MSG_REQ_CHARACTER_NAME : public MSGROOT { wchar_t Name[MAX_NAME_BUFFER_SIZE]; }; struct MSG_RES_CHARACTER_NAME : public MSG_ERROR {}; #define ERROR_CHARACTER_CREATE_SUCCESS 0 /// ¼º°ø. #define ERROR_CHARACTER_CREATE_EXIST 1 /// ½ÇÆÐ-Áߺ¹. #define ERROR_CHARACTER_CREATE_OVER 2 /// ½ÇÆÐ-´õÀÌ»ó »ý¼ºÇÒ ¼ö ¾øÀ½. #define ERROR_CHARACTER_CREATE_STAND_IDX 3 /// ½ÇÆÐ-STAND IDX ¿À·ù. #define ERROR_CHARACTER_CREATE_ITEMS 4 /// ½ÇÆÐ-±âº» ¾ÆÀÌÅÛ Áö±Þ ¿À·ù. #define ERROR_CHARACTER_CREATE_SKILLS 5 /// ½ÇÆÐ-±âº» ½º ų Áö±Þ ¿À·ù. #define ERROR_CHARACTER_CREATE_RULE 6 /// ½ÇÆÐ-»ý¼º ·ê ¿À·ù(À̸§,Á¾Á·,¼ºº°,Á÷¾÷,Çì¾î,¾ó±¼,Çì¾îÄ®¶ó...). #define ERROR_CHARACTER_CREATE_SYSTEM 7 /// ½ÇÆÐ-½Ã½ºÅÛ °ü¸®ÀÚ. #define ERROR_CHARACTER_CREATE_FAIL 8 /// ½ÇÆÐ. struct MSG_REQ_CHARACTER_CREATE : public MSGROOT { wchar_t Name[MAX_NAME_BUFFER_SIZE]; char Race; char Gender; unsigned short Job; unsigned char Hair; unsigned short HairColor; unsigned char Face; unsigned char StandIdx; }; struct MSG_RES_CHARACTER_CREATE : public MSG_ERROR {}; #define ERROR_CHARACTER_DELETE_SUCCESS 0 /// ¼º°ø. #define ERROR_CHARACTER_DELETE_FAIL 1 /// ½ÇÆÐ- #define ERROR_CHARACTER_DELETE_GUILDMASTER 2 /// ½ÇÆÐ-±æµå ¸¶½ºÅÍ struct MSG_REQ_CHARACTER_DELETE : public MSGROOT { unsigned long CharacterIdx; /// ij¸¯ÅÍ À妽º }; struct MSG_RES_CHARACTER_DELETE : public MSG_ERROR { unsigned long StandIdx; /// ij¸¯ÅÍ »ý¼ºÀ§Ä¡ }; #define ERROR_CHARACTER_DELETE_WAIT_SUCCESS 0 /// ¼º°ø. #define ERROR_CHARACTER_DELETE_WAIT_FAIL 1 /// ½ÇÆÐ- #define ERROR_CHARACTER_DELETE_WAIT_GUILDMASTER 2 /// ½ÇÆÐ-±æµå ¸¶½ºÅÍ struct MSG_REQ_CHARACTER_DELETE_WAIT : public MSGROOT { unsigned long CharacterIdx; /// ij¸¯ÅÍ À妽º }; struct MSG_RES_CHARACTER_DELETE_WAIT : public MSG_ERROR { unsigned long StandIdx; /// ij¸¯ÅÍ »ý¼ºÀ§Ä¡ long DelWaitTime; /// ij¸¯ÅÍ »èÁ¦ ±âÇÑ }; #define ERROR_CHARACTER_DELETE_CANCEL_SUCCESS 0 /// ¼º°ø #define ERROR_CHARACTER_DELETE_CANCEL_FAIL 1 /// ½ÇÆÐ struct MSG_REQ_CHARACTER_DELETE_CANCEL : public MSGROOT { unsigned long CharacterIdx; /// ij¸¯ÅÍ À妽º }; struct MSG_RES_CHARACTER_DELETE_CANCEL : public MSG_ERROR { unsigned long StandIdx; /// ij¸¯ÅÍ »ý¼ºÀ§Ä¡ }; struct MSG_REQ_CHARACTER_SELECT : public MSGROOT { unsigned char StandIdx; }; struct MSG_REQ_GAMEIN : public MSGROOT {}; struct MSG_RES_GAMEIN : public MSG_ERROR { unsigned short channelNum; }; #define ERROR_GAMEFINISH_SUCCESS 0 // ¼º°ø #define ERROR_GAMEFINISH_FAIL 1 // ½ÇÆÐ /// 070625 PKH Ç÷¹ÀÌ¾î ·¹º§ struct MSG_RES_LEVEL : public MSGROOT { unsigned char mLevel; unsigned long mExp; unsigned short mCon; /// ½ºÅÝ Áõ°¡Ä¡ unsigned short mDex; unsigned short mInt; unsigned short mStr; unsigned short mWis; unsigned long mHP; unsigned long mMaxHP; unsigned long mMP; unsigned long mMaxMP; }; struct MSG_SYN_LEVEL : public MSGROOT { unsigned long mCharacterIdx; unsigned char mLevel; unsigned long mHP; unsigned long mMaxHP; unsigned long mMP; unsigned long mMaxMP; }; /// 070625 PKH Ç÷¹ÀÌ¾î ½ºÅ³ ·¹º§ struct MSG_RES_SKILLLEVEL : public MSGROOT { unsigned char mSkillLevel; unsigned long mSkillExp; unsigned short mSkillPoint; unsigned short mSkillPointTotal; }; struct MSG_SYN_SKILLLEVEL : public MSGROOT { unsigned long mPlayerIdx; }; struct MSG_RES_EXP : public MSGROOT { unsigned long mExp; /// ¾òÀº °æÇèÄ¡ unsigned long mTotalExp; /// Ç÷¹À̾îÀÇ °æÇèÄ¡ Àüü·® }; struct MSG_RES_SXP : public MSGROOT { unsigned long mSxp; /// ¾òÀº ½ºÅ³ °æÇèÄ¡ unsigned long mTotalSxp; /// Ç÷¹À̾îÀÇ ½ºÅ³ °æÇèÄ¡ Àüü·® }; struct MSG_RES_PARTY_EXP : public MSGROOT { unsigned long mExp; /// ¾òÀº °æÇèÄ¡ unsigned long mPartyExp; /// ÆÄƼ¿ø¿¡ µû¸¥ Ãß°¡ °æÇèÄ¡ unsigned long mTotalExp; /// Ç÷¹À̾îÀÇ °æÇèÄ¡ Àüü·® }; struct MSG_RES_PARTY_SXP : public MSGROOT { unsigned long mSxp; /// ¾òÀº °æÇèÄ¡ unsigned long mPartySxp; /// ÆÄƼ¿ø¿¡ µû¸¥ Ãß°¡ °æÇèÄ¡ unsigned long mTotalSxp; /// Ç÷¹À̾îÀÇ °æÇèÄ¡ Àüü·® }; struct MSG_CHARACTERIDX : public MSGROOT { unsigned long mCharacterIdx; }; struct MSG_REQ_PLAYER_MAPCHANGE : public MSGROOT { unsigned long mMapChangePosIndex; }; const int ERROR_RES_MAPCHANGE_SUCCESS = 0; /// ¼º°ø const int ERROR_RES_MAPCHANGE_STATE = 1; /// ¸ÊÀ̵¿ ºÒ°¡ »óÅ const int ERROR_RES_MAPCHANGE_SCRIPT = 2; /// ½ºÅ©¸³Æ®Á¤º¸¿À·ù const int ERROR_RES_MAPCHANGE_POSITION = 3; /// °Å¸®ÁÂÇ¥ ¿À·ù(³Ê¹«¸Ö¸®ÀÖÀ½) const int ERROR_RES_MAPCHANGE_NOTPARTY = 4; /// °°Àº ÆÄƼ°¡ ¾Æ´Ô const int ERROR_RES_MAPCHANGE_NOTPORTAL = 5; /// Æ÷Å» ¾øÀ½ struct MSG_RES_PLAYER_EQUIP_WEAR : public MSGROOT { unsigned char mType; /// eWEAR_TYPE unsigned long mWearInfo; }; struct MSG_SYN_PLAYER_EQUIP_WEAR : public MSGROOT { unsigned long mCharacterIdx; unsigned char mType; /// eWEAR_TYPE unsigned long mWearInfo; }; struct MSG_RES_PLAYER_EQUIP_WEAPON : public MSGROOT { unsigned char mWeaponState; /// eWEAPON_STATE sPlayerWeaponInfo mWeaponInfo; }; struct MSG_SYN_PLAYER_EQUIP_WEAPON : public MSGROOT { unsigned long mCharacterIdx; unsigned char mWeaponState; /// eWEAPON_STATE sPlayerWeaponInfo mWeaponInfo; }; /* ÄÚ½ºÆ¬ Àåºñ */ struct MSG_RES_PLAYER_COSTUME_WEAR : public MSGROOT { unsigned char mType; unsigned long mWearInfo; }; struct MSG_SYN_PLAYER_COSTUME_WEAR : public MSGROOT { unsigned long mCharacterIdx; unsigned char mType; unsigned long mWearInfo; }; struct MSG_RES_PLAYER_COSTUME_ACC : public MSGROOT { unsigned char mType; unsigned long mWearInfo; }; struct MSG_SYN_PLAYER_COSTUME_ACC : public MSGROOT { unsigned long mCharacterIdx; unsigned char mType; unsigned long mWearInfo; }; #define MAX_SHORTCUT_SIZE 50 // 10 x 5(Tab) enum eSHORTCUT_TYPE { eSHORTCUT_NONE = 0, /// ¾øÀ½ eSHORTCUT_ITEM, /// ¾ÆÀÌÅÛ eSHORTCUT_SKILL, /// ½ºÅ³ eSHORTCUT_MONSKILL, /// ¸ó½ºÅͽºÅ³ eSHORTCUT_COMMU, /// community eSHORTCUT_UNKNOWN, /// ¿À·ù }; struct sShortcut { char mType; /// Á¾·ù(0 ¾ÆÀÌÅÛ, 1 ½ºÅ³, ... ) unsigned long mIndex; /// À妽º unsigned long mExData; /// °øÅë Á¤º¸(Àκ¥Å丮 °íÀ¯¹øÈ£, ½ºÅ³ ½ºÅÜ) }; struct MSG_REQ_PLAYER_SHORTCUT_LIST : public MSGROOT {}; struct MSG_RES_PLAYER_SHORTCUT_LIST : public MSGROOT { sShortcut mShortcut[ MAX_SHORTCUT_SIZE ]; }; struct MSG_REQ_PLAYER_SHORTCUT_UPDATE : public MSGROOT { sShortcut mShortcut[ MAX_SHORTCUT_SIZE ]; }; struct MSG_RES_PLAYER_SHORTCUT_UPDATE : public MSGROOT {}; struct MSG_REQ_PLAYER_OPTION_VALUE : public MSGROOT {}; struct MSG_RES_PLAYER_OPTION_VALUE : public MSGROOT { long option1; /// ¿É¼Ç°ª(32BIT) }; #define ERROR_PLAYER_OPTION_UPDATE_SUCCESS 0 /// ¼º°ø #define ERROR_PLAYER_OPTION_UPDATE_FAIL 1 /// ½ÇÆÐ struct MSG_REQ_PLAYER_OPTION_UPDATE : public MSGROOT { long option1; /// ¿É¼Ç°ª(32BIT) }; struct MSG_RES_PLAYER_OPTION_UPDATE : public MSG_ERROR {}; struct MSG_SYN_PLAYER_HP : public MSGROOT { unsigned long mCharacterIdx; unsigned long mHp; unsigned long mMaxHp; bool mDie; }; struct MSG_SYN_PLAYER_MP : public MSGROOT { unsigned long mCharacterIdx; unsigned long mMp; unsigned long mMaxMp; }; struct MSG_SYN_PLAYER_MAXHP : public MSGROOT { unsigned long mCharacterIdx; unsigned long mMaxHp; }; struct MSG_SYN_PLAYER_MAXMP : public MSGROOT { unsigned long mCharacterIdx; unsigned long mMaxMp; }; /// ºÎȰ #define ERROR_PLAYER_RESURRECTION_SUCCESS 0 /// ¼º°ø. #define ERROR_PLAYER_RESURRECTION_FAIL 1 /// ½ÇÆÐ struct MSG_REQ_PLAYER_RESURRECTION : MSGROOT { unsigned char mFlag; }; struct MSG_RES_PLAYER_RESURRECTION : MSG_ERROR { unsigned long mHP; unsigned long mMaxHP; unsigned long mMP; unsigned long mMaxMP; unsigned long mExpDown; /// °æÇèÄ¡ °¨¼Ò·® unsigned long mPlayerExp; /// °æÇèÄ¡ º¸À¯·® float mPosX; float mPosY; }; struct MSG_RES_PLAYER_CASHEXP_RESURRECTION : MSG_RES_PLAYER_RESURRECTION { unsigned long mInfluenceIdx; /// È¿°ú ¹øÈ£ unsigned char mCashExpCnt; /// °æÇèÄ¡ °¨¼Ò ¹æÁö ³²ÀºÈ½¼ö }; struct MSG_SYN_PLAYER_RESURRECTION : MSG_ERROR { unsigned long mCharacterIdx; unsigned long mHP; unsigned long mMaxHP; unsigned long mMP; unsigned long mMaxMP; float mPosX; float mPosY; }; /// struct MSG_REQ_PLAYER_STATE_IDLE : public MSGROOT { unsigned char mPlayerStateIdle; }; struct MSG_SYN_PLAYER_STATE_IDLE : public MSGROOT { unsigned long mCharacterIdx; unsigned char mPlayerStateIdle; }; struct MSG_REQ_PLAYER_STATE_SITDWON : public MSGROOT { bool mSitDown; }; struct MSG_RES_PLAYER_STATE_SITDWON : public MSG_ERROR { bool mSitDown; }; struct MSG_SYN_PLAYER_STATE_SITDWON : public MSGROOT { unsigned long mCharacterIdx; bool mSitDown; }; struct MSG_RES_PLAYER_MONEY : public MSGROOT { unsigned long mMoney; unsigned char mObjectType; /// eOBJECTTYPE long mAddMoney; }; struct MSG_RES_PLAYER_DEPOSIT : public MSGROOT { unsigned long mDeposit; unsigned char mObjectType; /// eOBJECTTYPE long mAddDeposit; }; struct MSG_RES_PLAYER_TAROT_POINT : public MSGROOT { unsigned long mPoint; long mAddPoint; }; struct MSG_RES_PLAYER_PVP_POINT : public MSGROOT { unsigned char mForceType; unsigned long mPoint; long mAddPoint; }; struct MSG_RES_PLAYER_SP : public MSGROOT { unsigned short mSP; unsigned short mTotalSP; unsigned short rowCount; unsigned short usedSP[1]; }; struct MSG_REQ_PLAYER_COMMUNITYSKILL : public MSGROOT { unsigned long mCommunitySkillIdx; }; struct MSG_RES_PLAYER_COMMUNITYSKILL : public MSG_ERROR { unsigned long mCommunitySkillIdx; }; struct MSG_SYN_PLAYER_COMMUNITYSKILL : public MSGROOT { unsigned long mCharacterIdx; unsigned long mCommunitySkillIdx; }; struct MSG_SYN_PLAYER_SIZE : public MSGROOT { unsigned long mCharacterIdx; unsigned short mScale; }; //struct MSG_SYN_PLAYER_STATUS : public MSGROOT //{ // unsigned long mCharacterIdx; // unsigned short mScale; // long mMoveSpeed; // float mAttackSpeed; // bool mIsCantMove; // bool mIsSleep; // bool mIsStun; // unsigned long mMonsterIdx; // unsigned long mVehicleIdx; //}; struct MSG_SYN_PLAYER_CANTMOVE : public MSGROOT { unsigned long mCharaterIdx; NiPoint2 mCharacterPos; bool mIsCantMove; }; struct MSG_SYN_PLAYER_SLEEP : public MSGROOT { unsigned long mCharaterIdx; NiPoint2 mCharacterPos; bool mIsSleep; }; struct MSG_SYN_PLAYER_STUN : public MSGROOT { unsigned long mCharaterIdx; NiPoint2 mCharacterPos; bool mIsStun; }; struct MSG_SYN_PLAYER_CANTSKILL : public MSGROOT { unsigned char mAttributeType; bool mIsCantSkill; }; struct MSG_REQ_PLAYER_STATICFACE : public MSGROOT { unsigned long mStaticFaceIdx; }; struct MSG_SYN_PLAYER_STATICFACE : public MSGROOT { unsigned long mCharacterIdx; unsigned long mStaticFaceIdx; }; struct MSG_SYN_PLAYER_CHG_MONSTER : public MSGROOT { unsigned long mCharacterIdx; unsigned long mMonsterIdx; }; struct MSG_SYN_PLAYER_FORCEVALUE : public MSGROOT { unsigned char mForceType; unsigned char mValueType; /// 1:point / 2:friendly unsigned long mValue; }; struct MSG_SYN_PLAYER_FORCE : public MSGROOT { unsigned long mPlayerIdx; unsigned char mForceType; }; struct MSG_SYN_PLAYER_JUMP : public MSGROOT { unsigned long mPlayerIdx; }; const int ERROR_PLAYER_ITEMMAPCHANGE_SUCCESS = 0; const int ERROR_PLAYER_ITEMMAPCHANGE_FAIL = 1; struct MSG_RES_JOB : public MSGROOT { unsigned short mJob; /// ePLAYER_JOB unsigned char mSkillListCnt; /// ÀüÁ÷½Ã ÀÚµ¿½Àµæ ½ºÅ³ ¸ñ·Ï °¹¼ö unsigned long mSkillClassIdx[1]; /// ÀüÁ÷½Ã ÀÚµ¿½Àµæ ½ºÅ³ ¸ñ·Ï unsigned long GetMsgLength() { return sizeof(MSG_RES_JOB) - sizeof(mSkillClassIdx) + (mSkillListCnt * sizeof(unsigned long));} }; struct MSG_SYN_JOB : public MSGROOT { unsigned long mPlayerIdx; unsigned short mJob; }; /// ȣĪ struct MSG_RES_PLAYER_TITLEADD : public MSGROOT { unsigned long mTitleIndex; /// ȣĪ Ãß°¡ }; struct MSG_RES_PLAYER_TITLELIST : public MSGROOT { long rowCount; unsigned long mTitleIndex[1]; /// ȣĪ ¸®½ºÆ® }; /// ȣĪ ¼³Á¤ º¯°æ struct MSG_REQ_PLAYER_TITLE_SET : public MSGROOT { unsigned long mTitleIndex; }; const int ERROR_PLAYER_TITLE_SET_SUCCESS = 0; const int ERROR_PLAYER_TITLE_SET_FAIL = 1; struct MSG_RES_PLAYER_TITLE_SET : public MSG_ERROR {}; struct MSG_SYN_PLAYER_TITLE_SET : public MSGROOT { unsigned long mCharacterIndex; /// ij¸¯ÅÍ unsigned long mTitleIndex; /// ¼³Á¤ ȣĪ ( 0 : »èÁ¦ ) }; struct MSG_SYN_PLAYER_PARTY_SET : public MSGROOT { unsigned long mCharacterIndex; /// ij¸¯ÅÍ unsigned long mPartyIndex; /// ÆÄƼÀ妽º (0 : ¾øÀ½ ) }; struct MSG_SYN_PLAYER_PARTYUNION_SET : public MSGROOT { unsigned long mCharacterIndex; /// ij¸¯ÅÍ unsigned long mPartyUnionIndex; /// ÆÄƼ¿¬ÇÕÀ妽º (0 : ¾øÀ½ ) }; /// ±æµå ¼³Á¤ º¯°æ struct MSG_SYN_PLAYER_GUILD_SET : public MSGROOT { unsigned long mCharacterIndex; /// ij¸¯ÅÍ unsigned long mGuildIndex; /// ±æµåÀ妽º (0 : ¾øÀ½ ) unsigned char mPosition; /// ±æµåÁ÷À§ tm mMarkRegistDate; /// ±æµå ¸¶Å© µî·ÏÀÏ bool mUseGuildMark; /// ±æµå ¸¶Å© »ç¿ë¿©ºÎ wchar_t mName[MAX_GUILDNAME_BUFFER_SIZE]; /// ±æµå¸í }; struct MSG_SYN_PLAYER_GUILDMARK_CHANGE : public MSGROOT { unsigned long mCharacterIndex; /// ij¸¯ÅÍ tm mMarkRegistDate; /// ±æµå ¸¶Å© µî·ÏÀÏ bool mUseGuildMark; /// ±æµå ¸¶Å© »ç¿ë¿©ºÎ }; struct MSG_SYN_PLAYER_VEHICLE : public MSGROOT { unsigned long mCharacterIdx; unsigned long mVehicleIdx; }; struct MSG_REQ_PLAYER_VEHICLEDELETE : public MSGROOT { unsigned long mInfUniqueIdx; unsigned long mItemDbIdx; }; const int ERROR_PLAYER_TODAYWORD_CHANGE_SUCCESS = 0; const int ERROR_PLAYER_TODAYWORD_CHANGE_INIT = 1; const int ERROR_PLAYER_TODAYWORD_CHANGE_FAIL = 2; /// ¿À´ÃÀÇÇѸ¶µð º¯°æ struct MSG_REQ_PLAYER_TODAYWORD_CHANGE : public MSGROOT { unsigned long mWordColor; /// ÅØ½ºÆ® Ä÷¯ wchar_t mWord[MAX_TODAYWORD_BUFFER_SIZE]; /// ¿À´ÃÀÇÇѸ¶µð }; struct MSG_RES_PLAYER_TODAYWORD_CHANGE : public MSG_ERROR { unsigned long mWordColor; /// ÅØ½ºÆ® Ä÷¯ wchar_t mWord[MAX_TODAYWORD_BUFFER_SIZE]; /// ¿À´ÃÀÇÇѸ¶µð }; struct MSG_SYN_PLAYER_TODAYWORD_CHANGE : public MSGROOT { unsigned long mCharacterIndex; /// ij¸¯ÅÍ unsigned long mWordColor; /// ÅØ½ºÆ® Ä÷¯ wchar_t mWord[MAX_TODAYWORD_BUFFER_SIZE]; /// ¿À´ÃÀÇÇѸ¶µð }; struct MSG_REQ_PLAYER_SKILLRESET : public MSGROOT { unsigned short mSlotNum; /// Àκ¥½½·Ô ¹øÈ£ }; #define ERROR_SKILLRESET_SUCCESS 0 #define ERROR_SKILLRESET_STATE 1 #define ERROR_SKILLRESET_ITEM 2 #define ERROR_SKILLRESET_DBERROR 3 #define ERROR_SKILLRESET_ITEM_LICENSE 4 // ¹ÌÀÎÁõ ¾ÆÀÌÅÛ »ç¿ë /// ½ºÅ³ struct sInitSkill { unsigned long mSkillIdx; /// ½ºÅ³ À妽º unsigned char mSkillStep; /// ½ºÅ³ ´Ü°è }; struct MSG_RES_PLAYER_SKILLRESET : public MSG_ERROR { unsigned short mSkillPoint; /// ½ºÅ³ Æ÷ÀÎÆ® long mRowCount; /// º¸À¯½ºÅ³ °¹¼ö sInitSkill mTable[1]; /// º¸À¯½ºÅ³ ¸®½ºÆ® /// ½ÇÁ¦º¸³»´Â ¸Þ¼¼Áö Å©±â unsigned long GetMsgLength() { return sizeof(MSG_RES_PLAYER_SKILLRESET) - sizeof(mTable) + (mRowCount * sizeof(sInitSkill)); } }; /// ½ºÅ³ const unsigned char SKILL_ADD_ERR_SUCCESS = 0; const unsigned char SKILL_ADD_ERR_DBERROR = 1; const unsigned char SKILL_ADD_ERR_PLAYER = 2; const unsigned char SKILL_ADD_ERR_SCRIPT = 3; const unsigned char SKILL_ADD_ERR_MAPINSERT = 4; const unsigned char SKILL_ADD_ERR_MONEY = 101; /// ¼ÒÁö±Ý¾× ºÎÁ· const unsigned char SKILL_ADD_ERR_SP = 102; /// skill point ºÎÁ· const unsigned char SKILL_ADD_ERR_SKILLSTEP = 103; /// ½ºÅ³ ½Àµæ ´Ü°è ¿À·ù const unsigned char SKILL_ADD_ERR_LEARNSKILL = 104; /// ¼±Çà º¸À¯ ½ºÅ³ ¿À·ù const unsigned char SKILL_ADD_ERR_LEARNSTEP = 105; /// ¼±Çà º¸À¯ ½ºÅ³ ´Ü°è ¿À·ù const unsigned char SKILL_ADD_ERR_RACE = 106; /// Á¾Á· ¿À·ù const unsigned char SKILL_ADD_ERR_JOB = 107; /// Á÷¾÷ ¿À·ù const unsigned char SKILL_ADD_ERR_LEVEL = 108; /// ·¹º§ ¿À·ù const unsigned char SKILL_ADD_ERR_ALREADY = 109; /// ÀÌ¹Ì ¹è¿î ½ºÅ³À» ´Ù½Ã ¹è¿ì·ÁÇÔ const unsigned char SKILL_ADD_ERR_NPC = 110; /// npc ´ëÈ­ Á¶°ÇÀÌ ¾È¸ÂÀ½ const unsigned char SKILL_ADD_ERR_JOBSP = 111; /// ÀüÁ÷¾÷ »ç¿ëSP ºÎÁ· struct MSG_REQ_SKILL_ADD : public MSGROOT { unsigned long mSkillClassIdx; unsigned char mSkillStep; }; struct MSG_RES_SKILL_ADD : public MSGROOT { unsigned long mSkillClassIdx; unsigned char mSkillStep; }; /// Àκ¥Å丮/Âø¿ëÄ«µå ½½·Ô/â°í Å©±â º¯°æ struct MSG_SYN_PLAYER_INVEN_SIZE : public MSGROOT { unsigned short mBag; unsigned short mWear; unsigned short mWareHouse; unsigned short mMakeSkill; }; /* ÀÚµ¿»ç³É ½Å°í(¿ÀÅä³ëÆ®) */ /// ½ÉÆÇ Á¦Çѽð£ 3ºÐ const unsigned long TRIAL_ANSWER_TIME = 3 * MINUTE; #define MAX_TRIAL_ANSWER_COUNT 3 /// Á¤´ä ÀԷ Ƚ¼ö #define MAX_TRIAL_CAPTCHA_COUNT 5 /// CAPTCHA »õ·Î°íħ Ƚ¼ö #define ERROR_PLAYER_TRIAL_OPEN_SUCCESS 0 #define ERROR_PLAYER_TRIAL_OPEN_FAIL 1 #define ERROR_PLAYER_TRIAL_OPEN_MAP 2 /// ½Å°í±â´ÉÀ» »ç¿ë ÇÒ ¼ö ¾ø´Â ¸Ê #define ERROR_PLAYER_TRIAL_OPEN_TIME 3 /// Àç»ç¿ë ½Ã°£(3ºÐ/1½Ã°£)ÀÌ Áö³ªÁö ¾ÊÀ½ #define ERROR_PLAYER_TRIAL_OPEN_LEVEL 4 /// 10·¹º§ ÀÌ»ó »ç¿ë °¡´É #define ERROR_PLAYER_TRIAL_OPEN_TRIAL 5 /// ½Å°íÀÚ ¶Ç´Â ³»°¡ ½ÉÆÇÁß #define ERROR_PLAYER_TRIAL_OPEN_CAPTCHA 6 /// CAPTCHA À̹ÌÁö ¿À·ù #define ERROR_PLAYER_TRIAL_OPEN_TRIAL_REJECT 7 /// ½ÉÆÇÀÚ°¡ ¹®Á¦ ǬÁö 5ºÐÀÌ ¾ÈÁö³µÀ½. #define ERROR_PLAYER_TRIAL_OPEN_GM 8 /// ¿î¿µÀÚ Äɸ¯ÅÍ´Â ½Å°í ÇÒ ¼ö ¾øÀ½ // NM_PLAYER_TRIAL_OPEN_REQ struct MSG_REQ_PLAYER_TRIAL_OPEN : public MSGROOT { unsigned long characterIdx; /// ½Å°íÇÒ Ä³¸¯ÅÍ }; // NM_PLAYER_TRIAL_OPEN_RES struct MSG_RES_PLAYER_TRIAL_OPEN : public MSG_ERROR { long remainTime; /// ½Å°í Àç»ç¿ë ³²Àº ½Ã°£/½Å°í °ÅºÎ ½Ã°£ }; // NM_PLAYER_TRIAL_OPEN_SYN struct MSG_SYN_PLAYER_TRIAL_OPEN : public MSGROOT { unsigned short size; BYTE captcha[1]; unsigned long GetMsgLength( ) { return sizeof(MSG_SYN_PLAYER_TRIAL_OPEN) - sizeof(captcha) + (size * sizeof(BYTE)); } }; #define ERROR_PLAYER_TRIAL_ANSWER_SUCCESS 0 #define ERROR_PLAYER_TRIAL_ANSWER_FAIL 1 #define ERROR_PLAYER_TRIAL_ANSWER_WRONG 2 /// Á¤´ä Ʋ¸² #define ERROR_PLAYER_TRIAL_ANSWER_TIME_OVER 3 /// ½ÉÆÇ ½Ã°£ Ãʰú #define ERROR_PLAYER_TRIAL_ANSWER_TEXTLEN 4 /// ±ÛÀÚ ¼ö Ʋ¸². // NM_PLAYER_TRIAL_ANSWER_REQ struct MSG_REQ_PLAYER_TRIAL_ANSWER : public MSGROOT { wchar_t answer[MAX_TRIAL_ANSWER_LEN+1]; /// ÀÔ·ÂµÈ Á¤´ä }; // NM_PLAYER_TRIAL_ANSWER_RES struct MSG_RES_PLAYER_TRIAL_ANSWER : public MSG_ERROR { unsigned char trialCount; /// Á¤´ä ÀÔ·Â °¡´É Ƚ¼ö }; #define ERROR_PLAYER_TRIAL_RESULT_AUTO 0 /// ¿ÀÅä ÆÇÁ¤ #define ERROR_PLAYER_TRIAL_RESULT_NOT_AUTO 1 /// Á¤»ó À¯Àú ÆÇÁ¤ // NM_PLAYER_TRIAL_RESULT_SYN struct MSG_SYN_PLAYER_TRIAL_RESULT : public MSG_ERROR { wchar_t name[MAX_NAME_BUFFER_SIZE]; /// ½Å°íÇÑ Ä³¸¯ÅÍ À̸§ }; #define ERROR_PLAYER_TRIAL_CAPTCHA_SUCCESS 0 #define ERROR_PLAYER_TRIAL_CAPTCHA_FAIL 1 #define ERROR_PLAYER_TRIAL_CAPTCHA_COUNT 2 /// »õ·Î°íħ Ƚ¼ö Ãʰú #define ERROR_PLAYER_TRIAL_CAPTCHA_TRIAL 3 /// ½ÉÆÇÁßÀÌ ¾Æ´Ô // NM_PLAYER_TRIAL_CAPTCHA_RES struct MSG_RES_PLAYER_TRIAL_CAPTCHA : public MSG_ERROR { unsigned char count; /// »õ·Î°íħ Ƚ¼ö unsigned short size; BYTE captcha[1]; unsigned long GetMsgLength( ) { return sizeof(MSG_RES_PLAYER_TRIAL_CAPTCHA) - sizeof(captcha) + (size * sizeof(BYTE)); } }; struct MSG_RES_RECOVER_EXP : public MSG_RES_EXP { }; /* ------- »ìÆìº¸±â */ #define ERROR_PLAYER_LOOK_OTHER_EQUIP_SUCCESS 0 #define ERROR_PLAYER_LOOK_OTHER_EQUIP_FAIL 1 // NM_PLAYER_LOOK_OTHER_EQUIP_REQ struct MSG_REQ_PLAYER_LOOK_OTHER_EQUIP : public MSGROOT { unsigned long characterIdx; }; // NM_PLAYER_LOOK_OTHER_EQUIP_RES struct MSG_RES_PLAYER_LOOK_OTHER_EQUIP : public MSG_ERROR { wchar_t name[MAX_NAME_BUFFER_SIZE]; // ij¸¯ÅÍ À̸§ unsigned char level; // ·¹º§ unsigned short job; // Á÷¾÷ unsigned short wearEnd; // ÀåÂø Ä«µå char activeWeapon; // Ȱ¼º ¹«±â unsigned long RowCount; sInventory Inventory[1]; unsigned long GetMsgLength( ) { return sizeof(MSG_RES_PLAYER_LOOK_OTHER_EQUIP) - sizeof(Inventory) + (RowCount * sizeof(sInventory)); } }; struct MSG_SYN_PLAYEREXT_AVOID_MON_LOOK : public MSG_ERROR { bool mIsAvoidMonLookOn; /// ¸ó½ºÅÍ ¼±°ø ÀÎ½Ä È¸ÇÇ ½ºÅ³ On/Off }; // NM_PLAYEREXT_DOORPUSH_SYN struct MSG_SYN_PLAYEREXT_DOORPUSH : public MSGROOT { sObject mTarget; float mPosX; float mPosY; }; /* ------- ij¸¯ÅÍ ¿É¼Ç º¯°æ */ struct MSG_SYN_PLAYEREXT_OPTION_SHOW : public MSGROOT { unsigned long mCharacterIdx; bool mShowHelmet; bool mShowCostume; }; #pragma pack(pop)