此章讲述SelectInitCommand.lua的主要功能。
不发图。建议无程序基础的读者挑选片段观看(雾)。
本文件内起作用的函数只有onselectinitcommand()
传入参数:主要常用的有cards
原作者建立了4个变量方便在本函数OnSelectInitCommand()内使用,常用的有:activateablecards,specialsummonablecards等
返回值格式:command,index
command为AI即将做出的行动类别,如发动 召唤 特殊召唤 set等等,(可能不会判断处理时对象的有无)。
index为可以进行该command的选项在“该command的全部选项(通常是card对象)”中的排序号。
command常用值:
-1:由AI决定本次行动内容
0:进行通常召唤
1:进行特殊召唤
5:发动(卡/卡的效果(非诱发效果)/设置P刻度)的宣言
6:宣言进入下一阶段
7:宣言进入结束阶段
注:没有“空操作”,不返值也是不规范的,可能导致崩溃。
index为-1表示由电脑决定序号。
常见功能的实现:
注:
代码可参考原本脚本,这里只讲一下过程。
有一部分代码是为了与原作的一些意义不明的全局变量衔接,如果有明白的读者请指明不当之处。
下文中提到的筛选可以使用多种方式,原作者在helpfunction等模块里定义了多种实用功能,可以帮助你写出自己的AI。
1,发动卡/卡的第一个效果/设置P卡。
(1)遍历可以发动的卡,筛选出“此时/此条件下”想要发动的卡(得到它的index)
(2)将全局变量设定好(此例中,将GlobalActivatedCardID(大概这变量名)设为这个卡的id)
(3)return 语句
1.2发动的卡有多个可以发动的效果,此时控制它发动第seq个效果
类似上文方法,同时再加一个判断:
local c = cards[i]
if c.description==c.id*16+seq then
...(参考上文的2,3步)
end
2,特殊召唤
类似“发动”。
时间2017-10-14-19-18
由于第一次发帖,简书诸多功能未熟悉,见谅。
下期预告:
2-SelectCard.lua
3-SelectChain.lua