DragonNest/Server/DNDBServer/DNMailTask.cpp
2024-12-19 09:48:26 +08:00

676 lines
27 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "StdAfx.h"
#include "DNMailTask.h"
#include "DNConnection.h"
#include "DNSQLConnectionManager.h"
#include "DNSQLMembership.h"
#include "DNSQLWorld.h"
#include "Log.h"
CDNMailTask::CDNMailTask(CDNConnection *pConnection)
: CDNMessageTask(pConnection)
{
}
CDNMailTask::~CDNMailTask(void)
{
}
void CDNMailTask::OnRecvMessage(int nThreadID, int nMainCmd, int nSubCmd, char* pData)
{
CDNSQLMembership *pMembershipDB = NULL;
CDNSQLWorld *pWorldDB = NULL;
int nRet = ERROR_DB;
TQHeader *pHeader = (TQHeader*)pData;
if( pHeader->nAccountDBID > 0)
{
if( g_pSPErrorCheckManager->bIsError(pHeader->nAccountDBID) == true )
{
//g_Log.Log(LogType::_ERROR, pHeader->cWorldSetID, pHeader->nAccountDBID, 0, 0, L"[SP_ERRORCHECK] Main:%d, Sub:%d\r\n", nMainCmd, nSubCmd);
return;
}
}
switch (nSubCmd)
{
case QUERY_GETCOUNTRECEIVEMAIL:
{
TQGetCountReceiveMail *pMail = (TQGetCountReceiveMail*)pData;
TAGetCountReceiveMail Mail;
memset(&Mail, 0, sizeof(TAGetCountReceiveMail));
Mail.nAccountDBID = pMail->nAccountDBID;
Mail.nRetCode = ERROR_DB;
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pMail->cWorldSetID);
if (pWorldDB){
Mail.nRetCode = pWorldDB->QueryGetCountReceiveMail(pMail->biReceiverCharacterDBID, Mail.iTotalMailCount, Mail.iNotReadMailCount, Mail.i7DaysLeftMailCount);
if (Mail.nRetCode != ERROR_NONE)
g_Log.Log(LogType::_ERROR, pMail->cWorldSetID, pMail->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_GETCOUNTRECEIVEMAIL:%d] Result:%d\r\n", pMail->nAccountDBID, pMail->cWorldSetID, Mail.nRetCode);
}
else{
g_Log.Log(LogType::_ERROR, pMail->cWorldSetID, pMail->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_GETCOUNTRECEIVEMAIL] pWorldDB(%d) not found\r\n", pMail->nAccountDBID, pMail->cWorldSetID);
}
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Mail, sizeof(TAGetCountReceiveMail));
}
break;
case QUERY_GETPAGERECEIVEMAIL: // ¹ÞÀº ¸ÞÀÏ ¸ñ·Ï ÆäÀÌ¡
{
TQGetPageReceiveMail *pMail = (TQGetPageReceiveMail*)pData;
TAGetPageReceiveMail Mail;
memset(&Mail, 0, sizeof(TAGetPageReceiveMail));
Mail.nAccountDBID = pMail->nAccountDBID;
Mail.nRetCode = ERROR_DB;
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pMail->cWorldSetID);
if (pWorldDB){
Mail.nRetCode = pWorldDB->QueryGetPageReceiveMail(pMail, &Mail);
if (Mail.nRetCode != ERROR_NONE)
g_Log.Log(LogType::_ERROR, pMail->cWorldSetID, pMail->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_GETPAGERECEIVEMAIL:%d] Result:%d\r\n", pMail->nAccountDBID, pMail->cWorldSetID, Mail.nRetCode);
}
else{
g_Log.Log(LogType::_ERROR, pMail->cWorldSetID, pMail->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_GETPAGERECEIVEMAIL:%d] pWorldDB not found\r\n", pMail->nAccountDBID, pMail->cWorldSetID);
}
int nLen = sizeof(TAGetPageReceiveMail) - sizeof(Mail.sMail) + (sizeof(TMailBoxInfo) * Mail.cMailCount);
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Mail, nLen);
}
break;
case QUERY_SENDMAIL:
{
TQSendMail *pMail = (TQSendMail*)pData;
TASendMail Mail;
memset(&Mail, 0, sizeof(TASendMail));
Mail.nAccountDBID = pMail->nAccountDBID;
Mail.Code = pMail->Code;
Mail.biAttachCoin = pMail->biAttachCoin;
Mail.nTax = pMail->nTax;
Mail.cAttachItemCount = pMail->cAttachItemCount;
memcpy(Mail.AttachItemArr, pMail->AttachItemArr, sizeof(Mail.AttachItemArr));
Mail.nRetCode = ERROR_DB;
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pMail->cWorldSetID);
if (pWorldDB){
Mail.nRetCode = pWorldDB->QuerySendMail(pMail, &Mail);
switch (Mail.nRetCode)
{
case ERROR_NONE:
case 103163: // ¸ÞÀÏ ¹Þ´Â ij¸¯ÅͰ¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.
case 103164: // GM¿¡°Ô´Â ¸ÞÀÏÀ» º¸³¾ ¼ö ¾ø½À´Ï´Ù.
break;
default:
g_Log.Log(LogType::_ERROR, pMail->cWorldSetID, pMail->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_SENDMAIL:%d] Result:%d Receiver:%s\r\n", pMail->nAccountDBID, pMail->cWorldSetID, Mail.nRetCode, pMail->wszReceiverCharacterName);
break;
}
}
else{
g_Log.Log(LogType::_ERROR, pMail->cWorldSetID, pMail->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_SENDMAIL:%d] pWorldDB not found\r\n", pMail->nAccountDBID, pMail->cWorldSetID);
}
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Mail, sizeof(TASendMail));
}
break;
case QUERY_READMAIL:
{
TQReadMail *pMail = (TQReadMail*)pData;
TAReadMail Mail;
memset(&Mail, 0, sizeof(TAReadMail));
Mail.nAccountDBID = pMail->nAccountDBID;
Mail.nMailDBID = pMail->iMailID;
Mail.nRetCode = ERROR_DB;
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pMail->cWorldSetID);
if (pWorldDB){
Mail.nRetCode = pWorldDB->QueryReadMail(pMail, &Mail);
switch (Mail.nRetCode)
{
case ERROR_NONE:
case 103166: // Á¸ÀçÇÏÁö ¾Ê´Â ¸ÞÀÏÀÔ´Ï´Ù.
break;
default:
g_Log.Log(LogType::_ERROR, pMail->cWorldSetID, pMail->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_READMAIL:%d] Result:%d MailID:%d\r\n", pMail->nAccountDBID, pMail->cWorldSetID, Mail.nRetCode, pMail->iMailID);
break;
}
}
else{
g_Log.Log(LogType::_ERROR, pMail->cWorldSetID, pMail->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_READMAIL:%d] pWorldDB not found\r\n", pMail->nAccountDBID, pMail->cWorldSetID);
}
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Mail, sizeof(TAReadMail));
}
break;
case QUERY_DELMAIL:
{
TQDelMail *pMail = (TQDelMail*)pData;
TADelMail Mail;
memset(&Mail, 0, sizeof(TADelMail));
Mail.nAccountDBID = pMail->nAccountDBID;
Mail.nRetCode = ERROR_DB;
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pMail->cWorldSetID);
if (pWorldDB){
Mail.nRetCode = pWorldDB->QueryDelMail(pMail, &Mail);
if (Mail.nRetCode != ERROR_NONE)
g_Log.Log(LogType::_ERROR, pMail->cWorldSetID, pMail->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_DELMAIL:%d] Result:%d\r\n", pMail->nAccountDBID, pMail->cWorldSetID, Mail.nRetCode);
}
else{
g_Log.Log(LogType::_ERROR, pMail->cWorldSetID, pMail->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_DELMAIL:%d] pWorldDB not found\r\n", pMail->nAccountDBID, pMail->cWorldSetID);
}
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Mail, sizeof(TADelMail));
}
break;
case QUERY_GETLISTMAILATTACHMENT:
{
TQGetListMailAttachment *pMail = (TQGetListMailAttachment*)pData;
TAGetListMailAttachment Mail;
memset(&Mail, 0, sizeof(TAGetListMailAttachment));
Mail.nAccountDBID = pMail->nAccountDBID;
Mail.nRetCode = ERROR_DB;
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pMail->cWorldSetID);
if (pWorldDB){
Mail.nRetCode = pWorldDB->QueryGetListMailAttachment(pMail, &Mail);
if (Mail.nRetCode != ERROR_NONE)
g_Log.Log(LogType::_ERROR, pMail->cWorldSetID, pMail->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_GETLISTMAILATTACHMENT:%d] Result:%d\r\n", pMail->nAccountDBID, pMail->cWorldSetID, Mail.nRetCode);
for (int i = 0; i < Mail.cCount; i++){
if (Mail.MailAttachArray[i].cItemAttachCount <= 0) continue;
pWorldDB->QueryGetListMailAttachmentByMail(Mail.MailAttachArray[i].nMailDBID, Mail.MailAttachArray[i]);
}
}
else{
g_Log.Log(LogType::_ERROR, pMail->cWorldSetID, pMail->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_GETLISTMAILATTACHMENT:%d] pWorldDB not found\r\n", pMail->nAccountDBID, pMail->cWorldSetID);
}
int nLen = sizeof(TAGetListMailAttachment) - sizeof(Mail.MailAttachArray) + (sizeof(DBPacket::TAttachMail) * Mail.cCount);
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Mail, nLen);
}
break;
case QUERY_TAKEATTACHMAILLIST:
{
TQTakeAttachMailList *pMail = (TQTakeAttachMailList*)pData;
TATakeAttachMailList Mail;
memset(&Mail, 0, sizeof(TATakeAttachMailList));
Mail.nAccountDBID = pMail->nAccountDBID;
Mail.nRetCode = ERROR_DB;
Mail.cPageCount = pMail->cPageCount;
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pMail->cWorldSetID);
if (pWorldDB){
for (int i = 0; i < pMail->cPageCount; i++){
Mail.TakeMailList[i].nMailDBID = pMail->Info[i].nMailDBID; // MailDBID
if (pMail->Info[i].bAttachCoin)
{
#ifdef PRE_ADD_JOINGUILD_SUPPORT
Mail.nRetCode = pWorldDB->QueryTakeMailAttachCoin(pMail->Info[i].nMailDBID, pMail->nChannelID, pMail->nMapID, Mail.TakeMailList[i].biAttachCoin, pMail->nGuildDBID, Mail.TakeMailList[i].bAddGuildWare);
#else //#ifdef PRE_ADD_JOINGUILD_SUPPORT
bool bAddGuildWare = false;
Mail.nRetCode = pWorldDB->QueryTakeMailAttachCoin(pMail->Info[i].nMailDBID, pMail->nChannelID, pMail->nMapID, Mail.TakeMailList[i].biAttachCoin, 0, bAddGuildWare);
#endif //#ifdef PRE_ADD_JOINGUILD_SUPPORT
}
for (int j = 0; j < MAILATTACHITEMMAX; j++){
if (pMail->Info[i].biSerial[j] == 0) continue;
#ifdef PRE_ADD_JOINGUILD_SUPPORT
Mail.nRetCode = pWorldDB->QueryTakeMailAttachItem(pMail->Info[i].nMailDBID, pMail->Info[i].biSerial[j], pMail->nChannelID, pMail->nMapID, pMail->wszIP, Mail.TakeMailList[i].TakeItem[j], pMail->nGuildDBID, Mail.TakeMailList[i].bAddGuildWare);
#else //#ifdef PRE_ADD_JOINGUILD_SUPPORT
bool bAddGuildWare = false;
Mail.nRetCode = pWorldDB->QueryTakeMailAttachItem(pMail->Info[i].nMailDBID, pMail->Info[i].biSerial[j], pMail->nChannelID, pMail->nMapID, pMail->wszIP, Mail.TakeMailList[i].TakeItem[j], 0, bAddGuildWare);
#endif //#ifdef PRE_ADD_JOINGUILD_SUPPORT
Mail.TakeMailList[i].TakeItem[j].cSlotIndex = pMail->Info[i].cSlotIndex[j];
}
}
if (Mail.nRetCode != ERROR_NONE)
g_Log.Log(LogType::_ERROR, pMail->cWorldSetID, pMail->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_TAKEATTACHMAILLIST:%d] Result:%d\r\n", pMail->nAccountDBID, pMail->cWorldSetID, Mail.nRetCode);
}
else{
g_Log.Log(LogType::_ERROR, pMail->cWorldSetID, pMail->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_TAKEATTACHMAILLIST:%d] pWorldDB not found\r\n", pMail->nAccountDBID, pMail->cWorldSetID);
}
int nLen = sizeof(TATakeAttachMailList) - sizeof(Mail.TakeMailList) + (sizeof(DBPacket::TTakeAttachInfo) * Mail.cPageCount);
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Mail, nLen);
}
break;
case QUERY_TAKEATTACHMAIL:
{
TQTakeAttachMail *pMail = (TQTakeAttachMail*)pData;
TATakeAttachMail Mail;
memset(&Mail, 0, sizeof(TATakeAttachMail));
Mail.nAccountDBID = pMail->nAccountDBID;
Mail.nRetCode = ERROR_DB;
Mail.TakeMail.nMailDBID = pMail->Info.nMailDBID;
Mail.cAttachSlotIndex = pMail->Info.cAttachSlotIndex;
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pMail->cWorldSetID);
if (pWorldDB){
switch (pMail->Info.cAttachSlotIndex)
{
case -1:
{
if (pMail->Info.bAttachCoin)
{
#ifdef PRE_ADD_JOINGUILD_SUPPORT
Mail.nRetCode = pWorldDB->QueryTakeMailAttachCoin(pMail->Info.nMailDBID, pMail->nChannelID, pMail->nMapID, Mail.TakeMail.biAttachCoin, pMail->nGuildDBID, Mail.TakeMail.bAddGuildWare);
#else //#ifdef PRE_ADD_JOINGUILD_SUPPORT
bool bAddGuildWare = false;
Mail.nRetCode = pWorldDB->QueryTakeMailAttachCoin(pMail->Info.nMailDBID, pMail->nChannelID, pMail->nMapID, Mail.TakeMail.biAttachCoin, 0, bAddGuildWare);
#endif //#ifdef PRE_ADD_JOINGUILD_SUPPORT
}
for (int j = 0; j < MAILATTACHITEMMAX; j++){
if (pMail->Info.biSerial[j] == 0) continue;
#ifdef PRE_ADD_JOINGUILD_SUPPORT
Mail.nRetCode = pWorldDB->QueryTakeMailAttachItem(pMail->Info.nMailDBID, pMail->Info.biSerial[j], pMail->nChannelID, pMail->nMapID, pMail->wszIP, Mail.TakeMail.TakeItem[j], pMail->nGuildDBID, Mail.TakeMail.bAddGuildWare);
#else //#ifdef PRE_ADD_JOINGUILD_SUPPORT
bool bAddGuildWare = false;
Mail.nRetCode = pWorldDB->QueryTakeMailAttachItem(pMail->Info.nMailDBID, pMail->Info.biSerial[j], pMail->nChannelID, pMail->nMapID, pMail->wszIP, Mail.TakeMail.TakeItem[j], 0, bAddGuildWare);
#endif //#ifdef PRE_ADD_JOINGUILD_SUPPORT
Mail.TakeMail.TakeItem[j].cSlotIndex = pMail->Info.cSlotIndex[j];
}
}
break;
case 0:
case 1:
case 2:
case 3:
case 4:
{
#ifdef PRE_ADD_JOINGUILD_SUPPORT
Mail.nRetCode = pWorldDB->QueryTakeMailAttachItem(pMail->Info.nMailDBID, pMail->Info.biSerial[pMail->Info.cAttachSlotIndex],
pMail->nChannelID, pMail->nMapID, pMail->wszIP, Mail.TakeMail.TakeItem[pMail->Info.cAttachSlotIndex], pMail->nGuildDBID, Mail.TakeMail.bAddGuildWare);
#else //#ifdef PRE_ADD_JOINGUILD_SUPPORT
bool bAddGuildWare = false;
Mail.nRetCode = pWorldDB->QueryTakeMailAttachItem(pMail->Info.nMailDBID, pMail->Info.biSerial[pMail->Info.cAttachSlotIndex],
pMail->nChannelID, pMail->nMapID, pMail->wszIP, Mail.TakeMail.TakeItem[pMail->Info.cAttachSlotIndex], 0, bAddGuildWare);
#endif //#ifdef PRE_ADD_JOINGUILD_SUPPORT
Mail.TakeMail.TakeItem[pMail->Info.cAttachSlotIndex].cSlotIndex = pMail->Info.cSlotIndex[pMail->Info.cAttachSlotIndex];
}
break;
}
if (Mail.nRetCode != ERROR_NONE)
g_Log.Log(LogType::_ERROR, pMail->cWorldSetID, pMail->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_TAKEATTACHMAIL:%d] Result:%d\r\n", pMail->nAccountDBID, pMail->cWorldSetID, Mail.nRetCode);
}
else{
g_Log.Log(LogType::_ERROR, pMail->cWorldSetID, pMail->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_TAKEATTACHMAIL:%d] pWorldDB not found\r\n", pMail->nAccountDBID, pMail->cWorldSetID);
}
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Mail, sizeof(TATakeAttachMail));
}
break;
case QUERY_SENDSYSTEMMAIL:
{
TQSendSystemMail *pMail = (TQSendSystemMail*)pData;
TASendSystemMail Mail;
memset(&Mail, 0, sizeof(TASendSystemMail));
Mail.nAccountDBID = pMail->nAccountDBID;
Mail.nRetCode = ERROR_DB;
#if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
Mail.biReceiverCharacterDBID = pMail->biReceiverCharacterDBID;
Mail.cWorldSetID = pMail->cWorldSetID;
#endif // #if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pMail->cWorldSetID);
if (pWorldDB){
Mail.nRetCode = pWorldDB->QuerySendSystemMail(pMail, &Mail);
if (Mail.nRetCode != ERROR_NONE)
g_Log.Log(LogType::_ERROR, pMail->cWorldSetID, pMail->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_SENDSYSTEMMAIL:%d] Result:%d\r\n", pMail->nAccountDBID, pMail->cWorldSetID, Mail.nRetCode);
}
else{
g_Log.Log(LogType::_ERROR, pMail->cWorldSetID, pMail->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_SENDSYSTEMMAIL:%d] pWorldDB not found\r\n", pMail->nAccountDBID, pMail->cWorldSetID);
}
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Mail, sizeof(TASendSystemMail));
}
break;
#ifdef PRE_ADD_BEGINNERGUILD
case QUERY_GETWILLSENDMAIL:
{
TQGetWillMails * pPacket = (TQGetWillMails*)pData;
TAGetWillMails packet;
memset(&packet, 0, sizeof(TAGetWillMails));
packet.nAccountDBID = pPacket->nAccountDBID;
packet.nRetCode = ERROR_DB;
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pPacket->cWorldSetID);
if (pWorldDB)
{
packet.nRetCode = pWorldDB->QueryGetWillSendMail(pPacket, &packet);
if (packet.nRetCode != ERROR_NONE)
{
if (packet.nRetCode == WillSendMail::Common::WillSendMail_NoRecord_RetCode)
packet.nRetCode = ERROR_NONE;
else
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, pPacket->biCharacterDBID, 0, L"[ADBID:%u] [QUERY_GETWILLSENDMAIL:%d] Result:%d\r\n", pPacket->nAccountDBID, pPacket->cWorldSetID, packet.nRetCode);
}
}
else
{
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, pPacket->biCharacterDBID, 0, L"[ADBID:%u] [QUERY_GETWILLSENDMAIL:%d] pWorldDB not found\r\n", pPacket->nAccountDBID, pPacket->cWorldSetID);
}
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&packet, sizeof(TAGetWillMails) - sizeof(packet.Mails) + (sizeof(WillSendMail::TWillSendInfo) * packet.cCount));
}
break;
case QUERY_DELWILLSENDMAIL:
{
TQDelWillMail * pPacket = (TQDelWillMail*)pData;
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pPacket->cWorldSetID);
if (pWorldDB)
{
int nRetCode = pWorldDB->QueryDelWillSendMail(pPacket->biCharacterDBID, pPacket->nMailID);
if (nRetCode != ERROR_NONE)
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, pPacket->biCharacterDBID, 0, L"[ADBID:%u] [QUERY_DELWILLSENDMAIL:%d] Result:%d\r\n", pPacket->nAccountDBID, pPacket->cWorldSetID, nRetCode);
}
else
{
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, pPacket->biCharacterDBID, 0, L"[ADBID:%u] [QUERY_DELWILLSENDMAIL:%d] pWorldDB not found\r\n", pPacket->nAccountDBID, pPacket->cWorldSetID);
}
}
break;
#endif //#ifdef PRE_ADD_BEGINNERGUILD
#if defined(PRE_ADD_CADGE_CASH)
case QUERY_SENDWISHMAIL:
{
TQSendWishMail *pMail = (TQSendWishMail*)pData;
TASendWishMail Mail;
memset(&Mail, 0, sizeof(TASendWishMail));
Mail.nAccountDBID = pMail->nAccountDBID;
Mail.nRetCode = ERROR_DB;
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pMail->cWorldSetID);
if (pWorldDB){
Mail.nRetCode = pWorldDB->QuerySendWishMail(pMail, &Mail);
if (Mail.nRetCode != ERROR_NONE)
g_Log.Log(LogType::_ERROR, pMail->cWorldSetID, pMail->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_SENDWISHMAIL:%d] Result:%d\r\n", pMail->nAccountDBID, pMail->cWorldSetID, Mail.nRetCode);
}
else{
g_Log.Log(LogType::_ERROR, pMail->cWorldSetID, pMail->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_SENDWISHMAIL:%d] pWorldDB not found\r\n", pMail->nAccountDBID, pMail->cWorldSetID);
}
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Mail, sizeof(Mail));
}
break;
case QUERY_READWISHMAIL:
{
TQReadWishMail *pMail = (TQReadWishMail*)pData;
TAReadWishMail Mail;
memset(&Mail, 0, sizeof(TAReadWishMail));
Mail.nAccountDBID = pMail->nAccountDBID;
Mail.nMailDBID = pMail->nMailID;
Mail.nRetCode = ERROR_DB;
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pMail->cWorldSetID);
if (pWorldDB){
Mail.nRetCode = pWorldDB->QueryReadWishMail(pMail, &Mail);
if (Mail.nRetCode != ERROR_NONE)
g_Log.Log(LogType::_ERROR, pMail->cWorldSetID, pMail->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_READWISHMAIL:%d] Result:%d\r\n", pMail->nAccountDBID, pMail->cWorldSetID, Mail.nRetCode);
}
else{
g_Log.Log(LogType::_ERROR, pMail->cWorldSetID, pMail->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_READWISHMAIL:%d] pWorldDB not found\r\n", pMail->nAccountDBID, pMail->cWorldSetID);
}
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Mail, sizeof(Mail));
}
break;
#endif // #if defined(PRE_ADD_CADGE_CASH)
#if defined(PRE_SPECIALBOX)
// SpecialBox
case QUERY_ADDEVENTREWARD:
{
TQAddEventReward *pSpecialBox = (TQAddEventReward*)pData;
TAAddEventReward SpecialBox;
memset(&SpecialBox, 0, sizeof(TAAddEventReward));
SpecialBox.nAccountDBID = pSpecialBox->nAccountDBID;
SpecialBox.nRetCode = ERROR_DB;
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
if (pMembershipDB){
SpecialBox.nRetCode = pMembershipDB->QueryAddEventReward(pSpecialBox, &SpecialBox);
if (SpecialBox.nRetCode == ERROR_NONE)
pMembershipDB->QueryGetCountEventReward(pSpecialBox->nAccountDBID, pSpecialBox->biCharacterDBID, SpecialBox.nEventTotalCount);
else
g_Log.Log(LogType::_ERROR, pSpecialBox->cWorldSetID, pSpecialBox->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_ADDEVENTREWARD:%d] Result:%d\r\n", pSpecialBox->nAccountDBID, pSpecialBox->cWorldSetID, SpecialBox.nRetCode);
}
else{
g_Log.Log(LogType::_ERROR, pSpecialBox->cWorldSetID, pSpecialBox->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_ADDEVENTREWARD] pMembershipDB not found\r\n", pSpecialBox->nAccountDBID, pSpecialBox->cWorldSetID);
}
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&SpecialBox, sizeof(SpecialBox));
}
break;
case QUERY_GETCOUNTEVENTREWARD:
{
TQGetCountEventReward *pSpecialBox = (TQGetCountEventReward*)pData;
TAGetCountEventReward SpecialBox;
memset(&SpecialBox, 0, sizeof(TAGetCountEventReward));
SpecialBox.nAccountDBID = pSpecialBox->nAccountDBID;
SpecialBox.nRetCode = ERROR_DB;
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
if (pMembershipDB){
SpecialBox.nRetCode = pMembershipDB->QueryGetCountEventReward(pSpecialBox->nAccountDBID, pSpecialBox->biCharacterDBID, SpecialBox.nEventTotalCount);
if (SpecialBox.nRetCode != ERROR_NONE)
g_Log.Log(LogType::_ERROR, pSpecialBox->cWorldSetID, pSpecialBox->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_GETCOUNTEVENTREWARD:%d] Result:%d\r\n", pSpecialBox->nAccountDBID, pSpecialBox->cWorldSetID, SpecialBox.nRetCode);
}
else{
g_Log.Log(LogType::_ERROR, pSpecialBox->cWorldSetID, pSpecialBox->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_GETCOUNTEVENTREWARD] pMembershipDB not found\r\n", pSpecialBox->nAccountDBID, pSpecialBox->cWorldSetID);
}
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&SpecialBox, sizeof(SpecialBox));
}
break;
case QUERY_GETLISTEVENTREWARD:
{
TQGetListEventReward *pSpecialBox = (TQGetListEventReward*)pData;
TAGetListEventReward SpecialBox;
memset(&SpecialBox, 0, sizeof(TAGetListEventReward));
SpecialBox.nAccountDBID = pSpecialBox->nAccountDBID;
SpecialBox.nRetCode = ERROR_DB;
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
if (pMembershipDB){
SpecialBox.nRetCode = pMembershipDB->QueryGetListEventReward(pSpecialBox, &SpecialBox);
if (SpecialBox.nRetCode != ERROR_NONE)
g_Log.Log(LogType::_ERROR, pSpecialBox->cWorldSetID, pSpecialBox->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_GETLISTEVENTREWARD:%d] Result:%d\r\n", pSpecialBox->nAccountDBID, pSpecialBox->cWorldSetID, SpecialBox.nRetCode);
}
else{
g_Log.Log(LogType::_ERROR, pSpecialBox->cWorldSetID, pSpecialBox->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_GETLISTEVENTREWARD] pMembershipDB not found\r\n", pSpecialBox->nAccountDBID, pSpecialBox->cWorldSetID);
}
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&SpecialBox, sizeof(SpecialBox));
}
break;
case QUERY_GETLISTEVENTREWARDITEM:
{
TQGetListEventRewardItem *pSpecialBox = (TQGetListEventRewardItem*)pData;
TAGetListEventRewardItem SpecialBox;
memset(&SpecialBox, 0, sizeof(TAGetListEventRewardItem));
SpecialBox.nAccountDBID = pSpecialBox->nAccountDBID;
SpecialBox.nEventRewardID = pSpecialBox->nEventRewardID;
SpecialBox.nRetCode = ERROR_DB;
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
if (pMembershipDB){
SpecialBox.nRetCode = pMembershipDB->QueryGetListEventRewardItem(pSpecialBox, &SpecialBox);
if (SpecialBox.nRetCode == ERROR_NONE){
#if defined(PRE_MOD_SELECT_CHAR)
pMembershipDB->QueryGetCharacterSlotCount(pSpecialBox->nAccountDBID, 0, 0, SpecialBox.cCharacterCount);
#else // #if defined(PRE_MOD_SELECT_CHAR)
pMembershipDB->QueryGetCharacterSlotCount(0, 0, pSpecialBox->biCharacterDBID, SpecialBox.cCharacterCount);
#endif // #if defined(PRE_MOD_SELECT_CHAR)
}
else
g_Log.Log(LogType::_ERROR, pSpecialBox->cWorldSetID, pSpecialBox->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_GETLISTEVENTREWARDITEM:%d] Result:%d\r\n", pSpecialBox->nAccountDBID, pSpecialBox->cWorldSetID, SpecialBox.nRetCode);
}
else{
g_Log.Log(LogType::_ERROR, pSpecialBox->cWorldSetID, pSpecialBox->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_GETLISTEVENTREWARDITEM] pMembershipDB not found\r\n", pSpecialBox->nAccountDBID, pSpecialBox->cWorldSetID);
}
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&SpecialBox, sizeof(SpecialBox));
}
break;
case QUERY_ADDEVENTREWARDRECEIVER:
{
TQAddEventRewardReceiver *pSpecialBox = (TQAddEventRewardReceiver*)pData;
TAAddEventRewardReceiver SpecialBox;
memset(&SpecialBox, 0, sizeof(TAAddEventRewardReceiver));
SpecialBox.nAccountDBID = pSpecialBox->nAccountDBID;
SpecialBox.nEventRewardID = pSpecialBox->nEventRewardID;
SpecialBox.nItemID = pSpecialBox->nItemID;
SpecialBox.nRetCode = ERROR_DB;
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
if (pMembershipDB){
SpecialBox.nRetCode = pMembershipDB->QueryAddEventRewardReceiver(pSpecialBox->nAccountDBID, pSpecialBox->biCharacterDBID, pSpecialBox->nEventRewardID);
switch (SpecialBox.nRetCode)
{
case ERROR_NONE:
case 101203: // ÀÌ¹Ì À̺¥Æ® º¸»óÀ» ¹ÞÀº ij¸¯ÅÍ ÀÔ´Ï´Ù
break;
default:
g_Log.Log(LogType::_ERROR, pSpecialBox->cWorldSetID, pSpecialBox->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_ADDEVENTREWARDRECEIVER:%d] Result:%d\r\n", pSpecialBox->nAccountDBID, pSpecialBox->cWorldSetID, SpecialBox.nRetCode);
break;
}
}
else{
g_Log.Log(LogType::_ERROR, pSpecialBox->cWorldSetID, pSpecialBox->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_ADDEVENTREWARDRECEIVER] pMembershipDB not found\r\n", pSpecialBox->nAccountDBID, pSpecialBox->cWorldSetID);
}
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&SpecialBox, sizeof(SpecialBox));
}
break;
#endif // #if defined(PRE_SPECIALBOX)
#ifdef PRE_ADD_JOINGUILD_SUPPORT
case QUERY_GUILDSUPPORT_REWARDINFO:
{
TQGuildSupportRewardInfo * pPacket = (TQGuildSupportRewardInfo*)pData;
TAGuildSupportRewardInfo packet;
memset(&packet, 0, sizeof(TAGuildSupportRewardInfo));
packet.nRetCode = ERROR_DB;
packet.bWasGuildSupportRewardFlag = true;
packet.cJoinGuildLevel = 0;
packet.nAccountDBID = pPacket->nAccountDBID;
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pPacket->cWorldSetID);
if (pWorldDB)
{
packet.nRetCode = pWorldDB->QueryGetGuildSupportRewardInfo(pPacket, &packet);
if (packet.nRetCode != ERROR_NONE)
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_GUILDSUPPORT_REWARDINFO:%d] Result:%d\r\n", pPacket->nAccountDBID, pPacket->cWorldSetID, packet.nRetCode);
}
else
{
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_GUILDSUPPORT_REWARDINFO:%d] pWorldDB not found\r\n", pPacket->nAccountDBID, pPacket->cWorldSetID);
}
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&packet, sizeof(TAGuildSupportRewardInfo));
}
break;
case QUERY_SENDGUILDMAIL:
{
TQSendGuildMail *pMail = (TQSendGuildMail*)pData;
TASendGuildMail Mail;
memset(&Mail, 0, sizeof(TASendGuildMail));
Mail.nAccountDBID = pMail->nAccountDBID;
Mail.nRetCode = ERROR_DB;
Mail.nReceiverAccountDBID = pMail->nReceiverAccountDBID;
Mail.biReceiverCharacterDBID = pMail->biReceiverCharacterDBID;
Mail.cWorldSetID = pMail->cWorldSetID;
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pMail->cWorldSetID);
if (pWorldDB)
{
Mail.nRetCode = pWorldDB->QuerySendGuildMail(pMail, &Mail);
if (Mail.nRetCode != ERROR_NONE)
g_Log.Log(LogType::_ERROR, pMail->cWorldSetID, pMail->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_SENDGUILDMAIL:%d] Result:%d\r\n", pMail->nAccountDBID, pMail->cWorldSetID, Mail.nRetCode);
}
else
{
g_Log.Log(LogType::_ERROR, pMail->cWorldSetID, pMail->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_SENDGUILDMAIL:%d] pWorldDB not found\r\n", pMail->nAccountDBID, pMail->cWorldSetID);
}
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Mail, sizeof(TASendGuildMail));
}
break;
#endif //#ifdef PRE_ADD_JOINGUILD_SUPPORT
}
}