《舰队收藏 肝帝模拟 改》使用说明

另有《已知问题与FAQ》可供查阅


给新手用户的使用说明

新手用户指刚接触本脚本,仅使用最基本的“基础远征”执行单元,实现简单自动远征的用户。

安装

本程序分两部分,浏览器插件和本体。

浏览器插件

使用前必须安装浏览器插件。浏览器插件用于协助脚本操作游戏。请根据自己使用的舰C专用浏览器选择插件。

  • 我仅开发了poi浏览器的插件。该插件详细内容及安装方法见→这里。(该插件开源于Github。本体稳定前我自己不会主动开发其他浏览器的插件,如果你急用可以对照这个自己开发。)
  • 有热心用户贡献了74EO 拡張版用的插件。该插件详细内容及安装方法见→这里

浏览器选择:我主要用poi,所以会依据poi开发。我的理解是,poi的优势是功能全、操作简单;74EO的优势是资源占用少、定制化能力强、可以多开。

本体

zip压缩包解压到任意文件夹。运行KancollePlayerSimulatorKai.exe即可使用。

如果你启动后立即报错“未能加载文件或程序集‘netstandard, Version=×××, ……’”,则说明该电脑没有安装本程序要求的最低.net Framework 4.7.2版运行环境。那么需要在这里下载安装包(选择Runtime那一项)。系统最低要求win7 SP1。若安装失败请打完系统补丁后再试。

远征

自动远征很简单,只要照着以下步骤做就可以了。

  • 切换到程序最左侧显示的“功能”选项卡,选中“配置”中的“默认配置”,可以看到右侧已经有了一个名为“基础远征”的执行单元。
  • 因为每个“基础远征”执行单元仅负责收发一个舰队的远征,有3个远征舰队就需要3个“基础远征”执行单元。点击“执行单元”下方的“添加”按钮会弹出窗口让你选择要添加的执行单元类型。多次选中并添加“基础远征”执行单元。
  • 分别设置这几个“基础远征”执行单元。只设置舰队号和远征号就行了,其他的选项不用管。
  • 设置好后“触发”执行单元才会开始执行,对于“基础远征”,直接点下方的“全部启用”就大功告成了(这么做可行是因为“启用执行单元时立即触发”选项默认是勾上的)。

做到这里已经可以自动远征了。如果遇到了问题,请查阅《已知问题与FAQ》。对于第一次使用本程序的用户,强烈不建议立即尝试后续内容。


给普通用户的使用说明

因为加图片有点麻烦,所以该文章目前没有图片,以后我有空会加上。文字叙述已经足够清楚,阅读需要耐心。

普通用户指理解了本脚本的设计,并能灵活组合已有执行单元以实现一定程度自定义执行流程的用户。用对本程序的简单操作替换大部分对游戏的单调操作。

注册

试用版本可以使用几乎所有的功能。使用注册码(需购买)后可解锁仅有的两个付费功能:①(自动&手动)存取配置;②不限制单次启动运行时间。利用存取配置功能,一次配置重复使用,一键启动既定流程,后续可以省下大量脑力和时间。

试用功能限制很少,不需要付费功能的用户没必要购买注册码。因为注册码自动发货且虚拟商品不可退货,务必能稳定运行后再购买。这一代脚本的注册码改为购买时长模式,可以换电脑登录。不会再有买断模式,因为自由登录需要服务器支持,而注册服务器是月租的,我不可能永远租下去。PayPal付款请邮件联系orzfirst@vip.qq.com。接受任意币种,参考价格为淘宝价格120%(含手续费、人工费),实时汇率。建议使用淘宝购买。

只提供90天注册码&不允许累积时长是考虑到:本程序的开发受游戏本身限制,我不吹牛,所以不会做永远可用的保证。预付费时长越短我的违约风险和损害就越小,但用户用起来会麻烦,需要权衡。

注册后,软件设置(包括注册码)保存在config.json文件中;未关闭的配置保存在default.json文件中。更新本体时保留这两个文件可以避免重新设置。

出击

