#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 } }