目录
(资料图片仅供参考)
ver2.0更新了什么
增添了部分功能包括自定义策略名称、策略个数
修复了不能重复点击开始开始行动的bug
改变了主题风格,个人感觉更加舒适
接下来想做什么
可能后续能增加自定义主题风格的选项
仍存在不能实时暂停的问题,原因是单个循环包含的动作量很大。正在考虑如何修改
相关信息地址
程序中的快捷键
写在前面:这篇文章的前置内容为fgoScript第一版,后续阅读可能出现无法理解之处,届时请参阅链接内的文章
ver2.0更新了什么
根据我自身长期使用体验,总结了部分需要改进的地方(完全没人试用),如下
1、增添了部分功能包括自定义策略名称、策略个数
首先肉眼可见的主题换了,之前是最基础的没有添加任何风格,现在有更帅的暗色调主题,详细的见后续。
折叠
主要是复制粘贴引用了他人的优秀成果,设计了可折叠的策略,如Fig 1.所示。要不然个数要是搞个七个八个的(我认为确实有人会有这个需求),界面会显得相当冗余,大半都会被这个板块占满了。
增加与删除。
点击ADD增加一个策略,其初始化值为前一个策略,点击REMOVE删除最后一个策略。值得注意的是不能删除到0个策略,但是我没有写限制,所以只剩一个策略时再删除会报错然后闪退。不过如果有用的人话我觉得从实用性角度考虑,没有人会让策略个数保持为1。
由于没有备份,也没有确定等提示的对话框(懒得做),所以这个按钮就是rm -rf,不要轻易使用。如果怕自己手贱的话建议把exe所在文件夹里面的setting.json另存为一下,命名成别的名字,要是出大事儿了就回档吧。
点击对应的策略可以将其展开,如Fig 2. 所示。整体无大改动,编写规则仍按照上一期所分享的。新增的是在开头的命名,没什么别的用,就单纯我自己用的时候老是忘记哪个是哪个,有时候一旦用错了再打不过这关卡了,约等于浪费40体力,亏的苦茶子都不剩了,所以加一个标签,免得忘掉。
2、修复了不能重复点击开始开始行动的bug
前一个版本在运行完指定指令之后是处于不可回收垃圾类别。不能再次启动,按了运行开始也没反应(原因是使用了terminate函数让QThread线程强制退出而非资料上所写的“正确且优雅的”退出,导致不能再次启用线程)。这导致了我在刷一些非重复关卡(活动主线)时不断地重启软件,操作量成倍上涨,用着有点难受,好在比手刷还是爽了不少。
改进中使用了“正确且优雅的”的退出方式,也就是在每个循环都检查一遍_isRunning变量,为False就退出,退出时就置其为False让其自然退出。
所以现在的情况是,你可以这样操作:
设置重复战斗次数为1,先进行一次战斗
清空日志,这会结束线程,让其可以重新开始
再次进行一次场战斗
对比先前,好了不少,但是可能导致不能中断?原因在于后续提到的单次循环包含的动作过多,详见后续
3、改变了主题风格,个人感觉更加舒适
新的风格来自qt_material,可以通过pip下载,指令是pip install qt-material。该风格库提供了亮暗色以及各种颜色,还有额外的一些功能(如Fig 3.展示的是暗青色主题,文件是dark_teal.xml)。我觉得还蛮帅的,还保留了清晰的可分辨能力。
4、其他的边边角角
1)重复战斗次数不能为空
这个问题来源于没有对文本框里面的内容判定就进行全局的内容修改,导致非数字内容作为非法输入一旦出现就报错/闪退
现已修复
2)若勾选关心礼装,那么有时无法完成选择助战的操作,问题来源于其设置的参数过高
已修复
接下来想做什么
1、可能后续能增加自定义主题风格的选项
这个风格是我自己选的,其他风格还有很多,我希望能够出一个选项,让用户能自己选择。总有人不喜欢我的风格嘛。
另外的,在想能不能再新增点什么帅气的UI美化,让整体看起来更加舒适,不过我没什么审美能力,难调出来什么好看的UI,但愿能找到合适的文章让我复制粘贴一下。
2、仍存在不能实时暂停的问题,原因是单个循环包含的动作量很大。正在考虑如何修改
由于暂停的原理是无限循环的线程中每一个循环判定_isPause的真假来决定是否将其挂起,导致暂停的时间点只能是在一个循环的开始。然而我这个战斗环节,所有的动作包含在一个循环之内,所以把_isPause置真能其暂停,但它属于是慢性毒药,得到结算阶段才能真正停下来。但是有暂停需求的时候往往是在战斗的时候发现有些不对了,但还能补救的情况,结果没暂停的了,你俩一块操作,那就坏大事了。在此之前,我的应对方法是——一旦发现不对,立马按ESC关掉程序。
由于没有找到很好的解决办法,所以决定先放着,要用的话一定请先保证3T足够稳定吧。
暂且的想法:使用一个动作队列,称其为action_queue,里面的动作是自定义类,可以以此完成一次动作如点击或者滑动,并且根据参数弛豫指定的时间。当程序运行的时候,每要完成某个动作,就将其放入队列中,排在末尾。队列中每完成一个动作,就将排在头部的动作释放/删除,如此循环就能将动作按单个分割作为一个线程的单个循环,此时再暂停就能将每个动作分割开啦。
但是这个方法的大问题是:判定不等人,导致的结果是,如果暂停了,判定线程还是因为单个循环含有大量动作的缘故没停下来。此时若界面停留在可判定的阶段,那么判定线程就会源源不断的把动作放入动作队列中,这个问题相当严重,若是重复的动作能作为无效操作的话就还好,但是如果不是,整个循环可就无了。
相关信息地址
获取地址:https://github.com/qcfei/fgoScript/tree/v2.0
视频地址:待发布(不知道该做什么样的视频,演示内容可以看自制fgo3T副本刷关演示这个视频,里面的脚本是第一版,但是功能大差不差已经完成。对于第二版内容的视频可能要征集他人意见或者自己鳖个一段时间)
程序中的快捷键
这部分内容本应该出现在上一篇文章中,但是我好像是给忘了,那就在这里补上罢,有些是我自己设置的,有些是pyqt5自带的,这些快捷键太棒了。
在未选中可操作的文本框的时候,按1、2可以切换运行、设置界面,1对应运行,2对应设置。
下拉选项框可以通过滚轮来切换内容,这是自带的,能方便不少。副作用:要是真想上下滚动,得避开下拉选项框
文本框可以应用大部分快捷键,如alt+A全选,ctrl+Z回撤,ctrl+Y重做。
ps:历时一个多月把这个内容做出来了,然而真正的内容工作量不超过5个小时。那么这个月我在干什么呢,答案是在摸鱼~