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

📄 handler_cg_party.cpp

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 CPP
字号:
#include "StdAfx.h"
#include ".\Handler_CG_PARTY.h"
#include <Protocol_CG.h>
#include <Protocol_AG.h>
#include <PacketStruct_CG.h>
#include <PacketStruct_AG.h>
#include "Player.h"
#include "PlayerManager.h"
#include "ResultCode.h"
#include "Party.h"
#include "PartyManager.h"
#include "ServerSession.h"

Handler_CG_PARTY::Handler_CG_PARTY()
{
}

Handler_CG_PARTY::~Handler_CG_PARTY()
{
}

// 颇萍盔 碍力眠规 夸没
VOID Handler_CG_PARTY::OnCG_PARTY_FORCED_EXPULSION_SYN( ServerSession * pServerSession, MSG_BASE* pMsg, WORD wSize )
{
	MSG_CG_PARTY_FORCED_EXPULSION_SYN* pRecv = (MSG_CG_PARTY_FORCED_EXPULSION_SYN*)pMsg;

	MSG_CG_PARTY_FORCED_EXPULSION_NAK NakMsg;
	NakMsg.m_byCategory = CG_PARTY;
	NakMsg.m_byProtocol = CG_PARTY_FORCED_EXPULSION_NAK;

	// 菩哦阑 焊辰 敲饭捞绢啊 粮犁窍绰瘤 八荤
	Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecv->m_dwKey );
	if ( !pPlayer ) 		return;

	// 碍力眠规 炼扒捞 登绰瘤 眉农
	RC::ePARTY_RESULT rcResult = pPlayer->CanPurgeFromParty( pRecv->m_dwObjKey );
	if( rcResult != RC::RC_PARTY_SUCCESS )
	{
		NakMsg.m_byErrorCode = rcResult;
		pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
		return;
	}

	Party *pParty = PartyManager::Instance()->FindParty( pPlayer->GetPartyState().GetPartyKey() );

	// 呕硼甫 矫档沁促绊 颇萍盔甸俊霸 舅妨霖促.
	MSG_CG_PARTY_LEAVE_START_BRD AckMsg;
	AckMsg.m_byCategory = CG_PARTY;
	AckMsg.m_byProtocol = CG_PARTY_LEAVE_START_BRD;
	AckMsg.m_dwObjKey = pRecv->m_dwObjKey;
	pParty->SendPacketAll( &AckMsg, sizeof(AckMsg) );
}

// 颇萍呕硼 夸没
VOID Handler_CG_PARTY::OnCG_PARTY_LEAVE_REQUEST_SYN( ServerSession * pServerSession, MSG_BASE* pMsg, WORD wSize )
{
	MSG_CG_PARTY_LEAVE_REQUEST_SYN* pRecv = (MSG_CG_PARTY_LEAVE_REQUEST_SYN*)pMsg;

	MSG_CG_PARTY_LEAVE_REQUEST_NAK NakMsg;
	NakMsg.m_byCategory = CG_PARTY;
	NakMsg.m_byProtocol = CG_PARTY_LEAVE_REQUEST_NAK;

	// 菩哦阑 焊辰 敲饭捞绢啊 粮犁窍绰瘤 八荤
	Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecv->m_dwKey );
	if ( !pPlayer ) 	return;

	// 颇萍呕硼 炼扒捞 登绰瘤 眉农
	RC::ePARTY_RESULT rcResult = pPlayer->CanLeaveParty();
	if( rcResult != RC::RC_PARTY_SUCCESS )
	{
		NakMsg.m_byErrorCode = rcResult;
		pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
		return;
	}

	Party *pParty = PartyManager::Instance()->FindParty( pPlayer->GetPartyState().GetPartyKey() );

	// 呕硼甫 矫档沁促绊 颇萍盔甸俊霸 舅妨霖促.
	MSG_CG_PARTY_LEAVE_START_BRD AckMsg;
	AckMsg.m_byCategory = CG_PARTY;
	AckMsg.m_byProtocol = CG_PARTY_LEAVE_START_BRD;
	AckMsg.m_dwObjKey = pPlayer->GetObjectKey();
	pParty->SendPacketAll( &AckMsg, sizeof(AckMsg) );
}


// 颇萍厘 函版 夸没
VOID Handler_CG_PARTY::OnCG_PARTY_CHANGE_MASTER_SYN( ServerSession * pServerSession, MSG_BASE* pMsg, WORD wSize )
{
	MSG_CG_PARTY_CHANGE_MASTER_SYN* pRecv = (MSG_CG_PARTY_CHANGE_MASTER_SYN*)pMsg;

	MSG_CG_PARTY_CHANGE_MASTER_NAK NakMsg;
	NakMsg.m_byCategory = CG_PARTY;
	NakMsg.m_byProtocol = CG_PARTY_CHANGE_MASTER_NAK;

	// 菩哦阑 焊辰 敲饭捞绢啊 粮犁窍绰瘤 八荤
	Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecv->m_dwKey );
	if ( !pPlayer ) 		return;

	// 颇萍厘 函版
	RC::ePARTY_RESULT rcReturn;
	Player *pNextMaster = pPlayer->ChangeMaster( pRecv->m_dwObjKey, rcReturn );
	if( rcReturn != RC::RC_PARTY_SUCCESS )
	{
		NakMsg.m_byErrorCode = rcReturn;
		pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
		return;
	}

	// 颇萍厘捞 函版登菌澜阑 Agent俊 舅妨辑 规厘阑 背眉茄促.
	MSG_AG_PARTY_BATTLE_AGENT_CHANGE_MASTER_CMD CmdMsg;
	CmdMsg.m_dwMasterUserKey = pNextMaster->GetUserKey();
	pServerSession->Send( (BYTE*)&CmdMsg, sizeof(CmdMsg) );
}

// 颇萍 秦眉 夸没
VOID Handler_CG_PARTY::OnCG_PARTY_DESTROY_PARTY_SYN( ServerSession * pServerSession, MSG_BASE* pMsg, WORD wSize )
{
	MSG_CG_PARTY_DESTROY_PARTY_SYN* pRecv = (MSG_CG_PARTY_DESTROY_PARTY_SYN*)pMsg;

	MSG_CG_PARTY_DESTROY_PARTY_NAK NakMsg;
	NakMsg.m_byCategory = CG_PARTY;
	NakMsg.m_byProtocol = CG_PARTY_DESTROY_PARTY_NAK;

	// 菩哦阑 焊辰 敲饭捞绢啊 粮犁窍绰瘤 八荤
	Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecv->m_dwKey );
	if ( !pPlayer ) 		return;

	RC::ePARTY_RESULT rcReturn = pPlayer->DestroyParty( TRUE );
	if( rcReturn != RC::RC_PARTY_SUCCESS )
	{
		NakMsg.m_byErrorCode = rcReturn;
		pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
	}
}