以下是出击配置选取执行单元的基本步骤,请在此基础上自定义,并举一反三:

  • 点击“配置”框中的“新建”按钮,新建一个配置。
  • 选中该配置,点击“执行单元”框中的“添加按钮”,会弹出“选择执行单元类型”窗口。按住Ctrl键,同时选中“关联出击”、“单次出击”、“基础补给舰队”、“基础入渠”这几种,点击“确认”。
  • 选中刚添加到“执行单元”框中的名为“关联出击”的执行单元,点击“⑦出击”-点击下方的“浏览”-在弹出的窗口选择“单次出击”-“确认”,点击“⑥补给”-点击下方的“浏览”-在弹出的窗口选择“基础补给舰队”-“确认”,点击“⑤入渠”-点击下方的“浏览”-在弹出的窗口选择“基础入渠”-“确认”。
  • 根据自身需求修改各个执行单元的设置。也可根据需要继续添加更多执行单元并关联。
  • 选中“执行单元”框中的名为“关联出击”的执行单元,点击右侧的“立即触发”,即可开始运作。如果遇到了问题,请查阅《已知问题与FAQ》。

对于以上步骤抽象的解释:

要灵活运用本脚本的功能,就需要了解为什么这一代程序要新增“关联执行单元”这个机制。过往几代的脚本,都是把可以设置的功能分页显示的,如“远征”、“入渠”、“编成”、“出击”,用户进入选项卡分别设置就可以按照既定的流程执行脚本。但很多用户会来问我,可不可以同时套用两套“入渠”的策略,可不可以同时执行两套出击策略这类高度个性化设置问题。显然,过去的脚本是做不到的,因为各个功能的执行流程是写死了的,设置项也是固定的,灵活度被严重限制住了。为了解决这个问题,我这次使用了模块化的设计,把不同的常用功能封装成“执行单元”,然后按照需求结合这些执行单元就可以突破过去设计的限制。当然灵活的代价,就是你现在要自己决定要用哪个执行单元,以及如何组合这些执行单元了,这两步是过去程序设置环节中没有的。除了多了这两步之外,这一代脚本的设置都做得足够“傻瓜化”,多用几次就可以上手。因为用户的要求太多样,所以功能选项做得很细致,第一次用就不要管那些“高级设置”、复杂的执行单元,以免打击自信。设置的时候需要你静下心来认真看完选项说明文字,对新手来说设置一整套配置一次成功不太可能,运行遇到问题先去看《已知问题与FAQ。实在没头绪也可以参考我给的那些“范例配置”(需要注册后才可以读取),在它们的基础上修改。

第一步是决定使用哪些执行单元。决定使用哪些执行单元非常简单,新建一个配置,然后根据需要“添加”需要功能对应的执行单元并设置即可。基本取用“基础××”里的“补给”、“入渠”就可以了,出击要用“单次出击”。第二步要结合这些执行单元。为了方便大家使用,我制作了一些可以“关联执行单元”的执行单元(如“关联出击”、“串联(定时)”),用它们可以把你已经设置好了的执行单元组合起来,起到了“胶水”的作用。在同一个配置里再添加个这种执行单元。这类执行单元预设了一些步骤,你需要选取相应步骤相关的那些执行单元。可以选择多个,用不上某一步骤也可以空着,甚至可以设置和步骤名称作用不相关的执行单元。然后触发这个作为“胶水”的执行单元,这个执行单元就会在固定的步骤触发被关联的执行单元,程序会开始执行一整套功能。

刷闪

刷闪涉及到游戏几乎全部的功能。相比于前面基本的出击配置,至少需要加入“基础编成舰队”执行单元来实现自动换船。要注意正确设置换船的条件,比如旗舰只换上士气不够的船。

对于已注册用户,“范例配置”中有个1-1刷闪配置直接可下载后使用(不知道怎么在Github上下载文件的话,也可以去发布页面百度云的下载链接下载)。下载下来后点击“打开”按钮读取这个配置(该按钮注册后才会显示),先在叫“待刷”的那个执行单元里设置一下要给哪些船刷闪,然后“触发”那个叫”总控”的执行单元就能开始刷闪了。其中候选船舰船ID可以直接在舰队里配好,然后用导入舰队的按钮一键添加。全刷完了之后脚本会弹窗报错说没有可以更换的船,就自动停止出击了。当然,这是单舰刷闪的配置,我的账号船多,等级都不低,入渠了也不影响啥,你要是矫情非要带狗粮,那你在这个框架上自己改。

使用建议

  • 设置好的配置记得手动“另存”一下。建议用到哪个配置“打开”哪个配置,配置用完了就“关闭”。这样做的好处有,①看着清爽②不会因设置不规范导致配置间误触发③可以随时根据需求在已保存配置的基础上修改某些设置而不用记得用完改回来
  • 跑短远征每天停止几小时,否则容易被发猫。可以通过设置(“关联××”执行单元中的设置,或定时类执行单元)实现自动停止和自动开始。
  • (poi浏览器)用到陆航的话,poi插件里改用“使用基于Windows操作系统API的鼠标模拟机制”可以解决“选不中被陆航面板遮住的点”的问题。
  • “限制多核加速并行度”选项,最高建议设置到CPU核心数(不含超线程出来的核心),最低就是1。程序里没法判断哪些核心是超线程出来的,所以超线程出来的假的核也会当成真的核用上,结果就是导致电脑卡顿,表现就是游戏画面明显有卡顿感。

架构

简述

要进一步使用本程序,需要理解本程序的组成部分。

该程序包含以下几大功能模块:执行单元、组件、任务、事件。

最一般的工作流程是:执行单元向组件提交任务、组件处理任务后广播事件、执行单元被指定事件触发。当然,事件发出方是任意的,执行单元也可以发送事件,比如“关联出击”执行单元自动停止后会发出事件。

组件是实际操作游戏的部分,只包含控制游戏完成任务的逻辑,比如如何为指定舰队更换指定舰船。

执行单元中的逻辑较为复杂,它会根据设置和实际状况提交不同的任务、设置任务的值,比如决定换编成时该换哪些船。

本程序中,用户主要可以控制的,是执行单元如何响应事件,即使用“触发条件”功能。不怕麻烦的话用python编写自己的执行单元也是可以的。“触发条件”处的代码还可以修改“执行单元”的成员,也算是某种意义的自定义已有的执行单元。

触发条件

简述

每个启用了的执行单元都会监听所有的事件,并在接收到指定消息时触发执行单元。“带默认触发条件”的执行单元默认已经有了对一些事件的反应能力,在首次触发后会自动根据内部状态和收到的事件执行一系列的动作。用户也可以使用“附加Python脚本”额外设置“附加触发条件”,“附加触发条件”仅在“默认触发条件”不生效时执行判断。

“附加Python脚本”有三种选项。“使用模板”是通过一些设置自动生成Python代码,这些设置是给定的,只能用来设置“附加触发条件”,虽然不灵活但对于常规使用是完全足够的。自动生成的代码的第一行的注释用来区分代码是否是自动生成的,你甚至可以把代码复制到“使用代码”并进行修改。“使用代码”需要会写Python代码,好处是更灵活,可以判断更多事件的属性(比如“使用模板”里没提供设置的),甚至可以修改被附加的执行单元的属性。具体可以参考选中“使用代码”时显示的样例。

配置间联动

关联执行单元仅允许关联本配置内的执行单元,做这一限制是为了保证“配置”能独立使用,避免用户滥用造成混乱。假设已有配置A和配置B,想让配置A执行完后自动开始配置B。当然,把配置A和配置B合并成1个配置,然后关联起来是一种方案,但看起来会有些乱。以下介绍使用“触发条件”功能如何实现配置间联动。

在配置A里加入一个“单次发出用户事件”的执行单元,在“事件附带消息”里随便写点什么东西,设置关联让配置A执行完后触发这个执行单元。然后再改配置B,选中配置B中要联动的执行单元,选择“设置脚本”-“使用模板”-“添加要响应的事件”-“UserEvent”-勾选“匹配事件信息”并填上之前随便写的一样的内容-“确认”-“确认”-“启用”,这样就设置完成了配置A和配置B的联动。注意重新启动程序后联动虽然不用全部重新设置,但需要“启用”被联动的那些执行单元。因为启动程序后所有执行单元默认不启用,不启用执行单元,该执行单元就不会去接收事件。

可以这样达到联动的目的是因为,附加在执行单元上的Python脚本发现收到的事件是正在关注的事件后会触发该执行单元自身。事件是全局的,不受配置限制,所以可以做到跨配置触发。同理你也可以设置一对多(比如一个配置放总开关,其他配置都响应这个总开关发出的事件),或者可以自己编写Python脚本做出更复杂联动的功能(可以利用各种库和脚本API做出判断还可以实时修改执行单元的设置)。

