此章講述SelectInitCommand.lua的主要功能尽爆。
不發(fā)圖卫玖。建議無程序基礎的讀者挑選片段觀看(霧)。
本文件內起作用的函數只有onselectinitcommand()
傳入參數:主要常用的有cards
原作者建立了4個變量方便在本函數OnSelectInitCommand()內使用余境,常用的有:activateablecards陕悬,specialsummonablecards等
返回值格式:command,index
command為AI即將做出的行動類別,如發(fā)動 召喚 特殊召喚 set等等絮宁,(可能不會判斷處理時對象的有無)官扣。
index為可以進行該command的選項在“該command的全部選項(通常是card對象)”中的排序號。
command常用值:
-1:由AI決定本次行動內容
0:進行通常召喚
1:進行特殊召喚
5:發(fā)動(卡/卡的效果(非誘發(fā)效果)/設置P刻度)的宣言
6:宣言進入下一階段
7:宣言進入結束階段
注:沒有“空操作”羞福,不返值也是不規(guī)范的,可能導致崩潰蚯涮。
index為-1表示由電腦決定序號治专。
常見功能的實現:
注:
代碼可參考原本腳本,這里只講一下過程遭顶。
有一部分代碼是為了與原作的一些意義不明的全局變量銜接张峰,如果有明白的讀者請指明不當之處。
下文中提到的篩選可以使用多種方式棒旗,原作者在helpfunction等模塊里定義了多種實用功能喘批,可以幫助你寫出自己的AI。
1铣揉,發(fā)動卡/卡的第一個效果/設置P卡饶深。
(1)遍歷可以發(fā)動的卡,篩選出“此時/此條件下”想要發(fā)動的卡(得到它的index)
(2)將全局變量設定好(此例中逛拱,將GlobalActivatedCardID(大概這變量名)設為這個卡的id)
(3)return 語句
1.2發(fā)動的卡有多個可以發(fā)動的效果敌厘,此時控制它發(fā)動第seq個效果
類似上文方法,同時再加一個判斷:
local c = cards[i]
if c.description==c.id*16+seq then
...(參考上文的2朽合,3步)
end
2俱两,特殊召喚
類似“發(fā)動”饱狂。
時間2017-10-14-19-18
由于第一次發(fā)帖,簡書諸多功能未熟悉宪彩,見諒休讳。
下期預告:
2-SelectCard.lua
3-SelectChain.lua