找回密码
 点一下
查看: 1588|回复: 12

关于 制作法术暴击系统~

[复制链接]
发表于 2009-12-6 23:55:31 | 显示全部楼层 |阅读模式
打算运用动态注册接受伤害事件来做~捕捉接受伤害的量,命令造成额外的50%伤害。
        有一个问题就是:如何在T里区分是物理攻击,还是技能造成的伤害?(如果不打算通过判定伤害点数是在一个伤害量区间的方法来模拟的话)
    因为不想让物理伤害也通过这个出暴击。。。
请高手指教!~谢谢
发表于 2009-12-7 00:28:12 | 显示全部楼层
在技能编辑器里把所有法术伤害的伤害值设置成几乎可以忽视的数值
比如,风暴之锤伤害1.01,雷霆一击伤害1.02
然后这些技能的伤害用触发模拟
由此技能伤害可暴击可闪避或抵消

当然,还有一个方法,就是伤害性技能全部用马甲
比如风暴之锤,用通魔做模板,再叫马甲扔锤子
单位接受伤害,伤害来源=马甲
或者马甲加个诸如"自爆工兵""古树"之类的单位类型,方便判断

最后,还有很多很多判断物理/法术伤害的方法,我就不一一列举了
回复

使用道具 举报

 楼主| 发表于 2009-12-7 01:25:14 | 显示全部楼层

回 1楼(蟋有的蟀) 的帖子

你说的方法是比较经典的老方法了,可能比较容易做到这样的效果,只是要在一张图里添加这个系统的话,工作量很大,将涉及将所有技能改变伤害、用触发捕捉,或者马甲释放。。。
所以我有个想法:你帮我参考下:在发动技能效果时,进行暴击概率判断,然后设个布尔值判断为TRUE,在接受伤害的触发器里,条件是该值为TRUE时,附加暴击伤害,布尔改为FALSE(所以仅限单体技能暴击,前提:在发动技能效果到接受伤害过程中,没有在对目标单位造成其他伤害(献祭等的伤害可以用伤害值判断来排除))
回复

使用道具 举报

发表于 2009-12-7 07:45:48 | 显示全部楼层
回 ls

你怕麻烦的话可以用几个触发来减少工作量

触发器一
先注册一个  所有单位 接受伤害 的触发器
并且条件为,实数 单位所受的伤害值 等于 1.03   
(1.03只是个随意值,你可以随便设置,只要这个值是一个基本可以被忽视的伤害值)
动作为,
随机实数 0.00 到 100.00 小于或等于 udg_命中率
      随机实数 0.00 到 100.00 小于或等于 udg_暴击率
             命令 伤害来源 对 触发单位 造成 udg_伤害 点伤害,攻击类型为X,伤害类型为Y

触发器二
然后,每当单位施放某个伤害性技能时
设置 udg_命中率 = 施法单位命中率 - 技能目标闪避率
设置 udg_暴击率 = 施法单位暴击率
设置 udg_伤害 = 该技能的伤害
命令 施法单位 对 技能目标大你问 造成 1.03 点伤害,攻击类型为混乱,伤害类型为未知
(注:设置全局变量,比如设置udg_XX率与造成1.03伤害之间不能有等待的延迟事件)

那么此时触发器二就会相应到触发器一
当然,上面所说的只是一个举例,
由于我地图里还有物理/法术/DOT等伤害类型以及其他因素而比较繁琐
就不能一一解释了
最后,其实还有其他简单的方法,
具体要看地图的内容和作者的需要了。
回复

使用道具 举报

 楼主| 发表于 2009-12-7 14:43:12 | 显示全部楼层
谢谢你O(∩_∩)O~YOU ARE HELPFUL~,在U9也见到你的,呵呵
关于这个
引用第3楼蟋有的蟀于2009-12-07 07:45发表的  :
触发器二
然后,每当单位施放某个伤害性技能时
设置 udg_命中率 = 施法单位命中率 - 技能目标闪避率
设置 udg_暴击率 = 施法单位暴击率
设置 udg_伤害 = 该技能的伤害
命令 施法单位 对 技能目标大你问 造成 1.03 点伤害,攻击类型为混乱,伤害类型为未知
(注:设置全局变量,比如设置udg_XX率与造成1.03伤害之间不能有等待的延迟事件)
    上面的这个简化的办法,对于像有射弹速率的技能的话,会有点问题。。。
我先试着用BOOLEAN判断做一下,成功的话再与你交流~可能我这个方法看上去比较怪~
  还有,请问下:你的图里的暴击系统,是用捕捉类似1.01等特殊伤害的方法判断的吗?
回复

使用道具 举报

发表于 2009-12-7 14:50:34 | 显示全部楼层
最好的方法是修改技能本身
只要将所有的技能的伤害都用触发添加就可以了

布尔值的方法的精确度很令人怀疑
回复

使用道具 举报

发表于 2009-12-7 23:24:34 | 显示全部楼层

回 4楼(mne) 的帖子

举个例子吧

技能编辑器里
设置风暴之锤的伤害数据 = 1.01
设置udg_法术暴击率[1] = 30.00
设置udg_法术暴击率[2] = 50.00
单位接受伤害,伤害值 = 1.01
随机实数 最小值 0.00 最大值 100.00    小于或等于   udg_法术暴击率[玩家索引(伤害来源所有者)]
为真,命令伤害来源对触发单位造成 (200 * (伤害来源)风暴之锤技能等级) 点伤害
为假,命令伤害来源对触发单位造成 (100 * (伤害来源)风暴之锤技能等级)  点伤害
玩家1施放风暴之锤是暴击率是30%,玩家2是50%
这样,即使是"射弹速率的技能"也能正确相应伤害事件

