文章網址:http://bbs.wow8.org/thread-130782-1-1.html 本帖最後由 ROUSTAR31 於 2009-11-5 14:42 編輯 大家一定覺得電腦關羽的風車貼人很犀利吧。 那麼我來剖析下關羽貼人在AI文件裡是怎麼一個原理。 下面來看關羽施法部分的貼人函數。由於牽扯到比較多的內容,我盡量詳細點。 if HeroD!=null and IsImmune(mHero) then set zs_action_prioty_arry[54]=90 endif if HeroD!=null and IsImmune(mHero) and mHeroLevel>11 and MyHeroHP>500 then set zs_action_prioty_arry[54]=103 endif 這是從關羽的施法條件函數里截取出來的。 HeroD是敵方英雄,mHero是AI自己。ISmmune是判斷目標是否魔法免疫 那麼綠色那部分意思就是:如果在檢測範圍內敵人武將存在,且自己是魔法免疫的那麼定義54號施法函數的優先級為90. 又牽扯到優先級的問題,基本這個是數字越大,優先級越高。優先級懂嗎?就是如果AI某個時間能同時做幾件事,那麼是那個優先級數字高的先起作用。 紅色那行其實就是對關羽血量和風車等級判斷後,讓54號施法函數優先級進一步提高到103。 好的,那麼看完了條件,我們來看動作。 if index==54 then if rangeToHeroD>400 and can_UseFeiXie(mHero) then set loc=GetLocBetweenTwoUnitsRangeToFirst(HeroD,mHero,-180) call UseFeiXie(loc) call RemoveLocation(loc) set loc=null endif if (rangeToHeroD>260 or GetUnitMoveSpeed(HeroD)>390) and can_TuiMoDao(mHero) then call UseTuiMoDao(HeroD) endif 先來看,這部分是什麼意思。 我來個翻譯吧。 假如施法函數號=54,那麼 假如離敵人距離>400,且自己可以使用飛鞋,那麼 設置點變量loc=獲取自己和敵人直線方向上距離敵人-180的點,方向為自己指向敵人。 命令使用飛鞋飛到點loc。 釋放點。 清空點的handle. 結束 假如離敵人距離大於260或者敵人移動速度>390 且自己可以使用退魔刀,那麼 對敵人使用退魔刀 ————————————偶是分割線———————————————————————— set loc=GetLocBetweenTwoUnitsRangeToFirst(HeroD,mHero,-180) call gotoLocation(mHero,loc,30) call RemoveLocation(loc) set loc=null call Sleep(0.2) ——————————講解關鍵部分———————————— 上面的就是跟人函數了,就是每隔0.2秒獲取自己和敵人180範圍內的點,然後走到這個點30範圍內。 無敵跟人就是這樣的了。 |
暴雪英霸是未來很看好的遊戲! 站長最近都玩 英雄聯盟 或 Mstar 。 以前站長擅長幫熱門的 魔獸3 地圖加入 AI, 可以和電腦英雄對戰,電腦懂的和人對話。
##EasyReadMore##
2009年12月22日 星期二
[教程] 通向DIY AI之路系列教程---之關羽是如何實現完美貼人
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言