We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Kerbalism 对于食物的生产模拟是间隔产出而不是像 TAC LS 的实时产出,这是为了模拟植物的生长,为了拟真化体验。 但是这功能有个弊端,即玩家需要在食物成熟时(通常是200天)手动切换到目标进行手动收获,这个机制一开始很新鲜,但重复操作的次数多了之后只会觉得很恼人,因为我们没有自动收获的选项。 所以为了实现自动化,或者实现类似于 TAC LS 的食物产出,我们就需要修改 Kerbalism 的这个系统,让食物作为资源实时产出,无需等待收获时间。
接下来就是如何手动改写 Kerbalism 的 Patch 配置。
Kerbalism 有个名为 Greenhouse 的 MODULE:https://github.com/Kerbalism/Kerbalism/wiki/TechGuide-~-PartModules-~-Greenhouse
为了实现实时产出,我们可以在这个 MODULE 中添加 OUTPUT_RESOURCE 直接添加一个额外的资源产出:
OUTPUT_RESOURCE
OUTPUT_RESOURCE { name = Food rate = 每秒产出 }
Kerbalism 的 Greenhouse MODULE 的 crop_size、crop_rate 分别为食物的收获量和产出速度,根据这两个字段来计算我们所需的 rate。
crop_size
crop_rate
首先用 1 / crop_rate 得到 crop_rate 增长到 1 的总经过秒数 T 然后用 crop_size / T 即可得到食物每秒产出食物的 rate 的值
1 / crop_rate
crop_size / T
rate
rate的值已经确定,但同时还要取消掉原来的产出,即将 crop_size 设置为 0,理应也将 crop_rate 设置为 0,但是在 Kerbalism 的代码中:
https://github.com/Kerbalism/Kerbalism/blob/master/src/Kerbalism/Modules/Greenhouse.cs#L233-L235
https://github.com/Kerbalism/Kerbalism/blob/master/src/Kerbalism/Modules/Greenhouse.cs#L343-L345
https://github.com/Kerbalism/Kerbalism/blob/master/src/Kerbalism/Modules/Greenhouse.cs#L442
crop_size 会作为除数存在,所以不能设置为 0,所以只好退而求其次,将生长速度设置为负,或让生长速率极其缓慢(生长个几千年)。
那么接下来的事情就是为这些 Greenhouse 编写所需的 MM Patch,如 Kerbalism 自带的部件
@PART[kerbalism-greenhouse]:NEEDS[ProfileDefault]:AFTER[KerbalismDefault] { @MODULE[Greenhouse] { @crop_size = 0 // 27.5625 @crop_rate = -0.00000000001 // 0.00000023148 OUTPUT_RESOURCE { name = Food rate = 0.0000063802 } } }
更多 Patch 可参考本项目中的 SomeMMPatches/KerbalismGreenHouse.cfg 文件
The text was updated successfully, but these errors were encountered:
Kerbalism 的后台资源计算好像对 KerbalGPS 的 ModuleGPSTransmitter 和 KerbalGPS 无法识别。所以日志会疯狂报错 所以在安装了 Kerbalism 的情况下取消掉对应部件的资源消耗就好了:
ModuleGPSTransmitter
KerbalGPS
@PART[FigaroReceiver]:NEEDS[KerbalGPS,Kerbalism]:AFTER[KerbalGPS] { @MODULE[KerbalGPS] { !RESOURCE[ElectricCharge] { } } } @PART[FigaroReceiver]:NEEDS[KerbalGPS,Kerbalism]:AFTER[KerbalGPS] { @MODULE[ModuleGPSTransmitter] { !RESOURCE[ElectricCharge] { } } } @PART[FigaroReceiver]:NEEDS[KerbalGPS,Kerbalism]:AFTER[KerbalGPS] { @MODULE[KerbalGPS] { !RESOURCE[ElectricCharge] { } } }
同时,Kerbal GPS 会将所有的带有 ModuleCommand 的部件添加 KerbalGPS,所以还需要将这些被 Patch 的部件删除资源消耗
ModuleCommand
@PART[*]:HAS[@MODULE[KerbalGPS]]:NEEDS[KerbalGPS, Kerbalism]:AFTER[KerbalGPS] { @MODULE[KerbalGPS] { !RESOURCE[ElectricCharge] { } } }
或参考本项目中 SomeMMPatches\KerbalGPSPatch.cfg 的做法
Sorry, something went wrong.
No branches or pull requests
Kerbalism 自动化食物产出
Kerbalism 对于食物的生产模拟是间隔产出而不是像 TAC LS 的实时产出,这是为了模拟植物的生长,为了拟真化体验。
但是这功能有个弊端,即玩家需要在食物成熟时(通常是200天)手动切换到目标进行手动收获,这个机制一开始很新鲜,但重复操作的次数多了之后只会觉得很恼人,因为我们没有自动收获的选项。
所以为了实现自动化,或者实现类似于 TAC LS 的食物产出,我们就需要修改 Kerbalism 的这个系统,让食物作为资源实时产出,无需等待收获时间。
接下来就是如何手动改写 Kerbalism 的 Patch 配置。
Kerbalism 有个名为 Greenhouse 的 MODULE:https://github.com/Kerbalism/Kerbalism/wiki/TechGuide-~-PartModules-~-Greenhouse
为了实现实时产出,我们可以在这个 MODULE 中添加
OUTPUT_RESOURCE
直接添加一个额外的资源产出:Kerbalism 的 Greenhouse MODULE 的
crop_size
、crop_rate
分别为食物的收获量和产出速度,根据这两个字段来计算我们所需的 rate。首先用
1 / crop_rate
得到crop_rate
增长到 1 的总经过秒数 T然后用
crop_size / T
即可得到食物每秒产出食物的rate
的值rate
的值已经确定,但同时还要取消掉原来的产出,即将crop_size
设置为 0,理应也将crop_rate
设置为 0,但是在 Kerbalism 的代码中:https://github.com/Kerbalism/Kerbalism/blob/master/src/Kerbalism/Modules/Greenhouse.cs#L233-L235
https://github.com/Kerbalism/Kerbalism/blob/master/src/Kerbalism/Modules/Greenhouse.cs#L343-L345
https://github.com/Kerbalism/Kerbalism/blob/master/src/Kerbalism/Modules/Greenhouse.cs#L442
crop_size
会作为除数存在,所以不能设置为 0,所以只好退而求其次,将生长速度设置为负,或让生长速率极其缓慢(生长个几千年)。那么接下来的事情就是为这些 Greenhouse 编写所需的 MM Patch,如 Kerbalism 自带的部件
更多 Patch 可参考本项目中的 SomeMMPatches/KerbalismGreenHouse.cfg 文件
The text was updated successfully, but these errors were encountered: