DragonWind

关于技能

客户端技能释放流程

ClientCommand

客户端的指令,包括移动 放技能 找NPC

用这个的目的是为了战斗手感的优化,每个Command会存起来,500ms以内都能执行。

LogicAction

客户端玩家的动作的抽象,包括移动、放技能、采集、读条等动作。

支持平行操作。

在执行某些动作的时候,可以设置是否不可移动、不可跳跃。

支持设置下一个动作,一种应用场景是,我对一个物体采集,但是距离不够,于是我会先执行移动动作,然后移动动作的下一个动作就是采集动作。

技能释放选择目标逻辑:不选目标 选目标 位置 方向

TryUseSkill UseSkill SkillSend

航海士特写NFT?

SkillTemplate -> 有哪些技能 主动 被动

SkillTemplate.PassiveSkillData -> 索引PassiveSkillData 包含哪些被动技能 触发时机

PassiveSkillData.PassiveEffectId ->索引 PassiveSkillEffect 包含哪些效果

PassiveSkillEffect.logicId要干嘛

宠物对生命值高于80%的目标造成的所有伤害提升10%。

每次造成伤害前,判断是否高于80%

若高于 则加一个增伤10%buf 100ms??

操作逻辑 -> 释放检测 -> 选目标 -> 打效果

技能转义

effectLogic -> calTargetList

关于Progress

关于SkillLogic

关于SkillEffect.txt

关于EffectLogic

主动:技能->progress->触发某个effect->找目标打impact

被动

一些技能实现实例

被动技能

首先,被动技能如何触发?

在某种事件发生之后,比如血量改变后,比如造成伤害后,

其次,触发的条件有哪些?

这里有两种条件,状态类的和触发类的。

状态类的:血量百分比位于30%到70%区间之内则生效。

触发类的:造成伤害值大于300点血则生效。

被动技能有两种类型,常驻类的和触发类的。

常驻类的就是事件触发后判断状态,当状态满足,进OnActive,并且如果已经是Active了,就不会再进OnActive;

当状态不满足,进OnInactive。

触发类的就是事件触发后,触发条件分为TriggerCondition和LeaveCondition,二者出发后分别走OnActive和OnInactive,并且可以无限触发。

护盾状态下受到的伤害减少20%

触发时机是什么?受到伤害后

判断条件是什么?Judge,有护盾

最终效果是什么?减伤20%,怎么实现?上一个减伤

另一个做法。

要干什么?受伤减少20%

怎么实现?用属性实现,设置减伤属性20%

什么时候设置有?有护盾的时候。

什么时候设置无?没护盾的时候。

触发时机是什么?护盾状态改变的时候。

修改器

技能释放

CD

客户端放个技能 客户端先进CD 默认CD5000秒

服务器放完之后或者打断之后 同步CD给客户端 真实CD

如果这个技能被打断 但是服务器又不同步CD 就一直走的5000秒默认CD 除非这个技能放完了 才能变成真实CD

服务器确实同步CD了 同步的CD是0 0直接return了

###

客户端指令

ClientCommand