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

📄 handler_cg_status.cpp

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 CPP
字号:
#include "StdAfx.h"
#include ".\Handler_CG_STATUS.h"
#include <Protocol_CG.h>
#include <PacketStruct_CG.h>
#include "SkillInfoParser.h"
#include "Player.h"
#include "Field.h"
#include "GameServer.h"
#include "StatusManager.h"


Handler_CG_STATUS::Handler_CG_STATUS()
{
}

Handler_CG_STATUS::~Handler_CG_STATUS()
{
}


VOID Handler_CG_STATUS::OnCG_STATUS_STAT_SELECT_SYN( ServerSession * pServerSession, MSG_BASE * pMsg, WORD wSize )
{
	MSG_CG_STATUS_STAT_SELECT_SYN * pRecvMsg = (MSG_CG_STATUS_STAT_SELECT_SYN *)pMsg;

	Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
	if( !pPlayer ) return ;

	eATTR_TYPE attrType = (eATTR_TYPE)pRecvMsg->m_AttrType;

	// need StatManager? --;
	if (pPlayer->CanSelectStat(attrType))
	{
		DWORD resultValue = pPlayer->SelectStat( attrType );

		MSG_CG_STATUS_STAT_SELECT_ACK sendMsg;
		sendMsg.m_byCategory		= CG_STATUS;
		sendMsg.m_byProtocol		= CG_STATUS_STAT_SELECT_ACK;
		sendMsg.m_dwObjKey			= pPlayer->GetObjectKey();
		sendMsg.m_AttrType			= (BYTE)attrType;
		sendMsg.m_dwValue			= resultValue;

		pPlayer->SendPacket( &sendMsg, sizeof(sendMsg) );

		// STAT 荤侩 肺弊 巢扁扁
		GAMELOG->WriteUseStat( pPlayer, g_pGameServer->GetServerGUID(), (byte)attrType );
		// STAT 荤侩 肺弊 巢扁扁 场.
	}
	else
	{
		MSG_CG_STATUS_STAT_SELECT_NAK sendMsg;
		sendMsg.m_byCategory		= CG_STATUS;
		sendMsg.m_byProtocol		= CG_STATUS_STAT_SELECT_NAK;
		sendMsg.m_AttrType			= attrType;
		sendMsg.m_dwErrorCode		= 0;		// Error Code 沥狼 鞘夸

		pPlayer->SendPacket( &sendMsg, sizeof(sendMsg) );
	}
}

VOID Handler_CG_STATUS::OnCG_STATUS_RESURRECTION_SYN( ServerSession * pServerSession, MSG_BASE * pMsg, WORD wSize )
{
	MSG_CG_STATUS_RESURRECTION_SYN * pRecvMsg = (MSG_CG_STATUS_RESURRECTION_SYN *)pMsg;

	Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
	if( !pPlayer ) return;

	if( pPlayer->OnResurrection( 0, 1.f, 1.f ) )
	{
		WzVector curPos;
		pPlayer->GetPos(&curPos);

		// 何劝阑 舅妨林磊.
		MSG_CG_STATUS_RESURRECTION_BRD sendMsg;
		sendMsg.m_dwObjectKey	= pPlayer->GetObjectKey();
		sendMsg.m_dwHP			= pPlayer->GetHP();
		sendMsg.m_dwMP			= pPlayer->GetMP();
		sendMsg.m_wvCurPos		= curPos;

		pPlayer->SendPacketAround( &sendMsg, sizeof(sendMsg) );
	}
	else
	{
		MSG_CG_STATUS_RESURRECTION_NAK NakMsg;
		NakMsg.m_dwErrorCode	= 0;		// Error Code 沥狼 鞘夸

		pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
	}
}


VOID Handler_CG_STATUS::OnCG_STATUS_EMOTION_SYN( ServerSession * pServerSession, MSG_BASE * pMsg, WORD wSize )
{
	MSG_CG_STATUS_EMOTION_SYN * pRecvMsg = (MSG_CG_STATUS_EMOTION_SYN *)pMsg;

	Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
	if( !pPlayer ) return;

	// Emotion 悼累阑 矫累且 锭 鞘夸茄 贸府甸阑 茄促.(旧扁惑怕啊 辑扁惑怕肺 傈券等促.)
	pPlayer->GetStatusManager()->ActEmotion();

	MSG_CG_STATUS_EMOTION_BRD sendMsg;
	sendMsg.m_dwObjectKey	= pPlayer->GetObjectKey();
	sendMsg.m_byEmotionType = pRecvMsg->m_byEmotionType;
	pPlayer->SendPacketAround( &sendMsg, sizeof(sendMsg) );
}

VOID Handler_CG_STATUS::OnCG_STATUS_CONDITION_CHANGE_SYN( ServerSession * pServerSession, MSG_BASE * pMsg, WORD wSize )
{
	MSG_CG_STATUS_CONDITION_CHANGE_SYN* pRecvMsg = (MSG_CG_STATUS_CONDITION_CHANGE_SYN *)pMsg;

	Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
	if( !pPlayer ) return ;

	MSG_CG_STATUS_CONDITION_CHANGE_NAK NakMsg;

	// 捞固 鞍篮 惑怕捞搁 官操瘤 臼绰促.
	if( pPlayer->GetStatusManager()->GetCondition() == pRecvMsg->m_byConditionType )
	{
		NakMsg.m_byErrorCode = RC::RC_CONDITION_ALREADY_SAME_CONDITION;
		pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
		return;
	}

	// 粮犁窍绰 惑怕牢瘤 眉农
	if( pRecvMsg->m_byConditionType >= eCHAR_CONDITION_MAX )
	{
		NakMsg.m_byErrorCode = RC::RC_CONDITION_INVALID_CONDITION;
		pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
		return;
	}

	// 角力肺 惑怕甫 官层霖促.
	pPlayer->GetStatusManager()->ChangeCondition( (eCHAR_CONDITION)pRecvMsg->m_byConditionType );
}

VOID Handler_CG_STATUS::OnCG_STATUS_RENDER_OPTION_SYN( ServerSession * pServerSession, MSG_BASE * pMsg, WORD wSize )
{
	MSG_CG_STATUS_RENDER_OPTION_SYN* pRecvMsg = (MSG_CG_STATUS_RENDER_OPTION_SYN *)pMsg;

	Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
	if( !pPlayer ) return ;


	// 捧备 可记
	if(MSG_CG_STATUS_RENDER_OPTION_SYN::eRENDER_HELMET_OPTION == pRecvMsg->m_byRenderOptionType)
	{
		pPlayer->SetHelmetOption(pRecvMsg->m_byOptionLevel);
	}
	else
	{
		return;
	}

	MSG_CG_STATUS_RENDER_OPTION_BRD sendMsg;
	sendMsg.m_dwObjectKey = pPlayer->GetObjectKey();
	sendMsg.m_byRenderOptionType = pRecvMsg->m_byRenderOptionType;
	sendMsg.m_byOptionLevel = pRecvMsg->m_byOptionLevel;
	pPlayer->SendPacketAround(&sendMsg, sizeof(sendMsg));

}

⌨️ 快捷键说明

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