📄 handler_cg_skill.cpp
字号:
#include "StdAfx.h"
#include "Handler_CG_SKILL.h"
#include "PlayerManager.h"
#include <Struct.h>
#include <Protocol_CG.h>
#include <PacketStruct_CG.h>
#include "Field.h"
#include "Player.h"
#include "Monster.h"
#include "SkillInfoParser.h"
#include "SkillFactory.h"
#include "Skill.h"
#include "PublicMath.h"
#include "float.h"
VOID Handler_CG_SKILL::OnCG_SKILL_ACTION_SYN( ServerSession * pServerSession, MSG_BASE *pMsg, WORD wSize )
{
MSG_CG_SKILL_ACTION_SYN *pRecvMsg = (MSG_CG_SKILL_ACTION_SYN*)pMsg;
MSG_CG_SKILL_ACTION_NAK NakMsg;
Player *pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
if( !pPlayer ) return ; //< 敲饭捞绢 技记捞 谗绢脸阑 锭
Field *pField = pPlayer->GetField();
if( !pField ) return;
// 泅犁 谅钎啊 蜡瓤茄瘤 眉农
if( !_finite(pRecvMsg->m_wvCurPos.x) || !_finite(pRecvMsg->m_wvCurPos.y) || !_finite(pRecvMsg->m_wvCurPos.z) )
{
SUNLOG( eCRITICAL_LOG, "[Handler_CG_SKILL::OnCG_SKILL_ACTION_SYN] CurPos is Invalid! x[%f] y[%f] z[%f]", pRecvMsg->m_wvCurPos.x, pRecvMsg->m_wvCurPos.y, pRecvMsg->m_wvCurPos.z );
NakMsg.m_byErrorCode = RC::RC_SKILL_POSITION_INVALID;
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return;
}
// 格利瘤 谅钎啊 蜡瓤茄瘤 眉农
if( !_finite(pRecvMsg->m_wvDestPos.x) || !_finite(pRecvMsg->m_wvDestPos.y) || !_finite(pRecvMsg->m_wvDestPos.z) )
{
SUNLOG( eCRITICAL_LOG, "[Handler_CG_SKILL::OnCG_SKILL_ACTION_SYN] DestPos is Invalid! x[%f] y[%f] z[%f]", pRecvMsg->m_wvDestPos.x, pRecvMsg->m_wvDestPos.y, pRecvMsg->m_wvDestPos.z );
NakMsg.m_byErrorCode = RC::RC_SKILL_POSITION_INVALID;
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return;
}
// 努扼客 辑滚埃俊 困摹 焊沥
WzVector wvResultCurPos, wvResultDestPos;
pPlayer->ModifyPosition( pRecvMsg->m_wvCurPos, pRecvMsg->m_wvDestPos, wvResultCurPos, wvResultDestPos, pRecvMsg->m_SkillCode );
// 矫傈磊啊 捞 胶懦阑 荤侩啊瓷茄瘤 眉农茄促.
RC::eSKILL_RESULT rcResult = pPlayer->CanUseSkill( pRecvMsg->m_SkillCode );
if( rcResult != RC::RC_SKILL_SUCCESS )
{
NakMsg.m_byErrorCode = rcResult;
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return;
}
// 货肺款 胶懦俊 措秦 皋葛府甫 且寸罐绊 胶懦沥焊甫 悸泼茄促.
SkillScriptInfo *pBaseSkillInfo = (SkillScriptInfo *)SkillInfoParser::Instance()->GetSkillInfo( pRecvMsg->m_SkillCode );
Skill* pNewSkill = (Skill*)SkillFactory::Instance()->AllocSkill( SKILL_TYPE_ACTIVE, pBaseSkillInfo );
SkillInfo SkillInfoData;
SkillInfoData.m_SkillCode = pRecvMsg->m_SkillCode;
SkillInfoData.m_dwClientSerial = pRecvMsg->m_dwClientSerial;
SkillInfoData.m_wvCurPos = wvResultCurPos;
SkillInfoData.m_wvDestPos = wvResultDestPos;
SkillInfoData.m_dwMainTargetKey = pRecvMsg->m_dwMainTargetKey;
SkillInfoData.m_wvMainTargetPos = pRecvMsg->m_wvMainTargetPos;
pNewSkill->Init( pPlayer, &SkillInfoData, pBaseSkillInfo );
// 胶懦阑 敲饭捞绢狼 胶懦府胶飘俊 殿废茄促.
pPlayer->AddSkill( pNewSkill );
}
VOID Handler_CG_SKILL::OnCG_SKILL_SELECT_SKILLPOINT_SYN( ServerSession * pServerSession, MSG_BASE * pMsg, WORD wSize )
{
MSG_CG_SKILL_SELECT_SKILLPOINT_SYN * pRecvMsg = (MSG_CG_SKILL_SELECT_SKILLPOINT_SYN *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
if( !pPlayer ) return ;
// 胶懦 嚼垫 趣篮 饭骇诀捞 啊瓷茄瘤 眉农
SLOTCODE CurSkillCode = pRecvMsg->m_SkillCode;
SLOTCODE NextSkillCode = 0;
RC::eSKILL_RESULT rcResult = pPlayer->CanLevelUpSkill( pRecvMsg->m_bSkill, CurSkillCode, NextSkillCode );
if( rcResult == RC::RC_SKILL_SUCCESS )
{
MSG_CG_SKILL_SELECT_SKILLPOINT_ACK AckMsg;
// 角力肺 胶懦阑 嚼垫窍芭唱 饭骇诀阑 茄促.
AckMsg.m_OldSkillCode = CurSkillCode;
AckMsg.m_dwRemainSkillPoint = pPlayer->LevelUpSkill( pRecvMsg->m_bSkill, CurSkillCode, NextSkillCode, AckMsg.m_NewSkillSlot );
pPlayer->SendPacket( &AckMsg, sizeof(AckMsg) );
// 菩矫宏 胶懦捞扼搁 宏肺靛肺 舅赴促.
/* SkillScriptInfo *pBaseSkillInfo = (SkillScriptInfo *)SkillInfoParser::Instance()->GetSkillInfo( CurSkillCode );
if( pBaseSkillInfo && pBaseSkillInfo->m_bySkillType == SKILL_TYPE_PASSIVE )
{
MSG_CG_SKILL_PASSIVE_SKILL_ADD_CMD CmdMsg;
CmdMsg.m_dwObjectKey = pPlayer->GetObjectKey();
if( CurSkillCode == NextSkillCode ) CmdMsg.m_OldSkillCode = 0;
else CmdMsg.m_OldSkillCode = CurSkillCode;
CmdMsg.m_NewSkillCode = NextSkillCode;
pPlayer->SendPacketAround( &CmdMsg, sizeof(CmdMsg) );
}*/
}
else
{
MSG_CG_SKILL_SELECT_SKILLPOINT_NAK NakMsg;
NakMsg.m_SkillCode = pRecvMsg->m_SkillCode;
NakMsg.m_byErrorCode = rcResult;
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -