##EasyReadMore##

2009年12月22日 星期二

[教程] 通向DIY AI之路系列教程---之簡單的BUFF判斷讓AI司馬E不和郭嘉C衝突




文章網址: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被自己睡住的人呢?

同樣是按照這種思路


沒有留言:

張貼留言

※怎麼下載?Xuite硬碟MediaFireBadongoSendSpace
※文章可以轉貼嗎?可以,不過要註明出處、標示本站連結。
※載點可以轉貼嗎?不可以,不能盜連。
※建議瀏覽器:Chrome 或 Firefox 或 Opera 或 IE7以上
!請按+1來支持本站!