Skip to content

Latest commit

 

History

History
124 lines (84 loc) · 7.3 KB

switch_guide.md

File metadata and controls

124 lines (84 loc) · 7.3 KB

如何使用Switch

什么是switch

开关(switch),顾名思义,可以通过简单的方法控制某一任务是否执行,某一计划是否执行。 一个典型的场景是:在大号离开农场的时候,需要关停自动捐赠的计划; 或者另一个典型的场景是,在N3的时候,希望能停止大号一切消耗体力的行为(如每日H图、圣迹调查等),并且取消一切领取体力的行为。

对于这种需求,通常我们只能通过在离开、进入农场前,或是N3前一天,手动大批量修改任务和计划,这会带来很多的不便。我们希望能通过一行对开关的控制语句,如:

switch enable N3

就能一键修改上述可能的需求,而在N3结束时,只需要:

switch disable N3

即可恢复原状。这就是switch的初衷。

新增的三条指令

在20210120后的版本,简易控制台中新增了对任务和计划的disable enable flag三种指令。

其中,使用disable指令可以将某一个任务或者计划禁用,该任务将自动在导入的时候变成一个空任务,而被禁用的计划将直接不会被Schedule考虑在内。enable则是重新将该任务启用。用这种方式可以比较方便地手动跳过一个任务,并且不需要大段删除已经编辑好的任务文件,在适当时候直接enable就能恢复。只不过当某一个事件影响的任务很多时,这种方法仍然显得乏力,于是flag指令便起作用了。

flag指令可以给一个任务增加一个flag检测。当该任务试图执行时,如果检测到对应flag处于激活状态,则该任务会被禁用。通常与体力收取、刷图策略、公会等相关的任务需要频繁地调整,则我们可以对这些频繁调整的任务使用flag指令添加一些flag。以笔者大号的刷图任务为例,输入task -e DAY_5AM进入任务编辑模式,再输入show,显示如下:

0 : 行会点赞
1 : 收取礼物
2 : 免费扭蛋
3 : 购买经验
4 : 可推图探索
5 : 购买MANA
6 : 通关地下城
7 : 家园领取
8 : 圣迹调查
9 : 每日H图
10 : 竞技场
11 : 公主竞技场
12 : 收取任务

下面对其添加flag,使得在NO_GONGHUI激活时,不执行行会点赞功能;在NO_GET_TILI激活时,不执行家园领取、收取任务功能;在NO_DIAOCHA激活时,不执行圣迹调查功能;在NO_HARD激活时,不执行每日H图功能。

flag NO_GONGHUI 0
flag NO_GET_TILI 7
flag NO_GET_TILI 12
flag NO_DIAOCHA 8
flag NO_HARD 9

输入save保存。再次输入show,其显示变为如下:

0 : 行会点赞  (禁用当: NO_GONGHUI )
1 : 收取礼物
2 : 免费扭蛋
3 : 购买经验
4 : 可推图探索
5 : 购买MANA
6 : 通关地下城
7 : 家园领取  (禁用当: NO_GET_TILI )
8 : 圣迹调查  (禁用当: NO_DIAOCHA )
9 : 每日H图  (禁用当: NO_HARD )
10 : 竞技场
11 : 公主竞技场
12 : 收取任务  (禁用当: NO_GET_TILI )

此时flag添加完毕。接下来要去switch模块,把刚刚添加的flag给注册到开关中,以后我们就可以通过开关控制。

开关模块的使用

为每一个flag单独创建一个开关

首先我们为NO_GONGHUI创建一个开关。

输入switch -c NO_GONGHUI,再输入switch -e NO_GONGHUI进入其编辑模式。

再输入order,我们来更改它的优先级为999,表示该开关具有很大的优先级。对于优先级的说明将在后面进行。

接着输入disable,刚创建的开关默认为打开状态。我们把它禁用,毕竟现在人还在公会里。

然后输入add。下面提示输入一个或者多个空格隔开的flag。switch和flag是一对多的关系,一个switch可以控制多个flag的激活状态。此处我们只与一个flag绑定即可,输入NO_GONGHUI后,回车。

接下来需要输入默认激活状态。如果设置为True,则意味着当开关激活时,此flag会被设置为激活状态;若设置为False,则意味着开关激活时,此flag会被设置为非激活状态。根据需求,我们将其设置为True。

接下来提示输入一个0~2的整数。输入1,可以添加一条针对用户的特殊配置;输入2,可以添加一条针对用户组的特殊配置。在上一个设置项中,我们已经设置了“默认”的状态,但可能还有例外的情况。比如有两个用户组old和new,其中old用户组中的小号均满级,但是new用户组中的小号尚未满级,它们共享一个刷图的任务。如果我只想禁用已经满级的小号的刷图任务,此处就可以添加一条针对用户组的特殊配置,在默认状态为False的情况下,为old组特殊设置为True即可。但是通常情况下这种冲突不会发生,所以大多数时候我们只需要输入0跳过这一项就行。

输入0,我们便完成了一次创建。输入show查看创建情况,输入save保存开关,exit。一个开关就创建完毕了。

模仿上述过程,我们还可以进一步创建NO_GET_TILI,NO_HARD,NO_DIAOCHA的开关,并将其优先级均设为999,且都保持disable状态。

开关的优先级

每一个开关都有一个优先级order,默认值为0。和任务的优先级一样,越高的优先级将被优先考虑,同优先级按照名称顺序排序。如果两个处于激活状态的开关配置中包含了同名flag,则完全以高优先级开关为准。实际配置中我们通常不想要这种冲突,所以尽可能不要在不同的开关中使用相同的flag,但是有时这种特性却能给我们带来好处。

以免费十连为例,当然我可以创建一个名叫NO_MIANFEI的开关配置,对应一个NO_MIANFEI的flag,但是如果我想创建一个MIANFEI的开关配置,希望enable MIANFEI之后,反而取消NO_MIANFEI的激活状态,此时可以利用覆盖的特性达成这种反向操作:

  • 创建一个优先级为-1的switch,名为base
  • 在该开关配置里,将NO_MIANFEI的默认激活状态设置为True
  • 创建一个MIANFEI的开关配置,优先级设置为大于-1,将NO_MIANFEI的默认激活状态设置为False
  • 此时,如果免费十连开启,我们只需要输入switch enable MIANFEI,此时该配置的优先级高于base,会忽略掉base中对NO_MIANFEI的flag的设置,于是NO_MIANFEI将处于未激活的状态。
  • 当免费十连关闭时,只需输入switch disable MIANFEI, 此时base配置发挥作用,将NO_MIANFEI设置为了False。

除了这种情况外,在需要在庆典中做出权衡时通常也需要用到优先级设置,如N3的优先级要高过N等等。

包含多个flag的开关

一个开关对应一个flag已经能够极大地解放调任务的双手了,但这还远远不够。如果还想要进一步偷懒,还可以设置一些激活后同时激活一堆flag的开关。只需要在add中,填写多个flag,并用空格隔开即可,不再赘述。这种方式可以创建如N2,N3等开关配置,在启动N2时,激活NO_GET_TILI,NO_HARD等来一键停止自动体力领取和体力消费。

flag命令

在edit界面输入flag可以查看当前所有激活的flag的状态,输入'flag -a'可以查看当前所有激活、未激活的flag的状态。

switch文件路径

如果想要手动修改开关配置,可以在/switches文件夹中找到相关的json文件。