加强版的Moon-Logic,给喜欢写代码整活儿的朋友们的礼物
异星工厂吧
全部回复
仅看楼主
level 10
zhuyw05 楼主
异星工厂最大的萌点,在我看来就是电路信号系统。而信号系统里最强的mod,自然就是Moon-logic,可以自己动手写lua脚本的运算器
Moon Logic - Factorio Mods
2023年09月07日 15点09分 1
level 10
zhuyw05 楼主
原版mod的链接在此
https ://mods.factorio.com/mod/Moon_Logic
2023年09月07日 15点09分 2
level 10
zhuyw05 楼主
靠这个东西,小到写一个靠原版电路难以搭出来的“取最小值”,大到彻底自动化你的基地。可以挖的潜力非常大! 我之前做过一个小作品
https://www.bilibili.com/video/BV1yh411q7T5/?spm_id_from=333.999.0.0&vd_source=c599f1c516205f55ffca3aeede288495
只要打个信号,就自动做出你要的东西,就是基于这个mod编程。
2023年09月07日 15点09分 3
level 10
zhuyw05 楼主
然而真的用的话,你会发现这个东西限制也非常多。主要是因为你写的代码并不是运行在原生底层,而是一个sandbox上。因此你没法直接访问游戏本身的数据,例如配方的信息, 机器的信息等等。这在有些工作中是非常必要的,因此我上面的那个档,用了极其麻烦而且迂回的方法。
因此这次,我决定直接对这个mod动手,给它加强一些功能。
2023年09月07日 15点09分 4
level 10
zhuyw05 楼主
玩SE,PY这种大mod的兄弟们知道,同样一个东西,前期后期做法是不一样的。后期往往会解锁高效配方,前期则只能用低效的。因此,读取科技当前已经解锁的配方非常有用!(PY的科技升级有时还会替换掉一些配方,即激活一个新配方同时disable一个旧的)。
添加了get_all_enabled_recipes函数,返回所有当前可用的配方。下图多点了几个油处理配方,因此输出多了一些原来没有的。
注意,在原版情况下,很多配方名字本身不是一个有效的signal name,因此无法作为moon combinator的输出。装一个叫做Crafting Combinator Xeraph's Fork的mod可以完美解决这个问题
2023年09月07日 16点09分 5
level 10
zhuyw05 楼主
添加了get_recipe_details 函数,可以读取配方所有有用的信息
返回值包括ingredient_table, products_table, net_ingredient_table, net_products_table, energy, craftable_machines
六个信息。由于有些配方input和output有某种物品重复出现(原版中就是铀增殖,各种mod里则到处都是),因此需求的物品,和净消耗/净产出物品都需要给出。
energy是在速度=1的机器上运行这个配方需要的时间,craftable_machines 则是这个配方可以在哪些机器上使用(不包括character,手搓)
2023年09月07日 16点09分 6
level 10
zhuyw05 楼主
Check_recipe_crafting_machines。返回能用这个配方的机器。是上面那个函数的一部分。[吐舌]做重复了
2023年09月07日 16点09分 7
level 10
zhuyw05 楼主
几个实用的数学函数,包括取最大,最小的key,整个table做乘法,加法,以及判断table A是否能cover B (例如判断你的存货是否够做某个东西),都是我自己会用到的一些功能。
2023年09月07日 16点09分 8
level 10
zhuyw05 楼主
哦对还有这个 获取一个机器的大小。原版里大部分机器都是3格,炼油厂5格。某些mod(说的就是你PY)则非常放飞自我 ,边长20的机器都有。。
可以看到,组装机和炼油厂的width和height分别为(3,3) 和(5,5),
但是石炉的width是1.59 。。。
因为直接读的selection_box的信息。可能你需要向上取整一下(基本上自动生成蓝图才会用到这个功能,真有人会用这个去写这种功能吗。。)
2023年09月07日 16点09分 10
level 10
zhuyw05 楼主
下载链接好像被吞了 再贴一次
链接:[无效] https://pan.baidu.com/s/1GD2vRwylm79-17jxT5JlNQ?pwd=jro8
提取码:jro8
--来自百度网盘超级会员V9的分享
2023年09月07日 16点09分 11
level 6
虽然好像看不懂,但是支持[小乖]
2023年09月07日 17点09分 12
level 10
zhuyw05 楼主
链接:[无效] https://pan.baidu.com/s/1MS2HuRLLk9f-KYJBjjB--Q?pwd=7h9u
提取码:7h9u
--来自百度网盘超级会员V9的分享
修正了一下get_min和get_max.
增加get_placeable_products_from_recipes函数,作用是,返回所有当前科技可以制造的,可以放下去的建筑的物品列表。包括各种制造机,各种传送带,管子,爪子,也包括所有的箱子,罐子,机器人基站,火车,汽车等等。
当你解锁新的科技,这个列表会自动更新
配合上面的函数,你应该可以很容易的造出一个单机器供应全世界的智能超市了[吐舌]。而且,放下之后就不用管了。不然像PY那种不同级别的机器上百种,一个个点也很烦呐。
2023年09月08日 01点09分 13
level 5
支持一下,晚上试试py
2023年09月08日 02点09分 14
我写这玩意就是对付PY的,但是现在还没有拿它开测。因为develop这玩意需要频繁的修改mod然后重启游戏,加载PY太慢。老哥感兴趣可以试试,也可以先插个眼,等养肥了再试
2023年09月08日 02点09分
ok,中午看看有时间可以测试一下,现在正在开第三瓶
2023年09月08日 02点09分
@zhuyw05 进游戏没有图标,这个是自动设计蓝图的吧,进游戏找不到图标,不知道是不是工厂规划师冲突
2023年09月08日 05点09分
一出工厂规划师也不行,游戏里面没有对应的选项
2023年09月08日 05点09分
level 5
但愿不死机
2023年09月08日 02点09分 15
level 5
看起来不错
2023年09月08日 12点09分 16
1 2 尾页