找回密码
 点一下
查看: 4207|回复: 16

检测技能是否CD好了。

[复制链接]
发表于 2007-10-23 22:23:46 | 显示全部楼层 |阅读模式
[codes=jass]
function IsUnitAbilityCdOk takes unit u,string abilityid returns boolean
[/codes]
作用:返回一个单位的某个技能是否CD好了。
地图如下: IsUnitCdOk.w3x (18 KB, 下载次数: 206)

评分

参与人数 1威望 +30 收起 理由
kook + 30 很好的方法

查看全部评分

发表于 2007-10-24 08:13:55 | 显示全部楼层
这么强大?

如何检测的?

又是J有T无的功能?
回复

使用道具 举报

发表于 2007-10-24 09:50:12 | 显示全部楼层
朱朱谢谢咯。。。。。
回复

使用道具 举报

 楼主| 发表于 2007-10-24 10:15:56 | 显示全部楼层
忘说了,这个地图里的测试是对某一个单位按"停止",就给出测试结果.
回复

使用道具 举报

发表于 2007-10-24 10:25:38 | 显示全部楼层
其实还素timer纪录的好~
回复

使用道具 举报

 楼主| 发表于 2007-10-24 11:22:07 | 显示全部楼层
引用第4楼Red_Wolf于2007-10-24 10:25发表的  :
其实还素timer纪录的好~
你觉得好你可以试一试.
我相信给dota用Timer记录技能CD绝对不是一件简单的事件.
80多个英雄,每个英雄4个技能,每个技能平均也有4级,而且不同等级的技能CD不一样,
也就是说,仅仅记录技能CD总时间全局变量就要:80*4*4 这么多.
并且dota还有刷新球,还有wtf模式,这项工作估计不易.
回复

使用道具 举报

发表于 2007-10-24 12:25:26 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

 楼主| 发表于 2007-10-24 12:29:50 | 显示全部楼层
如果技能是有目标的,最好就调用一个无目标命令.
如果技能是无目标的,就调用一个有目标命令.
结果调用失败,技能没放出来,但是得到了最有用的信息:技能是否CD好了没有.
回复

使用道具 举报

发表于 2007-10-24 13:30:51 | 显示全部楼层
我得到的结果是  immediate命令会对目标与点的命令技能检查得出技能是否可用,反过来其他点、目标、双对象对立即命令技能则一定返回false~
而如果对于狂战士、献祭、魔法盾、疾风步这类无施法动作的技能来说,即使随后用“stop”也无法阻止当前命令被执行,只是一个遗憾。
回复

使用道具 举报

发表于 2007-10-24 13:38:13 | 显示全部楼层
[codes=jass]    set ok=IssueImmediateOrder(u,abilityid)
    call PauseUnit(u,true)
    call PauseUnit(u,false)
    call IssueImmediateOrder(u,"holdposition")
[/codes]
使用一组pause/unpause 似乎能够解决,厄。。
回复

使用道具 举报

 楼主| 发表于 2007-10-24 13:47:57 | 显示全部楼层
引用第8楼kook于2007-10-24 13:30发表的  :
我得到的结果是  immediate命令会对目标与点的命令技能检查得出技能是否可用,反过来其他点、目标、双对象对立即命令技能则一定返回false~
而如果对于狂战士、献祭、魔法盾、疾风步这类无施法动作的技能来说,即使随后用“stop”也无法阻止当前命令被执行,只是一个遗憾。
确实这样,如果一个技能不打断当前施法动作,那么就检查不出来了.

简单的说,一个巫妖正在放死亡凋零,如果他又放了某个技能,并没有打断死亡凋零,那么这个技能是检查不出来的.
有CD的被动技能也是无法检查的,比如重生.

我怀疑War3中很多技能在施法的时候,都是先给单位一个stop命令.
你上边用hold明显不行,检查一次后,还是让单位stop好,用hold不太好.
stop是war3默认的停止,比如你命令一个单位走到一个地点,最后它是stop在那里,而不是hold在那里.
回复

使用道具 举报

发表于 2007-10-24 13:56:01 | 显示全部楼层
要检测技能CD是否好了

给这个英雄一本重修之书不可以嘛?

然后再让英雄把技能又学回去(等everguo的这个演示中)
回复

使用道具 举报

发表于 2007-10-24 14:22:57 | 显示全部楼层
引用第11楼jjj8于2007-10-24 13:56发表的  :
要检测技能CD是否好了

给这个英雄一本重修之书不可以嘛?

然后再让英雄把技能又学回去(等everguo的这个演示中)

这倒是个无敌的方法,因为暴雪内置的重修对cd中的技能无效。可惜只能检查英雄技能
回复

使用道具 举报

发表于 2007-10-24 14:39:47 | 显示全部楼层
引用第10楼朱朱于2007-10-24 13:47发表的  :

确实这样,如果一个技能不打断当前施法动作,那么就检查不出来了.

简单的说,一个巫妖正在放死亡凋零,如果他又放了某个技能,并没有打断死亡凋零,那么这个技能是检查不出来的.
有CD的被动技能也是无法检查的,比如重生.
.......

我的意思倒不是那样,因为用order检测技能的话,光用“stop"无法阻止由于使用检测命令而引起的技能释放;话说狂战士可以被检测出来,但在检测过程中会用掉;疾风步、献祭这类无施法动作的也是一样~ 使用一组pause/unpause可以防止这类技能在检测过程中就消耗掉,而那个“hold”倒不是重点,因为演示中触发是条件“stop”,我担心这里用“stop”会出现新的问题(确实可能出现死循环,有关pause/unpause连用可以将最近的一个命令以每秒200次的速度播放,直到由玩家发布一个新的命令)。

对于stop的作用我不同意,一个单位什么事都不做,虽然看上去“stop”上有个绿框~但单位的当前命令并非stop而是空字符,相当如null,和真正按下stop得到的当前命令是不同的。
回复

使用道具 举报

恶声恶气 该用户已被删除
发表于 2007-10-25 17:54:09 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2007-11-1 13:44:19 | 显示全部楼层
能不能帖下函数?

我们学校把下载全部禁掉了~
回复

使用道具 举报

发表于 2007-11-1 16:53:13 | 显示全部楼层
强大啊,下来看看。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 16:34 , Processed in 0.160435 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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