|
这个帖子是很久很久之前发在密会区的呢~所以为了大众就转帖出来了,用手机弄这些文字你们知道有多痛苦嘛……
其一:发现无论是用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] |
|