2026-02-13 14:34:15 +08:00
|
|
|
|
#include "StdAfx.h"
|
|
|
|
|
|
#include "ServiceUnits.h"
|
|
|
|
|
|
#include "ControlPacket.h"
|
|
|
|
|
|
#include "AttemperEngineSink.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
//ʱ<><CAB1><EFBFBD><EFBFBD>ʶ
|
|
|
|
|
|
#define IDI_LOAD_GAME_LIST 1 //<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|
|
|
|
|
#define IDI_CONNECT_CORRESPOND 2 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
|
|
|
|
|
|
#define IDI_COLLECT_ONLINE_INFO 3 //ͳ<><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
void ConvertUtf8ToGBK(CString &strUtf8)
|
|
|
|
|
|
{
|
|
|
|
|
|
int len=MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, NULL,0);
|
|
|
|
|
|
wchar_t * wszGBK = new wchar_t[len];
|
|
|
|
|
|
memset(wszGBK,0,len);
|
|
|
|
|
|
MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, wszGBK, len);
|
|
|
|
|
|
|
|
|
|
|
|
len = WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL);
|
|
|
|
|
|
char *szGBK=new char[len + 1];
|
|
|
|
|
|
memset(szGBK, 0, len + 1);
|
|
|
|
|
|
WideCharToMultiByte (CP_ACP, 0, wszGBK, -1, szGBK, len, NULL,NULL);
|
|
|
|
|
|
|
|
|
|
|
|
strUtf8 = szGBK;
|
|
|
|
|
|
delete[] szGBK;
|
|
|
|
|
|
delete[] wszGBK;
|
|
|
|
|
|
}
|
|
|
|
|
|
void ConvertUtf8ToGBK(char* pChar,int iLen)
|
|
|
|
|
|
{
|
|
|
|
|
|
CString kString(pChar);
|
|
|
|
|
|
ConvertUtf8ToGBK(kString);
|
|
|
|
|
|
strncpy(pChar,kString.GetString(),iLen);
|
|
|
|
|
|
}
|
|
|
|
|
|
//<2F><><EFBFBD>캯<EFBFBD><ECBAAF>
|
|
|
|
|
|
CAttemperEngineSink::CAttemperEngineSink()
|
|
|
|
|
|
{
|
|
|
|
|
|
//״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_bNeekCorrespond=true;
|
|
|
|
|
|
m_bShowServerStatus=false;
|
|
|
|
|
|
|
|
|
|
|
|
//״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_pInitParameter=NULL;
|
|
|
|
|
|
m_pBindParameter=NULL;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_pITimerEngine=NULL;
|
|
|
|
|
|
m_pIDataBaseEngine=NULL;
|
|
|
|
|
|
m_pITCPNetworkEngine=NULL;
|
|
|
|
|
|
m_pITCPSocketService=NULL;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_wAVServerPort=0;
|
|
|
|
|
|
m_dwAVServerAddr=0;
|
|
|
|
|
|
|
|
|
|
|
|
ZeroMemory((void*)&m_kCheckInInfo,sizeof(m_kCheckInInfo));
|
|
|
|
|
|
ZeroMemory(&m_BaseEnsureParameter,sizeof(m_BaseEnsureParameter));
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CAttemperEngineSink::~CAttemperEngineSink()
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>ӿڲ<D3BF>ѯ
|
|
|
|
|
|
VOID * CAttemperEngineSink::QueryInterface(REFGUID Guid, DWORD dwQueryVer)
|
|
|
|
|
|
{
|
|
|
|
|
|
QUERYINTERFACE(IAttemperEngineSink,Guid,dwQueryVer);
|
|
|
|
|
|
QUERYINTERFACE_IUNKNOWNEX(IAttemperEngineSink,Guid,dwQueryVer);
|
|
|
|
|
|
return NULL;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::OnAttemperEngineStart(IUnknownEx * pIUnknownEx)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><EFBFBD><F3B6A8B2><EFBFBD>
|
|
|
|
|
|
m_pBindParameter=new tagBindParameter[m_pInitParameter->m_wMaxConnect];
|
|
|
|
|
|
ZeroMemory(m_pBindParameter,sizeof(tagBindParameter)*m_pInitParameter->m_wMaxConnect);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|
|
|
|
|
ASSERT(m_pITimerEngine!=NULL);
|
|
|
|
|
|
m_pITimerEngine->SetTimer(IDI_COLLECT_ONLINE_INFO,m_pInitParameter->m_wCollectTime*1000L,TIMES_INFINITY,0);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡĿ¼
|
|
|
|
|
|
TCHAR szPath[MAX_PATH]=TEXT("");
|
|
|
|
|
|
CString szFileName;
|
|
|
|
|
|
GetModuleFileName(AfxGetInstanceHandle(),szPath,sizeof(szPath));
|
|
|
|
|
|
szFileName=szPath;
|
|
|
|
|
|
int nIndex = szFileName.ReverseFind(TEXT('\\'));
|
|
|
|
|
|
szFileName = szFileName.Left(nIndex);
|
|
|
|
|
|
szFileName += TEXT("\\PlazaOptionConfig.ini");
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_bShowServerStatus = (GetPrivateProfileInt(TEXT("ServerStatus"),TEXT("ShowServerStatus"),0,szFileName) != 0);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡĿ¼
|
|
|
|
|
|
TCHAR szServerAddr[LEN_SERVER]=TEXT("");
|
|
|
|
|
|
GetCurrentDirectory(sizeof(szPath),szPath);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|
|
|
|
|
TCHAR szVideoFileName[MAX_PATH]=TEXT("");
|
|
|
|
|
|
_sntprintf_s(szVideoFileName,CountArray(szVideoFileName),TEXT("%s\\VideoOption.ini"),szPath);
|
|
|
|
|
|
m_wAVServerPort=GetPrivateProfileInt(TEXT("VideoOption"),TEXT("ServerPort"), 0,szVideoFileName);
|
|
|
|
|
|
DWORD dwAddrLen=GetPrivateProfileString(TEXT("VideoOption"),TEXT("ServerAddr"), TEXT(""), szServerAddr,LEN_SERVER,szVideoFileName);
|
|
|
|
|
|
if(dwAddrLen>0)
|
|
|
|
|
|
{
|
|
|
|
|
|
CT2CA strServerDomain(szServerAddr);
|
|
|
|
|
|
m_dwAVServerAddr=inet_addr(strServerDomain);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
m_dwAVServerAddr=0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//ֹͣ<CDA3>¼<EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::OnAttemperEngineConclude(IUnknownEx * pIUnknownEx)
|
|
|
|
|
|
{
|
|
|
|
|
|
//״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_bNeekCorrespond=true;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_pITimerEngine=NULL;
|
|
|
|
|
|
m_pIDataBaseEngine=NULL;
|
|
|
|
|
|
m_pITCPNetworkEngine=NULL;
|
|
|
|
|
|
m_pITCPSocketService=NULL;
|
|
|
|
|
|
|
|
|
|
|
|
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
SafeDeleteArray(m_pBindParameter);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_ServerListManager.ResetServerList();
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::OnEventControl(WORD wIdentifier, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
switch (wIdentifier)
|
|
|
|
|
|
{
|
|
|
|
|
|
case CT_LOAD_DB_GAME_LIST: //<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|
|
|
|
|
m_ServerListManager.DisuseKernelItem();
|
|
|
|
|
|
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_LOAD_GAME_LIST,0,NULL,0);
|
|
|
|
|
|
|
|
|
|
|
|
////<2F><><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD>
|
|
|
|
|
|
//m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_LOAD_CHECKIN_REWARD,0,NULL,0);
|
|
|
|
|
|
|
|
|
|
|
|
////<2F><><EFBFBD>صͱ<D8B5>
|
|
|
|
|
|
//m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_LOAD_BASEENSURE,0,NULL,0);
|
|
|
|
|
|
|
|
|
|
|
|
////<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
//m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_LOAD_BEGINNER,0,NULL,0);
|
|
|
|
|
|
|
|
|
|
|
|
//DBR_GP_GetAddBankConfig kGetAddBankConfig;
|
|
|
|
|
|
//kGetAddBankConfig.iIdex = 0;
|
|
|
|
|
|
//m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_LOAD_ADDRANK_CONFIG,0,&kGetAddBankConfig,sizeof(kGetAddBankConfig));
|
|
|
|
|
|
|
|
|
|
|
|
//kGetAddBankConfig.iIdex = 1;
|
|
|
|
|
|
//m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_LOAD_ADDRANK_CONFIG,0,&kGetAddBankConfig,sizeof(kGetAddBankConfig));
|
|
|
|
|
|
|
|
|
|
|
|
//kGetAddBankConfig.iIdex = 2;
|
|
|
|
|
|
//m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_LOAD_ADDRANK_CONFIG,0,&kGetAddBankConfig,sizeof(kGetAddBankConfig));
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case CT_CONNECT_CORRESPOND: //<2F><><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
tagAddressInfo * pCorrespondAddress=&m_pInitParameter->m_CorrespondAddress;
|
|
|
|
|
|
m_pITCPSocketService->Connect(pCorrespondAddress->szAddress,m_pInitParameter->m_wCorrespondPort);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
|
|
|
|
|
TCHAR szString[512]=TEXT("");
|
|
|
|
|
|
_sntprintf_s(szString,CountArray(szString),TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [ %s:%d ]"),pCorrespondAddress->szAddress,m_pInitParameter->m_wCorrespondPort);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ʾ<EFBFBD><CABE>Ϣ
|
|
|
|
|
|
CTraceService::TraceString(szString,TraceLevel_Normal);
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::OnEventAttemperData(WORD wRequestID, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//ʱ<><CAB1><EFBFBD>¼<EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::OnEventTimer(DWORD dwTimerID, WPARAM wBindParam)
|
|
|
|
|
|
{
|
|
|
|
|
|
switch (dwTimerID)
|
|
|
|
|
|
{
|
|
|
|
|
|
case IDI_LOAD_GAME_LIST: //<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|
|
|
|
|
m_ServerListManager.DisuseKernelItem();
|
|
|
|
|
|
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_LOAD_GAME_LIST,0,NULL,0);
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case IDI_CONNECT_CORRESPOND: //<2F><><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
tagAddressInfo * pCorrespondAddress=&m_pInitParameter->m_CorrespondAddress;
|
|
|
|
|
|
m_pITCPSocketService->Connect(pCorrespondAddress->szAddress,m_pInitParameter->m_wCorrespondPort);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
|
|
|
|
|
TCHAR szString[512]=TEXT("");
|
|
|
|
|
|
_sntprintf_s(szString,CountArray(szString),TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [ %s:%d ]"),pCorrespondAddress->szAddress,m_pInitParameter->m_wCorrespondPort);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ʾ<EFBFBD><CABE>Ϣ
|
|
|
|
|
|
CTraceService::TraceString(szString,TraceLevel_Normal);
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case IDI_COLLECT_ONLINE_INFO: //ͳ<><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
DBR_GP_OnLineCountInfo OnLineCountInfo;
|
|
|
|
|
|
ZeroMemory(&OnLineCountInfo,sizeof(OnLineCountInfo));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|
|
|
|
|
OnLineCountInfo.dwOnLineCountSum=m_ServerListManager.CollectOnlineInfo();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|
|
|
|
|
POSITION KindPosition=NULL;
|
|
|
|
|
|
do
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|
|
|
|
|
CGameKindItem * pGameKindItem=m_ServerListManager.EmunGameKindItem(KindPosition);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
|
|
|
|
|
if (pGameKindItem!=NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
WORD wKindIndex=OnLineCountInfo.wKindCount++;
|
|
|
|
|
|
OnLineCountInfo.OnLineCountKind[wKindIndex].wKindID=pGameKindItem->m_GameKind.wKindID;
|
|
|
|
|
|
OnLineCountInfo.OnLineCountKind[wKindIndex].dwOnLineCount=pGameKindItem->m_GameKind.dwOnLineCount;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|
|
|
|
|
if (OnLineCountInfo.wKindCount>=CountArray(OnLineCountInfo.OnLineCountKind))
|
|
|
|
|
|
{
|
|
|
|
|
|
ASSERT(FALSE);
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
} while (KindPosition!=NULL);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
WORD wHeadSize=sizeof(OnLineCountInfo)-sizeof(OnLineCountInfo.OnLineCountKind);
|
|
|
|
|
|
WORD wSendSize=wHeadSize+OnLineCountInfo.wKindCount*sizeof(OnLineCountInfo.OnLineCountKind[0]);
|
|
|
|
|
|
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_ONLINE_COUNT_INFO,0,&OnLineCountInfo,wSendSize);
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//Ӧ<><D3A6><EFBFBD>¼<EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::OnEventTCPNetworkBind(DWORD dwClientAddr, DWORD dwSocketID)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(LOWORD(dwSocketID)<m_pInitParameter->m_wMaxConnect);
|
|
|
|
|
|
if (LOWORD(dwSocketID)>=m_pInitParameter->m_wMaxConnect) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
WORD wBindIndex=LOWORD(dwSocketID);
|
|
|
|
|
|
tagBindParameter * pBindParameter=(m_pBindParameter+wBindIndex);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
|
|
|
|
|
pBindParameter->dwSocketID=dwSocketID;
|
|
|
|
|
|
pBindParameter->dwClientAddr=dwClientAddr;
|
|
|
|
|
|
pBindParameter->dwActiveTime=(DWORD)time(NULL);
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>ر<EFBFBD><D8B1>¼<EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::OnEventTCPNetworkShut(DWORD dwClientAddr, DWORD dwActiveTime, DWORD dwSocketID)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
WORD wBindIndex=LOWORD(dwSocketID);
|
|
|
|
|
|
ZeroMemory((m_pBindParameter+wBindIndex),sizeof(tagBindParameter));
|
|
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD>¼<EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::OnEventTCPNetworkRead(TCP_Command Command, VOID * pData, WORD wDataSize, DWORD dwSocketID)
|
|
|
|
|
|
{
|
|
|
|
|
|
switch (Command.wMainCmdID)
|
|
|
|
|
|
{
|
|
|
|
|
|
case MDM_GP_LOGON: //<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnTCPNetworkMainPCLogon(Command.wSubCmdID,pData,wDataSize,dwSocketID);
|
|
|
|
|
|
}
|
|
|
|
|
|
case MDM_GP_SERVER_LIST: //<2F>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnTCPNetworkMainPCServerList(Command.wSubCmdID,pData,wDataSize,dwSocketID);
|
|
|
|
|
|
}
|
|
|
|
|
|
case MDM_GP_USER_SERVICE: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnTCPNetworkMainPCUserService(Command.wSubCmdID,pData,wDataSize,dwSocketID);
|
|
|
|
|
|
}
|
|
|
|
|
|
case MDM_GP_REMOTE_SERVICE: //Զ<>̷<EFBFBD><CCB7><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnTCPNetworkMainPCRemoteService(Command.wSubCmdID,pData,wDataSize,dwSocketID);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ݿ<EFBFBD><DDBF>¼<EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::OnEventDataBase(WORD wRequestID, DWORD dwContextID, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
switch (wRequestID)
|
|
|
|
|
|
{
|
|
|
|
|
|
case DBO_GP_LOGON_SUCCESS: //<2F><>¼<EFBFBD>ɹ<EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnDBPCLogonSuccess(dwContextID,pData,wDataSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
case DBO_GP_LOGON_FAILURE: //<2F><>¼ʧ<C2BC><CAA7>
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnDBPCLogonFailure(dwContextID,pData,wDataSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
case DBO_GP_USER_INDIVIDUAL: //<2F>û<EFBFBD><C3BB><EFBFBD>Ϣ
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnDBPCUserIndividual(dwContextID,pData,wDataSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
case DBO_GP_USER_ACCOUNTINFO: //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnDBPCUserAccountInfo(dwContextID,pData,wDataSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
case DBO_GP_USER_INGAME_SERVER_ID: //<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7>
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnDBPCInGameSevrerID(dwContextID,pData,wDataSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
case DBO_GP_USER_WXSHARE_REWARD: //<>ŷ<EFBFBD><C5B7><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnDBPCUserWXShareReward(dwContextID, pData, wDataSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
case DBO_GP_OPERATE_SUCCESS: //<2F><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnDBPCOperateSuccess(dwContextID,pData,wDataSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
case DBO_GP_OPERATE_FAILURE: //<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnDBPCOperateFailure(dwContextID,pData,wDataSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
case DBO_GP_GAME_TYPE_ITEM: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnDBPCGameTypeItem(dwContextID,pData,wDataSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
case DBO_GP_GAME_KIND_ITEM: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnDBPCGameKindItem(dwContextID,pData,wDataSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
case DBO_GP_GAME_NODE_ITEM: //<2F>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnDBPCGameNodeItem(dwContextID,pData,wDataSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
case DBO_GP_GAME_PAGE_ITEM: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnDBPCGamePageItem(dwContextID,pData,wDataSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
case DBO_GP_GAME_LIST_RESULT: //<2F><><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnDBPCGameListResult(dwContextID,pData,wDataSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
case DBO_GP_GAME_RECORD_LIST: //ս<><D5BD><EFBFBD>ط<EFBFBD><D8B7>б<EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnDBPCGameRecordList(dwContextID,pData,wDataSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
case DBO_GP_GAME_RECORD_TOTAL: //ս<><D5BD><EFBFBD>б<EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnDBPCGameRecordTotal(dwContextID,pData,wDataSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
case DBO_GP_GAME_RECORD_CHILD:
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnDBPCGameRecordChild(dwContextID, pData, wDataSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
case DBO_GP_QueryInMatch:
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnDBPCQueryInMatch(dwContextID, pData, wDataSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
case DBO_GP_QueryInUnion:
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnDBPCQueryInUnion(dwContextID, pData, wDataSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
case DBO_GP_UnionList:
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnDBPCUnionList(dwContextID, pData, wDataSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
case DBO_GP_UnionGameList:
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnDBPCUnionGameList(dwContextID, pData, wDataSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
case DBO_GP_UnionRoomList:
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnDBPCUnionRoomList(dwContextID, pData, wDataSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
case DBO_GP_AutoRoomList:
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnDBPCAutoRoomList(dwContextID, pData, wDataSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>ر<EFBFBD><D8B1>¼<EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::OnEventTCPSocketShut(WORD wServiceID, BYTE cbShutReason)
|
|
|
|
|
|
{
|
|
|
|
|
|
//Э<><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
if (wServiceID==NETWORK_CORRESPOND)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|
|
|
|
|
if (m_bNeekCorrespond==true)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
|
|
|
|
|
TCHAR szDescribe[128]=TEXT("");
|
|
|
|
|
|
_sntprintf_s(szDescribe,CountArray(szDescribe),TEXT("<EFBFBD><EFBFBD>Э<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӹر<EFBFBD><EFBFBD>ˣ<EFBFBD>%ld <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"),m_pInitParameter->m_wConnectTime);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ʾ<EFBFBD><CABE>Ϣ
|
|
|
|
|
|
CTraceService::TraceString(szDescribe,TraceLevel_Warning);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|
|
|
|
|
ASSERT(m_pITimerEngine!=NULL);
|
|
|
|
|
|
m_pITimerEngine->SetTimer(IDI_CONNECT_CORRESPOND,m_pInitParameter->m_wConnectTime*1000L,1,0);
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::OnEventTCPSocketLink(WORD wServiceID, INT nErrorCode)
|
|
|
|
|
|
{
|
|
|
|
|
|
//Э<><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
if (wServiceID==NETWORK_CORRESPOND)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|
|
|
|
|
if (nErrorCode!=0)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
|
|
|
|
|
TCHAR szDescribe[128]=TEXT("");
|
|
|
|
|
|
_sntprintf_s(szDescribe,CountArray(szDescribe),TEXT("Э<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD> [ %ld ]<5D><>%ld <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"),
|
|
|
|
|
|
nErrorCode,m_pInitParameter->m_wConnectTime);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ʾ<EFBFBD><CABE>Ϣ
|
|
|
|
|
|
CTraceService::TraceString(szDescribe,TraceLevel_Warning);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|
|
|
|
|
ASSERT(m_pITimerEngine!=NULL);
|
|
|
|
|
|
m_pITimerEngine->SetTimer(IDI_CONNECT_CORRESPOND,m_pInitParameter->m_wConnectTime*1000L,1,0);
|
|
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ʾ<EFBFBD><CABE>Ϣ
|
|
|
|
|
|
CTraceService::TraceString(TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..."),TraceLevel_Normal);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CMD_CS_C_RegisterPlaza RegisterPlaza;
|
|
|
|
|
|
ZeroMemory(&RegisterPlaza,sizeof(RegisterPlaza));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
|
|
|
|
|
lstrcpyn(RegisterPlaza.szServerName,m_pInitParameter->m_szServerName,CountArray(RegisterPlaza.szServerName));
|
|
|
|
|
|
lstrcpyn(RegisterPlaza.szServerAddr,m_pInitParameter->m_ServiceAddress.szAddress,CountArray(RegisterPlaza.szServerAddr));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_pITCPSocketService->SendData(MDM_CS_REGISTER,SUB_CS_C_REGISTER_PLAZA,&RegisterPlaza,sizeof(RegisterPlaza));
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD>¼<EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::OnEventTCPSocketRead(WORD wServiceID, TCP_Command Command, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
//Э<><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
if (wServiceID==NETWORK_CORRESPOND)
|
|
|
|
|
|
{
|
|
|
|
|
|
switch (Command.wMainCmdID)
|
|
|
|
|
|
{
|
|
|
|
|
|
case MDM_CS_REGISTER: //ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnTCPSocketMainRegister(Command.wSubCmdID,pData,wDataSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
case MDM_CS_SERVICE_INFO: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnTCPSocketMainServiceInfo(Command.wSubCmdID,pData,wDataSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
case MDM_CS_REMOTE_SERVICE: //Զ<>̷<EFBFBD><CCB7><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnTCPSocketMainRemoteService(Command.wSubCmdID,pData,wDataSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
case MDM_CS_MANAGER_SERVICE: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case MDM_CS_WEB_SERVICE:
|
|
|
|
|
|
{
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(FALSE);
|
|
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//ע<><D7A2><EFBFBD>¼<EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::OnTCPSocketMainRegister(WORD wSubCmdID, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
switch (wSubCmdID)
|
|
|
|
|
|
{
|
|
|
|
|
|
case SUB_CS_S_REGISTER_FAILURE: //ע<><D7A2>ʧ<EFBFBD><CAA7>
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CMD_CS_S_RegisterFailure * pRegisterFailure=(CMD_CS_S_RegisterFailure *)pData;
|
|
|
|
|
|
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize>=(sizeof(CMD_CS_S_RegisterFailure)-sizeof(pRegisterFailure->szDescribeString)));
|
|
|
|
|
|
if (wDataSize<(sizeof(CMD_CS_S_RegisterFailure)-sizeof(pRegisterFailure->szDescribeString))) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>رմ<D8B1><D5B4><EFBFBD>
|
|
|
|
|
|
m_bNeekCorrespond=false;
|
|
|
|
|
|
m_pITCPSocketService->CloseSocket();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ʾ<EFBFBD><CABE>Ϣ
|
|
|
|
|
|
LPCTSTR pszDescribeString=pRegisterFailure->szDescribeString;
|
|
|
|
|
|
if (lstrlen(pszDescribeString)>0) CTraceService::TraceString(pszDescribeString,TraceLevel_Exception);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>¼<EFBFBD>֪ͨ
|
|
|
|
|
|
CP_ControlResult ControlResult;
|
|
|
|
|
|
ControlResult.cbSuccess=ER_FAILURE;
|
|
|
|
|
|
SendUIControlPacket(UI_CORRESPOND_RESULT,&ControlResult,sizeof(ControlResult));
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>б<EFBFBD><D0B1>¼<EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::OnTCPSocketMainServiceInfo(WORD wSubCmdID, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
switch (wSubCmdID)
|
|
|
|
|
|
{
|
|
|
|
|
|
case SUB_CS_S_SERVER_INFO: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|
|
|
|
|
m_ServerListManager.DisuseServerItem();
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case SUB_CS_S_SERVER_ONLINE: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize==sizeof(CMD_CS_S_ServerOnLine));
|
|
|
|
|
|
if (wDataSize!=sizeof(CMD_CS_S_ServerOnLine)) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CMD_CS_S_ServerOnLine * pServerOnLine=(CMD_CS_S_ServerOnLine *)pData;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD>
|
|
|
|
|
|
CGameServerItem * pGameServerItem=m_ServerListManager.SearchGameServer(pServerOnLine->wServerID);
|
|
|
|
|
|
if(pGameServerItem == NULL) return true;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
DWORD dwOldOnlineCount=0;
|
|
|
|
|
|
dwOldOnlineCount = pGameServerItem->m_GameServer.dwOnLineCount;
|
|
|
|
|
|
pGameServerItem->m_GameServer.dwOnLineCount=pServerOnLine->dwOnLineCount;
|
|
|
|
|
|
|
|
|
|
|
|
//Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD>
|
|
|
|
|
|
CGameKindItem * pGameKindItem=m_ServerListManager.SearchGameKind(pGameServerItem->m_GameServer.wKindID);
|
|
|
|
|
|
if (pGameKindItem!=NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
tagGameServer * pGameServer=&pGameServerItem->m_GameServer;
|
|
|
|
|
|
pGameKindItem->m_GameKind.dwOnLineCount -= dwOldOnlineCount;
|
|
|
|
|
|
pGameKindItem->m_GameKind.dwOnLineCount += pGameServer->dwOnLineCount;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case SUB_CS_S_SERVER_INSERT: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize%sizeof(tagGameServer)==0);
|
|
|
|
|
|
if (wDataSize%sizeof(tagGameServer)!=0) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
WORD wItemCount=wDataSize/sizeof(tagGameServer);
|
|
|
|
|
|
tagGameServer * pGameServer=(tagGameServer *)pData;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
for (WORD i=0;i<wItemCount;i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_ServerListManager.InsertGameServer(pGameServer++);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case SUB_CS_S_SERVER_MODIFY: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize==sizeof(CMD_CS_S_ServerModify));
|
|
|
|
|
|
if (wDataSize!=sizeof(CMD_CS_S_ServerModify)) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CMD_CS_S_ServerModify * pServerModify=(CMD_CS_S_ServerModify *)pData;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD>
|
|
|
|
|
|
ASSERT(m_ServerListManager.SearchGameServer(pServerModify->wServerID));
|
|
|
|
|
|
CGameServerItem * pGameServerItem=m_ServerListManager.SearchGameServer(pServerModify->wServerID);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD>
|
|
|
|
|
|
if (pGameServerItem!=NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
DWORD dwOldOnlineCount=0, dwOldFullCount=0;
|
|
|
|
|
|
dwOldOnlineCount = pGameServerItem->m_GameServer.dwOnLineCount;
|
|
|
|
|
|
dwOldFullCount = pGameServerItem->m_GameServer.dwFullCount;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>ķ<DEB8><C4B7><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
pGameServerItem->m_GameServer.wKindID=pServerModify->wKindID;
|
|
|
|
|
|
pGameServerItem->m_GameServer.wNodeID=pServerModify->wNodeID;
|
|
|
|
|
|
pGameServerItem->m_GameServer.wSortID=pServerModify->wSortID;
|
|
|
|
|
|
pGameServerItem->m_GameServer.wServerPort=pServerModify->wServerPort;
|
|
|
|
|
|
pGameServerItem->m_GameServer.dwOnLineCount=pServerModify->dwOnLineCount;
|
|
|
|
|
|
pGameServerItem->m_GameServer.dwFullCount=pServerModify->dwFullCount;
|
|
|
|
|
|
lstrcpyn(pGameServerItem->m_GameServer.szServerName,pServerModify->szServerName,CountArray(pGameServerItem->m_GameServer.szServerName));
|
|
|
|
|
|
lstrcpyn(pGameServerItem->m_GameServer.szServerAddr,pServerModify->szServerAddr,CountArray(pGameServerItem->m_GameServer.szServerAddr));
|
|
|
|
|
|
|
|
|
|
|
|
//Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD>
|
|
|
|
|
|
CGameKindItem * pGameKindItem=m_ServerListManager.SearchGameKind(pGameServerItem->m_GameServer.wKindID);
|
|
|
|
|
|
if (pGameKindItem!=NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
tagGameServer * pGameServer=&pGameServerItem->m_GameServer;
|
|
|
|
|
|
pGameKindItem->m_GameKind.dwOnLineCount -= dwOldOnlineCount;
|
|
|
|
|
|
pGameKindItem->m_GameKind.dwOnLineCount += pGameServer->dwOnLineCount;
|
|
|
|
|
|
|
|
|
|
|
|
pGameKindItem->m_GameKind.dwFullCount -= dwOldFullCount;
|
|
|
|
|
|
pGameKindItem->m_GameKind.dwFullCount += pGameServer->dwFullCount;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case SUB_CS_S_SERVER_REMOVE: //<2F><><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize==sizeof(CMD_CS_S_ServerRemove));
|
|
|
|
|
|
if (wDataSize!=sizeof(CMD_CS_S_ServerRemove)) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CMD_CS_S_ServerRemove * pServerRemove=(CMD_CS_S_ServerRemove *)pData;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_ServerListManager.DeleteGameServer(pServerRemove->wServerID);
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case SUB_CS_S_SERVER_FINISH: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|
|
|
|
|
m_ServerListManager.CleanServerItem();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CP_ControlResult ControlResult;
|
|
|
|
|
|
ControlResult.cbSuccess=ER_SUCCESS;
|
|
|
|
|
|
SendUIControlPacket(UI_CORRESPOND_RESULT,&ControlResult,sizeof(ControlResult));
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case SUB_CS_S_MATCH_INSERT: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize%sizeof(tagGameMatch)==0);
|
|
|
|
|
|
if (wDataSize%sizeof(tagGameMatch)!=0) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
WORD wItemCount=wDataSize/sizeof(tagGameMatch);
|
|
|
|
|
|
tagGameMatch * pGameMatch=(tagGameMatch *)pData;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
for (WORD i=0;i<wItemCount;i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
CGameServerItem * pGameServerItem = m_ServerListManager.SearchGameServer(pGameMatch->wServerID);
|
|
|
|
|
|
if(pGameServerItem!=NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CopyMemory(&pGameServerItem->m_GameMatch,pGameMatch++,sizeof(pGameServerItem->m_GameMatch));
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//Զ<>̷<EFBFBD><CCB7><EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::OnTCPSocketMainRemoteService(WORD wSubCmdID, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
switch (wSubCmdID)
|
|
|
|
|
|
{
|
|
|
|
|
|
case SUB_CS_S_SEARCH_CORRESPOND: //Э<><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CMD_CS_S_SearchCorrespond * pSearchCorrespond=(CMD_CS_S_SearchCorrespond *)pData;
|
|
|
|
|
|
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize<=sizeof(CMD_CS_S_SearchCorrespond));
|
|
|
|
|
|
ASSERT(wDataSize>=(sizeof(CMD_CS_S_SearchCorrespond)-sizeof(pSearchCorrespond->UserRemoteInfo)));
|
|
|
|
|
|
ASSERT(wDataSize==(sizeof(CMD_CS_S_SearchCorrespond)-sizeof(pSearchCorrespond->UserRemoteInfo)+pSearchCorrespond->wUserCount*sizeof(pSearchCorrespond->UserRemoteInfo[0])));
|
|
|
|
|
|
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
if (wDataSize>sizeof(CMD_CS_S_SearchCorrespond)) return false;
|
|
|
|
|
|
if (wDataSize<(sizeof(CMD_CS_S_SearchCorrespond)-sizeof(pSearchCorrespond->UserRemoteInfo))) return false;
|
|
|
|
|
|
if (wDataSize!=(sizeof(CMD_CS_S_SearchCorrespond)-sizeof(pSearchCorrespond->UserRemoteInfo)+pSearchCorrespond->wUserCount*sizeof(pSearchCorrespond->UserRemoteInfo[0]))) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(LOWORD(pSearchCorrespond->dwSocketID)<m_pInitParameter->m_wMaxConnect);
|
|
|
|
|
|
if ((m_pBindParameter+LOWORD(pSearchCorrespond->dwSocketID))->dwSocketID!=pSearchCorrespond->dwSocketID) return true;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CMD_GP_S_SearchCorrespond SearchCorrespond;
|
|
|
|
|
|
ZeroMemory(&SearchCorrespond,sizeof(SearchCorrespond));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
|
|
|
|
|
for (WORD i=0;i<pSearchCorrespond->wUserCount;i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>
|
|
|
|
|
|
ASSERT(SearchCorrespond.wUserCount<CountArray(SearchCorrespond.UserRemoteInfo));
|
|
|
|
|
|
if (SearchCorrespond.wUserCount>=CountArray(SearchCorrespond.UserRemoteInfo)) break;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
|
|
|
|
|
WORD wIndex=SearchCorrespond.wUserCount++;
|
|
|
|
|
|
CopyMemory(&SearchCorrespond.UserRemoteInfo[wIndex],&pSearchCorrespond->UserRemoteInfo[i],sizeof(SearchCorrespond.UserRemoteInfo[wIndex]));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
WORD wHeadSize=sizeof(SearchCorrespond)-sizeof(SearchCorrespond.UserRemoteInfo);
|
|
|
|
|
|
WORD wItemSize=sizeof(SearchCorrespond.UserRemoteInfo[0])*SearchCorrespond.wUserCount;
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(pSearchCorrespond->dwSocketID,MDM_GP_REMOTE_SERVICE,SUB_GP_S_SEARCH_CORRESPOND,&SearchCorrespond,wHeadSize+wItemSize);
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::OnTCPNetworkMainPCLogon(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID)
|
|
|
|
|
|
{
|
|
|
|
|
|
switch (wSubCmdID)
|
|
|
|
|
|
{
|
|
|
|
|
|
case SUB_GP_LOGON_ACCOUNTS: //<2F>ʺŵ<CABA>¼
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnTCPNetworkSubPCLogonAccounts(pData,wDataSize,dwSocketID);
|
|
|
|
|
|
}
|
|
|
|
|
|
case SUB_GP_REGISTER_ACCOUNTS: //<2F>ʺ<EFBFBD>ע<EFBFBD><D7A2>
|
|
|
|
|
|
{
|
|
|
|
|
|
return OnTCPNetworkSubPCRegisterAccounts(pData,wDataSize,dwSocketID);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::OnTCPNetworkMainPCServerList(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID)
|
|
|
|
|
|
{
|
|
|
|
|
|
switch (wSubCmdID)
|
|
|
|
|
|
{
|
|
|
|
|
|
case SUB_GP_GET_LIST: //<2F><>ȡ<EFBFBD>б<EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|
|
|
|
|
SendGameTypeInfo(dwSocketID);
|
|
|
|
|
|
SendGameKindInfo(dwSocketID);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|
|
|
|
|
if (m_pInitParameter->m_cbDelayList==TRUE)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|
|
|
|
|
SendGamePageInfo(dwSocketID,INVALID_WORD);
|
|
|
|
|
|
SendGameNodeInfo(dwSocketID,INVALID_WORD);
|
|
|
|
|
|
SendGameServerInfo(dwSocketID,INVALID_WORD);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3>
|
|
|
|
|
|
SendGamePageInfo(dwSocketID,0);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_LIST_FINISH);
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case SUB_GP_GET_SERVER: //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize%sizeof(WORD)==0);
|
|
|
|
|
|
if (wDataSize%sizeof(WORD)!=0) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|
|
|
|
|
UINT nKindCount=wDataSize/sizeof(WORD);
|
|
|
|
|
|
for (UINT i=0;i<nKindCount;i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
SendGameNodeInfo(dwSocketID,((WORD *)pData)[i]);
|
|
|
|
|
|
SendGamePageInfo(dwSocketID,((WORD *)pData)[i]);
|
|
|
|
|
|
SendGameServerInfo(dwSocketID,((WORD *)pData)[i]);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_SERVER_FINISH,pData,wDataSize);
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case SUB_GP_GET_ONLINE: //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CMD_GP_GetOnline * pGetOnline=(CMD_GP_GetOnline *)pData;
|
|
|
|
|
|
WORD wHeadSize=(sizeof(CMD_GP_GetOnline)-sizeof(pGetOnline->wOnLineServerID));
|
|
|
|
|
|
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT((wDataSize>=wHeadSize)&&(wDataSize==(wHeadSize+pGetOnline->wServerCount*sizeof(WORD))));
|
|
|
|
|
|
if ((wDataSize<wHeadSize)||(wDataSize!=(wHeadSize+pGetOnline->wServerCount*sizeof(WORD)))) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CMD_GP_KindOnline KindOnline;
|
|
|
|
|
|
CMD_GP_ServerOnline ServerOnline;
|
|
|
|
|
|
ZeroMemory(&KindOnline,sizeof(KindOnline));
|
|
|
|
|
|
ZeroMemory(&ServerOnline,sizeof(ServerOnline));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|
|
|
|
|
POSITION KindPosition=NULL;
|
|
|
|
|
|
do
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|
|
|
|
|
CGameKindItem * pGameKindItem=m_ServerListManager.EmunGameKindItem(KindPosition);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
|
|
|
|
|
if (pGameKindItem!=NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
WORD wKindIndex=KindOnline.wKindCount++;
|
|
|
|
|
|
KindOnline.OnLineInfoKind[wKindIndex].wKindID=pGameKindItem->m_GameKind.wKindID;
|
|
|
|
|
|
KindOnline.OnLineInfoKind[wKindIndex].dwOnLineCount=pGameKindItem->m_GameKind.dwOnLineCount;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|
|
|
|
|
if (KindOnline.wKindCount>=CountArray(KindOnline.OnLineInfoKind))
|
|
|
|
|
|
{
|
|
|
|
|
|
ASSERT(FALSE);
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
} while (KindPosition!=NULL);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|
|
|
|
|
for (WORD i=0;i<pGetOnline->wServerCount;i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|
|
|
|
|
WORD wServerID=pGetOnline->wOnLineServerID[i];
|
|
|
|
|
|
CGameServerItem * pGameServerItem=m_ServerListManager.SearchGameServer(wServerID);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
|
|
|
|
|
if (pGameServerItem!=NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
WORD wServerIndex=ServerOnline.wServerCount++;
|
|
|
|
|
|
ServerOnline.OnLineInfoServer[wServerIndex].wServerID=wServerID;
|
|
|
|
|
|
ServerOnline.OnLineInfoServer[wServerIndex].dwOnLineCount=pGameServerItem->m_GameServer.dwOnLineCount;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|
|
|
|
|
if (ServerOnline.wServerCount>=CountArray(ServerOnline.OnLineInfoServer))
|
|
|
|
|
|
{
|
|
|
|
|
|
ASSERT(FALSE);
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
if (KindOnline.wKindCount>0)
|
|
|
|
|
|
{
|
|
|
|
|
|
WORD wHeadSize=sizeof(KindOnline)-sizeof(KindOnline.OnLineInfoKind);
|
|
|
|
|
|
WORD wSendSize=wHeadSize+KindOnline.wKindCount*sizeof(KindOnline.OnLineInfoKind[0]);
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GR_KINE_ONLINE,&KindOnline,wSendSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
if (ServerOnline.wServerCount>0)
|
|
|
|
|
|
{
|
|
|
|
|
|
WORD wHeadSize=sizeof(ServerOnline)-sizeof(ServerOnline.OnLineInfoServer);
|
|
|
|
|
|
WORD wSendSize=wHeadSize+ServerOnline.wServerCount*sizeof(ServerOnline.OnLineInfoServer[0]);
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GR_SERVER_ONLINE,&ServerOnline,wSendSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case SUB_GP_GET_COLLECTION: //<2F><>ȡ<EFBFBD>ղ<EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::OnTCPNetworkMainPCUserService(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID)
|
|
|
|
|
|
{
|
|
|
|
|
|
switch (wSubCmdID)
|
|
|
|
|
|
{
|
|
|
|
|
|
case SUB_GP_GAME_RECORD_LIST://<2F><>Ϸ<EFBFBD><CFB7>¼
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize==sizeof(CMD_GP_GetGameRecord_List));
|
|
|
|
|
|
if (wDataSize!=sizeof(CMD_GP_GetGameRecord_List)) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
CMD_GP_GetGameRecord_List * pNetInfo=(CMD_GP_GetGameRecord_List *)pData;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
DBR_GP_GameRecordList kDBInfo;
|
|
|
|
|
|
ZeroMemory(&kDBInfo,sizeof(kDBInfo));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
kDBInfo.dwUserID = pNetInfo->dwUserID;
|
|
|
|
|
|
kDBInfo.wKindID = pNetInfo->wKindID;
|
|
|
|
|
|
|
|
|
|
|
|
//Ͷ<><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_GAME_RECORD_LIST,dwSocketID,&kDBInfo,sizeof(kDBInfo));
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case SUB_GP_GAME_RECORD_TOTAL://<2F><>Ϸ<EFBFBD><CFB7>¼
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize==sizeof(CMD_GP_GetGameTotalRecord));
|
|
|
|
|
|
if (wDataSize!=sizeof(CMD_GP_GetGameTotalRecord)) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
CMD_GP_GetGameTotalRecord * pNetInfo=(CMD_GP_GetGameTotalRecord *)pData;
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
DBR_GP_GetGameTotalRecord kDBInfo;
|
|
|
|
|
|
ZeroMemory(&kDBInfo,sizeof(kDBInfo));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
kDBInfo.dwUserID = pNetInfo->dwUserID;
|
|
|
|
|
|
kDBInfo.dwRecordID = pNetInfo->dwRecordID;
|
|
|
|
|
|
|
|
|
|
|
|
//Ͷ<><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_GAME_TOTAL_RECORD,dwSocketID,&kDBInfo,sizeof(kDBInfo));
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case SUB_GP_GAME_RECORD_CHILD: //<2F><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize == sizeof(CMD_GP_GetGameTotalRecord));
|
|
|
|
|
|
if (wDataSize != sizeof(CMD_GP_GetGameTotalRecord)) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
CMD_GP_GetGameTotalRecord * pNetInfo = (CMD_GP_GetGameTotalRecord *)pData;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
DBR_GP_GetGameTotalRecord kDBInfo;
|
|
|
|
|
|
ZeroMemory(&kDBInfo, sizeof(kDBInfo));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
kDBInfo.dwUserID = pNetInfo->dwUserID;
|
|
|
|
|
|
kDBInfo.dwRecordID = pNetInfo->dwRecordID;
|
|
|
|
|
|
|
|
|
|
|
|
//Ͷ<><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_GAME_CHILD_RECORD, dwSocketID, &kDBInfo, sizeof(kDBInfo));
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case SUB_GP_QUERY_PUBLIC_NOTICE://<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ֶβ<D6B6>ѯ
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize==sizeof(CMD_GP_QueryNotice));
|
|
|
|
|
|
if (wDataSize!=sizeof(CMD_GP_QueryNotice)) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
CMD_GP_QueryNotice * pNetInfo=(CMD_GP_QueryNotice *)pData;
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
DBR_GP_PublicNotic kDBInfo;
|
|
|
|
|
|
ZeroMemory(&kDBInfo,sizeof(kDBInfo));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
lstrcpyn(kDBInfo.szKeyName,pNetInfo->szKeyName,CountArray(kDBInfo.szKeyName));
|
|
|
|
|
|
|
|
|
|
|
|
//Ͷ<><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_PUBLIC_NOTIC,dwSocketID,&kDBInfo,sizeof(kDBInfo));
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case SUB_GP_MODIFY_MACHINE: //<2F><EFBFBD><F3B6A8BB><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize==sizeof(CMD_GP_ModifyMachine));
|
|
|
|
|
|
if (wDataSize!=sizeof(CMD_GP_ModifyMachine)) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
CMD_GP_ModifyMachine * pModifyMachine=(CMD_GP_ModifyMachine *)pData;
|
|
|
|
|
|
pModifyMachine->szPassword[CountArray(pModifyMachine->szPassword)-1]=0;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
DBR_GP_ModifyMachine ModifyMachine;
|
|
|
|
|
|
ZeroMemory(&ModifyMachine,sizeof(ModifyMachine));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ModifyMachine.cbBind=pModifyMachine->cbBind;
|
|
|
|
|
|
ModifyMachine.dwUserID=pModifyMachine->dwUserID;
|
|
|
|
|
|
ModifyMachine.dwClientAddr=(m_pBindParameter+LOWORD(dwSocketID))->dwClientAddr;
|
|
|
|
|
|
lstrcpyn(ModifyMachine.szPassword,pModifyMachine->szPassword,CountArray(ModifyMachine.szPassword));
|
|
|
|
|
|
lstrcpyn(ModifyMachine.szMachineID,pModifyMachine->szMachineID,CountArray(ModifyMachine.szMachineID));
|
|
|
|
|
|
|
|
|
|
|
|
//Ͷ<><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_MODIFY_MACHINE,dwSocketID,&ModifyMachine,sizeof(ModifyMachine));
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case SUB_GP_MODIFY_LOGON_PASS: //<2F><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize==sizeof(CMD_GP_ModifyLogonPass));
|
|
|
|
|
|
if (wDataSize!=sizeof(CMD_GP_ModifyLogonPass)) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
CMD_GP_ModifyLogonPass * pModifyLogonPass=(CMD_GP_ModifyLogonPass *)pData;
|
|
|
|
|
|
pModifyLogonPass->szDesPassword[CountArray(pModifyLogonPass->szDesPassword)-1]=0;
|
|
|
|
|
|
pModifyLogonPass->szScrPassword[CountArray(pModifyLogonPass->szScrPassword)-1]=0;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
DBR_GP_ModifyLogonPass ModifyLogonPass;
|
|
|
|
|
|
ZeroMemory(&ModifyLogonPass,sizeof(ModifyLogonPass));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ModifyLogonPass.dwUserID=pModifyLogonPass->dwUserID;
|
|
|
|
|
|
ModifyLogonPass.dwClientAddr=(m_pBindParameter+LOWORD(dwSocketID))->dwClientAddr;
|
|
|
|
|
|
lstrcpyn(ModifyLogonPass.szDesPassword,pModifyLogonPass->szDesPassword,CountArray(ModifyLogonPass.szDesPassword));
|
|
|
|
|
|
lstrcpyn(ModifyLogonPass.szScrPassword,pModifyLogonPass->szScrPassword,CountArray(ModifyLogonPass.szScrPassword));
|
|
|
|
|
|
|
|
|
|
|
|
//Ͷ<><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_MODIFY_LOGON_PASS,dwSocketID,&ModifyLogonPass,sizeof(ModifyLogonPass));
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case SUB_GP_QUERY_INDIVIDUAL: //<2F><>ѯ<EFBFBD><D1AF>Ϣ
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize==sizeof(CMD_GP_QueryIndividual));
|
|
|
|
|
|
if (wDataSize!=sizeof(CMD_GP_QueryIndividual)) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
CMD_GP_QueryIndividual * pQueryIndividual=(CMD_GP_QueryIndividual *)pData;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
DBR_GP_QueryIndividual QueryIndividual;
|
|
|
|
|
|
ZeroMemory(&QueryIndividual,sizeof(QueryIndividual));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
QueryIndividual.dwUserID=pQueryIndividual->dwUserID;
|
|
|
|
|
|
QueryIndividual.dwClientAddr=(m_pBindParameter+LOWORD(dwSocketID))->dwClientAddr;
|
|
|
|
|
|
|
|
|
|
|
|
//Ͷ<><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_QUERY_INDIVIDUAL,dwSocketID,&QueryIndividual,sizeof(QueryIndividual));
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case SUB_GP_QUERY_ACCOUNTINFO: //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize==sizeof(CMD_GP_QueryAccountInfo));
|
|
|
|
|
|
if (wDataSize!=sizeof(CMD_GP_QueryAccountInfo)) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
CMD_GP_QueryAccountInfo * pQueryIndividual=(CMD_GP_QueryAccountInfo *)pData;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
DBR_GP_QueryAccountInfo QueryIndividual;
|
|
|
|
|
|
ZeroMemory(&QueryIndividual,sizeof(QueryIndividual));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
QueryIndividual.dwUserID=pQueryIndividual->dwUserID;
|
|
|
|
|
|
QueryIndividual.dwClientAddr=(m_pBindParameter+LOWORD(dwSocketID))->dwClientAddr;
|
|
|
|
|
|
|
|
|
|
|
|
//Ͷ<><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_QUERY_ACCOUNTINFO,dwSocketID,&QueryIndividual,sizeof(QueryIndividual));
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case SUB_GP_QUERY_INGAME_SEVERID: //<2F><>ѯ<EFBFBD><D1AF>Ϸ״̬
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize==sizeof(CMD_GP_UserInGameServerID));
|
|
|
|
|
|
if (wDataSize!=sizeof(CMD_GP_UserInGameServerID)) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
CMD_GP_UserInGameServerID * pNetInfo=(CMD_GP_UserInGameServerID *)pData;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
DBR_GP_QueryUserInGameServerID kDBInfo;
|
|
|
|
|
|
ZeroMemory(&kDBInfo,sizeof(kDBInfo));
|
|
|
|
|
|
kDBInfo.dwUserID=pNetInfo->dwUserID;
|
|
|
|
|
|
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_USER_INGAME_SERVERID,dwSocketID,&kDBInfo,sizeof(kDBInfo));
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case SUB_GP_MODIFY_INDIVIDUAL: //<2F><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize>=sizeof(CMD_GP_ModifyIndividual));
|
|
|
|
|
|
if (wDataSize<sizeof(CMD_GP_ModifyIndividual)) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
CMD_GP_ModifyIndividual * pModifyIndividual=(CMD_GP_ModifyIndividual *)pData;
|
|
|
|
|
|
pModifyIndividual->szPassword[CountArray(pModifyIndividual->szPassword)-1]=0;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
DBR_GP_ModifyIndividual ModifyIndividual;
|
|
|
|
|
|
ZeroMemory(&ModifyIndividual,sizeof(ModifyIndividual));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
|
|
|
|
|
ModifyIndividual.dwUserID=pModifyIndividual->dwUserID;
|
|
|
|
|
|
ModifyIndividual.cbGender=pModifyIndividual->cbGender;
|
|
|
|
|
|
ModifyIndividual.dwClientAddr=(m_pBindParameter+LOWORD(dwSocketID))->dwClientAddr;
|
|
|
|
|
|
lstrcpyn(ModifyIndividual.szPassword,pModifyIndividual->szPassword,CountArray(ModifyIndividual.szPassword));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
VOID * pDataBuffer=NULL;
|
|
|
|
|
|
tagDataDescribe DataDescribe;
|
|
|
|
|
|
CRecvPacketHelper RecvPacket(pModifyIndividual+1,wDataSize-sizeof(CMD_GP_ModifyIndividual));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>չ<EFBFBD><D5B9>Ϣ
|
|
|
|
|
|
while (true)
|
|
|
|
|
|
{
|
|
|
|
|
|
pDataBuffer=RecvPacket.GetData(DataDescribe);
|
|
|
|
|
|
if (DataDescribe.wDataDescribe==DTP_NULL) break;
|
|
|
|
|
|
switch (DataDescribe.wDataDescribe)
|
|
|
|
|
|
{
|
|
|
|
|
|
case DTP_GP_UI_NICKNAME: //<2F>û<EFBFBD><C3BB>dz<EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
ASSERT(pDataBuffer!=NULL);
|
|
|
|
|
|
ASSERT(DataDescribe.wDataSize<=sizeof(ModifyIndividual.szNickName));
|
|
|
|
|
|
if (DataDescribe.wDataSize<=sizeof(ModifyIndividual.szNickName))
|
|
|
|
|
|
{
|
|
|
|
|
|
CopyMemory(&ModifyIndividual.szNickName,pDataBuffer,DataDescribe.wDataSize);
|
|
|
|
|
|
ModifyIndividual.szNickName[CountArray(ModifyIndividual.szNickName)-1]=0;
|
2026-03-01 13:48:24 +08:00
|
|
|
|
//ConvertUtf8ToGBK(ModifyIndividual.szNickName, LEN_NICKNAME);
|
2026-02-13 14:34:15 +08:00
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
case DTP_GP_UI_USER_NOTE: //<2F>û<EFBFBD><C3BB><EFBFBD>ע
|
|
|
|
|
|
{
|
|
|
|
|
|
ASSERT(pDataBuffer!=NULL);
|
|
|
|
|
|
ASSERT(DataDescribe.wDataSize<=sizeof(ModifyIndividual.szUserNote));
|
|
|
|
|
|
if (DataDescribe.wDataSize<=sizeof(ModifyIndividual.szUserNote))
|
|
|
|
|
|
{
|
|
|
|
|
|
CopyMemory(&ModifyIndividual.szUserNote,pDataBuffer,DataDescribe.wDataSize);
|
|
|
|
|
|
ModifyIndividual.szUserNote[CountArray(ModifyIndividual.szUserNote)-1]=0;
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
case DTP_GP_UI_COMPELLATION: //<2F><>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
ASSERT(pDataBuffer!=NULL);
|
|
|
|
|
|
ASSERT(DataDescribe.wDataSize<=sizeof(ModifyIndividual.szCompellation));
|
|
|
|
|
|
if (DataDescribe.wDataSize<=sizeof(ModifyIndividual.szCompellation))
|
|
|
|
|
|
{
|
|
|
|
|
|
CopyMemory(&ModifyIndividual.szCompellation,pDataBuffer,DataDescribe.wDataSize);
|
|
|
|
|
|
ModifyIndividual.szCompellation[CountArray(ModifyIndividual.szCompellation)-1]=0;
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
case DTP_GP_UI_MOBILE_PHONE: //<2F>ƶ<EFBFBD><C6B6>绰
|
|
|
|
|
|
{
|
|
|
|
|
|
ASSERT(pDataBuffer!=NULL);
|
|
|
|
|
|
ASSERT(DataDescribe.wDataSize<=sizeof(ModifyIndividual.szMobilePhone));
|
|
|
|
|
|
if (DataDescribe.wDataSize<=sizeof(ModifyIndividual.szMobilePhone))
|
|
|
|
|
|
{
|
|
|
|
|
|
CopyMemory(ModifyIndividual.szMobilePhone,pDataBuffer,DataDescribe.wDataSize);
|
|
|
|
|
|
ModifyIndividual.szMobilePhone[CountArray(ModifyIndividual.szMobilePhone)-1]=0;
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
case DTP_GP_UI_DWELLING_PLACE: //<2F><>ϵ<EFBFBD><CFB5>ַ
|
|
|
|
|
|
{
|
|
|
|
|
|
ASSERT(pDataBuffer!=NULL);
|
|
|
|
|
|
ASSERT(DataDescribe.wDataSize<=sizeof(ModifyIndividual.szDwellingPlace));
|
|
|
|
|
|
if (DataDescribe.wDataSize<=sizeof(ModifyIndividual.szDwellingPlace))
|
|
|
|
|
|
{
|
|
|
|
|
|
CopyMemory(ModifyIndividual.szDwellingPlace,pDataBuffer,DataDescribe.wDataSize);
|
|
|
|
|
|
ModifyIndividual.szDwellingPlace[CountArray(ModifyIndividual.szDwellingPlace)-1]=0;
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
case DTP_GP_UI_HEAD_HTTP: //ͷ<><CDB7><EFBFBD><EFBFBD>ַ
|
|
|
|
|
|
{
|
|
|
|
|
|
ASSERT(pDataBuffer!=NULL);
|
|
|
|
|
|
ASSERT(DataDescribe.wDataSize<=sizeof(ModifyIndividual.szHeadHttp));
|
|
|
|
|
|
if (DataDescribe.wDataSize<=sizeof(ModifyIndividual.szHeadHttp))
|
|
|
|
|
|
{
|
|
|
|
|
|
CopyMemory(ModifyIndividual.szHeadHttp,pDataBuffer,DataDescribe.wDataSize);
|
|
|
|
|
|
ModifyIndividual.szHeadHttp[CountArray(ModifyIndividual.szHeadHttp)-1]=0;
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
case DTP_GP_UI_CHANNEL: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
ASSERT(pDataBuffer!=NULL);
|
|
|
|
|
|
ASSERT(DataDescribe.wDataSize<=sizeof(ModifyIndividual.szUserChannel));
|
|
|
|
|
|
if (DataDescribe.wDataSize<=sizeof(ModifyIndividual.szUserChannel))
|
|
|
|
|
|
{
|
|
|
|
|
|
CopyMemory(ModifyIndividual.szUserChannel,pDataBuffer,DataDescribe.wDataSize);
|
|
|
|
|
|
ModifyIndividual.szUserChannel[CountArray(ModifyIndividual.szUserChannel)-1]=0;
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//Ͷ<><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_MODIFY_INDIVIDUAL,dwSocketID,&ModifyIndividual,sizeof(ModifyIndividual));
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case SUB_GP_MXSHARE_SUCCESS:
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize == sizeof(CMD_GP_WXShareSuccess));
|
|
|
|
|
|
if (wDataSize != sizeof(CMD_GP_WXShareSuccess)) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
CMD_GP_WXShareSuccess * pWXShare = (CMD_GP_WXShareSuccess *)pData;
|
|
|
|
|
|
pWXShare->szPassword[CountArray(pWXShare->szPassword) - 1] = 0;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
DBR_GP_WXShareSuccess mSuccess;
|
|
|
|
|
|
ZeroMemory(&mSuccess, sizeof(mSuccess));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
mSuccess.dwUserID = pWXShare->dwUserID;
|
|
|
|
|
|
lstrcpyn(mSuccess.szPassword, pWXShare->szPassword, CountArray(mSuccess.szPassword));
|
|
|
|
|
|
|
|
|
|
|
|
//Ͷ<><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_USER_WXSHARE_SUCCESS, dwSocketID, &mSuccess, sizeof(mSuccess));
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case SUB_GP_QUERY_USER_INFO_REQUEST: //<2F><>ѯ<EFBFBD>û<EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize==sizeof(CMD_GP_QueryUserInfoRequest));
|
|
|
|
|
|
if (wDataSize!=sizeof(CMD_GP_QueryUserInfoRequest)) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
CMD_GP_QueryUserInfoRequest * pQueryUserInfoRequest=(CMD_GP_QueryUserInfoRequest *)pData;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
DBR_GP_QueryInsureUserInfo QueryInsureUserInfo;
|
|
|
|
|
|
ZeroMemory(&QueryInsureUserInfo,sizeof(QueryInsureUserInfo));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
QueryInsureUserInfo.cbByNickName=pQueryUserInfoRequest->cbByNickName;
|
|
|
|
|
|
lstrcpyn(QueryInsureUserInfo.szNickName,pQueryUserInfoRequest->szNickName,CountArray(QueryInsureUserInfo.szNickName));
|
|
|
|
|
|
|
|
|
|
|
|
//Ͷ<><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_QUERY_USER_INFO,dwSocketID,&QueryInsureUserInfo,sizeof(QueryInsureUserInfo));
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case SUB_GP_QUERY_IN_MATCH:
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize == sizeof(CMD_GP_QUERY_IN_MATCH));
|
|
|
|
|
|
if (wDataSize != sizeof(CMD_GP_QUERY_IN_MATCH)) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ;
|
|
|
|
|
|
CMD_GP_QUERY_IN_MATCH * pNetInfo = (CMD_GP_QUERY_IN_MATCH *)pData;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|
|
|
|
|
DBR_GP_QueryInMatch kDBInfo;
|
|
|
|
|
|
ZeroMemory(&kDBInfo, sizeof(kDBInfo));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
kDBInfo.dwUserID = pNetInfo->dwUserID;
|
|
|
|
|
|
|
|
|
|
|
|
//Ͷ<><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_QUERY_IN_MATCH, dwSocketID, &kDBInfo, sizeof(kDBInfo));
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case SUB_GP_QUERY_IN_UNION:
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize == sizeof(CMD_GP_UserInUnion));
|
|
|
|
|
|
if (wDataSize != sizeof(CMD_GP_UserInUnion)) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ;
|
|
|
|
|
|
CMD_GP_UserInUnion * pNetInfo = (CMD_GP_UserInUnion *)pData;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|
|
|
|
|
DBR_GP_UserInUnion kDBInfo;
|
|
|
|
|
|
ZeroMemory(&kDBInfo, sizeof(kDBInfo));
|
|
|
|
|
|
kDBInfo.dwUserID = pNetInfo->dwUserID;
|
|
|
|
|
|
kDBInfo.dwUnionCode = pNetInfo->dwUnionCode;
|
|
|
|
|
|
|
|
|
|
|
|
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_QUERY_IN_UNION, dwSocketID, &kDBInfo, sizeof(kDBInfo));
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case SUB_GP_GET_UNION_LIST:
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize == sizeof(CMD_GP_GetUnionList));
|
|
|
|
|
|
if (wDataSize != sizeof(CMD_GP_GetUnionList)) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ;
|
|
|
|
|
|
CMD_GP_GetUnionList* pGetUnionList = (CMD_GP_GetUnionList *)pData;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|
|
|
|
|
DBR_GP_GetUnionList kDBInfo;
|
|
|
|
|
|
ZeroMemory(&kDBInfo, sizeof(kDBInfo));
|
|
|
|
|
|
kDBInfo.dwUserID = pGetUnionList->dwUserID;
|
|
|
|
|
|
|
|
|
|
|
|
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_GET_UNION_LIST, dwSocketID, &kDBInfo, sizeof(kDBInfo));
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case SUB_GP_GET_UNION_ROOM_LIST:
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize == sizeof(CMD_GR_GetUnionRoomInfo));
|
|
|
|
|
|
if (wDataSize != sizeof(CMD_GR_GetUnionRoomInfo)) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ;
|
|
|
|
|
|
CMD_GR_GetUnionRoomInfo* pGetUnionList = (CMD_GR_GetUnionRoomInfo *)pData;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|
|
|
|
|
DBR_GP_GetUnionRoomList kDBInfo;
|
|
|
|
|
|
ZeroMemory(&kDBInfo, sizeof(kDBInfo));
|
|
|
|
|
|
kDBInfo.dwUserID = pGetUnionList->dwUserID;
|
|
|
|
|
|
kDBInfo.dwUnionCode = pGetUnionList->dwUnionCode;
|
|
|
|
|
|
|
|
|
|
|
|
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_GET_UNION_ROOM_LIST, dwSocketID, &kDBInfo, sizeof(kDBInfo));
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
case SUB_GP_GET_AUTO_ROOM_LIST:
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize == sizeof(CMD_GP_GetUnionList));
|
|
|
|
|
|
if (wDataSize != sizeof(CMD_GP_GetUnionList)) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ;
|
|
|
|
|
|
CMD_GP_GetAutoRoomList* pGetAutoList = (CMD_GP_GetAutoRoomList *)pData;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|
|
|
|
|
DBR_GP_GetAutoRoomList kDBInfo;
|
|
|
|
|
|
ZeroMemory(&kDBInfo, sizeof(kDBInfo));
|
|
|
|
|
|
kDBInfo.dwUserID = pGetAutoList->dwUserID;
|
|
|
|
|
|
|
|
|
|
|
|
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_GET_AUTO_ROOM_LIST, dwSocketID, &kDBInfo, sizeof(kDBInfo));
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|
|
|
|
|
VOID CAttemperEngineSink::SendOperateFailure(DWORD dwContextID, LONG lResultCode, LPCTSTR pszDescribe)
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(pszDescribe != NULL);
|
|
|
|
|
|
if(pszDescribe == NULL) return;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CMD_GP_OperateFailure OperateFailure;
|
|
|
|
|
|
ZeroMemory(&OperateFailure,sizeof(OperateFailure));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
OperateFailure.lResultCode=lResultCode;
|
|
|
|
|
|
lstrcpyn(OperateFailure.szDescribeString,pszDescribe,CountArray(OperateFailure.szDescribeString));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
WORD wDescribe=CountStringBuffer(OperateFailure.szDescribeString);
|
|
|
|
|
|
WORD wHeadSize=sizeof(OperateFailure)-sizeof(OperateFailure.szDescribeString);
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwContextID,MDM_GP_USER_SERVICE,SUB_GP_OPERATE_FAILURE,&OperateFailure,wHeadSize+wDescribe);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
|
|
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//Զ<>̴<EFBFBD><CCB4><EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::OnTCPNetworkMainPCRemoteService(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID)
|
|
|
|
|
|
{
|
|
|
|
|
|
switch (wSubCmdID)
|
|
|
|
|
|
{
|
|
|
|
|
|
case SUB_GP_C_SEARCH_CORRESPOND: //Э<><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize==sizeof(CMD_GP_C_SearchCorrespond));
|
|
|
|
|
|
if (wDataSize!=sizeof(CMD_GP_C_SearchCorrespond)) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
CMD_GP_C_SearchCorrespond * pSearchCorrespond=(CMD_GP_C_SearchCorrespond *)pData;
|
|
|
|
|
|
pSearchCorrespond->szNickName[CountArray(pSearchCorrespond->szNickName)-1]=0;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CMD_CS_C_SearchCorrespond SearchCorrespond;
|
|
|
|
|
|
ZeroMemory(&SearchCorrespond,sizeof(SearchCorrespond));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD>
|
|
|
|
|
|
SearchCorrespond.dwSocketID=dwSocketID;
|
|
|
|
|
|
SearchCorrespond.dwClientAddr=(m_pBindParameter+LOWORD(dwSocketID))->dwClientAddr;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ұ<EFBFBD><D2B1><EFBFBD>
|
|
|
|
|
|
SearchCorrespond.dwGameID=pSearchCorrespond->dwGameID;
|
|
|
|
|
|
lstrcpyn(SearchCorrespond.szNickName,pSearchCorrespond->szNickName,CountArray(SearchCorrespond.szNickName));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_pITCPSocketService->SendData(MDM_CS_REMOTE_SERVICE,SUB_CS_C_SEARCH_CORRESPOND,&SearchCorrespond,sizeof(SearchCorrespond));
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
//<2F>ʺŵ<CABA>¼
|
|
|
|
|
|
bool CAttemperEngineSink::OnTCPNetworkSubPCLogonAccounts(VOID * pData, WORD wDataSize, DWORD dwSocketID)
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize>=sizeof(CMD_GP_LogonAccounts));
|
|
|
|
|
|
if (wDataSize<sizeof(CMD_GP_LogonAccounts))
|
|
|
|
|
|
{
|
|
|
|
|
|
if (wDataSize<sizeof(CMD_GP_LogonAccounts)-sizeof(BYTE))
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
WORD wBindIndex=LOWORD(dwSocketID);
|
|
|
|
|
|
tagBindParameter * pBindParameter=(m_pBindParameter+wBindIndex);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
CMD_GP_LogonAccounts * pLogonAccounts=(CMD_GP_LogonAccounts *)pData;
|
|
|
|
|
|
pLogonAccounts->szAccounts[CountArray(pLogonAccounts->szAccounts)-1]=0;
|
|
|
|
|
|
pLogonAccounts->szPassword[CountArray(pLogonAccounts->szPassword)-1]=0;
|
|
|
|
|
|
pLogonAccounts->szMachineID[CountArray(pLogonAccounts->szMachineID)-1]=0;
|
|
|
|
|
|
pLogonAccounts->szOpenId[CountArray(pLogonAccounts->szOpenId) - 1] = 0;
|
|
|
|
|
|
pLogonAccounts->szUnionid[CountArray(pLogonAccounts->szUnionid) - 1] = 0;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
pBindParameter->cbClientKind=CLIENT_KIND_COMPUTER;
|
|
|
|
|
|
pBindParameter->dwPlazaVersion=pLogonAccounts->dwPlazaVersion;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>汾<EFBFBD>ж<EFBFBD>
|
|
|
|
|
|
if (CheckPlazaVersion(DEVICE_TYPE_PC,pLogonAccounts->dwPlazaVersion,dwSocketID,((pLogonAccounts->cbValidateFlags&LOW_VER_VALIDATE_FLAGS)!=0))==false)
|
|
|
|
|
|
{
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
DBR_GP_LogonAccounts LogonAccounts;
|
|
|
|
|
|
ZeroMemory(&LogonAccounts,sizeof(LogonAccounts));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
LogonAccounts.pBindParameter=(m_pBindParameter+LOWORD(dwSocketID));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
LogonAccounts.dwClientAddr=(m_pBindParameter+LOWORD(dwSocketID))->dwClientAddr;
|
|
|
|
|
|
lstrcpyn(LogonAccounts.szAccounts,pLogonAccounts->szAccounts,CountArray(LogonAccounts.szAccounts));
|
|
|
|
|
|
lstrcpyn(LogonAccounts.szPassword,pLogonAccounts->szPassword,CountArray(LogonAccounts.szPassword));
|
|
|
|
|
|
lstrcpyn(LogonAccounts.szMachineID,pLogonAccounts->szMachineID,CountArray(LogonAccounts.szMachineID));
|
|
|
|
|
|
lstrcpyn(LogonAccounts.szOpenId, pLogonAccounts->szOpenId, CountArray(LogonAccounts.szOpenId));
|
|
|
|
|
|
lstrcpyn(LogonAccounts.szUnionid, pLogonAccounts->szUnionid, CountArray(LogonAccounts.szUnionid));
|
|
|
|
|
|
LogonAccounts.cbNeeValidateMBCard=(pLogonAccounts->cbValidateFlags&MB_VALIDATE_FLAGS);
|
|
|
|
|
|
|
|
|
|
|
|
//Ͷ<><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_LOGON_ACCOUNTS,dwSocketID,&LogonAccounts,sizeof(LogonAccounts));
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>ʺ<EFBFBD>ע<EFBFBD><D7A2>
|
|
|
|
|
|
bool CAttemperEngineSink::OnTCPNetworkSubPCRegisterAccounts(VOID * pData, WORD wDataSize, DWORD dwSocketID)
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize>=sizeof(CMD_GP_RegisterAccounts));
|
|
|
|
|
|
if (wDataSize<sizeof(CMD_GP_RegisterAccounts))
|
|
|
|
|
|
{
|
|
|
|
|
|
if (wDataSize<sizeof(CMD_GP_RegisterAccounts)-sizeof(BYTE))
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
WORD wBindIndex=LOWORD(dwSocketID);
|
|
|
|
|
|
tagBindParameter * pBindParameter=(m_pBindParameter+wBindIndex);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
CMD_GP_RegisterAccounts * pRegisterAccounts=(CMD_GP_RegisterAccounts *)pData;
|
2026-03-01 13:48:24 +08:00
|
|
|
|
//ConvertUtf8ToGBK(pRegisterAccounts->szNickName,LEN_NICKNAME);
|
2026-02-13 14:34:15 +08:00
|
|
|
|
pRegisterAccounts->szOpenId[CountArray(pRegisterAccounts->szOpenId) - 1] = 0;
|
|
|
|
|
|
pRegisterAccounts->szUnionid[CountArray(pRegisterAccounts->szUnionid) - 1] = 0;
|
|
|
|
|
|
pRegisterAccounts->szAccounts[CountArray(pRegisterAccounts->szAccounts)-1]=0;
|
|
|
|
|
|
pRegisterAccounts->szNickName[CountArray(pRegisterAccounts->szNickName)-1]=0;
|
|
|
|
|
|
pRegisterAccounts->szSpreader[CountArray(pRegisterAccounts->szSpreader)-1]=0;
|
|
|
|
|
|
pRegisterAccounts->szMachineID[CountArray(pRegisterAccounts->szMachineID)-1]=0;
|
|
|
|
|
|
pRegisterAccounts->szLogonPass[CountArray(pRegisterAccounts->szLogonPass)-1]=0;
|
|
|
|
|
|
pRegisterAccounts->szInsurePass[CountArray(pRegisterAccounts->szInsurePass)-1]=0;
|
|
|
|
|
|
pRegisterAccounts->szPassPortID[CountArray(pRegisterAccounts->szPassPortID)-1]=0;
|
|
|
|
|
|
pRegisterAccounts->szCompellation[CountArray(pRegisterAccounts->szCompellation)-1]=0;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
pBindParameter->cbClientKind=CLIENT_KIND_COMPUTER;
|
|
|
|
|
|
pBindParameter->dwPlazaVersion=pRegisterAccounts->dwPlazaVersion;
|
|
|
|
|
|
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD>汾
|
|
|
|
|
|
if (CheckPlazaVersion(DEVICE_TYPE_PC,pRegisterAccounts->dwPlazaVersion,dwSocketID,((pRegisterAccounts->cbValidateFlags&LOW_VER_VALIDATE_FLAGS)!=0))==false)
|
|
|
|
|
|
{
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
DBR_GP_RegisterAccounts RegisterAccounts;
|
|
|
|
|
|
ZeroMemory(&RegisterAccounts,sizeof(RegisterAccounts));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
RegisterAccounts.pBindParameter=(m_pBindParameter+LOWORD(dwSocketID));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
RegisterAccounts.wFaceID=pRegisterAccounts->wFaceID;
|
|
|
|
|
|
RegisterAccounts.cbGender=pRegisterAccounts->cbGender;
|
|
|
|
|
|
RegisterAccounts.dwClientAddr=(m_pBindParameter+LOWORD(dwSocketID))->dwClientAddr;
|
|
|
|
|
|
lstrcpyn(RegisterAccounts.szOpenId, pRegisterAccounts->szOpenId, CountArray(RegisterAccounts.szOpenId));
|
|
|
|
|
|
lstrcpyn(RegisterAccounts.szUnionid, pRegisterAccounts->szUnionid, CountArray(RegisterAccounts.szUnionid));
|
|
|
|
|
|
lstrcpyn(RegisterAccounts.szAccounts,pRegisterAccounts->szAccounts,CountArray(RegisterAccounts.szAccounts));
|
|
|
|
|
|
lstrcpyn(RegisterAccounts.szNickName,pRegisterAccounts->szNickName,CountArray(RegisterAccounts.szNickName));
|
|
|
|
|
|
lstrcpyn(RegisterAccounts.szSpreader,pRegisterAccounts->szSpreader,CountArray(RegisterAccounts.szSpreader));
|
|
|
|
|
|
lstrcpyn(RegisterAccounts.szMachineID,pRegisterAccounts->szMachineID,CountArray(RegisterAccounts.szMachineID));
|
|
|
|
|
|
lstrcpyn(RegisterAccounts.szLogonPass,pRegisterAccounts->szLogonPass,CountArray(RegisterAccounts.szLogonPass));
|
|
|
|
|
|
lstrcpyn(RegisterAccounts.szInsurePass,pRegisterAccounts->szInsurePass,CountArray(RegisterAccounts.szInsurePass));
|
|
|
|
|
|
lstrcpyn(RegisterAccounts.szPassPortID,pRegisterAccounts->szPassPortID,CountArray(RegisterAccounts.szPassPortID));
|
|
|
|
|
|
lstrcpyn(RegisterAccounts.szCompellation,pRegisterAccounts->szCompellation,CountArray(RegisterAccounts.szCompellation));
|
|
|
|
|
|
|
|
|
|
|
|
//Ͷ<><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_REGISTER_ACCOUNTS,dwSocketID,&RegisterAccounts,sizeof(RegisterAccounts));
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>¼<EFBFBD>ɹ<EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::OnDBPCLogonSuccess(DWORD dwContextID, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(LOWORD(dwContextID)<m_pInitParameter->m_wMaxConnect);
|
|
|
|
|
|
if ((m_pBindParameter+LOWORD(dwContextID))->dwSocketID!=dwContextID) return true;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
BYTE cbDataBuffer[SOCKET_TCP_PACKET];
|
|
|
|
|
|
DBO_GP_LogonSuccess * pDBOLogonSuccess=(DBO_GP_LogonSuccess *)pData;
|
|
|
|
|
|
CMD_GP_LogonSuccess * pCMDLogonSuccess=(CMD_GP_LogonSuccess *)cbDataBuffer;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>
|
|
|
|
|
|
WORD wHeadSize=sizeof(CMD_GP_LogonSuccess);
|
|
|
|
|
|
CSendPacketHelper SendPacket(cbDataBuffer+wHeadSize,sizeof(cbDataBuffer)-wHeadSize);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
|
|
|
|
|
ZeroMemory(pCMDLogonSuccess,sizeof(CMD_GP_LogonSuccess));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
pCMDLogonSuccess->wFaceID=pDBOLogonSuccess->wFaceID;
|
|
|
|
|
|
pCMDLogonSuccess->cbGender=pDBOLogonSuccess->cbGender;
|
|
|
|
|
|
pCMDLogonSuccess->dwGameID=pDBOLogonSuccess->dwGameID;
|
|
|
|
|
|
pCMDLogonSuccess->dwUserID=pDBOLogonSuccess->dwUserID;
|
|
|
|
|
|
pCMDLogonSuccess->dwCustomID=pDBOLogonSuccess->dwCustomID;
|
|
|
|
|
|
pCMDLogonSuccess->dwUserMedal=pDBOLogonSuccess->dwUserMedal;
|
|
|
|
|
|
pCMDLogonSuccess->dwExperience=pDBOLogonSuccess->dwExperience;
|
|
|
|
|
|
pCMDLogonSuccess->dwLoveLiness=pDBOLogonSuccess->dwLoveLiness;
|
|
|
|
|
|
pCMDLogonSuccess->cbWXShareTimes = pDBOLogonSuccess->cbWXShareTimes;
|
|
|
|
|
|
pCMDLogonSuccess->dwSpreaderID=pDBOLogonSuccess->dwSpreaderID;
|
|
|
|
|
|
pCMDLogonSuccess->cbMoorMachine=pDBOLogonSuccess->cbMoorMachine;
|
|
|
|
|
|
pCMDLogonSuccess->cbInsureEnabled=pDBOLogonSuccess->cbInsureEnabled;
|
|
|
|
|
|
lstrcpyn(pCMDLogonSuccess->szAccounts,pDBOLogonSuccess->szAccounts,CountArray(pCMDLogonSuccess->szAccounts));
|
|
|
|
|
|
lstrcpyn(pCMDLogonSuccess->szNickName,pDBOLogonSuccess->szNickName,CountArray(pCMDLogonSuccess->szNickName));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>û<EFBFBD><C3BB>ɼ<EFBFBD>
|
|
|
|
|
|
pCMDLogonSuccess->lUserScore=pDBOLogonSuccess->lUserScore;
|
|
|
|
|
|
pCMDLogonSuccess->lUserInsure=pDBOLogonSuccess->lUserInsure;
|
|
|
|
|
|
pCMDLogonSuccess->lGrade = pDBOLogonSuccess->lGrade;
|
|
|
|
|
|
pCMDLogonSuccess->isLottery = pDBOLogonSuccess->isLottery;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
pCMDLogonSuccess->cbShowServerStatus=m_bShowServerStatus?1:0;
|
|
|
|
|
|
|
|
|
|
|
|
////<2F><>Ա<EFBFBD><D4B1>Ϣ
|
|
|
|
|
|
//if (pDBOLogonSuccess->cbMemberOrder!=0)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// DTP_GP_MemberInfo MemberInfo;
|
|
|
|
|
|
// ZeroMemory(&MemberInfo,sizeof(MemberInfo));
|
|
|
|
|
|
// MemberInfo.cbMemberOrder=pDBOLogonSuccess->cbMemberOrder;
|
|
|
|
|
|
// MemberInfo.MemberOverDate=pDBOLogonSuccess->MemberOverDate;
|
|
|
|
|
|
// SendPacket.AddPacket(&MemberInfo,sizeof(MemberInfo),DTP_GP_MEMBER_INFO);
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
////<2F><><EFBFBD><EFBFBD>ǩ<EFBFBD><C7A9>
|
|
|
|
|
|
//if (pDBOLogonSuccess->szUnderWrite[0]!=0)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// SendPacket.AddPacket(pDBOLogonSuccess->szUnderWrite,CountStringBuffer(pDBOLogonSuccess->szUnderWrite),DTP_GP_UNDER_WRITE);
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>¼<EFBFBD>ɹ<EFBFBD>
|
|
|
|
|
|
WORD wSendSize=SendPacket.GetDataSize()+sizeof(CMD_GP_LogonSuccess);
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwContextID,MDM_GP_LOGON,SUB_GP_LOGON_SUCCESS,cbDataBuffer,wSendSize);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|
|
|
|
|
if (m_pInitParameter->m_cbDelayList==TRUE)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|
|
|
|
|
SendGameTypeInfo(dwContextID);
|
|
|
|
|
|
SendGameKindInfo(dwContextID);
|
|
|
|
|
|
SendGamePageInfo(dwContextID,INVALID_WORD);
|
|
|
|
|
|
SendGameNodeInfo(dwContextID,INVALID_WORD);
|
|
|
|
|
|
SendGameServerInfo(dwContextID,INVALID_WORD);
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwContextID,MDM_GP_SERVER_LIST,SUB_GP_LIST_FINISH);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
SendGameTypeInfo(dwContextID);
|
|
|
|
|
|
SendGameKindInfo(dwContextID);
|
|
|
|
|
|
SendGamePageInfo(dwContextID,0);
|
|
|
|
|
|
SendGameServerInfo(dwContextID,INVALID_WORD);
|
|
|
|
|
|
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwContextID,MDM_GP_SERVER_LIST,SUB_GP_LIST_FINISH);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
////<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|
|
|
|
|
//SendUserSignupInfo(dwContextID,pDBOLogonSuccess->wSignupCount,pDBOLogonSuccess->SignupMatchInfo);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
|
|
|
|
|
|
CMD_GP_LogonFinish LogonFinish;
|
|
|
|
|
|
ZeroMemory(&LogonFinish,sizeof(LogonFinish));
|
|
|
|
|
|
LogonFinish.wIntermitTime=m_pInitParameter->m_wIntermitTime;
|
|
|
|
|
|
LogonFinish.wOnLineCountTime=m_pInitParameter->m_wOnLineCountTime;
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwContextID,MDM_GP_LOGON,SUB_GP_LOGON_FINISH,&LogonFinish,sizeof(LogonFinish));
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>¼ʧ<C2BC><CAA7>
|
|
|
|
|
|
bool CAttemperEngineSink::OnDBPCLogonFailure(DWORD dwContextID, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(LOWORD(dwContextID)<m_pInitParameter->m_wMaxConnect);
|
|
|
|
|
|
if ((m_pBindParameter+LOWORD(dwContextID))->dwSocketID!=dwContextID) return true;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CMD_GP_LogonFailure LogonFailure;
|
|
|
|
|
|
ZeroMemory(&LogonFailure,sizeof(LogonFailure));
|
|
|
|
|
|
DBO_GP_LogonFailure * pLogonFailure=(DBO_GP_LogonFailure *)pData;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
LogonFailure.lResultCode=pLogonFailure->lResultCode;
|
|
|
|
|
|
lstrcpyn(LogonFailure.szDescribeString,pLogonFailure->szDescribeString,CountArray(LogonFailure.szDescribeString));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
WORD wStringSize=CountStringBuffer(LogonFailure.szDescribeString);
|
|
|
|
|
|
WORD wSendSize=sizeof(LogonFailure)-sizeof(LogonFailure.szDescribeString)+wStringSize;
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwContextID,MDM_GP_LOGON,SUB_GP_LOGON_FAILURE,&LogonFailure,wSendSize);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD>Ϣ
|
|
|
|
|
|
bool CAttemperEngineSink::OnDBPCUserIndividual(DWORD dwContextID, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(LOWORD(dwContextID)<m_pInitParameter->m_wMaxConnect);
|
|
|
|
|
|
if ((m_pBindParameter+LOWORD(dwContextID))->dwSocketID!=dwContextID) return true;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
BYTE cbDataBuffer[SOCKET_TCP_PACKET];
|
|
|
|
|
|
DBO_GP_UserIndividual * pDBOUserIndividual=(DBO_GP_UserIndividual *)pData;
|
|
|
|
|
|
CMD_GP_UserIndividual * pCMDUserIndividual=(CMD_GP_UserIndividual *)cbDataBuffer;
|
|
|
|
|
|
CSendPacketHelper SendPacket(cbDataBuffer+sizeof(CMD_GP_UserIndividual),sizeof(cbDataBuffer)-sizeof(CMD_GP_UserIndividual));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
|
|
|
|
|
ZeroMemory(pCMDUserIndividual,sizeof(CMD_GP_UserIndividual));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
pCMDUserIndividual->dwUserID=pDBOUserIndividual->dwUserID;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD>Ϣ
|
|
|
|
|
|
if (pDBOUserIndividual->szUserNote[0]!=0)
|
|
|
|
|
|
{
|
|
|
|
|
|
WORD wBufferSize=CountStringBuffer(pDBOUserIndividual->szUserNote);
|
|
|
|
|
|
SendPacket.AddPacket(pDBOUserIndividual->szUserNote,wBufferSize,DTP_GP_UI_USER_NOTE);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>
|
|
|
|
|
|
if (pDBOUserIndividual->szCompellation[0]!=0)
|
|
|
|
|
|
{
|
|
|
|
|
|
WORD wBufferSize=CountStringBuffer(pDBOUserIndividual->szCompellation);
|
|
|
|
|
|
SendPacket.AddPacket(pDBOUserIndividual->szCompellation,wBufferSize,DTP_GP_UI_COMPELLATION);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>绰<EFBFBD><E7BBB0><EFBFBD><EFBFBD>
|
|
|
|
|
|
if (pDBOUserIndividual->szSeatPhone[0]!=0)
|
|
|
|
|
|
{
|
|
|
|
|
|
WORD wBufferSize=CountStringBuffer(pDBOUserIndividual->szSeatPhone);
|
|
|
|
|
|
SendPacket.AddPacket(pDBOUserIndividual->szSeatPhone,wBufferSize,DTP_GP_UI_SEAT_PHONE);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>ƶ<EFBFBD><C6B6>绰
|
|
|
|
|
|
if (pDBOUserIndividual->szMobilePhone[0]!=0)
|
|
|
|
|
|
{
|
|
|
|
|
|
WORD wBufferSize=CountStringBuffer(pDBOUserIndividual->szMobilePhone);
|
|
|
|
|
|
SendPacket.AddPacket(pDBOUserIndividual->szMobilePhone,wBufferSize,DTP_GP_UI_MOBILE_PHONE);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>
|
|
|
|
|
|
if (pDBOUserIndividual->szQQ[0]!=0)
|
|
|
|
|
|
{
|
|
|
|
|
|
WORD wBufferSize=CountStringBuffer(pDBOUserIndividual->szQQ);
|
|
|
|
|
|
SendPacket.AddPacket(pDBOUserIndividual->szQQ,wBufferSize,DTP_GP_UI_QQ);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD>
|
|
|
|
|
|
if (pDBOUserIndividual->szEMail[0]!=0)
|
|
|
|
|
|
{
|
|
|
|
|
|
WORD wBufferSize=CountStringBuffer(pDBOUserIndividual->szEMail);
|
|
|
|
|
|
SendPacket.AddPacket(pDBOUserIndividual->szEMail,wBufferSize,DTP_GP_UI_EMAIL);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ϵ<EFBFBD><CFB5>ַ
|
|
|
|
|
|
if (pDBOUserIndividual->szDwellingPlace[0]!=0)
|
|
|
|
|
|
{
|
|
|
|
|
|
WORD wBufferSize=CountStringBuffer(pDBOUserIndividual->szDwellingPlace);
|
|
|
|
|
|
SendPacket.AddPacket(pDBOUserIndividual->szDwellingPlace,wBufferSize,DTP_GP_UI_DWELLING_PLACE);
|
|
|
|
|
|
}
|
|
|
|
|
|
//ͷ<><CDB7>http
|
|
|
|
|
|
if (pDBOUserIndividual->szHeadHttp[0]!=0)
|
|
|
|
|
|
{
|
|
|
|
|
|
WORD wBufferSize=CountStringBuffer(pDBOUserIndividual->szHeadHttp);
|
|
|
|
|
|
SendPacket.AddPacket(pDBOUserIndividual->szHeadHttp,wBufferSize,DTP_GP_UI_HEAD_HTTP);
|
|
|
|
|
|
}
|
|
|
|
|
|
//IP
|
|
|
|
|
|
if (pDBOUserIndividual->szLogonIP[0]!=0)
|
|
|
|
|
|
{
|
|
|
|
|
|
WORD wBufferSize=CountStringBuffer(pDBOUserIndividual->szLogonIP);
|
|
|
|
|
|
SendPacket.AddPacket(pDBOUserIndividual->szLogonIP,wBufferSize,DTP_GP_UI_IP);
|
|
|
|
|
|
}
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
if (pDBOUserIndividual->szUserChannel[0]!=0)
|
|
|
|
|
|
{
|
|
|
|
|
|
WORD wBufferSize=CountStringBuffer(pDBOUserIndividual->szUserChannel);
|
|
|
|
|
|
SendPacket.AddPacket(pDBOUserIndividual->szUserChannel,wBufferSize,DTP_GP_UI_CHANNEL);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
WORD wSendSize=sizeof(CMD_GP_UserIndividual)+SendPacket.GetDataSize();
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwContextID,MDM_GP_USER_SERVICE,SUB_GP_USER_INDIVIDUAL,cbDataBuffer,wSendSize);
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
bool CAttemperEngineSink::OnDBPCUserAccountInfo(DWORD dwContextID, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(LOWORD(dwContextID)<m_pInitParameter->m_wMaxConnect);
|
|
|
|
|
|
if ((m_pBindParameter+LOWORD(dwContextID))->dwSocketID!=dwContextID) return true;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
DBO_GP_UserAccountInfo * pDBOUserIndividual=(DBO_GP_UserAccountInfo *)pData;
|
|
|
|
|
|
CMD_GP_UserAccountInfo kCMDUserIndividual;
|
|
|
|
|
|
CopyMemory(&kCMDUserIndividual,pDBOUserIndividual,sizeof(kCMDUserIndividual));
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwContextID,MDM_GP_USER_SERVICE,SUB_GP_QUERY_ACCOUNTINFO,&kCMDUserIndividual,sizeof(kCMDUserIndividual));
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool CAttemperEngineSink::OnDBPCInGameSevrerID(DWORD dwContextID, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(LOWORD(dwContextID)<m_pInitParameter->m_wMaxConnect);
|
|
|
|
|
|
if ((m_pBindParameter+LOWORD(dwContextID))->dwSocketID!=dwContextID) return true;
|
|
|
|
|
|
|
|
|
|
|
|
DBO_GP_UserInGameServerID * pDBInfo=(DBO_GP_UserInGameServerID *)pData;
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CMD_GP_InGameSeverID kNetInfo;
|
|
|
|
|
|
ZeroMemory(&kNetInfo,sizeof(kNetInfo));
|
|
|
|
|
|
|
|
|
|
|
|
kNetInfo.LockKindID=pDBInfo->LockKindID;
|
|
|
|
|
|
kNetInfo.LockServerID=pDBInfo->LockServerID;
|
|
|
|
|
|
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwContextID,MDM_GP_USER_SERVICE,SUB_GP_QUERY_INGAME_SEVERID,&kNetInfo,sizeof(kNetInfo));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<>ŷ<EFBFBD><C5B7><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::OnDBPCUserWXShareReward(DWORD dwContextID, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(LOWORD(dwContextID) < m_pInitParameter->m_wMaxConnect);
|
|
|
|
|
|
if ((m_pBindParameter + LOWORD(dwContextID))->dwSocketID != dwContextID) return true;
|
|
|
|
|
|
|
|
|
|
|
|
DBO_GP_WXShareReward * pDBInfo = (DBO_GP_WXShareReward *)pData;
|
|
|
|
|
|
|
|
|
|
|
|
if (pDBInfo->cbFKCount>0)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CMD_GP_WXShareReward mReward;
|
|
|
|
|
|
ZeroMemory(&mReward, sizeof(mReward));
|
|
|
|
|
|
|
|
|
|
|
|
mReward.cbFKCount = pDBInfo->cbFKCount;
|
|
|
|
|
|
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwContextID, MDM_GP_USER_SERVICE, SUB_GP_MXSHARE_REWARD, &mReward, sizeof(mReward));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::OnDBPCOperateSuccess(DWORD dwContextID, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(LOWORD(dwContextID)<m_pInitParameter->m_wMaxConnect);
|
|
|
|
|
|
if ((m_pBindParameter+LOWORD(dwContextID))->dwSocketID!=dwContextID) return true;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CMD_GP_OperateSuccess OperateSuccess;
|
|
|
|
|
|
ZeroMemory(&OperateSuccess,sizeof(OperateSuccess));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
DBO_GP_OperateSuccess * pOperateSuccess=(DBO_GP_OperateSuccess *)pData;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
OperateSuccess.lResultCode=pOperateSuccess->lResultCode;
|
|
|
|
|
|
lstrcpyn(OperateSuccess.szDescribeString,pOperateSuccess->szDescribeString,CountArray(OperateSuccess.szDescribeString));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
WORD wDescribe=CountStringBuffer(OperateSuccess.szDescribeString);
|
|
|
|
|
|
WORD wHeadSize=sizeof(OperateSuccess)-sizeof(OperateSuccess.szDescribeString);
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwContextID,MDM_GP_USER_SERVICE,SUB_GP_OPERATE_SUCCESS,&OperateSuccess,wHeadSize+wDescribe);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|
|
|
|
|
bool CAttemperEngineSink::OnDBPCOperateFailure(DWORD dwContextID, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(LOWORD(dwContextID)<m_pInitParameter->m_wMaxConnect);
|
|
|
|
|
|
if ((m_pBindParameter+LOWORD(dwContextID))->dwSocketID!=dwContextID) return true;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CMD_GP_OperateFailure OperateFailure;
|
|
|
|
|
|
ZeroMemory(&OperateFailure,sizeof(OperateFailure));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
DBO_GP_OperateFailure * pOperateFailure=(DBO_GP_OperateFailure *)pData;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
OperateFailure.lResultCode=pOperateFailure->lResultCode;
|
|
|
|
|
|
lstrcpyn(OperateFailure.szDescribeString,pOperateFailure->szDescribeString,CountArray(OperateFailure.szDescribeString));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
WORD wDescribe=CountStringBuffer(OperateFailure.szDescribeString);
|
|
|
|
|
|
WORD wHeadSize=sizeof(OperateFailure)-sizeof(OperateFailure.szDescribeString);
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwContextID,MDM_GP_USER_SERVICE,SUB_GP_OPERATE_FAILURE,&OperateFailure,wHeadSize+wDescribe);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::OnDBPCGameTypeItem(DWORD dwContextID, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize%sizeof(DBO_GP_GameType)==0);
|
|
|
|
|
|
if (wDataSize%sizeof(DBO_GP_GameType)!=0) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
WORD wItemCount=wDataSize/sizeof(DBO_GP_GameType);
|
|
|
|
|
|
DBO_GP_GameType * pGameType=(DBO_GP_GameType *)pData;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
for (WORD i=0;i<wItemCount;i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
tagGameType GameType;
|
|
|
|
|
|
ZeroMemory(&GameType,sizeof(GameType));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
GameType.wTypeID=(pGameType+i)->wTypeID;
|
|
|
|
|
|
GameType.wJoinID=(pGameType+i)->wJoinID;
|
|
|
|
|
|
GameType.wSortID=(pGameType+i)->wSortID;
|
|
|
|
|
|
lstrcpyn(GameType.szTypeName,(pGameType+i)->szTypeName,CountArray(GameType.szTypeName));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|
|
|
|
|
m_ServerListManager.InsertGameType(&GameType);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::OnDBPCGameKindItem(DWORD dwContextID, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize%sizeof(DBO_GP_GameKind)==0);
|
|
|
|
|
|
if (wDataSize%sizeof(DBO_GP_GameKind)!=0) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
WORD wItemCount=wDataSize/sizeof(DBO_GP_GameKind);
|
|
|
|
|
|
DBO_GP_GameKind * pGameKind=(DBO_GP_GameKind *)pData;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
for (WORD i=0;i<wItemCount;i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
tagGameKind GameKind;
|
|
|
|
|
|
ZeroMemory(&GameKind,sizeof(GameKind));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
GameKind.wTypeID=(pGameKind+i)->wTypeID;
|
|
|
|
|
|
GameKind.wJoinID=(pGameKind+i)->wJoinID;
|
|
|
|
|
|
GameKind.wSortID=(pGameKind+i)->wSortID;
|
|
|
|
|
|
GameKind.wKindID=(pGameKind+i)->wKindID;
|
|
|
|
|
|
GameKind.wGameID=(pGameKind+i)->wGameID;
|
|
|
|
|
|
GameKind.dwOnLineCount=m_ServerListManager.CollectOnlineInfo((pGameKind+i)->wKindID);
|
|
|
|
|
|
lstrcpyn(GameKind.szKindName,(pGameKind+i)->szKindName,CountArray(GameKind.szKindName));
|
|
|
|
|
|
lstrcpyn(GameKind.szProcessName,(pGameKind+i)->szProcessName,CountArray(GameKind.szProcessName));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|
|
|
|
|
m_ServerListManager.InsertGameKind(&GameKind);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>Ϸ<EFBFBD>ڵ<EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::OnDBPCGameNodeItem(DWORD dwContextID, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize%sizeof(DBO_GP_GameNode)==0);
|
|
|
|
|
|
if (wDataSize%sizeof(DBO_GP_GameNode)!=0) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
WORD wItemCount=wDataSize/sizeof(DBO_GP_GameNode);
|
|
|
|
|
|
DBO_GP_GameNode * pGameNode=(DBO_GP_GameNode *)pData;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
for (WORD i=0;i<wItemCount;i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
tagGameNode GameNode;
|
|
|
|
|
|
ZeroMemory(&GameNode,sizeof(GameNode));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
GameNode.wKindID=(pGameNode+i)->wKindID;
|
|
|
|
|
|
GameNode.wJoinID=(pGameNode+i)->wJoinID;
|
|
|
|
|
|
GameNode.wSortID=(pGameNode+i)->wSortID;
|
|
|
|
|
|
GameNode.wNodeID=(pGameNode+i)->wNodeID;
|
|
|
|
|
|
lstrcpyn(GameNode.szNodeName,(pGameNode+i)->szNodeName,CountArray(GameNode.szNodeName));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|
|
|
|
|
m_ServerListManager.InsertGameNode(&GameNode);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::OnDBPCGamePageItem(DWORD dwContextID, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize%sizeof(DBO_GP_GamePage)==0);
|
|
|
|
|
|
if (wDataSize%sizeof(DBO_GP_GamePage)!=0) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
WORD wItemCount=wDataSize/sizeof(DBO_GP_GamePage);
|
|
|
|
|
|
DBO_GP_GamePage * pGamePage=(DBO_GP_GamePage *)pData;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
for (WORD i=0;i<wItemCount;i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
tagGamePage GamePage;
|
|
|
|
|
|
ZeroMemory(&GamePage,sizeof(GamePage));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
GamePage.wKindID=(pGamePage+i)->wKindID;
|
|
|
|
|
|
GamePage.wNodeID=(pGamePage+i)->wNodeID;
|
|
|
|
|
|
GamePage.wSortID=(pGamePage+i)->wSortID;
|
|
|
|
|
|
GamePage.wPageID=(pGamePage+i)->wPageID;
|
|
|
|
|
|
GamePage.wOperateType=(pGamePage+i)->wOperateType;
|
|
|
|
|
|
lstrcpyn(GamePage.szDisplayName,(pGamePage+i)->szDisplayName,CountArray(GamePage.szDisplayName));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|
|
|
|
|
m_ServerListManager.InsertGamePage(&GamePage);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>Ϸ<EFBFBD>б<EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::OnDBPCGameListResult(DWORD dwContextID, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(wDataSize==sizeof(DBO_GP_GameListResult));
|
|
|
|
|
|
if (wDataSize!=sizeof(DBO_GP_GameListResult)) return false;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
DBO_GP_GameListResult * pGameListResult=(DBO_GP_GameListResult *)pData;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
|
|
|
|
|
if (pGameListResult->cbSuccess==TRUE)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|
|
|
|
|
m_ServerListManager.CleanKernelItem();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>¼<EFBFBD>֪ͨ
|
|
|
|
|
|
CP_ControlResult ControlResult;
|
|
|
|
|
|
ControlResult.cbSuccess=ER_SUCCESS;
|
|
|
|
|
|
SendUIControlPacket(UI_LOAD_DB_LIST_RESULT,&ControlResult,sizeof(ControlResult));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|
|
|
|
|
ASSERT(m_pITimerEngine!=NULL);
|
|
|
|
|
|
m_pITimerEngine->SetTimer(IDI_LOAD_GAME_LIST,m_pInitParameter->m_wLoadListTime*1000L,1,0);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
|
|
|
|
|
TCHAR szDescribe[128]=TEXT("");
|
|
|
|
|
|
_sntprintf_s(szDescribe,CountArray(szDescribe),TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>%ld <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>"),m_pInitParameter->m_wReLoadListTime);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ʾ<EFBFBD><CABE>Ϣ
|
|
|
|
|
|
CTraceService::TraceString(szDescribe,TraceLevel_Warning);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|
|
|
|
|
ASSERT(m_pITimerEngine!=NULL);
|
|
|
|
|
|
m_pITimerEngine->SetTimer(IDI_LOAD_GAME_LIST,m_pInitParameter->m_wReLoadListTime*1000L,1,0);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>汾<EFBFBD><E6B1BE><EFBFBD><EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::CheckPlazaVersion(BYTE cbDeviceType, DWORD dwPlazaVersion, DWORD dwSocketID, bool bCheckLowVer)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
bool bMustUpdate=false;
|
|
|
|
|
|
bool bAdviceUpdate=false;
|
|
|
|
|
|
DWORD dwVersion=VERSION_PLAZA;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>ֻ<EFBFBD><D6BB>汾
|
|
|
|
|
|
if(cbDeviceType >= DEVICE_TYPE_IPAD) dwVersion=VERSION_MOBILE_IOS;
|
|
|
|
|
|
else if(cbDeviceType >= DEVICE_TYPE_IPHONE) dwVersion=VERSION_MOBILE_IOS;
|
|
|
|
|
|
else if(cbDeviceType >= DEVICE_TYPE_ITOUCH) dwVersion=VERSION_MOBILE_IOS;
|
|
|
|
|
|
else if(cbDeviceType >= DEVICE_TYPE_ANDROID) dwVersion=VERSION_MOBILE_ANDROID;
|
|
|
|
|
|
else if(cbDeviceType == DEVICE_TYPE_PC) dwVersion=VERSION_PLAZA;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>汾<EFBFBD>ж<EFBFBD>
|
|
|
|
|
|
if (bCheckLowVer && GetSubVer(dwPlazaVersion)<GetSubVer(dwVersion)) bAdviceUpdate=true;
|
|
|
|
|
|
if (GetMainVer(dwPlazaVersion)!=GetMainVer(dwVersion)) bMustUpdate=true;
|
|
|
|
|
|
if (GetProductVer(dwPlazaVersion)!=GetProductVer(dwVersion)) bMustUpdate=true;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|
|
|
|
|
if ((bMustUpdate==true)||(bAdviceUpdate==true))
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CMD_GP_UpdateNotify UpdateNotify;
|
|
|
|
|
|
ZeroMemory(&UpdateNotify,sizeof(UpdateNotify));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
UpdateNotify.cbMustUpdate=bMustUpdate;
|
|
|
|
|
|
UpdateNotify.cbAdviceUpdate=bAdviceUpdate;
|
|
|
|
|
|
UpdateNotify.dwCurrentVersion=dwVersion;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_LOGON,SUB_GP_UPDATE_NOTIFY,&UpdateNotify,sizeof(UpdateNotify));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>ж<EFBFBD><D0B6>ж<EFBFBD>
|
|
|
|
|
|
if (bMustUpdate==true)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_pITCPNetworkEngine->ShutDownSocket(dwSocketID);
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::SendUIControlPacket(WORD wRequestID, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CServiceUnits * pServiceUnits=CServiceUnits::g_pServiceUnits;
|
|
|
|
|
|
pServiceUnits->PostControlRequest(wRequestID,pData,wDataSize);
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
VOID CAttemperEngineSink::SendGameTypeInfo(DWORD dwSocketID)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
WORD wSendSize=0;
|
|
|
|
|
|
BYTE cbDataBuffer[SOCKET_TCP_PACKET];
|
|
|
|
|
|
|
|
|
|
|
|
//ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
POSITION Position=NULL;
|
|
|
|
|
|
CGameTypeItem * pGameTypeItem=NULL;
|
|
|
|
|
|
|
|
|
|
|
|
//ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
for (DWORD i=0;i<m_ServerListManager.GetGameTypeCount();i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
if ((wSendSize+sizeof(tagGameType))>sizeof(cbDataBuffer))
|
|
|
|
|
|
{
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_LIST_TYPE,cbDataBuffer,wSendSize);
|
|
|
|
|
|
wSendSize=0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|
|
|
|
|
pGameTypeItem=m_ServerListManager.EmunGameTypeItem(Position);
|
|
|
|
|
|
if (pGameTypeItem==NULL) break;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CopyMemory(cbDataBuffer+wSendSize,&pGameTypeItem->m_GameType,sizeof(tagGameType));
|
|
|
|
|
|
wSendSize+=sizeof(tagGameType);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3>
|
|
|
|
|
|
if (wSendSize>0) m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_LIST_TYPE,cbDataBuffer,wSendSize);
|
|
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
VOID CAttemperEngineSink::SendGameKindInfo(DWORD dwSocketID)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
WORD wSendSize=0;
|
|
|
|
|
|
BYTE cbDataBuffer[SOCKET_TCP_PACKET];
|
|
|
|
|
|
|
|
|
|
|
|
//ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
POSITION Position=NULL;
|
|
|
|
|
|
CGameKindItem * pGameKindItem=NULL;
|
|
|
|
|
|
|
|
|
|
|
|
//ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
for (DWORD i=0;i<m_ServerListManager.GetGameKindCount();i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
if ((wSendSize+sizeof(tagGameKind))>sizeof(cbDataBuffer))
|
|
|
|
|
|
{
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_LIST_KIND,cbDataBuffer,wSendSize);
|
|
|
|
|
|
wSendSize=0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|
|
|
|
|
pGameKindItem=m_ServerListManager.EmunGameKindItem(Position);
|
|
|
|
|
|
if (pGameKindItem==NULL) break;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CopyMemory(cbDataBuffer+wSendSize,&pGameKindItem->m_GameKind,sizeof(tagGameKind));
|
|
|
|
|
|
wSendSize+=sizeof(tagGameKind);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3>
|
|
|
|
|
|
if (wSendSize>0) m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_LIST_KIND,cbDataBuffer,wSendSize);
|
|
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ͽڵ<CDBD>
|
|
|
|
|
|
VOID CAttemperEngineSink::SendGameNodeInfo(DWORD dwSocketID, WORD wKindID)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
WORD wSendSize=0;
|
|
|
|
|
|
BYTE cbDataBuffer[SOCKET_TCP_PACKET];
|
|
|
|
|
|
|
|
|
|
|
|
//ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
POSITION Position=NULL;
|
|
|
|
|
|
CGameNodeItem * pGameNodeItem=NULL;
|
|
|
|
|
|
|
|
|
|
|
|
//ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
for (DWORD i=0;i<m_ServerListManager.GetGameNodeCount();i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
if ((wSendSize+sizeof(tagGameNode))>sizeof(cbDataBuffer))
|
|
|
|
|
|
{
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_LIST_NODE,cbDataBuffer,wSendSize);
|
|
|
|
|
|
wSendSize=0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|
|
|
|
|
pGameNodeItem=m_ServerListManager.EmunGameNodeItem(Position);
|
|
|
|
|
|
if (pGameNodeItem==NULL) break;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
if ((wKindID==INVALID_WORD)||(pGameNodeItem->m_GameNode.wKindID==wKindID))
|
|
|
|
|
|
{
|
|
|
|
|
|
CopyMemory(cbDataBuffer+wSendSize,&pGameNodeItem->m_GameNode,sizeof(tagGameNode));
|
|
|
|
|
|
wSendSize+=sizeof(tagGameNode);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3>
|
|
|
|
|
|
if (wSendSize>0) m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_LIST_NODE,cbDataBuffer,wSendSize);
|
|
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>
|
|
|
|
|
|
VOID CAttemperEngineSink::SendGamePageInfo(DWORD dwSocketID, WORD wKindID)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
WORD wSendSize=0;
|
|
|
|
|
|
BYTE cbDataBuffer[SOCKET_TCP_PACKET];
|
|
|
|
|
|
|
|
|
|
|
|
//ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
POSITION Position=NULL;
|
|
|
|
|
|
CGamePageItem * pGamePageItem=NULL;
|
|
|
|
|
|
|
|
|
|
|
|
//ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
for (DWORD i=0;i<m_ServerListManager.GetGamePageCount();i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
if ((wSendSize+sizeof(tagGamePage))>sizeof(cbDataBuffer))
|
|
|
|
|
|
{
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_LIST_PAGE,cbDataBuffer,wSendSize);
|
|
|
|
|
|
wSendSize=0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|
|
|
|
|
pGamePageItem=m_ServerListManager.EmunGamePageItem(Position);
|
|
|
|
|
|
if (pGamePageItem==NULL) break;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
if ((wKindID==INVALID_WORD)||(pGamePageItem->m_GamePage.wKindID==wKindID))
|
|
|
|
|
|
{
|
|
|
|
|
|
CopyMemory(cbDataBuffer+wSendSize,&pGamePageItem->m_GamePage,sizeof(tagGamePage));
|
|
|
|
|
|
wSendSize+=sizeof(tagGamePage);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3>
|
|
|
|
|
|
if (wSendSize>0) m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_LIST_PAGE,cbDataBuffer,wSendSize);
|
|
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>
|
|
|
|
|
|
VOID CAttemperEngineSink::SendGameServerInfo(DWORD dwSocketID, WORD wKindID)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
WORD wSendSize=0;
|
|
|
|
|
|
BYTE cbDataBuffer[SOCKET_TCP_PACKET];
|
|
|
|
|
|
|
|
|
|
|
|
//ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
POSITION Position=NULL;
|
|
|
|
|
|
CGameServerItem * pGameServerItem=NULL;
|
|
|
|
|
|
|
|
|
|
|
|
//ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
for (DWORD i=0;i<m_ServerListManager.GetGameServerCount();i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
if ((wSendSize+sizeof(tagGameServer))>sizeof(cbDataBuffer))
|
|
|
|
|
|
{
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_LIST_SERVER,cbDataBuffer,wSendSize);
|
|
|
|
|
|
wSendSize=0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|
|
|
|
|
pGameServerItem=m_ServerListManager.EmunGameServerItem(Position);
|
|
|
|
|
|
if (pGameServerItem==NULL) break;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
if ((wKindID==INVALID_WORD)||(pGameServerItem->m_GameServer.wKindID==wKindID))
|
|
|
|
|
|
{
|
|
|
|
|
|
CopyMemory(cbDataBuffer+wSendSize,&pGameServerItem->m_GameServer,sizeof(tagGameServer));
|
|
|
|
|
|
wSendSize+=sizeof(tagGameServer);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3>
|
|
|
|
|
|
if (wSendSize>0) m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_LIST_SERVER,cbDataBuffer,wSendSize);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
|
|
|
|
|
wSendSize=0;
|
|
|
|
|
|
ZeroMemory(cbDataBuffer,sizeof(cbDataBuffer));
|
|
|
|
|
|
|
|
|
|
|
|
//ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
for (DWORD i=0;i<m_ServerListManager.GetGameServerCount();i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
if ((wSendSize+sizeof(tagGameMatch))>sizeof(cbDataBuffer))
|
|
|
|
|
|
{
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_LIST_MATCH,cbDataBuffer,wSendSize);
|
|
|
|
|
|
wSendSize=0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|
|
|
|
|
pGameServerItem=m_ServerListManager.EmunGameServerItem(Position);
|
|
|
|
|
|
if (pGameServerItem==NULL) break;
|
|
|
|
|
|
if (pGameServerItem->IsMatchServer()==false) continue;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
if ((wKindID==INVALID_WORD)||(pGameServerItem->m_GameServer.wKindID==wKindID))
|
|
|
|
|
|
{
|
|
|
|
|
|
CopyMemory(cbDataBuffer+wSendSize,&pGameServerItem->m_GameMatch,sizeof(tagGameMatch));
|
|
|
|
|
|
wSendSize+=sizeof(tagGameMatch);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3>
|
|
|
|
|
|
if (wSendSize>0) m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_LIST_MATCH,cbDataBuffer,wSendSize);
|
|
|
|
|
|
|
|
|
|
|
|
if(m_wAVServerPort!=0 && m_dwAVServerAddr!=0)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
tagAVServerOption AVServerOption;
|
|
|
|
|
|
AVServerOption.wAVServerPort=m_wAVServerPort;
|
|
|
|
|
|
AVServerOption.dwAVServerAddr=m_dwAVServerAddr;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_VIDEO_OPTION,&AVServerOption,sizeof(AVServerOption));
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>Ϸ<EFBFBD><CFB7>¼
|
|
|
|
|
|
bool CAttemperEngineSink::OnDBPCGameRecordList(DWORD dwContextID, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(LOWORD(dwContextID)<m_pInitParameter->m_wMaxConnect);
|
|
|
|
|
|
if ((m_pBindParameter+LOWORD(dwContextID))->dwSocketID!=dwContextID) return true;
|
|
|
|
|
|
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwContextID,MDM_GP_USER_SERVICE,SUB_GP_GAME_RECORD_LIST,pData,wDataSize);
|
|
|
|
|
|
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>Ϸ<EFBFBD><CFB7>¼
|
|
|
|
|
|
bool CAttemperEngineSink::OnDBPCGameRecordTotal(DWORD dwContextID, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(LOWORD(dwContextID)<m_pInitParameter->m_wMaxConnect);
|
|
|
|
|
|
if ((m_pBindParameter+LOWORD(dwContextID))->dwSocketID!=dwContextID) return true;
|
|
|
|
|
|
|
|
|
|
|
|
//DBO_GP_GameRecord_Video
|
|
|
|
|
|
//CMD_GP_BackGameRecord_Video
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwContextID,MDM_GP_USER_SERVICE,SUB_GP_GAME_RECORD_TOTAL,pData,wDataSize);
|
|
|
|
|
|
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD>
|
|
|
|
|
|
bool CAttemperEngineSink::OnDBPCGameRecordChild(DWORD dwContextID, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(LOWORD(dwContextID) < m_pInitParameter->m_wMaxConnect);
|
|
|
|
|
|
if ((m_pBindParameter + LOWORD(dwContextID))->dwSocketID != dwContextID) return true;
|
|
|
|
|
|
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwContextID, MDM_GP_USER_SERVICE, SUB_GP_GAME_RECORD_CHILD, pData, wDataSize);
|
|
|
|
|
|
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool CAttemperEngineSink::OnDBPCQueryInMatch(DWORD dwContextID, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(LOWORD(dwContextID) < m_pInitParameter->m_wMaxConnect);
|
|
|
|
|
|
if ((m_pBindParameter + LOWORD(dwContextID))->dwSocketID != dwContextID) return true;
|
|
|
|
|
|
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwContextID, MDM_GP_USER_SERVICE, SUB_GP_QUERY_IN_MATCH, pData, wDataSize);
|
|
|
|
|
|
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool CAttemperEngineSink::OnDBPCQueryInUnion(DWORD dwContextID, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(LOWORD(dwContextID) < m_pInitParameter->m_wMaxConnect);
|
|
|
|
|
|
if ((m_pBindParameter + LOWORD(dwContextID))->dwSocketID != dwContextID) return true;
|
|
|
|
|
|
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwContextID, MDM_GP_USER_SERVICE, SUB_GP_QUERY_IN_UNION, pData, wDataSize);
|
|
|
|
|
|
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool CAttemperEngineSink::OnDBPCUnionList(DWORD dwContextID, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(LOWORD(dwContextID) < m_pInitParameter->m_wMaxConnect);
|
|
|
|
|
|
if ((m_pBindParameter + LOWORD(dwContextID))->dwSocketID != dwContextID) return true;
|
|
|
|
|
|
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwContextID, MDM_GP_USER_SERVICE, SUB_GP_GET_UNION_LIST, pData, wDataSize);
|
|
|
|
|
|
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool CAttemperEngineSink::OnDBPCUnionGameList(DWORD dwContextID, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(LOWORD(dwContextID) < m_pInitParameter->m_wMaxConnect);
|
|
|
|
|
|
if ((m_pBindParameter + LOWORD(dwContextID))->dwSocketID != dwContextID) return true;
|
|
|
|
|
|
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwContextID, MDM_GP_USER_SERVICE, SUB_GP_UNION_GAME_LIST, pData, wDataSize);
|
|
|
|
|
|
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>᷿<EFBFBD><E1B7BF><EFBFBD>б<EFBFBD>;
|
|
|
|
|
|
bool CAttemperEngineSink::OnDBPCUnionRoomList(DWORD dwContextID, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(LOWORD(dwContextID) < m_pInitParameter->m_wMaxConnect);
|
|
|
|
|
|
if ((m_pBindParameter + LOWORD(dwContextID))->dwSocketID != dwContextID) return true;
|
|
|
|
|
|
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwContextID, MDM_GP_USER_SERVICE, SUB_GP_GET_UNION_ROOM_LIST, pData, wDataSize);
|
|
|
|
|
|
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>;
|
|
|
|
|
|
bool CAttemperEngineSink::OnDBPCAutoRoomList(DWORD dwContextID, VOID * pData, WORD wDataSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ASSERT(LOWORD(dwContextID) < m_pInitParameter->m_wMaxConnect);
|
|
|
|
|
|
if ((m_pBindParameter + LOWORD(dwContextID))->dwSocketID != dwContextID) return true;
|
|
|
|
|
|
|
|
|
|
|
|
m_pITCPNetworkEngine->SendData(dwContextID, MDM_GP_USER_SERVICE, SUB_GP_GET_AUTO_ROOM_LIST, pData, wDataSize);
|
|
|
|
|
|
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////
|