94 lines
2.6 KiB
C++
94 lines
2.6 KiB
C++
#include "StdAfx.h"
|
|
|
|
|
|
void CLogicDBReqestHandler::QueryActorScriptData(CDataPacketReader &inPacket)
|
|
{
|
|
int nRawServerId, nLoginServerId;
|
|
unsigned int nActorID;
|
|
inPacket >> nRawServerId >> nLoginServerId >> nActorID;
|
|
QueryActorScriptData(nActorID, nRawServerId, nLoginServerId);
|
|
}
|
|
|
|
void CLogicDBReqestHandler::QueryActorScriptData(unsigned int nActorID, int nRawServerId, int nLoginServerId)
|
|
{
|
|
DECLARE_FUN_TIME_PROF()
|
|
CDataPacket retPack;
|
|
INT_PTR nErroID = reSucc;
|
|
//数据库连接是否就绪
|
|
if ( !m_pSQLConnection->Connected() )
|
|
{
|
|
nErroID= reDbErr;
|
|
}
|
|
else
|
|
{
|
|
//向数据库查询进度任务数据
|
|
nErroID = m_pSQLConnection->Query(szSQLSP_LoadActorScriptData, nActorID);
|
|
if ( !nErroID )
|
|
{
|
|
CDataPacket& retPack = allocProtoPacket(dcLoadVar);
|
|
retPack << nRawServerId << nLoginServerId;
|
|
retPack << nActorID << (BYTE) nErroID;
|
|
|
|
MYSQL_ROW pRow = m_pSQLConnection->CurrentRow();
|
|
unsigned long* pLength = m_pSQLConnection->GetFieldsLength(); //获取数据的长度
|
|
|
|
if ( pRow && pLength && pRow[0])
|
|
{
|
|
unsigned long long lLong =( pLength[0]);
|
|
retPack.writeBuf(LPCVOID ( pRow[0]), (size_t)lLong);
|
|
}
|
|
flushProtoPacket(retPack);
|
|
m_pSQLConnection->ResetQuery(); //函数调用里没有重置数据的
|
|
return;
|
|
}
|
|
|
|
}
|
|
if( nErroID != reSucc)
|
|
{
|
|
CDataPacket& retPack = allocProtoPacket(dcLoadVar);
|
|
retPack << nRawServerId << nLoginServerId;
|
|
retPack << nActorID << (BYTE) nErroID;
|
|
flushProtoPacket(retPack);
|
|
}
|
|
}
|
|
|
|
|
|
//保存技能的数据
|
|
void CLogicDBReqestHandler::SaveScriptDataToDB(CDataPacketReader &inPacket, bool bResp)
|
|
{
|
|
DECLARE_FUN_TIME_PROF()
|
|
int nRawServerId = 0, nLoginServerId = 0;
|
|
unsigned int nActorId = 0;
|
|
int nSkillCount =0;
|
|
inPacket >> nRawServerId >> nLoginServerId >> nActorId ;
|
|
int nErrorCode =0;
|
|
long long nSize = inPacket.getLength() - inPacket.getPosition();
|
|
if(nSize >0)
|
|
{
|
|
char *ptr = m_pHugeSQLBuffer;
|
|
strcpy(m_pHugeSQLBuffer,szSQLSP_UpdateActorScriptData); //表头放这里
|
|
ptr += strlen(szSQLSP_UpdateActorScriptData);
|
|
ptr[0] = '"';
|
|
ptr += 1;
|
|
ptr += mysql_escape_string(ptr, inPacket.getOffsetPtr(), (unsigned long)nSize);
|
|
ptr[0] = '"';
|
|
ptr[1] = '\0';
|
|
ptr += 2;
|
|
|
|
char name[64];
|
|
sprintf(name," where actorid=%u",nActorId);
|
|
strcat(m_pHugeSQLBuffer,name);
|
|
|
|
nErrorCode= m_pSQLConnection->RealExec(m_pHugeSQLBuffer,strlen(m_pHugeSQLBuffer));
|
|
if(!nErrorCode) m_pSQLConnection->ResetQuery();
|
|
}
|
|
|
|
if (bResp)
|
|
{
|
|
CDataPacket& retPack = allocProtoPacket(dcSaveVar);
|
|
retPack << nRawServerId << nLoginServerId;
|
|
retPack << nActorId << char(nErrorCode);
|
|
flushProtoPacket(retPack);
|
|
}
|
|
}
|