6695 lines
297 KiB
C++
6695 lines
297 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)
|
||
|