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