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

161 lines
5.4 KiB
C++

#include "StdAfx.h"
#include "DNSecondarySkillTask.h"
#include "DNConnection.h"
#include "DNSQLConnectionManager.h"
#include "DNSQLMembership.h"
#include "DNSQLWorld.h"
#include "Log.h"
CDNSecondarySkillTask::CDNSecondarySkillTask(CDNConnection* pConnection)
: CDNMessageTask(pConnection)
{
}
CDNSecondarySkillTask::~CDNSecondarySkillTask(void)
{
}
#if defined( PRE_ADD_SECONDARY_SKILL )
void CDNSecondarySkillTask::OnRecvMessage(int nThreadID, int nMainCmd, int nSubCmd, char* pData)
{
CDNSQLWorld *pWorldDB = NULL;
switch( nSubCmd )
{
case QUERY_ADD_SECONDARYSKILL:
{
TQAddSecondarySkill* pPacket = reinterpret_cast<TQAddSecondarySkill*>(pData);
int iRet = ERROR_DB;
pWorldDB = g_SQLConnectionManager.FindWorldDB( nThreadID, pPacket->cWorldSetID );
if( pWorldDB )
iRet = pWorldDB->QueryAddSecondarySkill( pPacket );
if( iRet != ERROR_NONE )
m_pConnection->QueryResultError( pPacket->nAccountDBID, iRet, nMainCmd, nSubCmd );
break;
}
case QUERY_DELETE_SECONDARYSKILL:
{
TQDelSecondarySkill* pPacket = reinterpret_cast<TQDelSecondarySkill*>(pData);
int iRet = ERROR_DB;
pWorldDB = g_SQLConnectionManager.FindWorldDB( nThreadID, pPacket->cWorldSetID );
if( pWorldDB )
iRet = pWorldDB->QueryDelSecondarySkill( pPacket );
if( iRet != ERROR_NONE )
m_pConnection->QueryResultError( pPacket->nAccountDBID, iRet, nMainCmd, nSubCmd );
break;
}
case QUERY_GETLIST_SECONDARYSKILL:
{
TQGetListSecondarySkill* pPacket = reinterpret_cast<TQGetListSecondarySkill*>(pData);
TAGetListSecondarySkill Packet;
memset( &Packet, 0, sizeof(Packet) );
Packet.nRetCode = ERROR_DB;
Packet.nAccountDBID = pPacket->nAccountDBID;
pWorldDB = g_SQLConnectionManager.FindWorldDB( nThreadID, pPacket->cWorldSetID );
if( pWorldDB )
Packet.nRetCode = pWorldDB->QueryGetListSecondarySkill( pPacket, &Packet );
else
g_Log.Log( LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, pPacket->biCharacterDBID, 0, L"[ADBID:%d] [QueryGetListSecondarySkill:%d] WorldDB not found\r\n", pPacket->nAccountDBID, pPacket->cWorldSetID);
int iSize = sizeof(Packet)-sizeof(Packet.SkillList)+(Packet.cCount*sizeof(Packet.SkillList[0]));
m_pConnection->AddSendData( nMainCmd, nSubCmd, reinterpret_cast<char*>(&Packet), iSize );
if( Packet.nRetCode == ERROR_NONE )
{
TQGetListManufactureSkillRecipe RecipeQ;
RecipeQ.cThreadID = pPacket->cThreadID;
RecipeQ.cWorldSetID = pPacket->cWorldSetID;
RecipeQ.nAccountDBID = pPacket->nAccountDBID;
RecipeQ.biCharacterDBID = pPacket->biCharacterDBID;
TAGetListManufactureSkillRecipe RecipeA;
memset( &RecipeA, 0, sizeof(RecipeA) );
RecipeA.nRetCode = ERROR_DB;
RecipeA.nAccountDBID = RecipeQ.nAccountDBID;
if (pWorldDB)
RecipeA.nRetCode = pWorldDB->QueryGetListManufactureSkillRecipe( &RecipeQ, &RecipeA );
int iSize = sizeof(RecipeA)-sizeof(RecipeA.RecipeList)+(RecipeA.cCount*sizeof(RecipeA.RecipeList[0]));
m_pConnection->AddSendData( nMainCmd, QUERY_GETLIST_SECONDARYSKILL_RECIPE, reinterpret_cast<char*>(&RecipeA), iSize );
}
break;
}
case QUERY_MOD_SECONDARYSKILL_EXP:
{
TQModSecondarySkillExp* pPacket = reinterpret_cast<TQModSecondarySkillExp*>(pData);
int iRet = ERROR_DB;
pWorldDB = g_SQLConnectionManager.FindWorldDB( nThreadID, pPacket->cWorldSetID );
if( pWorldDB )
iRet = pWorldDB->QueryModSecondarySkillExp( pPacket );
if( iRet != ERROR_NONE )
m_pConnection->QueryResultError( pPacket->nAccountDBID, iRet, nMainCmd, nSubCmd );
break;
}
case QUERY_ADD_SECONDARYSKILL_RECIPE:
{
TQSetManufactureSkillRecipe* pPacket = reinterpret_cast<TQSetManufactureSkillRecipe*>(pData);
int iRet = ERROR_DB;
pWorldDB = g_SQLConnectionManager.FindWorldDB( nThreadID, pPacket->cWorldSetID );
if( pWorldDB )
iRet = pWorldDB->QuerySetManufactureSkillRecipe( pPacket );
if( iRet != ERROR_NONE )
m_pConnection->QueryResultError( pPacket->nAccountDBID, iRet, nMainCmd, nSubCmd );
break;
}
case QUERY_DELETE_SECONDARYSKILL_RECIPE:
{
TQDelManufactureSkillRecipe* pPacket = reinterpret_cast<TQDelManufactureSkillRecipe*>(pData);
int iRet = ERROR_DB;
pWorldDB = g_SQLConnectionManager.FindWorldDB( nThreadID, pPacket->cWorldSetID );
if( pWorldDB )
iRet = pWorldDB->QueryDelManufactureSkillRecipe( pPacket );
if( iRet != ERROR_NONE )
m_pConnection->QueryResultError( pPacket->nAccountDBID, iRet, nMainCmd, nSubCmd );
break;
}
case QUERY_EXTRACT_SECONDARYSKILL_RECIPE:
{
TQExtractManufactureSkillRecipe* pPacket = reinterpret_cast<TQExtractManufactureSkillRecipe*>(pData);
int iRet = ERROR_DB;
pWorldDB = g_SQLConnectionManager.FindWorldDB( nThreadID, pPacket->cWorldSetID );
if( pWorldDB )
iRet = pWorldDB->QueryExtractManufactureSkillRecipe( pPacket );
if( iRet != ERROR_NONE )
m_pConnection->QueryResultError( pPacket->nAccountDBID, iRet, nMainCmd, nSubCmd );
break;
}
case QUERY_MOD_SECONDARYSKILL_RECIPE_EXP:
{
TQModManufactureSkillRecipe* pPacket = reinterpret_cast<TQModManufactureSkillRecipe*>(pData);
int iRet = ERROR_DB;
pWorldDB = g_SQLConnectionManager.FindWorldDB( nThreadID, pPacket->cWorldSetID );
if( pWorldDB )
iRet = pWorldDB->QueryModManufactureSkillRecipe( pPacket );
if( iRet != ERROR_NONE )
m_pConnection->QueryResultError( pPacket->nAccountDBID, iRet, nMainCmd, nSubCmd );
break;
}
}
}
#endif // #if defined( PRE_ADD_SECONDARY_SKILL )