文章網址:http://bbs.wow8.org/thread-130523-1-1.html 其實這個知識我再7月份發過一次,但現在還是來說下(注意:我基本引用的都是0.51的AI文件裡的函數) 下面我們來看0.51AI文件裡關於控制司馬懿S掉N的那個函數:在comonn.ai的2400行左右。 function CastTargetSkillByOderIdDelayed takes unit TheUnit,integer abilcode,integer Order ,unit TheTaget,real delay returns boolean local player ThePlayer=ai_player local integer PlayerID=GetPlayerId(ThePlayer) local location Loc=null local boolean Casted set Loc=GetUnitLoc(TheTaget) call SetPlayerAbilityAvailable(ThePlayer,abilcode,true) set Casted=IssuePointOrderByIdLoc(TheUnit,Order,Loc) call Sleep(delay-0.25)..............註釋:delay的值是2.00 if not IsUnitInRangeLoc(TheTaget,Loc,250) then call IssueImmediateOrder(TheUnit,"stop") call debugstr("stop dazhao sima==========================") call SetPlayerAbilityAvailable(ThePlayer,abilcode,false) call RemoveLocation(Loc) set Loc=null return false endif call Sleep(0.55) call SetPlayerAbilityAvailable(ThePlayer,abilcode,false) call RemoveLocation(Loc) set Loc=null return(Casted) endfunction 函數開始都是jass自定義的局部變量。具體大家看紅色大字那三行。 其實意思是這樣:在AI司馬懿放技能過1.75秒後檢查敵人和技能釋放點的距離要是大於250就命令其S掉。 那麼我們可以在第2行加些限制條件,比如敵人HP小於100.那麼就變成了這樣: call Sleep(delay-0.25) if not IsUnitInRangeLoc(TheTaget,Loc,250) or GetHP(TheTarge)<100 then call IssueImmediateOrder(TheUnit,"stop") 這樣就實現了我的那個AI CN 版本中的敵人HP<100S掉大招 |
暴雪英霸是未來很看好的遊戲! 站長最近都玩 英雄聯盟 或 Mstar 。 以前站長擅長幫熱門的 魔獸3 地圖加入 AI, 可以和電腦英雄對戰,電腦懂的和人對話。
##EasyReadMore##
2009年12月22日 星期二
[教程] 通向DIY AI之路系列教程---之司馬懿怎麼S掉自己的N
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言