📄 handler_cg_party.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 + -