Client
1.技能快捷键
2.判断技能CD,范围,根据技能类型设置技能目标,eg.以自身为中心的AOE技能,目标是自身
3.向Server发送TryUseSkill消息
Server
1.收到Client消息,使用的技能压入到‘技能处理列表‘中
m_skillTaskMgr.Push( TaskType_Skill, target, position, skillID, skillLvl )
2.在玩家每一帧中调用 m_skillTaskMgr.GetTask() 处理所有类型的任务,包括技能
3.判断使用技能的一些条件,eg.技能目标,技能范围...
都满足向Client发送MsgIntonateStart开始吟唱消息
Server:
1.目标进入视野,如果目标正在吟唱或维持魔法,将此状态消息MsgSkillStatus发给自己
EnterMySight(pTarget)
if ( pTarget->IsIntonate() || pTarget->IsHoldSkill() )
pTarget->SendSkillStatusTo( pMe )
Client
1.接受到Server技能吟唱消息 MsgIntonateStart MsgSkillStatus
参数:iSkillID, iSkillLvl, srcPlayerID, tagPlayerID, iPercent
1). 若是自己吟唱,显示吟唱进度条 UIProgressBar::Show(...)
2). 加入到动作队列中等待处理 GetActionQueue()->Push_Intonate(...)
2. 每帧 HandleActionQueue 中处理 ‘技能吟唱’Intonate
1)保存吟唱的技能 skillID, skillLvl
2)播放并记录吟唱的特效 iSkillEffectID = PlayEffect(...)
3)切换到吟唱动作 SwitchActionStatus( Intonate, ...)
3. 吟唱结束 条件诸如:EndIntonate IntonateInterrupt HoldSkillEnd HoldSkillCancel Dead
1).切换动作到idle状态
2).清除播放中的吟唱特效 GetEffectMgr()->ReleaseEffect( iSkillEffectID )
posted on 2012-03-16 15:23
风轻云淡 阅读(360)
评论(0) 编辑 收藏 引用 所属分类:
DX