= 创作分享 =
技术讨论
使用小乌龟对小撮、小堆矿粉进行无脑合成 ...
odixus

使用小乌龟对小撮、小堆矿粉进行无脑合成

odixus 于 2018-3-12 18:39 ( 6年前 ) 发表在 [教程] 分类。 [复制链接] [只看楼主] [打印]
3828 6
本贴模组名片
电脑 (Computer Craft)
[h1=简介][ban:title_menu]ComputerCraft 是一款为 Minecraft 世界增加了电脑、显示器、有线或无线网络、机器人、打印机以及其他电脑外设的模组。所有相关设备和红石信号都可以很轻松地使用 Lua 语言进行编程操作。你可以通过电脑控制红石信号(甚至支持 RedPower2 重置版的捆绑线缆..
本帖最后由 odixus 于 2018-3-13 09:51 编辑

这是第三份教程了,这一节我们会用到两台小乌龟。




一、设计背景
  史蒂夫终于建设起了庞大的自动矿物处理工厂,研磨、离心、电解、洗矿、筛矿、热力离心都有了,而且全自动投料。他觉得自己应该可以休息一下下了吧……
  
  可是睡一觉起来,他发现自己的箱子满了:离心、研磨、洗矿产生了大量的小撮、小堆矿粉,这些粉末即不能电解也不能离心,越堆越多。怎么办呢?手动是忙不过来了,史蒂夫尝试了几种方法:
  • 循环装配台!(或是其它可以保存配方的合成台)

    不得不说,TE的循环装配台是一台非常高效的机器。几K的粉末只要几分钟就能合成完毕。可是换图纸却把史蒂夫累成了狗。好吧,这个方法只能用来应应急。
  • AE的合成塔!
    史蒂夫建了一个小小子网,然后用ME接口和分子装配室建了一个合成集群。再用ME接口和ME输出总线搭了一个接收集群,设置好合成模板后让它们自动合成。


    问题貌似得到了不错的解决。但是还是有一点点美中不足:有些粉末是小撮和小堆同时存在,而作为产物标记的合成模板只有一个能生效。好吧,至少主要问题解决了,史蒂夫暂时放下了这个问题。直到有一天他再一次拿起小乌龟……

二、游戏环境:
  MineCraft1.7.10 + ComputerCraft 1.75 + ProjectRed 4.7.0pre12.95 + GregTech5.09.31


三、硬件环境:
  • 箱子*5。其中有两只是缓存箱,要求越大越好,因为至少要为每一种小撮/小堆粉末准备一个位置。推荐用多页箱子,因为它真的是非常能装!次一级的选择是TE的谐振保险箱,但是要满足需要,起码得附魔4级Holding,这个代价就有点大了。抽屉系列我没用过,如果可以直接从中提取物品的话也可以考虑。AE系列虽然容量巨大,但是不能直接抽取物品,不适用于这里。
  • 高级小乌龟2只,工作台一个。没错,就是MC里用4块木板合成的那个工作台。
  • 其它管道若干,按各位的喜好即可。
    摆放完毕是这个样子的:

    其中,左边的小乌龟负责分捡,右边的小乌龟负责合成。左上、右上的箱子都是接收成品的,不需要特意准备大箱子(我把左上的箱子换成了ME接口)。左下的箱子负责接收所有的机器处理产物,需要一个比较大的箱子。中间和右下的箱子是用来放置未能合成的粉末的,容量一定要够大,否则容易把小乌龟堵住。
    两只小乌龟都是面对中间箱子放置。
    至此,摆放完成!

三、软件环境:
  两只小乌龟各用各的软件,分别为:
  • 左边负责分捡的小乌龟是sortWorker.rar,这个软件可以从下方的箱子中提取物品,并判断是不是GT中的粉末。如果不是,就送到上面的箱子中送走;如果是,就送到前面的箱子中等待处理。压缩包中有三个文件,startup只是个引导,sortWorker是主程序,itemData是检索粉末的判断依据。
    这里说明一下如何判断粉末是我们需要的:
    GT中的粉末都是同一个名字,叫"gregtech:gt.metaitem.01"。区别仅在于其damage值不同。但是这个也有规律的:小撮粉末的damage都在1000以下,小堆的都在1000-2000之间。而且后3位数字是一样的!其它板、块、环等等都符合这个规律。大家可以自己尝试一下。因此,可以通过程序简单筛选出哪些是我们需要的东西。
    大家可以看一下itemData文件的内容,如果要对非GT的东西进行合成,比如铁粒、金粒什么的,那么请自行在里面加上内容。
  • 右边负责合成的小乌龟是crafter.rar,这个软件是这样工作的:小乌龟先从面前的箱子中提取一组物品,然后判断是小撮的还是小堆的。如果是小撮的,就平分成9堆,否则就平分成4堆。数量不够的部分扔回前面的箱子。如果一开始提取的就不够一次合成,那么就扔到下面的箱子中暂存。因此,箱子至少要能为每一种粉末保留一个位置。当然下面的箱子不能只放不取,这迟早要放满的。所以每隔游戏中的1小时(实际时间50秒),小乌龟会反过来从下面的箱子中提取物品,然后把不足的物品扔到前面的箱子中。这样就保证了物品能够被完全合成。如果箱子真的放满了,即使不到1小时,小乌龟也会立刻切换方向。这里的itemData文件和分捡小乌龟的是一样的,你可以在里面加上自己要合成的东西。如果没有添加或添加不正确,那么小乌龟会把不能合成的东西直接扔进成品箱子中。

    这就是我的箱子:放得够满吧?没事,后面还有4页是空的,地方多的是。


    大家可能注意到了,右边的小乌龟侧面多了个东西:这就是我们上面提到的工作台了:

    把它和小乌龟进行合成,才是能够进行合成的小乌龟。否则程序会报错的,因为”合成“这个功能不存在。
    对了,工作台在小乌龟的左侧和右侧没有区别。

四、后话
  整个程序是我今天用半天写完并调试通过的,可能会存在bug。如果发现问题,请跟贴回复,我会直接修改后再发布。若对功能有更多建议也欢迎提出!
  我的设计是自动分捡、自动合成,其实也可以拆开来用。比如把小撮、小堆粉末用存储总线分捡出来,也是完全可以的。不过我懒嘛,能用程序做的为什么还要我手工一个个标记~
  小乌龟的取名、文件的导入我都不在这里写了,不会的请看我以前关于CC的教程。
版本更新:
2018.3.13 增加一个配套的工具:addItem.rar。其作用是用来增加/修改筛选规则。对于sortWorker和crafter通用。也是放到小乌龟对应的程序文件目录中。
用法:
  • 右键点击小乌龟,可以看到小乌龟正在工作。请按 Ctrl + T 一秒钟以上,此时小乌龟会停止工作。
  • 清空小乌龟肚子里所有物品(推荐扔回源箱子),然后把要添加的物品放在格子里。键入“addItem”并回车运行,你放的物品就被记录了。例如要添加铁粒*9,就把9个铁粒放在任一格子里。如果要添加粘土,就把4个粘土放在一个格子里。可以同时放置多种物品,会一并记录。如果当前物品已经被记录过,就会把合成数量改成你放的数量。如果没有该物品,就会被添加进去。如果物品数量是错误的,也会被记录下来,这可以被用来“删除”配方。因为不能合成的配方是把原料扔进成品箱子。
    切记,对于小撮、小堆粉末,无法修改某一个物品,因为程序使用的是范围计算,任一改动都会修改所有的同类粉末的合成数量!结果导致所有同类粉末无法再被合成。
  • 物品记录完成后,或是键入“startup”以启动原程序,或是长按 Ctrl + R 一秒钟以重启小乌龟,都可以让小乌龟再次进入工作。

发表于 2018-3-12 18:39:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

回复 | 举报

该帖共收到 6 条回复!
smilesadness
提问:这个方法和“类型过滤器→物品缓存器×n→打包机”比有什么优势和不足?
发表于 2018-3-13 00:12:35 | 只看该作者

回复 | 举报

NoName德里奇
不得不说大佬的学术写作功底很强
可能含有一些与本文无关的知识的提问是这样
文中提到AE的缺点只是不够智能 可以做到用AE来做运输存储而用CC来分拣合成吗
更休落魄耽杯酒,亦莫猖狂爱咏诗。
        今日捉将官里去,这回断送老头皮!

发表于 2018-3-13 08:30:45 | 只看该作者

回复 | 举报

odixus
本帖最后由 odixus 于 2018-3-13 10:17 编辑

先回复一下smilesadness的问题吧。不得不说,你的建议很棒!你的办法完全可行。我完全把这几个设备忘掉了,这几种设备我只是造了一台体会一下就再也没用过。原因很简单:太贵,太累,可替代的方法太多。
首先说一下筛选器。没有仔细研究,估计功能和我写的sortWorker一样,通过代码挑出某类物品。可以替代的有:各种管道的黑白名单,AE的各种接口、总线,等等。可能不是按“类”而是按“种”处理,但是一开始也没那么多要处理的东西不是么。
再说一下缓存器。没有仔细研究,不知道是存一种物品还是多种。如果是多种,那就是一个多页箱子+整数输出;如果是一种……那就呵呵了。
最后是打包机。这就相当于一个固定配方、可变原料的工作台。
为什么这些东西我都不用呢?因为一开始起步的时候用不起。做一个电路板就能用光好几背包的矿,而且一步步全靠手动,谁也没那个资源用在这些地方。中期基本上找齐了AE的四大模板,一个合成塔就解决掉了绝大部分问题。可能大后期会想到它?好吧,这时我已经把它忘了。

如果要对比一下CC和这几台设备,大概如下:
优点:
  • 便宜。CC的材料最贵的是什么?是金。就算加上多页箱子,好吧,那就再加上8块钻石。这不说什么前期中期了,根本还没有起步好不好。
  • 节约。首先是节约能源:没人发现整套装备不需要用电么?连合成都没用电!其次是节约空间:如果看作一个整体,那就是一个3*1*3的设备,一个物品输入一个物品输出。
  • 高效。GT设备低压时效率惨不忍睹,至少要到EV以上才能让人接受。而CC呢?平均1秒一组材料。哦,忘了说了,CC可以完美兼容加速火把。加速火把不会影响程序的任何计时、判断,却会大大提高小乌龟吞吐物品的速度。插上一两个加速火把,你就可以看到小乌龟是如何飞起来的!我图中那一箱子物品只需要2秒就能从头到尾筛一遍哦。
  • 扩展。GT的这几个设备我不好评价,但是CC的这一套是可以合成很多东西的:铁/金/银/锡粒(离心岩浆产品),小块钚(热离心废燃料棒),羊毛(4根线),压缩圆石/沙砾/沙子/尘土/各种矿粉(无中生有)等等。可以说脑洞有多大,小乌龟的胃口就有多大。
缺点:
  • 难度。我已经尽量打包、整合,以方便广大没学过Lua的史蒂夫使用。刚刚我还上传了一个工具,让大家不需要修改文件就可以增加、修改筛选规则。但是CC本身确实是有些门槛的,特别是在出错的时候,很容易让人抓狂。
  • ………………想不到了。大家帮忙想想?


再回答NoNamePlay:
AE最强大的地方就是存储和系列合成。是“系列合成”哦(或是叫“嵌套合成”?),这是完成大工业的最基础保证。正因为用得太熟悉了,所以我第一时间也是用合成塔来进行粉末合成。
CC用来合成并不是最优。还是门槛的问题。对于上面的固定格式的配方,CC能够轻易处理;如果是复杂配方,那就成了编程方面的挑战了。想想每一张合成配方都要写上百行的程序,或是建立一大堆数组,你还有兴趣去做么?我迟迟没有动手写装配线的CC程序,就是还没有想好如何设计流程。
CC最厉害的,其实是互动性。它是可以自己跑的!想象一下一台小乌龟在工厂里跑来跑去:在这里拿一个物料,送到另一个位置,再到跑到控制台去送出一个红石信号以启动设备,发现自己没能源了还会跑到仓库自己拿点煤来吃……好有科幻感有木有!可是这样的程序我就算写出来了,估计也没人能照搬。能照搬的人应该都能自己写了。

总之,CC的最大特色其实是趣味性。但这个趣味要体会到是需要史蒂夫认真学习(进化)的!经过不懈努力,史蒂夫终于进化成了——程序猿。

发表于 2018-3-13 09:29:42 | 只看该作者

回复 | 举报

smilesadness
odixus 发表于 2018-3-13 09:29
先回复一下smilesadness的问题吧。不得不说,你的建议很棒!你的办法完全可行。我完全把这几个设备忘掉了, ...

物品缓存机1台缓存27种物品;电压看发展情况,用着阵列还想用LV解决问题这一点都不GT;粉处理和矿物处理同时进行我认为是没有压力的(大概)。
综上,GT物流的优势:风味纯正(?);少装一个mod。
另:轻量级mod“AutoPackager”了解一下。
发表于 2018-3-13 13:32:23 | 只看该作者

回复 | 举报

odixus
smilesadness 发表于 2018-3-13 13:32
物品缓存机1台缓存27种物品;电压看发展情况,用着阵列还想用LV解决问题这一点都不GT;粉处理和矿物处理 ...

看了一下AutoPackager,是“精准重定位”的一部分。有机会的话可能会尝试一下。不过对我来说,装AutoPackager还是装CC都是一回事,反正都要多装一个MOD。这就看个人爱好吧,我喜欢DIY,还是用代码虐自己玩儿吧。

关于我不怎么GT的事儿……仔细想想,你说的也对。用CC这样的更复杂的工具来解决原来就有的功能,确实有一点把大家往沟里带的意思。这个本来就应该是自娱自乐的东西,是很小众的MOD。我把它扔出来,反倒让别人有点选择困难了。用吧,有点摸不着头脑;不用吧,看着又似乎很好吃?好吧,我的错。

正式宣布:ComputerCraft教程到这里结束了。喜欢它的人不妨多看看lua相关教材,不喜欢它的人请无视它吧。
发表于 2018-3-13 13:55:39 | 只看该作者

回复 | 举报

smilesadness
odixus 发表于 2018-3-13 13:55
看了一下AutoPackager,是“精准重定位”的一部分。有机会的话可能会尝试一下。不过对我来说,装AutoPack ...

期待dalao能出更多实用的、没有lua基础也能使用的、其他mod做不到的CC教程,让更多人喜欢ComputerCraft。
人類に栄光あれ
发表于 2018-3-13 15:55:43 | 只看该作者

回复 | 举报

百科目前不允许匿名发帖哦~ 请先 [ 登陆 ][ 注册 ] 吧~

本版积分规则

发新帖
  • 回复
  • 点评
  • 评分

[ MC百科(mcmod.cn) 除另有声明,所有开放公共编辑的内容均使用 BY-NC-SA 3.0 协议 ]

Minecraft百科CC协议
快速回复 返回顶部 返回列表