/* ========================================================================== * ÆÄ ÀÏ : Npc_Common.h * ¸ñ Àû : * ÀÛ ¼º ÀÚ : ¹Ú°æÈñ * ÀÛ ¼º ÀÏ : 2007-04-25 * ÁÖÀÇ»çÇ× : *===========================================================================*/ #pragma once #pragma pack(push,1) #include "CommonNetworkMsgStruct.h" #include "Item_common.h" #include "Quest_Common.h" #define NPC_VALID_DISTANCE 350.0f #define NPC_FUNCHAVE_MAX 5 // ÇÑ npc°¡ °¡Áú ¼ö ÀÖ´Â ÃÖ´ë ±â´É °¹¼ö /// npc ´ëÈ­ ¹æ½Ä enum eNPC_TALK_TYPE { eNPCTALK_OPEN = 0, /// NPC´ëÈ­ ½ÃÀÛ eNPCTALK_ITEMBUY, /// item »ç±â eNPCTALK_ITEMSELL, /// item ÆÈ±â eNPCTALK_INVENTORY, /// â°í »ç¿ë eNPCTALK_QUESTADD, /// Äù½ºÆ® Ãß°¡ eNPCTALK_QUESTREWARD, /// Äù½ºÆ® º¸»ó eNPCTALK_GUILDCREATE, /// ±æµå »ý¼º eNPCTALK_FORTUNETAROT, /// NPC ¿î¼¼ Á¡Áý eNPCTALK_TAROT, /// À¯ÀúÇüÅ Á¡Áý eNPCTALK_DEAL, /// ÆÇ¸Å´ëÇà eNPCTALK_THEME, /// Å׸¶´øÁ¯ }; // NPC ŸÀÔ enum eNpcType { eNPCTYPE_NORMAL = 0, // ÀÏ¹Ý eNPCTYPE_MAIL, // ¿ìÆíÇÔ eNPCTYPE_BOARD, // °Ô½ÃÆÇ eNPCTYPE_TUTORIALBOOK, // Æ©Å丮¾ó ºÏ Çü }; /// Npc ±â´É enum eNpcFunc { NPC_FUNC_STORE = 0, NPC_FUNC_WAREHOUSE, NPC_FUNC_ITEMDISJOINT, /// ¾ÆÀÌÅÛ ºÐÇØ NPC_FUNC_GUILD, /// ±æµå NPC_FUNC_FORTUNETAROT, /// ¿î¼¼ Ÿ·Ô NPC_FUNC_TAROT, /// À¯ÀúÇüÅ Ÿ·Ô NPC_FUNC_DEAL, /// ÆÇ¸Å´ëÇà NPC_FUNC_THEME, /// Å׸¶´øÁ¯ NPC_FUNC_MAIL, /// ¿ìÆí NPC_FUNC_SKILLPREVIEW, /// ½ºÅ³ ¹Ì¸®º¸±â NPC_FUNC_BOARD, /// °Ô½ÃÆÇ NPC_FUNC_TUTORIALBOOK, /// Æ©Å丮¾ó ºÏ NPC_FUNC_MAX, }; struct sNPCList { unsigned long mNpcClassIdx; /// NPC Á¾·ù TCHAR mName[32]; /// NPC À̸§ TCHAR mJobName[32]; /// JOB À̸§ unsigned short mType; /// npc type unsigned int mModelIndex; /// NPC ¸ðµ¨ ¹øÈ£ unsigned long mJobIconIndexLarge; /// Á÷¾÷¾ÆÀÌÄÜ À妽º - Å«Áöµµ¿ë unsigned long mJobIconIndexSmall; /// Á÷¾÷¾ÆÀÌÄÜ À妽º - ÀÛÀºÁöµµ¿ë unsigned long mJobIconIndexTarget;/// Á÷¾÷¾ÆÀÌÄÜ À妽º - Ÿ°Ùâ¿ë }; struct sNPCRegen { unsigned long mNpcClassIdx; /// NPC Á¾·ù unsigned short mMapNumber; /// ¸Ê¹øÈ£ float mPosX; /// XÁÂÇ¥ float mPosY; /// YÁÂÇ¥ float mDirection; /// ¹æÇâ }; /// NPC Àüü µ¥ÀÌÅÍ struct sNpcData { unsigned long mNpcIdx; /// °íÀ¯À妽º unsigned int mNpcClassIdx; /// Á¾·ù¹øÈ£ unsigned short mMapNumber; /// ¸Ê¹øÈ£ float mPosX; /// ÁÂÇ¥ float mPosY; float mDirection; /// ¹æÇâ }; /// NPC Func µ¥ÀÌÅÍ struct sNpcFuncData { int mFuncCount; /// ±â´É °¹¼ö unsigned long mFunc[5]; /// npc store ŸÀÔ unsigned long mThemeIndex; unsigned long mTarotPrice; /// unsigned long mTarotIndex[22]; /// Ÿ·Ô À妽º unsigned long mSpreadIndex[5]; /// ½ºÇÁ·¹µå À妽º unsigned int mSpreadCount; sNpcFuncData() { mFuncCount = 0; memset( mFunc, 0, sizeof(mFunc) ); mThemeIndex = 0; mTarotPrice = 0; mSpreadCount = 0; memset( mTarotIndex, 0, sizeof(mTarotIndex) ); memset( mSpreadIndex, 0, sizeof(mSpreadIndex) ); } }; /// NPC ±¸Á¶Ã¼ struct MSG_NPC_INFO : public MSGROOT { unsigned long mCount; /// NPC ¼ö sNpcData mNpcInfo[1]; /// NPC Á¤º¸ /// ½ÇÁ¦º¸³»´Â ¸Þ¼¼Áö Å©±â unsigned long GetMsgLength() { return sizeof(MSG_NPC_INFO) - sizeof(mNpcInfo) + (mCount * sizeof(sNpcData)); } }; /// NPC IDX struct MSG_NPCIDX : public MSGROOT { unsigned long mNpcIdx; }; #define ERROR_NPC_OPEN_SUCCESS 0 /// ¼º°ø #define ERROR_NPC_OPEN_RANGE 1 /// Çã¿ë°Å¸® ¹Û #define ERROR_NPC_OPEN_PLAYERSTATE 2 /// Ç÷¹ÀÌ¾î »óÅ ¿À·ù #define ERROR_NPC_OPEN_NPC 3 /// npc ´ëÈ­ »óŰ¡ Ʋ¸² #define ERROR_NPC_OPEN_DEALLIST 4 /// npc¿¡ ¸ÂÁö¾Ê´Â ¸ñ·Ï #define ERROR_NPC_OPEN_ALREADY 5 /// ´ëÈ­ÁßÀÎ npc¿¡ ´Ù½Ã ¿äû µé¾î¿È #define ERROR_NPC_TAROT_JOIN_SUCESS 6 // ¼º°ø #define ERROR_NPC_TAROT_JOIN_FAIL 7 // ½ÇÆÐ #define ERROR_NPC_TAROT_JOIN_MONEY 8 // ½ÇÆÐ - ±Ý¾×ºÎÁ· #define ERROR_NPC_TAROT_JOIN_ONCE 9 // ½ÇÆÐ - ÇÏ·ç¿¡ Çѹø¸¸ °¡´É struct MSG_REQ_NPC_OPEN : public MSGROOT { unsigned long mNpcIdx; }; struct MSG_RES_NPC_OPEN : public MSG_ERROR { unsigned long mNpcIdx; float mPosX; float mPosY; }; struct MSG_SYN_NPC_OPEN : public MSG_ERROR { unsigned long mCharacterIdx; float mPosX; float mPosY; }; struct MSG_SYN_NPC_CLOSE : public MSG_ERROR { unsigned long mCharacterIdx; }; // â°í ÀÌ¿ëÁß ÀÔ±Ý #define ERROR_NPC_DEPOSIT_SUCCESS 0 // ¼º°ø #define ERROR_NPC_DEPOSIT_FAIL 1 // ½ÇÆÐ #define ERROR_NPC_DEPOSIT_NPC 2 // npcÀÎÁõ ½ÇÆÐ struct MSG_REQ_NPC_DEPOSIT : public MSGROOT { unsigned long npcIdx; unsigned long money; }; struct MSG_RES_NPC_DEPOSIT : public MSG_ERROR {}; // â°í ÀÌ¿ëÁß Ãâ±Ý #define ERROR_NPC_WITHDRAW_SUCCESS 0 // ¼º°ø #define ERROR_NPC_WITHDRAW_FAIL 1 // ½ÇÆÐ #define ERROR_NPC_WITHDRAW_NPC 2 // npcÀÎÁõ ½ÇÆÐ struct MSG_REQ_NPC_WITHDRAW : public MSGROOT { unsigned long npcIdx; unsigned long money; }; struct MSG_RES_NPC_WITHDRAW : public MSG_ERROR {}; /*-- ¾ÆÀÌÅÛ Àκ¥ -> â°í */ #define ERROR_ITEM_MOV2_INVENTORY_SUCCESS 0 // ¼º°ø #define ERROR_ITEM_MOV2_INVENTORY_MONEY 1 // ±Ý¾×ºÎÁ· #define ERROR_ITEM_MOV2_INVENTORY_FAIL 2 // ½ÇÆÐ #define ERROR_ITEM_MOV2_INVENTORY_NOTYET 3 // DBó¸®Áß #define ERROR_ITEM_MOV2_INVENTORY_NPC 4 // npc ÀÎÁõ #define ERROR_ITEM_MOV2_INVENTORY_MERGE 5 // º´ÇÕÁß struct MSG_REQ_NPC_ITEM_MOV2_INVENTORY : MSGROOT { unsigned long npcIdx; // NPC °íÀ¯¹øÈ£ unsigned short number1; // Àκ¥Å丮 ¹øÈ£(¿øº») unsigned short number2; // Àκ¥Å丮 ¹øÈ£(´ë»ó) unsigned short count; // ¼ö·® }; struct MSG_RES_NPC_ITEM_MOV2_INVENTORY : MSG_ERROR { unsigned long RowCount; // ¿µÇâ¹ÞÀº Çà ¼ö sInventory Inventory[1]; // Àκ¥Å丮 // ½ÇÁ¦º¸³»´Â ¸Þ¼¼Áö Å©±â unsigned long GetMsgLength( ) { return sizeof(MSG_RES_NPC_ITEM_MOV2_INVENTORY) - sizeof(Inventory) + (RowCount * sizeof(sInventory)); } }; /*-- ¾ÆÀÌÅÛ ÆÈ±â(Àκ¥Å丮) */ #define ERROR_ITEM_SELL_SUCCESS 0 // ¼º°ø #define ERROR_ITEM_SELL_FAIL 1 // ½ÇÆÐ #define ERROR_ITEM_SELL_NOTYET 2 // DBó¸®Áß #define ERROR_ITEM_SELL_NPC 3 // npcÀÎÁõ ½ÇÆÐ struct MSG_REQ_NPC_ITEM_SELL : MSGROOT { unsigned long npcIdx; // NPC °íÀ¯¹øÈ£ unsigned short inventoryNumber; // Àκ¥Å丮 ¹øÈ£ unsigned short count; // ¼ö·® }; struct MSG_RES_NPC_ITEM_SELL : MSG_ERROR { BYTE rowCount; // ¿µÇâ¹ÞÀº Çà ¼ö sInventory inventory[1]; // Àκ¥Å丮 // ½ÇÁ¦º¸³»´Â ¸Þ¼¼Áö Å©±â unsigned long GetMsgLength( ) { return sizeof(MSG_RES_NPC_ITEM_SELL) - sizeof(inventory) + (rowCount * sizeof(sInventory)); } }; /*-- ¾ÆÀÌÅÛ »ç±â(Àκ¥Å丮) */ #define ERROR_ITEM_BUY_SUCCESS 0 // ¼º°ø #define ERROR_ITEM_BUY_MONEY 1 // ±Ý¾×ºÎÁ· #define ERROR_ITEM_BUY_PVP_POINT 2 // ÀüÀåÆ÷ÀÎÆ® ºÎÁ· #define ERROR_ITEM_BUY_TAROT_POINT 3 // Ÿ·ÎÆ÷ÀÌÆ® ºÎÁ· #define ERROR_ITEM_BUY_FAIL 4 // ½ÇÆÐ #define ERROR_ITEM_BUY_NOTYET 5 // DBó¸®Áß #define ERROR_ITEM_BUY_NPC 6 // npcÀÎÁõ ½ÇÆÐ struct MSG_REQ_NPC_ITEM_BUY : MSGROOT { unsigned long npcIdx; // NPC °íÀ¯¹øÈ£ unsigned int tabIdx; // NPC °íÀ¯¹øÈ£ unsigned long itemDefineIndex; // ¾ÆÀÌÅÛ À妽º unsigned short count; // ¼ö·® }; struct MSG_RES_NPC_ITEM_BUY : MSG_ERROR { BYTE rowCount; // ¿µÇâ¹ÞÀº Çà ¼ö sInventory inventory[1]; // Àκ¥Å丮 // ½ÇÁ¦º¸³»´Â ¸Þ¼¼Áö Å©±â unsigned long GetMsgLength( ) { return sizeof(MSG_RES_NPC_ITEM_BUY) - sizeof(inventory) + (rowCount * sizeof(sInventory)); } }; #define ERROR_QUEST_COMPLETE_SUCCESS 0 // ¼º°ø - ÁøÇà ¿Ï·á ¿äû ¼º°ø #define ERROR_QUEST_COMPLETE_NOTYET 1 // ½ÇÆÐ - DB »ç¿ëÁß #define ERROR_QUEST_COMPLETE_FAIL 2 // ½ÇÆÐ - ¿À·ù #define ERROR_QUEST_COMPLETE_POSSIBLE 3 // ½ÇÆÐ - ¿Ï·áÁ¶°Ç ¾Æ´Ô #define ERROR_QUEST_COMPLETE_TAKE 4 // ½ÇÆÐ - ¾ÆÀÌÅÛ È¸¼ö ½ÇÆÐ #define ERROR_QUEST_COMPLETE_NPC 5 // ½ÇÆÐ - NPC ÀÎÁõ #define ERROR_QUEST_COMPLETE_TIME 6 // ½ÇÆÐ - ½Ã°£Á¦ÇÑ ¿À¹ö #define ERROR_QUEST_COMPLETE_ALREADY 7 // ½ÇÆÐ - ÀÌ¹Ì ¿Ï·áÇÑ Äù½ºÆ® #define ERROR_QUEST_COMPLETE_TUTORIALMODE 8 // ½ÇÆÐ - Æ©Å丮¾ó ¸ðµå º¯°æ ½ÇÆÐ /// Äù½ºÆ® ÁøÇà ¿Ï·á struct MSG_REQ_NPC_QUEST_COMPLETE : MSGROOT { int arrayIdx; // Äù½ºÆ® ¸ñ·Ï³» À妽º unsigned long questIndex; unsigned long npcIndex; }; struct MSG_RES_NPC_QUEST_COMPLETE : MSG_ERROR { int arrayIdx; char status; /// »óÅÂ(2:ÁøÇà¿Ï·á, 4:ÁøÇà½ÇÆÐ) }; #define ERROR_QUEST_REWARD_SUCCESS 0 // ¼º°ø - ¿Ï·á ¿äû ¼º°ø #define ERROR_QUEST_REWARD_NOTYET 1 // ½ÇÆÐ - DB »ç¿ëÁß #define ERROR_QUEST_REWARD_FAIL 2 // ½ÇÆÐ - ¿À·ù #define ERROR_QUEST_REWARD_ITEM 3 // ½ÇÆÐ - ¾ÆÀÌÅÛ º¸»ó Áö±Þ ½ÇÆÐ #define ERROR_QUEST_REWARD_MONEY 4 // ½ÇÆÐ - º¸»ó ±Ý¾× Áö±Þ ½ÇÆÐ #define ERROR_QUEST_REWARD_COUNT 5 // ½ÇÆÐ - ¼±Åð¹¼ö ÀûÀ½ #define ERROR_QUEST_REWARD_NPC 6 // ½ÇÆÐ - NPC ÀÎÁõ #define ERROR_QUEST_REWARD_COMPLETE 7 // ½ÇÆÐ - ÁøÇà¿Ï·á»óÅ ¾Æ´Ô /// Äù½ºÆ® º¸»ó struct MSG_REQ_NPC_QUEST_REWARD : MSGROOT { int arrayIdx; // Äù½ºÆ® ¸ñ·Ï³» À妽º unsigned long questIndex; unsigned long npcIndex; unsigned int rowCount; sRewardData table[5]; /// ¼±Åú¸»ó ¸ñ·Ï }; struct MSG_RES_NPC_QUEST_REWARD : MSG_ERROR {}; struct sNpcQuestStatus { unsigned long npcIdx; unsigned char status; /// »óÅ eNpcQuestStatus }; // Äù½ºÆ® °ü·Ã »óÅ struct MSG_RES_NPC_QUESTSTATUS : public MSGROOT { unsigned long rowCount; /// NPC ¼ö sNpcQuestStatus table[1]; }; // Äù½ºÆ® ½Å±Ô¸®½ºÆ® Àç¹ß¼Û ¿äû struct MSG_REQ_NPC_QUESTLIST_RESEND : MSGROOT { unsigned long npcIndex; }; #define ERROR_NPC_GUILD_CREATE_SUCESS 0 // ¼º°ø #define ERROR_NPC_GUILD_CREATE_FAIL 1 // ½ÇÆÐ #define ERROR_NPC_GUILD_CREATE_CONDITION 2 // ½ÇÆÐ - °¡ÀÔÁ¶°Ç ÃæÁ· ¾ÈµÊ (·¹º§, ±Ý¾×) #define ERROR_NPC_GUILD_CREATE_ALREADY 3 // ½ÇÆÐ - ÀÌ¹Ì ±æµå °¡ÀÔÁß #define ERROR_NPC_GUILD_CREATE_ERRORNAME 4 // ½ÇÆÐ - ±æµå¸í ¾ø°Å³ª 12ÀÚ ³ÑÀ½ #define ERROR_NPC_GUILD_CREATE_EXISTNAME 5 // ½ÇÆÐ - ±æµå¸í Áߺ¹ #define ERROR_NPC_GUILD_CREATE_NPC 6 // ½ÇÆÐ - NPC ÀÎÁõ½ÇÆÐ /// ±æµå»ý¼º struct MSG_REQ_NPC_GUILD_CREATE :MSGROOT { unsigned long npcIndex; wchar_t name[MAX_GUILDNAME_BUFFER_SIZE]; /// ±æµå¸í unsigned long GetMsgLength( ) { return sizeof(MSG_REQ_NPC_GUILD_CREATE) - sizeof(name) + wcslen(name)*sizeof(wchar_t); } }; struct MSG_RES_NPC_GUILD_CREATE : MSG_ERROR {}; /// NPC Á¡Áý ¿­¾îº¸±â struct MSG_REQ_NPC_TAROT_OPEN : MSGROOT {}; struct MSG_RES_NPC_TAROT_OPEN : MSG_ERROR { unsigned long fortuneData; /// ¿î¼¼ ºñÆ® }; #define ERROR_NPC_TAROT_CLOSE_SUCESS 0 // ¼º°ø #define ERROR_NPC_TAROT_CLOSE_FAIL 1 // ½ÇÆÐ /// NPC Á¡Áý ´Ý±â struct MSG_REQ_NPC_TAROT_CLOSE : MSGROOT {}; struct MSG_RES_NPC_TAROT_CLOSE : MSG_ERROR {}; /// NPC Á¡Áý Âü¿© struct MSG_REQ_NPC_TAROT_JOIN : MSGROOT { unsigned long npcIndex; // npc À妽º }; struct MSG_RES_NPC_TAROT_JOIN : MSG_ERROR {}; #define ERROR_NPC_TAROT_FORTUNE_SUCESS 0 // ¼º°ø #define ERROR_NPC_TAROT_FORTUNE_FAIL 1 // ½ÇÆÐ #define ERROR_NPC_TAROT_FORTUNE_ONCE 2 // ½ÇÆÐ - ÇÏ·ç¿¡ Çѹø¸¸ °¡´É /// ¿î¼¼ ¼±Åà struct MSG_REQ_NPC_TAROT_FORTUNE : MSGROOT { short fortuneProp; // ¿î¼¼ ¼Ó¼º }; struct MSG_RES_NPC_TAROT_FORTUNE : MSG_ERROR {}; /// NPC Á¡Áý Âü¿© struct MSG_REQ_NPC_THEME_JOIN : MSGROOT { unsigned long npcIndex; // npc À妽º }; // ÆÇ¸Å´ëÇà ½Ã½ºÅÛ #define NPC_ITEM_AGENT_TIME1 24 #define NPC_ITEM_AGENT_TIME2 48 #define NPC_ITEM_AGENT_TIME3 72 // NM_NPC_ITEM_AGENT_OPEN_REQ #define ERROR_NPC_ITEM_AGENT_OPEN_SUCCESS 0 // ¼º°ø #define ERROR_NPC_ITEM_AGENT_OPEN_FAIL 1 // ½ÇÆÐ #define ERROR_NPC_ITEM_AGENT_OPEN_NOTYET 2 // DBó¸®Áß struct MSG_REQ_NPC_ITEM_AGENT_OPEN : public MSGROOT { long npcIndex; // npc À妽º }; // NM_NPC_ITEM_AGENT_OPEN_PAGE_REQ #define ERROR_NPC_ITEM_AGENT_OPEN_PAGE_SUCCESS 0 // ¼º°ø #define ERROR_NPC_ITEM_AGENT_OPEN_PAGE_FAIL 1 // ½ÇÆÐ #define ERROR_NPC_ITEM_AGENT_OPEN_PAGE_NOTYET 2 // DBó¸®Áß struct MSG_REQ_NPC_ITEM_AGENT_PAGE_OPEN : public MSGROOT { long StartPage; // ÆäÀÌÁö ¹øÈ£ (1ºÎÅÍ ½ÃÀÛ ... ) }; struct NPC_ITEM_AGENT_OPEN_RESULT { long Idx; // °íÀ¯¹øÈ£ SYSTEMTIME ValidThru; // À¯È¿¸¸±â long Price; // ÆÇ¸Å°¡°Ý sInventory Inventory; // Àκ¥Å丮 }; struct MSG_RES_NPC_ITEM_AGENT_OPEN : public MSG_ERROR { long StartPage; // ÆäÀÌÁö ¹øÈ£ ½ÃÀÛ(1ºÎÅÍ...) long EndPage; // ÆäÀÌÁö ¹øÈ£ ³¡ long RowCount; // ¿µÇâ¹ÞÀº Çà ¼ö NPC_ITEM_AGENT_OPEN_RESULT Result[1]; // °á°ú unsigned long GetMsgLength( ) { return sizeof(MSG_RES_NPC_ITEM_AGENT_OPEN) - sizeof(Result) + (RowCount * sizeof(Result)); } }; // NM_NPC_ITEM_AGENT_ADD_REQ #define ERROR_NPC_ITEM_AGENT_ADD_SUCCESS 0 // ¼º°ø #define ERROR_NPC_ITEM_AGENT_ADD_FAIL 1 // ½ÇÆÐ #define ERROR_NPC_ITEM_AGENT_ADD_NOTYET 2 // DBó¸®Áß #define ERROR_NPC_ITEM_AGENT_ADD_OVER 3 // µî·ÏÁ¦ÇÑ Ãʰú struct MSG_REQ_NPC_ITEM_AGENT_ADD : public MSGROOT { long StartPage; // ÆäÀÌÁö ¹øÈ£ (1ºÎÅÍ ½ÃÀÛ ... ) BYTE ValidThru; // µî·Ï±â°£ unsigned short Number; // Àκ¥Å丮 ¹øÈ£ unsigned short Count; // Àκ¥Å丮 ¼ö·® long Price; // µî·Ï °¡°Ý }; struct MSG_RES_NPC_ITEM_AGENT_ADD : public MSG_ERROR { long StartPage; // ÆäÀÌÁö ¹øÈ£ ½ÃÀÛ(1ºÎÅÍ...) long EndPage; // ÆäÀÌÁö ¹øÈ£ ³¡ long RowCount; // ¿µÇâ¹ÞÀº Çà ¼ö NPC_ITEM_AGENT_OPEN_RESULT Result[1]; // °á°ú unsigned long GetMsgLength( ) { return sizeof(MSG_RES_NPC_ITEM_AGENT_ADD) - sizeof(Result) + (RowCount * sizeof(Result)); } }; // NM_NPC_ITEM_AGENT_DEL_REQ #define ERROR_NPC_ITEM_AGENT_DEL_SUCCESS 0 // ¼º°ø #define ERROR_NPC_ITEM_AGENT_DEL_FAIL 1 // ½ÇÆÐ #define ERROR_NPC_ITEM_AGENT_DEL_NOTYET 2 // DBó¸®Áß struct MSG_REQ_NPC_ITEM_AGENT_DEL : public MSGROOT { long StartPage; // ÆäÀÌÁö ¹øÈ£ (1ºÎÅÍ ½ÃÀÛ ... ) long Idx; // °íÀ¯¹øÈ£ }; struct MSG_RES_NPC_ITEM_AGENT_DEL : public MSG_ERROR { sInventory Inventory; // Àκ¥Å丮 long StartPage; // ÆäÀÌÁö ¹øÈ£ ½ÃÀÛ(1ºÎÅÍ...) long EndPage; // ÆäÀÌÁö ¹øÈ£ ³¡ long RowCount; // ¿µÇâ¹ÞÀº Çà ¼ö NPC_ITEM_AGENT_OPEN_RESULT Result[1]; // °á°ú unsigned long GetMsgLength( ) { return sizeof(MSG_RES_NPC_ITEM_AGENT_DEL) - sizeof(Result) + (RowCount * sizeof(Result)); } }; // NM_NPC_ITEM_AGENT_SEARCH_NAME_REQ // NM_NPC_ITEM_AGENT_SEARCH_TYPE_REQ // NM_NPC_ITEM_AGENT_SEARCH_ALL_REQ #define MAX_ITEM_DEFINE_NAME 51 #define ALL_ITEM_DEFINE_SUB_TYPE 255 #define ALL_INVENTORY_ENHANCED 255 #define ALL_INVENTORY_RARE 255 #define ERROR_NPC_ITEM_AGENT_SEARCH_SUCCESS 0 // ¼º°ø #define ERROR_NPC_ITEM_AGENT_SEARCH_FAIL 1 // ½ÇÆÐ #define ERROR_NPC_ITEM_AGENT_SEARCH_NOTYET 2 // »ç¿ëÁß struct MSG_REQ_NPC_ITEM_AGENT_SEARCH : public MSGROOT { long startPage; // ÆäÀÌÁö ¹øÈ£ (1ºÎÅÍ ½ÃÀÛ ... ) union { struct { BYTE flag : 1; // Á¤·Ä-0³»¸²,1¿À¸§ BYTE filed : 1; // Á¤·Ä-0°¡°Ý,1À̸§ } sort; BYTE sortData; }; BYTE itemDefineRareLevel; // ¾ÆÀÌÅÛ ·¹¾î¼öÁØ BYTE itemLimitCharLevelB; // ¾ÆÀÌÅÛ Ä³¸¯ÅÍ »ç¿ëÁ¦ÇÑ BYTE itemLimitCharLevelE; // " BYTE inventoryEnhanced; // Àκ¥Å丮 °­È­´Ü°è }; struct MSG_REQ_NPC_ITEM_AGENT_SEARCH_NAME : public MSGROOT { long startPage; // ÆäÀÌÁö ¹øÈ£ (1ºÎÅÍ ½ÃÀÛ ... ) union { struct { BYTE flag : 1; // Á¤·Ä-0³»¸²,1¿À¸§ BYTE filed : 1; // Á¤·Ä-0°¡°Ý,1À̸§ } sort; BYTE sortData; }; wchar_t itemDefineName[ MAX_ITEM_DEFINE_NAME ]; // ¾ÆÀÌÅÛ À̸§ BYTE itemDefineRareLevel; // ¾ÆÀÌÅÛ ·¹¾î¼öÁØ BYTE itemLimitCharLevelB; // ¾ÆÀÌÅÛ Ä³¸¯ÅÍ »ç¿ëÁ¦ÇÑ BYTE itemLimitCharLevelE; // " BYTE inventoryEnhanced; // Àκ¥Å丮 °­È­´Ü°è }; struct MSG_REQ_NPC_ITEM_AGENT_SEARCH_TYPE : public MSGROOT { long startPage; // ÆäÀÌÁö ¹øÈ£ (1ºÎÅÍ ½ÃÀÛ ... ) union { struct { BYTE flag : 1; // Á¤·Ä-0³»¸²,1¿À¸§ BYTE filed : 1; // Á¤·Ä-0°¡°Ý,1À̸§ } sort; BYTE sortData; }; BYTE itemDefineSearchType; // ¾ÆÀÌÅÛ Á¤ÀÇ °Ë»öÁ¾·ù-´ëºÐ·ù short itemDefineSearchSubType; // ¾ÆÀÌÅÛ Á¤ÀÇ °Ë»öÁ¾·ù-Áߺзù BYTE itemDefineRareLevel; // ¾ÆÀÌÅÛ ·¹¾î¼öÁØ BYTE itemLimitCharLevelB; // ¾ÆÀÌÅÛ Ä³¸¯ÅÍ »ç¿ëÁ¦ÇÑ BYTE itemLimitCharLevelE; // " BYTE inventoryEnhanced; // Àκ¥Å丮 °­È­´Ü°è }; struct MSG_REQ_NPC_ITEM_AGENT_SEARCH_ALL : public MSGROOT { long startPage; // ÆäÀÌÁö ¹øÈ£ (1ºÎÅÍ ½ÃÀÛ ... ) union { struct { BYTE flag : 1; // Á¤·Ä-0³»¸²,1¿À¸§ BYTE filed : 1; // Á¤·Ä-0°¡°Ý,1À̸§ } sort; BYTE sortData; }; wchar_t itemDefineName[ MAX_ITEM_DEFINE_NAME ]; // ¾ÆÀÌÅÛ À̸§ BYTE itemDefineSearchType; // ¾ÆÀÌÅÛ Á¤ÀÇ °Ë»öÁ¾·ù-´ëºÐ·ù short itemDefineSearchSubType; // ¾ÆÀÌÅÛ Á¤ÀÇ °Ë»öÁ¾·ù-Áߺзù BYTE itemDefineRareLevel; // ¾ÆÀÌÅÛ ·¹¾î¼öÁØ BYTE itemLimitCharLevelB; // ¾ÆÀÌÅÛ Ä³¸¯ÅÍ »ç¿ëÁ¦ÇÑ BYTE itemLimitCharLevelE; // " BYTE inventoryEnhanced; // Àκ¥Å丮 °­È­´Ü°è }; struct NPC_ITEM_AGENT_SEARCH_RESULT { long Idx; // °íÀ¯¹øÈ£ wchar_t CharacterName[ 17 ]; // ij¸¯ÅÍ À̸§(¼ÒÀ¯) SYSTEMTIME ValidThru; // À¯È¿¸¸±â unsigned long Price; // ÆÇ¸Å°¡°Ý sInventory Inventory; // Àκ¥Å丮 }; struct MSG_RES_NPC_ITEM_AGENT_SEARCH_RESULT : public MSG_ERROR { long StartPage; // ÆäÀÌÁö ¹øÈ£ ½ÃÀÛ(1ºÎÅÍ...) long EndPage; // ÆäÀÌÁö ¹øÈ£ ³¡ long RowCount; // Àû¿ëµÈ Çà ¼ö NPC_ITEM_AGENT_SEARCH_RESULT Result[1]; // °á°ú °ª unsigned long GetMsgLength( ) { return sizeof(MSG_RES_NPC_ITEM_AGENT_SEARCH_RESULT) - sizeof(Result) + (RowCount * sizeof(Result)); } }; // NM_NPC_ITEM_AGENT_GET_REQ struct MSG_REQ_NPC_ITEM_AGENT_GET : public MSGROOT { long Idx; // °íÀ¯¹øÈ£(±¸¸ÅÇÒ ÆÇ¸Å´ëÇà °íÀ¯¹øÈ£) short Count; // ±¸¸Å¼ö·® long startPage; // ÆäÀÌÁö ¹øÈ£ (1ºÎÅÍ ½ÃÀÛ ... ) union { struct { BYTE flag : 1; // Á¤·Ä-0³»¸²,1¿À¸§ BYTE filed : 1; // Á¤·Ä-0°¡°Ý,1À̸§ } sort; BYTE sortData; }; wchar_t itemDefineName[ MAX_ITEM_DEFINE_NAME ]; // ¾ÆÀÌÅÛ À̸§ BYTE itemDefineSearchType; // ¾ÆÀÌÅÛ Á¤ÀÇ °Ë»öÁ¾·ù-´ëºÐ·ù short itemDefineSearchSubType; // ¾ÆÀÌÅÛ Á¤ÀÇ °Ë»öÁ¾·ù-Áߺзù BYTE itemDefineRareLevel; // ¾ÆÀÌÅÛ ·¹¾î¼öÁØ BYTE itemLimitCharLevelB; // ¾ÆÀÌÅÛ Ä³¸¯ÅÍ »ç¿ëÁ¦ÇÑ BYTE itemLimitCharLevelE; // " BYTE inventoryEnhanced; // Àκ¥Å丮 °­È­´Ü°è }; struct MSG_RES_NPC_ITEM_AGENT_GET : public MSG_ERROR { long StartPage; // ÆäÀÌÁö ¹øÈ£ ½ÃÀÛ(1ºÎÅÍ...) long EndPage; // ÆäÀÌÁö ¹øÈ£ ³¡ long RowCount; // Àû¿ëµÈ Çà ¼ö NPC_ITEM_AGENT_SEARCH_RESULT Result[1]; // °á°ú °ª unsigned long GetMsgLength( ) { return sizeof(MSG_RES_NPC_ITEM_AGENT_GET) - sizeof(Result) + (RowCount * sizeof(Result)); } }; #pragma pack(pop)