本帖最后由 飞鱼在天 于 2014-3-26 20:34 编辑
[diamond_gem]自动售货机[diamond_gem]
[redstone_dust]大家好,前些日子(去年)做了个比较新颖的自动售货机发到了论坛上,后来就有看见同学说要教程。于是乎,今天特地抽了个时间把教程弄了出来,之所以单独发了一个帖子,是因为这个教程可能会有点长,大家慢慢看吧,不算很难。
[redstone_dust]还有,要先说明一下,这个教程只是对我自己做的那个售货机的讲解,不一定适用于其他的自动售货机。所以,建议大家先看看我的这个帖子,下了存档后对比着看:
高端洋气上档次的自动售货机。
[redstone_dust]好了,现在教程开始:
[glowstone_dust]part 1 核心元件:投币发货系统 阅读需要:基本红石知识、漏斗和比较器基础知识
[redstone_dust]做自动售货机最重要的是什么,当然是收钱和发货。那么,怎样确定玩家是否投币从而发货呢?在这里,我们就要请上1.5版本后红石界新增的两大重要成员——漏斗、红石比较器。
[redstone_dust]先说漏斗,作为自动售货机的核心元件,它在整个机器中起到了不可或缺的作用,下面是它的尊荣(你说那边的坑,呵呵,不要在意那些细节):
[redstone_dust]别看他其貌不扬,它的作用可大着呢,它能够将自己上方或隔了一块半砖上方的掉落物吸进来并按一定速度输送到下面的容器内(如果有的话),根据这一点,我们可以做出一个投币窗口,当玩家投金币在它上方时它就可以将其传输到下面的发射器中(本装置使用发射器)。
[redstone_dust]做好投币窗口,接下来就是验证玩家是否投币,我们用比较器实现。在发射器前方放一个红石比较器,然后用红石绕一圈连回发射器,如图所示:
[redstone_dust]这样做的原因是因为比较器可以检测后方容器内的物品数量并输出相应大小的数量,就拿我的装置中所使用的货币钻石为例,0-22个为零信号,23-41为一格信号,42-64为两格信号(好像所有的不可堆叠物品都是这样的),因此,我们在发射器里均匀放上41个钻石,比较器会输出一格信号,整个系统没有反应。但是当我们再投入一个钻石,信号会变成两格,然后会被红石中继器(两格延时)加强从而激活整个电路,发射器就会射出一个钻石,之后信号又重新退回一格。这样一来,就实现了每投入一个钻石就可以激活一次红石电路的设想。
[redstone_dust]解决了这个,后面的部分就很简单了,再用中继器连出一个输出端(中继器前放一个普通方块再连出输出端,这个普通方块代号为X,以后解释),分成两路连接发货的两个发射器并取反连粘性活塞,整个电路如下:
[redstone_dust]用石头造的那个是售货地点,玩家在里面的半砖上投钻石,被漏斗吸入送进发射器,然后输出两格信号并被直走的中继器(零格延时)传上来,由于连往发射器的两格中继器有三格延时,所以先通过非门使活塞收上来,接着发射器被激活透过活塞收上来时的两个空缺射出货物和发票(事先准备),这样玩家就买到了货物(只能以一换一)。当交易结束后,由于最下面的那个发射器被激活射出一个钻石,使得信号收回,活塞再次推下,整个系统回复原本状态。
[redstone_dust]OK,这就是自动售货机的核心元件了,你学会了吗?
|
[glowstone_dust]part 2 以一换一和以一换多双功能系统 阅读需要:基本红石知识、SR锁存器知识、命令方块知识
[redstone_dust]众所周知,在自动售货机中,以一换一的情况并不多见,更多的是以一换多,比如用一个钻石换一组苹果,那么这要怎么办呢?
[redstone_dust]我们不妨在收货地点处安两个按钮,两个按钮边各放一个红石灯。当按下左边按钮时是以一换一模式,按下右边按钮时是以一换多模式,按钮边的两个红石灯则用来表示此时所处的状态。
[redstone_dust]但是按钮的信号并不是持续的信号,这样我们就会想到将两个按钮用红石连在一个SR锁存器的S端和R端,这样的好处不仅仅可以将按钮信号变成持续信号,还能保证整个系统必然是处于以一换一或以一换多中的某一个状态当中。
[redstone_dust]按钮和锁存器连接后,把按钮所对应的灯和其对应端(S或R端)连好,这样当玩家按下一个按钮就会对应的点亮一盏红石灯,并熄灭另一盏灯(详情见存档)。
[redstone_dust]然后我们的做出以一换多的系统,这已经不能靠发射器实现了,因此,我们得用到命令方块。还记得最初我们的投币系统吗?我们在那条电路的中继器后面随意的接出一条红石线(几格就行),在末端放一个零格延时的中继器,中继器后面放一个普通方块(代号为y,别问我为什么),方块后放个可以给玩家一组物品的命令方块,这就做成了一个以一换多的系统。
[redstone_dust]最后再在S、R两端接出线路分别连两个粘性活塞,使得当活塞被激活时碰到x方块和y方块,未激活时将x和y拉开,这样就可以破坏其原本的强充能。也就是说,比如当S端处于激活状态时,x方块位置不变,x方块所在的以一换一电路正常工作,但R端会处于未激活状态,y方块被拉开,中继器无法给y方块强充能从而激活命令方块,以一换多系统此时就相当于被强行阻断了。其大致如下(忽略了其他的电路,橙色羊毛为x,蓝色为y):
那两个相互连接的非门就是锁存器。
[redstone_dust]我也不知道怎么更加清晰地表达这个部分,如果你还不清楚,仔细看看我的存档就明白了,反正一次只用一个交易系统在工作。
[redstone_dust]这一段是整个售货机的难点,搞不懂也别急,慢慢来总会理解的。
|
[glowstone_dust] part 3 假币识别系统 阅读需要:基本红石知识、命令方块知识
[redstone_dust]最后我们来讲一讲假币识别系统,说起来也很简单,也就是一个与门的特殊运用,将电路摆成下图所示(摆在交易系统的另一侧,否则没有空间):
你问我中继器要延时多少格?第一个零格延时,另外两个连在一起的各打两格。
这个电路的原理是这样的:由于漏斗下方的发射器里装满了钻石,所以当非钻石物品进入漏斗时会停留在漏斗中无法漏下,通过比较器触发与门激活命令方块然后被其中的指令所惩罚(比如送入岩浆湖)。而钻石则只会在漏斗内短暂停留,所产生的短脉冲会由于中继器的延时无法触发与门,从而使玩家不受影响。就是这么简单。
不过这有一个坏处就是这只能用一次,之后必须手动清空漏斗,这是一个麻烦。关于这一点我后来也想出了一个治标不治本的改进方法,也就是“自动售货机3.0”,非常简单,这里就不赘述了。
|
好了,整个教程就到这里了,有点难,而且我也知道我说的不是很清楚,希望大家好好理解,有什么问题也可以问我,我一定会帮你解答。
再说一句,这个帖子是我纯手撸花了半个下午才做出来的,没有功劳也有苦劳,希望大家能够给我支持和鼓励。
[diamond_gem]
最后祝大家新年快乐,求人气,求金币啊!
[groupid=490]719的小世界[/groupid]