如果你要保存联动的几个配置,可以按住Ctrl选中多个配置,然后点击“另存”按钮,这样可以把多个配置存成一个文件。建议给相互联动的配置起名字时遵循一定格式,方便自己辨识。

进阶远征和出击

控制远征流程

使用“关联远征“可以详细控制远征的各个步骤如何实现。比如“范例配置”中就有几个没闪就自动停止远征的远征配置。

远征队自动补闪

范例配置中已有此类配置,如有需要请自行取用并举一反三,下面解释设置原理。

使用“关联远征”执行单元可以给远征队换船。但“关联远征”这个执行单元只能换船,想要给远征队补闪需要另外设置“关联出击”执行单元,直接套用刷闪的设置即可。然后需要让这两个执行单元互动起来,以实现自动给从远征队换下来的没闪了的船刷闪。要注意的是,这里不是给远征队中的船刷闪,因为那样刷的时候跑不了远征,效率极低。大致的思路就是为刷闪的“关联出击”添加附加触发条件(使用模板)。“关联出击”换编成成功后会有一个类型为OrganizeChangeFinishedEvent的事件,“关联出击”响应这个事件并触发,就可以实现这两者的联动:换了编成就代表有船被换下来了,这时启动刷闪。该事件有一个“Fleet”属性,代表更换完成的舰队,应使用这个属性区分事件是关于哪个舰队的。想用一个刷闪配置同时对应多个远征队的自动补闪,请使用模板时多次“添加要响应的事件”,分别设置匹配的舰队。

同舰队多目标出击

本脚本支持同时运行多个出击配置。
使用关联出击/远征执行单元的“循环内独占执行”功能(默认启用)穿插使用一个舰队出击也不会冲突,可以最大化利用等待疲劳恢复的时间。
每个配置请设置好出击前编成执行单元,因为其他执行单元可能把舰队配置改掉,所以出击前得确保改回来。

期间限定海域

要让脚本支持选取期间限定海域,需要额外向脚本提供一些有关期间限定海域的信息。这些信息每次都会变,所以每次活动都要适配过后才能出击活动图。我虽然会发布做好的数据,但由于我每次活动都是等到结束前几天抄攻略的,我发布我做的数据时肯定已经很晚了。所以着急出击期间限定海域的用户要么自己制作数据,要么用别人做好的数据。

以下介绍一下怎么自己制作数据,不爱动手动脑的用户就不需要接着看下去了。整个过程相对旧版(《肝帝模拟》)的改期间限定海域lua的代码简单得多(但不支持旧版那种固定几个连续的点击坐标,至于以后会不会加进去,以后有空我再考虑)。

  1. 打开“数据工具”切换到“模板”,有形如Sortie_SeaEvent_Page1_A的项目,选中后可以看到详细信息,通常是过往活动的数据。先关闭“数据工具”(否则文件会被占用),替换data/images下对应文件名的png图片,打开“数据工具”并修改对应项的“阈值”即可。这里的模板要选用能够准确表明页面特征的区域,先截图(要求截图分辨率1200*720,建议截无损格式),后用photoshop选中特征区域,反选删除剩余区域并保存成同名png文件。我选的区域是那一页第一个海域的图片(因为显示一页时第1个海域肯定是开放了的,就省得再做不开放的模板了),并排除了可能会被遮住的区域(翻页按钮、通关等级图标)。我还分了A、B,A是正常情况下的模板、B是鼠标悬停时的模板,任意一个匹配成功就算页面匹配成功,这样可以保证任何情况下都能成功匹配。自用的话单改A就可以了(因为要鼠标悬停时截图需要点技巧,我以前用触摸屏这么截问题不大,后来不用了就写了个python脚本延时截图)。
  2. 页面跳转的识别也需要模板,模板名称形如Sortie_SeaEvent_Page2Avaliable,图片是翻页的按钮。每一个按钮都不一样,所以都要替换并修改阈值。
  3. 除此之外模板Sortie_SeaEvent_E1Reminder每次活动也会变,也要替换和改阈值。
  4. 识别页面做完后还要做各个期间限定海域的点选范围,“数据工具”切换到“坐标”,有名称形如Sortie_EventSea_Page1_Area1Button的条目。你要用鼠标框选每个海域合适的点击坐标范围。要注意避开基地航空队按钮和海域通关后可能会开放的翻页按钮。
  5. 关闭“数据工具”,来修改最后一个文件,这个文件需要使用文本编辑器修改,建议使用能够高亮json语法的编辑器。打开data文件夹下的ExtraData.json,修改sea.event.area里面的内容。1、2、3…代表E1、E2、E3…,照着以前数据的格式修改page和point字段,告诉脚本这些海域都在哪个页面上,点选的时候点哪。项数不够的自己添加。注意json格式列表最后一项末尾不可以加逗号,改完后保存。
  6. 然后打开程序本体就可以开始用了。
  7. 如果你想发布你修改的数据,你至少需要发布ExtraData.json、Patterns.json、Points.json、images文件夹下替换过的模板图片。

隐藏设置

简述

程序的部分设置项通常不需要修改,为了让程序界面更清爽,对新手更友好些,所以这些设置项不在用户界面中显示。需要关闭程序后修改config.json。改的时候要注意遵守json的格式,是和否用“true”和“false”(不包含引号),字符串用半角双引号括起来,之类的。

此外,log.xml是log4net的配置文件,修改它可以改变logger的行为,比如修改log等级(Debug可以看到更多信息、默认Info),发送log到远程计算机。修改该文件中的设置不需要重启程序即可生效。详见log4net配置文件指南,本文不再介绍。

设置项

  • LogConfigurationFilePath:log4net配置文件路径,默认是log.xml。
  • EmulatePointerMovement:模拟指针移动。开启后会模拟指针的移动过程,但会增加网络开销。指针“移动速度”设定得过快的话会看不到效果。不开启的话,就是类似于电磁笔的操作模式,但操作前的延迟还是由“移动速度”设置项控制。
  • MoveAwayPointerAtHomePort:每次返回母港后是否再把指针移走。如果指针悬停在某个按钮上的状态让你看着难受,那就打开这个选项吧。
  • AllowPointerOperationsInAllThreads:是否允许非操作线程的线程调用指针操作API。写不规范的Python脚本时可能会用到,“数据工具”可能会用到。
  • DotNetImageProcessing:是否使用.net版的图像处理组件(基于OpenCvSharp)。过渡期选项。设置为false的话,就是原来那个动作很慢的版本。
  • LoopCheckIntervalMilliseconds:内部每循环最小间隔(毫秒)。增大可以减少等待时截图的网络开销,但程序反应会更迟钝。
  • ShowErrorDialog:出现错误后是否弹窗提醒。
  • AllowChangeShipSelectorSortMethod:是否允许选择舰船时切换舰船排序方法,允许后选择舰船的鼠标点击次数更少,但计算点击步骤的时间可能会变短或变长。
  • AllowChangeShipSelectorFilter:是否允许选择舰船时切换单个舰种过滤器,允许后选择舰船的鼠标点击次数更少,但计算点击步骤的时间可能会较大幅变短或变长。游戏中仅“编成”功能提供了舰种过滤器。
  • CheckEscortShipBeforeFormation:选择阵型前是否检查伴随舰大破。启用,选择阵型时如果发现任意伴随舰大破且没带损管,就会报错。该功能是一个防止意外大破进击的保险措施,对于选不了阵型的战斗起不了作用。
  • AllowTrackUsage:是否允许上报使用频率。

数据工具

简述

本程序附带了一个小工具KancollePlayerSimulatorKaiTool.exe,用于修改程序的外部数据。该工具本来是给我自己用的,是以“能用就行”的标准开发的,所以做一些奇怪的操作后会直接挂掉。

点击范围可以在“坐标”里自行调整。UI魔改可以自己在“模板”里替换图片并设置。对于还不能识别的页面,可以参照其他页面分别自行添加。

有些用户那里会发生固定卡在某个页面、或者固定某个页面识别成别的页面。我在制作时图像匹配已经留有了足够的宽容度,即便如此也出现了前述的问题,说明游戏画面和我这里的差别太大,一定是哪里出了问题。使用“数据工具”可以临时解决,需调大或调小对应页面的“模板”阈值。

“数据工具”默认使用本体的网络设置,需要先在本体中设置好。使用时应关闭脚本本体,以避免要修改的文件被占用,“数据工具”关闭后再打开本体。更新本体时,旧的数据可能被覆盖。

坐标

坐标用于定义指针点击范围。数据以归一化的形式保存,而不是以像素保存。

模板

模板用来匹配游戏画面。“模板”中的“阈值”的作用是匹配的差异度高于阈值时匹配失败,过高的阈值会在不应该匹配成功时错误匹配,过低的阈值会匹配失败。选中“搜索最大匹配阈值(单个)”可以自动搜索阈值,过一段时间后会显示在右侧,填入的阈值应该比搜索出来的值略大。要注意的是模板用到的图片一律以游戏原生的1200*720分辨率制作,在匹配更低分辨率或图像质量更差时,合适的阈值会更高,但过高的阈值可能会导致误匹配成功,想要在其他分辨率使用的话需要考虑到这一点。

页面、链接

用于程序的导航模块,这个模块的功能就是识别当前页面、计算如何点击才能进入到指定页面。

页面通过其链接构成有向图,图可以是不完全连通的。页面根据“判断表达式”匹配,判断表达式中的内容是匹配时用到的模板,表达式支持&、|、!、(、)几种运算符。页面可以有父页面,相当于一种继承关系,会继承父页面的匹配条件、链接。

链接是通过一次点击“坐标”,到达另一个页面用到的数据。

其他相关内容待后续开发后补完


给高端用户的使用说明

高端用户指理解了本脚本的组成,并使用python完全自由控制脚本执行流程的用户。和“普通用户”的区别在于得写python代码。

(开发目标是)最高可以实现长期无人值守完成人能做到的几乎所有玩法。

附加Python脚本

可以将Python脚本附加在任意一个执行单元上,以控制该执行单元的行为。

使用方法是,选中要附加Python脚本的执行单元,点击“设置脚本”,在弹出的窗口选中“使用代码”。“内嵌代码”可以让代码随配置一同发布。“外链.py文件”可以复用python代码但不方便对外发布,路径可以使用相对于程序本体所在文件夹的相对路径。使用的Python标准是IronPython2(如果IronPython3正式发布,将会尽快迁移),可以引入该标准兼容的Python库,已经随本体附带了一些标准库。每个Python脚本的执行环境独立,仅在附加的脚本内容更改或者执行单元载入时初始化。附加的脚本的执行环境中有两个预定义的变量,Workflow和Logger。Workflow是脚本被附加的执行单元的实例,可以读写它的所有公开属性和函数(具体执行单元的公开属性可以参考保存配置时的json文件)。Logger是Log4Net中ILog的实例,用于输出log,用法详见其文档,单纯的往控制台输出直接用print()就行。使用本体提供的API需要先引入KancollePlayerSimulatorKaiCore模块,部分功能可能需要引入KancollePlayerSimulatorKai模块(这一部分后续将会调整)。标准输出(print)的内容可以从“关于”选项卡中的“打开控制台输出窗口”功能中看到。

入口点

程序执行时会查找附加在执行单元上的Python脚本中是否包含指定名称的函数。如果找到了,就会按照下述规则调用。部分执行单元会有专用的入口函数。

  • OnEvent:参数1:Event-收到的事件;返回:bool。用于提供“附加触发条件”功能的支持。接收到一个事件时调用。返回是否触发被依附的执行单元。被依附的执行单元被禁用、默认触发条件已经对事件作出响应、非空闲状态时该函数不会被调用。
  • OnEnabled:被附加的执行单元被启用后调用。
  • OnDisabled:被附加的执行单元被禁用后调用。
  • OnPropertyChanged:参数1:String-改变了的属性的名称。被附加的执行单元的属性变化后调用。
  • OnProcess:被附加的执行单元被触发后实际执行执行单元的逻辑之前调用。
  • OnDispose:执行单元被用户点击“删除”时调用。
  • OnSortie(单次出击):返回:bool。执行出击前调用的检查函数,返回False表示检查不通过。可用来检查舰队状况,比如是否符合出击编成要求。
  • OnAutoStop(关联远征/出击):返回:bool。每循环结束前调用,用于返回本循环是否要自动停止。
  • OnAutoStopped(关联远征/出击):自动停止后调用。
  • OnSetTimer(关联出击):参数1:int-按照设定本次循环应当等待的秒数;返回:int-你想要设置的本循环等待的秒数。用于灵活设定等待时长。
  • OnRenderUserControl(自定义):被附加的执行单元需要显示用户控件时调用,返回WPF的UserControl对象。用这个函数实现自定义执行单元的用户界面。

