#include "StdAfx.h" #include "DNBestFriendTask.h" #include "DNConnection.h" #include "DNSQLConnectionManager.h" #include "DNSQLWorld.h" #include "Log.h" #include "Util.h" #if defined (PRE_ADD_BESTFRIEND) CDNBestFriendTask::CDNBestFriendTask(CDNConnection* pConnection) : CDNMessageTask(pConnection) { } CDNBestFriendTask::~CDNBestFriendTask() { } void CDNBestFriendTask::OnRecvMessage(int nThreadID, int nMainCmd, int nSubCmd, char* pData) { switch (nSubCmd) { case QUERY_GET_BESTFRIEND: { TQGetBestFriend* pPacket = reinterpret_cast(pData); CDNSQLWorld* pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pPacket->cWorldSetID); if (!pWorldDB) { g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, 0, pPacket->biCharacterDBID, 0, L"[CDBID:%I64d] [QUERY_GET_BESTFRIEND:%d] pWorldDB not found\r\n", pPacket->biCharacterDBID, pPacket->cWorldSetID); break; } TAGetBestFriend BestFriend; ZeroMemory(&BestFriend, sizeof(BestFriend)); BestFriend.nAccountDBID = pPacket->nAccountDBID; BestFriend.bSend = pPacket->bSend; BestFriend.nRetCode = pWorldDB->QueryGetBestFriend(pPacket, &BestFriend); if (BestFriend.nRetCode != ERROR_NONE) g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, 0, pPacket->biCharacterDBID, 0, L"[CDBID:%I64d] [QUERY_GET_BESTFRIEND:%d] Query Error Ret:%d\r\n", pPacket->biCharacterDBID, pPacket->cWorldSetID, BestFriend.nRetCode); m_pConnection->AddSendData(nMainCmd, nSubCmd, reinterpret_cast(&BestFriend), sizeof(BestFriend)); } break; case QUERY_REGIST_BESTFRIEND: { TQRegistBestFriend* pPacket = reinterpret_cast(pData); CDNSQLWorld* pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pPacket->cWorldSetID); if (!pWorldDB) { g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, 0, pPacket->biFromCharacterDBID, 0, L"[CDBID:%I64d] [QUERY_REGIST_BESTFRIEND:%d] pWorldDB not found\r\n", pPacket->biFromCharacterDBID, pPacket->cWorldSetID); break; } TARegistBestFriend BestFriend; ZeroMemory(&BestFriend, sizeof(BestFriend)); BestFriend.nAccountDBID = pPacket->nAccountDBID; BestFriend.nFromAccountDBID = pPacket->nFromAccountDBID; BestFriend.biFromCharacterDBID = pPacket->biFromCharacterDBID; _wcscpy(BestFriend.wszFromName, _countof(BestFriend.wszFromName), pPacket->wszFromName, _countof(BestFriend.wszFromName)); BestFriend.nToAccountDBID = pPacket->nToAccountDBID; _wcscpy(BestFriend.wszToName, _countof(BestFriend.wszToName), pPacket->wszToName, _countof(BestFriend.wszToName)); BestFriend.nItemID = pPacket->nItemID; BestFriend.biRegistSerial = pPacket->biRegistSerial; BestFriend.nRetCode = pWorldDB->QueryRegistBestFriend(pPacket, &BestFriend); if (BestFriend.nRetCode != ERROR_NONE) g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, 0, pPacket->biFromCharacterDBID, 0, L"[CDBID:%I64d] [QUERY_REGIST_BESTFRIEND:%d] Query Error Ret:%d\r\n", pPacket->biFromCharacterDBID, pPacket->cWorldSetID, BestFriend.nRetCode); else { TQModVariableReset FromVariable; memset( &FromVariable, 0, sizeof(FromVariable) ); FromVariable.cThreadID = pPacket->cThreadID; FromVariable.cWorldSetID = pPacket->cWorldSetID; FromVariable.biCharacterDBID = pPacket->biFromCharacterDBID; FromVariable.Type = CommonVariable::Type::BESTFRIEND_GIFTBOXID; FromVariable.biValue = pPacket->nItemID; CDNMessageTask* pTask = NULL; pTask = m_pConnection->GetMessageTask(MAINCMD_STATUS); if (pTask) pTask->OnRecvMessage( pPacket->cThreadID, MAINCMD_STATUS, QUERY_MOD_VARIABLERESET, reinterpret_cast(&FromVariable) ); TQModVariableReset ToVariable; memset( &ToVariable, 0, sizeof(ToVariable) ); ToVariable.cThreadID = pPacket->cThreadID; ToVariable.cWorldSetID = pPacket->cWorldSetID; ToVariable.biCharacterDBID = pPacket->biToCharacterDBID; ToVariable.Type = CommonVariable::Type::BESTFRIEND_GIFTBOXID; ToVariable.biValue = pPacket->nItemID; pTask = NULL; pTask = m_pConnection->GetMessageTask(MAINCMD_STATUS); if (pTask) pTask->OnRecvMessage( pPacket->cThreadID, MAINCMD_STATUS, QUERY_MOD_VARIABLERESET, reinterpret_cast(&ToVariable) ); 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->biRegistSerial; UseItem.nUsedItemCount = 1; UseItem.iMapID = pPacket->nMapID; _wcscpy( UseItem.wszIP, _countof(UseItem.wszIP), pPacket->wszIP, (int)wcslen(pPacket->wszIP) ); pTask = NULL; pTask = m_pConnection->GetMessageTask(MAINCMD_ITEM); if (pTask) pTask->OnRecvMessage( pPacket->cThreadID, MAINCMD_ITEM, QUERY_USEITEM, reinterpret_cast(&UseItem) ); } m_pConnection->AddSendData(nMainCmd, nSubCmd, reinterpret_cast(&BestFriend), sizeof(BestFriend)); } break; case QUERY_CANCEL_BESTFRIEND: { TQCancelBestFriend* pPacket = reinterpret_cast(pData); CDNSQLWorld* pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pPacket->cWorldSetID); if (!pWorldDB) { g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, 0, pPacket->biCharacterDBID, 0, L"[CDBID:%I64d] [QUERY_CANCEL_BESTFRIEND:%d] pWorldDB not found\r\n", pPacket->biCharacterDBID, pPacket->cWorldSetID); break; } TACancelBestFriend BestFriend; ZeroMemory(&BestFriend, sizeof(BestFriend)); BestFriend.nAccountDBID = pPacket->nAccountDBID; BestFriend.bCancel = pPacket->bCancel; BestFriend.nRetCode = pWorldDB->QueryCancelBestFriend(pPacket, &BestFriend); if (BestFriend.nRetCode != ERROR_NONE) g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, 0, pPacket->biCharacterDBID, 0, L"[CDBID:%I64d] [QUERY_CANCEL_BESTFRIEND:%d] Query Error Ret:%d\r\n", pPacket->biCharacterDBID, pPacket->cWorldSetID, BestFriend.nRetCode); m_pConnection->AddSendData(nMainCmd, nSubCmd, reinterpret_cast(&BestFriend), sizeof(BestFriend)); } break; case QUERY_CLOSE_BESTFRIEND: { TQCloseBestFriend* pPacket = reinterpret_cast(pData); CDNSQLWorld* pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pPacket->cWorldSetID); if (!pWorldDB) { g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, 0, pPacket->biCharacterDBID, 0, L"[CDBID:%I64d] [QUERY_CLOSE_BESTFRIEND:%d] pWorldDB not found\r\n", pPacket->biCharacterDBID, pPacket->cWorldSetID); break; } TACloseBestFriend BestFriend; ZeroMemory(&BestFriend, sizeof(BestFriend)); BestFriend.nAccountDBID = pPacket->nAccountDBID; BestFriend.nRetCode = pWorldDB->QueryCloseBestFriend(pPacket, &BestFriend); if (BestFriend.nRetCode != ERROR_NONE) g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, 0, pPacket->biCharacterDBID, 0, L"[CDBID:%I64d] [QUERY_CLOSE_BESTFRIEND:%d] Query Error Ret:%d\r\n", pPacket->biCharacterDBID, pPacket->cWorldSetID, BestFriend.nRetCode); m_pConnection->AddSendData(nMainCmd, nSubCmd, reinterpret_cast(&BestFriend), sizeof(BestFriend)); } break; case QUERY_EDIT_BESTFRIENDMEMO: { TQEditBestFriendMemo* pPacket = reinterpret_cast(pData); CDNSQLWorld* pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pPacket->cWorldSetID); if (!pWorldDB) { g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, 0, pPacket->biCharacterDBID, 0, L"[CDBID:%I64d] [QUERY_EDIT_BESTFRIENDMEMO:%d] pWorldDB not found\r\n", pPacket->biCharacterDBID, pPacket->cWorldSetID); break; } TAEditBestFriendMemo BestFriend; ZeroMemory(&BestFriend, sizeof(BestFriend)); BestFriend.nAccountDBID = pPacket->nAccountDBID; _wcscpy( BestFriend.wszMemo, _countof(BestFriend.wszMemo), pPacket->wszMemo, (int)wcslen(pPacket->wszMemo) ); BestFriend.nRetCode = pWorldDB->QueryEditBestFriendMemo(pPacket, &BestFriend); if (BestFriend.nRetCode != ERROR_NONE) g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, 0, pPacket->biCharacterDBID, 0, L"[CDBID:%I64d] [QUERY_EDIT_BESTFRIENDMEMO:%d] Query Error Ret:%d\r\n", pPacket->biCharacterDBID, pPacket->cWorldSetID, BestFriend.nRetCode); m_pConnection->AddSendData(nMainCmd, nSubCmd, reinterpret_cast(&BestFriend), sizeof(BestFriend)); } break; default: break; } } #endif // #if defined (PRE_ADD_BESTFRIEND)