找回密码
 点一下
查看: 4112|回复: 1

[头目]判断单位无敌的方法

  [复制链接]
发表于 2009-9-3 13:23:24 | 显示全部楼层 |阅读模式
这个帖子是很久很久之前发在密会区的呢~所以为了大众就转帖出来了,用手机弄这些文字你们知道有多痛苦嘛……
其一:发现无论是用T令单位无敌,还是单位拥有无敌这个技能,其实2者本质是一样的。即用T令单位无敌其实是靠给单位添加无敌技能所实现的。
其二:发现无敌技能的拷贝版本是无效的。即,所有以无敌技能作为模版创建的新技能全都无法令单位无敌。只有原版无敌,即'Avul'才有效。
综合以上2条发现,就可以得出以下结论单位的无敌等效于它拥有无敌(Avul)技能于是,现在就有了一个非常简单又准确的判断单位是否无敌的方案。即判断其是否拥有无敌(Avul)技能。
关于如何判断一个单位是否拥有某个技能的方法,我以前在DDWE的每日帖士里提到用DDWE的Make Ability Permanent的Function版本就可以做到
以下就是用DDWE判断一个单位是否无敌的方法:
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Successful: ForXXXset ability state to Permanent for ability 无敌 Equal to True
Then - Actions
Debug - Debug 该单位处于无敌状态
Else - Actions
XXX部分用想要判断的单位替代,解决!
应该说,判断一个单位是否拥有某个技能,用Make Ability Permanent是最合适的。但是普通版本的WE并没有这个触发,不过由于无敌这个技能生效的时候,其技能等级必不为0,所以还有这个可以变通的法子:
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of 无敌 forXXX) Greater than or equal to 1
Then - Actions
Game - Display to (All players) the text: 该单位处于无敌状态
Else - ActionsXXX
部分用想要判断的单位替代,这样也可以判断单位是否无敌,不过要注意的是:并非所有的技能都可以用这个方法来判断其是否存在于某单位身上,比如,“攻击”这个技能存在于绝大部分单位身上,但是其默认等级为0级,因此就不能用判断等级的方法判断了,这时候一样要用Make Ability Permanent的方法。以下是一个判断单位是否无敌的小函数,一共只有一句,够短吧 :)
[jass]
function IsUnitInvunerable takes unit whichUnit returns boolean
return UnitMakeAbilityPermanent(whichUnit, true, 'Avul')
endfunction
[/jass]
 楼主| 发表于 2009-9-3 14:45:13 | 显示全部楼层
然而不知是否由于年代久远的缘故~所以现在已经不适用了~
引用楼主Renee于2008-03-03 20:45发表的 [帖个演示罢]如何利用命令函数来判断目标是否无敌 :
今天在回答hmmm的问题的时候连续说错2次~~暗暗~~
话说攻击命令是无法判断的~~因为还有移动攻击的存在~~不过可以用技能命令来判断~~这里就用一个死亡之指的技能命令来判断目标单位是否无敌~~
对圣盾、巫毒、回城、无敌技能、触发无敌都有效~~
注意技能命令是否发送成功的判断条件~~必须有足够法力释放技能~~技能目标必须位于施放者的可见区域(不能在迷雾内)~~技能必须没有在cd~~施放者没有在进行其他无法打断的动作~~
如此……

InvulnerableCheck.w3x

14 KB, 下载次数: 54

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 23:55 , Processed in 0.485125 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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