找回密码
 点一下
查看: 3927|回复: 47

英雄攻击速度过快导致Boss无法释放技能

[复制链接]
发表于 2012-9-22 13:41:19 | 显示全部楼层 |阅读模式
本帖最后由 超薄杜蕾斯 于 2012-9-26 21:08 编辑

我设计的Boss图,用“单位接收伤害”事件捕捉伤害来源,让Boss受到伤害第一时间随机释放技能反击,但是发现BUG:
如果英雄的攻击速度过快,会导致Boss原地不停地做准备释放技能的动作,不移动,不攻击,不释放技能。求一个T触发演示。
要求:Boss在接收伤害的同时还可以很自然地释放技能反击,当Boss的技能都在冷却的时候,Boss会自然地选择仇恨高的英雄攻击。
拜托了,地精研究院的大神们![s:190]
发表于 2012-9-22 14:33:04 | 显示全部楼层
其实你的触发问题有两个,一个是随机,一个是第一时间,猜测你的问题就是Boss受到攻击,命令Boss对单位发布随机技能,结果Boss准备发布第一技能的时候,下一个伤害到了,这回随机到第二技能,于是取消施法,再放二技能……最后一个都没放出去……

解决方法自然很简单,受到伤害的时候关闭触发器,等待5秒,再开启就是了……(注意持续施法类技能)

其实要这么做的话就没什么意思了,魔兽有默认的AI,比如说雷霆一击,战争践踏,震荡波等技能,都是要在能同时打中3个单位的情况下才会放的,每个技能都有不同的用法,如果只是对仇恨最高的单位施法,有点太单调了……

不同技能要用上不同AI,这才是王道……
回复

使用道具 举报

 楼主| 发表于 2012-9-22 14:48:04 | 显示全部楼层

回 lo 的帖子

lo:
其实你的触发问题有两个,一个是随机,一个是第一时间,猜测你的问题就是Boss受到攻击,命令Boss对单位发布随机技能,结果Boss准备发布第一技能的时候,下一个伤害到了,这回随机到第二技能,于是取消施法,再放二技能……最后一个都没放出去……

解决方法自然很简单,受到伤害的时候关闭触发器,等待5秒,再开启就是了……(注意持续施法类技能)

其实要这么做的话就没什么意思了,魔兽有默认的AI,比如说雷霆一击,战争践踏,震荡波等技能,都是要在能同时打中3个单位的情况下才会放的,每个技能都有不同的用法,如果只是对仇恨最高的单位施法,有点太单调了……
.......
33.jpg

是这样吗?我测试了一下,boss在接收伤害的时候,居然一次技能都没释放
是触发器哪里的问题呢?
至于“
不同技能要用上不同AI,这才是王道……
”,对于刚学触发器的新人,更是无从下手啊
回复

使用道具 举报

发表于 2012-9-22 15:25:22 | 显示全部楼层
触发器有没有问题就不知道了,不过突然想到了一个很简单的好方法……魔法伤害点(似乎是这么叫的吧),只要没有引导时间,这么做问题不大……

至于不同技能的AI,其实用默认技能作为模版就可以了,电脑会自动放的,不过在条件不足,靠走位来创造条件的猫咪就不会了……

然后,现在不是有仇恨了么,不需要用受到伤害来作为事件,用事件周期作为事件也没关系吧……
回复

使用道具 举报

 楼主| 发表于 2012-9-22 15:37:27 | 显示全部楼层

回 lo 的帖子

lo:触发器有没有问题就不知道了,不过突然想到了一个很简单的好方法……魔法伤害点(似乎是这么叫的吧),只要没有引导时间,这么做问题不大……

至于不同技能的AI,其实用默认技能作为模版就可以了,电脑会自动放的,不过在条件不足,靠走位来创造条件的猫咪就不会了……

然后,现 .. (2012-09-22 15:25) 
。。。我怎么都看不懂?
我跟地球脱节了吗?
什么“魔法伤害点”?什么“事件周期”?
回复

使用道具 举报

发表于 2012-9-22 15:39:13 | 显示全部楼层
说到“随机释放技能的AI”,就需要说魔兽的一个Bug了
[trigger]Bug
    事件
        单位 - 任意单位 被攻击
    条件
        (被攻击单位) 等于 步兵 0003 <预设>
        (攻击单位) 等于 血魔法师 0000 <预设>
    动作
        单位 - 对 血魔法师 0000 <预设> 发布 人族血魔法师 - 虚无 命令到目标: 步兵 0001 <预设>