// 酒捞袍 盒硅规侥 函版 夸没
VOID Handler_CG_PARTY::OnCG_PARTY_CHANGE_ITEM_DISTRIBUTION_TYPE_SYN( ServerSession * pServerSession, MSG_BASE* pMsg, WORD wSize )
{
	MSG_CG_PARTY_CHANGE_ITEM_DISTRIBUTION_TYPE_SYN* pRecv = (MSG_CG_PARTY_CHANGE_ITEM_DISTRIBUTION_TYPE_SYN*)pMsg;

	MSG_CG_PARTY_CHANGE_ITEM_DISTRIBUTION_TYPE_NAK NakMsg;
	NakMsg.m_byCategory = CG_PARTY;
	NakMsg.m_byProtocol = CG_PARTY_CHANGE_ITEM_DISTRIBUTION_TYPE_NAK;

	// 菩哦阑 焊辰 敲饭捞绢啊 粮犁窍绰瘤 八荤
	Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecv->m_dwKey );
	if ( !pPlayer ) 		return;

	// 颇萍厘捞 酒聪促.
	if( !pPlayer->GetPartyState().IsMaster() )
	{
		NakMsg.m_byErrorCode = RC::RC_PARTY_ISNOT_MASTEROFPARTY;
		pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
		return;
	}

	// 颇萍啊 粮犁窍瘤 臼绰促.
	Party *pParty = PartyManager::Instance()->FindParty( pPlayer->GetPartyState().GetPartyKey() );
	if( !pParty )
	{
		NakMsg.m_byErrorCode = RC::RC_PARTY_PARTY_NOTEXIST;
		pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
		return;
	}

	// 盒硅规侥 函版
	if( pRecv->m_byType < eITEM_DISTRIBUTION_MAX )
	{
		pParty->SetDistributionType( (eITEM_DISTRIBUTION_TYPE)pRecv->m_byType );

		MSG_CG_PARTY_CHANGE_ITEM_DISTRIBUTION_TYPE_BRD BrdMsg;
		BrdMsg.m_byCategory = CG_PARTY;
		BrdMsg.m_byProtocol = CG_PARTY_CHANGE_ITEM_DISTRIBUTION_TYPE_BRD;
		BrdMsg.m_byType = pRecv->m_byType;
		pParty->SendPacketAll( &BrdMsg, sizeof(BrdMsg) );
	}
	else
	{
		NakMsg.m_byErrorCode = RC::RC_PARTY_INVALID_DATATYPE;
		pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
	}
}

// 鸥百泼 汲沥
VOID Handler_CG_PARTY::OnCG_PARTY_SELECT_TARGET_SYN( ServerSession * pServerSession, MSG_BASE* pMsg, WORD wSize )
{
	MSG_CG_PARTY_SELECT_TARGET_SYN* pRecv = (MSG_CG_PARTY_SELECT_TARGET_SYN*)pMsg;

	MSG_CG_PARTY_SELECT_TARGET_NAK NakMsg;

	// 菩哦阑 焊辰 敲饭捞绢啊 粮犁窍绰瘤 八荤
	Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecv->m_dwKey );
	if ( !pPlayer ) 		return;

	// 敲饭捞绢啊 鞘靛俊 绝栏搁 府畔
	Field *pField = pPlayer->GetField();
	if( !pField )
	{
		NakMsg.m_byErrorCode = RC::RC_PARTY_PLAYER_NOTEXIST_TO_FIELD;
		pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
		return;
	}

	// 颇萍厘捞 酒聪促.
	if( !pPlayer->GetPartyState().IsMaster() )
	{
		NakMsg.m_byErrorCode = RC::RC_PARTY_ISNOT_MASTEROFPARTY;
		pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
		return;
	}

	// 颇萍啊 粮犁窍瘤 臼绰促.
	Party *pParty = PartyManager::Instance()->FindParty( pPlayer->GetPartyState().GetPartyKey() );
	if( !pParty )
	{
		NakMsg.m_byErrorCode = RC::RC_PARTY_PARTY_NOTEXIST;
		pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
		return;
	}

	// 秦寸窍绰 鸥百阑 茫酒辑 利牢瘤 眉农茄促.
	NPC *pTarget = pField->FindNPC( pRecv->m_dwObjectKey );
	if( !pTarget )
	{
		NakMsg.m_byErrorCode = RC::RC_PARTY_CANNOT_FIND_TARGET;
		pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
		return;
	}

	if( pPlayer->IsFriend( pTarget ) )
	{
		NakMsg.m_byErrorCode = RC::RC_PARTY_TARGET_ISNOT_ENEMY;
		pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
		return;
	}

	// 颇萍 鸥百阑 汲沥茄促.
	pParty->SetTargetObjKeyOfParty( pRecv->m_dwObjectKey );

	// 汲沥等 鸥百阑 宏肺靛肺 舅妨霖促.
	MSG_CG_PARTY_SELECT_TARGET_BRD BrdMsg;
	BrdMsg.m_dwObjectKey = pRecv->m_dwObjectKey;
	pParty->SendPacketAll( &BrdMsg, sizeof(BrdMsg) );
}
























⌨️ 快捷键说明

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