Computer Craft のメモ
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ただいまコメントを受けつけておりません。
dofile("lib_turtle_0.2.3");
dofile("lib_neko_0.1.1");
local tunnelLen = 0;
local depthLevel = 0;
local negaAry = { 3, 4, 5, 6, 7 };
local OTHER_FROM = 8;
local OTHER_TO = 16;
local function unloadBlocks()
local tmpAry = {};
for _, slotIdx in pairs(negaAry) do
table.insert(tmpAry, { slotIndex = slotIdx, keepCnt = 1 });
end
for i = OTHER_FROM, OTHER_TO do
table.insert(tmpAry, { slotIndex = i, keepCnt = 0 });
end
local primaryChest = true;
for _, unloadInfo in pairs(tmpAry) do
local idx = unloadInfo.slotIndex;
local keepCnt = unloadInfo.keepCnt;
turtle.select(idx);
local failureCnt = 0;
while true do
turtle.drop(turtle.getItemCount(idx) - keepCnt);
if keepCnt < turtle.getItemCount(idx) then
failureCnt = failureCnt + 1;
if 2 <= failureCnt then
print("Since the contents of the chest are full,");
print("blocks cannot be put in.");
print("Please make sufficient free space.");
print("Hit enter key when ready.");
read();
failureCnt = 0;
end
turtle.turnRight();
turtle.turnRight();
primaryChest = not primaryChest;
else
break;
end
end
end
if primaryChest then
turtle.turnLeft();
else
turtle.turnRight();
end
end
local function dropNegaBlocks()
for _, slotIdx in pairs(negaAry) do
turtle.select(slotIdx);
for j = OTHER_FROM, OTHER_TO do
if turtle.compareTo(j) then
turtle.select(j);
turtle.drop();
turtle.select(slotIdx);
end
end
end
end
local function myUserEvent(para1)
if 0 == para1 then
nekoNega(0, negaAry);
elseif 1 == para1 then
nekoNega(1, negaAry);
elseif 2 == para1 then
nekoNega(2, negaAry);
elseif 3 == para1 then
for _, slotIdx in pairs(negaAry) do
if 2 <= turtle.getItemCount(slotIdx) then
turtle.select(slotIdx);
turtle.place();
break;
end
end
elseif 4 == para1 then
if 0 == tunnelLen % 8 then
local sel = -1;
if 2 <= turtle.getItemCount(1) then
sel = 1;
elseif 2 <= turtle.getItemCount(2) then
sel = 2;
end
if -1 ~= sel then
turtle.select(sel);
turtle.up();
turtle.dig();
turtle.down();
turtle.placeUp();
turtle.select(1);
end
end
tunnelLen = tunnelLen + 1;
if 0 == tunnelLen % 6 then
dropNegaBlocks();
end
elseif 5 == para1 then
tunnelLen = 0;
elseif 6 == para1 then
unloadBlocks();
elseif 7 == para1 then
dropNegaBlocks();
end
end
userEventHandler = myUserEvent;
print("slot1 : torch x 64");
print("slot2 : torch x 64");
print("slot3 : Stone x 1");
print("slot4 : Dirt x 1");
print("slot5 : Gravel x 1");
print("slot6 : Obsidian x 1");
print("slot7 : Cobblestone x 1");
print("Hit enter key when ready.");
read();
log("-------------------------------");
log("-- mining_0.1.1 start");
log("-------------------------------");
for depthLevel = 0, 31 do
local msg = "depthLevel = " .. depthLevel .. " / fuelLevel = " .. turtle.getFuelLevel();
print(msg);
log(msg);
doCommand(
" e0e1f"
.. "(e0e1 v2 lv1 rrv1 u v1 ll v1 r v0 df)3 e0 v2 l v7"
.. "(e1fv2 lv1 rrv1 e0uv1 llv1 rv0d v4)" .. (depthLevel * 4 + 10)
.. "(s1 ll e1fe0rr v3 uv3d)" .. (depthLevel * 4 + 10)
.. "e0u e1 s1p1d rr v5"
.. "s1 (e1fv2 lv1 rrv1 e0uv1 llv1 rv0d v4)" .. (depthLevel * 4 + 10)
.. "(s1 ll e1f k1 e0rr v3 uv3d)" .. (depthLevel * 4 + 10)
.. "r (e1f)" .. ((depthLevel + 1) * 4)
.. "l v6"
);
if turtle.getFuelLevel() < 2000 then
print("Keep fuelLevel over 2000.");
print("Please refuel.");
refuelPrompt(nil);
end
doCommand(
" (e1f)" .. ((depthLevel + 1) * 4)
);
end