#pragma once #include "DNServerPacketCash.h" #include "Util.h" #pragma pack(push, 1) struct TQHeader { BYTE cThreadID; char cWorldSetID; UINT nAccountDBID; }; struct TAHeader { UINT nAccountDBID; int nRetCode; }; //-------------------------------------------------------------- // DB Packet //-------------------------------------------------------------- namespace DBPacket { struct TSkillCoolTime { int nSkillID; int nCoolTime; }; struct TItemCoolTime { INT64 biItemSerial; int nCoolTime; }; struct TDurabilityInfo { INT64 biSerial; USHORT wDur; }; struct TItemCountInfo { INT64 biSerial; short wCount; }; struct TExchangeItem { BYTE cSlotIndex; int nItemID; INT64 biSerial; INT64 biNewSerial; short wCount; }; struct TSendMailItem: public TItemInfo { INT64 biNewSerial; }; struct TAttachMail { int nMailDBID; char cItemAttachCount; // ÷ºÎ¾ÆÀÌÅÛ°³¼ö INT64 biAttachCoin; // ÷ºÎÄÚÀΰª #ifdef PRE_ADD_JOINGUILD_SUPPORT BYTE cMailType; #endif //#ifdef PRE_ADD_JOINGUILD_SUPPORT TItem Item[MAILATTACHITEMMAX]; }; struct TRequestTakeAttachInfo { int nMailDBID; char cAttachSlotIndex; // -1: 5Ä­ ¸ðµÎ ¹Þ±â, 0 - 4: °³º°¹Þ±â bool bAttachCoin; INT64 biSerial[MAILATTACHITEMMAX]; BYTE cSlotIndex[MAILATTACHITEMMAX]; }; struct TTakeAttachInfo { int nMailDBID; INT64 biAttachCoin; // ÷ºÎÄÚÀΰª #ifdef PRE_ADD_JOINGUILD_SUPPORT bool bAddGuildWare; #endif //#ifdef PRE_ADD_JOINGUILD_SUPPORT TItemInfo TakeItem[MAILATTACHITEMMAX]; }; struct TPetalInfo { char cSlotIndex; int nItemSN; INT64 biSerial; int nItemID; int nPetal; }; struct TPetalInfoEx: TPetalInfo { int nFKey; }; struct TCashFailItem { INT64 biPurchaseOrderID; INT64 biSenderCharacterDBID; bool bGift; int nItemSN; int nItemID; char cItemOption; int nPaidCashAmount; }; struct TModCashFailItemEx: TCashItemBase { INT64 biPurchaseOrderID; INT64 biSenderCharacterDBID; bool bGift; }; struct TMaterialItemInfo { DBDNWorldDef::ItemLocation::eCode Code; TItemInfo ItemInfo; }; struct TVehicleInfo: public TVehicleItem, TVehicleBase { int nPetIndex; __time64_t tLastHungerModifyDate; }; struct TAddMaterializedPet { BYTE cSlotIndex; int nItemID; INT64 biItemSerial; }; struct TItemIndexSerial { BYTE cSlotIndex; INT64 biItemSerial; }; struct TItemIDOption { int nItemID; char cOption; }; struct TItemSNIDOption { int nItemSN; int nItemID; char cOption; }; struct TReceiveGift { TReceiveGiftData GiftData; int nItemSN; DBPacket::TItemIDOption ItemIDOptions[PACKAGEITEMMAX]; bool bFail; }; }; struct TDBListCharData { #if defined(PRE_MOD_SELECT_CHAR) BYTE cWorldID; #endif // #if defined(PRE_MOD_SELECT_CHAR) INT64 biCharacterDBID; #if !defined(PRE_MOD_SELECT_CHAR) BYTE cCharIndex; #endif // #if defined(PRE_MOD_SELECT_CHAR) WCHAR wszCharacterName[NAMELENMAX]; BYTE cLevel; BYTE cJob; int nLastVillageMapID; int nLastSubVillageMapID; int nMapID; int nDefaultBody; // óÀ½ »ý¼º½Ã¿¡ ¼³Á¤ÇÑ equip int nDefaultLeg; int nDefaultHand; int nDefaultFoot; DWORD dwHairColor; DWORD dwEyeColor; DWORD dwSkinColor; bool bVillageFirstVisit; int nChecksum; int nEquipArray[EQUIPMAX]; int nCashEquipArray[CASHEQUIPMAX]; bool bDeleteFlag; __time64_t DeleteDate; __time64_t LastLoginDate; __time64_t CreateDate; #if defined( PRE_ADD_NEWCOMEBACK ) bool bCombackEffectItem; #endif #if defined( PRE_ADD_DWC ) BYTE cAccountLevel; #endif // #if defined( PRE_ADD_DWC ) }; struct TCreateCharacterItem { int nItemID; BYTE cCount; USHORT wDur; }; struct TRestraintForAccountAndCharacter { char cLevelCode; __time64_t _tStartDate; __time64_t _tEndDate; WCHAR wszRestraintReason[RESTRAINTREASONMAX]; int iReasonID; }; //######################################################################################################################################### // MAINCMD_ETC //######################################################################################################################################### // Query-Queue struct TDBQueryData : public DNTPacketHeader { public: void Set(const int iMainCmd, const int iSubCmd, const char *cBuf, const unsigned short uLen) { DN_ASSERT(iMainCmd < 255, "Invalid!"); DN_ASSERT(iSubCmd < 255, "Invalid!"); DN_ASSERT(NULL != cBuf, "Invalid!"); DN_ASSERT(uLen > 0, "Invalid!"); iLen = uLen; cMainCmd = iMainCmd; cSubCmd = iSubCmd; ::memcpy(buf, cBuf, uLen); } void Reset() { iLen = 0; cMainCmd = 0; cSubCmd = 0; } public: char buf[1]; // TDBQueryData ÀÇ ±¸Á¶¸¦ DNTPacket ±¸Á¶¿Í ¸ÂÃß±â À§ÇØ DNTPacket::buf ¿Í ÀϺη¯ À̸§À» µ¿ÀÏÇÏ°Ô ÇÏ¿´°í, ¹öÆÛ Å©±â´Â ÃÖ¼Ò 1 ·Î ÀüÁ¦ }; struct TDBQueryQueue { public: TDBQueryQueue() { Reset(); } bool IsEmpty() const { return(0 >= m_nSize); } bool IsFull() const { return(sizeof(m_Buffer) <= m_nSize); } bool CheckIntegrity() const { if (IsEmpty()) { return false; } if (GetSize() > sizeof(*this)) { return false; } return true; } void Reset() { m_nCheckSum = DBQUERYAUTOCHKSUM; // 20091022 ÆÐŶ ó¸® ½Ã ¹«°á¼º üũ¸¦ À§ÇØ Àӽà Ãß°¡ ??? (b4nfter) m_nSize = 0; /* // P.S.> IsEmpty() ·Î »çÀüüũ¸¦ öÀúÈ÷ ÇØ¾ßÇÔ for (int iIndex = 0 ; _countof(m_Queue) > iIndex ; ++iIndex) { m_Queue[iIndex].Reset(); } */ } bool Add(const int iMainCmd, const int iSubCmd, const char *cBuf, const unsigned short uLen) { DN_ASSERT(iMainCmd < 255, "Invalid!"); DN_ASSERT(iSubCmd < 255, "Invalid!"); DN_ASSERT(NULL != cBuf, "Invalid!"); if (MAINCMD_ETC == iMainCmd && DB::QUERY_UPDATEQUERYQUEUE == iSubCmd) { DN_ASSERT(0, "Invalid!"); // ÀÌ ÆÐŶ¸¸Àº Àý´ë DB ÀÛ¾÷À¸·Î ¿äûµÇ¾î¼­´Â ¾ÊµÊ } if (IsFull() || static_cast(sizeof(DNTPacketHeader) + uLen) > GetFreeBufferSize()) { DN_RETURN(false); } TDBQueryData* pQueryData = reinterpret_cast(&m_Buffer[m_nSize]); DN_ASSERT(NULL != pQueryData, "Invalid!"); pQueryData->Set(iMainCmd, iSubCmd, cBuf, uLen); m_nSize += (sizeof(DNTPacketHeader) + uLen); DN_ASSERT(GetTotalBufferSize() >= m_nSize, "Invalid!"); return true; } TDBQueryData* At(const int nCurPtr) { DN_ASSERT(GetTotalBufferSize() >= m_nSize, "Invalid!"); DN_ASSERT(m_nSize > static_cast(nCurPtr + sizeof(TDBQueryData)), "Invalid!"); return(reinterpret_cast(&m_Buffer[nCurPtr])); } const TDBQueryData* At(const int nCurPtr) const { return(const_cast(this)->At(nCurPtr)); } int GetTotalBufferSize() const { return(sizeof(m_Buffer)); } int GetFreeBufferSize() const { return(sizeof(m_Buffer) - m_nSize); } int GetSize() const { return(static_cast((sizeof(*this) - (sizeof(this->m_Buffer[0]) * (_countof(m_Buffer) - m_nSize)))&ULONG_MAX)); } public: unsigned int m_nCheckSum; // Àӽà ??? int m_nSize; char m_Buffer[DBQUERYSTREAMDATAMAX]; }; //QUERY_EVENTLIST struct TQEventList:public TQHeader { }; struct TEventInfo { int EventID; int WroldID; #if defined(PRE_ADD_WORLD_EVENT) #else WCHAR wszMapIndex[EVENTMAPSTRMAX]; #endif //#if defined(PRE_ADD_WORLD_EVENT) time_t _tBeginTime; time_t _tEndTime; union { struct { int EventType1; int EventType2; int EventType3; }; int EventType[3]; }; union { struct { int Att1; int Att2; int Att3; int Att4; int Att5; }; int Att[5]; }; }; struct TAEventList: public TAHeader { char cWorldSetID; BYTE cCount; TEventInfo EventList[EVENTLISTMAX]; }; #ifdef PRE_MOD_RESTRICT_IDENTITY_IP struct TQSimpleConfig : public TQHeader { }; struct TASimpleConfig : public TAHeader { BYTE cCount; SimpleConfig::ConfigData Configs[SimpleConfig::ConfigDataCountMax]; }; #endif //#ifdef PRE_MOD_RESTRICT_IDENTITY_IP struct TQGetDBSID : public TQHeader { }; struct TAGetDBSID : public TAHeader { int nServerID; }; // QUERY_LOGOUT struct TQLogout:public TQHeader { UINT nSessionID; #if defined (_KR) BYTE szMachineID[MACHINEIDMAX]; #endif }; // QUERY_LOGINCHARACTER struct TQLoginCharacter:public TQHeader { INT64 biCharacterDBID; UINT uiSessionID; WCHAR wszIP[IPLENMAX]; }; // QUERY_LOGOUTCHARACTER struct TQLogoutCharacter:public TQHeader { INT64 biCharacterDBID; UINT uiSessionID; char cViewCashEquipBitmap[VIEWCASHEQUIPMAX_BITSIZE]; // ÀϹÝ/ij½¬ÅÛ Àåºñ bitmapÀ¸·Î ó¸® }; // GameOption ---------------------------------------------------------------------- // QUERY_GETGAMEOPTION struct TQGetGameOption:public TQHeader { INT64 biCharacterDBID; }; struct TAGetGameOption: public TAHeader { INT64 biCharacterDBID; TGameOptions Option; }; //QUERY_SETGAMEOPTION struct TQSetGameOption:public TQHeader { INT64 biCharacterDBID; TGameOptions Option; }; struct TQUpdateSecondAuthPassword:public TQHeader { WCHAR wszOldPW[SecondAuth::Common::PWMaxLength+1]; WCHAR wszNewPW[SecondAuth::Common::PWMaxLength+1]; }; struct TAUpdateSecondAuthPassword: public TAHeader { char cFailCount; }; struct TQUpdateSecondAuthLock:public TQHeader { bool bIsLock; WCHAR wszPW[SecondAuth::Common::PWMaxLength+1]; // UnLock Àϰæ¿ì Password }; struct TAUpdateSecondAuthLock: public TAHeader { bool bIsLock; char cFailCount; }; struct TQInitSecondAuth:public TQHeader { }; struct TQValidateSecondAuth:public TQHeader { int nAuthCheckType; WCHAR wszPW[SecondAuth::Common::PWMaxLength+1]; }; struct TAValidateSecondAuth:public TAHeader { int nAuthCheckType; BYTE cFailCount; }; // Restraint ---------------------------------------------------------------------- struct TQRestraint:public TQHeader //QUERY_RESTRAINT { }; struct TARestraint: public TAHeader { BYTE cCount; TRestraint restraint[RESTRAINTMAX]; }; struct TQSetRestraint : public TQHeader //QUERY_SETRESTRAINT { BYTE cTargetCode; //DBDNWorldDef::RestraintTargetCode::eCode BYTE cRestraintCode; //DBDNWorldDef::RestraintTypeCode::eCode INT64 biCharacterDBID; //if target code "character" WCHAR wszRestraintreason[RESTRAINTREASONMAX]; //Reason String WCHAR wszRestraintreasonForDolis[RESTRAINTREASONFORDOLISMAX]; USHORT nDurationDays; //duration int nDolisReasonCode; //±âº»Àº 110 ¾îºäÁî·Î±×¿¡ ÀÇÇÑ Á¦Àç´Â 111 ÄÚµå ¹øÈ£°ü¸®´Â ¼Ö·ç¼ÇÆÀ(¿ø»ó¾¾ ¶Ç´Â ½Ã¿¬¾¾¿¡°Ô ¹®Àǹٶ÷) }; // QUERY_GET_KEYSETTINGOPTION struct TQGetKeySettingOption:public TQHeader { }; struct TAGetKeySettingOption: public TAHeader { TKeySetting sKeySetting; }; // QUERY_MOD_KEYSETTINGOPTION struct TQModKeySettingOption:public TQHeader { bool bUseDefault; TKeySetting sKeySetting; }; struct TAModKeySettingOption: public TAHeader { }; // QUERY_GET_PADSETTINGOPTION struct TQGetPadSettingOption:public TQHeader { }; struct TAGetPadSettingOption: public TAHeader { TPadSetting sPadSetting; }; // QUERY_MOD_PADSETTINGOPTION struct TQModPadSettingOption:public TQHeader { bool bUseDefault; TPadSetting sPadSetting; }; struct TAModPadSettingOption: public TAHeader { }; struct TQGetProfile : public TQHeader { INT64 biCharacterDBID; }; struct TAGetProfile : public TAHeader { TProfile sProfile; }; struct TQSetProfile : public TQHeader { INT64 biCharacterDBID; TProfile sProfile; }; struct TASetProfile : public TAHeader { TProfile sProfile; }; struct TQAddAbuseLog : public TQHeader { BYTE cAbuseCode; INT64 biCharacterDBID; USHORT unLen; WCHAR wszBuf[1024]; }; struct TQAddAbuseMonitor:public TQHeader { INT64 biCharacterDBID; int iCount; #if defined(PRE_ADD_ANTI_CHAT_SPAM) int iCount2; // äÆÃ ¾îºäÁî¿ë #endif }; struct TQDelAbuseMonitor:public TQHeader { INT64 biCharacterDBID; #if defined(PRE_ADD_ANTI_CHAT_SPAM) char cType; // 1-¿ÀÅä¾îºä¡, 2-äÆÃ¾îºä¡, 3-µÑ´Ù ¸®¼Â #endif }; struct TQGetAbuseMonitor:public TQHeader { INT64 biCharacterDBID; }; struct TAGetAbuseMonitor:public TAHeader { int iAbuseCount; int iCallCount; int iPlayRestraintValue; int iDBResetRestraintValue; }; struct TQGetWholeAbuseMonitor:public TQHeader { UINT nAccountDBID; #if defined(PRE_ADD_MULTILANGUAGE) char cSelectedLang; #endif //#if defined(PRE_ADD_MULTILANGUAGE) }; struct TAbuseMonitor { INT64 biCharacterDBID; int iAbuseCount; int iCallCount; int iPlayRestraintValue; int iDBResetRestraintValue; }; struct TAGetWholeAbuseMonitor:public TAHeader { #if defined(PRE_ADD_MULTILANGUAGE) char cSelectedLang; #endif //#if defined(PRE_ADD_MULTILANGUAGE) BYTE cCount; TAbuseMonitor Abuse[CHARCOUNTMAX]; }; // QUERY_DBRESULTERROR struct TADBResultError: public TAHeader { char cMainCmd; char cSubCmd; }; #if defined( _US ) struct TQKeepAlive:public TQHeader { }; #endif // #if defined( _US ) // QUERY_CHANGECHARACTERNAME // ij¸¯ÅÍ¸í º¯°æ struct TQChangeCharacterName : public TQHeader { INT64 nCharacterDBID; // ij¸¯ÅÍ DBID WCHAR wszOriginName[NAMELENMAX]; // ±âÁ¸ ij¸¯Å͸í WCHAR wszCharacterName[NAMELENMAX]; // º¯°æÇÒ Ä³¸¯Å͸í BYTE btChangeCode; // 1 = °ü¸®ÀÚº¯°æ, 2 = ij¸¯ÅÍ À̸§º¯°æ int nReservedPeriodDay; // º¯°æÀü ij¸¯ÅÍ À̸§ÀÌ º¸Á¸µÇ´Â ±â°£ INT64 biItemSerial; // »ç¿ë ¾ÆÀÌÅÛ ID int nNextPeriodDay; // ÃÖ±Ù À̸§ º¯°æ ÀÏÀڷκÎÅÍ ´ÙÀ½ À̸§ º¯°æÀÌ °¡´ÉÇÑ ±â°£ Á¦ÇÑ. ´ÜÀ§ : day }; struct TAChangeCharacterName : public TAHeader { char cWorldSetID; INT64 nCharacterDBID; // ij¸¯ÅÍ DBID INT64 biItemSerial; WCHAR wszOriginName[NAMELENMAX]; // ±âÁ¸ ij¸¯Å͸í WCHAR wszCharacterName[NAMELENMAX]; // º¯°æÇÑ Ä³¸¯Å͸í __time64_t tNextChangeDate; }; // QUERY_GETLIST_ETCPOINT struct TQGetListEtcPoint : public TQHeader { INT64 nCharacterDBID; }; struct TAGetListEtcPoint : public TAHeader { INT64 nCharacterDBID; INT64 biEtcPoint[DBDNWorldDef::EtcPointCode::Max]; }; struct TQAddEtcPoint :public TQHeader { INT64 biCharacterDBID; BYTE cType; INT64 biAddPoint; int nMapID; WCHAR wszIP[IPLENMAX]; }; struct TAAddEtcPoint:public TAHeader { BYTE cType; INT64 biLeftPoint; }; struct TQUseEtcPoint :public TQHeader { INT64 biCharacterDBID; BYTE cType; INT64 biUsePoint; int nMapID; WCHAR wszIP[IPLENMAX]; }; struct TAUseEtcPoint:public TAHeader { BYTE cType; INT64 biLeftPoint; }; struct TQSaveConnectDurationTime: public TQHeader { INT64 biCharacterDBID; char cCount; TTimeEvent Event[TIMEEVENTMAX]; }; struct TQModTimeEventDate:public TQHeader { INT64 biCharacterDBID; }; struct TQChangeJobCode : public TQHeader { INT64 biCharacterDBID; int nFirstJobIDBefore; int nFirstJobIDAfter; int nSecondJobIDBefore; int nSecondJobIDAfter; int nChannelID; int nMapID; char cSkillPage; }; struct TAChangeJobCode : public TAHeader { USHORT wSkillPoint; // ½ºÅ³ ¸®¼Â ÈÄ ½ºÅ³ Æ÷ÀÎÆ® Áõ°¡·®. USHORT wTotalSkillPoint; // ½ºÅ³ ¸®¼Â ÈÄ º¸À¯ÇÑ ÃÑ ½ºÅ³ Æ÷ÀÎÆ®. }; struct TQGetListVariableReset:public TQHeader { INT64 biCharacterDBID; }; struct TAGetListVariableReset:public TAHeader { BYTE cCount; CommonVariable::Data Data[CommonVariable::Type::Max]; }; struct TQModVariableReset:public TQHeader { INT64 biCharacterDBID; CommonVariable::Type::eCode Type; INT64 biValue; __time64_t tResetTime; }; #if defined(PRE_ADD_GAMEQUIT_REWARD) struct TQModNewbieRewardFlag:public TQHeader { bool bRewardFlag; }; #endif // #if defined(PRE_ADD_GAMEQUIT_REWARD) #if defined(PRE_ADD_CP_RANK) struct TQAddStageClearBest : public TQHeader { int nMapID; INT64 biCharacterDBID; DBDNWorldDef::ClearGradeCode::eCode Code; int nClearPoint; int nLimitLevel; }; struct TQGetStageClearBest : public TQHeader { int nMapID; }; struct TAGetStageClearBest : public TAHeader { TStageClearBest sLegendClearBest; TStageClearBest sMonthlyClearBest; }; struct TQGetStageClearPersonalBest : public TQHeader { int nMapID; INT64 biCharacterDBID; }; struct TAGetStageClearPersonalBest : public TAHeader { DBDNWorldDef::ClearGradeCode::eCode Code; int nClearPoint; }; struct TQInitStageCP : public TQHeader { char cInitType; }; #endif //#if defined(PRE_ADD_CP_RANK) // QUERY_MODCHARACTERSLOTCOUNT struct TQModCharacterSlotCount: public TQHeader { INT64 biCharacterDBID; }; //######################################################################################################################################### // MAINCMD_STATUS //######################################################################################################################################### // QUERY_SELECTCHARACTER struct TQSelectCharacter:public TQHeader { INT64 biCharacterDBID; #if !defined( PRE_PARTY_DB ) TPARTYID PartyID; #endif UINT nLastServerType; WCHAR wszAccountName[IDLENMAX]; }; const int nItemListMaxCount = EQUIPMAX + INVENTORYMAX + WAREHOUSEMAX + QUESTINVENTORYMAX + CASHEQUIPMAX + GLYPHMAX + TALISMAN_MAX + PERIODINVENTORYMAX + PERIODWAREHOUSEMAX; struct TASelectCharacter:public TAHeader { INT64 biCharacterDBID; TRestraintData RestraintData; // Á¦Àç°ü·Ãµ¥ÀÌŸ TKeySetting KeySetting; // Ű¼¼ÆÃ°ü·Ã TPadSetting PadSetting; #if !defined( PRE_PARTY_DB ) TPARTYID PartyID; #endif TGuildSelfView GuildSelfView; // ±æµå ½Ã°¢Á¤º¸ (°³ÀÎ) bool bIsSetSecondAuthPW; // 2Â÷ ÀÎÁõ ºñ¹Ð¹øÈ£ ¼³Á¤ ¿©ºÎ bool bIsSetSecondAuthLock; // 2Â÷ ÀÎÁõ °èÁ¤ Lock ¿©ºÎ #if defined(PRE_ADD_VIP) int nVIPTotalPoint; // ÃÑ VIP Æ÷ÀÎÆ® __time64_t tVIPEndDate; // VIP ±â°£ ³¡ ÀÏÀÚ bool bAutoPay; // 0=¼öµ¿°áÁ¦, 1=ÀÚµ¿°áÁ¦ #endif // #if defined(PRE_ADD_VIP) #if defined(_CH) bool bIntroducer; // Áß±¹ ÇÁ·Î¸ð¼Ç ÃßõÀÎ #endif // #if defined(_CH) TVehicleCompact VehicleEquip; TVehicleCompact PetEquip; TUserData UserData; #ifdef PRE_ADD_JOINGUILD_SUPPORT BYTE cGuildJoinLevel; //±æµå°¡ÀÔ ·¹º§(ÃÖÃÊÇѹø) bool bWasRewardedGuildMaxLevel; //±æµå¿¡¼­ ¸¸·¾ÂïÀ» °æ¿ì º¸»óÀ» ¹Þ¾Ò´ÂÁö Ç÷¡±× #endif //#ifdef PRE_ADD_JOINGUILD_SUPPORT #if defined(PRE_ADD_TALISMAN_SYSTEM) int nTalismanOpenFlag; #endif #if defined( PRE_ADD_CHARACTERCHECKSUM ) __time64_t tLastLoginDate; __time64_t tLastLogoutDate; UINT uiCheckSum; #endif // #if defined( PRE_ADD_CHARACTERCHECKSUM ) int nItemListCount; DBPacket::TMaterialItemInfo ItemList[nItemListMaxCount]; // Á¦ÀÏ ¹Ø¿¡ÀÖ¾î¾ßÇÔ´Ù~ }; // QUERY_UPDATEUSERDATA, QUERY_CHANGESERVERUSERDATA, QUERY_LASTUPDATEUSERDATA struct TQUpdateCharacter:public TQHeader { UINT uiDBRandomSeed; INT64 biCharacterDBID; int nMapIndex; // ÇöÀç ¸Ê¹øÈ£ int nLastVillageMapIndex; // ¸¶Áö¸· ¸¶À» ¸Ê¹øÈ£ int nLastSubVillageMapIndex; // ¸¶Áö¸· Sub¸¶À» ¸Ê¹øÈ£ char cLastVillageGateNo; // ¸¶Áö¸· ¸¶À» °ÔÀÌÆ® ¹øÈ£ int nPosX; // ÇöÀç XÁÂÇ¥ int nPosY; // ÇöÀç YÁÂÇ¥ int nPosZ; // ÇöÀç ZÁÂÇ¥ float fRotate; // Rotate int nGlyphDelayTime; int nGlyphRemainTime; bool bExecuteScheduleedTask; char cViewCashEquipBitmap[VIEWCASHEQUIPMAX_BITSIZE]; // ÀϹÝ/ij½¬ÅÛ Àåºñ bitmapÀ¸·Î ó¸® TQuickSlot QuickSlot[QUICKSLOTMAX]; // ´ÜÃà ½½·Ôâ (10°³¾¿ 2ÁÙ) DBPacket::TSkillCoolTime SkillCoolTime[SKILLMAX]; // ½ºÅ³ DBPacket::TSkillCoolTime SkillCoolTime2[SKILLMAX]; // ½ºÅ³2 DBPacket::TItemCoolTime Equip[EQUIPMAX]; // Àåºñâ #if defined(PRE_PERIOD_INVENTORY) DBPacket::TItemCoolTime Inventory[INVENTORYTOTALMAX]; // Àκ¥Ã¢ DBPacket::TItemCoolTime Warehouse[WAREHOUSETOTALMAX]; // â°íâ #else // #if defined(PRE_PERIOD_INVENTORY) DBPacket::TItemCoolTime Inventory[INVENTORYMAX]; // Àκ¥Ã¢ DBPacket::TItemCoolTime Warehouse[WAREHOUSEMAX]; // â°íâ #endif // #if defined(PRE_PERIOD_INVENTORY) DBPacket::TItemCoolTime CashEquip[CASHEQUIPMAX]; // Àåºñâ (ij½¬) DBPacket::TItemCoolTime CashInventory[CASHINVENTORYDBMAX]; // Àκ¥Ã¢ (ij½¬) #if defined( PRE_ITEMBUFF_COOLTIME ) DBPacket::TItemCoolTime ServerWare[WAREHOUSEMAX]; // ¼­¹öâ°í DBPacket::TItemCoolTime ServerWareCash[WAREHOUSEMAX]; // ¼­¹öâ°í(ij½¬) #endif }; struct TAUpdateCharacter:public TAHeader { }; struct TQMWTest:public TQHeader { int iCount; }; // QUERY_CHANGESTAGEUSERDATA struct TQChangeStageUserData:public TQHeader { INT64 biCharacterDBID; int nChannelID; int nMapID; TPARTYID PartyID; int nExp; INT64 biCoin; BYTE cRebirthCoin; // »ç¿ëÇÑ ÀÏ¹Ý ºÎȰ ÄÚÀÎ BYTE cPCBangRebirthCoin; // »ç¿ëÇÑ PC¹æ ºÎȰ ÄÚÀÎ short nCount; short nDeathCount; // »ç¸ÁȽ¼ö BYTE cDifficult; // ³­À̵µ INT64 biPetItemSerial; int nPetExp; INT64 biPickUpCoin; DBPacket::TDurabilityInfo ItemDurArr[INVENTORYMAX + EQUIPMAX]; }; struct TAChangeStageUserData:public TAHeader { BYTE cRebirthCoin; // »ç¿ëÇÑ ÀÏ¹Ý ºÎȰ ÄÚÀÎ BYTE cPCBangRebirthCoin; // »ç¿ëÇÑ PC¹æ ºÎȰ ÄÚÀÎ }; // QUERY_GETCHARACTERPARTIALYBYNAME, struct TQGetCharacterPartialyByName:public TQHeader { WCHAR wszName[NAMELENMAX]; BYTE cReqType; //eReqCharacterPartialy }; // QUERY_GETCHARACTERPARTIALYBYDBID struct TQGetCharacterPartialyByDBID:public TQHeader { INT64 biCharacterDBID; BYTE cReqType; //eReqCharacterPartialy }; struct TAGetCharacterPartialy:public TAHeader { INT64 biCharacterDBID; BYTE cClass; BYTE cLevel; BYTE cJob; BYTE cReqType; //eReqCharacterPartialy }; // QUERY_CHECKFIRSTVILLAGE struct TQCheckFirstVillage:public TQHeader { INT64 biCharacterDBID; }; // QUERY_LEVEL, // ·¹º§ struct TQLevel:public TQHeader { INT64 biCharacterDBID; BYTE cLevel; char cChangeCode; // CharacterLevelChangeCode int nChannelID; int nMapID; WCHAR wszCharName[NAMELENMAX]; }; // QUERY_EXP, // exp struct TQExp:public TQHeader { INT64 biCharacterDBID; int nExp; char cChangeCode; // eCharacterExpChangeCode int nChannelID; int nMapID; INT64 biFKey; // CharacterExpChangeCodeº° ÂüÁ¶ Ű. 1:QuestID, 2:PartyID or NULL, 3:NULL, 4:AuditLogID 5:ItemSerial }; // QUERY_COIN struct TQCoin:public TQHeader { INT64 biCharacterDBID; char cCoinChangeCode; // CoinChangeCode INT64 biChangeKey; // Äù½ºÆ®¾ÆÀ̵ð INT64 nChangeCoin; // ÄÚÀκ¯°æÄ¡¸¸ (+/-) int nChannelID; int nMapID; INT64 nTotalCoin; // µðºñÀúÀåÈÄ ¸®ÅϰªÀ̶û ºñ±³ÇϱâÀ§ÇØ }; // QUERY_WAREHOUSECOIN struct TQWarehouseCoin:public TQHeader { INT64 biCharacterDBID; char cCoinChangeCode; // CoinChangeCode INT64 nChangeCoin; // ÄÚÀκ¯°æÄ¡¸¸ (+/-) int nChannelID; int nMapID; INT64 nTotalCoin; // µðºñÀúÀåÈÄ ¸®ÅϰªÀ̶û ºñ±³ÇϱâÀ§ÇØ INT64 nTotalWarehouseCoin; // µðºñÀúÀåÈÄ ¸®ÅϰªÀ̶û ºñ±³ÇϱâÀ§ÇØ }; // QUERY_MAPINFO struct TQMapInfo:public TQHeader { INT64 biCharacterDBID; char cLastVillageGateNo; // ¸¶Áö¸· ¸¶À» °ÔÀÌÆ® ¹øÈ£ int nLastVillageMapIndex; // ¸¶Áö¸· ¸¶À» ¸Ê¹øÈ£ int nLastSubVillageMapIndex; // ¸¶Áö¸· Sub¸¶À» ¸Ê¹øÈ£ int nMapIndex; // ÇöÀç ¸Ê¹øÈ£ }; // QUERY_ADDCASHREBIRTHCOIN struct TQAddCashRebirthCoin: public TQHeader { INT64 biCharacterDBID; int nRebirthCount; int nRebirthPrice; int nRebirthCode; int nRebirthKey; }; // QUERY_CASHREBIRTHCOIN struct TQCashRebirthCoin:public TQHeader { INT64 biCharacterDBID; int nChannelID; int nMapID; WCHAR wszIP[IPLENMAX]; }; // QUERY_FATIGUE struct TQFatigue:public TQHeader { INT64 biCharacterDBID; char cFatigueTypeCode; // FatigueTypeCode int nChangeFatigue; // º¯°æÄ¡ int nChannelID; int nMapID; }; // QUERY_EVENTFATIGUE struct TQEventFatigue:public TQHeader { INT64 biCharacterDBID; int nChangeFatigue; // º¯°æÄ¡ bool bReset; // À̺¥Æ® ÇǷεµ ÃʱâÈ­ ¿©ºÎ. 0=ÃʱâÈ­ ¾Æ´Ô, 1=ÃʱâÈ­ char cInitTime; // À̺¥Æ® ÇǷεµ°¡ ÃʱâÈ­µÇ´Â ½Ã°£. 0 ~ 23 int nChannelID; int nMapID; }; // QUERY_JOB struct TQJob:public TQHeader { INT64 biCharacterDBID; BYTE cJob; }; // QUERY_GLYPHDELAYTIME // QUERY_GLYPHREMAINTIME struct TQGlyphAttributeTime: public TQHeader { INT64 biCharacterDBID; int nTime; }; // QUERY_NOTIFIER struct TQNotifier:public TQHeader { INT64 biCharacterDBID; char cNotifierSlot; // Notifier_ char cNotifierType; // DNNotifier::Type °ª int nID; }; // QUERY_DUNGEONCLEAR struct TQDungeonClear:public TQHeader { INT64 biCharacterDBID; char cType; int nMapIndex; }; // QUERY_ETERNITYITEM struct TQEternityItem:public TQHeader { INT64 biCharacterDBID; char cEternityCode; // eEternityItem int nEternityValue; }; // QUERY_COLOR struct TQColor: public TQHeader { INT64 biCharacterDBID; char cItemType; DWORD dwColor; }; #ifdef PRE_FIX_63822 struct TAColor : public TAHeader { }; #endif //#ifdef PRE_FIX_63822 // QUERY_REBIRTHCOIN struct TQRebirthCoin: public TQHeader { INT64 biCharacterDBID; BYTE cRebirthCoin; BYTE cPCBangRebirthCoin; }; struct TAEffectItem:public TAHeader { int iOffset; TEffectItemInfo ItemInfo; }; // QUERY_NESTCLEARCOUNT, // NEST Ŭ¸®¾î Ƚ¼ö UPSERT struct TQNestClearCount: public TQHeader { INT64 biCharacterDBID; int nMapIndex; char cClearType; // eNestClearType }; // QUERY_INITNESTCLEARCOUNT, // NEST ÁÖ°£ Ŭ¸®¾î Ƚ¼ö ÃʱâÈ­ struct TQInitNestClearCount: public TQHeader { INT64 biCharacterDBID; }; struct TAOwnChracterLevel : public TAHeader //MAINCMD_STATUS / QUERY_OWNCHRACTERLEVEL { BYTE cCount; TChracterLevel Level[CHARCOUNTMAX]; }; struct TQChangeSkillPage : public TQHeader { INT64 biCharacterDBID; char cSkillPage; }; #if defined( PRE_ADD_TOTAL_LEVEL_SKILL ) struct TQGetTotalLevelSkill : public TQHeader { INT64 biCharacterDBID; }; struct TAGetTotalLevelSkill : public TAHeader { int nTotalSkillLevel; TotalLevelSkill::TTotalLevelSkillData TotalSkill[TotalLevelSkill::Common::MAXSLOTCOUNT]; }; struct TQAddTotalLevelSkill : public TQHeader { INT64 biCharacterDBID; int nSlotIndex; int nSkillID; }; #endif #ifdef PRE_ADD_PRESET_SKILLTREE struct TQGetSKillPreSetList : public TQHeader { INT64 biCharacterDBID; }; struct TAGetSKillPreSetList : public TAHeader { TSkillSetIndexData SKillIndex[SKILLPRESETMAX]; TSkillSetPartialData SKills[SKILLMAX * SKILLPRESETMAX]; }; struct TQAddSkillPreSet : public TQHeader { INT64 biCharacterDBID; BYTE cIndex; WCHAR wszName[SKILLPRESETNAMEMAX]; BYTE cCount; TSkillSetPartialData SKill[SKILLMAX]; }; struct TAAddSkillPreSet : public TAHeader { }; struct TQDelSkillPreSet : public TQHeader { INT64 biCharacterDBID; BYTE cIndex; }; struct TADelSkillPreSet : public TAHeader { }; #endif //#ifdef PRE_ADD_PRESET_SKILLTREE //######################################################################################################################################### // MAINCMD_MISSION //######################################################################################################################################### // QUERY_MISSIONGAIN struct TQMissionGain:public TQHeader { INT64 biCharacterDBID; char MissionGain[MISSIONMAX_BITSIZE]; // ȹµæ¿©ºÎ }; // QUERY_MISSIONACHIEVE struct TQMissionAchieve:public TQHeader { INT64 biCharacterDBID; int nMissionID; char cMissionType; // eMissionType char MissionAchieve[MISSIONMAX_BITSIZE]; // ¸ñÇ¥´Þ¼º(on/off) }; // QUERY_SETDAILYMISSION, // ÀÏÀÏ ¹Ì¼Ç Á¤º¸ ÀúÀåÇϱâ (óÀ½ ½Ï~ ³Ö¾îÁÙ¶§) struct TQSetDailyMission:public TQHeader { INT64 biCharacterDBID; int nMissionIDs[DAILYMISSIONMAX]; }; // QUERY_SETWEEKLYMISSION, // ÁÖ°£ ¹Ì¼Ç Á¤º¸ ÀúÀåÇϱâ (óÀ½ ½Ï~ ³Ö¾îÁÙ¶§) struct TQSetWeeklyMission:public TQHeader { INT64 biCharacterDBID; int nMissionIDs[WEEKLYMISSIONMAX]; }; #if defined(PRE_ADD_MONTHLY_MISSION) // QUERY_SETMONTHLYMISSION, // ¿ù°£ À̺¥Æ® ¹Ì¼Ç Á¤º¸ ÀúÀåÇϱâ (óÀ½ ½Ï~ ³Ö¾îÁÙ¶§) struct TQSetMonthlyMission:public TQHeader { INT64 biCharacterDBID; int nMissionIDs[MONTHLYMISSIONMAX]; }; #endif // #if defined(PRE_ADD_MONTHLY_MISSION) // QUERY_SETWEEKENDEVENTMISSION, // ÁÖ¸» À̺¥Æ® ¹Ì¼Ç Á¤º¸ ÀúÀåÇϱâ (óÀ½ ½Ï~ ³Ö¾îÁÙ¶§) struct TQSetWeekendEventMission:public TQHeader { INT64 biCharacterDBID; int nMissionIDs[WEEKENDEVENTMISSIONMAX]; }; // QUERY_SETGUILDWARMISSION, // ±æµå ÃàÁ¦¹Ì¼Ç Á¤º¸ ÀúÀåÇϱâ struct TQSetGuildWarMission:public TQHeader { INT64 biCharacterDBID; int nMissionIDs[GUILDWARMISSIONMAX]; }; // QUERY_SETGUILDCOMMONMISSION, // ±æµå ÀÏ¹Ý ¹Ì¼Ç Á¤º¸ ÀúÀåÇϱâ struct TQSetGuildCommonMission:public TQHeader { INT64 biCharacterDBID; int nMissionIDs[GUILDCOMMONMISSIONMAX]; }; struct TQSetWeekendRepeatMission:public TQHeader { INT64 biCharacterDBID; int nMissionIDs[WEEKENDREPEATMISSIONMAX]; }; // QUERY_SETPCBANGMISSION, // ÀÏÀÏ ¹Ì¼Ç Á¤º¸ ÀúÀåÇϱâ (óÀ½ ½Ï~ ³Ö¾îÁÙ¶§) struct TQSetPCBangMission:public TQHeader { INT64 biCharacterDBID; int nMissionIDs[PCBangMissionMax]; // 0: silver, 1: gold }; // QUERY_MODDAILYWEEKLYMISSION, // ÀÏÀÏ/ÁÖ°£ ¹Ì¼Ç Á¤º¸ ÀúÀåÇϱâ struct TQModDailyWeeklyMission:public TQHeader { INT64 biCharacterDBID; char cDailyMissionType; // eDailyMissionType char cMissionIndex; TDailyMission Mission; int nMissionScore; }; struct TQClearMission : public TQHeader { INT64 biCharacterDBID; }; //######################################################################################################################################### // MAINCMD_APPELLATION //######################################################################################################################################### // QUERY_ADDAPPELLATION struct TQAddAppellation:public TQHeader { INT64 biCharacterDBID; int nAppellationID; char Appellation[APPELLATIONMAX_BITSIZE]; // ȣĪ }; // QUERY_SELECTAPPELLATION struct TQSelectAppellation:public TQHeader { INT64 biCharacterDBID; int nSelectAppellation; char cAppellationKind; // DBDNWorldDef::AppellationKind }; // QUERY_DELAPPELLATION struct TQDelAppellation:public TQHeader { INT64 biCharacterDBID; int nDelAppellation; // »èÁ¦ÇÒ ÄªÈ£(°³º° »èÁ¦) }; //######################################################################################################################################### // MAINCMD_SKILL //######################################################################################################################################### // QUERY_ADDSKILL, // ½ºÅ³ Ãß°¡ struct TQAddSkill:public TQHeader { INT64 biCharacterDBID; int nSkillID; // ½ºÅ³¾ÆÀ̵ð char cSkillLevel; int nCoolTime; // ÄðŸÀÓ char cSkillChangeCode; // SkillChangeCode INT64 biCoin; // ½ºÅ³À» ±¸ÀÔÇÑ °æ¿ì ±¸ÀÔ ºñ¿ë. ±¸ÀÔÇÑ °æ¿ì°¡ ¾Æ´Ï¸é 0À» ÀÔ·ÂÇÕ´Ï´Ù. int nChannelID; int nMapID; char cSkillPage; // ½ºÅ³ÆäÀÌÁö(½ºÅ³ÄÚµå) INT64 biCurrentCoin; INT64 biPickUpCoin; }; // QUERY_MODSKILLLEVEL, // ½ºÅ³·¹º§º¯°æ struct TQModSkillLevel:public TQHeader { INT64 biCharacterDBID; int nSkillID; // ½ºÅ³¾ÆÀ̵ð BYTE cSkillLevel; // ½ºÅ³·¹º§ int nCoolTime; // ÄðŸÀÓ USHORT wUsedSkillPoint; // ½ºÅ³·¹º§¿Ã¸®´Âµ¥ »ç¿ëÇÑ ½ºÅ³Æ÷ÀÎÆ® char cSkillChangeCode; // SkillChangeCode (2=½ºÅ³·¹º§¾÷ & ½ºÅ³Æ÷ÀÎÆ® »ç¿ë, 13=½ºÅ³·¹º§ Á¶Á¤ (by °ü¸®ÀÚ)) int nChannelID; int nMapID; char cSkillPage; }; // QUERY_INCREASESKILLPOINT, // ½ºÅ³Æ÷ÀÎÆ® Áõ°¡ struct TQIncreaseSkillPoint:public TQHeader { INT64 biCharacterDBID; USHORT wSkillPoint; int nChannelID; int nMapID; char cSkillPointChangeCode; char cSkillPage; }; // QUERY_DELSKILL struct TQDelSkill:public TQHeader { INT64 biCharacterDBID; int nSkillID; // ½ºÅ³¾ÆÀ̵ð char cSkillChangeCode; // SkillChangeCode (9=½ºÅ³ »èÁ¦ (µå¶ø), 10=½ºÅ³ »èÁ¦ (Äù½ºÆ®), 11=½ºÅ³ »èÁ¦ (À̺¥Æ® ¸¸·á), 12=½ºÅ³ »èÁ¦ (by °ü¸®ÀÚ)) bool bSkillPointBack; // ½ºÅ³ »èÁ¦ ÈÄ ½ºÅ³ Æ÷ÀÎÆ®¸¦ µ¹·Á ÁÙÁö ¿©ºÎ. 0=½ºÅ³Æ÷ÀÎÆ® µ¹·ÁÁÖÁö ¾ÊÀ½, 1=½ºÅ³ Æ÷ÀÎÆ® µ¹·ÁÁÜ int nChannelID; int nMapID; char cSkillPage; // ½ºÅ³ÆäÀÌÁö(½ºÅ³ÄÚµå) }; // QUERY_RESETSKILL struct TQResetSkill:public TQHeader { INT64 biCharacterDBID; int nChannelID; int nMapID; char cSkillPage; // ½ºÅ³ÆäÀÌÁö(½ºÅ³ÄÚµå) }; struct TAResetSkill: public TAHeader { USHORT wSkillPoint; // ½ºÅ³ ¸®¼Â ÈÄ º¸À¯ÇÑ ÃÑ ½ºÅ³ Æ÷ÀÎÆ® USHORT wTotalSkillPoint; // ½ºÅ³ ¸®¼Â ÈÄ º¸À¯ÇÑ ÃÑ ½ºÅ³ Æ÷ÀÎÆ® char cSkillPage; // ½ºÅ³ÆäÀÌÁö(½ºÅ³ÄÚµå) }; // QUERY_RESETSKILLBYSKILLIDS struct TQResetSkillBySkillIDS:public TQHeader { INT64 biCharacterDBID; int iSkillIDs[SKILLMAX]; int iChannelID; int iMapID; char cSkillPage; }; struct TAResetSkillBySkillIDS:public TAHeader { short nSkillPoint; short nTotalSkillPoint; char cSkillPage; }; struct TQDecreaseSkillPoint:public TQHeader { INT64 biCharacterDBID; short nDecreaseSkillPoint; int iChannelID; int iMapID; char cSkillPage; }; struct TQUseExpandSkillPage:public TQHeader { INT64 biCharacterDBID; int nSkillArray[DEFAULTSKILLMAX]; short wSkillPoint; }; struct TAUseExpandSkillPage:public TAHeader { }; struct TQSetSkillPoint:public TQHeader { INT64 biCharacterDBID; short nSkillPoint; char cSkillPage; }; //######################################################################################################################################### // MAINCMD_ITEM //######################################################################################################################################### struct TQAddMaterializedItem:public TQHeader { INT64 biCharacterDBID; BYTE cItemLocationIndex; // ¾ÆÀÌÅÛÀÌ À§Ä¡ÇÒ À妽º °ª DBDNWorldDef::AddMaterializedItem::eCode Code; INT64 biFKey; TItem AddItem; bool bStackableFlag; INT64 biItemPrice; // ¾ÆÀÌÅÛ °¡°Ý °¡Ä¡. ±¸ÀÔÇÏÁö ¾ÊÀº ¾ÆÀÌÅÛÀÎ °æ¿ì 0À» ÀÔ·ÂÇÕ´Ï´Ù. ´Ü, ÆÐŰÁö »óǰÀ» ¼±¹° ¶Ç´Â ±¸ÀÔÇÑ °æ¿ì, »óǰÀ» ±¸¼ºÇÏ´Â °¢ ¾ÆÀÌÅÛÀÇ °¡°ÝÀº »óǰ °¡°ÝÀÇ 1/nÀ» ÀÔ·ÂÇÕ´Ï´Ù INT64 biSenderCharacterDBID; // ¼±¹°ÀÎ °æ¿ì ¼±¹°ÇÑ Ä³¸¯ÅÍ ID BYTE cItemLocationCode; // 2=Àκ¥Å丮, 4=Äù½ºÆ® Àκ¥Å丮, 5=ij½¬ Àκ¥Å丮, 6=¼±¹°ÇÔ, 7=ij½¬ ÀÌÅ¢¸ÕÆ® BYTE cPayMethodCode; // NULL=±¸ÀԾƴÔ, 1=ÄÚÀÎ, 2=ij½¬, 3=Àû¸³±Ý, 4=DNAÆ÷ÀÎÆ® int iChannelID; int iMapIndex; WCHAR wszIP[IPLENMAX]; bool bMerge; // 0=¾ÆÀÌÅÛÀÌ mergeµÇÁö ¾ÊÀ½, 1=¾ÆÀÌÅÛÀÌ mergeµÊ INT64 biMergeTargetItemSerial; // »ý¼ºµÈ ¾ÆÀÌÅÛÀÌ ¸ñÀûÁö¿¡¼­ mergeµÇ´Â °æ¿ì, target ¾ÆÀÌÅÛÀÇ ¾ÆÀÌÅÛ ½Ã¸®¾ó DWORD dwPetPartsColor1; DWORD dwPetPartsColor2; int nPetSkillID1; int nPetSkillID2; char cPetCount; // Æê, Å»°Í ¸®½ºÆ® º¸³»Áà¾ßÇÔ DBPacket::TAddMaterializedPet PetList[Pet::Slot::Max]; }; struct TQUseItem:public TQHeader { DBDNWorldDef::UseItem::eUseItemCode Code; INT64 biItemSerial; short nUsedItemCount; int iChannelID; int iMapID; WCHAR wszIP[IPLENMAX]; bool bAllFlag; int iTargetLogItemID; char cTargetLogItemLevel; }; struct TQResellItem:public TQHeader { INT64 biCharacterDBID; INT64 biItemSerial; short nItemCount; INT64 biResellPrice; int iNpcID; int iChannelID; int iMapID; WCHAR wszIP[IPLENMAX]; bool bAllFlag; bool bRebuyFlag; #ifdef PRE_MOD_SELL_SEALEDITEM bool bBelongFlag; #endif //#ifdef PRE_MOD_SELL_SEALEDITEM }; struct TQEnchantItem:public TQHeader { INT64 biItemSerial; INT64 biCoin; // °­È­ ºñ¿ë bool bEnchantSuccessFlag; // 0=½ÇÆÐ, 1=¼º°ø bool bItemDestroyFlag; // °­È­°¡ ½ÇÆÐÇÑ °æ¿ì º»·¡ ¾ÆÀÌÅÛÀÌ ÆÄ±«µÇ¾ú´ÂÁö ¿©ºÎ. 0=ÆÄ±«µÇÁö ¾ÊÀ½, 1=ÆÄ±«µÊ BYTE cCurrentItemLevel; // °­È­ ÈÄ ·¹º§ char cCurrentItemPotential; // °­È­ ÈÄ ¾ÆÀÌÅÛ ÀáÀç·Â int iChannelID; int iMapID; int iNpcID; //Optional TItem NewItem; // °­È­ ½ÇÆÐ ½Ã ´ë½Å Áö±ÞÇÏ´Â ¾ÆÀÌÅÛ BYTE cMaterialCount; INT64 biCharacterDBID; // °­È­ ¼ÒÀ¯ÁÖ int nSupportItemID; // »ç¿ëÇÑ °­È­ º¸Á¶ ¾ÆÀÌÅÛÀÇ ItemID(¿¹..°­È­º¸È£Á©¸®) #if defined(PRE_ADD_EXCHANGE_ENCHANT) INT64 biExtractItemSerial; // °­È­ ÀÌÀüÇÒ¶§ ÃßÃâÇÑ ¿øº» ¾ÆÀÌÅÛ(¿ä³ðÀº DB¿¡¼­ ¾Ë¾Æ¼­ °­È­ ·¹º§ 0À¸·Î ¹Ù²ãÁÜ) #endif DBPacket::TItemCountInfo MaterialArray[INVENTORYMAX]; }; struct TQChangeItemLocation:public TQHeader { INT64 biCharacterDBID; INT64 biItemSerial; // À̵¿ÇÒ ¾ÆÀÌÅÛ °íÀ¯ ¹øÈ£ INT64 biNewItemSerial; // (optional) ¾ÆÀÌÅÛÀÇ ÀϺΠ¼ö·®À» À̵¿ÇÑ °æ¿ì »õ·Î »ý¼ºµÈ ¾ÆÀÌÅÛ °íÀ¯ ¹øÈ£. int iItemID; // À̵¿ÇÒ ¾ÆÀÌÅÛ ID DBDNWorldDef::ItemLocation::eCode Code; // À̵¿ ÈÄ ItemLocationCode 1=ÀÌÅ¢¸ÕÆ®, 2=Àκ¥Å丮, 3=â°í, 4=Äù½ºÆ® Àκ¥Å丮, 5=ij½¬ Àκ¥Å丮, 6=¼±¹°ÇÔ, 7=ij½¬ ÀÌÅ¢¸ÕÆ® BYTE cItemLocationIndex; // À̵¿ ÈÄ ¾ÆÀÌÅÛ À§Ä¡ À妽º short nItemCount; // À̵¿ÇÒ ¾ÆÀÌÅÛ °³¼ö int iChannelID; int iMapID; bool bVehicleParts; // À̵¿ÇÏ´Â ¾ÆÀÌÅÛÀÌ "Å»°Í or Æê¿¡ ÀåÂøÇÏ´Â ¾ÆÀÌÅÛ"ÀÎÁö ¿©ºÎ. 0=false, 1=true -> ÀÜìÀÌ(?)¸¸ true·Î! INT64 biVehicleSerial; // Å»°Í or Æê¿¡ ÀåÂøÇÏ´Â °æ¿ì -> Å»°Í or ÆêÀÇ ¾ÆÀÌÅÛ °íÀ¯ ¹øÈ£ char cVehicleSlotIndex; // Å»°Í or Æê¿¡ ÀåÂøÇÏ´Â °æ¿ì -> ÀåÂø À§Ä¡ bool bMerge; // 0=¾ÆÀÌÅÛÀÌ mergeµÇÁö ¾ÊÀ½, 1=¾ÆÀÌÅÛÀÌ mergeµÊ INT64 biMergeTargetItemSerial; // »ý¼ºµÈ ¾ÆÀÌÅÛÀÌ ¸ñÀûÁö¿¡¼­ mergeµÇ´Â °æ¿ì, target ¾ÆÀÌÅÛÀÇ ¾ÆÀÌÅÛ ½Ã¸®¾ó bool bMergeAll; // ¾ÆÀÌÅÛÀÌ mergeµÇ´Â °æ¿ì. 0=mergeµÇ´Â ¼ö·®ÀÌ originalÀÇ Àüü ¼ö·®ÀÌ ¾Æ´Ô, 1= mergeµÇ´Â ¼ö·®ÀÌ originalÀÇ Àüü ¼ö·®ÀÓ #if defined(PRE_ADD_SERVER_WAREHOUSE) int nGoldFee; // ¼­¹öâ°í °ñµå ¼ö¼ö·á #endif }; struct TQSwitchItemLocation: public TQHeader { INT64 biCharacterDBID; DBDNWorldDef::ItemLocation::eCode SrcCode; // À̵¿ ÈÄ ItemLocationCode 1=ÀÌÅ¢¸ÕÆ®, 2=Àκ¥Å丮, 3=â°í, 4=Äù½ºÆ® Àκ¥Å丮, 5=ij½¬ Àκ¥Å丮, 6=¼±¹°ÇÔ, 7=ij½¬ ÀÌÅ¢¸ÕÆ® BYTE cSrcSlotIndex; INT64 biDestItemSerial; DBDNWorldDef::ItemLocation::eCode DestCode; // À̵¿ ÈÄ ItemLocationCode 1=ÀÌÅ¢¸ÕÆ®, 2=Àκ¥Å丮, 3=â°í, 4=Äù½ºÆ® Àκ¥Å丮, 5=ij½¬ Àκ¥Å丮, 6=¼±¹°ÇÔ, 7=ij½¬ ÀÌÅ¢¸ÕÆ® BYTE cDestSlotIndex; INT64 biSrcItemSerial; }; struct TQModItemDurability:public TQHeader { INT64 biCharacterDBID; INT64 biTax; // ¾ÆÀÌÅÛÀ» ¼ö¸®ÇÏ´Â °æ¿ì ¼ö¸® ºñ¿ë. int iChannelID; int iMapID; short nCount; INT64 biCurrentCoin; INT64 biPickUpCoin; DBPacket::TDurabilityInfo ItemDurArr[INVENTORYMAX + EQUIPMAX]; }; struct TQModMaterializedItem:public TQHeader { INT64 biItemSerial; int iChannelID; int iMapID; int iModFieldBitmap; USHORT nItemDurability; BYTE cItemLevel; char cItemPotential; bool bSoudBoundFlag; BYTE cSealCount; BYTE cItemOption; WCHAR wszIP[IPLENMAX]; int nEnchantJewelID; // °­È­ÄÚµå ¾ÆÀÌÅÛ¾ÆÀ̵ð #if defined(PRE_MOD_POTENTIAL_JEWEL_RENEWAL) char cItemPotentialMoveCount; //ÀáÀç·Â ÀÌÀü Ƚ¼ö #endif // #if defined(PRE_MOD_POTENTIAL_JEWEL_RENEWAL) }; struct TQGetListMaterializedItem:public TQHeader { INT64 biCharacterDBID; }; struct TAGetListMaterializedItem:public TAHeader { short nItemCount; DBPacket::TMaterialItemInfo MaterialItemInfoArr[256]; // ÇöÀç ÃÖ´ë °³¼ö¸¦ ¸ô¶ó Àӽ÷Π256 ³Ö¾îµÐ´Ù. }; struct TQExchangeProperty: public TQHeader { INT64 biCharacterDBID; // ij¸¯ÅÍ ID DBPacket::TExchangeItem ExchangeItem[EXCHANGEMAX]; INT64 biExchangeCoin; // ±³È¯ÇÒ ÄÚÀÎ int nExchangeTax; // ±³È¯ ¼ö¼ö·á INT64 biTargetCharacterDBID; DBPacket::TExchangeItem TargetExchangeItem[EXCHANGEMAX]; INT64 biTargetExchangeCoin; int nTargetExchangeTax; // ±³È¯ ¼ö¼ö·á int nChannelID; int nMapID; UINT uiTargetAccountDBID; }; // QUERY_GETPAGEMATERIALIZEDITEM struct TQGetPageMaterializedItem: public TQHeader { INT64 biCharacterDBID; // ij¸¯ÅÍ ID int nPageNumber; // ÆäÀÌÁö ¹øÈ£. int nPageSize; // ÆäÀÌÁö »çÀÌÁî. }; struct TAGetPageMaterializedItem: public TAHeader { short wPageNumber; // ÆäÀÌÁö ¹øÈ£. int nTotalListCount; // ÆäÀÌÁö¹øÈ£ 1¹øÀ϶§¸¸ °ªÀÌ ÀÖ´Ù (Àüü °³¼ö) char cCount; TItem CashItem[CASHINVENTORYMAX]; }; // QUERY_UPSEQUIP struct TQUpsEquip: public TQHeader { INT64 biCharacterDBID; // ij¸¯ÅÍ ID char cItemLocation; char cEquipSlotIndex; INT64 biSerial; }; // QUERY_PUTONEPIECEON, // ¿øÇǽº ÀåÂø struct TQPutOnepieceOn: public TQHeader { INT64 biCharacterDBID; INT64 biOnepieceItemSerial; char cOnepieceCashEquipIndex; char cCashEquipTotalCount; BYTE cSubCashEquipIndexArray[CASHEQUIPMAX]; }; // QUERY_TAKECASHEQUIPMENTOFF, // ÇѲ¨¹ø¿¡ Å»Âø (cashequip -> cashinven) struct TQTakeCashEquipmentOff: public TQHeader { INT64 biCharacterDBID; char cCashEquipTotalCount; BYTE cCashEquipIndexArray[CASHEQUIPMAX]; }; // QUERY_GETPAGEVEHICLE struct TQGetPageVehicle: public TQHeader { INT64 biCharacterDBID; // ij¸¯ÅÍ ID int nPageNumber; // ÆäÀÌÁö ¹øÈ£. int nPageSize; // ÆäÀÌÁö »çÀÌÁî. }; struct TAGetPageVehicle: public TAHeader { short wPageNumber; // ÆäÀÌÁö ¹øÈ£. int nTotalListCount; // ÆäÀÌÁö¹øÈ£ 1¹øÀ϶§¸¸ °ªÀÌ ÀÖ´Ù (Àüü °³¼ö) char cCount; TVehicleCompact VehicleItem[VEHICLEINVENTORYPAGEMAX]; }; // QUERY_DELPETEQUIPMENT struct TQDelPetEquipment: public TQHeader { INT64 biBodySerial; INT64 biPartsSerial; WCHAR wszIp[IPLENMAX]; }; struct TADelPetEquipment: public TAHeader { }; // QUERY_MODPETSKINCOLOR struct TQModPetSkinColor: public TQHeader { INT64 biBodySerial; DWORD dwSkinColor; DWORD dwSkinColor2; }; struct TAModPetSkinColor: public TAHeader { }; // QUERY_MISSINGITEMLIST, struct TAMissingItemList: public TAHeader { char cCount; TItem MissingList[MISSINGITEMMAX]; }; // QUERY_RECOVERMISSINGITEM, struct TQRecoverMissingItem: public TQHeader { INT64 biCharacterDBID; //INT64 biItemSerial; char cItemLocationCode; BYTE cSlotIndex; TItem RecoverItem; }; struct TARecoverMissingItem: public TAHeader { char cItemLocationCode; BYTE cSlotIndex; TItem RecoverItem; }; struct TQGetListRepurchaseItem:public TQHeader { INT64 biCharacterDBID; }; struct TAGetListRepurchaseItem:public TAHeader { BYTE cCount; TRepurchaseItemInfo ItemList[Shop::Repurchase::MaxList]; }; struct TQDelExpiritem:public TQHeader { INT64 biCharacterDBID; }; struct TADelExpiritem:public TAHeader { BYTE cCount; INT64 biItemSerial[MAXDELEXPIREITEM]; }; struct TQDelCashItem: public TQHeader // QUERY_DELCASHITEM, { INT64 biItemSerial; short wCount; int nWatingTime; // Á¦°Å ´ë±â ±â°£. ´ÜÀ§ : ºÐ }; struct TADelCashItem: public TAHeader { INT64 biItemSerial; __time64_t tExpireDate; }; struct TQRecoverCashItem: public TQHeader // QUERY_RECOVERCASHITEM, { INT64 biItemSerial; short wCount; }; struct TARecoverCashItem: public TAHeader { INT64 biItemSerial; bool bEternity; __time64_t tExpireDate; }; #if defined( PRE_ADD_NAMEDITEM_SYSTEM ) struct TQCheckNamedItemCount: public TQHeader // QUERY_CHECK_NAMEDITEMCOUNT { int nItemID; BYTE cIndex; }; struct TACheckNamedItemCount: public TAHeader { int nItemID; int nCount; BYTE cIndex; }; #endif #if defined (PRE_ADD_EXCHANGE_POTENTIAL) struct TQMovePotential : public TQHeader { INT64 biCharacterDBID; INT64 biExtractSerial; char cExtractPotential; INT64 biInjectSerial; char cInjectPotential; char cMoveableLimitCount; int nMapID; }; struct TAMovePotential : public TAHeader { }; #endif //#if defined (PRE_ADD_EXCHANGE_POTENTIAL) // QUERY_MODDEGREEOFHUNGER struct TQModDegreeOfHunger : public TQHeader { INT64 biBodySerial; DWORD nDegreeOfHunger; }; struct TQItemExpire : public TQHeader { INT64 biCharacterDBID; INT64 biSerial; }; struct TAItemExpire : public TAHeader { INT64 biSerial; }; struct TQChangePetName : public TQHeader { INT64 itemSerial; INT64 petSerial; WCHAR name[NAMELENMAX]; }; struct TAChangePetName : public TAHeader { INT64 itemSerial; INT64 petSerial; WCHAR name[NAMELENMAX]; }; struct TQClearPetVehicleInven : public TQHeader { INT64 biCharacterDBID; }; struct TAClearPetVehicleInven : public TAHeader { }; struct TQModItemExpireDate : public TQHeader { int iMapID; WCHAR wszIP[IPLENMAX]; INT64 biItemSerial; INT64 biExpireDateItemSerial; INT64 biCharacterDBID; int nMin; }; struct TAModItemExpireDate : public TAHeader { INT64 biCharacterDBID; INT64 biItemSerial; int nMin; }; struct TQModPetExp : public TQHeader { INT64 biPetSerial; int nExp; }; struct TAModPetExp : public TAHeader { }; struct TQModPetSkill : public TQHeader { INT64 biItemSerial; char cSkillSlot; int nSkillID; }; struct TQModPetSkillExpand : public TQHeader { INT64 biItemSerial; }; struct TQModAdditiveItem:public TQHeader { INT64 biCharacterDBID; int nAdditiveItemID; INT64 biItemSerial; // ´É·ÂÄ¡ ¾ÆÀÌÅÛ INT64 biAdditiveSerial; // µðÀÚÀÎ ¾ÆÀÌÅÛ INT64 biMixItemSerial; // ÇÕ¼º±â // ¾ÆÀÌÅÛ Á¦°Å¿ë Á¤º¸ int nMapID; WCHAR wszIP[IPLENMAX]; }; struct TAModAdditiveItem:public TAHeader { INT64 biItemSerial; int nAdditiveItemID; int nInvenIndex; INT64 biAdditiveSerial; }; #if defined (PRE_ADD_COSRANDMIX) struct TQModRandomItem:public TQHeader { INT64 biCharacterDBID; INT64 biStuffSerialA; INT64 biStuffSerialB; INT64 biMixItemSerial; // ÇÕ¼º±â short wMixItemCount; INT64 biFee; DBDNWorldDef::AddMaterializedItem::eCode Code; TItem RandomItem; BYTE cItemLocationCode; int nChannelID; int nMapIndex; WCHAR wszIP[IPLENMAX]; }; struct TAModRandomItem:public TAHeader { INT64 biStuffSerialA; INT64 biStuffSerialB; INT64 biMixItemSerial; // ÇÕ¼º±â INT64 biFee; TItem RandomItem; }; #endif // QUERY_SAVEITEMLOCATIONINDEX, // P_SaveItemLocationIndex struct TQSaveItemLocationIndex: public TQHeader { INT64 biCharacterDBID; int nTotalInvenWareCount; // Àκ¥/â°í ±¸ºÐ¾øÀÌ ¼ø¼­¸¸ ÁöÄѼ­ ³ÖÀ¸¸é µÈ´Ù. DBPacket::TItemIndexSerial SaveList[INVENTORYMAX + WAREHOUSEMAX]; }; #if defined( PRE_ADD_LIMITED_SHOP ) struct TQGetLimitedShopItem: public TQHeader { INT64 biCharacterDBID; }; struct TAGetLimitedShopItem:public TAHeader { int nCount; LimitedShop::LimitedItemData ItemData[INVENTORYMAX + WAREHOUSEMAX]; }; struct TQAddLimitedShopItem: public TQHeader { INT64 biCharacterDBID; int nBuyCount; LimitedShop::LimitedItemData ItemData; }; struct TQResetLimitedShopItem: public TQHeader { INT64 biCharacterDBID; int nResetCycle; }; #endif struct TQDelEffectItem: public TQHeader { INT64 biCharacterDBID; INT64 nItemSerial; }; #if defined(PRE_ADD_TALISMAN_SYSTEM) struct TQModTalismanSlotOpenFlag: public TQHeader { INT64 biCharacterDBID; int nTalismanOpenflag; }; #endif #if defined(PRE_ADD_CHNC2C) struct TQGetGameMoney : public TQHeader { INT64 biCharacterDBID; char szSeqID[64]; }; struct TAGetGameMoney : public TAHeader { INT64 biCharacterDBID; INT64 biCoinBalance; char szSeqID[64]; }; struct TQKeepGameMoney : public TQHeader { INT64 biCharacterDBID; INT64 biReduceCoin; char szBookID[50]; char szSeqID[64]; }; struct TAKeepGameMoney : public TAHeader { char cWorldSetID; INT64 biCharacterDBID; INT64 biReduceCoin; char szSeqID[64]; }; struct TQTransferGameMoney : public TQHeader { INT64 biCharacterDBID; INT64 biAddCoin; char szBookID[50]; char szSeqID[64]; }; struct TATransferGameMoney : public TAHeader { char cWorldSetID; INT64 biCharacterDBID; INT64 biAddCoin; char szSeqID[64]; }; #endif //#if defined(PRE_ADD_CHNC2C) #if defined(PRE_ADD_EQUIPLOCK) struct TQLockItemInfo: public TQHeader //Àá±Ý, Àá±ÝÇØÁ¦ { INT64 biCharacterDBID; DBDNWorldDef::ItemLocation::eCode Code; BYTE cItemSlotIndex; int nItemID; INT64 biItemSerial; }; struct TALockItemInfo: public TAHeader //Àá±Ý ¿äû½Ã »ç¿ëÇÔ { DBDNWorldDef::ItemLocation::eCode Code; BYTE cItemSlotIndex; __time64_t tLockDate; }; struct TQUnLockRequsetItemInfo: public TQHeader //Àá±ÝÇØÁ¦ ¿äû½Ã »ç¿ëÇÔ { INT64 biCharacterDBID; DBDNWorldDef::ItemLocation::eCode Code; BYTE cItemSlotIndex; int nItemID; int nUnLockWaitTime; INT64 biItemSerial; }; struct TAUnLockRequestItemInfo: public TAHeader //Àá±ÝÇØÁ¦ ¿äû½Ã »ç¿ëÇÔ { DBDNWorldDef::ItemLocation::eCode Code; BYTE cItemSlotIndex; __time64_t tUnLockDate; __time64_t tUnLockRequestDate; }; struct TQGetListLockedItems: public TQHeader { INT64 biCharacterDBID; }; struct TAGetListLockedItems: public TAHeader { int nCount; TDBLockItemInfo LockItem[EQUIPMAX+ CASHEQUIPMAX]; }; #endif // #if defined(PRE_ADD_EQUIPLOCK) //######################################################################################################################################### // MAINCMD_QUEST //######################################################################################################################################### // QUERY_ADDQUEST struct TQAddQuest:public TQHeader { INT64 biCharacterDBID; char cIdx; TQuest Quest; }; // QUERY_DELQUEST struct TQDelQuest:public TQHeader { INT64 biCharacterDBID; char cIdx; int nQuestID; bool bComplete; // 0=´Ü¼ø Äù½ºÆ® »èÁ¦, 1=Äù½ºÆ® ¼öÇà ¿Ï·á·Î ÀÎÇÑ »èÁ¦ bool bRepeat; // 0=1ȸ Äù½ºÆ®, 1=¹Ýº¹ Äù½ºÆ® char CompleteQuest[COMPLETEQUEST_BITSIZE]; }; // QUERY_MODQUEST, // Äù½ºÆ® ¼öÁ¤ struct TQModQuest:public TQHeader { INT64 biCharacterDBID; char cQuestStatusCode; char cIndex; TQuest Quest; }; // QUERY_CLEARQUEST struct TQClearQuest:public TQHeader { INT64 biCharacterDBID; }; // QUERY_FORCECOMPLETEQUEST struct TQForceCompleteQuest : public TQHeader { public: TQForceCompleteQuest() { Reset(); } void Set(BYTE pThreadID, char pWorldID, UINT pAccountDBID, INT64 pCharacterDBID, int pQuestID, int pQuestCode, char pCompleteQuest[COMPLETEQUEST_BITSIZE]) { cThreadID = pThreadID; cWorldSetID = pWorldID; nAccountDBID = pAccountDBID; biCharacterDBID = pCharacterDBID; nQuestID = pQuestID; nQuestCode = pQuestCode; ::memcpy_s(CompleteQuest, sizeof(CompleteQuest), pCompleteQuest, sizeof(CompleteQuest)); } void Reset() { cThreadID = 0; cWorldSetID = 0; nAccountDBID = 0; biCharacterDBID = 0; nQuestID = 0; nQuestCode = 0; } int GetSize() const { return(static_cast(sizeof(*this))); } public: INT64 biCharacterDBID; // ij¸¯ÅÍ ID int nQuestID; // Äù½ºÆ® ID int nQuestCode; // Äù½ºÆ® ÄÚµå (0:ÀÏ¹Ý / 1:½Ã°£Á¦) char CompleteQuest[COMPLETEQUEST_BITSIZE]; // ¿Ï·áµÈ Äù½ºÆ® ¹ÙÀ̳ʸ® ¸ñ·Ï }; // QUERY_DELETE_CHARACTER_PERIODQUEST struct TQDeletePeriodQuest : public TQHeader { char cWorldID; INT64 biCharacterDBID; int nPeriodQuestType; int nQuestCount; int nQuestIDs[MAX_PERIODQUEST_LIST]; }; struct TADeletePeriodQuest : public TAHeader { char cWorldID; INT64 biCharacterDBID; __time64_t tAssignDate; int nPeriodQuestType; int nQuestCount; int nQuestIDs[MAX_PERIODQUEST_LIST]; }; // QUERY_GET_CHARACTER_PERIODQUESTDATE struct TQGetPeriodQuestDate : public TQHeader { char cWorldID; INT64 biCharacterDBID; }; struct TAGetPeriodQuestDate : public TAHeader { char cWorldID; INT64 biCharacterDBID; int nCount; TPeriodQuestDate PeriodQuestDate[PERIODQUEST_RESET_MAX]; }; // QUERY_GET_LISTCOMPLETE_EVENTQUEST struct TQGetListCompleteEventQuest : public TQHeader { char cWorldID; INT64 biCharacterDBID; }; struct TAGetListCompleteEventQuest : public TAHeader { char cWorldID; INT64 biCharacterDBID; int nCount; TCompleteEventQuest EventQuestList[EVENTQUESTMAX]; }; // QUERY_COMPLETE_EVENTQUEST struct TQCompleteEventQuest : public TQHeader { char cWorldID; INT64 biCharacterDBID; int nScheduleID; __time64_t tExpireDate; }; struct TACompleteEventQuest : public TAHeader { char cWorldID; INT64 biCharacterDBID; int nScheduleID; short wCompleteCount; }; // QUERY_GET_WORLDEVENTQUESTCOUNTER struct TQGetWorldEventQuestCounter : public TQHeader { int nScheduleID; }; struct TAGetWorldEventQuestCounter : public TAHeader { char cWorldSetID; int nScheduleID; int nCount; }; // QUERY_MOD_WORLDEVENTQUESTCOUNTER struct TQModWorldEventQuestCounter : public TQHeader { INT64 biCharacterDBID; int nScheduleID; int nCounterDelta; }; struct TAModWorldEventQuestCounter : public TAHeader { char cWorldSetID; int nScheduleID; int nCounterDelta; int nCountAfter; }; //######################################################################################################################################### // MAINCMD_MAIL //######################################################################################################################################### // QUERY_GETCOUNTRECEIVEMAIL struct TQGetCountReceiveMail:public TQHeader { INT64 biReceiverCharacterDBID; }; struct TAGetCountReceiveMail:public TAHeader { int iTotalMailCount; int iNotReadMailCount; int i7DaysLeftMailCount; }; // QUERY_GETPAGERECEIVEMAIL struct TQGetPageReceiveMail:public TQHeader { int iPageNumber; INT64 biReceiverCharacterDBID; }; struct TAGetPageReceiveMail:public TAHeader { int iBasicMailCount; int iTotalMailCount; int iNotReadMailCount; int i7DaysLeftMailCount; BYTE cMailCount; TMailBoxInfo sMail[MAILPAGEMAX]; }; // QUERY_SENDMAIL struct TQSendMail:public TQHeader { INT64 biSenderCharacterDBID; wchar_t wszReceiverCharacterName[MAILNAMELENMAX]; MailType::Delivery Code; wchar_t wszSubject[MAILTITLELENMAX]; wchar_t wszContent[MAILTEXTLENMAX]; INT64 biAttachCoin; int iChannelID; int iMapID; int nTax; // ¼ö¼ö·á BYTE cAttachItemCount; DBPacket::TSendMailItem AttachItemArr[MAILATTACHITEMMAX]; }; struct TASendMail:public TAHeader { UINT nReceiverAccountDBID; INT64 biReceiverCharacterDBID; int nReceiverTotalMailCount; int nReceiverNotReadMailCount; int nReceiver7DaysLeftMailCount; int nBasicMailCount; MailType::Delivery Code; INT64 biAttachCoin; int nTax; // ¼ö¼ö·á BYTE cAttachItemCount; DBPacket::TSendMailItem AttachItemArr[MAILATTACHITEMMAX]; }; // QUERY_SENDSYSTEMMAIL struct TQSendSystemMail:public TQHeader { wchar_t wszSenderName[MAILNAMELENMAX]; INT64 biReceiverCharacterDBID; DBDNWorldDef::MailTypeCode::eCode Code; INT64 biFKey; wchar_t wszSubject[MAILTITLELENMAX]; wchar_t wszContent[MAILTEXTLENMAX]; INT64 biAttachCoin; int iChannelID; int iMapID; bool bNewFlag; char cAttachItemCount; TItem sAttachItem[MAILATTACHITEMMAX]; }; struct TASendSystemMail:public TAHeader { INT64 biReceiverCharacterDBID; int nMailDBID; #if defined( PRE_ADD_NPC_REPUTATION_SYSTEM ) BYTE cWorldSetID; #endif // #if defined( PRE_ADD_NPC_REPUTATION_SYSTEM ) int iTotalMailCount; int iNotReadMailCount; int i7DaysLeftMailCount; }; // QUERY_READMAIL struct TQReadMail:public TQHeader { int iMailID; }; struct TAReadMail:public TAHeader { int nMailDBID; // mail db table id int iNotReadMailCount; wchar_t wszContent[MAILTEXTLENMAX]; __time64_t SendDate; INT64 biAttachCoin; char cDeliveryType; bool bNewFlag; // ¸®´º¾óµÈ ½Ã½ºÅÛ ¸ÞÀÏ ¿©ºÎ BYTE cMailType; BYTE cAttachItemCount; TItem sAttachItem[MAILATTACHITEMMAX]; }; // QUERY_GETLISTMAILATTACHMENT struct TQGetListMailAttachment: public TQHeader { INT64 biCharacterDBID; int nMailDBIDArray[MAILPAGEMAX]; }; struct TAGetListMailAttachment: public TAHeader { char cCount; DBPacket::TAttachMail MailAttachArray[MAILPAGEMAX]; }; // QUERY_TAKEATTACHMAILLIST struct TQTakeAttachMailList: public TQHeader { int nChannelID; int nMapID; WCHAR wszIP[IPLENMAX]; #ifdef PRE_ADD_JOINGUILD_SUPPORT UINT nGuildDBID; #endif //PRE_ADD_JOINGUILD_SUPPORT char cPageCount; DBPacket::TRequestTakeAttachInfo Info[MAILPAGEMAX]; }; struct TATakeAttachMailList: public TAHeader { char cPageCount; DBPacket::TTakeAttachInfo TakeMailList[MAILPAGEMAX]; }; // QUERY_TAKEATTACHMAIL struct TQTakeAttachMail: public TQHeader { int nChannelID; int nMapID; WCHAR wszIP[IPLENMAX]; #ifdef PRE_ADD_JOINGUILD_SUPPORT UINT nGuildDBID; #endif //PRE_ADD_JOINGUILD_SUPPORT DBPacket::TRequestTakeAttachInfo Info; }; struct TATakeAttachMail: public TAHeader { char cAttachSlotIndex; // -1: 5Ä­ ¸ðµÎ ¹Þ±â, 0 - 4: °³º°¹Þ±â DBPacket::TTakeAttachInfo TakeMail; }; // QUERY_DELMAIL struct TQDelMail:public TQHeader { INT64 biReceiverCharacterDBID; int iMailIDArray[MAILPAGEMAX]; }; struct TADelMail:public TAHeader { int iTotalMailCount; }; // QUERY_GETWILLSENDMAIL struct TQGetWillMails : public TQHeader { INT64 biCharacterDBID; }; struct TAGetWillMails : public TAHeader { BYTE cCount; WillSendMail::TWillSendInfo Mails[WillSendMail::Common::WIllMailPacketMax]; }; // QUERY_DELWILLSENDMAIL struct TQDelWillMail : public TQHeader { INT64 biCharacterDBID; int nMailID; }; // QUERY_SENDWISHMAIL, // Á¶¸£±â ¿ìÆí ¹ß¼Û struct TQSendWishMail: public TQHeader { INT64 biSenderCharacterDBID; WCHAR wszReceiverCharacterName[MAILNAMELENMAX]; WCHAR wszSubject[MAILTITLELENMAX]; WCHAR wszContent[MAILTEXTLENMAX]; int nWishLimitCount; // 1ÀÏ °¡´É Á¶¸£±â Ƚ¼ö int nPackageSN; char cWishListCount; DBPacket::TItemSNIDOption WishList[PACKAGEITEMMAX]; }; struct TASendWishMail: public TAHeader { UINT nReceiverAccountDBID; INT64 biReceiverCharacterDBID; int nReceiverTotalMailCount; int nReceiverNotReadMailCount; int nReceiver7DaysLeftMailCount; }; // QUERY_READWISHMAIL, // Á¶¸£±â ¿ìÆí Àбâ struct TQReadWishMail: public TQHeader { int nMailID; }; struct TAReadWishMail: public TAHeader { int nMailDBID; // mail db table id wchar_t wszContent[MAILTEXTLENMAX]; __time64_t SendDate; INT64 biPurchaseOrderID; int nNotReadMailCount; bool bNewFlag; // ¸®´º¾óµÈ ½Ã½ºÅÛ ¸ÞÀÏ ¿©ºÎ int nPackageSN; char cWishListCount; DBPacket::TItemSNIDOption WishList[PACKAGEITEMMAX]; }; #if defined(PRE_SPECIALBOX) // QUERY_ADDEVENTREWARD struct TQAddEventReward: public TQHeader { BYTE cReceiveTypeCode; // SpecialBox::ReceiveTypeCode BYTE cTargetTypeCode; // SpecialBox::TargetTypeCode WCHAR wszAccountName[IDLENMAX]; INT64 biCharacterDBID; WCHAR wszCharacterName[NAMELENMAX]; BYTE cTargetClassCode; BYTE cTargetMinLevel; BYTE cTargetMaxLevel; int nEventNameUIString; int nSenderNameUIString; int nContentUIString; int nRewardCoin; char cEventRewardTypeCode; // eEventRewardType BYTE cCount; TSpecialBoxItemInfo EventRewardItems[SpecialBox::Common::RewardSelectMax]; }; struct TAAddEventReward: public TAHeader { int nEventRewardID; int nEventTotalCount; }; // QUERY_GETCOUNTEVENTREWARD struct TQGetCountEventReward: public TQHeader { INT64 biCharacterDBID; }; struct TAGetCountEventReward: public TAHeader { int nEventTotalCount; }; // QUERY_GETLISTEVENTREWARD struct TQGetListEventReward: public TQHeader { INT64 biCharacterDBID; BYTE cClassCode; int nLevel; }; struct TAGetListEventReward: public TAHeader { BYTE cCount; TSpecialBoxInfo SpecialBoxInfo[SpecialBox::Common::ListMax]; }; // QUERY_GETLISTEVENTREWARDITEM struct TQGetListEventRewardItem: public TQHeader { int nEventRewardID; INT64 biCharacterDBID; }; struct TAGetListEventRewardItem: public TAHeader { int nEventRewardID; char cCharacterCount; BYTE cCount; TSpecialBoxItemInfo SpecialBoxItem[SpecialBox::Common::RewardSelectMax]; }; // QUERY_ADDEVENTREWARDRECEIVER struct TQAddEventRewardReceiver: public TQHeader { int nEventRewardID; int nItemID; INT64 biCharacterDBID; }; struct TAAddEventRewardReceiver: public TAHeader { int nEventRewardID; int nItemID; }; #endif // #if defined(PRE_SPECIALBOX) #ifdef PRE_ADD_JOINGUILD_SUPPORT // QUERY_GUILDSUPPORT_REWARDINFO struct TQGuildSupportRewardInfo:public TQHeader { INT64 biCharacterDBID; }; struct TAGuildSupportRewardInfo:public TAHeader { INT64 biCharacterDBID; bool bWasGuildSupportRewardFlag; BYTE cJoinGuildLevel; }; // QUERY_SENDGUILDMAIL struct TQSendGuildMail:public TQHeader { wchar_t wszSenderName[MAILNAMELENMAX]; UINT nReceiverAccountDBID; INT64 biReceiverCharacterDBID; INT64 biAchivementCharacterDBID; DBDNWorldDef::MailTypeCode::eCode Code; INT64 biFKey; wchar_t wszSubject[MAILTITLELENMAX]; wchar_t wszContent[MAILTEXTLENMAX]; INT64 biAttachCoin; int iChannelID; int iMapID; bool bNewFlag; char cAttachItemCount; TItem sAttachItem[MAILATTACHITEMMAX]; }; struct TASendGuildMail:public TAHeader { UINT nReceiverAccountDBID; INT64 biReceiverCharacterDBID; int nMailDBID; BYTE cWorldSetID; int iTotalMailCount; int iNotReadMailCount; int i7DaysLeftMailCount; }; #endif //#ifdef PRE_ADD_JOINGUILD_SUPPORT //######################################################################################################################################### // MAINCMD_MARKET //######################################################################################################################################### // QUERY_MARKETTAX struct TQMarketTax:public TQHeader { INT64 biCharacterDBID; int nMarketRegisterTax; // ¸¶ÄÏ ´©Àû µî·Ï ¼ö¼ö·á int nMarketSellTax; // ¸¶ÄÏ ´©Àû ÆÇ¸Å ¼ö¼ö·á }; // QUERY_GETPAGETRADE struct TQGetPageTrade: public TQHeader { short wPageNum; // ÆäÀÌÁö ¹øÈ£ char cMinLevel; // ÃÖ¼Ò·¹º§ char cMaxLevel; // ÃÖ´ë·¹º§ char cItemGrade[ITEMRANK_MAX]; // µî±ÞºÐ·ù char cJob; // Á÷¾÷±¸ºÐ short nMainType; // ±âº»ºÐ·ù char cDetailType; // »ó¼¼ºÐ·ù WCHAR wszSearchWord1[SEARCHLENMAX]; // °Ë»ö´Ü¾î WCHAR wszSearchWord2[SEARCHLENMAX]; // °Ë»ö´Ü¾î WCHAR wszSearchWord3[SEARCHLENMAX]; // °Ë»ö´Ü¾î char cSortType; // eSortType char cItemExchange[ITEMCATAGORY_MAX]; // ¾ÆÀÌÅÛ Ä«Å×°í¸® WCHAR wszSearchItemName[SEARCHLENMAX]; // ¾ÆÀÌÅÛ À̸§ char cJobCode[ITEMJOB_MAX]; // Á÷¾÷ ÄÚµå bool bCash; // 0=ÀÏ¹Ý ¾ÆÀÌÅÛ, 1=ij½¬ ¾ÆÀÌÅÛ char cMethodCode; // 1=°ÔÀÓ¸Ó´Ï, 3=ÆäÅ» }; struct TAGetPageTrade: TAHeader { int nMarketTotalCount; char cMarketCount; TMarketInfo MarketInfo[MARKETMAX]; }; // QUERY_GETLISTMYTRADE struct TQGetListMyTrade:public TQHeader { INT64 biCharacterDBID; }; struct TAGetListMyTrade: public TAHeader { short wSellingCount; // ÆÇ¸ÅÁß short wExpiredCount; short wWeeklyRegisterCount; // Åä¿äÀÏ AM 04:00 ¸¦ ±âÁØÀ¸·Î ÀÏÁÖÀϰ£ µî·ÏÇÑ °Å·¡ Ƚ¼ö / Áö±Ýµî·ÏÇÒ¼öÀִ Ƚ¼ö short wRegisterItemCount; // ¿Ã·Á³õÀº ¾ÆÀÌÅÛ °¹¼ö char cMarketCount; TMyMarketInfo MarketInfo[MYMARKETMAX]; }; // QUERY_ADDTRADE struct TQAddTrade: public TQHeader { INT64 biCharacterDBID; // ij¸¯ÅÍ ID short wRegisterMaxCount; // µî·Ï °¡´É Ƚ¼ö short wItemRegisterMaxCount; // µî·Ï °¡´É °³¼ö char cInvenType; // eItemPositionType BYTE cInvenIndex; // Àκ¥À妽º char cSkillUsingType; // ÆÇ¸Å °¡°Ý int nPrice; // °Å·¡¼Òµî·Ï ¼ö¼ö·á int nSellTax; // °Å·¡¼º¸³ ¼ö¼ö·á (ÆÈ¸°¹°°Ç°ª ãÀ»¶§ ¼ö¼ö·á) char cSellPeriod; // ÆÇ¸Å±â°£ WCHAR wszItemName[EXTDATANAMELENMAX]; // ¾ÆÀÌÅÛ À̸§ short nMainType; // ¸ÞÀΟÀÔ char cDetailType; // »ó¼¼Å¸ÀÔ char cItemGrade; // 0=³ë¸Ö, 1=¸ÅÁ÷, 2=·¹¾î, 3=¿¡ÇÈ, 4=À¯´ÏÅ©, 5=È÷·ÎÀÍ char cLimitLevel; // ¾ÆÀÌÅÛÀ» »ç¿ëÇϱâ À§ÇÑ ÃÖ¼Ò Ä³¸¯ÅÍ ·¹º§ char cJob; // Á÷¾÷ ÄÚµå int nItemID; // µî·ÏÇÑ ¾ÆÀÌÅÛ ID INT64 nSerial; // µî·ÏÇÒ ¾ÆÀÌÅÛ °íÀ¯¹øÈ£ short wCount; // µî·ÏÇÒ ¾ÆÀÌÅÛ ¼ö·® char cLevel; // µî·ÏÇÒ ¾ÆÀÌÅÛ ·¹º§ INT64 biNewSerial; // ¾ÆÀÌÅÛÀÇ ÀϺΠ¼ö·®¸¸ µî·ÏÇÏ´Â °æ¿ì »õ ItemSerialÀ» ÀÔ·ÂÇÏ°í ±×·¸Áö ¾ÊÀ¸¸é NULLÀ» ÀÔ·ÂÇÕ´Ï´Ù int nUnitPrice; // ÆÇ¸Å´Ü°¡ int nRegisterTax; // °Å·¡¼Òµî·Ï ¼ö¼ö·á bool bDisplayFlag1; // 0À» ÀÔ·ÂÇØ ÁÖ¼¼¿ä. ÇöÀç »ç¿ëÇÏÁö ¾Ê´Â Çʵå bool bDisplayFlag2; // 0À» ÀÔ·ÂÇØ ÁÖ¼¼¿ä. ÇöÀç »ç¿ëÇÏÁö ¾Ê´Â Çʵå int nChannelID; // ä³Î ID int nMapID; // ¸Ê ID bool bPremiumTrade; // 0=ÇÁ¸®¹Ì¾ö ¾Æ´Ô, 1=ÇÁ¸®¹Ì¾ö bool bCash; // 0=ÀÏ¹Ý ¾ÆÀÌÅÛ, 1=ij½¬ ¾ÆÀÌÅÛ char cMethodCode; // 1=°ÔÀÓ¸Ó´Ï, 3=ÆäÅ» int nExchangeCode; // ¾ÆÀÌÅÛÀÌ ¼ÓÇÑ Ä«Å×°í¸® ID }; struct TAAddTrade: TAHeader { int nMarketDBID; // °Å·¡¼Ò °Å·¡ ID char cInvenType; // eItemPositionType INT64 biSerial; // ½Ã¸®¾ó BYTE cInvenIndex; // Àκ¥ À妽º short wCount; // ¾ÆÀÌÅÛ °¹¼ö int nPrice; // °Å·¡¼Ò µî·Ï ¼ö¼ö·á bool bPremiumTrade; // 0=ÇÁ¸®¹Ì¾ö ¾Æ´Ô, 1=ÇÁ¸®¹Ì¾ö #if defined(PRE_ADD_PETALTRADE) char cMethodCode; // 1=°ÔÀÓ¸Ó´Ï, 3=ÆäÅ» #endif }; // QUERY_CANCELTRADE struct TQCancelTrade:public TQHeader { INT64 biCharacterDBID; // ij¸¯ÅÍ ID int nMarketDBID; // °Å·¡ ID BYTE cInvenSlotIndex; // ¾ÆÀÌÅÛÀÌ µé¾î°¥ À妽º ¹øÈ£ int nChannelID; // ä³Î ID int nMapID; // ¸Ê ID bool bCashItem; }; struct TACancelTrade: public TAHeader { int nMarketDBID; BYTE cInvenSlotIndex; TItem Item; int nPrice; bool bCashItem; }; // QUERY_BUYTRADEITEM struct TQBuyTradeItem: public TQHeader { INT64 biCharacterDBID; int nMarketDBID; BYTE cInvenSlotIndex; int nChannelID; int nMapID; bool bCashItem; #if defined(PRE_ADD_DIRECT_BUY_UPGRADEITEM) bool bMini; #else // #if defined(PRE_ADD_DIRECT_BUY_UPGRADEITEM) #if defined(PRE_ADD_PETALTRADE) int nPetalPrice; #endif #endif // #if !defined(PRE_ADD_DIRECT_BUY_UPGRADEITEM) WCHAR wszIP[IPLENMAX]; }; struct TABuyTradeItem: public TAHeader { int nMarketDBID; BYTE cInvenSlotIndex; TItem Item; UINT nSellerADBID; // ÆÇ¸ÅÀÚ ADBID INT64 biSellerCharacterDBID; // ÆÇ¸ÅÀÚ CDBID int nPrice; char cPayMethodCode; #if defined(PRE_ADD_DIRECT_BUY_UPGRADEITEM) bool bMini; #endif // #if defined(PRE_ADD_DIRECT_BUY_UPGRADEITEM) }; // QUERY_GETLISTTRADEFORCALCULATION struct TQGetListTradeForCalculation: public TQHeader { INT64 biCharacterDBID; }; struct TAGetListTradeForCalculation: public TAHeader { char cMarketCount; TMarketCalculationInfo MarketInfo[MYMARKETMAX]; }; // QUERY_TRADECALCULATE struct TQTradeCalculate: public TQHeader { INT64 biCharacterDBID; int nMarketDBID; int nChannelID; int nMapID; }; struct TATradeCalculate: public TAHeader { int nMarketDBID; int nCalculatePrice; #if defined(PRE_ADD_PETALTRADE) char cPayMethodCode; #endif }; // QUERY_TRADECALCULATEALL struct TQTradeCalculateAll: public TQHeader { INT64 biCharacterDBID; int nChannelID; int nMapID; }; struct TATradeCalculateAll: public TAHeader { int nCalculatePrice; #if defined(PRE_ADD_PETALTRADE) int nCalculatePetal; #endif }; #if !defined(PRE_ADD_DIRECT_BUY_UPGRADEITEM) // QUERY_GETTRADEITEMID, // MarketDBID·Î ItemID¾Ë¾Æ³»±â struct TQGetTradeItemID: public TQHeader { int nMarketDBID; }; #endif // #if defined(PRE_ADD_DIRECT_BUY_UPGRADEITEM) struct TAGetTradeItemID: public TAHeader { int nMarketDBID; int nMarketItemID; #if defined(PRE_ADD_PETALTRADE) char cMethodCode; int nPrice; #endif }; // QUERY_GETPETALBALANCE, // ÆäÅ» ÀÜ¾× Á¶È¸ struct TAGetPetalBalance : public TAHeader { int nPetalBalance; }; // QUERY_GETTRADEPRICE struct TQGetTradePrice : public TQHeader { int nMarketDBID; int nItemID; BYTE cLevel; BYTE cOption; }; struct TAGetTradePrice : public TAHeader { int nMarketDBID; int nItemID; BYTE cLevel; BYTE cOption; TMarketPrice ItemPrices[2]; // Index 0 : °ÔÀÓ¸Ó´Ï 1: ÆäÅ» }; //QUERY_GETLISTMINITRADE struct TQGetListMiniTrade: public TQHeader { INT64 biCharacterDBID; int nItemID; char cPayMethodCode; // 0-È¥ÇÕ, 1-ÄÚÀÎ, 3-ÆäÅ» }; typedef TAGetPageTrade TAGetListMiniTrade; //######################################################################################################################################### // MAINCMD_FRIEND //######################################################################################################################################### //QUERY_FRIENDLIST, struct TQFriendList:public TQHeader { INT64 biCharacterDBID; }; struct TDBFriendGroupData { UINT nGroupDBID; WCHAR wszGroupName[FRIEND_GROUP_NAMELENMAX]; }; struct TDBFriendData { UINT nGroupDBID; WCHAR wszGroupName[FRIEND_GROUP_NAMELENMAX]; INT64 biCharacterDBID; UINT nFriendAccountDBID; INT64 biFriendCharacterDBID; WCHAR wszFriendCharacterName[NAMELENMAX]; WCHAR wszMemo[FRIEND_MEMO_LEN_MAX]; bool bMobileAuthentication; }; struct TAFriendList: public TAHeader { INT64 biCharacterDBID; BYTE cCount; TDBFriendData FriendData[FRIEND_MAXCOUNT + FRIEND_GROUP_MAX]; }; // QUERY_ADDGROUP, // ±×·ì Ãß°¡ struct TQAddGroup:public TQHeader { INT64 biCharacterDBID; WCHAR wszGroupName[FRIEND_GROUP_NAMELENMAX]; int nGroupCountLimit; // Ä£±¸ ±×·ì °³¼ö »óÇÑÄ¡ }; struct TAAddGroup: public TAHeader { WCHAR wszGroupName[FRIEND_GROUP_NAMELENMAX]; UINT nGroupDBID; }; // QUERY_MODGROUPNAME, // ±×·ìÀ̸§ ¼öÁ¤ struct TQModGroupName:public TQHeader { INT64 biCharacterDBID; int nGroupDBID; WCHAR wszGroupName[FRIEND_GROUP_NAMELENMAX]; }; struct TAModGroupName: public TAHeader { UINT nGroupDBID; WCHAR wszGroupName[FRIEND_GROUP_NAMELENMAX]; }; // QUERY_DELGROUP, // ±×·ì»èÁ¦ struct TQDelGroup:public TQHeader { INT64 biCharacterDBID; UINT nGroupDBID; }; struct TADelGroup: public TAHeader { UINT nGroupDBID; }; // QUERY_MODFRIENDANDGROUPMAPPING, // Ä£±¸¿Í Ä£±¸±×·ì ¸ÞÇμöÁ¤ struct TQModFriendAndGroupMapping:public TQHeader { INT64 biCharacterDBID; int nGroupDBID; char cCount; INT64 biFriendCharacterDBIDs[FRIEND_MAXCOUNT]; }; struct TAModFriendAndGroupMapping: public TAHeader { int nGroupDBID; char cCount; INT64 biFriendCharacterDBIDs[FRIEND_MAXCOUNT]; }; //QUERY_ADDFRIEND, struct TQAddFriend:public TQHeader { INT64 biCharacterDBID; WCHAR wszFriendName[NAMELENMAX]; UINT nGroupDBID; int nFriendCountLimit; // µî·Ï °¡´ÉÇÑ Ä£±¸ ¼ö »óÇÑÄ¡ }; struct TAAddFriend: public TAHeader { INT64 biCharacterDBID; UINT nFriendAccountDBID; INT64 biFriendCharacterDBID; UINT nGroupDBID; WCHAR wszFriendName[NAMELENMAX]; BYTE cNeedDelIsolate; }; // QUERY_MODFRIENDMEMO, // Ä£±¸¸Þ¸ð¼öÁ¤ struct TQModFriendMemo:public TQHeader { INT64 biCharacterDBID; INT64 biFriendCharacterDBID; WCHAR wszMemo[FRIEND_MEMO_LEN_MAX]; }; struct TAModFriendMemo: public TAHeader { INT64 biCharacterDBID; }; //QUERY_DELFRIEND, struct TQDelFriend:public TQHeader { INT64 biCharacterDBID; //ÀÏ´Ü ÇϳªÂ¥¸® ÀÎÅÍÆäÀ̽º¸¸ ÀÖÀ½ WCHAR wszDelCharacterName[NAMELENMAX]; char cCount; INT64 biFriendCharacterDBIDs[FRIEND_MAXCOUNT]; }; struct TADelFriend: public TAHeader { char cCount; INT64 biFriendCharacterDBIDs[FRIEND_MAXCOUNT]; }; //######################################################################################################################################### // MAINCMD_ISOLATE //######################################################################################################################################### struct TIsolateItem:public TBoostMemoryPool { INT64 biIsolateCharacterDBID; WCHAR wszIsolateName[NAMELENMAX]; }; //QUERY_GETISOLATELIST struct TQGetIsolateList:public TQHeader { INT64 biCharacterDBID; }; struct TAGetIsolateList: public TAHeader { BYTE cCount; TIsolateItem Isolate[ISOLATELISTMAX]; }; //QUERY_ADDISOLATE struct TQAddIsolate:public TQHeader { INT64 biCharacterDBID; WCHAR wszIsolateName[NAMELENMAX]; INT64 biFriendCharacterDBID; }; struct TAAddIsolate: public TAHeader { BYTE cNeedDelFriend; TIsolateItem IsolateItem; }; //QUERY_DELISOLATE struct TQDelIsolate:public TQHeader { INT64 biCharacterDBID; char cCount; INT64 biIsolateCharacterDBIDs[ISOLATELISTMAX]; }; struct TADelIsolate: public TAHeader { char cCount; INT64 biIsolateCharacterDBIDs[ISOLATELISTMAX]; }; //######################################################################################################################################### // MAINCMD_GUILD //######################################################################################################################################### // QUERY_CREATEGUILD // ±æµå â¼³ ¿äû/°á°ú struct TQCreateGuild: public TQHeader { INT64 nCharacterDBID; // ±æµåÀå ij¸¯ÅÍ DBID WCHAR wszGuildName[GUILDNAME_MAX]; // ±æµå À̸§ int wGuildRoleAuth[GUILDROLE_TYPE_CNT]; // ±æµå ¿ªÇÒ int nMapID; // ¸Ê¹øÈ£ int nEstablishExpense; // ±æµåâ¼³±Ý¾× char cLevel; // â¼³ÀÚ ·¹º§ INT nRoleMaxItem[GUILDROLE_TYPE_CNT]; // ±æµå ¿ªÇÒº° â°í ¾ÆÀÌÅÛ È½¼öÁ¦ÇÑ (À妽º) INT nRoleMaxCoin[GUILDROLE_TYPE_CNT]; // ±æµå ¿ªÇÒº° ÃÖ´ë Ãâ±Ý¾× (À妽º) }; struct TACreateGuild: public TAHeader { INT64 nCharacterDBID; // ±æµåÀå ij¸¯ÅÍ DBID WCHAR wszGuildName[GUILDNAME_MAX]; // ±æµå À̸§ char cWorldSetID; // ¿ùµå ID UINT nGuildDBID; // ±æµå DBID (½ÇÆÐÀÏ °æ¿ì ¹«½ÃµÊ) __time64_t JoinDate; // ±æµå °¡ÀÔ ³¯Â¥ int nEstablishExpense; // ±æµåâ¼³±Ý¾× }; // QUERY_GETGUILDINFO // ±æµå Á¤º¸ ¿äû struct TQGetGuildInfo: public TQHeader { UINT nGuildDBID; // ±æµå DBID bool bNeedMembList; // ±æµå¿ø ¸ñ·Ïµµ ÇÊ¿äÇÑÁö ¿©ºÎ }; struct TAGetGuildInfo: public TAHeader { UINT nGuildDBID; // ±æµå DBID char cWorldSetID; // ¿ùµå ID TGuild Info; // ±æµå Á¤º¸ (½ÇÆÐÀÏ °æ¿ì ¹«½ÃµÊ) }; struct TAGetGuildMember: public TAHeader { UINT nGuildDBID; // ±æµå DBID char cWorldSetID; // ¿ùµå ID bool bFirstPage; // óÀ½ÀÎÁö üũ bool bEndPage; // ¸¶Áö¸·ÀÎÁö üũ int nCount; // ±æµå¿ø Á¤º¸ °³¼ö (½ÇÆÐÀÏ °æ¿ì ¹«½ÃµÊ) TGuildMember MemberList[SENDGUILDMEMBER_MAX]; // ±æµå¿ø Á¤º¸ }; // QUERY_DISMISSGUILD // ±æµå ÇØÃ¼ ¿äû struct TQDismissGuild: public TQHeader { INT64 nCharacterDBID; // ±æµåÀå ij¸¯ÅÍ DBID UINT nGuildDBID; // ±æµå DBID }; struct TADismissGuild: public TAHeader { INT64 nCharacterDBID; // ±æµåÀå ij¸¯ÅÍ DBID UINT nGuildDBID; // ±æµå DBID char cWorldSetID; // ¿ùµå ID }; // QUERY_ADDGUILDMEMBER // ±æµå¿ø Ãß°¡ ¿äû struct TQAddGuildMember: public TQHeader { UINT nAccountDBID; // Ãß°¡ÇÒ °èÁ¤ DBID INT64 nCharacterDBID; // Ãß°¡ÇÒ Ä³¸¯ÅÍ DBID UINT nGuildDBID; // ±æµå DBID char cLevel; // ij¸¯ÅÍ ·¹º§ short wGuildSize; // ÃÖ´ë ±æµå¿ø ¼ö }; struct TAAddGuildMember: public TAHeader { INT64 nCharacterDBID; // Ãß°¡ÇÒ Ä³¸¯ÅÍ DBID UINT nGuildDBID; // ±æµå DBID char cWorldSetID; // ¿ùµå ID __time64_t JoinDate; // ±æµå °¡ÀÔ ³¯Â¥ }; // QUERY_DELGUILDMEMBER // ±æµå¿ø Á¦°Å (Å»Åð/Ãß¹æ) ¿äû struct TQDelGuildMember: public TQHeader { UINT nReqAccountDBID; // ¿äûÇÑ °èÁ¤ DBID (Ãß¹æÀÇ °æ¿ì¿¡´Â Á¦°Å´ë»ó°ú ´Þ¶óÁü) INT64 nReqCharacterDBID; // ¿äûÇÑ Ä³¸¯ÅÍ DBID (Ãß¹æÀÇ °æ¿ì¿¡´Â Á¦°Å´ë»ó°ú ´Þ¶óÁü) UINT nDelAccountDBID; // Á¦°ÅÇÒ °èÁ¤ DBID INT64 nDelCharacterDBID; // Á¦°ÅÇÒ Ä³¸¯ÅÍ DBID UINT nGuildDBID; // ±æµå DBID bool bIsExiled; // Ãß¹æÇÏ´ÂÁö ¿©ºÎ (true : Ãß¹æ / false : Å»Åð) char cLevel; // ij¸¯ÅÍ ·¹º§ #ifdef PRE_ADD_BEGINNERGUILD bool bIsGraduateBeginnerGuild; #endif //#ifdef PRE_ADD_BEGINNERGUILD }; struct TADelGuildMember: public TAHeader { UINT nReqAccountDBID; // ¿äûÇÑ °èÁ¤ DBID (Ãß¹æÀÇ °æ¿ì¿¡´Â Á¦°Å´ë»ó°ú ´Þ¶óÁü) INT64 nReqCharacterDBID; // ¿äûÇÑ Ä³¸¯ÅÍ DBID (Ãß¹æÀÇ °æ¿ì¿¡´Â Á¦°Å´ë»ó°ú ´Þ¶óÁü) UINT nDelAccountDBID; // Á¦°ÅÇÒ °èÁ¤ DBID INT64 nDelCharacterDBID; // Á¦°ÅÇÒ Ä³¸¯ÅÍ DBID UINT nGuildDBID; // ±æµå DBID char cWorldSetID; // ¿ùµå ID bool bIsExiled; // Ãß¹æÇÏ´ÂÁö ¿©ºÎ (true : Ãß¹æ / false : Å»Åð) #ifdef PRE_ADD_BEGINNERGUILD bool bIsGraduateBeginnerGuild; #endif //#ifdef PRE_ADD_BEGINNERGUILD }; // QUERY_CHANGEGUILDINFO // ±æµå Á¤º¸ º¯°æ ¿äû struct TQChangeGuildInfo:public TQHeader { INT64 nCharacterDBID; // ij¸¯ÅÍ DBID UINT nGuildDBID; // ±æµå DBID BYTE btGuildUpdate; // ±æµå Á¤º¸ º¯°æ ŸÀÔ (eGuildUpdateType) long nAddCommonPoint; // ±æµå ÀÏ¹Ý Æ÷ÀÎÆ® º¯È­·® (0 : º¯È­¾øÀ½ / ±×¿Ü : À½¼öÀ̾î¾ß Â÷°¨ !!!) int nInt1; int nInt2; int nInt3; int nInt4; INT64 biInt64; WCHAR Text[GUILDHISTORYTEXT_MAX+1]; }; struct TAChangeGuildInfo: public TAHeader { INT64 nCharacterDBID; // ij¸¯ÅÍ DBID UINT nGuildDBID; // ±æµå DBID char cWorldSetID; // ¿ùµå ID BYTE btGuildUpdate; // ±æµå Á¤º¸ º¯°æ ŸÀÔ (eGuildUpdateType) long nCurCommonPoint; // ±æµå ÀÏ¹Ý Æ÷ÀÎÆ® ÇöÀç·® (º¯°æÀÌ ¿äûµÈ °æ¿ì¿¡¸¸ ä¿öÁü) long nTotCommonPoint; // ±æµå ÀÏ¹Ý Æ÷ÀÎÆ® ´©Àû·® (º¯°æÀÌ ¿äûµÈ °æ¿ì¿¡¸¸ ä¿öÁü) int nInt1; int nInt2; int nInt3; int nInt4; INT64 biInt64; WCHAR Text[GUILDHISTORYTEXT_MAX+1]; }; // QUERY_CHANGEGUILDMEMBERINFO // ±æµå¿ø Á¤º¸ º¯°æ ¿äû struct TQChangeGuildMemberInfo:public TQHeader { UINT nReqAccountDBID; // ¿äûÇÑ °èÁ¤ DBID (±æµåÀåÀÌ ±æµå¿ø Á¤º¸¸¦ º¯°æÇÏ´Â °æ¿ì¿¡´Â º¯°æ´ë»ó°ú ´Þ¶óÁü) INT64 nReqCharacterDBID; // ¿äûÇÑ Ä³¸¯ÅÍ DBID (±æµåÀåÀÌ ±æµå¿ø Á¤º¸¸¦ º¯°æÇÏ´Â °æ¿ì¿¡´Â º¯°æ´ë»ó°ú ´Þ¶óÁü) UINT nChgAccountDBID; // º¯°æµÉ °èÁ¤ DBID INT64 nChgCharacterDBID; // º¯°æµÉ ij¸¯ÅÍ DBID UINT nGuildDBID; // ±æµå DBID BYTE btGuildMemberUpdate; // ±æµå¿ø Á¤º¸ º¯°æ ŸÀÔ (eGuildMemberUpdateType) int nInt1; int nInt2; INT64 biInt64; WCHAR Text[GUILDHISTORYTEXT_MAX+1]; char cLevel; }; struct TAChangeGuildMemberInfo: public TAHeader { UINT nReqAccountDBID; // ¿äûÇÑ °èÁ¤ DBID (±æµåÀåÀÌ ±æµå¿ø Á¤º¸¸¦ º¯°æÇÏ´Â °æ¿ì¿¡´Â º¯°æ´ë»ó°ú ´Þ¶óÁü) INT64 nReqCharacterDBID; // ¿äûÇÑ Ä³¸¯ÅÍ DBID (±æµåÀåÀÌ ±æµå¿ø Á¤º¸¸¦ º¯°æÇÏ´Â °æ¿ì¿¡´Â º¯°æ´ë»ó°ú ´Þ¶óÁü) UINT nChgAccountDBID; // º¯°æµÉ °èÁ¤ DBID INT64 nChgCharacterDBID; // º¯°æµÉ ij¸¯ÅÍ DBID UINT nGuildDBID; // ±æµå DBID char cWorldSetID; // ¿ùµå ID BYTE btGuildMemberUpdate; // ±æµå¿ø Á¤º¸ º¯°æ ŸÀÔ (eGuildMemberUpdateType) int nInt1; int nInt2; INT64 biInt64; WCHAR Text[GUILDHISTORYTEXT_MAX+1]; }; // QUERY_ADDGUILDHISTORY: // ±æµå È÷½ºÅ丮 Ãß°¡ ¿äû struct TQAddGuildHistory: public TQHeader { UINT nGuildDBID; // ±æµå DBID TGuildHistory History; // ±æµå È÷½ºÅ丮 Á¤º¸ }; // QUERY_GETGUILDHISTORYLIST // ±æµå È÷½ºÅ丮 ¸ñ·Ï ¿äû struct TQGetGuildHistoryList: public TQHeader { INT64 nCharacterDBID; // ij¸¯ÅÍ DBID UINT nGuildDBID; // ±æµå DBID INT64 biIndex; // ±æµå È÷½ºÅ丮 ¸ñ·Ï À妽º (0 ÀÌ¸é °¡Àå ÃÖ±Ù ±â·ÏºÎÅÍ È®ÀÎ ?) bool bDirection; // ¸ñ·Ï ¾òÀ» ¹æÇâ (0:À妽º ÀÌÀü / 1:À妽º ÀÌÈÄ) }; struct TAGetGuildHistoryList: public TAHeader { INT64 nCharacterDBID; // ij¸¯ÅÍ DBID UINT nGuildDBID; // ±æµå DBID char cWorldSetID; // ¿ùµå ID INT64 biIndex; // ±æµå È÷½ºÅ丮 ¸ñ·Ï À妽º (0 ÀÌ¸é °¡Àå ÃÖ±Ù ±â·ÏºÎÅÍ È®ÀÎ ?) bool bDirection; // ¸ñ·Ï ¾òÀ» ¹æÇâ (0:À妽º ÀÌÀü / 1:À妽º ÀÌÈÄ) int nCurCount; // ±æµå È÷½ºÅ丮 ÃÖÃÊ À妽º ¡æ ÀÔ·Â À妽º ±îÁöÀÇ °³¼ö int nTotCount; // ±æµå È÷½ºÅ丮 Àüü °³¼ö int nCount; // ±æµå È÷½ºÅ丮 ¸ñ·Ï °³¼ö (½ÇÆÐÀÏ °æ¿ì ¹«½ÃµÊ) TGuildHistory HistoryList[GUILDHISTORYLIST_MAX]; // ±æµå È÷½ºÅ丮 ¸ñ·Ï (½ÇÆÐÀÏ °æ¿ì ¹«½ÃµÊ) }; //QUERY_INVITEGUILDMEMBER: // ±æµå¿ø ÃÊ´ë ¿äû struct TQInviteGuildMember : public TQHeader { TQGetGuildInfo GuildInfo; UINT nToSessionID; // ÃÊ´ë¿¡ ÀÀÇÑ ÀÚÀÇ ¼¼¼ÇID }; struct TAInviteGuildMember: public TAHeader { TAGetGuildInfo GuildInfo; UINT nToSessionID; // ÃÊ´ë¿¡ ÀÀÇÑ ÀÚÀÇ ¼¼¼ÇID }; // QUERY_MOVE_ITEM_IN_GUILDWARE // Àκ¥ -> ±æµåâ°í·Î ¾ÆÀÌÅÛ À̵¿ struct TQMoveItemInGuildWare : public TQHeader { INT64 nCharacterDBID; // ij¸¯ÅÍ DBID UINT nGuildDBID; // ±æµå DBID int nItemID; // À̵¿ÇÒ ¾ÆÀÌÅÛ ID INT64 biItemSerial; // À̵¿ÇÒ ¾ÆÀÌÅÛÀÇ °íÀ¯¹øÈ£ INT64 biNewItemSerial; // SplitµÇ¾î ³ª¿Â ¾ÆÀÌÅÛ °íÀ¯ ¹øÈ£ INT64 biMergeTargetItemSerial;// Merge ´ë»ó ¾ÆÀÌÅÛÀÇ °íÀ¯ ¹øÈ£ short wItemCount; // @inbItemSerial °ª¿¡ ÇØ´çÇÏ´Â ¾ÆÀÌÅÛÀÇ º¯°æ Àü ÃÑ ¼ö·® short wSplitItemCount; // @inbNewItemSerial °ª¿¡ ÇØ´çÇÏ´Â ¾ÆÀÌÅÛ ¼ö·® short wMergeItemCount; // ÇÕÃÄÁö´Â ¾ÆÀÌÅÛÀÇ ÀÌÀü ¼ö·® int nMapIndex; // ¸Ê ID DBPacket::TExchangeItem SrcItem; DBPacket::TExchangeItem DestItem; }; struct TAMoveItemInGuildWare: public TAHeader { char cWorldSetID; // ¿ùµå ID INT64 nCharacterDBID; // ij¸¯ÅÍ DBID UINT nGuildDBID; // ±æµå DBID DBPacket::TExchangeItem SrcItem; DBPacket::TExchangeItem DestItem; }; // QUERY_MOVE_INVEN_TO_GUILDWARE // Àκ¥ -> ±æµåâ°í·Î ¾ÆÀÌÅÛ À̵¿ struct TQMoveInvenToGuildWare : public TQHeader { INT64 nCharacterDBID; // ij¸¯ÅÍ DBID UINT nGuildDBID; // ±æµå DBID int nItemID; // À̵¿ÇÒ ¾ÆÀÌÅÛ ID INT64 biItemSerial; // À̵¿ÇÒ ¾ÆÀÌÅÛÀÇ °íÀ¯¹øÈ£ INT64 biNewItemSerial; // ¾ÆÀÌÅÛÀÇ ÀϺΠ¼ö·®À» ¿Å±â´Â °æ¿ì, SplitµÇ¾î ³ª¿Â ¾ÆÀÌÅÛÀÇ »õ °íÀ¯ ¹øÈ£. Split µÇÁö ¾Ê´Â´Ù¸é NULLÀ» ÀÔ·ÂÇÕ´Ï´Ù. INT64 biMergeTargetItemSerial; // ¾ÆÀÌÅÛÀ» ±âÁ¸ ¾ÆÀÌÅÛ¿¡ MergeÇÏ´Â °æ¿ì, ´ë»ó ¾ÆÀÌÅÛÀÇ °íÀ¯ ¹øÈ£. Merge µÇÁö ¾Ê´Â´Ù¸é NULLÀ» ÀÔ·ÂÇÕ´Ï´Ù. short wItemCount; // À̵¿ÇÒ ¾ÆÀÌÅÛÀÇ ¼ö·® short wMovingItemCount; // ¿Å±â´Â ¾ÆÀÌÅÛÀÇ ÀÌÀü ¼ö·® short wMergeItemCount; // ÇÕÃÄÁö´Â ¾ÆÀÌÅÛÀÇ ÀÌÀü ¼ö·® int nMapIndex; // ¸Ê ID DBPacket::TExchangeItem InvenItem; DBPacket::TExchangeItem GuildWareItem; }; struct TAMoveInvenToGuildWare: public TAHeader { INT64 nCharacterDBID; // ij¸¯ÅÍ DBID UINT nGuildDBID; // ±æµå DBID char cWorldSetID; // ¿ùµå ID DBPacket::TExchangeItem InvenItem; DBPacket::TExchangeItem GuildWareItem; }; // QUERY_MOVE_GUILDWARE_TO_INVEN // ±æµåâ°í -> Àκ¥·Î ¾ÆÀÌÅÛ À̵¿ struct TQMoveGuildWareToInven : public TQHeader { INT64 nCharacterDBID; // ij¸¯ÅÍ DBID UINT nGuildDBID; // ±æµå DBID int nItemID; // À̵¿ÇÒ ¾ÆÀÌÅÛ ID INT64 biItemSerial; // À̵¿ÇÒ ¾ÆÀÌÅÛÀÇ °íÀ¯¹øÈ£ INT64 biNewItemSerial; // ¾ÆÀÌÅÛÀÇ ÀϺΠ¼ö·®À» ¿Å±â´Â °æ¿ì, SplitµÇ¾î ³ª¿Â ¾ÆÀÌÅÛÀÇ »õ °íÀ¯ ¹øÈ£. Split µÇÁö ¾Ê´Â´Ù¸é NULLÀ» ÀÔ·ÂÇÕ´Ï´Ù. INT64 biMergeTargetItemSerial; // ¾ÆÀÌÅÛÀ» ±âÁ¸ ¾ÆÀÌÅÛ¿¡ MergeÇÏ´Â °æ¿ì, ´ë»ó ¾ÆÀÌÅÛÀÇ °íÀ¯ ¹øÈ£. Merge µÇÁö ¾Ê´Â´Ù¸é NULLÀ» ÀÔ·ÂÇÕ´Ï´Ù. short wItemCount; // À̵¿ÇÒ ¾ÆÀÌÅÛÀÇ ¼ö·® short wMovingItemCount; // ¿Å±â´Â ¾ÆÀÌÅÛÀÇ ÀÌÀü ¼ö·® short wMergeItemCount; // ÇÕÃÄÁö´Â ¾ÆÀÌÅÛÀÇ ÀÌÀü ¼ö·® int nMaxDailyTakeItemCount; int nMapIndex; // ¸Ê ID DBPacket::TExchangeItem GuildWareItem; DBPacket::TExchangeItem InvenItem; }; struct TAMoveGuildWareToInven: public TAHeader { INT64 nCharacterDBID; // ij¸¯ÅÍ DBID UINT nGuildDBID; // ±æµå DBID char cWorldSetID; // ¿ùµå ID int nDailyTakeItemCount; __time64_t tUseDate; DBPacket::TExchangeItem GuildWareItem; DBPacket::TExchangeItem InvenItem; }; struct TQGuildWareHouseCoin : public TQHeader { INT64 nCharacterDBID; // ij¸¯ÅÍ DBID UINT nGuildDBID; // ±æµå DBID char cMoveType; bool bInOutFlag; // 0:ÀÔ±Ý 1:Ãâ±Ý INT64 nMoveCoin; // ÀÔ±Ý¾× int nMapIndex; // ¸ÊID char szIP[IPLENMAX]; // IPÁÖ¼Ò }; struct TAGuildWareHouseCoin: public TAHeader { INT64 nCharacterDBID; // ij¸¯ÅÍ DBID UINT nGuildDBID; // ±æµå DBID char cWorldSetID; // ¿ùµå ID char cMoveType; bool bInOutFlag; // 0:ÀÔ±Ý 1:Ãâ±Ý INT64 nMoveCoin; // À̵¿ ±Ý¾× INT64 biTotalCoin; // Àüü ±Ý¾× __time64_t tUseDate; }; // QUERY_GET_GUILDWAREINFO // ±æµåâ°í ¾ÆÀÌÅÛ ¿äû struct TQGetGuildWareInfo : public TQHeader { UINT nGuildDBID; // ±æµå DBID short wMaxCount; // â°í ÃÖ´ë¼ö }; struct TAGetGuildWareInfo { UINT nGuildDBID; // ±æµå DBID char cWorldSetID; // ¿ùµå ID int nErrNo; // ¿¡·¯ BYTE cItemListCount; // ¾ÆÀÌÅÛ¸®½ºÆ® Ä«¿îÆ® TItemInfo ItemList[GUILD_WAREHOUSE_MAX]; // ¿þ¾î¾ÆÀÌÅÛ¸®½ºÆ® }; //QUERY_SET_GUILDWAREINFO // ±æµåâ°í ¾ÆÀÌÅÛ ÀúÀå struct TQSetGuildWareInfo : public TQHeader { UINT nGuildDBID; // ±æµå DBID BYTE cSlotListCount; // ½½·ÔÄ«¿îÆ® TGuildWareSlot WareSlotList[GUILD_WAREHOUSE_MAX]; // ½½·Ô¸®½ºÆ® }; struct TASetGuildWareInfo { UINT nGuildDBID; // ±æµå DBID char cWorldSetID; // ¿ùµå ID int nRetCode; }; // QUERY_GET_GUILDWAREHISTORY // ±æµåâ°í È÷½ºÅ丮 ¿äû struct TQGetGuildWareHistory : public TQHeader { INT64 nCharacterDBID; // ij¸¯ÅÍ DBID UINT nGuildDBID; // ±æµå DBID int nIndex; // ¿äû À妽º }; struct TAGetGuildWareHistory { UINT nAccountDBID; // °èÁ¤ DBID INT64 nCharacterDBID; // ij¸¯ÅÍ DBID UINT nGuildDBID; // ±æµå DBID char cWorldSetID; // ¿ùµå ID int nErrNo; int nCurrCount; // ÇöÀç ¸®½ºÆ® ¼ö int nTotalCount; // Àüü ¸®½ºÆ® ¼ö int nCount; TGuildWareHistory HistoryList[GUILD_WAREHOUSE_HISTORYLIST_MAX]; // È÷½ºÅ丮 ¸®½ºÆ® }; // QUERY_CHANGEGUILDNAME // ±æµå¸í º¯°æ struct TQChangeGuildName : public TQHeader { UINT nGuildDBID; INT64 biItemSerial; WCHAR wszGuildName[GUILDNAME_MAX]; // º¯°æÇÒ ±æµå¸í }; struct TAChangeGuildName : public TAHeader { char cWorldSetID; UINT nGuildDBID; INT64 biItemSerial; WCHAR wszGuildName[GUILDNAME_MAX]; // º¯°æÇÑ ±æµå¸í }; // QUERY_MOD_GUILDEXP // ±æµå °æÇèÄ¡ º¯°æ struct TQModGuildExp: public TQHeader { UINT nGuildDBID; char cPointType; int nPointValue; int nMaxPoint; int nLevel; INT64 biCharacterDBID; int nMissionID; #if defined(PRE_ADD_GUILD_CONTRIBUTION) bool IsGuildLevelMax; #endif // #if defined(PRE_ADD_GUILD_CONTRIBUTION) }; struct TAModGuildExp: public TAHeader { char cWorldSetID; UINT nGuildDBID; char cPointType; int nPointValue; int nTotalGuildExp; int nDailyPointValue; int nLevel; INT64 biCharacterDBID; int nMissionID; }; // QUERY_MOD_GUILDCHEAT // ±æµå ġƮ struct TQModGuildCheat: public TQHeader { UINT nGuildDBID; char cCheatType; int nPoint; char cLevel; }; struct TAModGuildCheat: public TAHeader { char cWorldSetID; UINT nGuildDBID; char cCheatType; int nPoint; char cLevel; }; struct TQGetGuildRewardItem: public TQHeader { UINT nGuildDBID; }; struct TAGetGuildRewardItem: public TAHeader { char cWorldSetID; UINT nGuildDBID; int nCount; TGuildRewardItem RewardItemInfo[GUILDREWARDEFFECT_TYPE_CNT]; }; struct TQAddGuildRewardItem: public TQHeader { INT64 biCharacterDBID; UINT nGuildDBID; int nItemID; bool bEnternityFlag; int nLifeSpan; BYTE cItemBuyType; int nNeedGold; int nMpaID; int nRemoveItemID; }; struct TAAddGuildRewardItem: public TAHeader { INT64 biCharacterDBID; char cWorldSetID; UINT nGuildDBID; int nItemID; BYTE cItemBuyType; __time64_t m_tExpireDate; }; struct TQChangeGuildSize: public TQHeader { UINT nGuildDBID; short nGuildSize; }; struct TAChangeGuildSize: public TAHeader { char cWorldSetID; UINT nGuildDBID; short nGuildSize; }; struct TQDelGuildEffectItem:public TQHeader { INT64 biCharacterDBID; // ij¸¯ÅÍÄÚµå UINT nGuildDBID; // ±æµå DBID int nItemID; }; // QUERY_ENROLL_GUILDWAR struct TQEnrollGuildWar : public TQHeader { short wScheduleID; UINT nGuildDBID; }; struct TAEnrollGuildWar : public TAHeader { char cWorldSetID; UINT nGuildDBID; short wScheduleID; BYTE cTeamColorCode; }; // QUERY_GET_GUILDWARSCHEDULE struct TQGetGuildWarSchedule : public TQHeader { }; struct TAGetGuildWarSchedule : public TAHeader { short wScheduleID; // ±æµåÀü Â÷¼ö short wWinersWeightRate; // ½Â¸®ÆÀ °¡ÁßÄ¡ bool bFinalProgress; // º»¼± ÁøÇà ¿©ºÎ TGuildWarEventInfo EventInfo[GUILDWAR_STEP_END]; // ±â°£Á¤º¸ __time64_t tRewardExpireDate; // º¸»ó(³óÀå, Á¦½ºÃÄ) ¸¸·á ±â°£ }; // QUERY_GET_GUILDWARFINALSCHEDULE // º»¼± ÀÏÁ¤ °¡Á®¿À±â struct TQGetGuildWarFinalSchedule : public TQHeader { short wScheduleID; // ±æµåÀü Â÷¼ö }; struct TAGetGuildWarFinalSchedule : public TAHeader { TGuildWarEventInfo GuildWarFinalSchedule[GUILDWAR_FINALPART_MAX]; }; // QUERY_ADD_GUILDWARPOINT // ¿¹¼± ¹Ì¼Ç Ŭ¸®¾î½Ã Æ÷ÀÎÆ® Àû¸³ struct TQAddGuildWarPointRecodrd : public TQHeader { INT64 biCharacterDBID; // ij¸¯ÅÍ DBID int nMissionID; // ±æµåÀü ¹Ì¼Ç ID int nOpeningPoint; // ȹµæÇÑ ¹Ì¼Ç Æ÷ÀÎÆ® UINT nGuildDBID; // ¼Ò¼Ó ±æµå ID char cTeamColorCode; // 1-ûÆÀ, 2-È«ÆÀ }; struct TAAddGuildWarPointRecodrd : public TAHeader { char cWorldSetID; char cTeamColorCode; // 1-ûÆÀ, 2-È«ÆÀ UINT nGuildDBID; // ¼Ò¼Ó ±æµå ID int nOpeningPoint; // ȹµæÇÑ ¹Ì¼Ç Æ÷ÀÎÆ® }; // QUERY_GET_GUILDWARPOINT // ¿¹¼± Æ÷ÀÎÆ® Á¶È¸ struct TQGetGuildWarPoint : public TQHeader { char cQueryType; // 'C'=ij¸¯ÅÍ ¿¹¼± Æ÷ÀÎÆ® Á¶È¸, 'G'=±æµå ¿¹¼±Æ÷ÀÎÆ® Á¶È¸, 'T'=ÆÀ ¿¹¼±Æ÷ÀÎÆ® Á¶È¸ INT64 biDBID; // C-ij¸¯ÅÍ ID, G-±æµå ID, T-0 }; struct TAGetGuildWarPoint : public TAHeader { char cQueryType; INT64 biDBID; int nCharOpeningPoint; int nGuildOpeningPoint; int nBlueTeamPoint; int nRedTeamPoint; }; // QUERY_GET_GUILDWARPOINT_PARTTOTAL // ºÎ¹®º° 1À§ Á¶È¸(°³ÀÎ) struct TQGetGuildWarPointPartTotal : public TQHeader { char cQueryType; // 'A' = Àüü, 'C' = °³ÀÎ INT64 biCharacterDBID; }; struct SGuildWarPointPartTotal { short wRanking; // ¼øÀ§ INT64 biCharacterDBID; // ij¸¯ÅÍ ID WCHAR wszCharName[NAMELENMAX]; // ij¸¯ÅÍ À̸§ UINT nGuildDBID; // ±æµå ID WCHAR wszGuildName[GUILDNAME_MAX]; // ±æµå À̸§ int nPoint; // Á¡¼ö }; struct TAGetGuildWarPointPartTotal : public TAHeader { char cQueryType; SGuildWarPointPartTotal GuildWarPointPartTotal[GUILDWAR_RANKINGTYPE_MAX]; // °¢ ºÎ¹®º° Áý°è ¼øÀ§ }; // QUERY_GET_GUILDWARPOINT_GUILD_PARTTOTAL // ºÎ¹®º° ±æµå ¼øÀ§ struct TQGetGuildWarPointGuildPartTotal : public TQHeader { char cQueryType; // 'A' = Àüü, 'G' = ±æµå UINT nGuildDBID; // ±æµå ID }; struct TAGetGuildWarPointGuildPartTotal : public TAHeader { char cQueryType; // 'A' = Àüü, 'G' = ±æµå SGuildWarPointPartTotal GuildWarPointPartTotal[GUILDWAR_RANKINGTYPE_MAX]; // °¢ ºÎ¹®º° Áý°è ¼øÀ§ }; // QUERY_GET_GUILDWARPOINT_DAILY // ¿¹¼±Àü °¢ ÀÏÀÚº° 1À§ struct TQGetGuildWarPointDaily : public TQHeader { }; struct SGuildWarPointDaily { int nTotalPoint; INT64 biCharacterDBID; // ij¸¯ÅÍ ID WCHAR wszCharName[NAMELENMAX]; // ij¸¯ÅÍ À̸§ UINT nGuildDBID; // ±æµå ID }; struct TAGetGuildWarPointDaily : public TAHeader { SGuildWarPointDaily sGuildWarPointDaily[GUILDWAR_DAILY_AWARD_MAX]; }; // QUERY_GET_GUILDWARPOINT_GUILD_TOTAL // °¢ ±æµåÀÇ Æ÷ÀÎÆ® Áý°è ¼øÀ§ÇöȲ(¿©±â¼­ º»¼± ÁøÃâÆÀ Á¶È¸µµ °¡´ÉÇÔ) struct TQGetGuildWarPointGuildTotal : public TQHeader { bool bMasterServer; // ¸¶½ºÅÍ ¼­¹ö¿¡¼­ÀÇ ¿äûÀÎÁö.. char cQueryType; // 'A' = Àüü, 'G' = ±æµå short wScheduleID; // ±æµåÀü Â÷¼ö UINT nGuildDBID; // ±æµå ID }; struct SGuildWarPointGuildTotal { short wRanking; // ±æµå ·©Å· UINT nGuildDBID; // ±æµå ID WCHAR wszGuildName[GUILDNAME_MAX]; // ±æµå À̸§ INT64 biMasterDBID; // ±æµåÀå ij¸¯ÅÍ ID WCHAR wszMasterName[NAMELENMAX]; // ±æµåÀå À̸§ short wGuildLevel; // ±æµå ·¹º§ short wGuildMemberCount; // ÇöÀç ±æµå ¸â¹ö¼ö int nOpeningPointSum; // ¿¹¼± Á¡¼ö ÇÕ»ê int nMaxMemberCount; // ±æµå¿ø ÃÖ´ë °¡ÀÔ Àοø¼ö }; struct TAGetGuildWarPointGuildTotal : public TAHeader { bool bMasterServer; // ¸¶½ºÅÍ ¼­¹ö¿¡¼­ÀÇ ¿äûÀÎÁö.. char cQueryType; // 'A' = Àüü, 'G' = ±æµå int nTotalCount; SGuildWarPointGuildTotal sGuildWarPointGuildTotal[GUILDWAR_FINALS_TEAM_MAX]; }; //QUERY_GET_GUILDWARPOINT_RUNNING_TOTAL // ±æµåÀü ¿¹¼±Àü Á¡¼ö ÇöȲ(24À§±îÁö) struct TQGetGuildWarPointRunningTotal : public TQHeader { //ÀÏ´Ü GUILDº°·Î »Ì´Â°Ç ¾È¾²´Ï ÆÐ¾².. }; struct TAGetGuildWarPointRunningTotal : public TAHeader { int nTotalCount; SGuildWarPointGuildTotal sGuildWarPointGuildTotal[GUILDWAR_TRIAL_POINT_TEAM_MAX]; }; //QUERY_GET_GUILDWARPOINT_FINAL_REWARDS struct TAGetGuildWarPointFinalRewards : public TAHeader { UINT nGuildDBID[GUILDWAR_FINALS_TEAM_MAX]; // °»½ÅÇÒ GuildDBID int nGuildPoint[GUILDWAR_FINALS_TEAM_MAX]; // °»½ÅÇÒ GuildPoint }; // QUERY_ADD_GUILDWAR_FINAL_MATCHLIST // º»¼± ´ëÁøÇ¥ ÀúÀå struct TQAddGuildWarFinalMatchList : public TQHeader { short wScheduleID; // ±æµåÀü Â÷¼ö UINT nGuildDBID[GUILDWAR_FINALS_TEAM_MAX]; // ´ëÁøÇ¥ ¼ø¼­º° ±æµå ID(Áß°£¿¡ °ø¹é ÀÖÀ» ¼ö ÀÖÀ½) }; struct TAAddGuildWarFinalMatchList : public TAHeader { }; // QUERY_ADD_GUILDWARPOPULARITYVOTE // Àαâ ÅõÇ¥ ÀúÀå struct TQAddGuildWarPopularityVote : public TQHeader { INT64 biCharacterDBID; // ij¸¯ÅÍ DBID UINT nGuildDBID; // ÅõÇ¥ ±æµå ID }; struct TAAddGuildWarPopularityVote : public TAHeader { }; // QUERY_GET_GUILDWARPOPULARITYVOTE // Àαâ ÅõÇ¥ °á°ú(ij¸¯ÅͰ¡ ÅõÇ¥¸¦ Çß´ÂÁö Á¶È¸¿¡µµ »ç¿ë) struct TQGetGuildWarPopularityVote : public TQHeader { char cQueryType; // 'C' - ij¸¯ÅÍ ÅõÇ¥¿©ºÎ, 'G'-±æµåÁ¶È¸ INT64 biCharacterDBID; // ij¸¯ÅÍ DBID }; struct TAGetGuildWarPopularityVote : public TAHeader { char cQueryType; // 'C' - ij¸¯ÅÍ ÅõÇ¥¿©ºÎ, 'G'-±æµåÁ¶È¸ UINT nGuildDBID; // ÅõÇ¥ or 1À§ÇÑ ±æµå ID WCHAR wszGuildName[GUILDNAME_MAX]; // ±æµå À̸§ int nPopularityVoteCount; // ÃѵæÇ¥¼ö }; // QUERY_ADD_GUILDWARFINALRESULTS // ±æµåÀü º»¼± °á°ú ÀúÀå struct TQAddGuildWarFinalResults : public TQHeader { UINT nGuildDBID; // ÅõÇ¥ ±æµå ID short wScheduleID; // ±æµåÀü Â÷¼ö char cMatchSequence; // ´ëÁøÇ¥»ó ¹øÈ£ char cMatchTypeCode; // 1=°á½Â, 2=4°­, 3=8°­, 4=16°­ char cMatchResultCode; // 1=½Â¸®, 2=ÆÐ¹è, 3=±â±Ç, 4=ºÎÀü½Â }; struct TAAddGuildWarFinalResults : public TAHeader { }; // QUERY_GET_GUILDWARFINALRESULTS // ±æµåÀü º»¼± °á°ú °¡Á®¿À±â struct TQGetGuildWarFinalResults : public TQHeader { short wScheduleID; // ±æµåÀü Â÷¼ö }; struct SGuildFinalResultInfo { UINT nGuildDBID; // ±æµå ID WCHAR wszGuildName[GUILDNAME_MAX]; // ±æµå À̸§ char cMatchSequence; // ´ëÁøÇ¥»ó ¹øÈ£ char cMatchTypeCode; // 1=°á½Â, 2=4°­, 3=8°­, 4=16°­ char cMatchResultCode; // 1=½Â¸®, 2=ÆÐ¹è, 3=±â±Ç, 4=ºÎÀü½Â short wGuildMark; // ±æµå¸¶Å© ¹®¾ç short wGuildMarkBG; // ±æµå¸¶Å© ¹è°æ short wGuildMarkBorder; // ±æµå¸¶Å© Å׵θ® }; struct TAGetGuildWarFinalResults : public TAHeader { SGuildFinalResultInfo GuildFinalResultInfo[GUILDWAR_FINALS_TEAM_MAX]; // °á½ÂÀü °á°ú Á¤º¸.. }; // QUERY_GET_GUILDWAR_PRE_WIN_GUILD // ±æµåÀü Áö³­ Â÷¼ö ¿ì½ÂÆÀ °¡Á®¿À±â struct TQGetGuildWarPreWinGuild : public TQHeader { }; struct TAGetGuildWarPreWinGuild : public TAHeader { UINT nGuildDBID; // ±æµå ID short wScheduleID; // ±æµåÀü Â÷¼ö }; //QUERY_ADD_GUILDWAR_REWARD_CHARACTER struct TQAddGuildWarRewardCharacter : public TQHeader { short wScheduleID; // ±æµåÀü Â÷¼ö INT64 biCharacterDBID; // ij¸¯ÅÍ DBID char cRewardType; // º¸»ó ÄÚµå(1=¿¹¼± º¸»ó ¼±¹°, 2=¿¹¼± º¸»ó ¸ÞÀÏ, 3=¿¹¼± º¸»ó Æ÷ÀÎÆ®) }; struct TAAddGuildWarRewardCharacter : public TAHeader { char cRewardType; // º¸»ó ÄÚµå(1=¿¹¼± º¸»ó ¼±¹°, 2=¿¹¼± º¸»ó ¸ÞÀÏ, 3=¿¹¼± º¸»ó Æ÷ÀÎÆ®) }; //QUERY_GET_GUILDWAR_REWARD_CHARACTER struct TQGetGuildWarRewardCharacter : public TQHeader { short wScheduleID; // ±æµåÀü Â÷¼ö INT64 biCharacterDBID; // ij¸¯ÅÍ DBID }; struct TAGetGuildWarRewardCharacter : public TAHeader { bool bRewardResults[GUILDWAR_REWARD_CHAR_MAX]; //ÀúÀåµÈ °³Àκ¸»ó °á°ú }; //QUERY_ADD_GUILDWAR_REWARD_GUILD // ±æµåÀü ±æµå º¸»ó°á°ú ÀúÀå struct TQAddGuildWarRewardGuild : public TQHeader { short wScheduleID; // ±æµåÀü Â÷¼ö UINT nGuildDBID; // ±æµå DBID char cRewardType; // º¸»ó ÄÚµå(1=º»¼± º¸»ó ½ºÅ³, 2=º»¼± º¸»ó ¼±¹°, 3=º»¼± º¸»ó ¸ÞÀÏ, 4=¿¹¼± º¸»ó Æ÷ÀÎÆ®, 5=º»¼± º¸»ó Æ÷ÀÎÆ®) }; struct TAAddGuildWarRewardGuild : public TAHeader { char cWorldSetID; UINT nGuildDBID; // ±æµå DBID char cRewardType; // º¸»ó ÄÚµå(1=º»¼± º¸»ó ½ºÅ³, 2=º»¼± º¸»ó ¼±¹°, 3=º»¼± º¸»ó ¸ÞÀÏ, 4=¿¹¼± º¸»ó Æ÷ÀÎÆ®, 5=º»¼± º¸»ó Æ÷ÀÎÆ®) }; //QUERY_GET_GUILDWAR_REWARD_GUILD // ±æµåÀü ±æµå º¸»ó°á°ú °¡Á®¿À±â struct TQGetGuildWarRewardGuild : public TQHeader { char cQueryType; // 'M' - ¸¶½ºÅÍ Á¦½ºÃÄ Áö±Þ ¿©ºÎ È®ÀÎ, 'V'-ºô¸®Áö ¿äû short wScheduleID; // ±æµåÀü Â÷¼ö UINT nGuildDBID; // ±æµå DBID }; struct TAGetGuildWarRewardGuild : public TAHeader { char cQueryType; // 'M' - ¸¶½ºÅÍ Á¦½ºÃÄ Áö±Þ ¿©ºÎ È®ÀÎ, 'V'-ºô¸®Áö ¿äû char cWorldSetID; UINT nGuildDBID; // ±æµå DBID bool bRewardResults[GUILDWAR_REWARD_GUILD_MAX]; //ÀúÀåµÈ ±æµåº¸»ó °á°ú }; //QUERY_ADD_GUILDWAR_POINT_QUEUE (ÃàÁ¦Æ÷ÀÎÆ® Áö±Þ) struct TQAddGuildWarPointQueue : public TQHeader { UINT nGuildDBID; // ±æµå ID INT64 biAddPoint; WCHAR wszIP[IPLENMAX]; // ±×³É ¼­¹ö ¾ÆÀÌÇÇ? }; //QUERY_ADD_GUILDWAR_SYSTEM_MAIL_QUEUE //¿ä°Å TQSendSystemMail ±¸Á¶Ã¼ ±×´ë·Î¾¸.. //QUERY_ADD_GUILDWAR_MAKE_GIFT_QUEUE struct TQAddGuilWarMakeGiftQueue : public TQHeader { char cRewardType; INT64 biCharacterDBIDs[GUILDSIZE_MAX]; // º¸³¾ ¾ÖµéÀÇ Ä³¸¯ÅÍ DBID char cClass[GUILDSIZE_MAX]; // º¸³¾ ¾ÖµéÀÇ Class }; //QUERY_ADD_GUILDWAR_MAKE_GIFT_NOTGUILDINFO struct TQAddGuildWarMakeGiftNotGuildInfo : public TQHeader { char cRewardType; UINT nGuildDBID; }; // QUERY_ADD_JOB_RESERVE struct TQAddJobReserve : public TQHeader { char cJobType; }; struct TAAddJobReserve : public TAHeader { char cJobType; int nJobSeq; }; // QUERY_GET_JOB_RESERVE struct TQGetJobReserve : public TQHeader { int nJobSeq; }; struct TAGetJobReserve : public TAHeader { int nJobSeq; char cJobStatus; }; struct TQGetListGuildWarItemTradeRecord : public TQHeader { INT64 characterDBID; }; struct TAGetListGuildWarItemTradeRecord : public TAHeader { int count; ItemCount itemCount[INVENTORYMAX + WAREHOUSEMAX]; }; struct TQAddGuildWarItemTradeRecord : public TQHeader { INT64 characterDBID; ItemCount itemCount; }; //QUERY_CHANGEGUILDWARESIZE struct TQChangeGuildWareSize : public TQHeader { INT64 nCharacterDBID; // ij¸¯ÅÍ DBID UINT nGuildDBID; // ±æµå DBID short wStorageSize; // â°í »çÀÌÁî }; struct TAChangeGuildWareSize: public TAHeader { INT64 nCharacterDBID; // ij¸¯ÅÍ DBID UINT nGuildDBID; // ±æµå DBID char cWorldSetID; // ¿ùµå ID short wStorageSize; // â°í »çÀÌÁî }; //QUERY_CHANGEGUILDMARK struct TQChangeGuildMark : public TQHeader { INT64 nCharacterDBID; // ij¸¯ÅÍ DBID UINT nGuildDBID; // ±æµå DBID short wGuildMark; // ±æµå¸¶Å© ¹®¾ç short wGuildMarkBG; // ±æµå¸¶Å© ¹è°æ short wGuildMarkBorder; // ±æµå¸¶Å© Å׵θ® }; struct TAChangeGuildMark: public TAHeader { INT64 nCharacterDBID; // ij¸¯ÅÍ DBID UINT nGuildDBID; // ±æµå DBID char cWorldSetID; // ¿ùµå ID short wGuildMark; // ±æµå¸¶Å© ¹®¾ç short wGuildMarkBG; // ±æµå¸¶Å© ¹è°æ short wGuildMarkBorder; // ±æµå¸¶Å© Å׵θ® }; #if defined(PRE_ADD_GUILD_CONTRIBUTION) struct TQGetGuildContributionPoint: public TQHeader { INT64 biCharacterDBID; }; struct TAGetGuildContributionPoint: public TAHeader { int nWeeklyGuildContributionPoint; // ÁÖ°£ ±æµå °øÇåµµ int nTotalGuildContributionPoint; // ¿©Å±îÁö ¿Ã¸° ±æµå °øÇåµµ ¼öÄ¡ }; struct TQGetGuildContributionRanking: public TQHeader { UINT nGuildDBID; }; struct TAGetGuildContributionRanking: public TAHeader { int nCount; // ±æµå¿ø Á¤º¸ °³¼ö GuildContribution::TGuildContributionRankingData ContributionRankingList[GUILDSIZE_MAX]; }; #endif //######################################################################################################################################### // MAINCMD_PVP //######################################################################################################################################### struct TQUpdatePvPData:public TQHeader { INT64 biCharacterDBID; PvPCommon::QueryUpdatePvPDataType::eCode Type; TPvPGroup PvP; }; struct TAUpdatePvPData: public TAHeader { PvPCommon::QueryUpdatePvPDataType::eCode Type; }; struct TQUpdatePvPRankCriteria : public TQHeader { UINT nThresholdPvPExp; }; struct TQForceCalcPvPRank : public TQHeader { }; struct LadderKillResult { BYTE cJobCode; short nKillCount; short nDeathCount; }; struct TQAddPvPLadderResult:public TQHeader { PvPCommon::QueryUpdatePvPDataType::eCode Type; INT64 biCharacterDBID; BYTE cPvPLadderCode; // LadderSystem::MatchType::eCode int iPvPLadderGradePoint; int iHiddenPvPLadderGradePoint; BYTE cResult; // LadderSystem::MatchResult::eCode BYTE cVersusCharacterJobCode; BYTE cKillDeathCount; LadderKillResult KillDeathCounts[JOB_KIND_MAX]; }; struct TAAddPvPLadderResult:public TAHeader { PvPCommon::QueryUpdatePvPDataType::eCode Type; }; struct TQGetListPvPLadderScore:public TQHeader { INT64 biCharacterDBID; }; struct TAGetListPvPLadderScore:public TAHeader { TPvPLadderScoreInfo Data; }; struct TQGetListPvPLadderScoreByJob:public TQHeader { INT64 biCharacterDBID; }; struct TAGetListPvPLadderScoreByJob:public TAHeader { TPvPLadderScoreInfoByJob Data; }; struct TQInitPvPLadderGradePoint:public TQHeader { INT64 biCharacterDBID; BYTE cPvPLadderCode; int iPvPLadderPoint; // Áõ°¡Ä¡ ÀÔ·Â(-°¡´É) int iPvPLadderGradePoint; // ÃʱâÈ­ÇÒ PvP ·¡´õ ÆòÁ¡ Æ÷ÀÎÆ® char szIP[IPLENMAX]; }; struct TAInitPvPLadderGradePoint:public TAHeader { }; struct TQUsePvPLadderPoint:public TQHeader { INT64 biCharacterDBID; int iPvPLadderPoint; // »ç¿ëÇÑ ·¡´õ Æ÷ÀÎÆ® int iMapID; char szIP[IPLENMAX]; int iAfterLadderPoint; }; struct TAUsePvPLadderPoint:public TAHeader { int iPvPLadderPointAfter; // »ç¿ëÈij²Àº PvP·¡´õÆòÁ¡ }; struct TQAddPvPLadderCUCount:public TQHeader { BYTE cPvPLadderCode; int iCUCount; }; struct TQModPvPLadderScoresForCheat:public TQHeader { INT64 biCharacterDBID; BYTE cPvPLadderCode; int iPvPLadderPoint; int iPvPLadderGradePoint; int iHiddenPvPLadderGradePoint; }; struct TAModPvPLadderScoresForCheat:public TAHeader { BYTE cPvPLadderCode; int iPvPLadderPoint; int iPvPLadderGradePoint; int iHiddenPvPLadderGradePoint; }; struct TQGetListPvPLadderRanking:public TQHeader { INT64 biCharacterDBID; BYTE cPvPLadderCode; }; struct TAGetListPvPLadderRanking:public TAHeader { TPvPLadderRanking MyRanking; TPvPLadderRanking Top[LadderSystem::Common::RankingTop]; }; #if defined(PRE_ADD_PVP_RANKING) //ÀÏ¹Ý Ranking struct TQGetPvPRankBoard:public TQHeader { INT64 biCharacterDBID; }; struct TAGetPvPRankBoard:public TAHeader { TPvPRankingDetail MyRanking; }; struct TQGetPvPRankList:public TQHeader { int iPage; BYTE cClassCode; BYTE cSubClassCode; WCHAR wszGuildName[GUILDNAME_MAX]; }; struct TAGetPvPRankList:public TAHeader { INT64 biRankingTotalCount; BYTE cRankingCount; TPvPRanking RankingInfo[RankingSystem::RANKINGMAX]; }; struct TQGetPvPRankInfo:public TQHeader { WCHAR wszCharName[NAMELENMAX]; }; struct TAGetPvPRankInfo:public TAHeader { TPvPRankingDetail RankingInfo; }; //Ladder Ranking struct TQGetPvPLadderRankBoard:public TQHeader { INT64 biCharacterDBID; BYTE cPvPLadderCode; }; struct TAGetPvPLadderRankBoard:public TAHeader { BYTE cPvPLadderCode; TPvPLadderRankingDetail MyRanking; }; struct TQGetPvPLadderRankList:public TQHeader { int iPage; BYTE cClassCode; BYTE cSubClassCode; BYTE cPvPLadderCode; WCHAR wszGuildName[GUILDNAME_MAX]; }; struct TAGetPvPLadderRankList:public TAHeader { INT64 biRankingTotalCount; BYTE cRankingCount; BYTE cPvPLadderCode; TPvPLadderRanking2 RankingInfo[RankingSystem::RANKINGMAX]; }; struct TQGetPvPLadderRankInfo:public TQHeader { WCHAR wszCharName[NAMELENMAX]; BYTE cPvPLadderCode; }; struct TAGetPvPLadderRankInfo:public TAHeader { BYTE cPvPLadderCode; TPvPLadderRankingDetail RankingInfo; }; struct TQForceAggregatePvPRank:public TQHeader { bool bIsPvPLadder; }; #endif struct TQAddPVPGhoulScores : public TQHeader { INT64 biCharacterDBID; int nGhoulWin; int nHumanWin; int nTimeOver; int nGhoulKill; int nHumanKill; int nHolyWaterUse; }; struct TQGetPVPGhoulScores : public TQHeader { INT64 biCharacterDBID; }; struct TAGetPVPGhoulScores : public TAHeader { int nPlayCount; int nGhoulWin; int nHumanWin; int nTimeOver; int nGhoulKill; int nHumanKill; int nHolyWaterUse; }; #if defined(PRE_ADD_PVP_TOURNAMENT) struct TQAddPVPTournamentResult : public TQHeader { int nTotalCount; #if defined( PRE_PVP_GAMBLEROOM ) INT64 nGambleDBID; #endif INT64 biCharacterDBID[PvPCommon::Common::PvPTournamentUserMax]; char cTournamentStep[PvPCommon::Common::PvPTournamentUserMax]; bool bWin[PvPCommon::Common::PvPTournamentUserMax]; }; #endif #if defined( PRE_PVP_GAMBLEROOM ) struct TQAddGambleRoom: public TQHeader { int nRoomID; BYTE cGambleType; int nGamblePrice; }; struct TAAddGambleRoom: public TAHeader { int nRetCode; char cWorldSetID; int nRoomID; INT64 nGambleDBID; }; struct TQAddGambleRoomMember: public TQHeader { INT64 nGambleDBID; INT64 biCharacterDBID; }; struct TQEndGambleRoom: public TQHeader { INT64 nGambleDBID; TPvPGambleRoomWinData Member[PvPGambleRoom::Max]; }; #endif //######################################################################################################################################### // MAINCMD_DARKLAIR //######################################################################################################################################### struct SDarkLairUserData { USHORT unLevel; // ·¹º§ int iJobIndex; // Á÷¾÷Index WCHAR wszCharacterName[NAMELENMAX]; // ij¸¯ÅÍÀ̸§(NULLÆ÷ÇÔ) SDarkLairUserData() { unLevel = 0; iJobIndex = 0; memset( wszCharacterName, 0, sizeof(wszCharacterName) ); } void Set( USHORT _unLevel, int _iJob, WCHAR* _pwszName ) { unLevel = _unLevel; iJobIndex = _iJob; if( _pwszName ) _wcscpy( wszCharacterName, _countof(wszCharacterName), _pwszName, (int)wcslen(_pwszName) ); } }; struct SDarkLairUpdateUserData : public SDarkLairUserData { bool bUpdate; // ÃÖÁ¾±îÁö Ç÷¹ÀÌÇÏ¿© °³Àαâ·Ï Update ÇÒÁö Ç÷¡±× INT64 i64CharacterDBID; // CharDBID SDarkLairUpdateUserData() { bUpdate = false; i64CharacterDBID = 0; } }; struct SDarkLairHistory { USHORT unPlayRound; // Ç÷¹ÀÌÇÑ Round ¼ö UINT uiPlaySec; // Ç÷¹ÀÌÇѽð£(ÃÊ) WCHAR wszPartyName[PARTYNAMELENMAX]; // ÆÄƼÀ̸§(NULLÆ÷ÇÔ) BYTE cPartyUserCount; SDarkLairUserData sUserData[DarkLair::Common::MaxPlayer]; SDarkLairHistory() { unPlayRound = 0; uiPlaySec = 0; cPartyUserCount = 0; memset( wszPartyName, 0, sizeof(wszPartyName) ); } void Set( USHORT _unPlayRound, UINT _uiPlaySec, WCHAR* _pwszPartyName ) { unPlayRound = _unPlayRound; uiPlaySec = _uiPlaySec; if( _pwszPartyName ) _wcscpy( wszPartyName, _countof(wszPartyName), _pwszPartyName, (int)wcslen(_pwszPartyName) ); } void AddUserData( USHORT _unLevel, int _iJob, WCHAR* _pwszName ) { if( cPartyUserCount >= DarkLair::Common::MaxPlayer ) return; sUserData[cPartyUserCount++].Set( _unLevel, _iJob, _pwszName ); } }; struct SDarkLairBestHistory : public SDarkLairHistory { INT64 i64CharacterDBID; int iRank; SDarkLairBestHistory() { i64CharacterDBID = 0; iRank = 0; } }; struct TQUpdateDarkLairResult:public TQHeader { int iRoomID; // °ÔÀÓ¼­¹öRoomID int iProtectionKey; // º¸È£Å° int iMapIndex; // Ç÷¹ÀÌÇÑ MapIndex USHORT unPlayRound; // Ç÷¹ÀÌÇÑ Round ¼ö UINT uiPlaySec; // Ç÷¹À̽ð£(ÃÊ) WCHAR wszPartyName[PARTYNAMELENMAX]; // ÆÄƼÀ̸§(NULLÆ÷ÇÔ) BYTE cPartyUserCount; SDarkLairUpdateUserData sUserData[DarkLair::Common::MaxPlayer]; }; struct TAUpdateDarkLairResult:public TBoostMemoryPool { short nRetCode; int iRoomID; // °ÔÀÓ¼­¹öRoomID int iProtectionKey; // º¸È£Å° int iRank; // ÇöÀç Ç÷¹ÀÌÇÑ ´ÙÅ©·¹¾î ·©Å· SDarkLairHistory sHistoryTop[DarkLair::Rank::SelectTop]; // »óÀ§·©Å· BYTE cPartyUserCount; SDarkLairBestHistory sBestUserData[DarkLair::Common::MaxPlayer]; // °³Àκ£½ºÆ® }; struct TQGetDarkLairRankBoard:public TQHeader { INT64 biCharacterDBID; int iMapIndex; BYTE cPartyUserCount; }; struct TAGetDarkLairRankBoard:public TAHeader { SDarkLairBestHistory sBestHistory; BYTE cPartyUserCount; #if defined(PRE_ADD_CHALLENGE_DARKLAIR) int iMapIndex; #endif SDarkLairHistory sHistoryTop[DarkLair::Rank::SelectRankBoardTop]; }; //######################################################################################################################################### // MAINCMD_AUTH //######################################################################################################################################### struct TABeginAuth: public TAHeader { UINT nSessionID; // ¼¼¼Ç ID char cCertifyingStep; // ÀÎÁõ ´Ü°è char cWorldSetID; // ¿ùµå ID (*) }; struct TQStoreAuth:public TQHeader // GA, VI »ç¿ë { INT64 biCertifyingKey; // ÀÎÁõŰ int nCurServerID; // ÇöÀç ¼­¹ö °íÀ¯¹øÈ£ char cWorldSetID; // ¿ùµå ID (*) UINT nSessionID; // ¼¼¼Ç ID INT64 biCharacterDBID; // ij¸¯ÅÍ DBID WCHAR wszAccountName[IDLENMAX]; // °èÁ¤ À̸§ WCHAR wszCharacterName[NAMELENMAX]; // ij¸¯ÅÍ À̸§ BYTE bIsAdult; // ¼ºÀÎ ¿©ºÎ BYTE nAge; // ³ªÀÌ BYTE nDailyCreateCount; // ÀÏÀÏ Ä³¸¯ÅÍ »ý¼º°¡´É Ƚ¼ö int nPrmInt1; // ÆÄ¶ó¸ÞÅÍ 1 (±¹°¡º° ´Ù¸ñÀû) char cLastServerType; // ÃÖ±Ù ¼­¹ö ŸÀÔ (eServerType / 0 : ·Î±×ÀÎ, 2 : ºô¸®Áö, 3 : °ÔÀÓ) }; struct TAStoreAuth: public TAHeader // GA, VI »ç¿ë { UINT nSessionID; // ¼¼¼Ç ID }; struct TQCheckAuth:public TQHeader // GA, VI »ç¿ë { INT64 biCertifyingKey; // ÀÎÁõŰ int nCurServerID; // ÇöÀç ¼­¹ö °íÀ¯¹øÈ£ int nSessionID; }; struct TACheckAuth: public TAHeader // GA, VI »ç¿ë { char cWorldSetID; // ¿ùµå ID (*) UINT nSessionID; // ¼¼¼Ç ID INT64 biCertifyingKey; // ÀÎÁõŰ INT64 biCharacterDBID; // ij¸¯ÅÍ DBID WCHAR wszAccountName[IDLENMAX]; // °èÁ¤ À̸§ WCHAR wszCharacterName[NAMELENMAX]; // ij¸¯ÅÍ À̸§ char cAccountLevel; // ¿î¿µÀÚ, °³¹ßÀÚ µîµîÀÇ °èÁ¤·¹º§ BYTE bIsAdult; // ¼ºÀÎ ¿©ºÎ char nAge; // ³ªÀÌ BYTE nDailyCreateCount; // ÀÏÀÏ Ä³¸¯ÅÍ »ý¼º°¡´É Ƚ¼ö int nPrmInt1; // ÆÄ¶ó¸ÞÅÍ 1 (±¹°¡º° ´Ù¸ñÀû) char cLastServerType; // ÃÖ±Ù ¼­¹ö ŸÀÔ (eServerType / 0 : ·Î±×ÀÎ, 2 : ºô¸®Áö, 3 : °ÔÀÓ) }; struct TQResetAuth:public TQHeader // GA, VI »ç¿ë { UINT nSessionID; // ¼¼¼Ç ID }; struct TAResetAuth: public TAHeader // GA, VI »ç¿ë (¾ÈÇÔ ???) { UINT nSessionID; // ¼¼¼Ç ID }; struct TQResetAuthServer:public TQHeader { int nServerID; // ¼­¹ö °íÀ¯¹øÈ£ }; struct TAResetAuthServer { int nServerID; // ¼­¹ö °íÀ¯¹øÈ£ int nResult; // Äõ¸® °á°ú }; struct TQGetAuthWorldUserCnt:public TQHeader //QUERY_AUTHUSERCOUNT { int nServerID; }; struct TAuthWorldUserCnt { int nWorldSetID; UINT nWorldUserCnt; }; struct TAGetAuthWorldUserCnt { int nServerID; short nResult; BYTE cCount; TAuthWorldUserCnt User[WORLDCOUNTMAX]; }; struct TQSetWorldIDAuth:public TQHeader //QUERY_SETWOLRDID { }; //######################################################################################################################################### // MAINCMD_CASH //######################################################################################################################################### // QUERY_GETLISTGIVEFAILITEM, // ij½¬¾ÆÀÌÅÛ ½ÇÆÐÇѰЏ®½ºÆ® ¾ò¾î¿À±â (selectÇÒ¶§ °°ÀÌ ¹Þ´Â°ÅÀÓ) struct TAGetListGiveFailItem: public TAHeader { int nCount; DBPacket::TCashFailItem CashFailItem[CASHINVENTORYDBMAX]; }; // QUERY_MODGIVEFAILFLAG struct TQModGiveFailFlag: public TQHeader { INT64 biCharacterDBID; int nMapID; int nChannelID; WCHAR wszIP[IPLENMAX]; int nCount; DBPacket::TModCashFailItemEx CashItem[CASHINVENTORYDBMAX]; }; struct TAModGiveFailFlag: public TAHeader { int nCount; TCashItemBase CashItem[CASHINVENTORYDBMAX]; }; // QUERY_GETREMAINPETAL struct TQGetRemainPetal: public TQHeader { }; struct TAGetRemainPetal: public TAHeader { int nPetal; }; // QUERY_PURCHASEITEMBYFAKEPETAL struct TQPurchaseItemByFakePetal:public TQHeader { int nChannelID; int nMapID; char cCartType; char cCount; DBPacket::TPetalInfo PetalInfo[CARTLISTMAX]; }; struct TAPurchaseItemByFakePetal: public TAHeader { char cCartType; char cCount; DBPacket::TPetalInfoEx PetalInfo[CARTLISTMAX]; }; // QUERY_CHECKGIFTRECEIVER struct TQCheckGiftReceiver:public TQHeader { WCHAR wszCharacterName[NAMELENMAX]; }; struct TACheckGiftReceiver: public TAHeader { BYTE cLevel; BYTE cJob; }; // QUERY_GETLISTGIFTBOX struct TQGetListGiftBox: public TQHeader { INT64 biCharacterDBID; #if defined(PRE_ADD_MULTILANGUAGE) char cSelectedLang; #endif //#if defined(PRE_ADD_MULTILANGUAGE) }; struct TAGetListGiftBox: public TAHeader { #if defined(PRE_ADD_MULTILANGUAGE) char cSelectedLang; #endif //#if defined(PRE_ADD_MULTILANGUAGE) char cCount; TGiftInfo GiftBox[GIFTBOXLISTMAX]; }; // QUERY_MODGIFTRECEIVEFLAG struct TQModGiftReceiveFlag: public TQHeader { INT64 biCharacterDBID; #if defined(PRE_RECEIVEGIFTALL) bool bReceiveAll; #endif // #if defined(PRE_RECEIVEGIFTALL) char cCount; TReceiveGiftData GiftData[GIFTPAGEMAX]; }; struct TAModGiftReceiveFlag: public TAHeader { #if defined(PRE_RECEIVEGIFTALL) bool bReceiveAll; #endif // #if defined(PRE_RECEIVEGIFTALL) char cCount; DBPacket::TReceiveGift ReceiveGift[GIFTPAGEMAX]; }; // QUERY_RECEIVEGIFT, // ¼±¹°¹Þ±â struct TGiftItem { int nItemSN; TItem AddItem; DWORD dwPartsColor1; // ÆÄÃ÷ »ö±ò DWORD dwPartsColor2; TVehicleItem VehiclePart1; TVehicleItem VehiclePart2; }; struct TQReceiveGift: public TQHeader { #if defined(PRE_RECEIVEGIFTALL) bool bReceiveAll; char cTotalCount; #endif // #if defined(PRE_RECEIVEGIFTALL) TReceiveGiftData GiftData; int nChannelID; int nMapID; WCHAR wszIP[IPLENMAX]; int nItemSN; char cCount; TGiftItem GiftItem[PACKAGEITEMMAX]; }; struct TAReceiveGift: public TAHeader { INT64 biPurchaseOrderID; UINT nReceiverAccountDBID; INT64 biReceiverCharacterDBID; int nReceiverTotalMailCount; int nReceiverNotReadMailCount; int nReceiver7DaysLeftMailCount; #if defined(PRE_ADD_VIP) char cPayMethodCode; #endif // #if defined(PRE_ADD_VIP) #if defined(PRE_RECEIVEGIFTALL) bool bReceiveAll; char cTotalCount; #endif // #if defined(PRE_RECEIVEGIFTALL) int nItemSN; char cCount; TGiftItem GiftItem[PACKAGEITEMMAX]; }; // QUERY_GIFTRETURN #if defined(PRE_ADD_GIFT_RETURN) struct TQGiftReturn: public TQHeader { INT64 biPurchaseOrderID; }; struct TAGiftReturn : public TAHeader { INT64 biPurchaseOrderID; UINT nReceiverAccountDBID; INT64 biReceiverCharacterDBID; int nReceiverTotalMailCount; }; #endif //#if defined(PRE_ADD_GIFT_RETURN) #if defined(PRE_ADD_CASH_REFUND) struct TQPaymentItemList : public TQHeader { INT64 biCharacterDBID; }; struct TAPaymentItemList : public TAHeader { int nPaymentCount; TPaymentItemInfoEx PaymentItemList[CASHINVENTORYMAX]; // ¹«ÇÑ´ë·Î ¸¸µé¾î¾ß Çϴµ¥..ÀÏ´Ü 150°³ }; struct TAPaymentPackageItemList : public TAHeader { int nPaymentPackegeCount; TPaymentPackageItemInfoEx PaymentPackageItemList[CASHINVENTORYMAX]; }; #endif // QUERY_NOTIFYGIFT, // ¼±¹° ¾Ë¸®¹Ì struct TQNotifyGift: public TQHeader { INT64 biCharacterDBID; bool bNew; }; struct TANotifyGift: public TAHeader { bool bNew; int nGiftCount; }; struct TQAddEffectItems:public TQHeader { INT64 biCharacterDBID; char cItemLifeSpanRenewal; int iItemID; DBDNWorldDef::EffectItemGetCode::eCode Code; INT64 biFKey; int iPrice; bool bEternityFlag; int iItemLifeSpan; int iProperty[5]; INT64 biItemSerial; int iRemoveItemID; }; // QUERY_MAKEGIFTBYQUEST, // Äù½ºÆ® ¿Ï·á º¸»ó struct TQMakeGiftByQuest: public TQHeader { INT64 biCharacterDBID; bool bPCBang; int nQuestID; WCHAR wszMemo[GIFTMESSAGEMAX]; int nLifeSpan; char szIp[IPLENMAX]; bool bNewFlag; char cRewardCount; int nRewardItemSN[MAILATTACHITEMMAX]; }; struct TAMakeGiftByQuest: public TAHeader { int nGiftCount; }; // QUERY_MAKEGIFTBYMISSION, // ¹Ì¼Ç ¿Ï·á º¸»ó struct TQMakeGiftByMission: public TQHeader { INT64 biCharacterDBID; bool bPCBang; int nMissionID; WCHAR wszMemo[GIFTMESSAGEMAX]; int nLifeSpan; char szIp[IPLENMAX]; bool bNewFlag; char cRewardCount; int nRewardItemSN[MISSIONREWARDITEMMAX]; }; struct TAMakeGiftByMission: public TAHeader { int nGiftCount; }; // QUERY_MAKEGIFT struct TQMakeGift: public TQHeader { INT64 biCharacterDBID; bool bPCBang; WCHAR wszMemo[GIFTMESSAGEMAX]; int nLifeSpan; char cPayMethodCode; // PayMethodCode¿¡ µû¶ó¼­ FKey°ªÀ» °áÁ¤ int iOrderKey; char szIp[IPLENMAX]; bool bNewFlag; char cRewardCount; int nRewardItemSN[5]; }; struct TAMakeGift: public TAHeader { int nGiftCount; }; // QUERY_INCREASEVIPPOINT, // VIP ±âº» Æ÷ÀÎÆ® °¡»ê struct TQIncreaseVIPPoint: public TQHeader { INT64 biCharacterDBID; int nBasicPoint; // VIP Á¤¾×Á¦ »óǰ ±¸ÀÔ¿¡ µû¸¥ ±âº» Æ÷ÀÎÆ® INT64 biPurchaseOrderID; // ¾ÆÀÌÅÛ ±¸ÀÔ ÁÖ¹® ID short wVIPPeriod; // VIP ±â°£. ´ÜÀ§ : Day. 30ÀÏ, 90ÀÏ, 180ÀÏ, 360ÀÏ bool bAutoPay; // 0=¼öµ¿°áÁ¦, 1=ÀÚµ¿°áÁ¦ }; struct TAIncreaseVIPPoint: public TAHeader { int nVIPTotalPoint; // ÃÑ VIP Æ÷ÀÎÆ® __time64_t tVIPEndDate; // VIP ±â°£ ³¡ ÀÏÀÚ }; // QUERY_GETVIPPOINT, // VIP ±â°£ ¹× Æ÷ÀÎÆ® Á¶È¸ struct TQGetVIPPoint: public TQHeader { INT64 biCharacterDBID; }; struct TAGetVIPPoint: public TAHeader { int nVIPTotalPoint; // ÃÑ VIP Æ÷ÀÎÆ® __time64_t tVIPEndDate; // VIP ±â°£ ³¡ ÀÏÀÚ bool bAutoPay; // 0=¼öµ¿°áÁ¦, 1=ÀÚµ¿°áÁ¦ }; // QUERY_MODVIPAUTOPAYFLAG, // VIP ÀÚµ¿ °áÁ¦ »óÅ º¯°æ struct TQModVIPAutoPayFlag: public TQHeader { INT64 biCharacterDBID; bool bAutoPay; // 0=¼öµ¿°áÁ¦, 1=ÀÚµ¿°áÁ¦ }; struct TAModVIPAutoPayFlag: public TAHeader { bool bAutoPay; // 0=¼öµ¿°áÁ¦, 1=ÀÚµ¿°áÁ¦ }; // QUERY_GIFTBYCHEAT struct TQGiftByCheat: public TQHeader { INT64 biCharacterDBID; WCHAR wszCharacterName[NAMELENMAX]; int nItemSN; char szIp[IPLENMAX]; }; // QUERY_PETAL struct TQPetal: public TQHeader { INT64 biCharacterDBID; int nUseItemID; int nAddPetal; char cInvenType; // eItemPositionType BYTE cInvenIndex; // ÀϹÝÀκ¥À϶§¸¸ index³Ö¾îÁÖ¸é µÊ (ij½¬´Â ÂüÁ¶ÇÏÁö¾ÊÀ½) INT64 biInvenSerial; int iMapID; WCHAR wszIP[IPLENMAX]; }; struct TAPetal: public TAHeader { int nUseItemID; int nTotalPetal; char cInvenType; // eItemPositionType BYTE cInvenIndex; // ÀϹÝÀκ¥À϶§¸¸ index³Ö¾îÁÖ¸é µÊ (ij½¬´Â ÂüÁ¶ÇÏÁö¾ÊÀ½) INT64 biInvenSerial; }; // QUERY_CHEAT_GIFTCLEAR struct TQCheatGiftClear : public TQHeader { INT64 biCharacterDBID; }; #if defined( PRE_PVP_GAMBLEROOM ) struct TQAddPetalLogCode: public TQHeader { INT64 biCharacterDBID; int nUseItemID; int nAddPetal; BYTE cLogCode; INT64 nGambleDBID; }; struct TQUsePetal: public TQHeader { INT64 biCharacterDBID; int nDelPetal; BYTE cLogCode; INT64 nGambleDBID; }; #endif //######################################################################################################################################### // MAINCMD_MSGADJUST //######################################################################################################################################### struct TQMsgAdjust :public TQHeader { INT64 biCharacterDBID; int nChannelID; int nVerifyMapIndex; char cGateNo; }; struct TAMsgAdjust { UINT nAccountDBID; INT64 biCharacterDBID; int nChannelID; int nVerifyMapIndex; char cGateNo; }; #ifdef PRE_FIX_63822 struct TQMsgAdjustSeq :public TQHeader { }; struct TAMsgAdjustSeq :public TAHeader { }; #endif //#ifdef PRE_FIX_63822 //######################################################################################################################################### // MAINCMD_LOG //######################################################################################################################################### struct TQAddPartyStartLog:public TQHeader { INT64 biPartyLogID; }; struct TQAddPartyEndLog:public TQHeader { INT64 biPartyLogID; }; struct TQAddStageStartLog:public TQHeader { INT64 biRoomLogID; INT64 biPartyLogID; BYTE cPartySize; int iMapID; DBDNWorldDef::DifficultyCode::eCode Code; }; struct TQAddStageClearLog:public TQHeader { INT64 biRoomLogID; INT64 biCharacterDBID; int iJobID; BYTE cCharacterLevel; bool bClearFlag; DBDNWorldDef::ClearGradeCode::eCode Code; int iMaxComboCount; BYTE cBossKillCount; int iRewardCharacterExp; int iBonusCharacterExp; int iClearPoint; int iBonusClearPoint; int iClearTimeSec; #if defined( PRE_ADD_36870 ) int iClearRound; #endif // #if defined( PRE_ADD_36870 ) }; struct TQAddStageRewardLog:public TQHeader { INT64 biRoomLogID; INT64 biCharacterDBID; DBDNWorldDef::RewardBoxCode::eCode Code; INT64 biRewardItemSerial; int iRewardItemID; int iRewardRet; }; struct TQAddStageEndLog:public TQHeader { INT64 biRoomLogID; DBDNWorldDef::WhereToGoCode::eCode Code; }; struct TQAddPvPStartLog:public TQHeader { INT64 biRoomID1; int iRoomID2; BYTE cMaxPlayerCount; DBDNWorldDef::PvPModeCode::eCode Code; int iPvPModeDetailValue; bool bBreakIntoFlag; bool bItemUseFlag; bool bSecretFlag; int iMapID; INT64 biRoomMasterCharacterDBID; INT64 biCreateRoomCharacterDBID; }; struct TQAddPvPResultLog:public TQHeader { INT64 biRoomID1; int iRoomID2; INT64 biCharacterDBID; DBDNWorldDef::PvPTeamCode::eCode TeamCode; bool bBreakIntoFlag; DBDNWorldDef::PvPResultCode::eCode ResultCode; int iPlayTimeSec; int iPvPKillPoint; int iPvPAssistPoint; int iPvPSupportPoint; int iVsKOWin[PvPCommon::Common::MaxClass]; int iVsKOLose[PvPCommon::Common::MaxClass]; int nOccupationCount; BYTE cOccupationWinType; }; struct TQAddPvPEndLog:public TQHeader { INT64 biRoomID1; int iRoomID2; }; struct TQAddNestGateStartLog:public TQHeader { INT64 biRoomID; BYTE cPartySize; int nGateID; }; struct TQAddNestGateEndLog:public TQHeader { INT64 biRoomID; BYTE cPartySize; }; struct TQAddNestGateClearLog:public TQHeader { INT64 biRoomID; bool bClearFlag; INT64 biChracterDBID; BYTE cCharacterJob; BYTE cCharacterLevel; }; #if defined( PRE_ADD_NPC_REPUTATION_SYSTEM ) struct TQModNPCLocation:public TQHeader { int iNPCID; int iMapID; }; struct TQModNPCFavor:public TQHeader { INT64 biCharacterDBID; BYTE cCount; TNpcReputation UpdateArr[NpcReputation::Common::MaxEffectNpcCount]; }; struct TQGetListNpcFavor:public TQHeader { INT64 biCharacterDBID; int iMapID; }; struct TAGetListNpcFavor:public TAHeader { bool bLastPage; BYTE cCount; TNpcReputation ReputationArr[30]; }; #endif // #if defined( PRE_ADD_NPC_REPUTATION_SYSTEM ) struct TQGetMasterPupilInfo:public TQHeader { INT64 biCharacterDBID; bool bClientSend; MasterSystem::EventType::eCode EventCode; }; struct TAGetMasterPupilInfo:public TAHeader { bool bClientSend; MasterSystem::EventType::eCode EventCode; TMasterSystemSimpleInfo SimpleInfo; }; struct TQAddMasterCharacter:public TQHeader { INT64 biCharacterDBID; WCHAR wszSelfIntroduction[MasterSystem::Max::SelfIntrotuctionLen]; }; struct TAAddMasterCharacter:public TAHeader { INT64 biCharacterDBID; WCHAR wszSelfIntroduction[MasterSystem::Max::SelfIntrotuctionLen]; }; struct TQDelMasterCharacter:public TQHeader { INT64 biCharacterDBID; }; struct TADelMasterCharacter:public TAHeader { }; struct TQGetPageMasterCharacter:public TQHeader { UINT uiPage; BYTE cJobCode; // 0 : Àüü BYTE cGenderCode; // 0 : Àüü 1 : ³²ÀÚ 2 : ¿©ÀÚ }; struct TAGetPageMasterCharacter:public TAHeader { UINT uiPage; BYTE cJobCode; BYTE cGenderCode; BYTE cCount; TMasterInfo MasterInfoList[MasterSystem::Max::MasterPageRowCount]; }; struct TQGetListPupil:public TQHeader { INT64 biCharacterDBID; }; struct TAGetListPupil:public TAHeader { INT64 biCharacterDBID; BYTE cCount; TPupilInfo PupilInfoList[MasterSystem::Max::PupilCount]; }; struct TQAddMasterAndPupil:public TQHeader { INT64 biMasterCharacterDBID; INT64 biPupilCharacterDBID; bool bCheckRegisterFlag; bool bIsDirectMenu; DBDNWorldDef::TransactorCode::eCode Code; bool bIsSkip; }; struct TAAddMasterAndPupil:public TAHeader { INT64 biMasterCharacterDBID; INT64 biPupilCharacterDBID; bool bIsDirectMenu; DBDNWorldDef::TransactorCode::eCode Code; UINT uiOppositeAccountDBID; }; struct TQDelMasterAndPupil:public TQHeader { INT64 biMasterCharacterDBID; INT64 biPupilCharacterDBID; DBDNWorldDef::TransactorCode::eCode Code; int iPenaltyDay; int iPenaltyRespectPoint; bool bIsSkip; }; struct TADelMasterAndPupil:public TAHeader { INT64 biMasterCharacterDBID; INT64 biPupilCharacterDBID; DBDNWorldDef::TransactorCode::eCode Code; int iPenaltyRespectPoint; }; struct TQGetMasterCharacter:public TQHeader { DBDNWorldDef::GetMasterCharacterCode::eCode Code; INT64 biMasterCharacterDBID; INT64 biPupilCharacterDBID; }; struct TAGetMasterCharacterType1:public TAHeader { INT64 biMasterCharacterDBID; TMasterCharacterInfo MasterCharacterInfo; }; struct TAGetMasterCharacterType2:public TAHeader { INT64 biPupilCharacterDBID; INT64 biMasterCharacterDBID; TMyMasterInfo MasterInfo; }; struct TAGetMasterCharacterType3:public TAHeader { INT64 biCharacterDBID; WCHAR wszCharName[NAMELENMAX]; WCHAR wszSelfIntroduction[MasterSystem::Max::SelfIntrotuctionLen]; BYTE cGenderCode; // 0 : Àüü 1 : ³²ÀÚ 2 : ¿©ÀÚ BYTE cLevel; BYTE cJob; int iGraduateCount; int iRespectPoint; }; struct TQGetListMyMasterAndClassmate:public TQHeader { INT64 biCharacterDBID; }; struct TAGetListMyMasterAndClassmate:public TAHeader { INT64 biCharacterDBID; BYTE cCount; TMasterAndClassmateInfo MasterAndClassmateInfoList[MasterSystem::Max::MasterAndClassmateCount]; }; struct TQGetMyClassmate:public TQHeader { INT64 biCharacterDBID; INT64 biClassmateCharacterDBID; }; struct TAGetMyClassmate:public TAHeader { TClassmateInfo ClassmateInfo; }; struct TQGraduate:public TQHeader { INT64 biCharacterDBID; WCHAR wszPupilCharName[NAMELENMAX]; }; struct TAGraduate:public TAHeader { char cWorldSetID; WCHAR wszPupilCharName[NAMELENMAX]; BYTE cCount; INT64 biMasterCharacterDBIDList[MasterSystem::Max::MasterCount]; }; struct TQModRespectPoint:public TQHeader { INT64 biCharacterDBID; int iRespectPoint; }; struct TAModRespectPoint:public TAHeader { int iRespectPoint; }; struct TQModMasterFavorPoint:public TQHeader { INT64 biMasterCharacterDBID; INT64 biPupilCharacterDBID; int iFavorPoint; }; struct TAModMasterFavorPoint:public TAHeader { INT64 biMasterCharacterDBID; INT64 biPupilCharacterDBID; int iFavorPoint; }; struct TQGetMasterAndFavorPoint:public TQHeader { WCHAR wszPupilCharName[NAMELENMAX]; INT64 biPupilCharacterDBID; BYTE cLevel; }; struct TAGetMasterAndFavorPoint:public TAHeader { WCHAR wszPupilCharName[NAMELENMAX]; INT64 biPupilCharacterDBID; BYTE cLevel; BYTE cWorldSetID; BYTE cCount; TMasterAndFavorPoint MasterAndFavorPoint[MasterSystem::Max::MasterCount]; }; struct TQGetMasterSystemCountInfo:public TQHeader { bool bClientSend; INT64 biCharacterDBID; BYTE cCount; INT64 biPartyCharacterDBID[PARTYCOUNTMAX-1]; }; struct TAGetMasterSystemCountInfo:public TAHeader { INT64 biCharacterDBID; bool bClientSend; int iMasterCount; int iPupilCount; int iClassmateCount; }; struct TQModMasterSystemGraduateCount:public TQHeader { INT64 biCharacterDBID; int iGraduateCount; }; #if defined( PRE_ADD_SECONDARY_SKILL ) struct TQAddSecondarySkill:public TQHeader { INT64 biCharacterDBID; int iSecondarySkillID; SecondarySkill::Type::eType Type; }; struct TQDelSecondarySkill:public TQHeader { INT64 biCharacterDBID; int iSecondarySkillID; }; struct TQGetListSecondarySkill:public TQHeader { INT64 biCharacterDBID; }; struct TAGetListSecondarySkill:public TAHeader { BYTE cCount; TSecondarySkill SkillList[SecondarySkill::Max::LearnSecondarySkill]; }; struct TQModSecondarySkillExp:public TQHeader { INT64 biCharacterDBID; int iSecondarySkillID; int iSecondarySkillExp; // Áõ°¨Ä¡ int iSecondarySkillExpAfter; // º¯°æ ÈÄ exp(ºñ±³°ª) }; struct TQSetManufactureSkillRecipe:public TQHeader { INT64 biCharacterDBID; DBDNWorldDef::ItemLocation::eCode LocationCode; INT64 biItemSerial; int iSecondarySkillID; }; struct TQExtractManufactureSkillRecipe:public TQHeader { INT64 biCharacterDBID; INT64 biItemSerial; DBDNWorldDef::ItemLocation::eCode LocationCode; }; struct TQDelManufactureSkillRecipe:public TQHeader { INT64 biCharacterDBID; INT64 biItemSerial; char szIP[IPLENMAX]; }; struct TQGetListManufactureSkillRecipe:public TQHeader { INT64 biCharacterDBID; }; struct TAGetListManufactureSkillRecipe:public TAHeader { BYTE cCount; TSecondarySkillRecipe RecipeList[SecondarySkill::Max::LearnManufactureRecipe]; }; struct TQModManufactureSkillRecipe:public TQHeader { INT64 biCharacterDBID; INT64 biItemSerial; USHORT nDurability; // Áõ°¨Ä¡ USHORT nDurabilityAfter; // º¯°æ ÈÄ Durability(ºñ±³°ª) }; #endif // #if defined( PRE_ADD_SECONDARY_SKILL ) struct TQGetListFarm:public TQHeader { char cEnableFlag; // 0:Disable 1:Enable -1:ALL }; struct TAGetListFarm: public TAHeader { BYTE cCount; TFarmItemFromDB Farms[Farm::Max::FARMCOUNT]; }; struct TQGetListField:public TQHeader { int iFarmDBID; int iRoomID; }; struct TAGetListField:public TAHeader { int iFarmDBID; int iRoomID; BYTE cCount; TFarmField Fields[Farm::Max::FIELDCOUNT]; }; struct TQGetListFieldForCharacter:public TQHeader { int iRoomID; INT64 biCharacterDBID; }; struct TAGetListFieldForCharacter:public TAHeader { int iRoomID; // RoomID ´Â Àý´ë·Î ¸Ç À§¿¡ ÀÖ¾î¾ßÇÕ´Ï´Ù!!!!!! INT64 biCharacterDBID; BYTE cCount; TFarmFieldForCharacter Fields[Farm::Max::PRIVATEFIELDCOUNT]; }; struct TQGetListFieldByCharacter:public TQHeader { INT64 biCharacterDBID; bool bRefreshGate; }; struct TAGetListFieldByCharacter:public TAHeader { bool bRefreshGate; BYTE cCount; TFarmFieldPartial Fields[Farm::Max::FIELDCOUNT_PERCHARACTER]; }; struct TQAddField:public TQHeader { int iRoomID; int iFarmDBID; short nFieldIndex; INT64 biCharacterDBID; int iItemID; int iElapsedTimeSec; int iAttachItemID; int iMaxFieldCount; // ¾¾¾Ñ Á¦°Å¿ë Á¤º¸ BYTE cInvenIndex; INT64 biSeedItemSerial; int iMapID; WCHAR wszIP[IPLENMAX]; BYTE cAttachCount; TFarmAttachItemSerial AttachItems[Farm::Max::PLANTING_ATTACHITEM]; }; struct TAAddField:public TAHeader { int iRoomID; // RoomID ´Â Àý´ë·Î ¸Ç À§¿¡ ÀÖ¾î¾ßÇÕ´Ï´Ù!!!!!! short nFieldIndex; INT64 biCharacterDBID; // ¾¾¾Ñ Á¦°Å¿ë Á¤º¸ BYTE cInvenIndex; INT64 biSeedItemSerial; BYTE cAttachCount; TFarmAttachItemSerial AttachItems[Farm::Max::PLANTING_ATTACHITEM]; }; struct TQDelField:public TQHeader { int iFarmDBID; int iRoomID; short nFieldIndex; }; struct TADelField:public TAHeader { int iRoomID; // RoomID ´Â Àý´ë·Î ¸Ç À§¿¡ ÀÖ¾î¾ßÇÕ´Ï´Ù!!!!!! short nFieldIndex; }; struct TQDelFieldForCharacter:public TQHeader { int iRoomID; short nFieldIndex; INT64 biCharacterDBID; }; struct TADelFieldForCharacter:public TAHeader { int iRoomID; // RoomID ´Â Àý´ë·Î ¸Ç À§¿¡ ÀÖ¾î¾ßÇÕ´Ï´Ù!!!!!! short nFieldIndex; INT64 biCharacterDBID; }; struct TQAddFieldAttachment:public TQHeader { int iRoomID; int iFarmDBID; INT64 biCharacterDBID; short nFieldIndex; int iAttachItemID; // AttachItem Á¦°Å¿ë Á¤º¸ #if defined( PRE_ADD_VIP_FARM ) bool bVirtualAttach; // vip³óÀå¿¡ °¡»ó boostitem ÁÖ´Â°Í Ã³·³ true Àΰæ¿ì attach¸¸ ÀÌ·ç¾îÁö°í ¾ÆÀÌÅÛ »èÁ¦´Â ¾øÀ½ #endif // #if defined( PRE_ADD_VIP_FARM ) BYTE cInvenType; BYTE cInvenIndex; INT64 biAttachItemSerial; int iMapID; WCHAR wszIP[IPLENMAX]; }; struct TAAddFieldAttachment:public TAHeader { int iRoomID; // RoomID ´Â Àý´ë·Î ¸Ç À§¿¡ ÀÖ¾î¾ßÇÕ´Ï´Ù!!!!!! INT64 biCharacterDBID; short nFieldIndex; int iAttachItemID; // AttachItem Á¦°Å¿ë Á¤º¸ #if defined( PRE_ADD_VIP_FARM ) bool bVirtualAttach; // vip³óÀå¿¡ °¡»ó boostitem ÁÖ´Â°Í Ã³·³ true Àΰæ¿ì attach¸¸ ÀÌ·ç¾îÁö°í ¾ÆÀÌÅÛ »èÁ¦´Â ¾øÀ½ #endif // #if defined( PRE_ADD_VIP_FARM ) BYTE cInvenType; BYTE cInvenIndex; INT64 biAttachItemSerial; }; struct TUpdateFieldElapsedTime { short nFieldIndex; int iElapsedTimeSec; }; struct TQModFieldElapsedTime:public TQHeader { int iFarmDBID; BYTE cCount; TUpdateFieldElapsedTime Updates[Farm::Max::FIELDCOUNT]; }; struct TQModFieldForCharacterElapsedTime:public TQHeader { INT64 biCharacterDBID; BYTE cCount; TUpdateFieldElapsedTime Updates[Farm::Max::PRIVATEFIELDCOUNT]; }; struct TAModFieldForCharacterElapsedTime:public TAHeader { }; struct TAModFieldElapsedTime:public TAHeader { }; struct THarvestItem { INT64 biItemSerial; int iItemID; short nItemCount; bool bSoulBoundFlag; BYTE cSealCount; BYTE cItemOption; bool bEternityFlag; int iLifeSpan; }; struct TQHarvest:public TQHeader { int iFarmDBID; int iRoomID; short nFieldIndex; INT64 biCharacterDBID; INT64 biHarvestCharacterDBID; int iMapID; CHAR szIP[IPLENMAX]; THarvestItem HarvestItems[Farm::Max::HARVESTITEM_COUNT]; }; struct TAHarvest:public TAHeader { int iRoomID; // RoomID ´Â Àý´ë·Î ¸Ç À§¿¡ ÀÖ¾î¾ßÇÕ´Ï´Ù!!!!!! int nFieldIndex; INT64 biCharacterDBID; }; struct TQGetListHarvestDepotItem:public TQHeader { INT64 biCharacterDBID; INT64 biLastUniqueID; }; struct TAGetListHarvestDepotItem:public TAHeader { INT64 biLastUniqueID; BYTE cCount; TFarmWareHouseItem Items[Farm::Max::HARVESTDEPOT_COUNT]; }; struct TQGetCountHarvestDepotItem:public TQHeader { INT64 biCharacterDBID; }; struct TAGetCountHarvestDepotItem:public TAHeader { int iCount; }; struct TQGetFieldCountByCharacter:public TQHeader { INT64 biCharacterDBID; bool bIsSend; }; struct TAGetFieldCountByCharacter:public TAHeader { int iFieldCount; bool bIsSend; }; struct TQUpdateFarmActivation : public TQHeader //QUERY_UPDATEFARM_ACTIVATION { int nFarmDBID; }; struct TFarmActivation { int nFarmDBID; bool bFarmActivation; }; struct TAUpdateFarmActivation : public TAHeader //QUERY_UPDATEFARM_ACTIVATION { BYTE cCount; TFarmActivation Farms[Farm::Max::FARMCOUNT]; }; struct TQGetFieldItemCount:public TQHeader { INT64 biCharacterDBID; int iItemID; int iRoomID; int iAreaIndex; UINT nSessionID; }; struct TAGetFieldItemCount:public TAHeader { int iRoomID; int iAreaIndex; int iItemCount; UINT nSessionID; }; struct TQGetGuildRecruit:public TQHeader { UINT uiPage; BYTE cJobCode; BYTE cLevel; #if defined( PRE_ADD_GUILD_EASYSYSTEM ) BYTE cPurposeCode; WCHAR wszGuildName[GUILDNAME_MAX]; BYTE cSortType; #endif }; struct TAGetGuildRecruit:public TAHeader { UINT uiPage; BYTE cJobCode; BYTE cLevel; BYTE cCount; #if defined( PRE_ADD_GUILD_EASYSYSTEM ) BYTE cPurposeCode; WCHAR wszGuildName[GUILDNAME_MAX]; BYTE cSortType; #endif TGuildRecruitInfo GuildRecruitList[GuildRecruitSystem::Max::GuildRecruitRowCount]; }; struct TQGetGuildRecruitCharacter:public TQHeader { UINT nGuildDBID; // ±æµå DBID }; struct TAGetGuildRecruitCharacter:public TAHeader { UINT nGuildDBID; // ±æµå DBID char cWorldSetID; // ¿ùµå ID BYTE cCount; TGuildRecruitCharacter GuildRecruitCharacterList[GuildRecruitSystem::Max::GuildRecruitCharacterRowCount]; }; struct TQGetMyGuildRecruit:public TQHeader { INT64 biCharacterDBID; // ij¸¯ÅÍÄÚµå }; struct TAGetMyGuildRecruit:public TAHeader { BYTE cCount; TGuildRecruitInfo GuildRecruitList[GuildRecruitSystem::Max::MaxRequestCount]; }; struct TQGetGuildRecruitRequestCount:public TQHeader { INT64 biCharacterDBID; // ij¸¯ÅÍÄÚµå }; struct TAGetGuildRecruitRequestCount:public TAHeader { BYTE cCount; }; struct TQRegisterInfoGuildRecruit:public TQHeader { UINT nGuildDBID; // ±æµå DBID }; struct TARegisterInfoGuildRecruit:public TAHeader { UINT nGuildDBID; // ±æµå DBID BYTE cClassCode[CLASSKINDMAX]; // ¸ðÁýŬ·¡½º int nMinLevel; // ÃÖ¼Ò ·¹º§ int nMaxLevel; // ÃÖ´ë ·¹º§ WCHAR wszGuildIntroduction[GUILDRECRUITINTRODUCE+1]; //±æµå ¼Ò°³±Û #if defined( PRE_ADD_GUILD_EASYSYSTEM ) BYTE cPurposeCode; // ±æµå ¸ñÀû(1:Ä£¸ñ 2:ÀüÅõ 3:³×½ºÆ® 4:Äݷμ¼¿ò bool bCheckHomePage; //±æµå ȨÆäÀÌÁö #endif }; struct TQRegisterOnGuildRecruit:public TQHeader { UINT nGuildDBID; // ±æµå DBID BYTE cClassCode[CLASSKINDMAX]; // ¸ðÁýŬ·¡½º int nMinLevel; // ÃÖ¼Ò ·¹º§ int nMaxLevel; // ÃÖ´ë ·¹º§ WCHAR wszGuildIntroduction[GUILDRECRUITINTRODUCE+1]; //±æµå ¼Ò°³±Û #if defined( PRE_ADD_GUILD_EASYSYSTEM ) BYTE cPurposeCode; // ±æµå ¸ñÀû(1:Ä£¸ñ 2:ÀüÅõ 3:³×½ºÆ® 4:Äݷμ¼¿ò bool bCheckHomePage; //±æµå ȨÆäÀÌÁö #endif }; struct TARegisterOnGuildRecruit:public TAHeader { }; struct TQRegisterModGuildRecruit:public TQHeader { UINT nGuildDBID; // ±æµå DBID BYTE cClassCode[CLASSKINDMAX]; // ¸ðÁýŬ·¡½º int nMinLevel; // ÃÖ¼Ò ·¹º§ int nMaxLevel; // ÃÖ´ë ·¹º§ WCHAR wszGuildIntroduction[GUILDRECRUITINTRODUCE+1]; //±æµå ¼Ò°³±Û #if defined( PRE_ADD_GUILD_EASYSYSTEM ) BYTE cPurposeCode; // ±æµå ¸ñÀû(1:Ä£¸ñ 2:ÀüÅõ 3:³×½ºÆ® 4:Äݷμ¼¿ò bool bCheckHomePage; //±æµå ȨÆäÀÌÁö #endif }; struct TARegisterModGuildRecruit:public TAHeader { }; struct TQRegisterOffGuildRecruit:public TQHeader { UINT nGuildDBID; // ±æµå DBID }; struct TARegisterOffGuildRecruit:public TAHeader { }; struct TQGuildRecruitRequestOn:public TQHeader { INT64 biCharacterDBID; // ij¸¯ÅÍÄÚµå UINT nGuildDBID; // ±æµå DBID }; struct TAGuildRecruitRequestOn:public TAHeader { }; struct TQGuildRecruitRequestOff:public TQHeader { INT64 biCharacterDBID; // ij¸¯ÅÍÄÚµå UINT nGuildDBID; // ±æµå DBID }; struct TAGuildRecruitRequestOff:public TAHeader { }; struct TQGuildRecruitAcceptOn:public TQHeader { INT64 biCharacterDBID; // ij¸¯ÅÍÄÚµå UINT nGuildDBID; // ±æµå DBID INT64 biAcceptCharacterDBID; // °¡ÀÔ½ÂÀÎÇÑ Ä³¸¯ÅÍÄÚµå WCHAR wszToCharacterName[NAMELENMAX]; short wGuildSize; // ÃÖ´ë ±æµå¿ø ¼ö }; struct TAGuildRecruitAcceptOn:public TAHeader { UINT nAddAccountDBID; //Ãß°¡ÇÒ DBID INT64 biAddCharacterDBID; // Ãß°¡ÇÒ Ä³¸¯ÅÍ DBID WCHAR wszToCharacterName[NAMELENMAX]; BYTE cJob; // Á÷¾÷ BYTE cLevel; // ·¹º§ __time64_t JoinDate; // ±æµå °¡ÀÔ ³¯Â¥ bool bDelGuildRecruit; // ±æµå¸ðÁý°Ô½ÃÆÇÀ¯Áö }; struct TQGuildRecruitAcceptOff:public TQHeader { INT64 biCharacterDBID; // ij¸¯ÅÍÄÚµå UINT nGuildDBID; // ±æµå DBID INT64 biDenyCharacterDBID; // °ÅÀýÇÒ Ä³¸¯ÅÍÄÚµå WCHAR wszToCharacterName[NAMELENMAX]; }; struct TAGuildRecruitAcceptOff:public TAHeader { WCHAR wszToCharacterName[NAMELENMAX]; INT64 biDenyCharacterDBID;// °ÅÀýÇÒij¸¯ÅÍÄÚµå }; struct TQDelGuildRecruit:public TQHeader { INT64 biCharacterDBID; // ij¸¯ÅÍÄÚµå UINT nGuildDBID; // ±æµå DBID BYTE nDelType; // »èÁ¦Å¸ÀÔ(1:±æµå 2:°³ÀÎ) }; #if defined (PRE_ADD_DONATION) struct TQDonate : public TQHeader { INT64 biCharacterDBID; time_t tDonationTime; INT64 nCoin; }; struct TADonate : public TAHeader { }; struct TQDonationRanking : public TQHeader { INT64 biCharacterDBID; }; struct TADonationRaking : public TAHeader { Donation::Ranking Ranking[Donation::MAX_RANKING]; INT64 nMyCoin; int nMyRanking; }; struct TQDonationTopRanker : public TQHeader { }; struct TADonationTopRanker : public TAHeader { char cWorldID; INT64 biCharacterDBID; WCHAR wszCharacterName[NAMELENMAX]; INT64 nCoin; }; #endif // #if defined (PRE_ADD_DONATION) struct TQMaintenanceInfo : public TQHeader { int nFlag; }; #if defined( PRE_PARTY_DB ) struct DBCreateParty { Party::Data PartyData; #if defined(PRE_FIX_62281) WCHAR wszAfterInviteCharacterName[NAMELENMAX]; #else UINT uiAfterInviteAccountDBID; #endif }; struct TQAddParty:public TQHeader { DBCreateParty Data; bool bCheat; }; struct TAAddParty:public TAHeader { DBCreateParty Data; bool bCheat; }; struct DBAddPartyMemberGame { INT64 biCharacterDBID; UINT nSessionID; #if defined( PRE_ADD_NEWCOMEBACK ) bool bCheckComebackAppellation; #endif }; struct TQAddPartyAndMemberGame:public TQHeader { DBCreateParty Data; UINT nKickedMemberList[PARTYKICKMAX]; DBAddPartyMemberGame Member[PARTYMAX]; // ÆÄƼ¿ø¸¸ °¡º¯À̰í À§¿¡ ű¸â¹ö´Â °¡º¯ ¾Æ´Ô }; struct TAAddPartyAndMemberGame:public TAHeader { DBCreateParty Data; UINT nKickedMemberList[PARTYKICKMAX]; }; struct TQAddPartyAndMemberVillage:public TQHeader { DBCreateParty Data; int nKickCount; UINT nVoiceChannelID; UINT nKickedMemberList[PARTYKICKMAX]; TMemberInfo MemberInfo[PARTYMAX]; }; struct TAAddPartyAndMemberVillage:public TAHeader { DBCreateParty Data; UINT nVoiceChannelID; UINT nKickedMemberList[PARTYKICKMAX]; TMemberInfo MemberInfo[PARTYMAX]; }; struct TQModParty:public TQHeader { Party::Data PartyData; int iRoomID; // °ÔÀÓ¼­¹ö¿¡¼­¸¸ »ç¿ë }; struct TAModParty:public TAHeader { Party::Data PartyData; int iRoomID; // °ÔÀÓ¼­¹ö¿¡¼­¸¸ »ç¿ë }; struct TQDelParty:public TQHeader { TPARTYID PartyID; }; struct TADelParty:public TAHeader { TPARTYID PartyID; }; struct TQDelPartyForServer:public TQHeader { int iServerID; }; struct TADelPartyForServer:public TAHeader { int iServerID; }; struct TQJoinParty:public TQHeader { TPARTYID PartyID; INT64 biCharacterDBID; UINT nSessionID; int iMaxUserCount; #if defined( PRE_ADD_NEWCOMEBACK ) bool bCheckComeBackParty; #endif }; struct TAJoinParty:public TAHeader { TPARTYID PartyID; INT64 biCharacterDBID; UINT nSessionID; BYTE cThreadID; }; struct TQOutParty:public TQHeader { TPARTYID PartyID; INT64 biCharacterDBID; UINT nSessionID; Party::QueryOutPartyType::eCode Type; }; struct TAOutParty:public TAHeader { TPARTYID PartyID; INT64 biCharacterDBID; UINT nSessionID; Party::QueryOutPartyType::eCode Type; bool bIsDelParty; }; struct TQGetListParty:public TQHeader { int iExecptServerID; }; struct TAGetListParty:public TAHeader { bool bIsStart; short nCount; Party::Data DataArr[100]; }; struct TQGetListPartyMember:public TQHeader { TPARTYID PartyID; }; struct TAGetListPartyMember:public TAHeader { TPARTYID PartyID; ePartyType PartyType; short nCount; Party::MemberData MemberData[PARTYCOUNTMAX]; }; struct TQModPartyLeader:public TQHeader { TPARTYID PartyID; INT64 biCharacterDBID; }; struct TAModPartyLeader:public TAHeader { }; #if defined( PRE_ADD_NEWCOMEBACK ) struct TQModComebackFlag:public TQHeader { bool bRewardComeback; }; struct TQModPartyMemberComeback:public TQHeader { TPARTYID PartyID; INT64 biCharacterDBID; bool bComebackAppellation; }; #endif // #if defined( PRE_ADD_NEWCOMEBACK ) #endif // #if defined( PRE_PARTY_DB ) #if defined(PRE_ADD_DOORS_PROJECT) struct TQSaveCharacterAbility : public TQHeader { INT64 biCharacterDBID; int nCharacterAblity[Doors::CharacterAbility::MaxType]; }; #endif // #if defined(PRE_ADD_DOORS_PROJECT) #if defined (PRE_ADD_BESTFRIEND) // QUERY_GET_BESTFRIEND struct TQGetBestFriend: public TQHeader { bool bSend; INT64 biCharacterDBID; }; struct TAGetBestFriend: public TAHeader { bool bSend; TBestFriendInfo Info; }; // QUERY_REGIST_BESTFRIEND struct TQRegistBestFriend: public TQHeader { UINT nFromAccountDBID; INT64 biFromCharacterDBID; WCHAR wszFromName[NAMELENMAX]; UINT nToAccountDBID; INT64 biToCharacterDBID; WCHAR wszToName[NAMELENMAX]; int nItemID; // ¾ÆÀÌÅÛÁ¦°Å¿ëÁ¤º¸ INT64 biRegistSerial; int nMapID; WCHAR wszIP[IPLENMAX]; }; struct TARegistBestFriend: public TAHeader { UINT nFromAccountDBID; INT64 biFromCharacterDBID; WCHAR wszFromName[NAMELENMAX]; UINT nToAccountDBID; WCHAR wszToName[NAMELENMAX]; int nItemID; INT64 biRegistSerial; }; // QUERY_CANCEL_BESTFRIEND struct TQCancelBestFriend: public TQHeader { INT64 biCharacterDBID; bool bCancel; }; struct TACancelBestFriend: public TAHeader { INT64 biCharacterDBID; bool bCancel; }; // QUERY_CLOSE_BESTFRIEND struct TQCloseBestFriend: public TQHeader { INT64 biCharacterDBID; }; struct TACloseBestFriend: public TAHeader { INT64 biCharacterDBID; }; // QUERY_EDIT_BESTFRIENDMEMO struct TQEditBestFriendMemo: public TQHeader { INT64 biCharacterDBID; WCHAR wszMemo[BESTFRIENDMEMOMAX]; }; struct TAEditBestFriendMemo: public TAHeader { INT64 biToCharacterDBID; WCHAR wszMemo[BESTFRIENDMEMOMAX]; }; #endif // #if defined (PRE_ADD_BESTFRIEND) #if defined( PRE_ADD_58761 ) struct TQNestDeathLog: public TQHeader { INT64 biCharacterDBID; INT64 biRoomID; int nMonterID; int nSkillID; BYTE cCharacterJob; BYTE cCharacterLevel; }; #endif //######################################################################################################################################### // MAINCMD_PRIVATECHATCHANNEL //######################################################################################################################################### #if defined( PRE_PRIVATECHAT_CHANNEL ) struct TQPrivateChatChannelInfo: public TQHeader { }; struct TAPrivateChatChannelInfo: public TAHeader { char cWorldSetID; int nCount; TPrivateChatChannelInfo tPrivateChatChannel[PrivateChatChannel::Common::GetDBMaxChannel]; }; struct TQPrivateChatChannelMember: public TQHeader { INT64 nPrivateChatChannelID; }; struct TAPrivateChatChannelMember: public TAHeader { char cWorldSetID; INT64 nPrivateChatChannelID; int nCount; TPrivateChatChannelMember Member[PrivateChatChannel::Common::MaxMemberCount]; }; struct TQAddPrivateChatChannel: public TQHeader { time_t tJoinDate; WCHAR wszCharacterName[NAMELENMAX]; TPrivateChatChannelInfo tPrivateChatChannel; }; struct TAAddPrivateChatChannel: public TAHeader { char cWorldSetID; time_t tJoinDate; WCHAR wszCharacterName[NAMELENMAX]; TPrivateChatChannelInfo tPrivateChatChannel; }; struct TQAddPrivateChatMember: public TQHeader { int nServerID; PrivateChatChannel::Common::eModType eType; INT64 nPrivateChatChannelID; TPrivateChatChannelMember Member; }; struct TAAddPrivateChatMember: public TAHeader { char cWorldSetID; INT64 nPrivateChatChannelID; TPrivateChatChannelMember Member; }; struct TQInvitePrivateChatMember: public TQHeader { int nServerID; UINT nMasterAccountDBID; INT64 nPrivateChatChannelID; TPrivateChatChannelMember Member; }; struct TAInvitePrivateChatMember: public TAHeader { char cWorldSetID; UINT nMasterAccountDBID; INT64 nPrivateChatChannelID; TPrivateChatChannelMember Member; }; struct TQDelPrivateChatMember: public TQHeader { PrivateChatChannel::Common::eModType eType; INT64 biCharacterDBID; WCHAR wszName[NAMELENMAX]; INT64 nPrivateChatChannelID; }; struct TADelPrivateChatMember: public TAHeader { char cWorldSetID; INT64 biCharacterDBID; WCHAR wszName[NAMELENMAX]; INT64 nPrivateChatChannelID; }; struct TQModPrivateChatChannelInfo: public TQHeader { PrivateChatChannel::Common::eModType eType; INT64 nPrivateChatChannelID; WCHAR wszChannelName[PrivateChatChannel::Common::MaxNameLen]; int nPassWord; INT64 biCharacterDBID; }; struct TAModPrivateChatChannelInfo: public TAHeader { char cWorldSetID; PrivateChatChannel::Common::eModType eType; INT64 nPrivateChatChannelID; WCHAR wszChannelName[PrivateChatChannel::Common::MaxNameLen]; int nPassWord; INT64 biCharacterDBID; }; struct TQModPrivateChatMemberServerID: public TQHeader { int nServerID; INT64 biCharacterDBID; }; struct TQDelPrivateChatMemberServerID: public TQHeader { int nServerID; }; struct TADelPrivateChatMemberServerID: public TAHeader { char cWorldSetID; int nCount; TPrivateMemberDelServer Member[PrivateChatChannel::Common::MaxMemberCount]; }; #endif #if defined( PRE_FIX_67546 ) struct TQAddThreadCount: public TQHeader { BYTE cChoiceThreadID; }; struct TAAddThreadCount: public TAHeader { int nConnectionCount[THREADMAX]; }; #endif #if defined( PRE_WORLDCOMBINE_PVP ) struct TQAddWorldPvPRoom: public TQHeader { TWorldPvPMissionRoom TMissionRoom; int nServerID; int nRoomID; WCHAR wszRoomName[PARTYNAMELENMAX]; bool bBreakIntoFlag; bool bRegulationFlag; bool bObserverFlag; bool bRandomFlag; int nPassWord; }; struct TAAddWorldPvPRoom: public TAHeader { char cWorldSetID; int nRoomIndex; int nRoomID; int nPvPRoomDBIndex; TWorldPvPRoomDBData Data; }; struct TQAddWorldPvPRoomMember: public TQHeader { int nWorldPvPRoomDBIndex; INT64 biCharacterDBID; bool bObserverFlag; BYTE cMaxPlayers; }; struct TQDelWorldPvPRoom: public TQHeader { int nWorldPvPRoomDBIndex; }; struct TQDelWorldPvPRoomMember: public TQHeader { int nWorldPvPRoomDBIndex; INT64 biCharacterDBID; }; struct TQDelWorldPvPRoomForServer: public TQHeader { int nServerID; }; struct TQGetListWorldPvPRoom: public TQHeader { int nCombineWorldID; }; struct TAGetListWorldPvPRoom: public TAHeader { int nCount; TWorldPvPRoomDBData WorldPvPRoomData[WorldPvPMissionRoom::Common::MaxDBDataCount]; }; struct TQUpdateWorldPvPRoom: public TQHeader { }; struct TAUpdateWorldPvPRoom: public TAHeader { bool bFlag; }; #endif //######################################################################################################################################### // MAINCMD_ACTOZCOMMON //######################################################################################################################################### // QUERY_UPDATECHARACTERINFO struct TQActozUpdateCharacterInfo: public TQHeader { char cUpdateType; INT64 biCharacterDBID; BYTE cJob; int nLevel; int nExp; INT64 biCoin; char szIp[IPLENMAX]; }; // QUERY_UPDATECHARACTERNAME struct TQActozUpdateCharacterName: public TQHeader { INT64 biCharacterDBID; char szCharacterName[NAMELENMAX]; }; //######################################################################################################################################### // MAINCMD_ALTEIAWORLD //######################################################################################################################################### #if defined( PRE_ALTEIAWORLD_EXPLORE ) struct TQResetAlteiaWorldEvent: public TQHeader { }; struct TQAddAlteiaWorldEvent: public TQHeader { time_t tAlteiaEventStartTime; time_t tAlteiaEventEndTime; }; struct TQADDAlteiaWorldPlayResult: public TQHeader { INT64 biCharacterDBID; int nGoldKeyCount; DWORD dwPlayTime; int nGuildID; }; struct TQGetAlteiaWorldInfo: public TQHeader { INT64 biCharacterDBID; }; struct TAGetAlteiaWorldInfo: public TAHeader { int nBestGoldKeyCount; UINT uiBestPlayTime; int nDailyPlayCount; int nWeeklyPlayCount; }; struct TQGetAlteiaWorldRankInfo: public TQHeader { int nMaxRank; AlteiaWorld::Info::eInfoType eType; }; struct TAGetAlteiaWorldPrivateGoldKeyRank: public TAHeader { int nCount; AlteiaWorld::GoldKeyRankMemberInfo RankMemberInfo[AlteiaWorld::Common::MaxRankCount]; }; struct TAGetAlteiaWorldPrivatePlayTimeRank: public TAHeader { int nCount; AlteiaWorld::PlayTimeRankMemberInfo RankMemberInfo[AlteiaWorld::Common::MaxRankCount]; }; struct TAGetAlteiaWorldGuildGoldKeyRank: public TAHeader { int nCount; AlteiaWorld::GuildGoldKeyRankInfo RankMemberInfo[AlteiaWorld::Common::MaxRankCount]; }; struct TQGetAlteiaWorldSendTicketList: public TQHeader { INT64 biCharacterDBID; }; struct TAGetAlteiaWorldSendTicketList: public TAHeader { int nSendTicketCount; int nRecvTicketCount; INT64 biCharacterDBID[AlteiaWorld::Common::MaxSendCount]; }; struct TQAddAlteiaWorldSendTicketList: public TQHeader { INT64 biCharacterDBID; INT64 biSendCharacterDBID; WCHAR wszSendCharacterName[NAMELENMAX]; int nSendMaxCount; }; struct TAAddAlteiaWorldSendTicketList: public TAHeader { INT64 biSendCharacterDBID; WCHAR wszSendCharacterName[NAMELENMAX]; }; struct TQResetAlteiaWorldPlayAlteia: public TQHeader { INT64 biCharacterDBID; AlteiaWorld::ResetType::eResetType eType; }; #endif // #if defined( PRE_ALTEIAWORLD_EXPLORE ) //######################################################################################################################################### // MAINCMD_STAMPSYSTEM //######################################################################################################################################### #if defined( PRE_ADD_STAMPSYSTEM ) struct TQGetListCompleteChallenges: public TQHeader { INT64 biCharacterDBID; }; struct TAGetListCompleteChallenges: public TAHeader { StampSystem::StampCompleteInfo CompleteInfo[StampSystem::Common::MaxStampSlotCount]; }; struct TQInitCompleteChallenge: public TQHeader { INT64 biCharacterDBID; }; struct TQAddCompleteChallenge: public TQHeader { INT64 biCharacterDBID; BYTE cChallengeIndex; int nWeekDay; }; struct TAAddCompleteChallenge: public TAHeader { BYTE cChallengeIndex; }; #endif // #if defined( PRE_ADD_STAMPSYSTEM ) //######################################################################################################################################### // MAINCMD_DWC //######################################################################################################################################### #if defined(PRE_ADD_DWC) struct TQCreateDWCTeam : public TQHeader { INT64 biCharacterDBID; WCHAR wszTeamName[GUILDNAME_MAX]; }; struct TACreateDWCTeam : public TAHeader { INT64 biCharacterDBID; UINT nTeamID; WCHAR wszTeamName[GUILDNAME_MAX]; }; struct TQAddDWCTeamMember : public TQHeader { INT64 biCharacterDBID; UINT nTeamID; }; struct TAAddDWCTeamMember : public TAHeader { INT64 biCharacterDBID; UINT nTeamID; }; struct TQDWCInviteMember : public TQHeader { INT64 biCharacterDBID; UINT nTeamID; bool bNeedMembList; }; struct TADWCInviteMember : public TAHeader { INT64 biCharacterDBID; UINT nTeamID; BYTE cMemberCount; TDWCTeam Info; TDWCTeamMember MemberList[DWC::DWC_MAX_MEMBERISZE]; }; struct TQDelDWCTeamMember : public TQHeader { INT64 biCharacterDBID; UINT nTeamID; }; struct TADelDWCTeamMember : public TAHeader { INT64 biCharacterDBID; UINT nTeamID; }; struct TQGetDWCTeamInfo: public TQHeader { INT64 biCharacterDBID; bool bNeedMembList; // ±æµå¿ø ¸ñ·Ïµµ ÇÊ¿äÇÑÁö ¿©ºÎ }; struct TAGetDWCTeamInfo: public TAHeader { UINT nTeamID; TDWCTeam Info; }; struct TAGetDWCTeamMember: public TAHeader { UINT nTeamID; BYTE cCount; // ÆÀ Á¤º¸ °³¼ö (½ÇÆÐÀÏ °æ¿ì ¹«½ÃµÊ) TDWCTeamMember MemberList[DWC::DWC_MAX_MEMBERISZE]; }; struct TQAddPvPDWCResult: public TQHeader { int nRoomID; // °ÔÀÓ¼­¹öRoomID UINT nTeamID; UINT nOppositeTeamID; BYTE cPvPLadderCode; // LadderSystem::MatchType::eCode BYTE cResult; // LadderSystem::MatchResult::eCode int nDWCGradePoint; int nHiddenDWCGradePoint; }; struct TAAddPvPDWCResult: public TAHeader { int nRoomID; UINT nTeamID; TDWCScore DWCScore; }; struct TQGetListDWCScore: public TQHeader { int nRoomID; // °ÔÀÓ¼­¹öRoomID INT64 biATeamCharacterDBID; INT64 biBTeamCharacterDBID; }; struct TAGetListDWCScore: public TAHeader { int nRoomID; UINT nATeamID; TDWCTeam ATeamInfo; UINT nBTeamID; TDWCTeam BTeamInfo; }; struct TQGetDWCRankPage : public TQHeader { int nPageNum; int nPageSize; //DWC::eCommon::RankPageMaxSize }; struct TAGetDWCRankPage : public TAHeader { UINT nTotalRankSize; int nPageNum; int nPageSize; TDWCRankData RankList[DWC::Common::RankPageMaxSize]; }; struct TQGetDWCFindRank : public TQHeader { BYTE cFindType; //DWC::FindRankTypeÂüÁ¶ WCHAR wszFindKey[NAMELENMAX + GUILDNAME_MAX]; }; struct TAGetDWCFindRank : public TAHeader { int nRetCode; TDWCRankData Rank; }; struct TQGetDWCChannelInfo : public TQHeader { }; struct TAGetDWCChannelInfo : public TAHeader { TDWCChannelInfo ChannelInfo; }; #endif #pragma pack(pop)