初步修复
This commit is contained in:
parent
8fc4357cc6
commit
e4714f3f0e
46705 changed files with 12004901 additions and 0 deletions
214
Server/DNDBServer/DNFriendTask.cpp
Normal file
214
Server/DNDBServer/DNFriendTask.cpp
Normal file
|
|
@ -0,0 +1,214 @@
|
|||
#include "StdAfx.h"
|
||||
#include "DNFriendTask.h"
|
||||
#include "DNConnection.h"
|
||||
#include "DNSQLConnectionManager.h"
|
||||
#include "DNSQLMembership.h"
|
||||
#include "DNSQLWorld.h"
|
||||
#include "Util.h"
|
||||
#include "Log.h"
|
||||
|
||||
CDNFriendTask::CDNFriendTask(CDNConnection* pConnection)
|
||||
: CDNMessageTask(pConnection)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CDNFriendTask::~CDNFriendTask(void)
|
||||
{
|
||||
}
|
||||
|
||||
void CDNFriendTask::OnRecvMessage(int nThreadID, int nMainCmd, int nSubCmd, char* pData)
|
||||
{
|
||||
CDNSQLMembership *pMembershipDB = NULL;
|
||||
CDNSQLWorld *pWorldDB = NULL;
|
||||
int nRet = ERROR_DB;
|
||||
|
||||
switch (nSubCmd)
|
||||
{
|
||||
case QUERY_FRIENDLIST:
|
||||
{
|
||||
TQFriendList * pPacket = (TQFriendList*)pData;
|
||||
|
||||
TAFriendList packet;
|
||||
memset(&packet, 0, sizeof(TAFriendList));
|
||||
|
||||
packet.nAccountDBID = pPacket->nAccountDBID;
|
||||
packet.nRetCode = ERROR_DB;
|
||||
|
||||
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pPacket->cWorldSetID);
|
||||
if (pWorldDB)
|
||||
{
|
||||
packet.nRetCode = pWorldDB->QueryGetListFriend(pPacket->biCharacterDBID, packet.cCount, packet.FriendData);
|
||||
}
|
||||
else
|
||||
{
|
||||
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, pPacket->biCharacterDBID, 0, L"[ADBID:%u CDBID:%lld] [QUERY_FRIENDLIST:%d] pWorldDB not found\r\n", pPacket->nAccountDBID, pPacket->biCharacterDBID, pPacket->cWorldSetID);
|
||||
}
|
||||
|
||||
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&packet, \
|
||||
sizeof(TAFriendList) - ((FRIEND_MAXCOUNT + FRIEND_GROUP_MAX - packet.cCount) * sizeof(TDBFriendData)));
|
||||
}
|
||||
break;
|
||||
|
||||
case QUERY_ADDGROUP:
|
||||
{
|
||||
TQAddGroup * pPacket = (TQAddGroup*)pData;
|
||||
TAAddGroup packet;
|
||||
memset(&packet, 0, sizeof(TAAddGroup));
|
||||
|
||||
packet.nAccountDBID = pPacket->nAccountDBID;
|
||||
_wcscpy(packet.wszGroupName, _countof(packet.wszGroupName), pPacket->wszGroupName, (int)wcslen(pPacket->wszGroupName));
|
||||
packet.nRetCode = ERROR_DB;
|
||||
|
||||
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pPacket->cWorldSetID);
|
||||
if (pWorldDB)
|
||||
{
|
||||
packet.nRetCode = pWorldDB->QueryAddFriendGroup(pPacket->biCharacterDBID, pPacket->wszGroupName, pPacket->nGroupCountLimit, packet.nGroupDBID);
|
||||
}
|
||||
else
|
||||
{
|
||||
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, pPacket->biCharacterDBID, 0, L"[ADBID:%u CDBID:%lld] [QUERY_ADDGROUP:%d] pWorldDB not found\r\n", pPacket->nAccountDBID, pPacket->biCharacterDBID, pPacket->cWorldSetID);
|
||||
}
|
||||
|
||||
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&packet, sizeof(packet));
|
||||
}
|
||||
break;
|
||||
|
||||
case QUERY_MODGROUPNAME:
|
||||
{
|
||||
TQModGroupName * pPacket = (TQModGroupName*)pData;
|
||||
TAModGroupName packet;
|
||||
memset(&packet, 0, sizeof(TAModGroupName));
|
||||
|
||||
packet.nAccountDBID = pPacket->nAccountDBID;
|
||||
packet.nGroupDBID = pPacket->nGroupDBID;
|
||||
_wcscpy(packet.wszGroupName, FRIEND_GROUP_NAMELENMAX, pPacket->wszGroupName, FRIEND_GROUP_NAMELENMAX);
|
||||
packet.nRetCode = ERROR_DB;
|
||||
|
||||
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pPacket->cWorldSetID);
|
||||
if (pWorldDB)
|
||||
{
|
||||
packet.nRetCode = pWorldDB->QueryModFriendGroupName(pPacket->biCharacterDBID, pPacket->nGroupDBID, pPacket->wszGroupName);
|
||||
}
|
||||
else
|
||||
{
|
||||
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, pPacket->biCharacterDBID, 0, L"[ADBID:%u CDBID:%lld] [QUERY_MODGROUPNAME:%d] pWorldDB not found\r\n", pPacket->nAccountDBID, pPacket->biCharacterDBID, pPacket->cWorldSetID);
|
||||
}
|
||||
|
||||
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&packet, sizeof(packet));
|
||||
}
|
||||
break;
|
||||
|
||||
case QUERY_DELGROUP:
|
||||
{
|
||||
TQDelGroup * pPacket = (TQDelGroup*)pData;
|
||||
TADelGroup packet;
|
||||
memset(&packet, 0, sizeof(TADelGroup));
|
||||
|
||||
packet.nAccountDBID = pPacket->nAccountDBID;
|
||||
packet.nGroupDBID = pPacket->nGroupDBID;
|
||||
packet.nRetCode = ERROR_DB;
|
||||
|
||||
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pPacket->cWorldSetID);
|
||||
if (pWorldDB)
|
||||
{
|
||||
packet.nRetCode = pWorldDB->QueryDelFriendGroup(pPacket->biCharacterDBID, pPacket->nGroupDBID);
|
||||
}
|
||||
else
|
||||
{
|
||||
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, pPacket->biCharacterDBID, 0, L"[ADBID:%u CDBID:%lld] [QUERY_DELGROUP:%d] pWorldDB not found\r\n", pPacket->nAccountDBID, pPacket->biCharacterDBID, pPacket->cWorldSetID);
|
||||
}
|
||||
|
||||
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&packet, sizeof(packet));
|
||||
}
|
||||
break;
|
||||
|
||||
case QUERY_MODFRIENDANDGROUPMAPPING:
|
||||
{
|
||||
TQModFriendAndGroupMapping * pPacket = (TQModFriendAndGroupMapping*)pData;
|
||||
TAModFriendAndGroupMapping packet;
|
||||
memset(&packet, 0, sizeof(TAModFriendAndGroupMapping));
|
||||
|
||||
packet.nAccountDBID = pPacket->nAccountDBID;
|
||||
packet.nGroupDBID = pPacket->nGroupDBID;
|
||||
packet.nRetCode = ERROR_DB;
|
||||
|
||||
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pPacket->cWorldSetID);
|
||||
if (pWorldDB)
|
||||
{
|
||||
packet.nRetCode = pWorldDB->QueryModFriendAndFriendGroupMapping(pPacket->biCharacterDBID, pPacket->cCount, pPacket->biFriendCharacterDBIDs, pPacket->nGroupDBID);
|
||||
if (packet.nRetCode == ERROR_NONE)
|
||||
{
|
||||
packet.cCount = pPacket->cCount;
|
||||
memcpy(packet.biFriendCharacterDBIDs, pPacket->biFriendCharacterDBIDs, (sizeof(packet.biFriendCharacterDBIDs)/sizeof(*packet.biFriendCharacterDBIDs)) * packet.cCount);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, pPacket->biCharacterDBID, 0, L"[ADBID:%u CDBID:%lld] [QUERY_MODFRIENDANDGROUPMAPPING:%d] pWorldDB not found\r\n", pPacket->nAccountDBID, pPacket->biCharacterDBID, pPacket->cWorldSetID);
|
||||
}
|
||||
|
||||
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&packet, sizeof(packet) - sizeof(packet.biFriendCharacterDBIDs) + (sizeof(INT64) * packet.cCount));
|
||||
}
|
||||
break;
|
||||
|
||||
case QUERY_ADDFRIEND:
|
||||
{
|
||||
TQAddFriend * pPacket = (TQAddFriend*)pData;
|
||||
TAAddFriend packet;
|
||||
memset(&packet, 0, sizeof(TAAddFriend));
|
||||
|
||||
packet.nAccountDBID = pPacket->nAccountDBID;
|
||||
packet.nGroupDBID = pPacket->nGroupDBID;
|
||||
_wcscpy(packet.wszFriendName, _countof(packet.wszFriendName), pPacket->wszFriendName, (int)wcslen(pPacket->wszFriendName));
|
||||
packet.nRetCode = ERROR_DB;
|
||||
|
||||
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pPacket->cWorldSetID);
|
||||
if (pWorldDB)
|
||||
{
|
||||
bool bNeedDelIsolate = false;
|
||||
packet.nRetCode = pWorldDB->QueryAddFriend(pPacket->biCharacterDBID, pPacket->wszFriendName, L"", pPacket->nGroupDBID, pPacket->nFriendCountLimit, packet.biFriendCharacterDBID, packet.nFriendAccountDBID, bNeedDelIsolate);
|
||||
if (packet.nRetCode == ERROR_NONE)
|
||||
packet.cNeedDelIsolate = bNeedDelIsolate == true ? 1 : 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, pPacket->biCharacterDBID, 0, L"[ADBID:%u CDBID:%lld] [QUERY_ADDFRIEND:%d] pWorldDB not found\r\n", pPacket->nAccountDBID, pPacket->biCharacterDBID, pPacket->cWorldSetID);
|
||||
}
|
||||
|
||||
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&packet, sizeof(packet));
|
||||
}
|
||||
break;
|
||||
|
||||
case QUERY_DELFRIEND:
|
||||
{
|
||||
TQDelFriend * pPacket = (TQDelFriend*)pData;
|
||||
TADelFriend packet;
|
||||
memset(&packet, 0, sizeof(TADelFriend));
|
||||
|
||||
packet.nAccountDBID = pPacket->nAccountDBID;
|
||||
packet.cCount = pPacket->cCount;
|
||||
memcpy(packet.biFriendCharacterDBIDs, pPacket->biFriendCharacterDBIDs, sizeof(packet.biFriendCharacterDBIDs[0]) * packet.cCount);
|
||||
packet.nRetCode = ERROR_DB;
|
||||
|
||||
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pPacket->cWorldSetID);
|
||||
if (pWorldDB)
|
||||
{
|
||||
packet.nRetCode = pWorldDB->QueryDelFriend(pPacket->biCharacterDBID, pPacket->cCount, pPacket->biFriendCharacterDBIDs);
|
||||
}
|
||||
else
|
||||
{
|
||||
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, pPacket->biCharacterDBID, 0, L"[ADBID:%u CDBID:%lld] [QUERY_ADDFRIEND:%d] pWorldDB not found\r\n", pPacket->nAccountDBID, pPacket->biCharacterDBID, pPacket->cWorldSetID);
|
||||
}
|
||||
|
||||
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&packet, sizeof(packet) - sizeof(packet.biFriendCharacterDBIDs) + sizeof(packet.biFriendCharacterDBIDs[0]) * packet.cCount );
|
||||
}
|
||||
break;
|
||||
|
||||
case QUERY_MODFRIENDMEMO:
|
||||
{
|
||||
//¸Þ¸ð´Â ¾È½á¿ä.
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue