ou99孽缘 发表于 2010-12-14 19:23:50

判断单位无敌的方法

有很多同学为如何在魔兽地图中判断单位无敌而感到困扰,今天转这个文章给大家参考~

其一:发现无论是用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的方法。以下是一个判断单位是否无敌的小函数,一共只有一句,够短吧 :)



[*]function IsUnitInvunerable takes unit whichUnit returns boolean
[*]return UnitMakeAbilityPermanent(whichUnit, true, 'Avul')
[*]endfunction




ou99孽缘 发表于 2010-12-14 19:24:05

{:6_306:}
自己路过了
   钱啊

842134345 发表于 2011-2-12 22:33:01

我都不懂你在说些神马

bingxuanoo 发表于 2011-5-19 22:23:59

实际上我也完全看不懂

gw96123 发表于 2011-10-16 02:01:09

...........
页: [1]
查看完整版本: 判断单位无敌的方法