游戏王ygocore吧 关注:243,821贴子:2,900,556
  • 17回复贴,共1

【一般讨论】ygopro PercyAI使用经验-1

只看楼主收藏回复

简书地址:http://www.jianshu.com/p/f8425249e6aa
转载请注明。
纯手工码字,有不当之处请楼下指正。
此章讲述SelectInitCommand.lua的主要功能。
不发图。建议无程序基础的读者挑选片段观看(雾)。
本文件内起作用的函数只有onselectinitcommand()
传入参数:主要常用的有cards
原作者建立了4个变量方便在本函数OnSelectInitCommand()内使用,常用的有:activateablecards,specialsummonablecards等
返回值格式:command,index
command为AI即将做出的行动,(可能不会判断处理时对象的有无)。
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 = card[i]
if c.description==c.id*16+seq then
...(参考上文的2,3步)
end
2,特殊召唤
类似“发动”。
时间2017-10-14-19-18
由于第一次发帖,简书诸多功能未熟悉,见谅。
下期预告:
2-SelectCard.lua
3-SelectChain.lua


来自Android客户端1楼2017-10-15 15:25回复
    沙发


    来自Android客户端2楼2017-10-15 15:25
    回复
      正儿八经做教程咋就没人码克呢


      来自Android客户端4楼2017-10-15 18:47
      收起回复

        厉害,马克


        IP属地:上海来自iPhone客户端5楼2017-10-15 18:59
        收起回复


          IP属地:江西来自Android客户端6楼2017-10-15 20:20
          回复
            马克


            IP属地:广东来自Android客户端7楼2017-10-15 20:23
            回复
              马克


              IP属地:重庆来自Android客户端8楼2017-10-15 21:50
              回复
                一堆咸鱼只能发马克,顺便我也是咸鱼,马克


                IP属地:广西来自Android客户端9楼2017-10-16 00:40
                回复
                  咸鱼只能M


                  IP属地:浙江来自Android客户端10楼2017-10-16 01:10
                  回复
                    厉害了


                    IP属地:江西来自Android客户端11楼2017-10-16 03:03
                    收起回复


                      IP属地:广东来自Android客户端12楼2017-10-16 15:48
                      回复