6695 lines
148 KiB
C++
6695 lines
148 KiB
C++
#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<int>(sizeof(DNTPacketHeader) + uLen) > GetFreeBufferSize()) {
|
|
DN_RETURN(false);
|
|
}
|
|
|
|
TDBQueryData* pQueryData = reinterpret_cast<TDBQueryData*>(&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<int>(nCurPtr + sizeof(TDBQueryData)), "Invalid!");
|
|
|
|
return(reinterpret_cast<TDBQueryData*>(&m_Buffer[nCurPtr]));
|
|
}
|
|
const TDBQueryData* At(const int nCurPtr) const
|
|
{
|
|
return(const_cast<TDBQueryQueue*>(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<int>((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]; // 일반/캐쉬템 장비 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 // 캐릭터명 변경
|
|
struct TQChangeCharacterName : public TQHeader
|
|
{
|
|
INT64 nCharacterDBID; // 캐릭터 DBID
|
|
WCHAR wszOriginName[NAMELENMAX]; // 기존 캐릭터명
|
|
WCHAR wszCharacterName[NAMELENMAX]; // 변경할 캐릭터명
|
|
BYTE btChangeCode; // 1 = 관리자변경, 2 = 캐릭터 이름변경
|
|
int nReservedPeriodDay; // 변경전 캐릭터 이름이 보존되는 기간
|
|
INT64 biItemSerial; // 사용 아이템 ID
|
|
int nNextPeriodDay; // 최근 이름 변경 일자로부터 다음 이름 변경이 가능한 기간 제한. 단위 : day
|
|
};
|
|
|
|
struct TAChangeCharacterName : public TAHeader
|
|
{
|
|
char cWorldSetID;
|
|
INT64 nCharacterDBID; // 캐릭터 DBID
|
|
INT64 biItemSerial;
|
|
WCHAR wszOriginName[NAMELENMAX]; // 기존 캐릭터명
|
|
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]; // 일반/캐쉬템 장비 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]; // 장비창 (캐쉬)
|
|
DBPacket::TItemCoolTime CashInventory[CASHINVENTORYDBMAX]; // 인벤창 (캐쉬)
|
|
#if defined( PRE_ITEMBUFF_COOLTIME )
|
|
DBPacket::TItemCoolTime ServerWare[WAREHOUSEMAX]; // 서버창고
|
|
DBPacket::TItemCoolTime ServerWareCash[WAREHOUSEMAX]; // 서버창고(캐쉬)
|
|
#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=캐쉬 인벤토리, 6=선물함, 7=캐쉬 이큅먼트
|
|
BYTE cPayMethodCode; // NULL=구입아님, 1=코인, 2=캐쉬, 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=캐쉬 인벤토리, 6=선물함, 7=캐쉬 이큅먼트
|
|
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=캐쉬 인벤토리, 6=선물함, 7=캐쉬 이큅먼트
|
|
BYTE cSrcSlotIndex;
|
|
INT64 biDestItemSerial;
|
|
DBDNWorldDef::ItemLocation::eCode DestCode; // 이동 후 ItemLocationCode 1=이큅먼트, 2=인벤토리, 3=창고, 4=퀘스트 인벤토리, 5=캐쉬 인벤토리, 6=선물함, 7=캐쉬 이큅먼트
|
|
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; // 캐릭터 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; // 캐릭터 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; // 캐릭터 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; // 캐릭터 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<int>(sizeof(*this)));
|
|
}
|
|
public:
|
|
INT64 biCharacterDBID; // 캐릭터 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=캐쉬 아이템
|
|
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; // 캐릭터 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=캐쉬 아이템
|
|
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; // 캐릭터 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<TIsolateItem>
|
|
{
|
|
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; // 길드장 캐릭터 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; // 길드장 캐릭터 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; // 길드장 캐릭터 DBID
|
|
UINT nGuildDBID; // 길드 DBID
|
|
};
|
|
|
|
struct TADismissGuild: public TAHeader
|
|
{
|
|
INT64 nCharacterDBID; // 길드장 캐릭터 DBID
|
|
UINT nGuildDBID; // 길드 DBID
|
|
char cWorldSetID; // 월드 ID
|
|
};
|
|
|
|
// QUERY_ADDGUILDMEMBER // 길드원 추가 요청
|
|
struct TQAddGuildMember: public TQHeader
|
|
{
|
|
UINT nAccountDBID; // 추가할 계정 DBID
|
|
INT64 nCharacterDBID; // 추가할 캐릭터 DBID
|
|
UINT nGuildDBID; // 길드 DBID
|
|
char cLevel; // 캐릭터 레벨
|
|
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; // 캐릭터 레벨
|
|
#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; // 캐릭터 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; // 캐릭터 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; // 변경될 캐릭터 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; // 변경될 캐릭터 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; // 캐릭터 DBID
|
|
UINT nGuildDBID; // 길드 DBID
|
|
INT64 biIndex; // 길드 히스토리 목록 인덱스 (0 이면 가장 최근 기록부터 확인 ?)
|
|
bool bDirection; // 목록 얻을 방향 (0:인덱스 이전 / 1:인덱스 이후)
|
|
};
|
|
|
|
struct TAGetGuildHistoryList: public TAHeader
|
|
{
|
|
INT64 nCharacterDBID; // 캐릭터 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; // 캐릭터 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; // 캐릭터 DBID
|
|
UINT nGuildDBID; // 길드 DBID
|
|
|
|
DBPacket::TExchangeItem SrcItem;
|
|
DBPacket::TExchangeItem DestItem;
|
|
};
|
|
|
|
// QUERY_MOVE_INVEN_TO_GUILDWARE // 인벤 -> 길드창고로 아이템 이동
|
|
struct TQMoveInvenToGuildWare : public TQHeader
|
|
{
|
|
INT64 nCharacterDBID; // 캐릭터 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; // 캐릭터 DBID
|
|
UINT nGuildDBID; // 길드 DBID
|
|
char cWorldSetID; // 월드 ID
|
|
|
|
DBPacket::TExchangeItem InvenItem;
|
|
DBPacket::TExchangeItem GuildWareItem;
|
|
};
|
|
|
|
// QUERY_MOVE_GUILDWARE_TO_INVEN // 길드창고 -> 인벤로 아이템 이동
|
|
struct TQMoveGuildWareToInven : public TQHeader
|
|
{
|
|
INT64 nCharacterDBID; // 캐릭터 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; // 캐릭터 DBID
|
|
UINT nGuildDBID; // 길드 DBID
|
|
char cWorldSetID; // 월드 ID
|
|
|
|
int nDailyTakeItemCount;
|
|
__time64_t tUseDate;
|
|
|
|
DBPacket::TExchangeItem GuildWareItem;
|
|
DBPacket::TExchangeItem InvenItem;
|
|
};
|
|
|
|
struct TQGuildWareHouseCoin : public TQHeader
|
|
{
|
|
INT64 nCharacterDBID; // 캐릭터 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; // 캐릭터 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; // 캐릭터 DBID
|
|
UINT nGuildDBID; // 길드 DBID
|
|
int nIndex; // 요청 인덱스
|
|
};
|
|
|
|
struct TAGetGuildWareHistory
|
|
{
|
|
UINT nAccountDBID; // 계정 DBID
|
|
INT64 nCharacterDBID; // 캐릭터 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; // 캐릭터코드
|
|
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; // 캐릭터 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'=캐릭터 예선 포인트 조회, 'G'=길드 예선포인트 조회, 'T'=팀 예선포인트 조회
|
|
INT64 biDBID; // C-캐릭터 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; // 캐릭터 ID
|
|
WCHAR wszCharName[NAMELENMAX]; // 캐릭터 이름
|
|
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; // 캐릭터 ID
|
|
WCHAR wszCharName[NAMELENMAX]; // 캐릭터 이름
|
|
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; // 길드장 캐릭터 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; // 캐릭터 DBID
|
|
UINT nGuildDBID; // 투표 길드 ID
|
|
};
|
|
|
|
struct TAAddGuildWarPopularityVote : public TAHeader
|
|
{
|
|
|
|
};
|
|
// QUERY_GET_GUILDWARPOPULARITYVOTE // 인기 투표 결과(캐릭터가 투표를 했는지 조회에도 사용)
|
|
struct TQGetGuildWarPopularityVote : public TQHeader
|
|
{
|
|
char cQueryType; // 'C' - 캐릭터 투표여부, 'G'-길드조회
|
|
INT64 biCharacterDBID; // 캐릭터 DBID
|
|
};
|
|
|
|
struct TAGetGuildWarPopularityVote : public TAHeader
|
|
{
|
|
char cQueryType; // 'C' - 캐릭터 투표여부, '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; // 캐릭터 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; // 캐릭터 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; // 캐릭터 DBID
|
|
UINT nGuildDBID; // 길드 DBID
|
|
short wStorageSize; // 창고 사이즈
|
|
};
|
|
|
|
struct TAChangeGuildWareSize: public TAHeader
|
|
{
|
|
INT64 nCharacterDBID; // 캐릭터 DBID
|
|
UINT nGuildDBID; // 길드 DBID
|
|
char cWorldSetID; // 월드 ID
|
|
short wStorageSize; // 창고 사이즈
|
|
};
|
|
|
|
//QUERY_CHANGEGUILDMARK
|
|
struct TQChangeGuildMark : public TQHeader
|
|
{
|
|
INT64 nCharacterDBID; // 캐릭터 DBID
|
|
UINT nGuildDBID; // 길드 DBID
|
|
short wGuildMark; // 길드마크 문양
|
|
short wGuildMarkBG; // 길드마크 배경
|
|
short wGuildMarkBorder; // 길드마크 테두리
|
|
};
|
|
|
|
struct TAChangeGuildMark: public TAHeader
|
|
{
|
|
INT64 nCharacterDBID; // 캐릭터 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; // 사용후남은 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]; // 캐릭터이름(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<TAUpdateDarkLairResult>
|
|
{
|
|
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; // 캐릭터 DBID
|
|
WCHAR wszAccountName[IDLENMAX]; // 계정 이름
|
|
WCHAR wszCharacterName[NAMELENMAX]; // 캐릭터 이름
|
|
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; // 캐릭터 DBID
|
|
WCHAR wszAccountName[IDLENMAX]; // 계정 이름
|
|
WCHAR wszCharacterName[NAMELENMAX]; // 캐릭터 이름
|
|
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, // 캐쉬아이템 실패한거 리스트 얻어오기 (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넣어주면 됨 (캐쉬는 참조하지않음)
|
|
INT64 biInvenSerial;
|
|
int iMapID;
|
|
WCHAR wszIP[IPLENMAX];
|
|
};
|
|
|
|
struct TAPetal: public TAHeader
|
|
{
|
|
int nUseItemID;
|
|
int nTotalPetal;
|
|
char cInvenType; // eItemPositionType
|
|
BYTE cInvenIndex; // 일반인벤일때만 index넣어주면 됨 (캐쉬는 참조하지않음)
|
|
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; // 캐릭터코드
|
|
};
|
|
struct TAGetMyGuildRecruit:public TAHeader
|
|
{
|
|
BYTE cCount;
|
|
TGuildRecruitInfo GuildRecruitList[GuildRecruitSystem::Max::MaxRequestCount];
|
|
};
|
|
struct TQGetGuildRecruitRequestCount:public TQHeader
|
|
{
|
|
INT64 biCharacterDBID; // 캐릭터코드
|
|
};
|
|
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; // 캐릭터코드
|
|
UINT nGuildDBID; // 길드 DBID
|
|
};
|
|
struct TAGuildRecruitRequestOn:public TAHeader
|
|
{
|
|
};
|
|
struct TQGuildRecruitRequestOff:public TQHeader
|
|
{
|
|
INT64 biCharacterDBID; // 캐릭터코드
|
|
UINT nGuildDBID; // 길드 DBID
|
|
};
|
|
struct TAGuildRecruitRequestOff:public TAHeader
|
|
{
|
|
};
|
|
struct TQGuildRecruitAcceptOn:public TQHeader
|
|
{
|
|
INT64 biCharacterDBID; // 캐릭터코드
|
|
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; // 캐릭터코드
|
|
UINT nGuildDBID; // 길드 DBID
|
|
INT64 biDenyCharacterDBID; // 거절할 캐릭터코드
|
|
WCHAR wszToCharacterName[NAMELENMAX];
|
|
};
|
|
struct TAGuildRecruitAcceptOff:public TAHeader
|
|
{
|
|
WCHAR wszToCharacterName[NAMELENMAX];
|
|
INT64 biDenyCharacterDBID;// 거절할캐릭터코드
|
|
};
|
|
struct TQDelGuildRecruit:public TQHeader
|
|
{
|
|
INT64 biCharacterDBID; // 캐릭터코드
|
|
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)
|
|
|