#ifndef _RYL_ADMIN_MGR_PROTOCOL_H_ #define _RYL_ADMIN_MGR_PROTOCOL_H_ #include #include #include #include #include #include #pragma pack( 1 ) namespace PktAgentServer { namespace PktCMD { enum CMD { CmdSysServerLogin = 0x28, // ½Ã½ºÅÛ ¼­¹ö ·Î±×ÀÎ CmdAdminToolGetData = 0x76, // ¿î¿µÅø¿¡¼­ DBAgentÀÇ µ¥ÀÌÅÍ ¾ò¾î ¿À±â. CmdAdminToolSetData = 0x77, // ij¸¯ÅÍ ÀúÀå }; }; struct PktSL : public PktBase { unsigned long m_dwServerID; IN_ADDR m_Address; }; // ¾îµå¹Î Åø¿¡ µ¥ÀÌÅÍ ¾÷µ¥ÀÌÆ®Çϱâ. struct PktAdminToolGetData : public PktBase { enum GetDataType { // DBÁß°è -> ¿î¿µ¼­¹ö CHAR_BASIC_DATA = 10, // ij¸¯ÅÍ Á¤º¸. ´ÙÀ½ Á¤º¸µéÀÌ µé¾î°¨. // CHAR_INFOST ij¸¯ÅÍ ±âº» Á¤º¸ // CHAR_POS ij¸¯ÅÍ À§Ä¡ Á¤º¸ // SKILL ij¸¯ÅÍ ½ºÅ³ Á¤º¸ // QUICK ij¸¯ÅÍ Äü ½½·Ô // EQUIP ij¸¯ÅÍ Àåºñ // INVEN ij¸¯ÅÍ Àκ¥ // EXTRA ij¸¯ÅÍ ¿©ºÐ // EXCHANGE ij¸¯ÅÍ ±³È¯ CHAR_EXTRA_DATA = 11, // ij¸¯ÅÍ Ãß°¡ Á¤º¸µé. ´ÙÀ½ Á¤º¸µéÀÌ µé¾î°¨. // CHAR_INFOEX ij¸¯ÅÍ Ãß°¡ Á¤º¸ // QUEST Äù½ºÆ® // HISTORY È÷½ºÅ丮 // CONFIG ¼³Á¤ // STORE_INFO â°í Á¤º¸ CHAR_FRIEND_DATA = 12, // ij¸¯ÅÍ Ä£±¸ Á¤º¸ CHAR_BAN_DATA = 13, // ij¸¯ÅÍ °ÅºÎ Á¤º¸ STORE_12_DATA = 14, // â°í 1, 2ÅÇ µ¥ÀÌÅÍ STORE_34_DATA = 15, // â°í 3, 4ÅÇ µ¥ÀÌÅÍ FINISH_GET_DATA = 19, // DBÁß°è¿¡¼­ ¿î¿µ¼­¹ö·Î µ¥ÀÌÅ͸¦ ÀüºÎ º¸³ÂÀ½. // ¿î¿µ¼­¹ö -> DBÁß°è GET_CHAR_DATA = 20, // ij¸¯ÅÍ µ¥ÀÌÅÍ ¿äû ÆÐŶ CHANGE_CHAR_NAME = 30 // ij¸¯ÅÍ À̸§ ¹Ù²Ù±â }; enum GetError { UNKNOWN_ERROR = 1, // ¾Ë ¼ö ¾ø´Â ¿¡·¯ INVALID_REQUEST = 2, // À߸øµÈ µ¥ÀÌÅÍ ÆÐŶ GET_UIDCID_QUERY_FAILED = 3, // DB¿¡¼­ À̸§À¸·Î UID, CID¸¦ ¾ò¾î¿À´Â µ¥ ½ÇÆÐÇß´Ù. INVALID_UID_CID_DATA = 4, // DB¿¡¼­ À̸§À¸·Î ¾ò¾î¿Â UID, CIDµ¥ÀÌÅͰ¡ ÀÌ»óÇÏ´Ù. GET_STORE_QUERY_FAILED = 5, // DB¿¡¼­ â°í µ¥ÀÌÅ͸¦ ¾ò¾î¿À´Â µ¥ ½ÇÆÐÇß´Ù. GET_CHAR_DATA_QUERY_FAILED = 6 // DB¿¡¼­ ij¸¯ÅÍ µ¥ÀÌÅ͸¦ ¾ò¾î¿À´Â µ¥ ½ÇÆÐÇß´Ù. }; char m_szName[CHAR_INFOST::MAX_NAME_LEN]; unsigned long m_dwRequestKey; unsigned long m_dwUID; unsigned long m_dwCID; unsigned char m_cType; unsigned char m_cOldServerGroupID; }; struct PktAdminToolGetDataAck : public PktBase { unsigned long m_dwRequestKey; unsigned long m_dwUID; unsigned long m_dwCID; unsigned char m_cType; unsigned char m_cOldServerGroupID; }; // ¾îµå¹Î Åø¿¡¼­ µ¥ÀÌÅÍ ¾÷µ¥ÀÌÆ®Çϱâ. (µÚ¿¡ µ¥ÀÌÅ͸¦ ³ÖÀ½) struct PktAdminToolSetData : public PktBase { enum SetDataType { CHAR_BASIC_DATA = 10, // ij¸¯ÅÍ Á¤º¸. ´ÙÀ½ Á¤º¸µéÀÌ µé¾î°¨. // CHAR_INFOST ij¸¯ÅÍ ±âº» Á¤º¸ // CHAR_POS ij¸¯ÅÍ À§Ä¡ Á¤º¸ // SKILL ij¸¯ÅÍ ½ºÅ³ Á¤º¸ // QUICK ij¸¯ÅÍ Äü ½½·Ô // EQUIP ij¸¯ÅÍ Àåºñ // INVEN ij¸¯ÅÍ Àκ¥ // EXTRA ij¸¯ÅÍ ¿©ºÐ // EXCHANGE ij¸¯ÅÍ ±³È¯ CHAR_EXTRA_DATA = 11, // ij¸¯ÅÍ Ãß°¡ Á¤º¸µé. ´ÙÀ½ Á¤º¸µéÀÌ µé¾î°¨. // CHAR_INFOEX ij¸¯ÅÍ Ãß°¡ Á¤º¸ // QUEST Äù½ºÆ® // HISTORY È÷½ºÅ丮 // CONFIG ¼³Á¤ // STORE_INFO â°í Á¤º¸ CHAR_FRIEND_DATA = 12, // ij¸¯ÅÍ Ä£±¸ Á¤º¸ CHAR_BAN_DATA = 13, // ij¸¯ÅÍ °ÅºÎ Á¤º¸ STORE_12_DATA = 14, // â°í 1, 2ÅÇ µ¥ÀÌÅÍ STORE_34_DATA = 15, // â°í 3, 4ÅÇ µ¥ÀÌÅÍ OPEN_UPDATE_DATA = 20, // ¼¼¼ÇÀ» ¿­°í DB¿¡ ¾÷µ¥ÀÌÆ®ÇÏ·Á ½ÃµµÇÑ´Ù. FINISH_UPDATE_DATA = 21, // µ¥ÀÌÅ͸¦ DB¿¡ ¾÷µ¥ÀÌÆ®ÇÏ°í ¼¼¼ÇÀ» ´Ý´Â´Ù. RELOAD_ADMINLIST = 30 }; enum SetError { UNKNOWN_ERROR = 1, // ¾Ë ¼ö ¾ø´Â ¿¡·¯. INVALID_UID_CID_ERROR = 2, // ¾Ë ¼ö ¾ø´Â UID/CID LOGIN_ANOTHER_GAMESERVER = 3, // ´Ù¸¥ °ÔÀÓ ¼­¹ö¿¡ ·Î±×ÀÎ ÇØ À־ ¾÷µ¥ÀÌÆ® ºÒ°¡. SESSION_OPEN_FAILED = 4, // ¼¼¼Ç ¿­±â ½ÇÆÐ ALREADY_LOGIN_USER_SESSION_OPEN = 5, // ÀÌ¹Ì ·Î±×ÀÎ µÇ¾î ÀÖ´Â À¯Àú ¼¼¼ÇÀ» ¿­·Á°í ÇßÀ½ ANOTHER_CHAR_LOAD_FAILED = 6, // ij¸¯ÅÍ Á¤º¸¸¦ DB¿¡¼­ Àоî¿À´Â µ¥ ½ÇÆÐ SETTING_DATA_FAILED = 7, // µ¥ÀÌÅÍ ¼¼ÆÃ ½ÇÆÐ (µ¥ÀÌÅÍ ±æÀ̵îÀÌ ¸ÂÁö ¾ÊÀ½) SESSION_START_FAILED = 8 // ¼¼¼Ç ½ÃÀÛ ½ÇÆÐ. }; unsigned __int64 m_dwSerial; unsigned long m_dwRequestKey; unsigned long m_dwUID; unsigned long m_dwCID; unsigned char m_cType; unsigned char m_cOldServerGroupID; }; struct PktAdminToolSetDataAck : public PktBase { unsigned long m_dwRequestKey; unsigned long m_dwUID; unsigned long m_dwCID; unsigned char m_cType; }; }; namespace PktAdminMgr { enum MAX_LENGEH { MAX_ACCOUNT = 40, MAX_PASSWORD = 40, MAX_NAME = 20, MAX_IP = 16, MAX_DATE = 11, MAX_IPBUFFER = 64, MAX_BEFORE = 200, MAX_AFTER = 200, MAX_ITEM_NAME = 64, MAX_TIME = 20, MAX_CHARNAME = 16, MAX_LOG = 200, MAX_ITEM_BUFFER = 8000 }; namespace PktCMD { enum Type { PktResultAck = 1, PktLogin = 2, PktNewAdmin = 3, PktNewAdminAck = 3, PktAdminList = 4, PktAdminListAck = 4, PktDelAdmin = 5, PktDelAdminAck = 5, PktUpdateLevel = 6, PktUpdateLevelAck = 6, PktUpdateIP = 7, PktUpdateIPAck = 7, PktUpdatePasswd = 8, PktLoginInfoAck = 9, PktLogList = 10, PktLogListAck = 10, PktLogUseMessage = 11, PktDetailLog = 12, PktDetailLogAck = 12, PktGetExitLogAck = 13, PktBeforeAfter = 14, PktBeforeAfterAck = 14, PktSearchID = 15, PktSearchResultAck = 15, PktSearchName = 16, PktSearchAck = 16, PktAgentServerIndex = 17, PktGetCharacter = 18, PktGetCharacterAck = 18, PktSetCharacter = 19, PktCloseCharacter = 20, PktCloseCharacterAck = 20, PktUpdateStatus = 21, PktCreateItem = 22, PktCreateItemAck = 22, PktUpdateItem = 23, PktUpdateItemAck = 23, PktRemoveItem = 24, PktRemoveItemAck = 24, PktDepositSync = 25, PktItemReset = 26, PktItemResetAck = 26, PktInvenGold = 27, PktInvenGoldAck = 27, PktSkillEdit = 28, PktSkillEditAck = 28, PktAddBlockUser = 29, PktSearchBlock = 30, PktSearchBlockAck = 30, PktChangePos = 31, PktSetZoneList = 32, PktSetZoneListAck = 32, PktDepositPasswd = 33, PktCheckName = 34, PktChangeName = 35, PktChangeNameAck = 35, PktDelCharList = 36, PktDelCharListAck = 36, PktCharRestore = 37, PktCharRestoreAck = 37, PktAdminStoreInsert = 38, PktAdminStoreInsertAck = 38, PktAdminStoreDelete = 39, PktAdminStoreDeleteAck = 39, PktGetAdminStoreItem = 40, PktGetAdminStoreItemAck = 40, PktUpdateAdminStore = 41, PktDelCharacter = 42, PktDelCharacterAck = 42, PktForcedDis = 43, PktGuildSearch = 44, PktGuildSearchAck = 44, PktRequestGuildMemberList = 45, PktRequestGuildMemberListAck = 45, PktGuildRestoreDataList = 46, PktGuildRestoreDataListAck = 46, PktItemQtyControl = 47, PktStoreGoldUpdate = 48, PktUserBillingLog = 49, PktUserBillingLogAck = 49, PktGameAdmin = 50, PktGameAdminAck = 50, PktConnectAllServerz = 51, PktRefreshConnectedList = 52, PktInterestedUser = 53, PktConnectionChk = 54, PktConnectedUserList = 55, PktDuplicatedItem = 56, PktItemDistribute = 57, PktItemDistributeAck = 57, PktDelBlockUser = 58, PktGuildRight = 59, PktUnifiedCharInfo = 60, PktUnifiedGuildInfo = 61, PktDetailCharInfo = 62, PktCancelExecuteQuest = 63, PktDeleteHistoryQuest = 64, PktUserNation = 65, PktShiftToUID = 66, PktStoreTabEdit = 67, PktAmountOfGold = 68, PktGMLogMsg = 69, PktNameChangeCount = 70, PktGuildMemberEdit = 71, PktGetCharInfoTime = 72, PktGetCharInfoTimeAck = 73, PktFortSearch = 74, PktFortSearchAck = 75, PktMiningCamp = 76, PktMiningCampAck = 77, PktShopCamp = 78, PktShopCampAck = 79, PktShopCampGold = 80, PktShopCampTax = 81, PktCastleSearch = 82, PktCastleSearchAck = 83, PktCastleCreature = 84, PktCastleCreatureAck = 84, PktEnd }; }; namespace PktResult { const unsigned char Result_Null = 0x00; // °Á NULL ¤Ñ.¤Ñ; const unsigned char Err_Unknown = 0x01; // ¾Ë¼ö ¾ø´Â ¿À·ù const unsigned char Err_Database = 0x02; // µ¥ÀÌÅÍ º£À̽º ¿À·ù const unsigned char Err_Account = 0x03; // ·Î±×ÀÎ (µî·ÏµÇ¾î ÀÖÁö ¾ÊÀº Account) const unsigned char Err_Passwd = 0x04; // ·Î±×ÀÎ (ºñ¹Ð¹øÈ£°¡ ´Ù¸£´Ù) const unsigned char Err_ConnectIP = 0x05; // ·Î±×ÀÎ ¾ÆÀÌÇÇ Ã¼Å© (Á¢¼Ó IP°¡ ´Ù¸£´Ù) const unsigned char Err_OverlapID = 0x06; // ÀÌ¹Ì »ç¿ëÁßÀÎ ID const unsigned char Err_NewAdmin = 0x07; // ID»ý¼º °úÁ¤ Áß ºñ¾îÀÖ´Â °ªÀÌ ÀÖ´Ù. const unsigned char Err_DelAdmin = 0x08; // °èÁ¤ »èÁ¦ ¿À·ù (Á¸ÀçÇÏÁö ¾Ê´Â ID°Å³ª DB¿À·ù) const unsigned char Err_UpdateLevel = 0x09; // ·¹º§ º¯°æÁß ¿À·ù const unsigned char Err_UpdateIP = 0x0a; // ¾ÆÀÌÇÇ º¯°æÁß ¿À·ù const unsigned char Err_UpdatePasswd = 0x0b; // ÆÐ½º¿öµå º¯°æÁß ¿À·ù const unsigned char Err_Authority = 0x0c; // »ç¿ë ±ÇÇÑÀÌ ¾ø´Ù... const unsigned char Err_UnkonwnPacket = 0x0d; // ¾Ë¼ö¾ø´Â ÆÐŶ CMD¸¦ ¹Þ¾Ò½À´Ï´Ù. const unsigned char Err_ModifyCharacter = 0x0e; // ÇöÁ¦ ¿¡µðÆÃÁßÀÎ Äɸ¯ÅÍ ÀÔ´Ï´Ù. const unsigned char Err_NotFountDBComponent = 0x0f; // ¼±ÅÃÇÑ ¼­¹ö±×·ìÀÇ DBComponent¸¦ ãÀ»¼ö¾ø½À´Ï´Ù. const unsigned char Err_CloseCharacter = 0x10; // Äɸ¯ÅÍ µ¶Á¡±ÇÇØÁö ¿À·ù const unsigned char Err_ChangeStatus = 0x11; // Äɸ¯ÅÍ StatusÁ¤º¸ ¼öÁ¤ ½ÇÆÐ ( Status¼öÄ¡¿À·ù ) const unsigned char Err_PacketDispatch = 0x12; // ÆÐŶ¿¡ À߸øµÈ µ¥ÀÌÅͰ¡ µé¾î°£°Í°°½À´Ï´Ù. const unsigned char Err_CreateItem1 = 0x13; // ¾ÆÀÌÅ۶Ǵ ij¸¯Å͸¦ ãÀ»¼ö ¾ø½À´Ï´Ù. const unsigned char Err_CreateItem2 = 0x14; // ¾ÆÀÌÅÛÀ» ¸¸µå´Âµ¥ ½ÇÆÐÇß½À´Ï´Ù. const unsigned char Err_CreateItem3 = 0x15; // ¾ÆÀÌÅÛÀ» ÀåÂøÇϴµ¥ ½ÇÆÐÇß½À´Ï´Ù. // Áß°è ¼­¹ö ¿¡·¯ ¸Þ¼¼Áö ---------------------------------------------------------------------------------------------------------------------- const unsigned char UNKNOWN_ERROR = 0x16; // AgentServer(GetData) ¾Ë¼ö¾ø´Â ¿¡·¯ const unsigned char INVALID_REQUEST = 0x17; // AgentServer(GetData) À߸øµÈ µ¥ÀÌÅÍ ÆÐŶ const unsigned char GET_UIDCID_QUERY_FAILED = 0x18; // AgentServer(GetData) DB¿¡¼­ À̸§À¸·Î UID, CID¸¦ ¾ò¾î¿À´Âµ¥ ½ÇÆÐÇß½À´Ï´Ù const unsigned char INVALID_UID_CID_DATA = 0x19; // AgentServer(GetData) DB¿¡¼­ À̸§À¸·Î ¾î´õ¿Â UID, CIDµ¥ÀÌÅͰ¡ ÀÌ»óÇÕ´Ï´Ù. const unsigned char GET_STORE_QUERY_FAILED = 0x1a; // AgentServer(GetData) DB¿¡¼­ â°í µ¥ÀÌÅ͸¦ ¾ò¾î¿À´Âµ¥ ½ÇÆÐÇß½À´Ï´Ù. const unsigned char GET_CHAR_DATA_QUERY_FAILED = 0x1b; // AgentServer(GetData) DB¿¡¼­ Äɸ¯ÅÍ µ¥ÀÌÅ͸¦ ¾ò¾î¿À´Âµ¥ ½ÇÆÐÇß½À´Ï´Ù. const unsigned char INVALID_UID_CID_ERROR = 0x1c; // AgentServer(SetData) ¾Ë¼ö¾ø´Â UID/CID const unsigned char LOGIN_ANOTHER_GAMESERVER = 0x1d; // AgentServer(SetData) ´Ù¸¥ °ÔÀÓ ¼­¹ö¿¡ ·Î±×ÀÎ ÇØ À־ ¾÷µ¥ÀÌÆ® ºÒ°¡. const unsigned char SESSION_OPEN_FAILED = 0x1e; // AgentServer(SetData) ¼¼¼Ç ¿­±â ½ÇÆÐ const unsigned char ALREADY_LOGIN_USER_SESSION_OPEN = 0x1f; // AgentServer(SetData) ÀÌ¹Ì ·Î±×ÀÎ µÇ¾î ÀÖ´Â À¯Àú ¼¼¼ÇÀ» ¿­·Á°í ÇßÀ½ const unsigned char ANOTHER_CHAR_LOAD_FAILED = 0x20; // AgentServer(SetData) ij¸¯ÅÍ Á¤º¸¸¦ DB¿¡¼­ Àоî¿À´Âµ¥ ½ÇÆÐ const unsigned char SETTING_DATA_FAILED = 0x21; // AgentServer(SetData) µ¥ÀÌÅÍ ¼¼ÆÃ ½ÇÆÐ ( µ¥ÀÌÅÍ ±æÀ̵îÀÌ ¸ÂÁö ¾ÊÀ½ ) const unsigned char SESSION_START_FAILED = 0x22; // AgentServer(SetData) ¼¼¼Ç ½ÃÀÛ ½ÇÆÐ // -------------------------------------------------------------------------------------------------------------------------------------------- const unsigned char Err_Invalid_ItemID = 0x23; // ¾ÆÀÌÅÛ ½Äº°¹øÈ£°¡ ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù. const unsigned char Err_Invalid_Item = 0x24; // ¾ÆÀÌÅÛÀÌ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù. const unsigned char Err_Invalid_Character = 0x25; // ij¸¯ÅͰ¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù. const unsigned char Err_RemoveItem = 0x26; // ij¸¯ÅÍ ¾ÆÀÌÅÛÀ» Áö¿ì´Âµ¥ ½ÇÆÐÇß½À´Ï´Ù. const unsigned char Err_NotUseDeposit = 0x27; // â°í ¾ÆÀÌÅÛÀ» ¼öÁ¤ÇÒ ¼ö¾ø´Ù ¼ÒÀ¯±ÇÀÌ ¾ø½À´Ï´Ù. const unsigned char Err_NotFoundAgentDispatch = 0x28; // ¼±ÅÃÇÑ ¼­¹ö±×·ìÀÇ AgentDispatch¸¦ ãÀ»¼ö ¾ø½À´Ï´Ù. const unsigned char Err_StateisSave = 0x29; // ¼±ÅÃÇÑ Ä³¸¯ÅÍÀÇ UID¿¡ °É·ÁÀÖ´Â ´Ù¸¥Ä³¸¯ÅͰ¡ â°íÁ¤º¸¸¦ ¾÷µ¥ÀÌÆ® ÁßÀÔ´Ï´Ù. 2 ~ 5ÃÊÈÄ ´Ù½Ã ½ÃµµÇØÁÖ¼¼¿ä. const unsigned char Err_SetInventoryGold = 0x2a; // Àκ¥Å丮 °ñµå¸¦ º¯°æÇϴµ¥ ½ÇÆÐÇß½À´Ï´Ù. const unsigned char Err_SkipCharacterSave = 0x2b; // ij¸¯ÅÍ ÀúÀå¿äûÀÌ ¹«½ÃµÆ½À´Ï´Ù (º¯°æµÈ Á¤º¸¾øÀ½ OR ÇöÀç ÀúÀåÁßÀΠij¸¯ÅÍ) const unsigned char Err_SkillEdit = 0x2c; // ½ºÅ³ °ü¸® ½ÇÆÐ const unsigned char Err_DepositPasswd = 0x2d; // â°í ÆÐ½º¿öµå º¯°æ ½ÇÆÐ. const unsigned char Err_NotUseName = 0x2e; // »ç¿ëÇÒ ¼ö ¾ø´Â ij¸¯ÅÍ À̸§ÀÔ´Ï´Ù. const unsigned char Err_NotChangeName = 0x2f; // ij¸¯ÅÍ À̸§ º¯°æ ½ÇÆÐ. const unsigned char Err_NotCharacterInfo = 0x30; // ij¸¯Åͺ¹±¸ ½Ãµµ Áß ÇØ´ç ij¸¯ÅÍ Á¤º¸°¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù. const unsigned char Err_NotUserInfoSlot = 0x31; // ij¸¯Åͺ¹±¸ ½Ãµµ Áß ÇØ´ç UID¿¡ ij¸¯Å͸¦ ´õÀÌ»ó Ãß°¡ÇÒ¼ö ¾ø½À´Ï´Ù. const unsigned char Err_AdminStore = 0x32; // °ü¸®ÀÚ Ã¢°í¿¡ ¾ÆÀÌÅÛÀ» Ãß°¡Çϴµ¥ ½ÇÆÐÇß½À´Ï´Ù. const unsigned char Err_AdminStoreDelete = 0x33; // °ü¸®ÀÚ Ã¢°í¿¡¼­ ¾ÆÀÌÅÛÀ» »èÁ¦Çϴµ¥ ½ÇÆÐÇß½À´Ï´Ù. const unsigned char Err_GameAdminManage = 0x34; // °ÔÀÓ ¿î¿µÀÚ °ü¸® ½ÇÆÐ (ExecuteQuery ½ÇÆÐ) const unsigned char Err_InterestedUserManage = 0x35; // °ü½ÉÀ¯Àú °ü¸® ½ÇÆÐ const unsigned char Err_NOT_ENOUGH_STAT = 0x36; // ½ºÅ³ °ü¸® ½ÇÆÐ (½ºÅÈÀÌ ºÎÁ·ÇÕ´Ï´Ù) const unsigned char Err_NOT_ENOUGH_SKILLSLOT = 0x37; // ½ºÅ³ °ü¸® ½ÇÆÐ (½ºÅ³ ½½·ÔÀÌ ºÎÁ·ÇÕ´Ï´Ù. ½ºÅ³½½·ÔÀº ÃÖ´ë 20°³) const unsigned char Err_FAILED_TO_GET_SKILLPROTOTYPE = 0x38; // ½ºÅ³ °ü¸® ½ÇÆÐ (½ºÅ³ ÇÁ·ÎÅä ŸÀÔ ¾ò±â ½ÇÆÐ. ½ºÅ³ ½ºÅ©¸³Æ®¸¦ È®ÀÎÇϽʽÿä.) const unsigned char Err_OVERED_MAX_LOCKCOUNT = 0x39; // ½ºÅ³ °ü¸® ½ÇÆÐ (ÃÖ´ë ¶ô Ä«¿îÆ®¸¦ ÃʰúÇß½À´Ï´Ù.) const unsigned char Err_OVERED_MAX_SKILL_LEVEL = 0x3a; // ½ºÅ³ °ü¸® ½ÇÆÐ (ÃÖ´ë ½ºÅ³ ·¹º§À» ÃʰúÇß½À´Ï´Ù.) const unsigned char Err_NOT_CURRENT_CLASS = 0x3b; // ½ºÅ³ °ü¸® ½ÇÆÐ (ÇöÀç Ŭ·¡½º°¡ ÀÍÈú ¼ö ¾ø´Â ½ºÅ³ÀÔ´Ï´Ù.) const unsigned char Err_DeleteQuest = 0x3c; // Äù½ºÆ® »èÁ¦ ½ÇÆÐ const unsigned char Err_AddBlockUser = 0x3d; // ºí·° Ãß°¡ ½ÇÆÐ const unsigned char Err_DelBlockUser = 0x3e; // ºí·° ÇØÁ¦ ½ÇÆÐ const unsigned char Success_Login = 0x64; // ·Î±×ÀÎ ¼º°ø const unsigned char Success_ConnectIP = 0x65; // ·Î±×ÀÎ ¾ÆÀÌÇÇ Ã¼Å©( Á¢¼Ó IPüũ ¼º°ø ) const unsigned char Success_NewAdmin = 0x66; // »õ·Î¿î °èÁ¤»ý¼º ¼º°ø const unsigned char Success_SearchCompleted = 0x67; // °Ë»ö¿¡ ´ëÇÑ Ã³¸®°¡ ¿Ï·á‰ç´Ù. const unsigned char Success_ModifyCharacter = 0x68; // ¿¡µðÆÃ ¿äû ¼º°ø const unsigned char Success_ChangeStatus = 0x69; // ij¸¯ÅÍ StatusÁ¤º¸ ¼öÁ¤ ¼º°ø const unsigned char Success_ChangePos = 0x6a; // ij¸¯ÅÍ À§Ä¡¹× Á¸À̵¿ÀÌ ¼º°øÇß½À´Ï´Ù. const unsigned char Success_DepositPasswd = 0x6b; // â°í ÆÐ½º¿öµå º¯°æ ¼º°ø. const unsigned char Success_UseName = 0x6c; // »ç¿ëÇÒ ¼ö Àִ ij¸¯ÅÍ À̸§ÀÔ´Ï´Ù. const unsigned char Success_CharacterRestore = 0x6d; // ij¸¯ÅÍ º¹±¸ ¼º°ø const unsigned char Success_AdminStore = 0x6e; // °ü¸®ÀÚ Ã¢°í¿¡ ¾ÆÀÌÅÛÀ» Ãß°¡Çϴµ¥ ¼º°øÇß½À´Ï´Ù. const unsigned char Success_UpdateAdminStore = 0x6f; // °ü¸®ÀÚ Ã¢°í ¾ÆÀÌÅÛ Á¤º¸º¯°æ ¼º°ø. const unsigned char Success_SaveCharacter = 0x70; // ij¸¯ÅÍ ÀúÀå ¼º°ø const unsigned char Success_ChkDuplicatedItem = 0x71; // Áߺ¹ ¾ÆÀÌÅÛ Ã³¸® ¼º°ø const unsigned char Success_SUCCESS = 0x72; // ½ºÅ³ °ü¸® ¼º°ø const unsigned char Success_DeleteQuest = 0x73; // Äù½ºÆ® »èÁ¦ ¼º°ø const unsigned char Success_StoreTabEdit = 0x74; // â°í ÅÇ ¼öÁ¤ ¼º°ø const unsigned char Success_AddBlockUser = 0x75; // ºí·° Ãß°¡ ¼º°ø const unsigned char Success_DelBlockUser = 0x76; // ºí·° ÇØÁ¦ ¼º°ø const unsigned char Success_NameChangeCount = 0x77; // ij¸¯¸í º¯°æ ±âȸ ¼öÁ¤ ¼º°ø }; namespace AuthorityMask { // ÆÐŶ»ç¿ë±ÇÇÑ ¸¶½ºÅ© Å×À̺í (Ack°¡ ¾Æ´Ñ ReqÀü¿ë) extern unsigned char AdminAuthority[PktCMD::PktEnd]; // ±ÇÇÑÀÌ 4°³À̸ç ÃÑ 4ºñÆ® »ç¿ë const unsigned char DEVELOPER = 0x01; const unsigned char MASTER = 0x02; const unsigned char GM = 0x04; const unsigned char SUPPORTER = 0x08; const unsigned char QUEST_MODE = 0x00; // ÀÎÁõ Àü¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â ±ÇÇÑ const unsigned char FREE_MODE = 0x0f; // ±ÇÇÑ Ã¼Å© ¹«Á¶°Ç Åë°ú }; struct PktResultAck : public PktBase { unsigned char m_Result; }; struct PktLogin : public PktBase { char m_szAccount[MAX_ACCOUNT]; char m_szPasswd [MAX_PASSWORD]; }; struct PktNewAdmin : public PktBase { char m_szAccount[MAX_ACCOUNT]; char m_szPasswd[MAX_PASSWORD]; char m_szName[MAX_NAME]; char m_szIP[MAX_IP]; unsigned char m_szLev; }; struct PktAdminListAck : public PktBase // µî·ÏµÇ¾îÀÖ´Â °èÁ¤¸ñ·ÏÀÌ´å { char m_szAccount[MAX_ACCOUNT]; // ID char m_szName[MAX_NAME]; // °ü¸®ÀÚ À̸§ char m_szIP[MAX_IP]; // °ü¸®ÀÚ Á¢¼ÓIP char m_szDate[MAX_DATE]; // °ü¸®ÀÚ µî·ÏÀÏ unsigned char m_szLevel; // °ü¸®ÀÚ µî±Þ }; struct PktDelAdmin : public PktBase // ¼±Åà °èÁ¤À» »èÁ¦ÇÑ´Ù. { char m_szAccount[MAX_ACCOUNT]; // Áö¿ì°íÀÚÇÏ´Â ID }; struct PktUpdateLevel : public PktBase // °èÁ¤ ·¹º§µî±Þ º¯°æ { char m_szAccount[MAX_ACCOUNT]; // ¼±Åà ID unsigned char m_szLevel; // º¯°æÇÒ ·¹º§ }; struct PktUpdateIP : public PktBase // °èÁ¤ Á¢¼ÓIP º¯°æ { char m_szAccount[MAX_ACCOUNT]; char m_szIP[MAX_IP]; // º¯°æÇÒ IP }; struct PktUpdatePasswd : public PktBase // °èÁ¤ ÆÐ½º¿öµå º¯°æ { char m_szAccount[MAX_ACCOUNT]; char m_szPasswd[MAX_PASSWORD]; // º¯°æÇÒ ÆÐ½º¿öµå }; struct PktLoginInfoAck : public PktBase // ·Î±×Àμº°ø½Ã »ó¼¼Á¤º¸¸¦ ³¯·ÁÁÖÀÚ.. { unsigned int m_UID; char m_szAccount [MAX_ACCOUNT]; char m_szPassword[MAX_PASSWORD]; unsigned char m_Level; char m_szName[MAX_NAME]; char m_szIP[MAX_IP]; char m_RegDate[11]; }; struct PktLogList : public PktBase // ·Î±×¸®½ºÆ® ¿äû { char m_szAccount[ MAX_ACCOUNT ]; }; struct PktLogListAck : public PktBase //ÇØ´ç °èÁ¤¿¡ ÇØ´çÇÏ´Â ·Î±×¸®½ºÆ®¸¦ º¸³»ÁØ´Ù. { unsigned int m_LogID; char m_Login[20]; char m_Logout[20]; char m_UseIP[16]; }; struct PktLogUseMessage : public PktBase //Ŭ¶óÀÌ¾ðÆ® Á¾·á½Ã »ç¿ë»çÀ¯¸¦ DB¿¡ ÀúÀåÇÑ´Ù. { char m_UseMessage[100]; //»ç¿ë»çÀ¯ }; struct PktDetailLog : public PktBase //»ó¼¼·Î±× Á¤º¸ { unsigned int m_LogID; // ÇØ´ç ·Î±× ¾ÆÀ̵𿡠¼ÓÇØÀÖ´Â »ó¼¼·Î±× ¸ñ·ÏÀ» ¿äûÇÑ´Ù. }; struct PktDetailLogAck : public PktBase { unsigned int m_DetailLogID; // µðÅ×ÀϷα׾ÆÀ̵ð char m_UpdateDate[20]; // ¾÷µ¥ÀÌÆ® ³¯ÀÚ unsigned int m_UpdateType; // ¾÷µ¥ÀÌÆ® Á¾·ù }; struct PktGetExitLogAck : public PktBase { char m_szExitLog[100]; // »ç¿ë»çÀ¯ }; struct PktBeforeAfter : public PktBase { unsigned int m_DetailLogID; // µðÅ×ÀÏ ·Î±×¾ÆÀ̵ð }; struct PktBeforeAfterAck : public PktBase { char m_szBefore [MAX_BEFORE]; // ¼öÁ¤Àü char m_szAfter [MAX_AFTER]; // ¼öÁ¤ÈÄ }; struct PktSearchID : public PktBase { enum Type { SearchUID = 1, SearchCID = 2 }; unsigned long m_dwRequestKey; unsigned char m_SearchType; unsigned long m_dwID; unsigned long m_dwServerGroup; unsigned int m_nOldServerID; }; struct PktSearchName : public PktBase { enum Type { Account = 1, Character = 2 }; unsigned long m_dwRequestKey; unsigned char m_SearchType; char m_szName[MAX_ACCOUNT]; unsigned long m_dwServerGroup; unsigned int m_nOldServerID; }; struct PktSearchResultAck : public PktBase { enum Type { Success = 1, NoData = 2, }; unsigned char m_Result; unsigned long m_dwRequestKey; }; struct PktAgentServerIndex : public PktBase { unsigned char m_ServerGroup; char m_szServerName[MAX_NAME]; }; struct PktSearchAck : public PktBase { unsigned long m_dwServerGroup; unsigned char m_CharCount; unsigned long m_dwRequestKey; unsigned char m_cOldServerGroup; }; struct PktGetCharacter : public PktBase { char m_szCharName[MAX_CHARNAME]; unsigned long m_dwServerGroup; unsigned long m_dwUID; unsigned long m_dwCID; unsigned long m_dwRequestKey; unsigned char m_cOldServerGroupID; }; struct PktGetCharacterAck : public PktBase { enum Type { // ¿î¿µ ¼­¹ö -> ¿î¿µ Ŭ¶óÀÌ¾ðÆ® CHAR_BASIC_DATA = 1, // ij¸¯ÅÍ Á¤º¸. ´ÙÀ½ Á¤º¸µéÀÌ µé¾î°¨. // CHAR_INFOST ij¸¯ÅÍ ±âº» Á¤º¸ // CHAR_POS ij¸¯ÅÍ À§Ä¡ Á¤º¸ // SKILL ij¸¯ÅÍ ½ºÅ³ Á¤º¸ // QUICK ij¸¯ÅÍ Äü ½½·Ô // EQUIP ij¸¯ÅÍ Àåºñ // INVEN ij¸¯ÅÍ Àκ¥ // EXTRA ij¸¯ÅÍ ¿©ºÐ // EXCHANGE ij¸¯ÅÍ ±³È¯ CHAR_EXTRA_DATA = 2, // ij¸¯ÅÍ Ãß°¡ Á¤º¸µé. ´ÙÀ½ Á¤º¸µéÀÌ µé¾î°¨. // CHAR_INFOEX ij¸¯ÅÍ Ãß°¡ Á¤º¸ // QUEST Äù½ºÆ® // HISTORY È÷½ºÅ丮 // CONFIG ¼³Á¤ // STORE_INFO â°í Á¤º¸ CHAR_FRIEND_DATA = 3, // ij¸¯ÅÍ Ä£±¸ Á¤º¸ CHAR_BAN_DATA = 4, // ij¸¯ÅÍ °ÅºÎ Á¤º¸ STORE_12_DATA = 5, // â°í 1, 2ÅÇ µ¥ÀÌÅÍ STORE_34_DATA = 6, // â°í 3, 4ÅÇ µ¥ÀÌÅÍ FINISH_GET_DATA = 7, // DBÁß°è¿¡¼­ ¿î¿µ¼­¹ö·Î µ¥ÀÌÅ͸¦ ÀüºÎ º¸³ÂÀ½. }; unsigned long m_dwRequestKey; unsigned long m_dwServerGroup; unsigned long m_dwUID; unsigned long m_dwCID; unsigned char m_cType; unsigned char m_cOldServerGroupID; }; struct PktSetCharacter : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwUID; unsigned long m_dwCID; unsigned long m_dwRequestKey; unsigned char m_cOldServerGroupID; }; // °ü¸®ÀÚ Ä³¸¯ÅÍ µ¶Á¡¸ðµå ÇØÁ¦ struct PktCloseCharacter : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwCID; unsigned long m_dwRequestKey; }; struct PktCloseCharacterAck : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwUID; unsigned long m_dwCID; unsigned long m_dwRequestKey; }; // ij¸¯ÅÍ Status Á¤º¸ struct CHAR_STATUS_ST { char m_cSex; // ij¸¯ÅÍ ¼ºº° char m_cHair; // ij¸¯ÅÍ ¸Ó¸® ¸ð¾ç char m_cFace; // ij¸¯ÅÍ ¾ó±¼ ¸ð¾ç char m_cRace; // ij¸¯ÅÍ Á¾Á· unsigned short m_nClass; // ij¸¯ÅÍ Å¬·¡½º unsigned long m_dwFame; // ¸í¼º unsigned long m_dwMileage; // ¸¶Àϸ®Áö char m_cLevel; // ij¸¯ÅÍ ·¹º§ unsigned short m_nIP; // Áõ°¡ Æ÷ÀÎÆ® unsigned short m_nSTR; // ij¸¯ÅÍ STR unsigned short m_nDEX; // ij¸¯ÅÍ DEX unsigned short m_nCON; // ij¸¯ÅÍ CON unsigned short m_nINT; // ij¸¯ÅÍ INT unsigned short m_nWIS; // ij¸¯ÅÍ WIS __int64 m_dwExp; // ij¸¯ÅÍ °æÇèÁ¡ char m_cChance; // ½ºÅ×ÀÌÅͽº ÀçºÐ¹è ±âȸ }; struct PktUpdateStatus : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwCID; unsigned long m_dwUID; unsigned long m_dwRequestKey; CHAR_STATUS_ST m_stStatus; }; struct CreateItemInfo { unsigned char m_cUpdateEquip; char m_szItemName[MAX_ITEM_NAME]; unsigned char m_cTakePos; unsigned char m_cXPos; unsigned char m_cYPos; unsigned char m_cZPos; unsigned char m_cNumOrDurability; // ÇöÀç ³»±¸µµ ¶Ç´Â °³¼ö unsigned short m_usRuneSocket[Item::EquipmentInfo::MAX_RUNE_SOCKET_NUM]; // ·é ¼ÒÄÏ unsigned char m_cMaxDurability; // ÃÖ´ë ³»±¸µµ unsigned char m_cCurrentSocketNum; // ÇöÀç ¼ÒÄÏ ¼ö unsigned char m_cMaxSocketNum; // ÃÖ´ë ¼ÒÄÏ ¼ö unsigned char m_cUpgradeLevel; // ¾÷±×·¹ÀÌµå ´Ü°è unsigned char m_cSeasonRecord; // ½ÃÁð ·¹ÄÚµå unsigned char m_cCoreLevel; // °¢¼ºÀÇ ·¹º§(½ÃÁð·¹ÄÚµå3ÀÌ»ó) unsigned char m_cSocket[Item::EquipmentInfo::MAX_SOCKET_NUM]; // ¼ÒÄÏ ³»¿ë short m_usAttribute[Item::Attribute::MAX_ATTRIBUTE_NUM]; // ¼Ó¼º CreateItemInfo() { m_cUpdateEquip = m_cMaxDurability = m_cCurrentSocketNum = 0; m_cMaxSocketNum = m_cUpgradeLevel = 0; m_cSeasonRecord = 1; // ½ÃÁð ·¹ÄÚµå´Â »ý¼º½Ã 1ÀÌ µðÆúÆ® m_cCoreLevel = 0; memset(m_usRuneSocket, 0, sizeof(unsigned short) * Item::EquipmentInfo::MAX_RUNE_SOCKET_NUM); memset(m_cSocket, 0, sizeof(unsigned char) * Item::EquipmentInfo::MAX_SOCKET_NUM); memset(m_usAttribute, 0, sizeof(unsigned short) * Item::Attribute::MAX_ATTRIBUTE_NUM); } void AdminStore_Out(char* Out_Data, unsigned long& dwLength) { unsigned long* dwStoreLength = reinterpret_cast(Out_Data); char* StoreInfo = static_cast(Out_Data + sizeof(unsigned long)); *reinterpret_cast(StoreInfo) = m_cNumOrDurability; StoreInfo += sizeof(unsigned char); CopyMemory(StoreInfo, m_usRuneSocket, sizeof(unsigned short) * Item::EquipmentInfo::MAX_RUNE_SOCKET_NUM); StoreInfo += sizeof(m_usRuneSocket); *reinterpret_cast(StoreInfo) = m_cMaxDurability; StoreInfo += sizeof(unsigned char); *reinterpret_cast(StoreInfo) = m_cCurrentSocketNum; StoreInfo += sizeof(unsigned char); *reinterpret_cast(StoreInfo) = m_cMaxSocketNum; StoreInfo += sizeof(unsigned char); *reinterpret_cast(StoreInfo) = m_cUpgradeLevel; StoreInfo += sizeof(unsigned char); *reinterpret_cast(StoreInfo) = m_cSeasonRecord; StoreInfo += sizeof(unsigned char); *reinterpret_cast(StoreInfo) = m_cCoreLevel; StoreInfo += sizeof(unsigned char); CopyMemory(StoreInfo, m_cSocket, sizeof(unsigned char) * Item::EquipmentInfo::MAX_SOCKET_NUM); StoreInfo += sizeof(m_cSocket); CopyMemory(StoreInfo, m_usAttribute, sizeof(short) * Item::Attribute::MAX_ATTRIBUTE_NUM); StoreInfo += sizeof(m_usAttribute); *dwStoreLength = (unsigned long)(StoreInfo - Out_Data); }; void AdminStore_In(char* In_Data) { char* StoreInfo = static_cast(In_Data + sizeof(unsigned long)); m_cNumOrDurability = *reinterpret_cast(StoreInfo); StoreInfo += sizeof(unsigned char); CopyMemory(m_usRuneSocket, StoreInfo, sizeof(unsigned short) * Item::EquipmentInfo::MAX_RUNE_SOCKET_NUM); StoreInfo += sizeof(m_usRuneSocket); m_cMaxDurability = *reinterpret_cast(StoreInfo); StoreInfo += sizeof(unsigned char); m_cCurrentSocketNum = *reinterpret_cast(StoreInfo); StoreInfo += sizeof(unsigned char); m_cMaxSocketNum = *reinterpret_cast(StoreInfo); StoreInfo += sizeof(unsigned char); m_cUpgradeLevel = *reinterpret_cast(StoreInfo); StoreInfo += sizeof(unsigned char); m_cSeasonRecord = *reinterpret_cast(StoreInfo); StoreInfo += sizeof(unsigned char); m_cCoreLevel = *reinterpret_cast(StoreInfo); StoreInfo += sizeof(unsigned char); CopyMemory(m_cSocket, StoreInfo, sizeof(unsigned char) * Item::EquipmentInfo::MAX_SOCKET_NUM); StoreInfo += sizeof(m_cSocket); CopyMemory(m_usAttribute, StoreInfo, sizeof(short) * Item::Attribute::MAX_ATTRIBUTE_NUM); StoreInfo += sizeof(m_usAttribute); } }; struct PktCreateItem : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwCID; unsigned long m_dwUID; unsigned long m_dwRequestKey; CreateItemInfo m_CreateItemInfo; }; struct PktCreateItemAck : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwCID; unsigned long m_dwUID; unsigned long m_dwRequestKey; unsigned __int64 m_ItemID; unsigned short m_PrototypeID; CreateItemInfo m_CreateItemInfo; }; struct PktUpdateItem : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwCID; unsigned long m_dwUID; unsigned long m_dwRequestKey; // ¾÷µ¥ÀÌÆ® ¾ÆÀÌÅÛ µ¥ÀÌÅÍ unsigned __int64 m_ItemUID; unsigned short m_ItemPrototypeID; CreateItemInfo m_UpdataItemInfo; }; struct PktUpdateItemAck : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwCID; unsigned long m_dwUID; unsigned long m_dwRequestKey; // ¾÷µ¥ÀÌÆ® ¾ÆÀÌÅÛ µ¥ÀÌÅÍ unsigned __int64 m_ItemUID; unsigned short m_ItemPrototypeID; CreateItemInfo m_UpdataItemInfo; }; struct PktRemoveItem : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwCID; unsigned long m_dwUID; unsigned long m_dwRequestKey; // Áö¿ï ¾ÆÀÌÅÛ µ¥ÀÌÅÍ unsigned __int64 m_ItemUID; unsigned short m_ItemPrototypeID; unsigned char m_cTakePos; unsigned char m_cXPos; unsigned char m_cYPos; unsigned char m_cZPos; }; struct PktRemoveItemAck : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwCID; unsigned long m_dwUID; unsigned long m_dwRequestKey; // Áö¿ï ¾ÆÀÌÅÛ µ¥ÀÌÅÍ unsigned __int64 m_ItemUID; unsigned short m_ItemPrototypeID; unsigned char m_cTakePos; unsigned char m_cXPos; unsigned char m_cYPos; unsigned char m_cZPos; }; struct PktSyncDeposit : public PktBase { enum Type { Tab12 = 1, Tab34 = 2, }; unsigned long m_dwUID; unsigned long m_dwRequestID; unsigned char m_cType; }; struct PktItemReset : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwUID; unsigned long m_dwCID; unsigned long m_dwRequest; unsigned char m_cTakePos; }; struct PktItemResetAck : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwUID; unsigned long m_dwCID; unsigned long m_dwRequest; unsigned char m_cTakePos; }; struct PktInvenGold : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwUID; unsigned long m_dwCID; unsigned long m_dwRequest; unsigned long m_dwGold; }; struct PktSkillEdit : public PktBase { enum Type { Create = 1, Edit = 2, Delete = 3 }; enum RESULT_CMD { NOT_ENOUGH_STAT = 0, NOT_ENOUGH_SKILLSLOT = 1, FAILED_TO_GET_SKILLPROTOTYPE = 2, OVERED_MAX_LOCKCOUNT = 3, OVERED_MAX_SKILL_LEVEL = 4, NOT_CURRENT_CLASS = 5, FAILED = 6, SUCCESS = 7 }; unsigned long m_dwServerGroup; unsigned long m_dwUID; unsigned long m_dwCID; unsigned long m_dwRequest; unsigned char m_cType; unsigned short m_wSkillID; char m_SkillLevel; char m_SkillLockCount; }; struct PktAddBlockUser : public PktBase { enum BLOCK_INFO { MAX_DESCRIPTION = 31, TARGET_ACCOUNT = 1, // °èÁ¤ ºí·° TARGET_CHARACTER = 2, // ij¸¯ÅÍ ºí·° TERM_TEMPORARY = 0, // Àӽà ºí·° TERM_PERMANANT = 1, // ¿µ±¸ ºí·° }; unsigned char m_cServerGroup; // ¼­¹ö ±×·ì unsigned long m_dwUID; // UID char m_szCharacterName[MAX_NAME]; // À̸§ (ij¸¯ÅÍ ºí·°ÀÏ °æ¿ì¿¡¸¸ ÇÊ¿ä) unsigned char m_cBlockTarget; // ºí·° ´ë»ó (°èÁ¤ºí·°, ij¸¯ÅÍºí·°) unsigned char m_cBlockTerm; // ºí·° ±â°£ (ÀÓ½Ãºí·°, ¿µ±¸ºí·°) char m_szBlockFinishDateTime[MAX_TIME]; // ºí·° Á¾·á ½Ã°¢ char m_szDescription[MAX_DESCRIPTION]; // ºí·° »çÀ¯ }; struct PktDelBlockUser : public PktBase { unsigned char m_cServerGroup; // ¼­¹ö ±×·ì unsigned long m_nidx; // Index ¹øÈ£ }; struct PktSearchBlock : public PktBase { unsigned long m_dwServerGroup; }; struct PktSearchBlockAck : public PktBase { unsigned char m_cServerGroup; unsigned long m_dwUID; char m_szClientID[MAX_ACCOUNT]; char m_szCharacterName[MAX_NAME]; unsigned char m_cBlockTarget; unsigned char m_cBlockTerm; char m_szBlockStartTime[MAX_TIME]; char m_szBlockFinishTime[MAX_TIME]; char m_szAdminName[MAX_ACCOUNT]; char m_szDescription[PktAddBlockUser::MAX_DESCRIPTION]; unsigned long m_nidx; }; struct PktChangePos : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwUID; unsigned long m_dwCID; unsigned long m_dwRequest; float m_fPosX; float m_fPosY; float m_fPosZ; char m_cZone; }; struct PktSetZoneList : public PktBase { enum TYPE { MAX_BUFFER = 3304, // zone_buffer * 30 ZONE_BUFFER = 109, // 100byte + (4byte * 2) + 1byte }; char m_ZoneBuffer[MAX_BUFFER]; }; struct PktDepositPasswd : public PktBase { enum TYPE { PASSWORD_LENGTH = 4, }; unsigned long m_dwServerGroup; unsigned long m_dwUID; unsigned long m_dwCID; unsigned long m_dwRequest; char m_cPasswd[PASSWORD_LENGTH]; }; struct PktCheckName : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwRequest; char m_szCharacterName[MAX_NAME]; }; struct PktChangeName : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwUID; unsigned long m_dwCID; unsigned long m_dwRequest; char m_szCharacterName[MAX_NAME]; }; struct PktDelCharList : public PktBase { enum TYPE { UID = 1, CID = 2 }; unsigned char m_cType; unsigned long m_dwValue; unsigned long m_dwServerGroup; }; struct PktDelCharListAck : public PktBase { enum TYPE { MAX_NAME = 16 }; unsigned long m_dwCID; unsigned long m_dwUID; unsigned char m_cNewServerGroupID; unsigned char m_cOldServerGroupID; char m_szInsertTime[MAX_TIME]; char m_szDeleteTime[MAX_TIME]; char m_szCharName[MAX_NAME]; unsigned int m_nLevel; unsigned long m_dwGold; }; struct PktCharRestore : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwUID; unsigned long m_dwCID; unsigned char m_cNewServerGroupID; unsigned char m_cOldServerGroupID; }; struct PktCharRestoreAck : public PktBase { unsigned long m_dwUID; unsigned long m_dwCID; unsigned char m_cNewServerGroupID; unsigned char m_cOldServerGroupID; }; struct PktAdminStoreInsert : public PktBase { enum TYPE { EMPTY_SERVERID = 200, MAX_ITEM_INFO = 100, }; unsigned char m_cServerIdx; char m_szOwnerName[MAX_NAME]; char m_szItemName[MAX_ITEM_NAME]; char m_binItemInfo[MAX_ITEM_INFO]; }; struct PktAdminStoreInsertAck : public PktBase { unsigned long m_dwStoreUID; unsigned char m_cServerIdx; char m_szOwnerName[MAX_NAME]; char m_szItemName[MAX_ITEM_NAME]; }; struct PktAdminStoreDelete : public PktBase { unsigned long m_dwStoreUID; }; struct PktGetAdminStoreItem : public PktBase { enum TYPE { EDIT = 1, CREATE = 2 }; unsigned char m_cType; unsigned long m_dwStoreUID; }; struct PktGetAdminStoreItemAck : public PktBase { enum TYPE { MAX_ITEM_INFO = 100, }; unsigned char m_cType; unsigned long m_dwStoreUID; char m_binItemInfo[MAX_ITEM_INFO]; }; struct PktUpdateAdminStore : public PktBase { enum TYPE { MAX_ITEM_INFO = 100, }; unsigned long m_dwStoreUID; char m_binItemInfo[MAX_ITEM_INFO]; }; struct PktDelCharacter : public PktBase { unsigned long m_dwCID; unsigned long m_dwUID; unsigned long m_dwServerGroup; unsigned long m_dwRequestKey; }; struct PktGuildSearch : public PktBase { enum SEARCH_TYPE { NONE = 0, ALLGROUP_ALLGUILD = 1, ALLGROUP_SPEGUILD_NAME = 2, ALLGROUP_SPEGUILD_GID = 3, SPEGROUP_ALLGUILD = 4, SPEGROUP_SPEGUILD_NAME = 5, SPEGROUP_SPEGUILD_GID = 6, }; unsigned char m_cSearchType; unsigned long m_dwServerGroup; char m_szSearchValue[MAX_PATH]; }; struct PktGuildSearchAck : public PktBase { unsigned long m_dwGID; char m_szName[MAX_NAME]; unsigned int m_dwLevel; unsigned long m_dwFame; unsigned long m_dwGold; unsigned int m_dwNation; unsigned long m_dwServerGroup; unsigned int m_nOldServerID; unsigned int m_dwMemberNum; }; struct PktRequestGuildMemberList : public PktBase { unsigned long m_dwGID; unsigned long m_dwServerGroup; }; struct PktRequestGuildMemberListAck : public PktBase { enum SIZE { MAX_NAME = 16, }; unsigned long m_dwGID; unsigned long m_dwCID; int m_nPosition; int m_nPositionInGuild; char m_szLeaveGuildTime[MAX_TIME]; char m_szCharName[MAX_NAME]; int m_nLevel; unsigned long m_dwFame; unsigned short m_nClass; unsigned long m_dwGold; }; struct PktGuildRestoreDataList : public PktBase { bool m_bAllGroupChk; unsigned long m_dwServerGroup; }; struct PktGuildRestoreDataListAck : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwGID; char m_szGuildName[MAX_NAME]; unsigned long m_dwGold; char m_szDeleteDate[MAX_TIME]; }; struct PktFortSearch : public PktBase { enum SEARCH_TYPE { NONE = 0, ALLSERVER_ALLZONE_ALLGUILD = 1, ALLSERVER_ALLZONE_SPEGUILD_NAME = 2, ALLSERVER_ALLZONE_SPEGUILD_GID = 3, ALLSERVER_SPEZONE_ALLGUILD = 4, ALLSERVER_SPEZONE_SPEGUILD_NAME = 5, ALLSERVER_SPEZONE_SPEGUILD_GID = 6, SPESERVER_ALLZONE_ALLGUILD = 7, SPESERVER_ALLZONE_SPEGUILD_NAME = 8, SPESERVER_ALLZONE_SPEGUILD_GID = 9, SPESERVER_SPEZONE_ALLGUILD = 10, SPESERVER_SPEZONE_SPEGUILD_NAME = 11, SPESERVER_SPEZONE_SPEGUILD_GID = 12, }; unsigned char m_cSearchType; unsigned long m_dwServerGroup; unsigned long m_dwZoneGroup; char m_szSearchValue[MAX_PATH]; }; struct PktFortSearchAck : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwCampID; unsigned long m_dwGuildID; char m_szGuildName[PktAdminMgr::MAX_NAME]; unsigned long m_dwHP; unsigned char m_cZone; unsigned char m_cChannel; unsigned short m_usObjectType; unsigned char m_cState; unsigned char m_cSubState; unsigned char m_cUpgradeStep; char m_szRemainTime[PktAdminMgr::MAX_TIME]; char m_szLastUseTime[PktAdminMgr::MAX_TIME]; char m_cRight; float m_fPosX; float m_fPosY; float m_fPosZ; unsigned char m_cMaterial; unsigned char m_cSiegeCount; }; struct PktMiningCamp : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwCampID; }; struct PktMiningCampAck : public PktBase { unsigned long m_dwCampID; unsigned short m_sMineralID; unsigned short m_sAmount; char m_cFlag; }; struct PktShopCamp : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwCampID; }; struct PktShopCampAck : public PktBase { unsigned long m_dwCampID; unsigned long m_dwServerGroup; unsigned long m_dwTempMoney; unsigned char m_cTax; char m_szItem[PktAdminMgr::MAX_ITEM_BUFFER]; }; struct PktShopCampGold : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwCampID; unsigned long m_dwTempMoney; }; struct PktShopCampTax : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwCampID; unsigned long m_dwTax; }; struct PktCastleSearch : public PktBase { enum SEARCH_TYPE { NONE = 0, ALLSERVER_ALLZONE_ALLCASTLE = 1, ALLSERVER_ALLZONE_SPECASTLE_ID = 2, ALLSERVER_SPEZONE_ALLCASTLE = 3, ALLSERVER_SPEZONE_SPECASTLE_ID = 4, SPESERVER_ALLZONE_ALLCASTLE = 5, SPESERVER_ALLZONE_SPECASTLE_ID = 6, SPESERVER_SPEZONE_ALLCASTLE = 7, SPESERVER_SPEZONE_SPECASTLE_ID = 8, }; unsigned char m_cSearchType; unsigned long m_dwServerGroup; unsigned long m_dwZoneGroup; char m_szSearchValue[MAX_PATH]; }; struct PktCastleSearchAck : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwCastleID; unsigned char m_cNation; unsigned char m_cZone; unsigned char m_cChannel; unsigned char m_cName; unsigned char m_cSiegeCount; unsigned char m_cInvincibleCount; unsigned short m_wTotalSiegeCount; unsigned long m_dwTotalTaxMoney; char m_cRight; float m_fPosInX; float m_fPosInY; float m_fPosInZ; float m_fPosOutX; float m_fPosOutY; float m_fPosOutZ; unsigned short m_wItemID; unsigned char m_cItemNum; }; struct PktCastleCreature : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwCastleID; }; struct PktCastleCreatureAck : public PktBase { unsigned long m_dwCreatureID; unsigned long m_dwCastleID; unsigned long m_dwOwnerID; unsigned long m_dwHP; unsigned short m_wObjectType; float m_fDirection; unsigned char m_cState; unsigned char m_cSubState; unsigned char m_cUpgradeStep; unsigned char m_cUpgradeType; char m_szRemainTime[PktAdminMgr::MAX_TIME]; char m_szLastUseTime[PktAdminMgr::MAX_TIME]; float m_fPosX; float m_fPosY; float m_fPosZ; }; struct PktItemQtyControl : public PktBase { enum TYPE { ADD = 0, DEL = 1, STATUS_REQUEST = 2, STATUS_ACK = 3, STATUS_ACK_END = 4 }; unsigned long m_dwItemTypeID; unsigned long m_dwItemQty; unsigned long m_dwCurrentItemQty; time_t m_tStartTime; time_t m_tEndTime; unsigned char m_cType; unsigned char m_cServerGroup; }; struct PktStoreGoldUpdate : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwUID; unsigned long m_dwCID; unsigned long m_dwRequest; unsigned long m_dwGold; }; struct PktUserBillingLog : public PktBase { enum SEARCH_TYPE { UID = 0, ACCOUNT = 1, }; unsigned char m_cSearchType; char m_szSearchValue[100]; COleDateTime m_tStartTime; COleDateTime m_tEndTime; }; struct PktUserBillingLogAck : public PktBase { char m_szClientID[20]; unsigned long m_dwUID; char m_szIP[MAX_IP]; unsigned int m_sServerIndex; char m_szFirstLoginTime[MAX_TIME]; char m_szLogoutTime[MAX_TIME]; }; struct PktGameAdmin : public PktBase { enum PKT_TYPE { REG = 1, EDIT = 2, DEL = 3, SEARCH = 4, ACK = 5, REFRESH = 6, }; unsigned char m_cPktType; unsigned long m_dwServerGroup; unsigned long m_dwUID; unsigned int m_nAdminLV; char m_szStartIP[MAX_IP]; char m_szEndIP[MAX_IP]; }; struct PktConnectAllServerz : public PktBase { enum SIZE { SERVERZ_NUM = 20 }; unsigned int m_nConnectedServerIndex[SERVERZ_NUM]; }; struct PktInterestedUser : public PktBase { enum PKT_TYPE { ADD_USER = 1, REMOVE_USER = 2, REQUEST_LIST = 3 }; unsigned char m_cPktType; char m_szAccount[MAX_ACCOUNT]; char m_szReason[MAX_PATH]; }; struct PktConnectionChk : public PktBase { enum PKT_TYPE { REQUEST_CHK = 0, INFO_ACK = 1 }; unsigned char m_cPktType; char m_szAccount[MAX_ACCOUNT]; unsigned long m_dwUID; char m_szLoginIP[MAX_IP]; unsigned int m_nServerGroup; char m_szLoginTime[MAX_TIME]; }; struct PktDuplicatedItem : public PktBase { enum PKT_TYPE { SEARCH = 0, RESULT_LIST = 1, CHK = 2 }; unsigned char m_cPktType; unsigned long m_dwServerGroup; char m_szInsertTime[MAX_TIME]; char m_szUpdateTime[MAX_TIME]; unsigned long m_dwUID; unsigned long m_dwCID; char m_szCharName[MAX_NAME]; unsigned __int64 m_dwItemUID; unsigned int m_nQty; bool m_bChk; }; struct DstUserInfo { unsigned long m_dwUID; unsigned long m_dwCID; unsigned long m_dwServerGroup; void Clear() { m_dwUID, m_dwCID, m_dwServerGroup = 0; } bool IsValid() { if(!(m_dwUID && m_dwCID)) { return false; } return true; } }; struct PktItemDistribute : public PktBase { CreateItemInfo m_stDistributeItem; unsigned char m_cUserNum; // DstUserInfo ±¸Á¶Ã¼°¡ °¡º¯ÇüÅ·ΠºÙ¾î¼­ »ç¿ëµÊ }; struct PktItemDistributeAck : public PktBase { enum RESULT_TYPE { SUCCESS = 1, FALED_TO_CREATE_TEMPINVEN_OBJ = 2, FALED_TO_GET_ITEMINFO = 3, FALED_TO_GET_GAMEDB = 4, FALED_TO_GET_TEMPINVEN_OBJ = 5, FALED_TO_SERIALIZE_IN = 6, FALED_TO_CREATE_ITEM_OBJ = 7, FALED_TO_SET_ITEM = 8, FALED_TO_SERIALIZE_OUT = 9, FALED_TO_UPDATE_TEMPINVEN = 10 }; unsigned char m_cResultType; DstUserInfo m_stUserInfo; }; struct PktGuildRight : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwGID; unsigned char m_aryRight[Guild::MAX_RIGHT_SIZE]; }; struct PktUnifiedCharInfo : public PktBase { enum PKT_TYPE { SEARCH_UID = 0, SEARCH_ACCOUNT = 1, RESULT_ACK = 2 }; unsigned char m_cPktType; unsigned long m_dwServerGroup; char m_szSearchValue[MAX_ACCOUNT]; unsigned long m_dwUID; unsigned int m_nOldServerGroup; unsigned long m_dwBeforeCID; unsigned long m_dwNewCID; char m_szBeforeCharName[MAX_NAME]; }; struct PktDetailCharInfo : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwCID; char m_szCharName[MAX_CHARNAME]; unsigned short m_sClass; unsigned long m_dwFame; unsigned long m_dwMileage; unsigned char m_cLevel; unsigned long m_dwGold; __int64 m_i64Exp; }; struct PktUnifiedGuildInfo : public PktBase { enum PKT_TYPE { SEARCH = 0, RESULT = 1 }; unsigned char m_cPktType; unsigned long m_dwServerGroup; unsigned long m_dwBeforeGID; unsigned int m_nOldServerGroupID; unsigned long m_dwNewGID; char m_szBeforeGName[MAX_NAME]; char m_szNewGName[MAX_NAME]; }; struct PktCancelExecuteQuest : public PktBase { unsigned long m_dwRequestKey; unsigned long m_dwServerGroup; unsigned long m_dwCID; unsigned short m_wQuestID; }; struct PktDeleteHistoryQuest : public PktBase { unsigned long m_dwRequestKey; unsigned long m_dwServerGroup; unsigned long m_dwCID; unsigned short m_wQuestID; }; struct PktUserNation : public PktBase { unsigned long m_dwRequestKey; unsigned long m_dwServerGroup; unsigned long m_dwUID; unsigned long m_dwCID; unsigned char m_cNation; }; struct PktShiftToUID : public PktBase { enum PKT_TYPE { ACCOUNT_TO_UID = 1, UID_TO_ACCOUNT = 2 }; unsigned char m_cPktType; char m_szAccount[MAX_ACCOUNT]; unsigned long m_dwUID; }; struct PktStoreTabEdit : public PktBase { unsigned long m_dwRequestKey; unsigned long m_dwServerGroup; unsigned long m_dwCID; unsigned int m_nTabNum; }; struct PktAmountOfGold : public PktBase { unsigned long m_dwServerGroup; unsigned __int64 m_i64Gold; }; struct PktGMLogMsg : public PktBase { enum PKT_TYPE { LOG_CONFIRM = 1, LOG_SELECT = 2, LOG_INSERT = 3, LOG_UPDATE = 4, LOG_DELETE = 5, LOG_REFRESH = 6 }; unsigned char m_cPktType; unsigned long m_dwLogID; unsigned long m_dwUID; unsigned long m_dwCID; unsigned long m_dwServerGroup; char m_szLogMsg[MAX_LOG]; char m_szEditDate[MAX_TIME]; char m_szAdminID[MAX_ACCOUNT]; }; struct PktNameChangeCount : public PktBase { unsigned long m_dwServerGroup; unsigned long m_dwCID; unsigned char m_cNameChangeCount; }; struct PktGuildMemberEdit : public PktBase { enum PktErr { FAIL_GUILD = 1, // ±æµå°¡ ¾øÀ»¶§. FAIL_CONNECT_CHAR = 2, // ij¸¯ÅͰ¡ Á¢¼Ó ÁßÀ϶§. FAIL_DB_UPDATE = 3, // DB ¾÷µ¥ÀÌÆ® ½ÇÆÐ. FAIL_MEMBER_DELETE = 4 // ±æµå ¸â¹ö »èÁ¦ ½ÇÆÐ. }; enum Const { TYPE_POSITION = 0, // Æ÷Áö¼Ç º¯°æ½Ã. TYPE_MEMBERDELETE = 1 // ±æµå ¸â¹ö »èÁ¦½Ã. }; unsigned long m_dwServerGroup; unsigned long m_dwGID; unsigned long m_dwCID; unsigned char m_cPosition; unsigned char m_cType; }; struct PktCharInfoTime : public PktBase { enum Type { SearchCID = 0, SearchName = 1 }; unsigned long m_dwServerGroup; unsigned long m_dwCID; unsigned char m_SearchType; char m_szName[MAX_CHARNAME]; }; struct PktCharInfoTimeResultAck : public PktBase { char m_CreateTime[MAX_TIME]; char m_UpdateTime[MAX_TIME]; }; }; #pragma pack( ) #endif