⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 handler_dg_charinfo.cpp

📁 奇迹世界data 服务器代码,研究游戏的朋友有帮助
💻 CPP
字号:
#include "stdafx.h"
#include ".\handler_dg_charinfo.h"
#include <Protocol_DG.h>
#include <PacketStruct_DG.h>
#include <Macro.h>
#include "ServerSession.h"
#include "Player.h"
#include "GameServerSession.h"
#include <SCSlot.h>
#include <SCSlotContainer.h>
#include <VarPacket.h>
#include "DBProxyServer.h"

Handler_DG_CHARINFO::Handler_DG_CHARINFO()
{
}

Handler_DG_CHARINFO::~Handler_DG_CHARINFO()
{

}


VOID Handler_DG_CHARINFO::OnDG_CHARINFO_REQ_SYN( ServerSession * pServerSession, MSG_BASE * pMsg, WORD wSize )
{
	MSG_DG_CHARINFO_REQ_SYN * pRecvMsg = (MSG_DG_CHARINFO_REQ_SYN *)pMsg;
	
	Player * pPlayer = DBProxyServer::Instance()->GetPlayer( pRecvMsg->m_dwID );
	if( !pPlayer )
	{
		// send nack msg
		return;
	}
	pPlayer->SelectUser( pRecvMsg->m_bySelectedCharIndex );

	char szQueryBuff[64];
	sprintf( szQueryBuff, "S_SelectChar %d", pPlayer->GetCharGuid() );
	CharacterQuery * pQuery = QUERYALLOC(CharacterQuery);
	pQuery->SetIndex( MAKEDWORD( (WORD)DG_CHARINFO, (WORD)DG_CHARINFO_REQ_DBR ) );
	pQuery->SetVoidObject( pServerSession );
	pQuery->SetQuery( szQueryBuff );
	pQuery->SetUserID( pRecvMsg->m_dwID );

	pServerSession->DBQuery( pQuery );
	
	DISPMSG( "[ID:%d]:%s\n", pPlayer->GetUserID(), szQueryBuff );

}

VOID Handler_DG_CHARINFO::OnDG_CHARINFO_REQ_DBR( ServerSession * pServerSession, MSG_BASE * pMsg, WORD wSize )
{
	MSG_DBPROXY_RESULT * pResult	= (MSG_DBPROXY_RESULT *)pMsg;

	CharacterQuery * pQResult		= (CharacterQuery *)pResult->m_pData;
	if( pQResult->GetResultRowNum() != 1 )
	{
		DISPMSG( "某腐磐 沥焊 叼厚俊辑 佬绢 坷瘤 给沁嚼聪促. UserID(%d)\n", pQResult->GetUserID() );
		// send nack msg
		return ;
	}

	// 某浆 贸府 内靛 -------------------------------------------------------------------------
	Player * pPlayer = DBProxyServer::Instance()->GetPlayer( pQResult->GetUserID() );
	if( !pPlayer )
	{
		// send nack msg
		MSG_DG_CHARINFO_REQ_NAK errorMsg;
		errorMsg.m_byCategory	= DG_CHARINFO;
		errorMsg.m_byProtocol	= DG_CHARINFO_REQ_ACK;
		errorMsg.m_dwID			= pPlayer->GetUserID();
		pServerSession->Send( (BYTE *)&errorMsg, sizeof(MSG_DG_CHARINFO_REQ_NAK) );
		return;
	}
	pPlayer->CopyQUERY_CHARACTERTo( pPlayer->GetSelectedCharIndex(), &pQResult->pCharacter[0] );
	QUERYFREE( CharacterQuery, pQResult );
	pQResult = NULL;
	// 某浆 贸府 内靛 -------------------------------------------------------------------------



	DISPMSG( "[ID:%d]:MSG_DG_CHARINFO_REQ_ACK\n", pPlayer->GetUserID() );
	// Game Server肺 某腐磐 沥焊 焊晨
	// 某腐沥焊
	// 酒捞袍 沥焊
	// 胶懦沥焊
	// 俺牢芒绊沥焊?
	// 阿辆 酒捞袍 可记?
	MSG_DG_CHARINFO_REQ_ACK msg;
	msg.m_byCategory	= DG_CHARINFO;
	msg.m_byProtocol	= DG_CHARINFO_REQ_ACK;
	msg.m_dwID			= pPlayer->GetUserID();
	pPlayer->SerializeCharInfo( msg.CharacterInfo, SERIALIZE_LOAD );
	pPlayer->SerializeEquipItemStream( msg.pEquipStream,  MAX_EQUIPITEMSTREAM_SIZE, SERIALIZE_LOAD );
	pPlayer->SerializeInventoryItemStream( msg.pInventoryStream,  MAX_INVENTORYITEMSTREAM_SIZE, SERIALIZE_LOAD );
	pPlayer->SerializeSkillStream( msg.pSkillStream, MAX_SKILLSTREAM_SIZE );
	pServerSession->Send( (BYTE *)&msg, sizeof(msg) );
}

VOID Handler_DG_CHARINFO::OnDG_CHARINFO_UPDATE2DBP_CMD( ServerSession * pServer, MSG_BASE * pMsg, WORD wSize )
{
	
	MSG_DG_CHARINFO_UPDATE2DBP_CMD * pRecvMsg = (MSG_DG_CHARINFO_UPDATE2DBP_CMD *)pMsg;

	Player * pPlayer = DBProxyServer::Instance()->GetPlayer( pRecvMsg->m_dwID );
	ASSERT( pPlayer );
	pPlayer->SerializeCharInfo( pRecvMsg->m_charInfo, SERIALIZE_STORE );
	pPlayer->SerializeEquipItemStream( pRecvMsg->m_pEquipStream, MAX_EQUIPITEMSTREAM_SIZE, SERIALIZE_STORE );
	pPlayer->SerializeInventoryItemStream( pRecvMsg->m_pInventoryStream, MAX_INVENTORYITEMSTREAM_SIZE, SERIALIZE_STORE );
	pPlayer->SerializeSkillStream( pRecvMsg->m_pSkillStream, MAX_SKILLSTREAM_SIZE, SERIALIZE_STORE );

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -