《舰队收藏 肝帝模拟 改》已知问题与FAQ

新用户请先阅读《使用说明》,不要先看这个。


已知问题(仅最新版本)

简述

这里的已知问题可能是bug,也可能不属于bug。但都是最新版本中无法用通常手段解决的问题。

最新版本中修复了的问题不会在这里写出来,所以遇到问题,请先检查更新。

这些问题可能是最新版本新引入的,也可能是过去版本就存在了的。内容会随用户报告,随时更新。

正文

  • “雷达伏击点”无法判断大破

    现在脚本没有实装实时算血功能,战斗结算时的血量采用调用poi的API方式获得,poi此处的API没有对应这个新的战斗类型(虽然未卜先知插件对应过了,但这个API没有),所以调用API获取到的数据是错误的,也就无法判断大破。需要等poi修复,poi修复了的话,这个问题就自动解决了,我也会去看看poi这部分的代码。当然,你基本不用担心会因此大破进击:①本次活动攻略路线都会回避该类战斗,只要配装正确你是遇不到这个情况的;②1.2.5.1版开始会在选阵型前再次检查大破,该检查(已确认)可以在雷达点大破进击到下一个战斗点要选择阵型时检测出有大破(且没带损管的伴随舰)并报错停止(,除非连着两场战斗都是雷达点)。本程序刚开发不久,为了尽快可用这些战斗过程中的算血直接使用了poi的API,以后对应其他浏览器前我会自己实现一遍实时算血功能。

  • 启动功能后没有后续反应,错误记录显示“事件转发线程发现未捕获的异常:……”

    这个Bug仅出现在试用状态下,我正在想办法追踪,不过难复现。已知遇到这个问题时,重开脚本一定概率就好使了。

  • 装备换错

    换装备功能依赖ExtraData.json里的外部数据。如果数据有误或者舰船、装备较新在数据里没有则可能换错。如果你遇到了请用关于页面的运行Python脚本功能运行”配套资料”里的排查用python脚本。然后在Github Issue里报告给我错误信息,请不要报告和其他人重复的错误。

  • 报错”注册失败:注册码绑定错误”

    1.3.2.0换电脑登录时会遇到这个报错。怀疑是1.3.2.0的关闭时自动解绑逻辑没有被正确调用,会尝试在下次更新时解决。但这不影响换电脑登录的能力,前一台电脑上的KCPS关掉后等至多3小时后注册码会自动解绑,遂可在新电脑上登录。

  • 报错“Object reference not set to an instance of an object.”

    怀疑是发布版本的加壳程序出错(也就是中彩票了)。有报告称重新载入/设置更换装备执行单元后问题消失。

  • 启动程序报错“Could not load type ‘System.Windows.Forms.MenuItem’ from assembly …”

    目前版本是在.net core 3.0上开发的,这个组件在.net core 3.1版本中竟然竟然竟然被移除了???!!!所以要运行程序,需要暂时换回.net core 3.0,我下次更新时会替换这个组件。

  • 启用插件WinAPI模式后,出击偶尔会卡住(比如卡在罗盘娘那),超时重试也失效

    原因不明,调试发现所有流程执行正常,本体发出点击指令后,游戏本身却并没被点击。我怀疑是真正的鼠标指针造成了干扰,需要收集更多情报,来判断是什么影响了执行。


开发计划

短期(2019/11/23更新)

增强稳定性、增加一些不复杂的功能。

长期

1.4版本打算19年内基本做完。会加入接、交任务功能,还会实现“演习”、“建造”功能。另外还会新增一些零碎功能。单次试用时间延长至20小时。
(原计划延长到24小时,但后来24小时跑远征会被发猫了,我怕有些不带脑子的新米提督用户顶格用远征功能被猫然后甩给我黑锅,我真的很怕背锅,所以不给24小时了)

1.4版本发布之后我打算做一个安卓纯远征脚本,仅开放给注册用户。想做这个的目的是入门安卓开发,所以做到最简单的远征功能就可以了。

其他浏览器插件会在1.4版本本体稳定之后开发。不过考虑到现在常用浏览器poi和74EO都有了插件,要不要给其他浏览器做插件就难说了。

再之后会

  • 开发1.5.×.×
  • 把字符串都放到资源文件里,方便其他语言的用户翻译
  • 补全API文档,方便利用Python做更强的无人值守配置
  • 开源用户界面部分代码

FAQ(常见问题解答)

简述

此处的问题是不属于软件Bug的问题。

善用搜索功能(按Ctrl+F),但可能会因为用词不同而搜索不到。

正文

使用前

  • 会不会被Ban / 什么使用频率合适

    首先,有一丁点怕被Ban的人一概不许用本程序。手动都有Ban的更何况自动,我不想再背黑锅。最安全的就是立刻弃坑,绝对不会被Ban。其次,做好经常大量氪金的准备,练级多了肯定是要买戒指的,二号机养多了肯定要买船位的……在此基础上,目前每天挂约20小时远征,24小时内出击数百次以内,再多会猫。禁止用脚本冲战果,这会破坏游戏公平,非常危险。

  • 会不会开发74EO/KCV/…的插件

    本体稳定以后会开发。现在没精力,api也总改,时机不合适。以后还会开发一个通用插件,原理类似旧版脚本《KCPS》,自己设定句柄,另外还要拦截游戏数据。Chrome浏览器可能不适合开发此类插件,很可能不会开发对应的插件。

  • 可以在Mac上运行吗?会不会有Mac版

    仅Windows系统可用。我没有Mac,也不会Mac开发,也不打算学。程序本身设计的时候是考虑了跨平台的。顶多以后闲得没事了开发Linux(Ubuntu)版。

  • 游戏分辨率要设置多少

    本程序使用模糊匹配,原则上不限制分辨率。但过低的分辨率无法识别。分辨率虽然可变,但画面长宽比必须为准确的5:3。测试时使用了1200×720(100%)和800×480(67%)两种分辨率。如果无法识别,请调节分辨率后再试。有些用户那里67%部分功能会卡住,得100%,所以建议刚开始尝试时先试100%。

  • 可否开启浏览器的“硬件加速”功能

    配合poi插件,在poi浏览器上可以开启。(其他浏览器插件待开发以后再分别补充)

  • 能否使用魔改

    游戏内自带的UI主题可随意使用,但UI魔改不会支持,其他的魔改可能不会影响本程序运行。使用了UI魔改会不能识别画面,需自行制作并替换模板图片。

