2024-12-21 10:04:04 +08:00
# include "StdAfx.h"
# include "DNSkillTask.h"
# include "DNConnection.h"
# include "DNSQLConnectionManager.h"
# include "DNSQLMembership.h"
# include "DNSQLWorld.h"
# include "Log.h"
CDNSkillTask : : CDNSkillTask ( CDNConnection * pConnection )
: CDNMessageTask ( pConnection )
{
}
CDNSkillTask : : ~ CDNSkillTask ( void )
{
}
void CDNSkillTask : : 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_ADDSKILL :
{
TQAddSkill * pUpdate = ( TQAddSkill * ) pData ;
pWorldDB = g_SQLConnectionManager . FindWorldDB ( nThreadID , pUpdate - > cWorldSetID ) ;
if ( pWorldDB ) {
if ( pUpdate - > biCurrentCoin > 0 & & pUpdate - > biPickUpCoin > 0 )
{
INT64 biTotalCoin = 0 ;
nRet = pWorldDB - > QueryMidtermCoin ( pUpdate - > biCharacterDBID , pUpdate - > biPickUpCoin , pUpdate - > nChannelID , pUpdate - > nMapID , biTotalCoin ) ;
if ( nRet ! = ERROR_NONE | | biTotalCoin ! = pUpdate - > biCurrentCoin )
{
g_Log . Log ( LogType : : _ERROR , pUpdate - > cWorldSetID , pUpdate - > nAccountDBID , pUpdate - > biCharacterDBID , 0 , L " [CDBID:%lld] [QueryMidtermCoin:%d] Query Error Ret:%d DBCoint:%I64d ServerCoin:%I64d \r \n " , pUpdate - > biCharacterDBID , pUpdate - > cWorldSetID , nRet , biTotalCoin , pUpdate - > biCurrentCoin ) ;
nRet = ERROR_DB ;
m_pConnection - > QueryResultError ( pUpdate - > nAccountDBID , nRet , nMainCmd , nSubCmd ) ; // <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
break ;
}
}
nRet = pWorldDB - > QueryAddSkill ( pUpdate - > biCharacterDBID , pUpdate - > nSkillID , pUpdate - > cSkillLevel , pUpdate - > nCoolTime , pUpdate - > cSkillChangeCode , pUpdate - > biCoin , pUpdate - > nChannelID , pUpdate - > nMapID , pUpdate - > cSkillPage ) ;
if ( nRet ! = ERROR_NONE ) {
g_Log . Log ( LogType : : _ERROR , pUpdate - > cWorldSetID , pUpdate - > nAccountDBID , pUpdate - > biCharacterDBID , 0 , L " [CDBID:%lld] [QUERY_ADDSKILL:%d] Query Error Ret:%d \r \n " , pUpdate - > biCharacterDBID , pUpdate - > cWorldSetID , nRet ) ;
m_pConnection - > QueryResultError ( pUpdate - > nAccountDBID , nRet , nMainCmd , nSubCmd ) ; // <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
}
}
else {
g_Log . Log ( LogType : : _ERROR , pUpdate - > cWorldSetID , pUpdate - > nAccountDBID , pUpdate - > biCharacterDBID , 0 , L " [CDBID:%lld] [QUERY_ADDSKILL:%d] pWorldDB not found \r \n " , pUpdate - > biCharacterDBID , pUpdate - > cWorldSetID ) ;
}
}
break ;
case QUERY_MODSKILLLEVEL :
{
TQModSkillLevel * pUpdate = ( TQModSkillLevel * ) pData ;
pWorldDB = g_SQLConnectionManager . FindWorldDB ( nThreadID , pUpdate - > cWorldSetID ) ;
if ( pWorldDB ) {
nRet = pWorldDB - > QueryModSkillLevel ( pUpdate - > biCharacterDBID , pUpdate - > nSkillID , pUpdate - > cSkillLevel , pUpdate - > nCoolTime , pUpdate - > wUsedSkillPoint , pUpdate - > cSkillChangeCode , pUpdate - > nChannelID , pUpdate - > nMapID , pUpdate - > cSkillPage ) ;
if ( nRet ! = ERROR_NONE ) {
g_Log . Log ( LogType : : _ERROR , pUpdate - > cWorldSetID , pUpdate - > nAccountDBID , pUpdate - > biCharacterDBID , 0 , L " [CDBID:%lld] [QUERY_MODSKILLLEVEL:%d] Query Error Ret:%d \r \n " , pUpdate - > biCharacterDBID , pUpdate - > cWorldSetID , nRet ) ;
m_pConnection - > QueryResultError ( pUpdate - > nAccountDBID , nRet , nMainCmd , nSubCmd ) ; // <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
}
}
else {
g_Log . Log ( LogType : : _ERROR , pUpdate - > cWorldSetID , pUpdate - > nAccountDBID , pUpdate - > biCharacterDBID , 0 , L " [CDBID:%lld] [QUERY_MODSKILLLEVEL:%d] pWorldDB not found \r \n " , pUpdate - > biCharacterDBID , pUpdate - > cWorldSetID ) ;
}
}
break ;
case QUERY_INCREASESKILLPOINT :
{
TQIncreaseSkillPoint * pUpdate = ( TQIncreaseSkillPoint * ) pData ;
pWorldDB = g_SQLConnectionManager . FindWorldDB ( nThreadID , pUpdate - > cWorldSetID ) ;
if ( pWorldDB ) {
nRet = pWorldDB - > QueryIncreaseSkillPoint ( pUpdate - > biCharacterDBID , pUpdate - > wSkillPoint , pUpdate - > nChannelID , pUpdate - > nMapID , pUpdate - > cSkillPointChangeCode , pUpdate - > cSkillPage ) ;
if ( nRet ! = ERROR_NONE ) {
g_Log . Log ( LogType : : _ERROR , pUpdate - > cWorldSetID , pUpdate - > nAccountDBID , pUpdate - > biCharacterDBID , 0 , L " [CDBID:%lld] [QUERY_INCREASESKILLPOINT:%d] Query Error Ret:%d \r \n " , pUpdate - > biCharacterDBID , pUpdate - > cWorldSetID , nRet ) ;
m_pConnection - > QueryResultError ( pUpdate - > nAccountDBID , nRet , nMainCmd , nSubCmd ) ; // <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
}
}
else {
g_Log . Log ( LogType : : _ERROR , pUpdate - > cWorldSetID , pUpdate - > nAccountDBID , pUpdate - > biCharacterDBID , 0 , L " [CDBID:%lld] [QUERY_INCREASESKILLPOINT:%d] pWorldDB not found \r \n " , pUpdate - > biCharacterDBID , pUpdate - > cWorldSetID ) ;
}
}
break ;
case QUERY_DECREASESKILLPOINT :
{
TQDecreaseSkillPoint * pUpdate = ( TQDecreaseSkillPoint * ) pData ;
pWorldDB = g_SQLConnectionManager . FindWorldDB ( nThreadID , pUpdate - > cWorldSetID ) ;
if ( pWorldDB ) {
nRet = pWorldDB - > QueryDecreaseSkillPoint ( pUpdate ) ;
if ( nRet ! = ERROR_NONE ) {
g_Log . Log ( LogType : : _ERROR , pUpdate - > cWorldSetID , pUpdate - > nAccountDBID , pUpdate - > biCharacterDBID , 0 , L " [CDBID:%lld] [QUERY_DECREASESKILLPOINT:%d] Query Error Ret:%d \r \n " , pUpdate - > biCharacterDBID , pUpdate - > cWorldSetID , nRet ) ;
m_pConnection - > QueryResultError ( pUpdate - > nAccountDBID , nRet , nMainCmd , nSubCmd ) ; // <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
}
}
else {
g_Log . Log ( LogType : : _ERROR , pUpdate - > cWorldSetID , pUpdate - > nAccountDBID , pUpdate - > biCharacterDBID , 0 , L " [CDBID:%lld] [QUERY_DECREASESKILLPOINT:%d] pWorldDB not found \r \n " , pUpdate - > biCharacterDBID , pUpdate - > cWorldSetID ) ;
}
}
break ;
case QUERY_DELSKILL :
{
TQDelSkill * pUpdate = ( TQDelSkill * ) pData ;
pWorldDB = g_SQLConnectionManager . FindWorldDB ( nThreadID , pUpdate - > cWorldSetID ) ;
if ( pWorldDB ) {
nRet = pWorldDB - > QueryDelSkill ( pUpdate - > biCharacterDBID , pUpdate - > nSkillID , pUpdate - > cSkillChangeCode , pUpdate - > bSkillPointBack , pUpdate - > nChannelID , pUpdate - > nMapID , pUpdate - > cSkillPage ) ;
if ( nRet ! = ERROR_NONE ) {
g_Log . Log ( LogType : : _ERROR , pUpdate - > cWorldSetID , pUpdate - > nAccountDBID , pUpdate - > biCharacterDBID , 0 , L " [CDBID:%lld] [QUERY_DELSKILL:%d] Query Error Ret:%d \r \n " , pUpdate - > biCharacterDBID , pUpdate - > cWorldSetID , nRet ) ;
m_pConnection - > QueryResultError ( pUpdate - > nAccountDBID , nRet , nMainCmd , nSubCmd ) ; // <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
}
}
else {
g_Log . Log ( LogType : : _ERROR , pUpdate - > cWorldSetID , pUpdate - > nAccountDBID , pUpdate - > biCharacterDBID , 0 , L " [CDBID:%lld] [QUERY_DELSKILL:%d] pWorldDB not found \r \n " , pUpdate - > biCharacterDBID , pUpdate - > cWorldSetID ) ;
}
}
break ;
case QUERY_RESETSKILL :
{
TQResetSkill * pUpdate = ( TQResetSkill * ) pData ;
TAResetSkill Update ;
memset ( & Update , 0 , sizeof ( TAResetSkill ) ) ;
Update . nAccountDBID = pUpdate - > nAccountDBID ;
Update . nRetCode = ERROR_DB ;
pWorldDB = g_SQLConnectionManager . FindWorldDB ( nThreadID , pUpdate - > cWorldSetID ) ;
if ( pWorldDB ) {
Update . cSkillPage = pUpdate - > cSkillPage ;
Update . nRetCode = pWorldDB - > QueryResetSkill ( pUpdate - > biCharacterDBID , pUpdate - > nChannelID , pUpdate - > nMapID , Update . wSkillPoint , Update . wTotalSkillPoint , pUpdate - > cSkillPage ) ;
}
else {
g_Log . Log ( LogType : : _ERROR , pUpdate - > cWorldSetID , pUpdate - > nAccountDBID , pUpdate - > biCharacterDBID , 0 , L " [CDBID:%lld] [QUERY_RESETSKILL:%d] pWorldDB not found \r \n " , pUpdate - > biCharacterDBID , pUpdate - > cWorldSetID ) ;
}
m_pConnection - > AddSendData ( nMainCmd , nSubCmd , ( char * ) & Update , sizeof ( Update ) ) ;
}
break ;
case QUERY_RESETSKILLBYSKILLIDS :
{
TQResetSkillBySkillIDS * pUpdate = reinterpret_cast < TQResetSkillBySkillIDS * > ( pData ) ;
TAResetSkillBySkillIDS Update ;
memset ( & Update , 0 , sizeof ( Update ) ) ;
Update . nAccountDBID = pUpdate - > nAccountDBID ;
Update . nRetCode = ERROR_DB ;
pWorldDB = g_SQLConnectionManager . FindWorldDB ( nThreadID , pUpdate - > cWorldSetID ) ;
if ( pWorldDB )
{
Update . cSkillPage = pUpdate - > cSkillPage ;
Update . nRetCode = pWorldDB - > QueryResetSkillBySkillIDs ( pUpdate , & Update ) ;
}
else
{
g_Log . Log ( LogType : : _ERROR , pUpdate - > cWorldSetID , pUpdate - > nAccountDBID , pUpdate - > biCharacterDBID , 0 , L " [CDBID:%lld] [QUERY_RESETSKILLBYSKILLIDS:%d] pWorldDB not found \r \n " , pUpdate - > biCharacterDBID , pUpdate - > cWorldSetID ) ;
}
m_pConnection - > AddSendData ( nMainCmd , nSubCmd , ( char * ) & Update , sizeof ( Update ) ) ;
break ;
}
case QUERY_USEEXPANDSKILLPAGE :
{
TQUseExpandSkillPage * pUpdate = reinterpret_cast < TQUseExpandSkillPage * > ( pData ) ;
TAUseExpandSkillPage Update ;
memset ( & Update , 0 , sizeof ( Update ) ) ;
Update . nAccountDBID = pUpdate - > nAccountDBID ;
Update . nRetCode = ERROR_DB ;
pWorldDB = g_SQLConnectionManager . FindWorldDB ( nThreadID , pUpdate - > cWorldSetID ) ;
if ( pWorldDB ) {
Update . nRetCode = pWorldDB - > QueryUseExpandSkillPage ( pUpdate - > biCharacterDBID , pUpdate - > nSkillArray , pUpdate - > wSkillPoint ) ;
m_pConnection - > AddSendData ( nMainCmd , nSubCmd , ( char * ) & Update , sizeof ( Update ) ) ;
}
else
{
g_Log . Log ( LogType : : _ERROR , pUpdate - > cWorldSetID , pUpdate - > nAccountDBID , pUpdate - > biCharacterDBID , 0 , L " [CDBID:%lld] [QUERY_USEEXPANDSKILLPAGE:%d] pWorldDB not found \r \n " , pUpdate - > biCharacterDBID , pUpdate - > cWorldSetID ) ;
}
}
break ;
case QUERY_SETSKILLPOINT :
{
TQSetSkillPoint * pUpdate = ( TQSetSkillPoint * ) pData ;
pWorldDB = g_SQLConnectionManager . FindWorldDB ( nThreadID , pUpdate - > cWorldSetID ) ;
if ( pWorldDB ) {
nRet = pWorldDB - > QuerySetSkillPoint ( pUpdate ) ;
if ( nRet ! = ERROR_NONE ) {
g_Log . Log ( LogType : : _ERROR , pUpdate - > cWorldSetID , pUpdate - > nAccountDBID , pUpdate - > biCharacterDBID , 0 , L " [CDBID:%lld] [QUERY_SETSKILLPOINT:%d] Query Error Ret:%d \r \n " , pUpdate - > biCharacterDBID , pUpdate - > cWorldSetID , nRet ) ;
m_pConnection - > QueryResultError ( pUpdate - > nAccountDBID , nRet , nMainCmd , nSubCmd ) ; // <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
}
}
else {
g_Log . Log ( LogType : : _ERROR , pUpdate - > cWorldSetID , pUpdate - > nAccountDBID , pUpdate - > biCharacterDBID , 0 , L " [CDBID:%lld] [QUERY_SETSKILLPOINT:%d] pWorldDB not found \r \n " , pUpdate - > biCharacterDBID , pUpdate - > cWorldSetID ) ;
}
}
break ;
}
}