WOW8论坛

 找回密码
 立即注册
搜索
热搜: 地形 技能 Lua
查看: 125|回复: 16

关于想要自己定义一套伤害属性体系和公式的一点思考

[复制链接]
发表于 2018-7-2 10:05:08 | 显示全部楼层 |阅读模式
  因为unitDamaged方法不方便获取伤害来源,所以我使用了unitAttacked和getAttacker这一对,然后添加了如果攻击就unitDamageTarget方法,但是此种方法生效于攻击前摇时,所以可以通过快速S来增加触发次数
  这个时候我不知道如何处理,请指教。
  以下我的解决思路:用一个计时器,这样可以得到单位最后一次发动攻击的时机,两次发动攻击时机间隔如果小于攻击间隔,则不触发,反之则触发。但是我不知道怎么获取一个单位的攻击间隔,请帮忙(尝试了getUnitAttackCoolDown(integer weaponIndex), 但是第一我不知道这到底是不是,第二用了这个方法无法争取启动测试地图 )。
回复

使用道具 举报

注册会员

发表于 2018-7-2 15:05:58 | 显示全部楼层
可以考虑把地图中的每一个单位都使用脚本添加进地图

然后注册单位进入地图事件,为每一个单位注册受伤事件,这样就可以操作了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-2 16:05:41 | 显示全部楼层
nef 发表于 2018-7-2 15:05
可以考虑把地图中的每一个单位都使用脚本添加进地图

然后注册单位进入地图事件,为每一个单位注册受伤事件 ...

受伤事件没有获取伤害来源的简单方式,所以才没有采用。
另外有没有办法方便地获取一个单位的攻击间隔呢?
回复 支持 反对

使用道具 举报

注册会员

发表于 2018-7-2 16:12:53 | 显示全部楼层
[Jass] 纯文本查看 复制代码
constant native GetEventDamageSource takes nothing returns unit
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-2 16:25:07 | 显示全部楼层
行,我先按照这个思路去实现以下,因为我之前用的unitDamageTarget,可能会出现循环,所以可能只有ondamage的时候丢个技能啥的,我再看看吧,还是对你深表感谢。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-3 12:28:44 | 显示全部楼层

已经根据受伤事件进行了改良,但是伤害结算时是生命值移除,没办法准确地杀死单位,也就无法得到单位的赏金,现在我是通过记录单次伤害值大于目标剩余生命值的方式来判断击杀者,请教一下有没有更好的办法呢?
回复 支持 反对

使用道具 举报

注册会员

发表于 2018-7-3 16:25:49 | 显示全部楼层
枯心听雨 发表于 2018-7-2 16:25
行,我先按照这个思路去实现以下,因为我之前用的unitDamageTarget,可能会出现循环,所以可能只有ondamage ...

因为不太确定你的需求

出现死循环看上去是因为你在伤害事件的动作里面造成了伤害,如果不全模拟,解决这个问题的方式可以是,使用马甲来造成伤害,然后在伤害事件的条件里面过滤一下即可

还有另外一种方式就是全模拟,比较麻烦但是所有动作可控
1. 平衡性常数里面所有攻击类型对所有防御类型造成0%的伤害
2. 为每一个进入地图的单位注册伤害事件
3. 数值为1的伤害是单位普通攻击(普攻不掉血,但是在伤害事件里面会触发,并且伤害值为1)
4. 自己根据单位属性等因素,使用DamageTarget来造成伤害,但是确保这个伤害值大于等于2即可,因为如果伤害=1,会被判定为“普通攻击”,小于2的伤害直接设置为无伤害
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-3 16:28:58 | 显示全部楼层
nef 发表于 2018-7-3 16:25
因为不太确定你的需求

出现死循环看上去是因为你在伤害事件的动作里面造成了伤害,如果不全模拟,解决这 ...

感谢回答。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-3 16:35:22 | 显示全部楼层
nef 发表于 2018-7-3 16:25
因为不太确定你的需求

出现死循环看上去是因为你在伤害事件的动作里面造成了伤害,如果不全模拟,解决这 ...

我是这样做的,首先平衡性常数没有修改(汗),其他实现方式类似于全模拟。但是对于扣血,我是用的直接是设置某单位的当前生命为当前生命减去受到的伤害。关于奖励,我是给每一个单位绑定了一个属性类,通过最后一次的攻击单位来判断最后是谁击杀,击杀之后多种自定义奖励直接归在该角色身上。
回复 支持 反对

使用道具 举报

注册会员

发表于 2018-7-3 18:14:02 | 显示全部楼层
枯心听雨 发表于 2018-7-3 16:35
我是这样做的,首先平衡性常数没有修改(汗),其他实现方式类似于全模拟。但是对于扣血,我是用的直接是 ...

不推荐使用设置血的方式来造成伤害。

在伤害事件里面使用马甲来造成额外伤害可以实现你的需求吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|WOW8论坛  

GMT+8, 2018-8-18 10:59 , Processed in 0.062456 second(s), 3 queries , File On.

WOW8 © 2018

Powered by Discuz! X3.3

快速回复 返回顶部 返回列表