[/trigger]
如果在单位攻击的时候命令它对攻击目标之外的单位释放技能,该单位就会一直卡在那里
“原地不停地做准备释放技能的动作,不移动,不攻击,不释放技能”

不过你的地图 不一定是因为这个Bug才发生了Bug...
单位释放不同技能也是会打断当前的动作的

[trigger]Test
    事件
        单位 - 山丘之王 0000 <预设> 接受伤害
    条件
    动作
        单位 - 对 山丘之王 0000 <预设> 发布 人族山丘之王 - 风暴之锤 命令到目标: (伤害来源)
[/trigger]
如果山丘之王只会这一个技能的话,是不会有问题的...因为相同的命令不会打断单位当前动作

[trigger]Bug
    事件
        单位 - 山丘之王 0000 <预设> 被攻击
    条件
    动作
        如果所有条件成立则做动作1,否则做动作2
            If - 条件
                B 等于 TRUE
            Then - 动作
                单位 - 对 山丘之王 0000 <预设> 发布 人族山丘之王 - 风暴之锤 命令到目标: (攻击单位)
                设置 B = FALSE
            Else - 动作
                单位 - 对 山丘之王 0000 <预设> 发布 人族山丘之王 - 雷霆一击 命令
                设置 B = TRUE
[/trigger]
不过如果是不同的技能的话,英雄就会一直卡在那里了,因为它不知道到底要使用哪个技能...

那么,为了防止单位重复执行命令,你需要加入限制条件,判断单位当前的命令是不是释放技能
[trigger]Test
    事件
        单位 - 山丘之王 0000 <预设> 接受伤害
    条件
        ((触发单位) 的当前命令ID.) 不等于 (转换 thunderbolt 为命令ID)
    动作
        单位 - 对 山丘之王 0000 <预设> 发布 人族山丘之王 - 雷霆一击 命令
[/trigger]
比如这样,就是让单位只会在没有释放“thunderbolt ”(风暴之锤)的时候才释放“雷霆一击”

“攻击命令”也是同理,限制Boss只会在“没有释放技能”的时候才攻击,可以避免攻击命令打断技能的释放

那么,如何判断技能是否在CD当中,以及命令的发布是否成功呢?

答:你需要使用自定义代码
利用IssueTargetOrder函数的返回值,就可以获得命令是否发布成功,也就能知道技能是否能够使用了(CD,耗魔,目标状态等)
[trigger]Bug
    事件
        单位 - 山丘之王 0000 <预设> 被攻击
    条件
    动作
        自定义代码: if(IssueTargetOrder( gg_unit_Hmkg_0000, "thunderbolt", GetAttacker() ))then
        自定义代码: call DisplayTextToPlayer(GetLocalPlayer(),0,0,"S")
        自定义代码: else
        自定义代码: call DisplayTextToPlayer(GetLocalPlayer(),0,0,"CD")
        自定义代码: endif
[/trigger]
这样...没CD的时候会输出“S”,有CD的时候会输出“CD”

总之,想要编一个AI你需要理清你的逻辑
如果出现问题了的话,那么不是遇到Bug,就是你的逻辑混乱了
回复

使用道具 举报

发表于 2012-9-22 15:44:57 | 显示全部楼层
嗯,发现了,原来你已经回复了口牙
目测你的触发的问题就是“单位释放不同技能”的问题

那么,加入一个限制条件,判断英雄当前命令是不是那三个技能吧
如果英雄正在释放技能的话,就不要再发布其他命令了~~
回复

使用道具 举报

 楼主| 发表于 2012-9-22 21:24:54 | 显示全部楼层

回 散华 的帖子

散华:说到“随机释放技能的AI”,就需要说魔兽的一个Bug了
[trigger]Bug
&#160;&#160;&#160;&#160;事件
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;单位 - 任意单位 被攻击
&#160;&#160;&#160;&#160;条件
.......&#160;(2012-09-22 15:39)&#160;
自定义代码?我的逻辑混乱了。。。。。
我不懂什么自定义代码啊。。。。。[s:186]
大神能给个T触发演示我看看吗?
回复

