このプログラムはラージチェストを32個設置してアイテムを輸送するプログラムです。プレーヤーは決められたチェストに骨粉、ジャングルの苗木、木炭を入れる必要があります。
自動植林なのですが、チェストとタートルの設置を自動でしたところで、プレーヤーは必ずアイテムを入れる必要があります、その場所を1か所だけにする、MODの大容量チェストやホッパーを使用しないことがこだわりです。このせいで全プログラムの構築に時間が掛かったのも事実ですが、ただ見ていて気持ちがいいだけです。タートルの動きはかなり遅くなります。
2.のプログラムの横のタートルです。紫色に染色しています
1.のプログラムで木炭とチェストが入っています
プログラムのスタート
この部分のチェストを設置してスタート地点で待機
チェストの設置が終わればタートルはアイテムを入手するまで待機します
無限ループに入れていないのでプログラムの停止は最初だけです
--####骨粉を入手するまで待機
turtle.select(1)
while true do
if turtle.suckDown() then
break
else
print("Item_Supply:OsSleep",Sleep,"ms")
os.sleep(Sleep)
end
end
チェストにアイテムを入れます
骨粉に16個のチェスト
苗木に8個のチェスト
木炭に8個のチェストを割り当てています
待機中のタートルの下のチェストと左のチェストは骨粉
タートルの左、3番目のチェストはジャングルの苗木
左端のチェストは木炭
アイテム輸送の流れ
1番目のチェストからアイテムを入手
2番目~7番目のチェストはアイテムをドロップして入手
中央のチェストにアイテムをドロップ
バックしながらドロップ
列を変更
※中央の骨粉の1個なので1列目の動きは少し違います
これで中央のチェストからアイテムが埋まっていきます、前からドロップしていくことも考えましたが、ここがこだわりのポイントです。
--####アイテム入手の関数
function SuckDownALL()
for A=1,16 do
turtle.select(A)
turtle.suckDown()
end
end
--####アイテムドロップの関数
function DropDownALL()
for A=1,16 do
turtle.select(A)
turtle.dropDown()
end
end
中央のチェストにアイテムを入れる時は1段下がり、他のタートルとぶつからないようにしています
--####メインのチェストにアイテムを入れる関数
function DropMainChest()
turtle.forward()
turtle.forward()
turtle.down()
for A=1,16 do
turtle.select(A)
turtle.drop()
end
end
中央の木炭のチェストで燃料レベルが300より少なくなったら燃料を補給します
--####燃料補給
if turtle.getFuelLevel()<300 then
turtle.select(1)
turtle.suck()
turtle.refuel()
end
複数タートルでの自動植林 プログラム3
3.のプログラムはここから
--####アイテム輸送プログラム
local Sleep=60
--チェスト設置の関数
function PlaceDownChest()
turtle.placeDown()
turtle.forward()
turtle.forward()
turtle.placeDown()
end
--####燃料補給
turtle.select(1)
turtle.refuel()
--####チェスト設置
turtle.up()
turtle.select(2)
turtle.forward()
turtle.forward()
turtle.turnRight()
turtle.forward()
for A=1,7 do
for A=1,3 do
PlaceDownChest()
end
turtle.turnLeft()
turtle.forward()
turtle.turnLeft()
for A=1,3 do
PlaceDownChest()
end
turtle.turnRight()
turtle.forward()
turtle.forward()
turtle.turnRight()
end
for A=1,3 do
PlaceDownChest()
end
turtle.turnLeft()
turtle.forward()
turtle.turnLeft()
for A=1,3 do
PlaceDownChest()
end
--####アイテム入手の関数
function SuckDownALL()
for A=1,16 do
turtle.select(A)
turtle.suckDown()
end
end
--####アイテムドロップの関数
function DropDownALL()
for A=1,16 do
turtle.select(A)
turtle.dropDown()
end
end
--####列の移動の関数
function NextLine()
turtle.turnLeft()
turtle.forward()
turtle.forward()
turtle.turnRight()
end
--####メインのチェストにアイテムを入れる関数
function DropMainChest()
turtle.forward()
turtle.forward()
turtle.down()
for A=1,16 do
turtle.select(A)
turtle.drop()
end
end
--####骨粉を入手するまで待機
turtle.select(1)
while true do
if turtle.suckDown() then
break
else
print("Item_Supply:OsSleep",Sleep,"ms")
os.sleep(Sleep)
end
end
--####アイテム輸送の無限ループ
while true do
turtle.turnLeft()
SuckDownALL()
for A=1,7 do
for A=1,3 do
turtle.forward()
end
DropDownALL()
SuckDownALL()
end
turtle.turnLeft()
turtle.forward()
turtle.forward()
turtle.turnRight()
DropMainChest()
turtle.up()
turtle.turnRight()
turtle.forward()
turtle.forward()
turtle.turnLeft()
turtle.back()
turtle.back()
for A=2,16 do
turtle.select(A)
turtle.dropDown()
end
for A=1,6 do
for A=1,3 do
turtle.back()
end
DropDownALL()
end
for A=1,3 do
turtle.back()
end
DropDownALL()
for A=1,2 do
NextLine()
SuckDownALL()
for A=1,7 do
for A=1,3 do
turtle.forward()
end
DropDownALL()
SuckDownALL()
end
DropMainChest()
turtle.up()
turtle.back()
turtle.back()
DropDownALL()
for A=1,7 do
for A=1,3 do
turtle.back()
end
DropDownALL()
end
end
NextLine()
SuckDownALL()
for A=1,7 do
for A=1,3 do
turtle.forward()
end
DropDownALL()
SuckDownALL()
end
DropMainChest()
--####燃料補給
if turtle.getFuelLevel()<300 then
turtle.select(1)
turtle.suck()
turtle.refuel()
end
turtle.up()
turtle.back()
turtle.back()
DropDownALL()
for A=1,7 do
for A=1,3 do
turtle.back()
end
DropDownALL()
end
turtle.turnRight()
for A=1,6 do
turtle.forward()
end
end
0 件のコメント:
コメントを投稿