独立Python脚本

使用“关于”选项卡中的“在新线程执行脚本文件”功能可以在一个新线程中运行Python脚本,而不是附加在执行单元上。脚本中可以使用所有API,可以用来控制整个程序运行,比如启用执行单元。可以运行的数量不限,需自行管理脚本生命周期。

命令行选项

  • –script 可指定多个独立Python脚本的文件名,程序启动时会自动在后台执行

本体API

见下方API一节。

其他相关内容待后续开发后补完


其他信息

本地化

本程序仅提供简体中文版本与简体中文支持。虽然我本人还会英语(美国读研)和日语(N1),但自知水平不怎么样,中译外肯定是不地道的,所以不会推出其他语言版本。

如果你想要翻译本软件,可以直接翻译,不需要我的许可,但请不要夹带奇怪的私货(如破解、商业广告)。

需要翻译的部分为UI界面和字符串。

UI里的文本是直接写在XAML里的,XAML会被编译成BAML后嵌入到KancollePlayerSimulatorKai.exe的资源中。有很多工具可以提取其中的文本,允许对照翻译并重新编译,如LocBaml

字符串保存在zh-CN文件夹下的资源文件里了(*.resources.dll),使用相应工具翻译并重新编译后放到对应语言的文件夹下即可。

注意:①该程序还在开发阶段,文本内容会经常变化。②因为还在开发,有相当一部分的字符串没有移动到资源文件中,这些字符串你无法提取并翻译。我会在程序稳定后慢慢把这些字符串移动到资源文件中。

开放源代码

计划在程序稳定后开放UI部分的源代码,会用GPL协议。我自知没有前端功底,做的页面也不讲究多美观,也没时间讲究,所以看不惯的会允许自己改。

执行单元的源代码,不打算开源。目前没有独立到单独的库文件中,就在KancollePlayerSimulatorKai.exe里,也没有加密,使用类似ILSpy这种工具可以看到编译过后的代码(和源代码会有些不一样),可以用来写Python时参考内部API的用法。这一部分以后会独立做成一个库文件,要不要加密看情况,出了破解再加,没见到破解就不打算加。

KancollePlayerSimulatorEvolCore和KancollePlayerSimulatorKaiCore不开源,已加密。包含了程序框架,代码量不多。

再次提醒,请不要下载不明来源的本程序,谨防软件被挂木马。以前旧版(《肝帝模拟》)没加壳时,就有人挂了盗号木马发出来,搞得我背了黑锅洗不清,所以我后来加了壳防止程序被修改。至于防破解这事,我其实不是很上心,但请注意公开发布的小众软件的破解经常是另有企图的。


API

程序提供了一些API用于辅助Python脚本执行,它们包含在KancollePlayerSimulatorKaiCore中的一些类中,它们是静态的。使用时直接使用“类名.API名”即可。

Utility

程序执行相关工具。

  • Groups:只读属性。所有打开的配置的列表。
  • AddTask:参数1:Task。提交一个任务。
  • RaiseEvent:参数1:Event。发出一个事件。

ShipUtility

舰船实例相关的封包数据处理工具。(具体成员待补充)

ShipConstUtility

舰船常量相关的封包数据数据处理工具。(具体成员待补充)

FleetUtility

舰队编成相关的封包数据数据处理工具(具体成员待补充)

DockingUtility

修复渠相关的封包数据数据处理工具。(具体成员待补充)

EquipmentUtility

装备实例相关的封包数据处理工具。(具体成员待补充)

EquipmentConstUtility

装备常量相关的封包数据数据处理工具。(具体成员待补充)

BasicUtility

游戏账户信息相关的封包数据数据处理工具。(具体成员待补充)

其他相关内容待后续开发后补完