运行

  • 启动时弹窗:“未能加载文件或程序集‘netstandard, Version=×××, ……’”

    《使用说明》里写了,要装最新的.net core。遇到这个问题的都是不看说明就用的。

  • 启动时弹窗:“配置系统未能初始化” / 运行时弹窗报错:“配置系统未能初始化(……” / “……的构造函数执行符合指定的绑定约束的调用是引发了异常”

    读取窗口位置和大小设置时出错,怀疑是保存时保存的数据不完整,具体导致问题的原因不明,个别用户那里偶发。解决方法是删除{系统盘}:\Users\{你的用户名}\AppData\Local\KancollePlayerSimulatorKa这个文件夹。

  • 错误提示:没有查找到游戏API“/kcsapi/api_start2/getData”的数据

    插件的说明里写过了,安装、更新、重新启用插件后要刷新游戏。这个API是启动游戏时才会发送的常量数据,经常用到。数据已经做了缓存,所以这个错误只有在第一次使用时没有缓存数据才会报。出这个报错的人,很可能是刚看过安装说明却没重视。

  • 错误提示:“获取数据失败:×××××××”

    插件报错了。如果写的是“浏览器插件内部错误”的话,属于插件内部运行时发现错误。对于poi插件,打开poi的“开发者工具”,选择“Console”选项卡,可以看到报了啥错。

  • 错误提示:“Pointer xxxx failed (status code InternalServerError)”

    插件报错,无法完成鼠标操作。常见的原因是poi插件选中了“使用基于Windows操作系统API的鼠标模拟机制”功能,然后poi正好在近期更新过而插件没来得及更新,此时这个功能会失效,导致报错。关掉这个选项接着用就行了,或者换回之前版本的poi。如果你没更新过poi,更新完插件报错了,说明你该更新poi了。poi插件的这个功能在每次poi换electron版本时都要重新编译,我会在认定poi最新正式版稳定后让插件切换到仅支持最新版。

  • 新版太复杂了,用不明白,要是像旧版那么简单就好了

    新版功能比旧版强,强在更灵活,要灵活就必然更复杂。但实际上,弄懂了“关联出击”的框架,之后就信手拈来了,根本没难度。实在头疼,我不是发了范例配置吗,下载下来,用一用再照葫芦画瓢还不会吗。要我说,那些说新版用不明白的人都是懒。看着眼花的功能是挺多的,但那些用不上的功能,前期根本没必要去碰,给自己找麻烦干啥。

  • 软件提示我改端口,如何改端口

    问出这个问题的人一概不建议改端口,就用默认的5277。要选一个没被占用的端口。很多这类人改了已经占用的端口,比如岛风Go的8099,后果就是直接没法用了。改的时候要同时改程序里的和浏览器插件里的端口。至于怎么知道端口被没被占用……改完了不好使的就是被占用了的。好几万个端口可以选,怎么就那么容易改到被占用的?

  • CPU占用率过高/运行速度慢

    启用“设置”中的“限制多核加速并行度”,并设置合适的值。数值越小(但要≥1)线程数越少,可以占用的CPU资源越少。因为计算量一定,CPU越差、越老执行越迟钝。另外每次启动软件时间越久运行速度越快。软件会根据本次启动以来的使用模式,优化页面查找逻辑。本程序全程使用模糊图像匹配,必然需要大量计算资源。尤其是出击过程,接下来会显示的画面不确定需要不停地查询比对(查询间隔可设置)。不限制并行度时,会使用全部CPU资源,所以可能把CPU全占掉。现在这套方案游戏缩放后仍可正常运行,不会再采用旧版(KCPS)那种限制极多的方案,即使它要求的计算量很少。

  • 内存占用过高(GB级别)

    “设置”中限制多核加速并行度到合适的值可以降低峰值内存占用。.net的内存由GC自动控制,如果你的电脑内存很大,GC可能不会那么勤快地去清理内存,结果就导致内存占用看起来很大。内存装在电脑上就是拿来用的,不用太在意。

  • 运行过程中卡住,不继续操作游戏

    打开“设置”中的“等待超时或发现出猫时尝试重新执行”选项。模拟鼠标事件偶尔可能会因为外部影响而失败,所以才会有这个功能。

  • 开始运行时总是报错”无法定位当前页面,导航失败” / 如何让程序在执行过程中等待用户操作完毕

    大部分执行单元的“高级设置”中有“开始动作前先等待返回母港”这一选项,选中即可。但要注意此时如果选中了等待超时尝试重新执行&允许刷新游戏页面,那可能会在你出击过程中刷新游戏,建议手动时关掉这俩选项之一。

  • log在哪看

    “关于”中的“打开控制台输出窗口”可以看到本次运行程序的log。过往的log保存在log文件里,默认路径是data/logs。log.xml是log4net的配置文件,修改它可以改变log的设置。

  • 母港的“补给”按钮总是激活的状态

    不影响使用。你要是看着难受,就把“隐藏设置”中的MoveAwayPointerAtHomePort设置项打开,详见《使用说明》。

  • 为什么不加一个固定分辨率选项,选了之后就不用动态判断了,否则自动适配不同的分辨率CPU占用太高了。

    问这个问题的都是想得太简单的。本程序使用图片匹配,分辨率不同只是多了个缩放步骤罢了,缩放是GPU干的不花时间。所以不管固定还是不固定,计算量都是一样的。至于旧版为什么执行得那么省CPU还很快,关键原因不是因为它要求固定分辨率,而是因为它匹配画面的时候只匹配指定位置的一个像素,那当然更快啊。而且不光是分辨率会影响画面,其他设置也会影响,你以为固定了就可以换成旧版的那种算法了吗。为了易用性,就得是新版的这种方法。

  • 如何多开

    本软件可以多开,但需要用多份程序,每一份程序独立放到一个文件夹里。注册时需要多个注册码。端口分别设定。另外浏览器需要支持多开。至于poi怎么多开,我不清楚。局域网上的多个终端可能是一种解决方法。

注册

  • 会不会出买断模式

    不会。在线验证需要服务器。注册服务是我月租的,我不可能为了“买断”这种承诺“永远”月月付月租。至于不卖更长时间的注册码,是因为我担心会有不可抗力影响脚本将来的维护,卖的码时间太长的话,遇到这种情况处理起来非常棘手。90天是权衡利弊后的时长。每次买嫌麻烦倒是可以一次多买几个备着。

  • 更新后变成了“试用”

    更新时没有保留配置文件。详见《使用说明》“注册”这一部分。

  • 注册失败,提示“您已在另一机器上注册,请解绑”

    注册码可以换电脑登录。但需要关闭其他电脑上的实例。点击关闭按钮关闭软件时,软件会在后台解绑,非正常关闭软件却不会解绑。可等待3小时后自动解绑,或者在原电脑上重新打开并正常关闭软件解绑。更换个别硬件也可能会被识别为另一台电脑,遇到此问题时操作相同。

  • 注册失败,提示“该注册码已在本机注册,请勿重复注册”

    一个注册码同时只允许在一台电脑上登录一个实例。旧的实例没有关闭会出现这个错误。

基础远征

  • 只能收发一个舰队的远征

    需要添加多个“基础远征”执行单元,每个执行单元对应一个舰队。

  • 报错“舰队非空闲,不可以发出远征”

    两种可能:①你忘了改执行单元的舰队设置,导致几个执行单元都准备发出同一个舰队的远征。②你系统时间不准确,导致高级设置中默认的提前随机最多60秒收远征对你来说提早太多了。

单次出击

  • 没有找到设置“支援舰队”/“基地航空队”/“路线分歧”的选项

    选了需要设置这些的海域才会显示这些设置项。

  • 陆航发不出去(选不中被陆航面板遮住的点)

    对于使用poi插件的用户,poi插件中改为使用“基于Windows操作系统API的鼠标模拟机制”。

  • “条件类型”的“地图点”的“条件值”如何填写

    应填写数字。值在出击过程中见poi浏览器右下角,也可以在poi的“航海日志”插件里查看。注意,数值并非一一对应字母顺序(如A点对应1、B点对应2)。一个字母的点从不同路线进入,数字编号也会不同。

  • “战斗场数”如何计算

    当前战斗场数,初始为1,每次选择“进击”后加1。不需要选择进击撤退的步骤都不会导致当前战斗场数变化,如敌方空袭基地航空队。实际战斗之前的操作,如选择路线等,在“条件类型”为“战斗场数”时,设置时也依照此规则。

  • 出击过程中因等待超时报错停止(或刷新游戏页面)

    网络不畅,或者途中某个战斗点的战斗动画过长且期间画面变化不大,会造成等待超时。请稍微增加“设置”-“执行”-“等待超时”中的时间长度后再试。

关联远征

  • 满足了“自动停止条件”,远征还是被发出去了

    “⑤循环”排在“④发出远征”之后。按照“每循环按顺序执行各个步骤”的规则,“自动停止条件”的判定发生在发出远征之后。每循环的结尾是发出远征之后,不是接收远征之后。所以执行逻辑没问题,是你理解错了。

关联出击

  • “根据出击结果”里的条件达成却没有自动停止

    记录战斗结果的阶段发生在每场战斗结束显示评级的时候。如果这时用户手动点击游戏,会干扰程序运行,跳过了记录战斗结果的阶段,所以该功能会失效。

执行单元

  • 优先级的数字越大优先级越高还是越小越高?

    数字越大优先级越高。

  • 优先级如何调整?

    一般使用没必要调整,默认的优先级就行。但也确实有需要调整的个别情况,当真的遇到预期以外的行为时再根据后面的描述改就行。首先这里明确一下,各执行单元设置中的优先级设置的是其子任务的优先级,等待返回母港和返回提督室这两个子任务优先级默认最低且不可修改。当任务队列中同时有多个待执行的任务时,程序会选取优先级最高的任务执行。当有多个同优先级的任务时,程序会随机(实际上不是随机的)选取任务执行。因为程序执行的参数包装在提交了的任务中(写明了“以上设置的修改对执行中的任务也有效”的除外),任务在等待执行的过程中,可能会因为前面执行了其他任务导致该任务包含的参数不再有意义。所以在同时提交多个任务的场景下(如同时触发多个不同功能的执行单元),有可能因为执行顺序导致最终的效果与预期不符合,这时就要按照预期修改优先级避免冲突。

  • “启用”、“触发”、“禁用”有什么区别?

    “触发”一个执行单元时,如果这个执行单元没有被启用则会先启用再触发(也就是说触发附带了启用)。而“启用”只启用,不触发。启用与禁用的区别是该执行单元能否接收到内部广播的事件,进而做出反应。禁用不仅能够阻止执行单元接收消息,若执行单元正在执行或等待执行某个任务,则禁用的同时还会立即取消这些任务。触发则是直接运行执行单元的默认逻辑,但仅执行单元没有在工作(即内部状态机为默认状态)时才可以触发。

  • 为什么设置了“触发条件”却没有触发?

    检查①检查代码(包括“使用模板”自动生成的代码)有没有错误②执行单元是否“启用”③执行单元是否“启用附加触发条件”④触发时执行单元是否正在工作(“带默认触发条件”的执行单元运行时会屏蔽“附加触发条件”)。