文章網址:http://bbs.wow8.org/thread-131013-1-1.html 本帖最後由 ROUSTAR31 於 2009-11-7 11:26 編輯 我要說明的是,這個防止衝突不是100%的有效。因為技能的釋放有一定的時間,有可能司馬和郭嘉同時EC。看了下面的代碼講解我再詳細解釋為什麼吧。 部分代碼在0.51里有,只是我自己定義的沒有。 由於郭嘉的C和司馬的E的那個BUFF的ID都是一樣的, 所以我們只要一個BUFF判斷函數就可以了 定義一個判斷單位有司馬懿E和郭嘉C的BUFF的函數: function IsbeiEC takes unit TheUnit returns boolean return(GetUnitAbilityLevel(TheUnit,'BUim')>0) endfunction 下面要做的就是在司馬和郭嘉與E和C相關的施法函數里加上這個判斷BUFF if (IsLifeAlmostFull(HeroD) or EnemyHeroHP>1500) and MyHeroMP>300 and rangeToTowerD>1100 and rangeToHeroD<700 and can_sima_cast_ef() then set zs_action_prioty_arry[52]=82 這是司馬EF的一個函數,加上後變成下面的 if (IsLifeAlmostFull(HeroD) or EnemyHeroHP>1500) and MyHeroMP>300 and rangeToTowerD>1100 and rangeToHeroD<700 and can_sima_cast_ef() and not IsbeiEC(HeroD) then set zs_action_prioty_arry[52]=82 其他地方大家可以這樣加。比如郭嘉的: if HeroD!=null and (not IsJuFeng(HeroD)) and can_guojia_cast_c() and (EnemyHeroHP<500 or zs_HeroPower>0 ) then set zs_action_prioty_arry[52]=89 加上後變成這樣的: if HeroD!=null and (not IsJuFeng(HeroD)) and can_guojia_cast_c() and (EnemyHeroHP<500 or zs_HeroPower>0 ) and not IsbeiEC(HeroD) then set zs_action_prioty_arry[52]=89 舉一反三而已。 看過了上面的應該知道為什麼不是100%有效吧?!但絕對不會有被司馬E住了的人郭嘉來個C或者郭嘉C住司馬來個E. 那麼怎麼讓曹仁C不C被自己睡住的人呢? 同樣是按照這種思路 |
暴雪英霸是未來很看好的遊戲! 站長最近都玩 英雄聯盟 或 Mstar 。 以前站長擅長幫熱門的 魔獸3 地圖加入 AI, 可以和電腦英雄對戰,電腦懂的和人對話。
##EasyReadMore##
2009年12月22日 星期二
[教程] 通向DIY AI之路系列教程---之簡單的BUFF判斷讓AI司馬E不和郭嘉C衝突
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言