##EasyReadMore##

2010年1月1日 星期五

通向DIY AI之路系列教程——如何實現郭嘉點地板C

.
原文網址:http://bbs.wow8.org/thread-134530-1-1.html

第一次寫教程,可能還不夠熟練,以後不夠詳細的地方請跟帖指出
function can_guojia_cast_c takes nothing returns boolean
return CanCastAbilityOrder(mHero,'A01F',"impale")
endfunction

這個語句是判斷郭嘉是否可以施放C,mHero指的是郭嘉,'A01F'是技能C的ID,"impale"是技能C的施法命令字符。接下來就是讓郭嘉點人C的語句了:

function guojia_cast_c takes unit target returns nothing
call  CastTargetSkillByOderStr(mHero,'A01F',"impale",target)
call Sleep(0.7)
endfunction

這個語句裡,新變量target郭嘉要C的目標,內容是命令郭嘉C被作為target的單位,Sleep(0.7)是等待0.7秒。為什麼要等待0.7秒呢?因為郭嘉的C需要0.7秒的施放時間,中間發佈其他命令會打斷技能的施放。

看完0.51的函數後,接下來來教大家如何讓郭嘉點地板C

首先第一句的內容和上面的一樣,判斷郭嘉是否能施放C
function can_guojia_cast_c takes nothing returns boolean
return CanCastAbilityOrder(mHero,'A01F',"impale")
endfunction

接來是重點了,設置一個點的變量,變量名為AM。

function loc_guojia_cast_c takes unit u returns nothing
local location AM
set AM=LP(u,mHero,-20)
call guojia_cast_c(AM)
call RemoveLocation(AM)
set AM=null
endfunction

(u,mHero,-20)這句話的意思是,獲取郭嘉指向目標單位的角度,距離為20的點
然後,命令郭嘉往剛剛設置的變量AM那裡點C就可以了,C的函數如下。其中LP是獲取2個單位之間距離的函數,需要自己定義(其實叫什麼名字都可以)

function guojia_cast_c takes location AM returns nothing
call CastTargetSkillByOderStr(mHero,'A01F',"impale",AM,.65)
endfunction

注意下函數的排列順序,要把第二句排在最後,第三句排在中間,為了方便說明才調換了順序,可用函數如下:
function can_guojia_cast_c takes nothing returns boolean
return CanCastAbilityOrder(mHero,'A01F',"impale")
endfunction
function guojia_cast_c takes location AM returns nothing
call CastTargetSkillByOderStr(mHero,'A01F',"impale",AM,.65)
endfunction
function loc_guojia_cast_c takes unit u returns nothing
local location AM
set AM=LP(u,mHero,-20)
call guojia_cast_c(AM)
call RemoveLocation(AM)
set AM=null
endfunction

PS:因為C地板的函數數據是從2.2的AI裡複製的,所以部分函數有加密,可能我忘記還原了,有錯誤請指出!
.

沒有留言:

張貼留言

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