使用道具 举报

发表于 2012-9-22 21:37:24 | 显示全部楼层
要想使用函数,应该来说必须使用自定义代码
我不是已经把触发贴出来了嘛,你照写就行了
反正不懂就去学吧,学着学着就懂了
回复

使用道具 举报

 楼主| 发表于 2012-9-22 22:01:39 | 显示全部楼层

回 散华 的帖子

散华:
要想使用函数,应该来说必须使用自定义代码
我不是已经把触发贴出来了嘛,你照写就行了
反正不懂就去学吧,学着学着就懂了
这样就可以了吗?
11.jpg

就只是加命令ID条件?
回复

使用道具 举报

 楼主| 发表于 2012-9-22 22:07:23 | 显示全部楼层
刚刚测试了一下,不行啊
回复

使用道具 举报

发表于 2012-9-22 23:53:05 | 显示全部楼层
YD里有判断是否技能发布成功之类的~

6楼的自定义代码就是:
[trigger]Bug
    事件
        单位 - 山丘之王 0000 <预设> 被攻击
    条件
    动作
        如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
            If - 条件
                (对 山丘之王 0000 <预设> 发布 人族山丘之王 - 风暴之锤 命令到目标: (攻击单位)) 等于 TRUE
            Then - 动作
                游戏 - 对 (本地玩家) 在屏幕位移(0.00,0.00)处显示文本: S
            Else - 动作
                游戏 - 对 (本地玩家) 在屏幕位移(0.00,0.00)处显示文本: CD
[/trigger]
YDWE 1.22.8
回复

使用道具 举报

 楼主| 发表于 2012-9-23 02:28:25 | 显示全部楼层

回 chyj4747 的帖子

chyj4747:YD里有判断是否技能发布成功之类的~

6楼的自定义代码就是:
[trigger]Bug
&#160;&#160;&#160;&#160;事件
.......&#160;(2012-09-22 23:53)&#160;
我就是不想用YDWE才上网求大神你们的啊
wow8的编辑器不能触发吗?
回复

使用道具 举报

发表于 2012-9-23 05:54:26 | 显示全部楼层
超薄杜蕾斯:我就是不想用YDWE才上网求大神你们的啊
wow8的编辑器不能触发吗? (2012-09-23 02:28)
没用过所以不知道有没有把那些函数做成T。。

不是有一个什么全函数版吗。。不知道那个里面有没有
回复

使用道具 举报

发表于 2012-9-23 08:58:41 | 显示全部楼层
有时候用了YD,一张图就成了……
有时候用了YD,一张图就毁了……
回复

使用道具 举报

发表于 2012-9-23 09:57:11 | 显示全部楼层
猫咪是不是又把我给你的图玩坏了呢
回复

使用道具 举报

 楼主| 发表于 2012-9-23 11:27:29 | 显示全部楼层

回 lo 的帖子

lo:有时候用了YD,一张图就成了……
有时候用了YD,一张图就毁了……
&#160;(2012-09-23 08:58)&#160;
大神说的话,正正说到我的心坎去了!!!!
YDWE利与弊,身同感受啊
貌似现在还没解决我提出的问题啊
回复

使用道具 举报

 楼主| 发表于 2012-9-23 23:35:57 | 显示全部楼层

回 超薄杜蕾斯 的帖子

超薄杜蕾斯:大神说的话,正正说到我的心坎去了!!!!
YDWE利与弊,身同感受啊
貌似现在还没解决我提出的问题啊&#160;(2012-09-23 11:27)&#160;
没人出手吗?
回复

使用道具 举报

发表于 2012-9-24 20:44:31 | 显示全部楼层
最简单的就是等待啊,触发施放技能后先关闭该触发,发布命令后等待x秒(x为BOSS的魔法施放点+0.01),然后重开该T
回复

使用道具 举报

 楼主| 发表于 2012-9-24 20:55:42 | 显示全部楼层

回 chyj4747 的帖子

chyj4747:最简单的就是等待啊,触发施放技能后先关闭该触发,发布命令后等待x秒(x为BOSS的魔法施放点+0.01),然后重开该T (2012-09-24 20:44)
40_70809_a8db6421ea208dc.jpg

有问题的话,求大神T演示
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 10:04 , Processed in 0.326436 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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