基础-05-状态表达式
1.基础用法
状态表达式(states) ,是一个文本(字符串),因此它的值使用双引号包围。例如
states: "[前台-击破]"
状态表达式的作用,顾名思义,就是用于表达判断当前游戏状态的。
而表达式的格式,是一条龙里自定义的,所以在外面会搜索不到。
1.1.一个状态
我们需要使用 中括号 []
来包围我们需要表达的状态。
在自动战斗时,脚本会帮你识别很多的状态,你只需要挑选你需要用的来填写表达式即可。
完整可用的状态见 状态枚举
上述例子中,表达式就是单纯判断前台角色是否击破,如果脚本有识别到这个状态,那么表达式的结果就为真
,脚本会执行对应的操作。
1.2.多个状态
如果想组合多个状态来做判断,也是可以支持的。
states: "![前台-击破] & [后台-1-击破]"
上述例子中,表达的意思是 前台角色不是击破 而且 后台第2个角色是击破。
状态表达式支持运算符 &
(且), |
(或), !
(否), ()
(括号)。
&
和 |
没有运算优先级,运算先后顺序需要使用 ()
保证。
更多例子
例子1
states: "[闪避识别-黄光] & [后台-2-强攻]"
识别到 闪避识别-黄光
且后台第二个角色是强攻,可以考虑让强攻角色格挡。
例子2
states: "[按键-连携技-左] | [按键-连携技-右]"
刚刚按键了连携技换人,可以考虑爆发。
2.状态识别时间
在自动战斗的过程中,脚本会持续进行游戏截图,监控游戏音频等,进而完成所需的状态识别。
所以,每个状态,其实都是有一个被识别到的时间,通常归为以下几类
- 截图后识别的状态 - 识别时间=截图时间
- 脚本操作产生的状态 - 脚本的按键完成时间
具体各个状态的识别时间,可以见 状态枚举
2.1.表达式使用时间
states: "[按键-连携技-左, 0, 12] | [按键-连携技-右, 0, 12]"
上述表达式是想判断,当前是否在 脚本执行 按键-连携技-左
的 0~12秒内 或者 脚本执行 按键-连携技-右
的 0~12秒内。
通常,我们使用这个方式来粗略表达怪物失衡的时期。
所以,状态表达式里,中括号里的内容,可以使用英文逗号分割,包含了2部分:
- 状态名称 - 中括号里第1个英文逗号前的内容,上述例子的
按键-连携技-左
和按键-连携技-右
,代表当前需要判断的状态。 - 状态出现的时间范围 - 中括号里第2,3个数字,上述例子的
0
和12
,代表上一次出现这个状态的时间(识别时间),距离现在过去的时间(秒数),是否在后续2个数字(包含)的范围内。 - 时间范围默认值 - 当表达式中不包含第2,3个数字,即
1.基础用法
里的例子,则默认使用0,1
进行判断。
3.状态值判断
部分的状态,是会有数值的概念的,例如
- 前台-能量 - 是0~120
- 青衣-电压 - 是0~100
- 朱鸢-子弹数 - 是0~9
在状态表达式中,我们需要使用以下方式来判断状态的数值
states: "[朱鸢-子弹数]{7, 9}"
我们在中括号后紧接着 大括号{}
+ 两个数字 来判断,当前的子弹数,是否在 7~9 之间(包含)。这时候就是子弹容易溢出,先打子弹再用强化特殊技或者爆发技。
具体哪些状态拥有状态值,可以见 状态枚举