.
暴雪英霸是未來很看好的遊戲! 站長最近都玩 英雄聯盟 或 Mstar 。 以前站長擅長幫熱門的 魔獸3 地圖加入 AI, 可以和電腦英雄對戰,電腦懂的和人對話。
2010年1月29日 星期五
2010年1月27日 星期三
2010年1月25日 星期一
信長之野望14.4C4,AI版0.06,可和電腦對打 (2010年1月25日更新)
.
這張地圖在信長15版未出現之前就已經做好,
只是一直沒有公開,
現在正值寒假期間,
丟圖出來,讓大家體驗一下新的功能。
更新項目如下:
1.使用模組包 造成電腦不動的 Bug,已修正
2.電腦寧寧暫時下架
3.望月千代女 現在不會發呆了
4.計分版多了記憶體漏失的統計
5.電腦英雄的道具欄,空欄現在已經用『烤乳豬』來填滿
(無法亂丟道具給電腦了)
6.增加了技術評定系統!
7.電腦英雄選擇的玩家位置,變更為亂數選擇!
( 以上這些新功能也會更新到信長S跟信長15的AI版 )
這張地圖在信長15版未出現之前就已經做好,
只是一直沒有公開,
現在正值寒假期間,
丟圖出來,讓大家體驗一下新的功能。
更新項目如下:
1.使用模組包 造成電腦不動的 Bug,已修正
2.電腦寧寧暫時下架
3.望月千代女 現在不會發呆了
4.計分版多了記憶體漏失的統計
5.電腦英雄的道具欄,空欄現在已經用『烤乳豬』來填滿
(無法亂丟道具給電腦了)
6.增加了技術評定系統!
7.電腦英雄選擇的玩家位置,變更為亂數選擇!
( 以上這些新功能也會更新到信長S跟信長15的AI版 )
下載地圖:
--載點請勿轉貼--
.
.
.
.
.
2010年1月21日 星期四
[教程] 解碼wonder的AI文件
原文網址:http://bbs.wow8.org/thread-117178-1-27.html
我的願望吧,大家交流經驗,共同學習。
我現在看懂了裝備購買合成(關羽專武的還有點沒搞懂),至於施法控制,真的是難啊
有經驗的說下,從那個函數突破?
裝備突破:先瞭解購買參數和命令:舉個例子,玄武的合成:
function U8 takes nothing returns nothing
call K7(1000,'n00R','I000','I02C')
endfunction
function W8 takes nothing returns nothing
call K7(1150,'n003','I00X','I02C')
endfunction
function Y8 takes nothing returns nothing
call T7(1450,'I00X','I000',-1111,'n014','kygh')
endfunction
其中第一個紅色函數控制買力量之斧,括號裡從左到右分別代表:物品價格,物品出售商店代碼,物品代碼,合成物品代碼
第二個綠色函數是控制買鐵劍的,由於調用的都是K7函數,所以後面的參數一樣。
第三個紫色函數控制買製作書,它調用的是T7函數,所以參數和K7不一樣,括號裡分別代表:物品價格,合成物品所需材料代碼,固定代碼(以前是0,現在變成了-1111,不知道他具體作用),物品出售商店代碼,物品代碼。
至於控制英雄購買,是通過判斷AI金錢和裝備情況來實現的,這方面由於可看性太差,調用的函數太多,就不舉例子了
強調下,上面三個函數只是過程函數,控制買裝備要別的函數。用call 來調用函數名。
對於WONDER的AI版本,可以在地圖的J文件和AI文件裡添加和修改,但一旦將其AI文件導入到其他地圖就會發生紅藍消失等BUG,不知道他是改動了什麼。。。
正在努力研究中。。
下面發個控制SM大招的AI函數:我來漢化下,可能有錯誤。大家指正
1:function DZ takes unit HL,integer KY,integer FZ,unit GZ,real OU returns boolean 函數定義部分就不翻譯了。。
2:local player LY=V 定義玩家LY=V.
3:local integer PlayerID=GetPlayerId(LY) 定義一個整數型變量PlayerID=獲得玩家LY的ID
4:local location LQ=null 定義一個位置(點)變量LQ=空
5:local boolean BZ 定義一個真假型變量BZ
6:set LQ=GetUnitLoc(GZ) 設置位置(點)變量LQ=獲得單位GZ(即SM大要對誰放,這個誰就是GZ)位置
7:call SetPlayerAbilityAvailable(LY,KY,true) 調用函數:設置玩家技能可以使用(KY是一個參數,現在還不太明白)
8:set BZ=IssuePointOrderByIdLoc(HL,FZ,LQ) 設值真假變量BZ=在LQ位置(點)處釋放技能
9:call Sleep(OU-.25) 調用SLEEP(休眠)函數,休眠時間為:OU-0.25,單位為秒,意為使AI停止動
10:if not IsUnitInRangeLoc(GZ,LQ,250)then 如果現在單位GZ不在之前獲得的點變量LQ250園範圍內,那麼做下面的動作
11:call IssueImmediateOrderById(HL,851972) 對玩家HL發佈中立命令,命令ID為851972
12:call OL("stop dazhao sima==========================") 調用OL函數,作者在後面括號裡說面了這個函數是幹嘛的:就是S掉SM的大招。
13:call SetPlayerAbilityAvailable(LY,KY,false) 調用函數:設置玩家技能不可以使用
14:call RemoveLocation(LQ) 調用函數:移除LQ點變量
15:set LQ=null 設置LQ=空
16:return false 返回 假
17:endifENDIF (不要翻譯了吧。。)
18:call Sleep(.55) 調用SLEEP函數:休眠0.55秒。
19:call SetPlayerAbilityAvailable(LY,KY,false) 調用函數:設置玩家技能不可以使用
20:call RemoveLocation(LQ) 調用函數:移除LQ點變量
21:set LQ=null 設置LQ=空
22:return(BZ) 返回變量BZ
23:endfunction 函數結束
說面:每行前面的數字和冒號是為了便於我翻譯加的。
其中紅色的OU=2.00(秒)
說明下:由於個人的原因,由於WONDER得AI文件很難以解讀,所以可能本人一段時間內不會修改其AI文件。
下面我來發下WONDER的AI文件裡每個英雄的裝備路線
先發下函數代表哪些裝備
function VWV=購買退魔刀(自動用完買製作書)
function EVV=購買玄武
function EEV=購買衣服
function F8=購買飛鞋
function V9V=購買青囊
function V8V=購買猛德
function V7V=購買孫子
function V6V=購買七星
function V2V=購買月下
function VTV=購買關羽專署
function EXV=購買血斧
function EOV=購買倚天
function ERV=購買大地
function EIV=購買風暴
function EAV=購買變羊
function zs_eguizhui=購買暈錐
function VPV=購買郭嘉專署
下面是裝備函數
function ENV = 諸葛,司馬裝備路線。
function EBV =郭嘉裝備路線
function EDV =曹仁裝備路線
function EFV =趙雲裝備路線
function EGV =張遼裝備路線
function EHV =張飛裝備路線
function EJV =馬岱裝備路線
function EKV =宮本裝備路線
function ELV =關羽裝備路線
function EMV =典韋裝備路線
function EPV =魏延裝備路線
function EQV =大地裝備路線
以下是函數調用時使用的自定義的英雄ID代碼:
BO=關羽
DO=威嚴
RO=諸葛
CO=張飛
AO=趙雲
IO=司馬
HO=典韋
NO=張遼
FO=國家
JO=尋
GO=曹仁
KO=大地
QO=孫權
MO=馬岱
PO=張合
LO=宮本
我的願望吧,大家交流經驗,共同學習。
我現在看懂了裝備購買合成(關羽專武的還有點沒搞懂),至於施法控制,真的是難啊
有經驗的說下,從那個函數突破?
裝備突破:先瞭解購買參數和命令:舉個例子,玄武的合成:
function U8 takes nothing returns nothing
call K7(1000,'n00R','I000','I02C')
endfunction
function W8 takes nothing returns nothing
call K7(1150,'n003','I00X','I02C')
endfunction
function Y8 takes nothing returns nothing
call T7(1450,'I00X','I000',-1111,'n014','kygh')
endfunction
其中第一個紅色函數控制買力量之斧,括號裡從左到右分別代表:物品價格,物品出售商店代碼,物品代碼,合成物品代碼
第二個綠色函數是控制買鐵劍的,由於調用的都是K7函數,所以後面的參數一樣。
第三個紫色函數控制買製作書,它調用的是T7函數,所以參數和K7不一樣,括號裡分別代表:物品價格,合成物品所需材料代碼,固定代碼(以前是0,現在變成了-1111,不知道他具體作用),物品出售商店代碼,物品代碼。
至於控制英雄購買,是通過判斷AI金錢和裝備情況來實現的,這方面由於可看性太差,調用的函數太多,就不舉例子了
強調下,上面三個函數只是過程函數,控制買裝備要別的函數。用call 來調用函數名。
對於WONDER的AI版本,可以在地圖的J文件和AI文件裡添加和修改,但一旦將其AI文件導入到其他地圖就會發生紅藍消失等BUG,不知道他是改動了什麼。。。
正在努力研究中。。
下面發個控制SM大招的AI函數:我來漢化下,可能有錯誤。大家指正
1:function DZ takes unit HL,integer KY,integer FZ,unit GZ,real OU returns boolean 函數定義部分就不翻譯了。。
2:local player LY=V 定義玩家LY=V.
3:local integer PlayerID=GetPlayerId(LY) 定義一個整數型變量PlayerID=獲得玩家LY的ID
4:local location LQ=null 定義一個位置(點)變量LQ=空
5:local boolean BZ 定義一個真假型變量BZ
6:set LQ=GetUnitLoc(GZ) 設置位置(點)變量LQ=獲得單位GZ(即SM大要對誰放,這個誰就是GZ)位置
7:call SetPlayerAbilityAvailable(LY,KY,true) 調用函數:設置玩家技能可以使用(KY是一個參數,現在還不太明白)
8:set BZ=IssuePointOrderByIdLoc(HL,FZ,LQ) 設值真假變量BZ=在LQ位置(點)處釋放技能
9:call Sleep(OU-.25) 調用SLEEP(休眠)函數,休眠時間為:OU-0.25,單位為秒,意為使AI停止動
10:if not IsUnitInRangeLoc(GZ,LQ,250)then 如果現在單位GZ不在之前獲得的點變量LQ250園範圍內,那麼做下面的動作
11:call IssueImmediateOrderById(HL,851972) 對玩家HL發佈中立命令,命令ID為851972
12:call OL("stop dazhao sima==========================") 調用OL函數,作者在後面括號裡說面了這個函數是幹嘛的:就是S掉SM的大招。
13:call SetPlayerAbilityAvailable(LY,KY,false) 調用函數:設置玩家技能不可以使用
14:call RemoveLocation(LQ) 調用函數:移除LQ點變量
15:set LQ=null 設置LQ=空
16:return false 返回 假
17:endifENDIF (不要翻譯了吧。。)
18:call Sleep(.55) 調用SLEEP函數:休眠0.55秒。
19:call SetPlayerAbilityAvailable(LY,KY,false) 調用函數:設置玩家技能不可以使用
20:call RemoveLocation(LQ) 調用函數:移除LQ點變量
21:set LQ=null 設置LQ=空
22:return(BZ) 返回變量BZ
23:endfunction 函數結束
說面:每行前面的數字和冒號是為了便於我翻譯加的。
其中紅色的OU=2.00(秒)
說明下:由於個人的原因,由於WONDER得AI文件很難以解讀,所以可能本人一段時間內不會修改其AI文件。
下面我來發下WONDER的AI文件裡每個英雄的裝備路線
先發下函數代表哪些裝備
function VWV=購買退魔刀(自動用完買製作書)
function EVV=購買玄武
function EEV=購買衣服
function F8=購買飛鞋
function V9V=購買青囊
function V8V=購買猛德
function V7V=購買孫子
function V6V=購買七星
function V2V=購買月下
function VTV=購買關羽專署
function EXV=購買血斧
function EOV=購買倚天
function ERV=購買大地
function EIV=購買風暴
function EAV=購買變羊
function zs_eguizhui=購買暈錐
function VPV=購買郭嘉專署
下面是裝備函數
function ENV = 諸葛,司馬裝備路線。
function EBV =郭嘉裝備路線
function EDV =曹仁裝備路線
function EFV =趙雲裝備路線
function EGV =張遼裝備路線
function EHV =張飛裝備路線
function EJV =馬岱裝備路線
function EKV =宮本裝備路線
function ELV =關羽裝備路線
function EMV =典韋裝備路線
function EPV =魏延裝備路線
function EQV =大地裝備路線
以下是函數調用時使用的自定義的英雄ID代碼:
BO=關羽
DO=威嚴
RO=諸葛
CO=張飛
AO=趙雲
IO=司馬
HO=典韋
NO=張遼
FO=國家
JO=尋
GO=曹仁
KO=大地
QO=孫權
MO=馬岱
PO=張合
LO=宮本
2010年1月12日 星期二
[HD][中文字幕]StarCraft2 - Battle Report 3: Part1&2
.
[HD][中文字幕]StarCraft2 - Battle Report 3: Part1
.
.
.
[HD][中文字幕]StarCraft2 - Battle Report 3: Part2
.
.
[HD][中文字幕]StarCraft2 - Battle Report 3: Part1
.
.
.
[HD][中文字幕]StarCraft2 - Battle Report 3: Part2
.
.
2010年1月11日 星期一
2010年1月6日 星期三
解釋 WONDER 的 AI 中某些 BUG 的原因
原文網址:http://bbs.wow8.org/thread-117127-1-24.html 1:孫權有時侯賣東西會卡在基地和右邊的炮塔之間:是由於孫傳的碰撞體積為32,(那個地方通道太小。。。)比其他英雄的24要大,事實上3.9D裡麻袋,曹洪,變大的CR,糜竺等碰撞體積都是32。可能是WONDER忘了修正。 2:電腦出裝備的問題:WONDER通過判斷AI玩家的金錢和英雄名字還有裝備情況控制AI買裝備。肯定是先低級很高級,就算輸入—zzdJ等命令,由於沒有另外寫一個響應此命令的買裝備系統,所以還是從低到高,不影響吧,電腦錢多的是。。。。 3:躲限制技能問題:WONDER通過判斷敵方開始限制技能的施法,然後命令被攻擊英雄使用玄武或者飛,可能WONDER設置的等待時間(就是AI文件裡的sleep 後的數值)太小,或者沒有等待時間,就直接使用,當然100%。威嚴都沒T出錘子,只是手一抬對方就飛了或者玄武。。。。 4:發信號無效或者有些英雄不理:WONDER很有可能設定了一個範圍,在這個範圍裡有敵人,英雄就會去搞他。當AI接受了一個判斷命令時,其他命令無效。直到他完成一個命令。這裡涉及到AI得執行問題,我也不太清楚,貌似一個AI玩家可以6個線程(名令貌似,我也不太懂)同時執行。 5:司馬吹人N的成功概率:這個東西可能WONDER大大改了吧,風暴正版3.9D是吹起人5.62秒,經過我研究大約在施法動作(吹人)過後2.2秒左右司馬N成功概率比較高,這個大家要 慢慢研究的。。WONDER可能覺得司馬完美N太J8吊了,而改了時間。 7:宮本那個D技能:這是原版本就有的技能。能無限D是因為原技能作者製作技能觸發時T條件搞錯,導致無限。事實上我去年單機時也發現了,按下D,迅速按S,你能跳,但跳完D沒CD時間,很恐怖吧,你想無敵的話,直接D,S,D,S.......大家可以用0.79玩下宮本,看我說得對不??還有D前頓一下,是技能的觸發設置的問題。無傷害嗎??注意宮本的D不能D魔免的人。不像關羽的D哦。。 8:諸葛卡兵沒司馬犀利:作者是對AI發移動到一系列點的命令來控制司馬,諸葛卡兵,在移動到某一特殊點時 使用SLEEP或者向AI發送保持原位命令。達到卡兵效果。所以隊點位置的選擇還有SLEEP(暫停)的時間就有很嚴格的要求,可能司馬的效果好點,諸葛差點吧。 9:戰線設置問題:WONDER大大應該是通過條件判斷來讓電腦去某路,可能判斷條件限制不夠嚴格和完美導致的吧。 10:飛鞋的問題,飛到某些出不來的區域。同樣是飛鞋使用方式決定的。舉個例子,張飛T,AI控制的司馬反應使用飛,但由於可能是飛鞋使用可能是選定某個點(應該是使用飛鞋AI所在點)一定距離隨機角度使用,這樣就有可能飛到樹林裡。。。。。 個人想說:DOTA的6.54bAI 我玩過,感覺某些方面還不如WONDER大大的AI,塔丟的多的一邊的AI老是不進攻。 |
討論 AI 路線設置問題,技術員和熱心玩家都看一下
原文網址:http://bbs.wow8.org/thread-121997-1-19.html
那麼
RT
先上函數
在原版0.792AI文件的2000行
function U0 takes nothing returns nothing
if isZhuGeLiang()or isSiMaYi()then
set GN=1
set HN=1
set SA=true
set GG=true
endif
if iszhaoyun()or isdadi()then
set GN=2
set HN=2
set GG=true
endif
if isxun()or isdainwei()or iszhangliao()then
set GN=2
set HN=2
set GG=true
endif
if isguanyu()or iszhangfei()then
set GN=0
set HN=0
set GG=true
endif
if guojia()or iscaoren()then
set GN=0
set HN=0
set GG=true
endif
if or isguanxing()or issuanquan()then
set GG=true
endif
先就看這些
那麼這裡變量「GN"."HN"是代表什麼呢?
我個人猜測其中一個是路線。值0代表上路。1代表中路。2代表下路
還有個"SA","GG". 這2個變量又是什麼意思呢??
可以看到,除了諸葛和司馬那行外,其他的沒有"SA"這個變量
那麼大家大膽來猜測
再繼續看函數的下一半:
if XH or IJ then
if FG==0 or FG==1 then
if CS("zhongehc"+AL(mForceId))==0 then
set GN=1
set HN=1
set NG=6
call BS("zhongehc"+AL(mForceId),1)
set AJ=true
endif
endif
if not AJ then
if CS("shanghc"+AL(mForceId))<2 then
set GN=0
set HN=0
call BS("shanghc"+AL(mForceId),1+CS("shanghc"+AL(mForceId)))
set AJ=true
endif
endif
if not AJ then
if CS("xiahc"+AL(mForceId))<2 then
set GN=2
set HN=2
call BS("xiahc"+AL(mForceId),1+CS("xiahc"+AL(mForceId)))
set AJ=true
endif
endif
if not AJ then
if CS("zhongehc"+AL(mForceId))==0 then
set GN=1
set HN=1
set NG=6
call BS("zhongehc"+AL(mForceId),1)
set AJ=true
endif
endif
endif
if HN==1 then
set SA=true
endif
set PN=HN
endfunction
這裡面的變量確實比較多,也比較搞人。。
"AG"是控制出車的變量
"NG"個人猜測是出車數量。。
大家發揮想像力,結合遊戲實際,看下
PS:set PN=HN 這個貌似是控制切換路線的
1是中路,0 是上路
那麼
RT
先上函數
在原版0.792AI文件的2000行
function U0 takes nothing returns nothing
if isZhuGeLiang()or isSiMaYi()then
set GN=1
set HN=1
set SA=true
set GG=true
endif
if iszhaoyun()or isdadi()then
set GN=2
set HN=2
set GG=true
endif
if isxun()or isdainwei()or iszhangliao()then
set GN=2
set HN=2
set GG=true
endif
if isguanyu()or iszhangfei()then
set GN=0
set HN=0
set GG=true
endif
if guojia()or iscaoren()then
set GN=0
set HN=0
set GG=true
endif
if or isguanxing()or issuanquan()then
set GG=true
endif
先就看這些
那麼這裡變量「GN"."HN"是代表什麼呢?
我個人猜測其中一個是路線。值0代表上路。1代表中路。2代表下路
還有個"SA","GG". 這2個變量又是什麼意思呢??
可以看到,除了諸葛和司馬那行外,其他的沒有"SA"這個變量
那麼大家大膽來猜測
再繼續看函數的下一半:
if XH or IJ then
if FG==0 or FG==1 then
if CS("zhongehc"+AL(mForceId))==0 then
set GN=1
set HN=1
set NG=6
call BS("zhongehc"+AL(mForceId),1)
set AJ=true
endif
endif
if not AJ then
if CS("shanghc"+AL(mForceId))<2 then
set GN=0
set HN=0
call BS("shanghc"+AL(mForceId),1+CS("shanghc"+AL(mForceId)))
set AJ=true
endif
endif
if not AJ then
if CS("xiahc"+AL(mForceId))<2 then
set GN=2
set HN=2
call BS("xiahc"+AL(mForceId),1+CS("xiahc"+AL(mForceId)))
set AJ=true
endif
endif
if not AJ then
if CS("zhongehc"+AL(mForceId))==0 then
set GN=1
set HN=1
set NG=6
call BS("zhongehc"+AL(mForceId),1)
set AJ=true
endif
endif
endif
if HN==1 then
set SA=true
endif
set PN=HN
endfunction
這裡面的變量確實比較多,也比較搞人。。
"AG"是控制出車的變量
"NG"個人猜測是出車數量。。
大家發揮想像力,結合遊戲實際,看下
PS:set PN=HN 這個貌似是控制切換路線的
1是中路,0 是上路
2010年1月5日 星期二
訪客統計-2009年10月31日到2010年1月4日
.
以下是本部落格的訪客統計
2009年10月31日到2010年1月4日-的資料
以下是本部落格的訪客統計
2009年10月31日到2010年1月4日-的資料
.
上面這張圖要點選放大觀看才清楚,是訪客人數的流量圖
基本上來說:星期五六日人數比較多!也就是放假日訪客比較多。
.
上面這張是訪客使用的瀏覽器統計, IE 取得壓倒性勝利
.
上面這張是 IE 版本的統計,本部落格已經不支援 IE 6.0,
但是 IE6 人數上還是壓倒性的取得第二名!
.
上面這張圖說明了訪客的國家,我只提供前四名,
所以其實還有其它地區的訪客沒顯示出來,台灣來訪是多數!
.
上面這張圖是,台灣來訪區域示意圖,圓點大的表示人多!
.
上面這前十名,明顯可以看出三重跟台中訪客就取得壓倒性的一二名,
第三名是高雄,前三名剛好是北中南三區!
.
訪客的作業系統還是壓倒性的使用 XP,真是不變的作業系統,呵呵
.
大部分人螢幕設定都是 32bit
.
上面這張圖顯示了訪客的螢幕解析度,讓我有點不解,
難道很多人都還沒錢更換螢幕!
寬螢幕規格只衝上第三名 1440x900 ...
--------------------------------------------------------------------
最後一項是使用者從哪裡連結過來本站的:
第一名:bbs.kyohk.net ( 香港著名網站,魔獸內容佔重大部分 )
kyohk.net
www1.kyohk.net 34.10%
第二名: PTT 22.26% ( 台灣人數最多的 BBS )
第三名:gamebase.com.tw 16.45% ( 遊戲基地 )
第四名:gamez.com.tw 8.83% ( 鐵之狂傲遊戲網 )
第五名:twbbs.net.tw 6.33% ( 台灣論壇 )
第六名:tw.garena.com 2.69% ( GGC )
第七名:google/organic 1.85% ( 經由 google 找到 )
.
2010年1月1日 星期五
通向DIY AI之路系列教程——如何讓荀判斷BUFF再插蛇
. 原文網址:http://bbs.wow8.org/thread-134576-1-1.html 貌似很多能寫的內容都被其他人寫了,我就寫一些自己改過的內容吧 判斷BUFF的教程31曾經有寫過,首先要設置一個記錄BUFF的變量,函數內容如下: function VS takes unit HL returns boolean return(IsUnitType(HL,UNIT_TYPE_STUNNED))or GetUnitAbilityLevel(HL,'BPSE')>0or GetUnitAbilityLevel(HL,'BUim')>0 or GetUnitAbilityLevel(HL,'B012')>0 or GetUnitAbilityLevel(HL,'B000')>0 or GetUnitAbilityLevel(HL,'Bsta')>0 or GetUnitAbilityLevel(HL,'BUsl')>0 endfunction 其中名為VS的函數是記錄BUFF的變量,HL是持有BUFF的單位。這個函數里應該記錄了所有暈技的BUFF,至於他們的ID對應的BUFF我就不一一列出來了。 那麼,接下來,要讓荀來判斷他要插住的單位是否擁有被擊暈的BUFF。先把0.51荀插蛇的函數發上來,在0.51zhensan.ai的第7444行: if HeroD!=null and can_xun_cast_w() then set zs_action_prioty_arry[52]=89 endif 這是插蛇的那部分函數,其實上下還有一大段,不過因為我們不研究他們所以我就不複製上來了。這個函數很簡單,當荀能插蛇的時候,設置插蛇的優先級為89。所以最近的AI裡荀一有蛇就會亂空插。 那麼接下來把剛才設置的判斷BUFF的變量用到這個函數里去,就變成: if HeroD!=null and can_xun_cast_w() and VS(HeroD) then set zs_action_prioty_arry[52]=89 endif 加紅字的部分就是後面添加的部分,目的是檢測HeroD身上是否有有有VS所記錄的BUFF,如果有,就設置插蛇的優先級為89,沒有的話則無動作。 . |
通向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裡複製的,所以部分函數有加密,可能我忘記還原了,有錯誤請指出! . |
現在個人感覺當時wonder是為了讓AI文件適應藍寶石或偽三之類的地圖而做出的調整
. ,偶然反而達到了加密的效果了。 原文網址:http://bbs.wow8.org/thread-118737-1-1.html 我馬上看了下0.792的文件,關鍵在下面: 第12894行(wonder原版)開始 set TF[0]=AX set UF[0]='I005' set TF[1]=NX set UF[1]='I00A' set TF[2]='sneg' set UF[2]='I00N' set TF[3]=RX set UF[3]='I00R' set TF[4]='pclr' set UF[4]='I01G' set TF[5]='hslv' set UF[5]='I01V' 目前我憑感覺認為只要把'I005'替換為AX,下面的以此類推,應該就解決問題了。 可能還會有錯,以後再看看,大家先試試吧。 但還有另一個方法,就是重新破解0.792這整張圖。 目前我還在破解,稍後會將成果傳上。 我以前沒想過破解,因為我沒想到wonder連物品都要改。 今晚連夜破解地圖,已經成功破解! 目前尚未發現問題,AI文件無需改變。 關於此破解地圖有以下幾個問題因為時間關係未解決(請自行解決): 1.部分繁體未簡體化 2.-h指令未加入 由於時間關係,個人難免出錯,有重大問題請短消息我。 沒錯,雖然我沒試過,但應該就是那樣了。 我查過物品ID,原來的風杖ID為sneg,我們玩家買的也是sneg,而AI玩家買的卻是I00N,I00N為wonder修改創建的新風杖,我們導入的地圖沒有,故會消失。 所以這裡要把I00N換為sneg,I005換為AX,依次類推。在AI文件裡仔細找找。 . |
最早期wonder的AI圖與原版3.9D的war3map.j對比
. 原文網址:http://bbs.wow8.org/thread-114538-1-1.html 地圖下載http://bbs.wow8.org/viewthread.php?tid=63285&extra=page%3D1%26amp%3Bfilter%3Dtype%26amp%3Btypeid%3D51 選擇最後一張圖,就是中法AI版,去年wonder發佈的。 什麼是war3map.j? 通俗點講,就是地圖運行腳本。但我不喜歡這麼講,war3map.j就是war3map.j. 是地圖能夠運行於warIII的核心文件。裡面包含了各種自定義技能的設計,地圖上 各個單位的放置坐標等等。 怎麼導出一張地圖的war3map.j? 看我這個帖子裡的工具http://bbs.wow8.org/thread-114372-1-1.html 現在我們開始拿出wonder的圖和平時玩的真三圖3.9D,分別導出裡面的war3map.j. 這時可以證明點東西。 用Jass Shop打開這2個文件。 首先是globals.............endglobals 我們輕易的發現2張圖從代碼1-334居然完全相同,若wonder是在解密圖上製作再添加AI的話,變量聲明部分也絕不可能相同,基本已經肯定wonder直接在原圖上開火了。 接著看335,wonder圖:trigger gg_trg_showHeroLoc=null 開始出現不同點了 發現wonder的多了4個觸發。 好,直奔主題,因為發現其他部分跟原圖完全相同。 就這4個。 還有的不同點在第929,5901行 gg_trg_BlockUseItem 這是個阻止使用物品的觸發,你用任何血藥或者可使用的物品都會被停止。 看call IssueImmediateOrder(GetOrderedUnit(),"stop")就是停止的意思。 而GetIssuedOrderId()>=852008 and GetIssuedOrderId()<=852013這裡 的852008指的是使用物品欄1,852013指使用物品欄6. gg_trg_BlockUseAbility 阻止使用技能,觸發事件是EVENT_PLAYER_UNIT_SPELL_CAST,就是施放一種 技能的時候。 gg_trg_BlockUseAbility2 阻止使用一種持續性技能,觸發事件是EVENT_PLAYER_UNIT_SPELL_CHANNEL gg_trg_showHeroLoc 看關鍵部分,代碼492,function zsMeleeStartAI 意思是當玩家是玩家1到玩家11這間(除外玩家6,其實就是魏國的位置)的電腦控制時, 運行下面這條關鍵的代碼 call StartCampaignAI(indexPlayer,"zhensan.ai") 轉到552 call zsMeleeStartAI() 再轉到5901 call InitTrig_showHeroLoc() 注意,因為5901在main函數里面的,所以AI腳本得以運行。 屬性技能加點的是在common.ai裡面,而不是zhensan.ai call BuyHero('n001',hid_zhugeliang) //suguo call BuyHero('n001',hid_zhaoyun) //suguo call BuyHero('n001',hid_guanyu) //suguo call BuyHero('n001',hid_zhangfei) //suguo // call BuyHero('n001',hid_weiyan) //suguo call BuyHero('n000',hid_simayi) //weiguo call BuyHero('n000',hid_zhangliao) //weiguo call BuyHero('n000',hid_dianwei) //weiguo call BuyHero('n000',hid_guojia) //weiguo // call BuyHero('n000',hid_caoren) //weiguo // call BuyHero('n00Y',hid_xun) //weiguo zhensan.ai代碼竟有13000多行!!!我用HWM打開其它的真三AI圖,比如0.72,0.76, 裡面怎麼都沒有ai文件啊?樓主不知道是怎麼提取的? 因為你沒有用我提供的工具,我的工具裡面的列表文件加入了真三地圖的列表。 真三0.792地圖296個文件列表 . |
大家好,想瞭解wonder的AI圖可以看一下
.
原文網址:http://bbs.wow8.org/thread-114177-1-2.html
因為破解過3.9D,對於wonder的AI版也比較感興趣。
做了些研究。
AI圖有3個文件必備:
路徑如下
Scripts\common.ai 這個是戰役AI文件 必不可少的文件
Scripts\war3map.j 這個是地圖觸發
Scripts\zhensan.ai 這個是核心文件 移植的主要文件
至於地圖裡其他文件,均來自原3.9D,並加以優化軟件優化得出。
因此,修改這3個文件,就可以製作新的AI,當然別忘了導回去。
因為AI圖war3map.j 這個文件經過wc3mapoptimizer優化過代碼,不太容易閱讀。
但只要仔細對比原3.9D裡提取出來的war3map.j這個文件,也是可以搞定的。
common.ai這個文件在0.792版本裡已經變為2kb左右大小,裡面只剩下幾個native
函數,已經不需要再多更改了。
所以製作更為完善的AI只需要看懂後面2個文件,但光這個環節已經相當困難。
.
原文網址:http://bbs.wow8.org/thread-114177-1-2.html
因為破解過3.9D,對於wonder的AI版也比較感興趣。
做了些研究。
AI圖有3個文件必備:
路徑如下
Scripts\common.ai 這個是戰役AI文件 必不可少的文件
Scripts\war3map.j 這個是地圖觸發
Scripts\zhensan.ai 這個是核心文件 移植的主要文件
至於地圖裡其他文件,均來自原3.9D,並加以優化軟件優化得出。
因此,修改這3個文件,就可以製作新的AI,當然別忘了導回去。
因為AI圖war3map.j 這個文件經過wc3mapoptimizer優化過代碼,不太容易閱讀。
但只要仔細對比原3.9D裡提取出來的war3map.j這個文件,也是可以搞定的。
common.ai這個文件在0.792版本裡已經變為2kb左右大小,裡面只剩下幾個native
函數,已經不需要再多更改了。
所以製作更為完善的AI只需要看懂後面2個文件,但光這個環節已經相當困難。
.