而以上,仅仅是例子,
你可以根据需要让这个模拟的伤害"可暴击""可抵消""可闪避"等,具体要看你的需要
回复

使用道具 举报

发表于 2009-12-8 09:39:02 | 显示全部楼层
完全模拟法术或者所有技能用马甲释放,谢谢。
回复

使用道具 举报

 楼主| 发表于 2009-12-8 17:15:31 | 显示全部楼层

回 6楼(蟋有的蟀) 的帖子

我知道这个方法比较常用,做起来也不复杂,
    问题就是在我的图里这种做法不太适合,首先设1.01伤害捕捉的话,英雄有魔法抗性,技能里有BMG的放逐,物品里有33%魔抗护腕(有的玩家可能还会带2个),所以不能精确捕捉1.01的值,如果要捕捉<=1.01的话,也会造成不精确,所以才想其他的方法做的。。
    现在我的那个(简单的写来):  
   发动技能效果
   概率BOOLEAN赋值true
   
然后动态注册伤害
判断伤害>30(假设)
BOOLEAN赋值false
造成伤害的50%暴击伤害

已经测试成功,没有发现问题~~我还会进一步测试的
回复

使用道具 举报

发表于 2009-12-8 18:13:42 | 显示全部楼层
“   发动技能效果
   概率BOOLEAN赋值true
   
然后动态注册伤害
判断伤害>30(假设)
BOOLEAN赋值false
造成伤害的50%暴击伤害”
这种东西我建议你不要用,误差太大。
因为很多技能都有投射物。
而单位发动技能效果是在投射物出现的时候响应的。
伤害却是在投射物到达目标之后产生的。
在这两者之间的差距按照普通情况应该是在1s或0.5s左右。
而这时间差内仅仅是普通攻击一次,可能就会出现Bug。


我推荐一种方法:
所有单位都有一个被隐藏的毒针技能(就是那个攻击会出现毒性效果的技能)。
把他的所有伤害等数据改为0,让它变成一个攻击附加Buff的技能。
Buff持续时间需要改一下,为0.001。
Buff本身你可以用默认的,也可以换成别的自己的(最好两个Buff数据都是同样的一个Buff)。

然后只需要一个核心触发。
任意单位收到伤害(这个你用:地图初始化为所有单位注册单位受到伤害事件,单位进入完整地图区域注册单位受到伤害事件,搜索一下可以得到更具体的演示或触发)
条件:
伤害>0
受到伤害的单位没有<毒性的Buff>
伤害来源不是<陷阱……等不是法术不是攻击的伤害来源类型>
动作:
概率进行法术暴击等动作。

排除了攻击受到伤害的伤害之后,大部分都是法术的伤害了。
做一些很简单的规避基本就可以符合要求了。
回复

使用道具 举报

发表于 2009-12-8 21:35:02 | 显示全部楼层
引用第9楼血戮魔动冰于2009-12-08 18:13发表的 :
“   发动技能效果
   概率BOOLEAN赋值true
   
然后动态注册伤害
判断伤害>30(假设)
.......


要是遇到爆击or重击导致法球无效怎么弄……
回复

使用道具 举报

 楼主| 发表于 2009-12-8 22:34:52 | 显示全部楼层
引用第9楼血戮魔动冰于2009-12-08 18:13发表的  :
“   发 发动技能效果
   概率BOOLEAN赋值true
   
然后动态注册伤害
判断伤害>30(假设)
BOOLEAN赋值false
造成伤害的50%暴击伤害”
这种东西我建议你不要用,误差太大。
因为很多技能都有投射物。
而单位发动技能效果是在投射物出现的时候响应的。
伤害却是在投射物到达目标之后产生的。
在这两者之间的差距按照普通情况应该是在1s或0.5s左右。
而这时间差内仅仅是普通攻击一次,可能就会出现Bug。
呵呵,谢谢你O(∩_∩)O~可能我的表达得不是很清楚~是这样的。。。
在发动技能是只是让BOOLEAN值=true,并没有在技能发动时进行暴击伤害,所以不存在这样的问题
是在接受伤害是用来判断是否会出暴击的依据而已,可以看成是一个“暴击BUFF”而已

你的方法不错,其实你的方法更直接,就是“规避”我也去试一下~谢谢O(∩_∩)O~,然后我再看下毒性会和我图的几个法球冲突否~
回复

使用道具 举报

 楼主| 发表于 2009-12-8 22:41:43 | 显示全部楼层
引用第10楼木有鱼丸于2009-12-08 21:35发表的  :

引用
引用第9楼血戮魔动冰于2009-12-08 18:13发表的 :
“   发动技能效果
   概率BOOLEAN赋值true
   
然后动态注册伤害
判断伤害>30(假设)
.......  


要是遇到爆击or重击导致法球无效怎么弄……


呵呵,谢谢~O(∩_∩)O~问得很好,所以在括号里,我写上了(假设)2字,因为在做的时候不是写的30,等级高了物理攻击伤害可能就会>30,是一个和等级有关的一个模拟函数!
关于暴击和重击是这样的:重击的话是附加25点伤害,所以这个数值可以通过伤害判定来排除;因为我所制作暴击系统的地图是LT3C,所以BM没有设定能产生暴击的“主动技能”,自然不会有问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-5-3 10:13 , Processed in 0.046029 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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