467 lines
18 KiB
C++
467 lines
18 KiB
C++
#include "StdAfx.h"
|
||
#include "DNFarmTask.h"
|
||
#include "DNConnection.h"
|
||
#include "DNSQLConnectionManager.h"
|
||
#include "DNSQLMembership.h"
|
||
#include "DNSQLWorld.h"
|
||
#include "Log.h"
|
||
|
||
CDNFarmTask::CDNFarmTask(CDNConnection* pConnection)
|
||
: CDNMessageTask(pConnection)
|
||
{
|
||
|
||
}
|
||
|
||
CDNFarmTask::~CDNFarmTask(void)
|
||
{
|
||
}
|
||
|
||
void CDNFarmTask::OnRecvMessage(int nThreadID, int nMainCmd, int nSubCmd, char* pData)
|
||
{
|
||
CDNSQLWorld *pWorldDB = NULL;
|
||
int nRet = ERROR_DB;
|
||
|
||
switch (nSubCmd)
|
||
{
|
||
case QUERY_GETLIST_FARM:
|
||
{
|
||
TQGetListFarm* pPacket = reinterpret_cast<TQGetListFarm*>(pData);
|
||
|
||
TAGetListFarm Packet;
|
||
memset( &Packet, 0, sizeof(Packet) );
|
||
|
||
Packet.nRetCode = ERROR_DB;
|
||
Packet.nAccountDBID = pPacket->nAccountDBID;
|
||
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB( nThreadID, pPacket->cWorldSetID );
|
||
if( pWorldDB )
|
||
Packet.nRetCode = pWorldDB->QueryGetListFarm( pPacket, &Packet );
|
||
else
|
||
g_Log.Log( LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, 0, 0, L"[ADBID:%d] [QueryGetListFarm:%d] WorldDB not found\r\n", pPacket->nAccountDBID, pPacket->cWorldSetID);
|
||
|
||
int iSize = sizeof(Packet)-sizeof(Packet.Farms)+(Packet.cCount*sizeof(Packet.Farms[0]));
|
||
m_pConnection->AddSendData( nMainCmd, nSubCmd, reinterpret_cast<char*>(&Packet), iSize );
|
||
break;
|
||
}
|
||
case QUERY_GETLIST_FIELD:
|
||
{
|
||
TQGetListField* pPacket = reinterpret_cast<TQGetListField*>(pData);
|
||
|
||
TAGetListField Packet;
|
||
memset( &Packet, 0, sizeof(Packet) );
|
||
|
||
Packet.nRetCode = ERROR_DB;
|
||
Packet.nAccountDBID = pPacket->nAccountDBID;
|
||
Packet.iFarmDBID = pPacket->iFarmDBID;
|
||
Packet.iRoomID = pPacket->iRoomID;
|
||
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB( nThreadID, pPacket->cWorldSetID );
|
||
if( pWorldDB )
|
||
Packet.nRetCode = pWorldDB->QueryGetListField( pPacket, &Packet );
|
||
else
|
||
g_Log.Log( LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, 0, 0, L"[ADBID:%d] [QueryGetListField:%d] WorldDB not found\r\n", pPacket->nAccountDBID, pPacket->cWorldSetID);
|
||
|
||
int iSize = sizeof(Packet)-sizeof(Packet.Fields)+(Packet.cCount*sizeof(Packet.Fields[0]));
|
||
m_pConnection->AddSendData( nMainCmd, nSubCmd, reinterpret_cast<char*>(&Packet), iSize );
|
||
break;
|
||
}
|
||
case QUERY_GETLIST_FIELD_FORCHARACTER:
|
||
{
|
||
TQGetListFieldForCharacter* pPacket = reinterpret_cast<TQGetListFieldForCharacter*>(pData);
|
||
|
||
TAGetListFieldForCharacter Packet;
|
||
memset( &Packet, 0, sizeof(Packet) );
|
||
|
||
Packet.nRetCode = ERROR_DB;
|
||
Packet.nAccountDBID = pPacket->nAccountDBID;
|
||
Packet.iRoomID = pPacket->iRoomID;
|
||
Packet.biCharacterDBID = pPacket->biCharacterDBID;
|
||
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB( nThreadID, pPacket->cWorldSetID );
|
||
if( pWorldDB )
|
||
Packet.nRetCode = pWorldDB->QueryGetListFieldForCharacter( pPacket, &Packet );
|
||
else
|
||
g_Log.Log( LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID,pPacket->biCharacterDBID, 0, L"[ADBID:%d] [QueryGetListFieldForCharacter:%d] WorldDB not found\r\n", pPacket->nAccountDBID, pPacket->cWorldSetID);
|
||
|
||
int iSize = sizeof(Packet)-sizeof(Packet.Fields)+(Packet.cCount*sizeof(Packet.Fields[0]));
|
||
m_pConnection->AddSendData( nMainCmd, nSubCmd, reinterpret_cast<char*>(&Packet), iSize );
|
||
break;
|
||
}
|
||
case QUERY_GETLIST_FIELD_BYCHARACTER:
|
||
{
|
||
TQGetListFieldByCharacter* pPacket = reinterpret_cast<TQGetListFieldByCharacter*>(pData);
|
||
|
||
TAGetListFieldByCharacter Packet;
|
||
memset( &Packet, 0, sizeof(Packet) );
|
||
|
||
Packet.nRetCode = ERROR_DB;
|
||
Packet.nAccountDBID = pPacket->nAccountDBID;
|
||
Packet.bRefreshGate = pPacket->bRefreshGate;
|
||
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB( nThreadID, pPacket->cWorldSetID );
|
||
if( pWorldDB )
|
||
Packet.nRetCode = pWorldDB->QueryGetListFieldByCharacter( pPacket, &Packet );
|
||
else
|
||
g_Log.Log( LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, 0, 0, L"[ADBID:%d] [QueryGetListFieldByCharacter:%d] WorldDB not found\r\n", pPacket->nAccountDBID, pPacket->cWorldSetID);
|
||
|
||
if( Packet.nRetCode == ERROR_NONE )
|
||
{
|
||
TQGetListFieldForCharacter pSubQ;
|
||
pSubQ.nAccountDBID = pPacket->nAccountDBID;
|
||
pSubQ.cWorldSetID = pPacket->cWorldSetID;
|
||
pSubQ.biCharacterDBID = pPacket->biCharacterDBID;
|
||
|
||
TAGetListFieldForCharacter pSubA;
|
||
memset( &pSubA, 0, sizeof(pSubA) );
|
||
|
||
if( pWorldDB )
|
||
nRet = pWorldDB->QueryGetListFieldForCharacter( &pSubQ, &pSubA );
|
||
|
||
if( nRet == ERROR_NONE )
|
||
{
|
||
for( int i=0 ; i<pSubA.cCount ; ++i )
|
||
{
|
||
Packet.Fields[Packet.cCount].nFieldIndex = pSubA.Fields[i].nFieldIndex;
|
||
Packet.Fields[Packet.cCount].iItemID = pSubA.Fields[i].iItemID;
|
||
Packet.Fields[Packet.cCount].iElapsedTimeSec = pSubA.Fields[i].iElapsedTimeSec;
|
||
memcpy( Packet.Fields[Packet.cCount].AttachItems, pSubA.Fields[i].AttachItems, sizeof(Packet.Fields[Packet.cCount].AttachItems) );
|
||
|
||
++Packet.cCount;
|
||
if( Packet.cCount >= _countof(Packet.Fields) )
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
int iSize = sizeof(Packet)-sizeof(Packet.Fields)+(Packet.cCount*sizeof(Packet.Fields[0]));
|
||
m_pConnection->AddSendData( nMainCmd, nSubCmd, reinterpret_cast<char*>(&Packet), iSize );
|
||
break;
|
||
}
|
||
case QUERY_ADD_FIELD:
|
||
case QUERY_ADD_FIELD_FORCHARACTER:
|
||
{
|
||
TQAddField* pPacket = reinterpret_cast<TQAddField*>(pData);
|
||
|
||
TAAddField Packet;
|
||
memset( &Packet, 0, sizeof(Packet) );
|
||
|
||
Packet.nRetCode = ERROR_DB;
|
||
Packet.nAccountDBID = pPacket->nAccountDBID;
|
||
Packet.iRoomID = pPacket->iRoomID;
|
||
Packet.nFieldIndex = pPacket->nFieldIndex;
|
||
Packet.biCharacterDBID = pPacket->biCharacterDBID;
|
||
Packet.cInvenIndex = pPacket->cInvenIndex;
|
||
Packet.biSeedItemSerial = pPacket->biSeedItemSerial;
|
||
Packet.cAttachCount = pPacket->cAttachCount;
|
||
for( int i=0 ; i<Packet.cAttachCount ; ++i )
|
||
Packet.AttachItems[i] = pPacket->AttachItems[i];
|
||
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB( nThreadID, pPacket->cWorldSetID );
|
||
if( pWorldDB )
|
||
{
|
||
if( nSubCmd == QUERY_ADD_FIELD )
|
||
{
|
||
Packet.nRetCode = pWorldDB->QueryAddField( pPacket, &Packet );
|
||
}
|
||
else
|
||
{
|
||
Packet.nRetCode = pWorldDB->QueryAddFieldForCharacter( pPacket, &Packet );
|
||
}
|
||
}
|
||
else
|
||
g_Log.Log( LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, 0, 0, L"[ADBID:%d] [QueryAddField:%d] WorldDB not found\r\n", pPacket->nAccountDBID, pPacket->cWorldSetID);
|
||
|
||
m_pConnection->AddSendData( nMainCmd, nSubCmd, reinterpret_cast<char*>(&Packet), sizeof(Packet) );
|
||
|
||
if( Packet.nRetCode == ERROR_NONE )
|
||
{
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
TQUseItem UseItem;
|
||
memset( &UseItem, 0, sizeof(UseItem) );
|
||
|
||
UseItem.cThreadID = pPacket->cThreadID;
|
||
UseItem.cWorldSetID = pPacket->cWorldSetID;
|
||
UseItem.nAccountDBID = pPacket->nAccountDBID;
|
||
UseItem.Code = DBDNWorldDef::UseItem::Use;
|
||
UseItem.biItemSerial = pPacket->biSeedItemSerial;
|
||
UseItem.nUsedItemCount = 1;
|
||
UseItem.iMapID = pPacket->iMapID;
|
||
_wcscpy( UseItem.wszIP, _countof(UseItem.wszIP), pPacket->wszIP, (int)wcslen(pPacket->wszIP) );
|
||
|
||
CDNMessageTask* pTask = m_pConnection->GetMessageTask(MAINCMD_ITEM);
|
||
if (pTask)
|
||
pTask->OnRecvMessage(pPacket->cThreadID, MAINCMD_ITEM, QUERY_USEITEM, reinterpret_cast<char*>(&UseItem));
|
||
|
||
// Attach <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
for( int i=0 ; i<pPacket->cAttachCount ; ++i )
|
||
{
|
||
#if defined( PRE_ADD_TOTAL_LEVEL_SKILL )
|
||
if( !pPacket->AttachItems[i].bRemoveItem )
|
||
continue;
|
||
#endif
|
||
UseItem.biItemSerial = pPacket->AttachItems[i].biSerial;
|
||
UseItem.nUsedItemCount = pPacket->AttachItems[i].cCount;
|
||
|
||
CDNMessageTask* pTask = m_pConnection->GetMessageTask(MAINCMD_ITEM);
|
||
if (pTask)
|
||
pTask->OnRecvMessage(pPacket->cThreadID, MAINCMD_ITEM, QUERY_USEITEM, reinterpret_cast<char*>(&UseItem));
|
||
}
|
||
}
|
||
|
||
break;
|
||
}
|
||
case QUERY_DEL_FIELD:
|
||
{
|
||
TQDelField* pPacket = reinterpret_cast<TQDelField*>(pData);
|
||
|
||
TADelField Packet;
|
||
memset( &Packet, 0, sizeof(Packet) );
|
||
|
||
Packet.nRetCode = ERROR_DB;
|
||
Packet.iRoomID = pPacket->iRoomID;
|
||
Packet.nFieldIndex = pPacket->nFieldIndex;
|
||
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB( nThreadID, pPacket->cWorldSetID );
|
||
if( pWorldDB )
|
||
Packet.nRetCode = pWorldDB->QueryDelField( pPacket, &Packet );
|
||
else
|
||
g_Log.Log( LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, 0, 0, L"[ADBID:%d] [QueryDelField:%d] WorldDB not found\r\n", pPacket->nAccountDBID, pPacket->cWorldSetID);
|
||
|
||
m_pConnection->AddSendData( nMainCmd, nSubCmd, reinterpret_cast<char*>(&Packet), sizeof(Packet) );
|
||
break;
|
||
}
|
||
case QUERY_DEL_FIELD_FORCHARACTER:
|
||
{
|
||
TQDelFieldForCharacter* pPacket = reinterpret_cast<TQDelFieldForCharacter*>(pData);
|
||
|
||
TADelFieldForCharacter Packet;
|
||
memset( &Packet, 0, sizeof(Packet) );
|
||
|
||
Packet.nRetCode = ERROR_DB;
|
||
Packet.iRoomID = pPacket->iRoomID;
|
||
Packet.nFieldIndex = pPacket->nFieldIndex;
|
||
Packet.biCharacterDBID = pPacket->biCharacterDBID;
|
||
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB( nThreadID, pPacket->cWorldSetID );
|
||
if( pWorldDB )
|
||
Packet.nRetCode = pWorldDB->QueryDelFieldForCharacter( pPacket, &Packet );
|
||
else
|
||
g_Log.Log( LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, 0, 0, L"[ADBID:%d] [QueryDelFieldForCharacter:%d] WorldDB not found\r\n", pPacket->nAccountDBID, pPacket->cWorldSetID);
|
||
|
||
m_pConnection->AddSendData( nMainCmd, nSubCmd, reinterpret_cast<char*>(&Packet), sizeof(Packet) );
|
||
break;
|
||
}
|
||
case QUERY_ADD_FIELD_ATTACHMENT:
|
||
case QUERY_ADD_FIELD_FORCHARACTER_ATTACHMENT:
|
||
{
|
||
TQAddFieldAttachment* pPacket = reinterpret_cast<TQAddFieldAttachment*>(pData);
|
||
|
||
TAAddFieldAttachment Packet;
|
||
memset( &Packet, 0, sizeof(Packet) );
|
||
|
||
Packet.nRetCode = ERROR_DB;
|
||
Packet.nAccountDBID = pPacket->nAccountDBID;
|
||
Packet.iRoomID = pPacket->iRoomID;
|
||
Packet.biCharacterDBID = pPacket->biCharacterDBID;
|
||
Packet.nFieldIndex = pPacket->nFieldIndex;
|
||
Packet.iAttachItemID = pPacket->iAttachItemID;
|
||
Packet.cInvenType = pPacket->cInvenType;
|
||
Packet.cInvenIndex = pPacket->cInvenIndex;
|
||
Packet.biAttachItemSerial = pPacket->biAttachItemSerial;
|
||
#if defined( PRE_ADD_VIP_FARM )
|
||
Packet.bVirtualAttach = pPacket->bVirtualAttach;
|
||
#endif // #if defined( PRE_ADD_VIP_FARM )
|
||
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB( nThreadID, pPacket->cWorldSetID );
|
||
if( pWorldDB )
|
||
{
|
||
if( nSubCmd == QUERY_ADD_FIELD_ATTACHMENT )
|
||
Packet.nRetCode = pWorldDB->QueryAddFieldAttachment( pPacket, &Packet );
|
||
else
|
||
Packet.nRetCode = pWorldDB->QueryAddFieldForCharacterAttachment( pPacket, &Packet );
|
||
}
|
||
else
|
||
g_Log.Log( LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, 0, 0, L"[ADBID:%d] [QueryAddFieldAttachment:%d] WorldDB not found\r\n", pPacket->nAccountDBID, pPacket->cWorldSetID);
|
||
|
||
m_pConnection->AddSendData( nMainCmd, nSubCmd, reinterpret_cast<char*>(&Packet), sizeof(Packet) );
|
||
|
||
#if defined( PRE_ADD_VIP_FARM )
|
||
if( Packet.nRetCode == ERROR_NONE && pPacket->bVirtualAttach == false )
|
||
#else
|
||
if( Packet.nRetCode == ERROR_NONE )
|
||
#endif // #if defined( PRE_ADD_VIP_FARM )
|
||
{
|
||
// Attach <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
TQUseItem UseItem;
|
||
memset( &UseItem, 0, sizeof(UseItem) );
|
||
|
||
UseItem.cThreadID = pPacket->cThreadID;
|
||
UseItem.cWorldSetID = pPacket->cWorldSetID;
|
||
UseItem.nAccountDBID = pPacket->nAccountDBID;
|
||
UseItem.Code = DBDNWorldDef::UseItem::Use;
|
||
UseItem.biItemSerial = pPacket->biAttachItemSerial;
|
||
UseItem.nUsedItemCount = 1;
|
||
UseItem.iMapID = pPacket->iMapID;
|
||
_wcscpy( UseItem.wszIP, _countof(UseItem.wszIP), pPacket->wszIP, (int)wcslen(pPacket->wszIP) );
|
||
|
||
CDNMessageTask* pTask = m_pConnection->GetMessageTask(MAINCMD_ITEM);
|
||
if (pTask)
|
||
pTask->OnRecvMessage(pPacket->cThreadID, MAINCMD_ITEM, QUERY_USEITEM, reinterpret_cast<char*>(&UseItem));
|
||
}
|
||
break;
|
||
}
|
||
case QUERY_MOD_FIELD_ELAPSEDTIME:
|
||
{
|
||
TQModFieldElapsedTime* pPacket = reinterpret_cast<TQModFieldElapsedTime*>(pData);
|
||
|
||
TAModFieldElapsedTime Packet;
|
||
memset( &Packet, 0, sizeof(Packet) );
|
||
|
||
Packet.nRetCode = ERROR_DB;
|
||
Packet.nAccountDBID = pPacket->nAccountDBID;
|
||
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB( nThreadID, pPacket->cWorldSetID );
|
||
if( pWorldDB )
|
||
Packet.nRetCode = pWorldDB->QueryModFieldElapsedTime( pPacket, &Packet );
|
||
else
|
||
g_Log.Log( LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, 0, 0, L"[ADBID:%d] [QueryModFieldElapsedTime:%d] WorldDB not found\r\n", pPacket->nAccountDBID, pPacket->cWorldSetID);
|
||
|
||
// <20><><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ش<EFBFBD> Cmd <20><><EFBFBD><EFBFBD> ó<><C3B3> <20><><EFBFBD><EFBFBD>
|
||
//m_pConnection->AddSendData( nMainCmd, nSubCmd, reinterpret_cast<char*>(&Packet), sizeof(Packet) );
|
||
break;
|
||
}
|
||
case QUERY_MOD_FIELD_FORCHARACTER_ELAPSEDTIME:
|
||
{
|
||
TQModFieldForCharacterElapsedTime* pPacket = reinterpret_cast<TQModFieldForCharacterElapsedTime*>(pData);
|
||
|
||
TAModFieldForCharacterElapsedTime Packet;
|
||
memset( &Packet, 0, sizeof(Packet) );
|
||
|
||
Packet.nRetCode = ERROR_DB;
|
||
Packet.nAccountDBID = pPacket->nAccountDBID;
|
||
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB( nThreadID, pPacket->cWorldSetID );
|
||
if( pWorldDB )
|
||
Packet.nRetCode = pWorldDB->QueryModFieldForCharacterElapsedTime( pPacket, &Packet );
|
||
else
|
||
g_Log.Log( LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, pPacket->biCharacterDBID, 0, L"[ADBID:%d] [QueryModFieldForCharacterElapsedTime:%d] WorldDB not found\r\n", pPacket->nAccountDBID, pPacket->cWorldSetID);
|
||
|
||
// <20><><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ش<EFBFBD> Cmd <20><><EFBFBD><EFBFBD> ó<><C3B3> <20><><EFBFBD><EFBFBD>
|
||
//m_pConnection->AddSendData( nMainCmd, nSubCmd, reinterpret_cast<char*>(&Packet), sizeof(Packet) );
|
||
break;
|
||
}
|
||
case QUERY_HARVEST:
|
||
case QUERY_HARVEST_FORCHARACTER:
|
||
{
|
||
TQHarvest* pPacket = reinterpret_cast<TQHarvest*>(pData);
|
||
|
||
TAHarvest Packet;
|
||
memset( &Packet, 0, sizeof(Packet) );
|
||
|
||
Packet.nRetCode = ERROR_DB;
|
||
Packet.nAccountDBID = pPacket->nAccountDBID;
|
||
Packet.iRoomID = pPacket->iRoomID;
|
||
Packet.nFieldIndex = pPacket->nFieldIndex;
|
||
Packet.biCharacterDBID = pPacket->biCharacterDBID;
|
||
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB( nThreadID, pPacket->cWorldSetID );
|
||
if( pWorldDB )
|
||
{
|
||
if( nSubCmd == QUERY_HARVEST )
|
||
Packet.nRetCode = pWorldDB->QueryHarvest( pPacket, &Packet );
|
||
else
|
||
Packet.nRetCode = pWorldDB->QueryHarvestForCharacter( pPacket, &Packet );
|
||
}
|
||
else
|
||
g_Log.Log( LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, 0, 0, L"[ADBID:%d] [QueryHarvest:%d] WorldDB not found\r\n", pPacket->nAccountDBID, pPacket->cWorldSetID);
|
||
|
||
m_pConnection->AddSendData( nMainCmd, nSubCmd, reinterpret_cast<char*>(&Packet), sizeof(Packet) );
|
||
break;
|
||
}
|
||
case QUERY_GETLIST_HARVESTDEPOTITEM:
|
||
{
|
||
TQGetListHarvestDepotItem* pPacket = reinterpret_cast<TQGetListHarvestDepotItem*>(pData);
|
||
|
||
TAGetListHarvestDepotItem Packet;
|
||
memset( &Packet, 0, sizeof(Packet) );
|
||
|
||
Packet.nRetCode = ERROR_DB;
|
||
Packet.nAccountDBID = pPacket->nAccountDBID;
|
||
Packet.biLastUniqueID = pPacket->biLastUniqueID;
|
||
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB( nThreadID, pPacket->cWorldSetID );
|
||
if( pWorldDB )
|
||
Packet.nRetCode = pWorldDB->QueryGetListHarvestDepotItem( pPacket, &Packet );
|
||
else
|
||
g_Log.Log( LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, 0, 0, L"[ADBID:%d] [QueryGetListHarvestDepotItem:%d] WorldDB not found\r\n", pPacket->nAccountDBID, pPacket->cWorldSetID);
|
||
|
||
int iSize = sizeof(Packet)-sizeof(Packet.Items)+(Packet.cCount*sizeof(Packet.Items[0]));
|
||
m_pConnection->AddSendData( nMainCmd, nSubCmd, reinterpret_cast<char*>(&Packet), iSize );
|
||
break;
|
||
}
|
||
case QUERY_GETCOUNT_HARVESTDEPOTITEM:
|
||
{
|
||
TQGetCountHarvestDepotItem* pPacket = reinterpret_cast<TQGetCountHarvestDepotItem*>(pData);
|
||
|
||
TAGetCountHarvestDepotItem Packet;
|
||
memset( &Packet, 0, sizeof(Packet) );
|
||
|
||
Packet.nRetCode = ERROR_DB;
|
||
Packet.nAccountDBID = pPacket->nAccountDBID;
|
||
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB( nThreadID, pPacket->cWorldSetID );
|
||
if( pWorldDB )
|
||
Packet.nRetCode = pWorldDB->QueryGetCountHarvestDepotItem( pPacket, &Packet );
|
||
else
|
||
g_Log.Log( LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, 0, 0, L"[ADBID:%d] [QueryGetCountHarvestDepotItem:%d] WorldDB not found\r\n", pPacket->nAccountDBID, pPacket->cWorldSetID);
|
||
|
||
m_pConnection->AddSendData( nMainCmd, nSubCmd, reinterpret_cast<char*>(&Packet), sizeof(Packet) );
|
||
break;
|
||
}
|
||
case QUERY_GETFIELDCOUNT_BYCHARACTER:
|
||
{
|
||
TQGetFieldCountByCharacter* pPacket = reinterpret_cast<TQGetFieldCountByCharacter*>(pData);
|
||
|
||
TAGetFieldCountByCharacter Packet;
|
||
memset( &Packet, 0, sizeof(Packet) );
|
||
|
||
Packet.nRetCode = ERROR_DB;
|
||
Packet.nAccountDBID = pPacket->nAccountDBID;
|
||
Packet.bIsSend = pPacket->bIsSend;
|
||
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB( nThreadID, pPacket->cWorldSetID );
|
||
if( pWorldDB )
|
||
Packet.nRetCode = pWorldDB->QueryGetFieldCountByCharacter( pPacket, &Packet );
|
||
else
|
||
g_Log.Log( LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, 0, 0, L"[ADBID:%d] [QueryGetFieldCountByCharacter:%d] WorldDB not found\r\n", pPacket->nAccountDBID, pPacket->cWorldSetID);
|
||
|
||
m_pConnection->AddSendData( nMainCmd, nSubCmd, reinterpret_cast<char*>(&Packet), sizeof(Packet) );
|
||
break;
|
||
}
|
||
case QUERY_GET_FIELDITEMCOUNT:
|
||
{
|
||
TQGetFieldItemCount* pPacket = reinterpret_cast<TQGetFieldItemCount*>(pData);
|
||
|
||
TAGetFieldItemCount Packet;
|
||
memset( &Packet, 0, sizeof(Packet) );
|
||
|
||
Packet.nRetCode = ERROR_DB;
|
||
Packet.nAccountDBID = pPacket->nAccountDBID;
|
||
Packet.iRoomID = pPacket->iRoomID;
|
||
Packet.iAreaIndex = pPacket->iAreaIndex;
|
||
Packet.nSessionID = pPacket->nSessionID;
|
||
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB( nThreadID, pPacket->cWorldSetID );
|
||
if( pWorldDB )
|
||
Packet.nRetCode = pWorldDB->QueryGetFieldItemCount( pPacket, &Packet );
|
||
else
|
||
g_Log.Log( LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, pPacket->biCharacterDBID, 0, L"[ADBID:%d] [QueryGetFieldItemCount:%d] WorldDB not found\r\n", pPacket->nAccountDBID, pPacket->cWorldSetID);
|
||
|
||
m_pConnection->AddSendData( nMainCmd, nSubCmd, reinterpret_cast<char*>(&Packet), sizeof(Packet) );
|
||
break;
|
||
}
|
||
|
||
default:
|
||
_DANGER_POINT(); //ó<><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20><EFBFBD><DEBC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
}
|
||
}
|
||
|