934 lines
No EOL
39 KiB
C++
934 lines
No EOL
39 KiB
C++
#include "StdAfx.h"
|
||
#include "DNCashShopTask.h"
|
||
#include "DNConnection.h"
|
||
#include "DNSQLConnectionManager.h"
|
||
#include "DNSQLMembership.h"
|
||
#include "DNSQLWorld.h"
|
||
#include "DNExtManager.h"
|
||
#include "Log.h"
|
||
#include "Util.h"
|
||
|
||
CDNCashShopTask::CDNCashShopTask(CDNConnection* pConnection)
|
||
: CDNMessageTask(pConnection)
|
||
{
|
||
|
||
}
|
||
|
||
CDNCashShopTask::~CDNCashShopTask(void)
|
||
{
|
||
}
|
||
|
||
void CDNCashShopTask::OnRecvMessage(int nThreadID, int nMainCmd, int nSubCmd, char* pData)
|
||
{
|
||
CDNSQLMembership *pMembershipDB = NULL;
|
||
CDNSQLWorld *pWorldDB = NULL;
|
||
int nRet = ERROR_DB;
|
||
|
||
switch (nSubCmd)
|
||
{
|
||
case QUERY_MODGIVEFAILFLAG:
|
||
{
|
||
TQModGiveFailFlag *pCash = (TQModGiveFailFlag*)pData;
|
||
|
||
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
|
||
if (!pMembershipDB){
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, pCash->biCharacterDBID, 0, L"[QUERY_MODGIVEFAILFLAG] pMembershipDB not found\r\n");
|
||
return;
|
||
}
|
||
|
||
TAModGiveFailFlag Cash;
|
||
memset(&Cash, 0, sizeof(TAModGiveFailFlag));
|
||
Cash.nRetCode = ERROR_DB;
|
||
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pCash->cWorldSetID);
|
||
if (!pWorldDB){
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, pCash->biCharacterDBID, 0, L"[QUERY_MODGIVEFAILFLAG:%d] pWorldDB not found\r\n", pCash->cWorldSetID);
|
||
return;
|
||
}
|
||
|
||
int nCount = 0, nRet = 0;
|
||
for (int i = 0; i < pCash->nCount; i++){
|
||
#if defined(_KRAZ)
|
||
int nPrice = pCash->CashItem[i].nPaidCashAmount;
|
||
#else // #if defined(_KRAZ)
|
||
int nPrice = g_pExtManager->GetCashCommodityPrice(pCash->CashItem[i].nItemSN);
|
||
#endif // #if defined(_KRAZ)
|
||
if (m_pConnection->CashItemDBProcess(pMembershipDB, pWorldDB, pCash->cWorldSetID, pCash->nAccountDBID, pCash->biCharacterDBID, pCash->nMapID, pCash->nChannelID, false, pCash->CashItem[i],
|
||
nPrice, pCash->CashItem[i].biPurchaseOrderID, DBDNWorldDef::AddMaterializedItem::CashBuy, pCash->wszIP,
|
||
pCash->CashItem[i].biSenderCharacterDBID, pCash->CashItem[i].bGift) != ERROR_NONE)
|
||
continue;
|
||
// biPurchaseOrderID<49><44> biPurchaseOrderDetailID<49>̴<EFBFBD>..
|
||
if (pMembershipDB->QueryModGiveFailFlag2(pCash->CashItem[i].biPurchaseOrderID, false) != ERROR_NONE) continue;
|
||
|
||
Cash.CashItem[nCount].nItemSN = pCash->CashItem[i].nItemSN;
|
||
Cash.CashItem[nCount].CashItem = pCash->CashItem[i].CashItem;
|
||
nCount++;
|
||
}
|
||
|
||
if (nCount > 0){
|
||
Cash.nAccountDBID = pCash->nAccountDBID;
|
||
Cash.nCount = nCount;
|
||
Cash.nRetCode = ERROR_NONE;
|
||
|
||
int nLen = sizeof(TAModGiveFailFlag) - sizeof(Cash.CashItem) + (sizeof(TCashBuyItem) * nCount);
|
||
m_pConnection->AddSendData(MAINCMD_CASH, QUERY_MODGIVEFAILFLAG, (char*)&Cash, nLen);
|
||
}
|
||
//OnModGiveFailFlag(nThreadID, pCash);
|
||
}
|
||
break;
|
||
|
||
case QUERY_CHECKGIFTRECEIVER:
|
||
{
|
||
TQCheckGiftReceiver *pCash = (TQCheckGiftReceiver*)pData;
|
||
|
||
TACheckGiftReceiver Cash;
|
||
memset(&Cash, 0, sizeof(TACheckGiftReceiver));
|
||
|
||
Cash.nAccountDBID = pCash->nAccountDBID;
|
||
Cash.nRetCode = ERROR_DB;
|
||
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pCash->cWorldSetID);
|
||
if (pWorldDB){
|
||
Cash.nRetCode = pWorldDB->QueryGetCharacterPartialy6(pCash->wszCharacterName, Cash.cJob, Cash.cLevel);
|
||
}
|
||
else{
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, 0, 0, L"[ADBID:%d] [QUERY_CHECKGIFTRECEIVER:%d] pWorldDB not found\r\n", pCash->nAccountDBID, pCash->cWorldSetID);
|
||
}
|
||
|
||
switch (Cash.nRetCode)
|
||
{
|
||
case ERROR_NONE:
|
||
case 103102: // ij<><C4B3><EFBFBD>Ͱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.
|
||
break;
|
||
|
||
default:
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, 0, 0, L"[ADBID:%d] [QUERY_CHECKGIFTRECEIVER:%d] DB Error\r\n", pCash->nAccountDBID, pCash->cWorldSetID);
|
||
break;
|
||
}
|
||
|
||
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Cash, sizeof(TACheckGiftReceiver));
|
||
}
|
||
break;
|
||
|
||
case QUERY_GETLISTGIFTBOX:
|
||
{
|
||
TQGetListGiftBox *pCash = (TQGetListGiftBox*)pData;
|
||
|
||
TAGetListGiftBox Cash;
|
||
memset(&Cash, 0, sizeof(TAGetListGiftBox));
|
||
|
||
Cash.nAccountDBID = pCash->nAccountDBID;
|
||
Cash.nRetCode = ERROR_DB;
|
||
#if defined(PRE_ADD_MULTILANGUAGE)
|
||
Cash.cSelectedLang = pCash->cSelectedLang;
|
||
#endif //#if defined(PRE_ADD_MULTILANGUAGE)
|
||
|
||
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
|
||
if (pMembershipDB){
|
||
Cash.nRetCode = pMembershipDB->QueryGetListGiftBox(pCash->biCharacterDBID, Cash.cCount, Cash.GiftBox);
|
||
}
|
||
else{
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, 0, 0, L"[ADBID:%d] [QUERY_GETLISTGIFTBOX:%d] MembershipDB not found\r\n", pCash->nAccountDBID, pCash->cWorldSetID);
|
||
}
|
||
|
||
if (Cash.nRetCode != ERROR_NONE)
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, 0, 0, L"[ADBID:%d] [QUERY_GETLISTGIFTBOX:%d] (Ret:%d)\r\n", pCash->nAccountDBID, pCash->cWorldSetID, Cash.nRetCode);
|
||
|
||
int nLen = sizeof(TAGetListGiftBox) - sizeof(Cash.GiftBox) + (sizeof(TGiftInfo) * Cash.cCount);
|
||
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Cash, nLen);
|
||
}
|
||
break;
|
||
|
||
case QUERY_MODGIFTRECEIVEFLAG:
|
||
{
|
||
TQModGiftReceiveFlag *pCash = (TQModGiftReceiveFlag*)pData;
|
||
|
||
TAModGiftReceiveFlag Cash;
|
||
memset(&Cash, 0, sizeof(TAModGiftReceiveFlag));
|
||
|
||
Cash.nAccountDBID = pCash->nAccountDBID;
|
||
Cash.nRetCode = ERROR_DB;
|
||
Cash.cCount = pCash->cCount;
|
||
#if defined(PRE_RECEIVEGIFTALL)
|
||
Cash.bReceiveAll = pCash->bReceiveAll;
|
||
#endif // #if defined(PRE_RECEIVEGIFTALL)
|
||
|
||
for (int i = 0; i < pCash->cCount; i++){
|
||
Cash.ReceiveGift[i].GiftData = pCash->GiftData[i];
|
||
|
||
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
|
||
if (pMembershipDB){
|
||
int nPrice = 0;
|
||
std::vector<DBPacket::TItemIDOption> VecItemIDList;
|
||
VecItemIDList.clear();
|
||
Cash.nRetCode = pMembershipDB->QueryGetListItemOfGift(pCash->GiftData[i].nGiftDBID, Cash.ReceiveGift[i].nItemSN, nPrice, VecItemIDList);
|
||
|
||
if (Cash.nRetCode == ERROR_NONE){
|
||
char cCount = (int)VecItemIDList.size();
|
||
for (int j = 0; j < cCount; j++){
|
||
Cash.ReceiveGift[i].ItemIDOptions[j] = VecItemIDList[j];
|
||
|
||
switch (g_pExtManager->GetItemMainType(Cash.ReceiveGift[i].ItemIDOptions[j].nItemID))
|
||
{
|
||
case ITEMTYPE_CHARACTER_SLOT:
|
||
{
|
||
char cCharacterCount = 0;
|
||
#if defined(PRE_MOD_SELECT_CHAR)
|
||
nRet = pMembershipDB->QueryGetCharacterSlotCount(pCash->nAccountDBID, 0, 0, cCharacterCount);
|
||
#else // #if defined(PRE_MOD_SELECT_CHAR)
|
||
nRet = pMembershipDB->QueryGetCharacterSlotCount(0, 0, pCash->biCharacterDBID, cCharacterCount);
|
||
#endif // #if defined(PRE_MOD_SELECT_CHAR)
|
||
|
||
if (nRet == ERROR_NONE){
|
||
#if defined(PRE_MOD_SELECT_CHAR)
|
||
if (cCharacterCount + g_pExtManager->GetGlobalWeightValue(Login_Base_CreateCharCount) >= g_pExtManager->GetGlobalWeightValue(Login_Max_CreateCharCount))
|
||
#else // #if defined(PRE_MOD_SELECT_CHAR)
|
||
if (cCharacterCount >= (CreateCharacterDefaultCountMax + g_pExtManager->GetGlobalWeightValue(CharacterSlotMax)))
|
||
#endif // #if defined(PRE_MOD_SELECT_CHAR)
|
||
Cash.nRetCode = 101190; // 101190 = <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʰ<EFBFBD><CAB0>մϴ<D5B4>.
|
||
}
|
||
}
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else{
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, 0, 0, L"[ADBID:%d] [QUERY_MODGIFTRECEIVEFLAG:%d] MembershipDB not found\r\n", pCash->nAccountDBID, pCash->cWorldSetID);
|
||
}
|
||
|
||
if (Cash.nRetCode != ERROR_NONE)
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, 0, 0, L"[ADBID:%d] [QUERY_MODGIFTRECEIVEFLAG:%d] (Ret:%d)\r\n", pCash->nAccountDBID, pCash->cWorldSetID, Cash.nRetCode);
|
||
}
|
||
|
||
int nLen = sizeof(TAModGiftReceiveFlag) - sizeof(Cash.ReceiveGift) + (sizeof(DBPacket::TReceiveGift) * Cash.cCount);
|
||
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Cash, nLen);
|
||
}
|
||
break;
|
||
|
||
case QUERY_RECEIVEGIFT:
|
||
{
|
||
TQReceiveGift *pCash = (TQReceiveGift*)pData;
|
||
|
||
TAReceiveGift Cash;
|
||
memset(&Cash, 0, sizeof(TAReceiveGift));
|
||
|
||
Cash.nAccountDBID = pCash->nAccountDBID;
|
||
Cash.biPurchaseOrderID = pCash->GiftData.nGiftDBID;
|
||
#if defined(PRE_ADD_VIP)
|
||
Cash.cPayMethodCode = pCash->GiftData.cPayMethodCode;
|
||
#endif // #if defined(PRE_ADD_VIP)
|
||
Cash.nRetCode = ERROR_DB;
|
||
|
||
#if defined(PRE_RECEIVEGIFTALL)
|
||
Cash.bReceiveAll = pCash->bReceiveAll;
|
||
Cash.cTotalCount = pCash->cTotalCount;
|
||
#endif // #if defined(PRE_RECEIVEGIFTALL)
|
||
Cash.nItemSN = pCash->nItemSN;
|
||
Cash.cCount = pCash->cCount;
|
||
memcpy(Cash.GiftItem, pCash->GiftItem, sizeof(TGiftItem) * Cash.cCount);
|
||
|
||
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
|
||
if (!pMembershipDB){
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, 0, 0, L"[ADBID:%d] [QUERY_RECEIVEGIFT:%d] MembershipDB not found\r\n", pCash->nAccountDBID, pCash->cWorldSetID);
|
||
}
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pCash->cWorldSetID);
|
||
if (!pWorldDB){
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, 0, 0, L"[ADBID:%d] [QUERY_RECEIVEGIFT:%d] WorldDB not found\r\n", pCash->nAccountDBID, pCash->cWorldSetID);
|
||
}
|
||
|
||
if (pMembershipDB && pWorldDB){
|
||
INT64 biGiftSenderCharacterDBID = 0;
|
||
INT64 biReplySenderCharacterDBID = 0;
|
||
WCHAR wszReplyReceiverCharacterName[NAMELENMAX] = { 0, };
|
||
int nPaidCashAmount = 0;
|
||
|
||
Cash.nRetCode = pMembershipDB->QueryModGiftReceiveFlag(pCash->GiftData.nGiftDBID, biReplySenderCharacterDBID, wszReplyReceiverCharacterName, biGiftSenderCharacterDBID, nPaidCashAmount);
|
||
|
||
if (Cash.nRetCode == ERROR_NONE){
|
||
#if defined(_KRAZ)
|
||
int nPrice = nPaidCashAmount;
|
||
#else // #if defined(_KRAZ)
|
||
int nPrice = g_pExtManager->GetCashCommodityPrice(pCash->nItemSN);
|
||
#endif // #if defined(_KRAZ)
|
||
|
||
if (pCash->cCount > 1){ // <20><>Ű<EFBFBD><C5B0>
|
||
int nTotalPrice = g_pExtManager->GetCashCommodityPrice(pCash->nItemSN);
|
||
int nUnitPrice = 0;
|
||
if (nTotalPrice > 0)
|
||
nUnitPrice = nTotalPrice / pCash->cCount;
|
||
int nTempPrice = 0;
|
||
for (int i = 0; i < pCash->cCount; i++){
|
||
if (i == (pCash->cCount - 1)) nUnitPrice = nTotalPrice - nTempPrice;
|
||
|
||
TCashItemBase Item = { 0, };
|
||
Item.nItemSN = pCash->GiftItem[i].nItemSN;
|
||
Item.CashItem = pCash->GiftItem[i].AddItem;
|
||
Item.dwPartsColor1 = pCash->GiftItem[i].dwPartsColor1;
|
||
Item.dwPartsColor2 = pCash->GiftItem[i].dwPartsColor2;
|
||
Item.VehiclePart1 = pCash->GiftItem[i].VehiclePart1;
|
||
Item.VehiclePart2 = pCash->GiftItem[i].VehiclePart2;
|
||
|
||
nRet = m_pConnection->CashItemDBProcess(pMembershipDB, pWorldDB, pCash->cWorldSetID, pCash->nAccountDBID, biReplySenderCharacterDBID, pCash->nMapID, pCash->nChannelID, false, Item,
|
||
nPrice, pCash->GiftData.nGiftDBID, DBDNWorldDef::AddMaterializedItem::Present, pCash->wszIP, biGiftSenderCharacterDBID, true, pCash->GiftData.cPayMethodCode);
|
||
|
||
if (nRet != ERROR_NONE){ //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.QueryModGiveFailFlag
|
||
pMembershipDB->QueryModGiveFailFlag(pCash->GiftData.nGiftDBID, pCash->nItemSN, pCash->GiftItem[i].AddItem.nItemID, true);
|
||
}
|
||
nTempPrice += nUnitPrice;
|
||
}
|
||
}
|
||
else{
|
||
TCashItemBase Item = { 0, };
|
||
Item.nItemSN = pCash->nItemSN;
|
||
Item.CashItem = pCash->GiftItem[0].AddItem;
|
||
Item.dwPartsColor1 = pCash->GiftItem[0].dwPartsColor1;
|
||
Item.dwPartsColor2 = pCash->GiftItem[0].dwPartsColor2;
|
||
Item.VehiclePart1 = pCash->GiftItem[0].VehiclePart1;
|
||
Item.VehiclePart2 = pCash->GiftItem[0].VehiclePart2;
|
||
|
||
nRet = m_pConnection->CashItemDBProcess(pMembershipDB, pWorldDB, pCash->cWorldSetID, pCash->nAccountDBID, biReplySenderCharacterDBID, pCash->nMapID, pCash->nChannelID, false, Item,
|
||
nPrice, pCash->GiftData.nGiftDBID, DBDNWorldDef::AddMaterializedItem::Present, pCash->wszIP, biGiftSenderCharacterDBID, true, pCash->GiftData.cPayMethodCode);
|
||
|
||
if (nRet != ERROR_NONE){ //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.QueryModGiveFailFlag
|
||
pMembershipDB->QueryModGiveFailFlag(pCash->GiftData.nGiftDBID, pCash->nItemSN, pCash->GiftItem[0].AddItem.nItemID, true);
|
||
}
|
||
}
|
||
|
||
Cash.nRetCode = nRet;
|
||
|
||
if ((biGiftSenderCharacterDBID > 0) && (biGiftSenderCharacterDBID != biReplySenderCharacterDBID)){
|
||
TQSendMail SendMail;
|
||
memset(&SendMail, 0, sizeof(TQSendMail));
|
||
SendMail.cWorldSetID = pCash->cWorldSetID;
|
||
SendMail.nAccountDBID = pCash->nAccountDBID;
|
||
SendMail.biSenderCharacterDBID = biReplySenderCharacterDBID;
|
||
_wcscpy(SendMail.wszReceiverCharacterName, NAMELENMAX, wszReplyReceiverCharacterName, NAMELENMAX);
|
||
SendMail.Code = MailType::ReplyGift;
|
||
SendMail.iChannelID = pCash->nChannelID;
|
||
SendMail.iMapID = pCash->nMapID;
|
||
_wcscpy(SendMail.wszSubject, MAILTITLELENMAX, pCash->GiftData.wszEmoticonTitle, MAILTITLELENMAX);
|
||
_wcscpy(SendMail.wszContent, MAILTEXTLENMAX, pCash->GiftData.wszReplyMessage, GIFTMESSAGEMAX);
|
||
|
||
TASendMail ASendMail;
|
||
memset(&ASendMail, 0, sizeof(TASendMail));
|
||
|
||
pWorldDB->QuerySendMail(&SendMail, &ASendMail);
|
||
|
||
Cash.nReceiverAccountDBID = ASendMail.nReceiverAccountDBID;
|
||
Cash.biReceiverCharacterDBID = ASendMail.biReceiverCharacterDBID;
|
||
Cash.nReceiverTotalMailCount = ASendMail.nReceiverTotalMailCount;
|
||
Cash.nReceiverNotReadMailCount = ASendMail.nReceiverNotReadMailCount;
|
||
Cash.nReceiver7DaysLeftMailCount = ASendMail.nReceiver7DaysLeftMailCount;
|
||
}
|
||
}
|
||
}
|
||
|
||
if (Cash.nRetCode != ERROR_NONE)
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, 0, 0, L"[ADBID:%d] [QUERY_RECEIVEGIFT:%d] (Ret:%d)\r\n", pCash->nAccountDBID, pCash->cWorldSetID, Cash.nRetCode);
|
||
|
||
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Cash, sizeof(TAReceiveGift));
|
||
}
|
||
break;
|
||
|
||
case QUERY_NOTIFYGIFT:
|
||
{
|
||
TQNotifyGift *pCash = (TQNotifyGift*)pData;
|
||
|
||
TANotifyGift Cash;
|
||
memset(&Cash, 0, sizeof(TANotifyGift));
|
||
|
||
Cash.nAccountDBID = pCash->nAccountDBID;
|
||
Cash.bNew = pCash->bNew;
|
||
Cash.nRetCode = ERROR_DB;
|
||
|
||
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
|
||
if (pMembershipDB){
|
||
Cash.nRetCode = pMembershipDB->QueryGetCountNotReceivedGift(pCash->biCharacterDBID, Cash.nGiftCount);
|
||
}
|
||
else{
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, 0, 0, L"[ADBID:%d] [QUERY_NOTIFYGIFT:%d] MembershipDB not found\r\n", pCash->nAccountDBID, pCash->cWorldSetID);
|
||
}
|
||
|
||
if (Cash.nRetCode != ERROR_NONE)
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, 0, 0, L"[ADBID:%d] [QUERY_NOTIFYGIFT:%d] (Ret:%d)\r\n", pCash->nAccountDBID, pCash->cWorldSetID, Cash.nRetCode);
|
||
|
||
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Cash, sizeof(TANotifyGift));
|
||
}
|
||
break;
|
||
|
||
case QUERY_MAKEGIFTBYQUEST:
|
||
{
|
||
TQMakeGiftByQuest *pCash = (TQMakeGiftByQuest*)pData;
|
||
|
||
TAMakeGiftByQuest Cash;
|
||
memset(&Cash, 0, sizeof(TAMakeGiftByQuest));
|
||
|
||
Cash.nAccountDBID = pCash->nAccountDBID;
|
||
Cash.nRetCode = ERROR_DB;
|
||
|
||
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
|
||
if (pMembershipDB){
|
||
BYTE cItemOption = -1;
|
||
string ItemIDStr, ItemOptionStr;
|
||
INT64 biPurchaseOrderID = -1;
|
||
TCashCommodityData CashData;
|
||
TCashPackageData PackageData;
|
||
for (int i = 0; i < pCash->cRewardCount; i++)
|
||
{
|
||
if (pCash->nRewardItemSN[i] <= 0) continue;
|
||
|
||
memset(&PackageData, 0, sizeof(TCashPackageData));
|
||
bool bPackage = g_pExtManager->GetCashPackageData(pCash->nRewardItemSN[i], PackageData);
|
||
if (bPackage)
|
||
{
|
||
for (int j = 0; j < (int)PackageData.nVecCommoditySN.size(); j++){
|
||
memset(&CashData, 0, sizeof(TCashCommodityData));
|
||
|
||
bool bRet = g_pExtManager->GetCashCommodityData(PackageData.nVecCommoditySN[j], CashData);
|
||
if (!bRet) continue;
|
||
|
||
if (!ItemIDStr.empty()){
|
||
ItemIDStr.append("|");
|
||
ItemOptionStr.append("|");
|
||
}
|
||
ItemIDStr.append(boost::lexical_cast<std::string>(CashData.nItemID[0]));
|
||
ItemOptionStr.append(boost::lexical_cast<std::string>(static_cast<int>(cItemOption)));
|
||
}
|
||
|
||
Cash.nRetCode = pMembershipDB->QueryMakeGiftByQuest(pCash->biCharacterDBID, pCash->bPCBang, pCash->nRewardItemSN[i], ItemIDStr.c_str(), ItemOptionStr.c_str(), pCash->nQuestID, pCash->wszMemo, pCash->nLifeSpan, pCash->szIp, pCash->bNewFlag, biPurchaseOrderID);
|
||
}
|
||
else{
|
||
memset(&CashData, 0, sizeof(TCashCommodityData));
|
||
bool bRet = g_pExtManager->GetCashCommodityData(pCash->nRewardItemSN[i], CashData);
|
||
if (!bRet) continue;
|
||
|
||
ItemIDStr = FormatA("%d", CashData.nItemID[0]);
|
||
ItemOptionStr = FormatA("%d", static_cast<int>(cItemOption));
|
||
Cash.nRetCode = pMembershipDB->QueryMakeGiftByQuest(pCash->biCharacterDBID, pCash->bPCBang, pCash->nRewardItemSN[i], ItemIDStr.c_str(), ItemOptionStr.c_str(), pCash->nQuestID, pCash->wszMemo, pCash->nLifeSpan, pCash->szIp, pCash->bNewFlag, biPurchaseOrderID);
|
||
}
|
||
}
|
||
|
||
if (Cash.nRetCode == ERROR_NONE)
|
||
pMembershipDB->QueryGetCountNotReceivedGift(pCash->biCharacterDBID, Cash.nGiftCount);
|
||
}
|
||
else{
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, 0, 0, L"[ADBID:%d] [QUERY_MAKEGIFTBYQUEST:%d] MembershipDB not found\r\n", pCash->nAccountDBID, pCash->cWorldSetID);
|
||
}
|
||
|
||
if (Cash.nRetCode != ERROR_NONE)
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, 0, 0, L"[ADBID:%d] [QUERY_MAKEGIFTBYQUEST:%d] (Ret:%d)\r\n", pCash->nAccountDBID, pCash->cWorldSetID, Cash.nRetCode);
|
||
|
||
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Cash, sizeof(TAMakeGiftByQuest));
|
||
}
|
||
break;
|
||
|
||
case QUERY_MAKEGIFTBYMISSION:
|
||
{
|
||
TQMakeGiftByMission *pCash = (TQMakeGiftByMission*)pData;
|
||
|
||
TAMakeGiftByMission Cash;
|
||
memset(&Cash, 0, sizeof(TAMakeGiftByMission));
|
||
|
||
Cash.nAccountDBID = pCash->nAccountDBID;
|
||
Cash.nRetCode = ERROR_DB;
|
||
|
||
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
|
||
if (pMembershipDB){
|
||
string ItemIDStr, ItemOptionStr;
|
||
BYTE cItemOption = -1;
|
||
|
||
INT64 biPurchaseOrderID = 0;
|
||
TCashCommodityData CashData;
|
||
TCashPackageData PackageData;
|
||
for (int i = 0; i < pCash->cRewardCount; i++){
|
||
if (pCash->nRewardItemSN[i] <= 0) continue;
|
||
|
||
memset(&PackageData, 0, sizeof(TCashPackageData));
|
||
bool bPackage = g_pExtManager->GetCashPackageData(pCash->nRewardItemSN[i], PackageData);
|
||
if (bPackage){
|
||
for (int j = 0; j < (int)PackageData.nVecCommoditySN.size(); j++)
|
||
{
|
||
memset(&CashData, 0, sizeof(TCashCommodityData));
|
||
bool bRet = g_pExtManager->GetCashCommodityData(PackageData.nVecCommoditySN[j], CashData);
|
||
if (!bRet) continue;
|
||
|
||
if (!ItemIDStr.empty()){
|
||
ItemIDStr.append("|");
|
||
ItemOptionStr.append("|");
|
||
}
|
||
ItemIDStr.append(boost::lexical_cast<std::string>(CashData.nItemID[0]));
|
||
ItemOptionStr.append(boost::lexical_cast<std::string>(static_cast<int>(cItemOption)));
|
||
}
|
||
|
||
Cash.nRetCode = pMembershipDB->QueryMakeGiftByMission(pCash->biCharacterDBID, pCash->bPCBang, pCash->nRewardItemSN[i], ItemIDStr.c_str(), ItemOptionStr.c_str(), pCash->nMissionID, pCash->wszMemo, pCash->nLifeSpan, pCash->szIp, pCash->bNewFlag, biPurchaseOrderID);
|
||
}
|
||
else
|
||
{
|
||
memset(&CashData, 0, sizeof(TCashCommodityData));
|
||
bool bRet = g_pExtManager->GetCashCommodityData(pCash->nRewardItemSN[i], CashData);
|
||
if (!bRet) continue;
|
||
|
||
ItemIDStr = FormatA("%d", CashData.nItemID[0]);
|
||
ItemOptionStr = FormatA("%d", static_cast<int>(cItemOption));
|
||
Cash.nRetCode = pMembershipDB->QueryMakeGiftByMission(pCash->biCharacterDBID, pCash->bPCBang, pCash->nRewardItemSN[i], ItemIDStr.c_str(), ItemOptionStr.c_str(), pCash->nMissionID, pCash->wszMemo, pCash->nLifeSpan, pCash->szIp, pCash->bNewFlag, biPurchaseOrderID);
|
||
}
|
||
}
|
||
|
||
if (Cash.nRetCode == ERROR_NONE)
|
||
pMembershipDB->QueryGetCountNotReceivedGift(pCash->biCharacterDBID, Cash.nGiftCount);
|
||
}
|
||
else{
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, 0, 0, L"[ADBID:%d] [QUERY_MAKEGIFTBYMISSION:%d] MembershipDB not found\r\n", pCash->nAccountDBID, pCash->cWorldSetID);
|
||
}
|
||
|
||
if (Cash.nRetCode != ERROR_NONE)
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, 0, 0, L"[ADBID:%d] [QUERY_MAKEGIFTBYMISSION:%d] (Ret:%d)\r\n", pCash->nAccountDBID, pCash->cWorldSetID, Cash.nRetCode);
|
||
|
||
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Cash, sizeof(TAMakeGiftByMission));
|
||
}
|
||
break;
|
||
|
||
case QUERY_MAKEGIFT:
|
||
{
|
||
TQMakeGift *pCash = (TQMakeGift*)pData;
|
||
|
||
TAMakeGift Cash;
|
||
memset(&Cash, 0, sizeof(TAMakeGift));
|
||
|
||
Cash.nAccountDBID = pCash->nAccountDBID;
|
||
Cash.nRetCode = ERROR_DB;
|
||
|
||
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
|
||
if (pMembershipDB){
|
||
BYTE cItemOption = -1;
|
||
string ItemIDStr, ItemOptionStr;
|
||
#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
string LimitedQuantityStr;
|
||
#endif //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
|
||
INT64 biPurchaseOrderID = 0;
|
||
TCashCommodityData CashData;
|
||
TCashPackageData PackageData;
|
||
for (int i = 0; i < pCash->cRewardCount; i++){
|
||
if (pCash->nRewardItemSN[i] <= 0) continue;
|
||
|
||
memset(&PackageData, 0, sizeof(TCashPackageData));
|
||
bool bPackage = g_pExtManager->GetCashPackageData(pCash->nRewardItemSN[i], PackageData);
|
||
if (bPackage){
|
||
for (int j = 0; j < (int)PackageData.nVecCommoditySN.size(); j++){
|
||
memset(&CashData, 0, sizeof(TCashCommodityData));
|
||
bool bRet = g_pExtManager->GetCashCommodityData(PackageData.nVecCommoditySN[j], CashData);
|
||
if (!bRet) continue;
|
||
|
||
if (!ItemIDStr.empty()){
|
||
ItemIDStr.append("|");
|
||
ItemOptionStr.append("|");
|
||
}
|
||
ItemIDStr.append(boost::lexical_cast<std::string>(CashData.nItemID[0]));
|
||
ItemOptionStr.append(boost::lexical_cast<std::string>(static_cast<int>(cItemOption)));
|
||
}
|
||
#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
LimitedQuantityStr.append(boost::lexical_cast<std::string>(0));
|
||
#endif //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
|
||
#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
Cash.nRetCode = pMembershipDB->QueryMakeGift(pCash->biCharacterDBID, pCash->bPCBang, pCash->nRewardItemSN[i], ItemIDStr.c_str(), ItemOptionStr.c_str(), LimitedQuantityStr.c_str(), pCash->wszMemo, pCash->nLifeSpan, pCash->cPayMethodCode, pCash->iOrderKey, pCash->szIp, pCash->bNewFlag, biPurchaseOrderID);
|
||
#else //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
Cash.nRetCode = pMembershipDB->QueryMakeGift(pCash->biCharacterDBID, pCash->bPCBang, pCash->nRewardItemSN[i], ItemIDStr.c_str(), ItemOptionStr.c_str(), pCash->wszMemo, pCash->nLifeSpan, pCash->cPayMethodCode, pCash->iOrderKey, pCash->szIp, pCash->bNewFlag, biPurchaseOrderID);
|
||
#endif //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
}
|
||
else{
|
||
memset(&CashData, 0, sizeof(TCashCommodityData));
|
||
bool bRet = g_pExtManager->GetCashCommodityData(pCash->nRewardItemSN[i], CashData);
|
||
if (!bRet) continue;
|
||
|
||
ItemIDStr = FormatA("%d", CashData.nItemID[0]);
|
||
ItemOptionStr = FormatA("%d", static_cast<int>(cItemOption));
|
||
#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
LimitedQuantityStr = "0";
|
||
Cash.nRetCode = pMembershipDB->QueryMakeGift(pCash->biCharacterDBID, pCash->bPCBang, pCash->nRewardItemSN[i], ItemIDStr.c_str(), ItemOptionStr.c_str(), LimitedQuantityStr.c_str(),pCash->wszMemo, pCash->nLifeSpan, pCash->cPayMethodCode, pCash->iOrderKey, pCash->szIp, pCash->bNewFlag, biPurchaseOrderID);
|
||
#else //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
Cash.nRetCode = pMembershipDB->QueryMakeGift(pCash->biCharacterDBID, pCash->bPCBang, pCash->nRewardItemSN[i], ItemIDStr.c_str(), ItemOptionStr.c_str(), pCash->wszMemo, pCash->nLifeSpan, pCash->cPayMethodCode, pCash->iOrderKey, pCash->szIp, pCash->bNewFlag, biPurchaseOrderID);
|
||
#endif //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
}
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ϴ<EFBFBD> <20><>Ȳ<EFBFBD><C8B2> <20>߰<EFBFBD><DFB0>ϱ<EFBFBD> <20><><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>α<CEB1> <20>߰<EFBFBD> <20><>
|
||
if( DBDNWorldDef::PayMethodCode::LevelupEvent == pCash->cPayMethodCode )
|
||
g_Log.Log(LogType::_NORMAL, pCash->cWorldSetID, pCash->nAccountDBID, 0, 0, L"[CDBID:%I64d] [QUERY_MAKEGIFT:%d] LevelupEvent(RewardItemSN:%d, RetCode:%d)\r\n", pCash->biCharacterDBID, pCash->cWorldSetID, pCash->nRewardItemSN[i], Cash.nRetCode );
|
||
}
|
||
|
||
if (Cash.nRetCode == ERROR_NONE)
|
||
pMembershipDB->QueryGetCountNotReceivedGift(pCash->biCharacterDBID, Cash.nGiftCount);
|
||
}
|
||
else{
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, 0, 0, L"[ADBID:%d] [QUERY_MAKEGIFT:%d] MembershipDB not found\r\n", pCash->nAccountDBID, pCash->cWorldSetID);
|
||
}
|
||
|
||
if (Cash.nRetCode != ERROR_NONE)
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, 0, 0, L"[ADBID:%d] [QUERY_MAKEGIFT:%d] (Ret:%d)\r\n", pCash->nAccountDBID, pCash->cWorldSetID, Cash.nRetCode);
|
||
|
||
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Cash, sizeof(TAMakeGift));
|
||
}
|
||
break;
|
||
|
||
case QUERY_INCREASEVIPPOINT:
|
||
{
|
||
TQIncreaseVIPPoint *pCash = (TQIncreaseVIPPoint*)pData;
|
||
|
||
TAIncreaseVIPPoint Cash;
|
||
memset(&Cash, 0, sizeof(TAIncreaseVIPPoint));
|
||
|
||
Cash.nAccountDBID = pCash->nAccountDBID;
|
||
Cash.nRetCode = ERROR_DB;
|
||
|
||
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
|
||
if (pMembershipDB){
|
||
Cash.nRetCode = pMembershipDB->QueryIncreaseVIPBasicPoint(pCash->biCharacterDBID, pCash->nBasicPoint, pCash->biPurchaseOrderID, pCash->wVIPPeriod, pCash->bAutoPay, Cash.nVIPTotalPoint, Cash.tVIPEndDate);
|
||
}
|
||
else{
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, 0, 0, L"[ADBID:%d] [QUERY_INCREASEVIPPOINT:%d] MembershipDB not found\r\n", pCash->nAccountDBID, pCash->cWorldSetID);
|
||
}
|
||
|
||
if (Cash.nRetCode != ERROR_NONE)
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, 0, 0, L"[ADBID:%d] [QUERY_INCREASEVIPPOINT:%d] (Ret:%d)\r\n", pCash->nAccountDBID, pCash->cWorldSetID, Cash.nRetCode);
|
||
|
||
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Cash, sizeof(TQIncreaseVIPPoint));
|
||
}
|
||
break;
|
||
|
||
case QUERY_GETVIPPOINT:
|
||
{
|
||
TQGetVIPPoint *pCash = (TQGetVIPPoint*)pData;
|
||
|
||
TAGetVIPPoint Cash;
|
||
memset(&Cash, 0, sizeof(TAGetVIPPoint));
|
||
|
||
Cash.nAccountDBID = pCash->nAccountDBID;
|
||
Cash.nRetCode = ERROR_DB;
|
||
|
||
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
|
||
if (pMembershipDB){
|
||
Cash.nRetCode = pMembershipDB->QueryGetVIPPoint(pCash->biCharacterDBID, Cash.nVIPTotalPoint, Cash.tVIPEndDate, Cash.bAutoPay);
|
||
}
|
||
else{
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, 0, 0, L"[ADBID:%d] [QUERY_GETVIPPOINT:%d] MembershipDB not found\r\n", pCash->nAccountDBID, pCash->cWorldSetID);
|
||
}
|
||
|
||
if (Cash.nRetCode != ERROR_NONE)
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, 0, 0, L"[ADBID:%d] [QUERY_GETVIPPOINT:%d] (Ret:%d)\r\n", pCash->nAccountDBID, pCash->cWorldSetID, Cash.nRetCode);
|
||
|
||
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Cash, sizeof(TQGetVIPPoint));
|
||
}
|
||
break;
|
||
|
||
case QUERY_MODVIPAUTOPAYFLAG:
|
||
{
|
||
TQModVIPAutoPayFlag *pCash = (TQModVIPAutoPayFlag*)pData;
|
||
|
||
TAModVIPAutoPayFlag Cash;
|
||
memset(&Cash, 0, sizeof(TAModVIPAutoPayFlag));
|
||
|
||
Cash.nAccountDBID = pCash->nAccountDBID;
|
||
Cash.bAutoPay = pCash->bAutoPay;
|
||
Cash.nRetCode = ERROR_DB;
|
||
|
||
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
|
||
if (pMembershipDB){
|
||
Cash.nRetCode = pMembershipDB->QueryModVIPAutoPayFlag(pCash->biCharacterDBID, pCash->bAutoPay);
|
||
}
|
||
else{
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, 0, 0, L"[ADBID:%d] [QUERY_MODVIPAUTOPAYFLAG:%d] MembershipDB not found\r\n", pCash->nAccountDBID, pCash->cWorldSetID);
|
||
}
|
||
|
||
if (Cash.nRetCode != ERROR_NONE)
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, 0, 0, L"[ADBID:%d] [QUERY_MODVIPAUTOPAYFLAG:%d] (Ret:%d)\r\n", pCash->nAccountDBID, pCash->cWorldSetID, Cash.nRetCode);
|
||
|
||
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Cash, sizeof(TQModVIPAutoPayFlag));
|
||
}
|
||
break;
|
||
|
||
case QUERY_GIFTBYCHEAT:
|
||
{
|
||
TQGiftByCheat *pCash = (TQGiftByCheat*)pData;
|
||
|
||
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
|
||
if (pMembershipDB){
|
||
INT64 biOrderID = 0;
|
||
|
||
std::vector<string> VecItemString;
|
||
VecItemString.resize(Append_Max);
|
||
|
||
BYTE cItemOption = -1;
|
||
TCashPackageData PackageData;
|
||
bool bPackage= g_pExtManager->GetCashPackageData(pCash->nItemSN, PackageData);
|
||
if (bPackage){
|
||
VecItemString[Append_ItemSN] = FormatA("%d", pCash->nItemSN);
|
||
VecItemString[Append_Price] = FormatA("%d", g_pExtManager->GetCashCommodityPrice(pCash->nItemSN));
|
||
VecItemString[Append_Limit] = FormatA("%d", g_pExtManager->GetCashBuyAbleCount(pCash->nItemSN));
|
||
|
||
for (int j = 0; j < (int)PackageData.nVecCommoditySN.size(); j++){
|
||
TCashCommodityData CashData;
|
||
bool bRet = g_pExtManager->GetCashCommodityData(PackageData.nVecCommoditySN[j], CashData);
|
||
if (!bRet) continue;
|
||
|
||
if (!VecItemString[Append_ItemID].empty()){
|
||
VecItemString[Append_ItemID].append("|");
|
||
VecItemString[Append_Option].append("|");
|
||
}
|
||
VecItemString[Append_ItemID].append(boost::lexical_cast<std::string>(CashData.nItemID[0]));
|
||
VecItemString[Append_Option].append(boost::lexical_cast<std::string>(static_cast<int>(cItemOption)));
|
||
}
|
||
|
||
pMembershipDB->QueryAddPurchaseOrderByCash(pCash->biCharacterDBID, false, VecItemString, g_pExtManager->GetCashCommodityPrice(pCash->nItemSN),
|
||
pCash->szIp, true, pCash->wszCharacterName, L"", biOrderID, NULL, true);
|
||
}
|
||
else{
|
||
int nItemID = g_pExtManager->GetCashCommodityItem0(pCash->nItemSN);
|
||
BYTE nItemOption = -1;
|
||
|
||
TItemData *pItemData = g_pExtManager->GetItemData(nItemID);
|
||
if (!pItemData)
|
||
{
|
||
g_Log.Log(LogType::_ERROR, L"[QUERY_GIFTBYCHEAT] item data not found. [item id:%d]\r\n", nItemID);
|
||
break;
|
||
}
|
||
|
||
switch(pItemData->nType)
|
||
{
|
||
case ITEMTYPE_WEAPON:
|
||
case ITEMTYPE_PARTS:
|
||
{
|
||
int nPotentialID = pItemData->nTypeParam[0];
|
||
if (nPotentialID > 0){
|
||
cItemOption = 0;
|
||
}
|
||
}
|
||
break;
|
||
}
|
||
|
||
#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
pMembershipDB->QueryAddPurchaseOrderByCash(pCash->biCharacterDBID, false, pCash->nItemSN, g_pExtManager->GetCashCommodityPrice(pCash->nItemSN), g_pExtManager->GetCashBuyAbleCount(pCash->nItemSN),
|
||
nItemID, cItemOption, 0, g_pExtManager->GetCashCommodityPrice(pCash->nItemSN), pCash->szIp, true, pCash->wszCharacterName, L"", biOrderID, NULL, NULL, true);
|
||
#else //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
pMembershipDB->QueryAddPurchaseOrderByCash(pCash->biCharacterDBID, false, pCash->nItemSN, g_pExtManager->GetCashCommodityPrice(pCash->nItemSN), g_pExtManager->GetCashBuyAbleCount(pCash->nItemSN),
|
||
nItemID, cItemOption, g_pExtManager->GetCashCommodityPrice(pCash->nItemSN), pCash->szIp, true, pCash->wszCharacterName, L"", biOrderID, NULL, NULL, true);
|
||
#endif //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
}
|
||
pMembershipDB->QuerySetPurchaseOrderResult(biOrderID, DBDNMembership::OrderStatusCode::Success, "", 0, 0, 0);
|
||
}
|
||
}
|
||
break;
|
||
|
||
case QUERY_PETAL:
|
||
{
|
||
TQPetal *pCash = (TQPetal*)pData;
|
||
|
||
TAPetal Cash;
|
||
memset(&Cash, 0, sizeof(Cash));
|
||
|
||
Cash.nAccountDBID = pCash->nAccountDBID;
|
||
Cash.nRetCode = ERROR_DB;
|
||
Cash.nUseItemID = pCash->nUseItemID;
|
||
Cash.cInvenType = pCash->cInvenType;
|
||
Cash.cInvenIndex = pCash->cInvenIndex;
|
||
Cash.biInvenSerial = pCash->biInvenSerial;
|
||
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pCash->cWorldSetID);
|
||
if (pWorldDB){
|
||
#if defined(PRE_FIX_PETALGIFTCARD)
|
||
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
|
||
if (pMembershipDB){
|
||
Cash.nRetCode = pMembershipDB->QueryAddPetalIncome(pCash->biCharacterDBID, pCash->biInvenSerial, pCash->nAddPetal, Cash.nTotalPetal);
|
||
if (Cash.nRetCode != ERROR_NONE)
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, pCash->biCharacterDBID, 0, L"[ADBID:%u] [QUERY_PETAL:%d] Result:%d\r\n", pCash->nAccountDBID, pCash->cWorldSetID, Cash.nRetCode);
|
||
else
|
||
{
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD>ۻ<EFBFBD><DBBB><EFBFBD>
|
||
TQUseItem UseItem;
|
||
memset( &UseItem, 0, sizeof(UseItem) );
|
||
|
||
UseItem.cThreadID = pCash->cThreadID;
|
||
UseItem.cWorldSetID = pCash->cWorldSetID;
|
||
UseItem.nAccountDBID = pCash->nAccountDBID;
|
||
UseItem.Code = DBDNWorldDef::UseItem::Use;
|
||
UseItem.biItemSerial = pCash->biInvenSerial;
|
||
UseItem.nUsedItemCount = 1;
|
||
UseItem.iMapID = pCash->iMapID;
|
||
_wcscpy( UseItem.wszIP, _countof(UseItem.wszIP), pCash->wszIP, (int)wcslen(pCash->wszIP) );
|
||
|
||
CDNMessageTask* pTask = m_pConnection->GetMessageTask(MAINCMD_ITEM);
|
||
if (pTask)
|
||
pTask->OnRecvMessage(pCash->cThreadID, MAINCMD_ITEM, QUERY_USEITEM, reinterpret_cast<char*>(&UseItem));
|
||
}
|
||
}
|
||
else{
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, pCash->biCharacterDBID, 0, L"[ADBID:%u] [QUERY_PETAL] MembershipDB not found\r\n", pCash->nAccountDBID, pCash->cWorldSetID);
|
||
}
|
||
|
||
#else // #if defined(PRE_FIX_PETALGIFTCARD)
|
||
BYTE cItemCode = 0;
|
||
INT64 biFKey = 0;
|
||
nRet = pWorldDB->QueryItemMaterializeFKey(pCash->biInvenSerial, cItemCode, biFKey);
|
||
if (nRet == ERROR_NONE){
|
||
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
|
||
if (pMembershipDB){
|
||
Cash.nRetCode = pMembershipDB->QueryAddPetalIncome(pCash->biCharacterDBID, biFKey, pCash->nAddPetal, Cash.nTotalPetal);
|
||
if (Cash.nRetCode != ERROR_NONE)
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, pCash->biCharacterDBID, 0, L"[ADBID:%u] [QUERY_PETAL:%d] Result:%d\r\n", pCash->nAccountDBID, pCash->cWorldSetID, Cash.nRetCode);
|
||
else
|
||
{
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD>ۻ<EFBFBD><DBBB><EFBFBD>
|
||
TQUseItem UseItem;
|
||
memset( &UseItem, 0, sizeof(UseItem) );
|
||
|
||
UseItem.cThreadID = pCash->cThreadID;
|
||
UseItem.cWorldSetID = pCash->cWorldSetID;
|
||
UseItem.nAccountDBID = pCash->nAccountDBID;
|
||
UseItem.Code = DBDNWorldDef::UseItem::Use;
|
||
UseItem.biItemSerial = pCash->biInvenSerial;
|
||
UseItem.nUsedItemCount = 1;
|
||
UseItem.iMapID = pCash->iMapID;
|
||
_wcscpy( UseItem.wszIP, _countof(UseItem.wszIP), pCash->wszIP, (int)wcslen(pCash->wszIP) );
|
||
|
||
CDNMessageTask* pTask = m_pConnection->GetMessageTask(MAINCMD_ITEM);
|
||
if (pTask)
|
||
pTask->OnRecvMessage(pCash->cThreadID, MAINCMD_ITEM, QUERY_USEITEM, reinterpret_cast<char*>(&UseItem));
|
||
}
|
||
}
|
||
else{
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, pCash->biCharacterDBID, 0, L"[ADBID:%u] [QUERY_PETAL] MembershipDB not found\r\n", pCash->nAccountDBID, pCash->cWorldSetID);
|
||
}
|
||
}
|
||
#endif // #if defined(PRE_FIX_PETALGIFTCARD)
|
||
}
|
||
else{
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, pCash->biCharacterDBID, 0, L"[ADBID:%u] [QUERY_PETAL] WorldDB not found\r\n", pCash->nAccountDBID, pCash->cWorldSetID);
|
||
}
|
||
|
||
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Cash, sizeof(Cash));
|
||
}
|
||
break;
|
||
|
||
#if defined(PRE_ADD_GIFT_RETURN)
|
||
case QUERY_GIFTRETURN:
|
||
{
|
||
TQGiftReturn *pCash = (TQGiftReturn*)pData;
|
||
TAGiftReturn Cash;
|
||
memset(&Cash, 0, sizeof(TAGiftReturn));
|
||
|
||
Cash.nAccountDBID = pCash->nAccountDBID;
|
||
Cash.nRetCode = ERROR_DB;
|
||
Cash.biPurchaseOrderID = pCash->biPurchaseOrderID;
|
||
|
||
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
|
||
if (pMembershipDB){
|
||
Cash.nRetCode = pMembershipDB->QueryModGiftRejectFlag(pCash->biPurchaseOrderID, &Cash);
|
||
}
|
||
else{
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, 0, 0, L"[ADBID:%d] [QUERY_GIFTRETURN:%d] MembershipDB not found\r\n", pCash->nAccountDBID, pCash->cWorldSetID);
|
||
}
|
||
|
||
if (Cash.nRetCode != ERROR_NONE)
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, 0, 0, L"[ADBID:%d] [QUERY_GIFTRETURN:%d] (Ret:%d)\r\n", pCash->nAccountDBID, pCash->cWorldSetID, Cash.nRetCode);
|
||
|
||
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Cash, sizeof(TAGiftReturn));
|
||
}
|
||
break;
|
||
#endif //#if defined(PRE_ADD_GIFT_RETURN)
|
||
|
||
#if defined(PRE_ADD_CASH_REFUND)
|
||
case QUERY_PAYMENTINVEN_LIST : // <20><><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD> <20><>û
|
||
{
|
||
TQPaymentItemList* pItemList = (TQPaymentItemList*)pData;
|
||
TAPaymentItemList PaymentItemList;
|
||
TAPaymentPackageItemList PaymentPackageItemList;
|
||
memset(&PaymentItemList, 0, sizeof(PaymentItemList));
|
||
memset(&PaymentPackageItemList, 0, sizeof(PaymentPackageItemList));
|
||
|
||
PaymentItemList.nAccountDBID = pItemList->nAccountDBID;
|
||
PaymentItemList.nRetCode = ERROR_DB;
|
||
PaymentPackageItemList.nAccountDBID = pItemList->nAccountDBID;
|
||
PaymentPackageItemList.nRetCode = ERROR_DB;
|
||
|
||
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
|
||
if (pMembershipDB)
|
||
{
|
||
int nRetCode = pMembershipDB->QueryGetListRefundableProducts(pItemList->biCharacterDBID, &PaymentItemList, &PaymentPackageItemList);
|
||
PaymentItemList.nRetCode = nRetCode;
|
||
PaymentPackageItemList.nRetCode = nRetCode;
|
||
}
|
||
else{
|
||
g_Log.Log(LogType::_ERROR, pItemList->cWorldSetID, pItemList->nAccountDBID, 0, 0, L"[ADBID:%d] [QUERY_PAYMENTINVEN_LIST:%d] MembershipDB not found\r\n", pItemList->nAccountDBID, pItemList->cWorldSetID);
|
||
}
|
||
|
||
int nLen = 0;
|
||
// <20><>ǰ
|
||
if (PaymentItemList.nPaymentCount > 0){
|
||
nLen = sizeof(TAPaymentItemList) - sizeof(PaymentItemList.PaymentItemList) + (sizeof(TPaymentItemInfoEx) * PaymentItemList.nPaymentCount);
|
||
m_pConnection->AddSendData(nMainCmd, QUERY_PAYMENTINVEN_LIST, (char*)&PaymentItemList, nLen);
|
||
}
|
||
if (PaymentPackageItemList.nPaymentPackegeCount > 0){
|
||
nLen = sizeof(TAPaymentPackageItemList) - sizeof(PaymentPackageItemList.PaymentPackageItemList) + (sizeof(TPaymentPackageItemInfoEx) * PaymentPackageItemList.nPaymentPackegeCount);
|
||
m_pConnection->AddSendData(nMainCmd, QUERY_PAYMENTINVEN_PAKAGELIST, (char*)&PaymentPackageItemList, nLen);
|
||
}
|
||
}
|
||
break;
|
||
#endif
|
||
case QUERY_CHEAT_GIFTCLEAR :
|
||
{
|
||
TQCheatGiftClear* pCheatGiftClear = (TQCheatGiftClear*)pData;
|
||
|
||
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
|
||
if (pMembershipDB)
|
||
{
|
||
pMembershipDB->QueryCheatGiftClear(pCheatGiftClear->biCharacterDBID);
|
||
}
|
||
else{
|
||
g_Log.Log(LogType::_ERROR, pCheatGiftClear->cWorldSetID, pCheatGiftClear->nAccountDBID, 0, 0, L"[ADBID:%d] [QUERY_CHEAT_GIFTCLEAR:%d] MembershipDB not found\r\n", pCheatGiftClear->nAccountDBID, pCheatGiftClear->cWorldSetID);
|
||
}
|
||
}
|
||
break;
|
||
#if defined( PRE_PVP_GAMBLEROOM )
|
||
case QUERY_LOGCODE_PETAL :
|
||
{
|
||
TQAddPetalLogCode* pCash = (TQAddPetalLogCode*)pData;
|
||
|
||
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
|
||
if (pMembershipDB)
|
||
{
|
||
int nTotalPetal = 0;
|
||
int nRetCode = pMembershipDB->QueryAddPetalIncome(pCash->biCharacterDBID, pCash->nUseItemID, pCash->nAddPetal, nTotalPetal, pCash->cLogCode, pCash->nGambleDBID);
|
||
if (nRetCode != ERROR_NONE)
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, pCash->biCharacterDBID, 0, L"[ADBID:%u] [QUERY_LOGCODE_PETAL:%d] Result:%d\r\n", pCash->nAccountDBID, pCash->cWorldSetID, nRetCode);
|
||
|
||
}
|
||
else{
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, pCash->biCharacterDBID, 0, L"[ADBID:%u] [QUERY_LOGCODE_PETAL] MembershipDB not found\r\n", pCash->nAccountDBID, pCash->cWorldSetID);
|
||
}
|
||
}
|
||
break;
|
||
case QUERY_USE_PETAL :
|
||
{
|
||
TQUsePetal* pCash = (TQUsePetal*)pData;
|
||
|
||
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
|
||
if (pMembershipDB)
|
||
{
|
||
int nTotalPetal = 0;
|
||
int nRetCode = pMembershipDB->QueryUsePetal(pCash->biCharacterDBID, pCash->nDelPetal, pCash->cLogCode, pCash->nGambleDBID);
|
||
if (nRetCode != ERROR_NONE)
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, pCash->biCharacterDBID, 0, L"[ADBID:%u] [QUERY_USE_PETAL:%d] Result:%d\r\n", pCash->nAccountDBID, pCash->cWorldSetID, nRetCode);
|
||
|
||
}
|
||
else{
|
||
g_Log.Log(LogType::_ERROR, pCash->cWorldSetID, pCash->nAccountDBID, pCash->biCharacterDBID, 0, L"[ADBID:%u] [QUERY_USE_PETAL] MembershipDB not found\r\n", pCash->nAccountDBID, pCash->cWorldSetID);
|
||
}
|
||
}
|
||
break;
|
||
#endif
|
||
}
|
||
} |