Created
June 18, 2014 12:58
-
-
Save timia2109/6022cef19cc7cabdbf7d to your computer and use it in GitHub Desktop.
TurtleControll V3.0
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
AppVersion = 3.0 | |
AppName = "TurtleControll" | |
Slot = 1 | |
cc = 1 | |
paramAlt = 0 | |
SettingPlace = 'TurtleControll.data' | |
Names4App = {"TC","tc","Controller","turtleer","TurtleCommander","upd8r","u8"} | |
Apps4Apps = {0,0,0,0,0,'upd8r.lua','upd8r.lua'} | |
CTRLMode = false | |
Rednet = false | |
if term.isColor() == true then | |
term.setBackgroundColor(colors.blue) | |
end | |
if fs.exists(SettingPlace) == true then | |
loadSettings() | |
else | |
Settings = {["Lable"] = 1} | |
end | |
turtle.select(Slot) | |
TurtleID = Settings["Lable"] | |
if TurtleID == 1 then | |
turtleN = os.getComputerID() | |
elseif TurtleID == 2 then | |
turtleN = os.getComputerLabel() | |
else | |
turtleN = 'turtle' | |
end | |
function saveSettings() | |
file = fs.open(SettingPlace,"w") | |
file.write(textutils.serialize(Settings)) | |
file.close() | |
end | |
function loadSettings() | |
file = fs.open(SettingPlace,"r") | |
Settings = textutils.unserialize(file.readAll()) | |
file.close() | |
end | |
function rednet() | |
while true do | |
input = nil | |
rednet.open("right") | |
local id,message = rednet.receive() | |
local input = textutils.unserialize(message) | |
if input["checksum"] == AppName then | |
if input["mode"] == "key" then | |
doNr(input["do"]) | |
elseif input["mode"] == "terminal" then | |
terminal(input["do"]) | |
end | |
else | |
rednet() | |
end | |
end | |
end | |
function makeColor(qwert,trewq) | |
if term.isColor() == true then | |
if qwert == nil then | |
qwert = colors.white | |
end | |
term.setTextColor(qwert) | |
if trewq ~= nil then | |
term.setBackgroundColor(trewq) | |
end | |
end | |
end | |
function settings() | |
term.clear() | |
term.setCursorPos(1,1) | |
print("The Setting Area are still on developing") | |
print() | |
print("1 = Name of turtle in Terminal =>", TurtleID) | |
print() | |
print() -- 5 | |
print() | |
print() | |
print() | |
print() | |
print("e|Exit = exit Settings") | |
write("Edit Point = ") --19 | |
point = read() | |
if point == '1' then | |
term.clear() | |
term.setCursorPos(1,1) | |
print("Name of the Turtle in terminal +top +run") | |
print("0 = turtle") | |
print("1 = ID (",os.getComputerID(),")") | |
print("2 = Label (",os.getComputerLabel(),")") | |
print() | |
print("e = exit settings") | |
write("Set to =>") setto = read() | |
if setto == 'e' then | |
--NIL | |
else | |
Settings['Lable'] = setto | |
saveSettings() | |
settings() | |
end | |
else end | |
end | |
function input(pPre) | |
if pPre == nil then | |
tInput = nil | |
tInput = {} | |
else | |
tInput = pPre | |
end | |
local inputString = read() | |
for match in string.gmatch(inputString, "(%S+)") do | |
table.insert(tInput, match) | |
end | |
return tInput | |
end | |
function install() | |
a = fs.open("startup","w") | |
strings = 'shell.setAlias(' | |
for i=1,#Names4App do | |
x = Names4App[i] | |
y = Apps4Apps[i] | |
if y == 0 then | |
y = 'TurtleControll.lua' | |
end | |
a.writeLine(strings..'"'..x..'","'..y..'")') | |
end | |
a.close() | |
dev() | |
print("installed!") | |
end | |
function tfBack(Input) | |
if Input == "true" or Input == "t" or Input == "1" then | |
return true | |
elseif Input == "false" or Input == "f" or Input == "0" then | |
return false | |
else print("Try true or false") | |
local qwas = read() | |
tfBack(qwas) | |
end | |
end | |
function doNr(param) | |
if(param == 200) then turtle.forward() dev() if turtle.detect() then print("Detecting something") end print("Forward") --up | |
elseif (param == 208) then turtle.back() dev() print("Backward") --down | |
elseif (param == 203) then turtle.turnLeft() dev() print("Turn Left") --left | |
elseif (param == 205) then turtle.turnRight() dev() print("Turn Right") --right | |
elseif (param == 2) then turtle.place() dev() print("Place Block") --1 | |
elseif (param == 3) then turtle.dig() dev() print("Dig") --2 | |
elseif (param == 4) then turtle.attack() dev() print("Attack") --3 | |
elseif (param == 5) then turtle.craft() dev() print("Craft") --4 | |
elseif (param == 6) then turtle.drop() dev() print("Drop Items") --5 | |
elseif (param == 7) then turtle.suck() dev() print("Suck Items") --6 | |
elseif (param == 8) then turtle.digUp() dev() print("Dig up") --7 | |
elseif (param == 9) then turtle.digDown() dev() print("Dig Down") --8 | |
elseif (param == 10) then microTerminal("get") dev() --9 | |
elseif (param == 11) then microTerminal("put") dev() --0 | |
elseif (param == 25) then dev() fell(false) --p | |
elseif (param == 24) then fell(true) --o | |
elseif (param == 23) then --i ist leer | |
elseif (param == 25 or param == 157) then if CTRLMode == true then CTRLMode = false dev() else CTRLMode = true dev() end --CTRL L | |
elseif (param == 17) then if CTRLMode == true then detect(2) else turtle.up() dev() if turtle.detectUp() then print("Detecting something") end end print("Up") --w | |
elseif (param == 31) then if CTRLMode == true then detect(3) else turtle.down() dev() if turtle.detectDown() then print("Detecting something") end end print("Down") --s | |
elseif (param == 16) then turtle.placeUp() dev() print("Place Block Up") --q | |
elseif (param == 35) then help() --h | |
elseif (param == 22) then update() --u | |
elseif (param == 48) then microTerminal("BlockPlacer") --b | |
elseif (param == 49) then microTerminal("BlockPlacer") --n | |
elseif (param == 38) then microTerminal("ladder") --l | |
elseif (param == 33) then microTerminal("field") --f | |
elseif (param == keys.r) then makeColor(colors.red) write("App@",turtleN," > ") makeColor() run = read() shell.run(run) dev()--r | |
elseif (param == keys.e) then shell.exit() --e | |
elseif (param == keys.v) then microTerminal("BlockRemover") dev() | |
elseif (param == keys.y) then drop() --y | |
elseif (param == keys.x) then suck() --X | |
elseif (param == 30) then turtle.placeDown() dev()print("Place Block Down") --a | |
elseif (param == 20) then terminal() --t | |
elseif (param == keys.d) then write("Go forward to detect") detect(1) | |
elseif (param == keys.enter) then turtle.dig() dev() print("Dig") --enter | |
elseif (param == 52) then | |
if Slot >= 16 then | |
dev() print("No more Slots left") --. | |
else | |
Slot=Slot+1 turtle.select(Slot) dev() print("Now using slot ", Slot) --. | |
end | |
elseif (param == 51) then if Slot <= 1 then dev() print("No more slots left") --, | |
else Slot=Slot-1 dev() turtle.select(Slot) print("Now using slot " ..Slot) end | |
end | |
end | |
function Main() | |
while true do | |
local sEvent, param = os.pullEvent("key") | |
if(sEvent == "key") then | |
if paramAlt == param then | |
cc = cc+1 | |
print(cc," times") | |
else | |
if cc ~= 1 then | |
cc = 1 | |
end | |
end | |
paramAlt = param+0 | |
doNr(param) | |
end | |
end | |
end | |
function dev() | |
term.clear() | |
term.setCursorPos(1,1) | |
makeColor() | |
print(AppName," AppVersion: ",AppVersion) | |
print("Releash ",TimeRel) | |
print("action@",turtleN) | |
if (CTRLMode == true) then | |
makeColor(colors.red) | |
print("Detect Mode") | |
makeColor() | |
else | |
makeColor(colors.green) | |
print("Normal Mode") | |
makeColor() | |
end | |
end | |
function terminalerr(pError,pZw) | |
local errors = { | |
["home"] = "home <x> <y> <z>", | |
["goTo"] = "goTo <xTo> <yTo> <zTo> <xNow> <yNow> <zNow>", | |
["rail"] = "rail <lenght> (0 for flat ground) (0 for skipt info)", | |
["gpAlias"] = "gpAlias <Name> <Side = 1|2|3> <ChestNr>", | |
["get"] = "get <Side = 1|2|3> <ChestNr> (<Slot>)", | |
["put"] = "put <Side = 1|2|3> <ChestNr> (<Slot>)", | |
["plant"] = "plant <lenght> <Slot Tree> <Slot Dirt|false>", | |
["fell"] = "fell <lenght>", | |
["SuperMiner"] = "SuperMiner <Dest> (<trochslot or 0>) (<false>)", | |
["buildChest"] = "buildChest <high>", | |
["field"] = "field <lenght> <drop slot 1[true|false]>", | |
["ladder"] = "ladder <deep> <[Number|detect|Slot]> <come back [true|false]", | |
["BlockRemover"] = "BlockRemover <forward> <right> <down>", | |
["BlockPlacer"] = "BlockPlacer <forward> <right> <up>", | |
["MultiField"] = "MultiField <Fields> <Length of field> <Plant [true|false]", | |
} | |
makeColor(colors.red) | |
print(errors[pError]) | |
if pZw == nil then | |
makeColor() | |
write(pError.." ") | |
local temp = input() | |
terminal(temp) | |
end | |
end | |
function microTerminal(pOne) | |
print("Need more information") | |
terminalerr(pOne,0) | |
write(pOne.." ") | |
terminal(input({pOne})) | |
end | |
function terminal(preset) | |
if preset == nil or preset[1] ~= "more" then | |
term.clear() | |
term.setCursorPos(1,1) | |
write("TurtleControll Terminal") | |
term.setCursorPos(1,2) | |
makeColor(colors.red) | |
write("terminal@",turtleN," > ") | |
makeColor() | |
end | |
if preset == nil then | |
local tInput = input() | |
else | |
local tInput = preset | |
end | |
if tInput[2] == "d" then | |
tInput[2] = "detect" | |
end | |
if tInput[1] == 'more' then | |
cl() | |
write(tInput[2]) | |
input({tInput[2]}) | |
end | |
if (tInput[1] == "forward" or tInput[1] == "f") then | |
if (tInput[2] == "detect") then | |
if (tInput[3] ~= nil) then | |
detect(1,tonumber(tInput[3])) | |
else | |
detect(1) | |
end | |
else | |
a = tonumber(tInput[2]) | |
while a > 0 do | |
dev(true) | |
print(a," left") | |
turtle.forward() a = a-1 | |
end | |
dev(true) | |
print("Finish") | |
end | |
elseif (tInput[1] == "up" or tInput[1] == "u") then | |
if (tInput[2] == "detect") then | |
if (tInput[3] ~= nil) then | |
detect(2,tonumber(tInput[3])) | |
else | |
detect(2) | |
end | |
else | |
a = tonumber(tInput[2]) | |
while a > 0 do | |
dev(true) | |
print(a," left") | |
turtle.up() a = a-1 | |
end | |
dev(true) | |
print("Finish") | |
end | |
elseif (tInput[1] == "down" or tInput[1] == "d") then | |
if (tInput[2] == "detect") then | |
if (tInput[3] ~= nil) then | |
detect(3,tonumber(tInput[3])) | |
else | |
detect(3) | |
end | |
else | |
a = tonumber(tInput[2]) | |
while a > 0 do | |
dev(true) | |
print(a," left") | |
turtle.down() a = a-1 | |
end | |
dev(true) | |
print("Finish") | |
end | |
elseif (tInput[1] == "back" or tInput[1] == "b") then a = tonumber(tInput[2]) | |
while a > 0 do turtle.back() a = a-1 end | |
elseif (tInput[1] == "BlockRemover") then | |
if tInput[2] == nil or tInput[3] == nil or tInput[4] == nil then | |
terminalerr(BlockRemover) | |
else | |
BlockRemover.Start(tInput[2],tInput[3],tInput[4]) | |
end | |
elseif (tInput[1] == "BlockPlacer") then | |
if tInput[2] == nil or tInput[3] == nil or tInput[4] == nil then | |
terminalerr(BlockPlacer) | |
else | |
BlockPlacer.Start(tInput[2],tInput[3],tInput[4]) | |
end | |
elseif (tInput[1] == 'home') then | |
if (tInput[2] == nil or tInput[3] == nil or tInput[4] == nil) then | |
terminalerr("home") | |
else | |
shell.run('Haus.lua '..tInput[2]..' '..tInput[3]..' '..tInput[4]) | |
end | |
elseif (tInput[1] == 'goTo' or tInput[1] == 'go') then | |
if (tInput[2] == nil or tInput[3] == nil or tInput[4] == nil or tInput[5] == nil or tInput[6] == nil or tInput[7] == nil) then | |
terminalerr("goTo") | |
else | |
goTo(tInput[2],tInput[3],tInput[4],tInput[5],tInput[6],tInput[7]) | |
end | |
elseif (tInput[1] == "app" or tInput[1] == "run" ) then shell.run(tInput[2]) | |
elseif (tInput[1] == "train" or tInput[1] == "rail") then | |
if tInput[2] == nil then | |
terminalerr("rail") | |
else | |
Train.start(tInput[2],tInput[3],tInput[4]) | |
end | |
elseif (tInput[1] == "help") then help() | |
elseif (tInput[1] == "drop") then | |
if (tInput[2] ~= nil) then | |
drop(tonumber(tInput[2])) | |
else | |
drop() | |
end | |
elseif tInput[1] == "gpAlias" then | |
if (tInput[2] == nil or tInput[3] == nil or tInput[4]) then | |
terminalerr("gpAlias") | |
else | |
Settings["ChestSide"..tInput[2]] = tInput[3] | |
Settings["ChestNr"..tInput[2]] = tInput[4] | |
saveSettings() | |
end | |
elseif tInput[1] == "get" then | |
if in_table("ChestSide"..tInput[2],Settings) == true then | |
local temp = tInput[2] | |
local sslot = tInput[3] | |
tInput[2] = Settings["ChestSide"..temp] | |
tInput[3] = Settings["ChestNr"..temp] | |
tInput[4] = sslot | |
end | |
if (tInput[2] == nil or tInput[3] == nil) then | |
terminalerr("get") | |
else | |
ChestFkt.go(tInput[3],tInput[2]) | |
suck(tonumber(tInput[4])) | |
ChestFkt.goBack(tInput[2]) | |
dev() | |
end | |
elseif tInput[1] == "put" then | |
if in_table("ChestSide"..tInput[2],Settings) == true then | |
local temp = tInput[2] | |
local sslot = tInput[3] | |
tInput[2] = Settings["ChestSide"..temp] | |
tInput[3] = Settings["ChestNr"..temp] | |
tInput[4] = sslot | |
end | |
if (tInput[2] == nil or tInput[3] == nil) then | |
terminalerr("put") | |
else | |
ChestFkt.go(tInput[3],tInput[2]) | |
drop(tonumber(tInput[4]),0) | |
ChestFkt.goBack(tInput[2]) | |
dev() | |
end | |
elseif tInput[1] == "upd8r" then | |
shell.setDir("/") | |
print("GET UPD8R") | |
a = http.get("http://tinyurl.com/upd8r") | |
a = a.readAll() | |
b = fs.open("upd8r.lua","w") | |
b.write(a) | |
b.close() | |
shell.run("upd8r.lua") | |
elseif tInput[1] == "buildChest" then | |
if (tInput[2] == nil) then | |
terminalerr("buildChest") | |
else | |
ChestFkt.build(tonumber(tInput[2])) | |
end | |
elseif (tInput[1] == "exit" or tInput[1] == "e") then | |
dev() print("Terminal closed") tInput = nil | |
elseif (tInput[1] == "nTr" or tInput[1] == "plant") then | |
if (tInput[2] == nil or tInput[3] == nil or tInput[4] == nil) then | |
terminalerr("plant") | |
else | |
placeTrees(tInput[2],tInput[3],tInput[4]) | |
end | |
elseif (tInput[1] == "settings") then settings() | |
elseif (tInput[1] == "field") then | |
if (tInput[2] == nil) then | |
terminalerr("field") | |
else | |
Feld(tInput[2],tInput[3]) | |
end | |
elseif (tInput[1] == "SuperMiner" or tInput[1] == "sm") then | |
if (tInput[2] == nil) then | |
terminalerr("SuperMiner") | |
else | |
SuperMiner(tInput[2],tInput[3],tInput[4]) | |
end | |
elseif (tInput[1] == "fell" or tInput[1] == "gTr") then | |
if (tInput[2] == nil) then | |
terminalerr("fell") | |
else | |
automaticTrees(tInput[2]) | |
end | |
elseif (tInput[1] == "install") then | |
install() | |
elseif (tInput[1] == "MultiField" or "mf") then | |
if (tInput[2] == nil or tInput[3] == nil or tInput[4] == nil) then | |
terminalerr("MultiField") | |
else | |
MultiField(tInput[2],tInput[3],tInput[4]) | |
end | |
else | |
print("Not given") sleep(1) terminal() | |
end | |
end | |
function in_table(element,table) | |
for _, value in pairs(table) do | |
if value == element then | |
return true | |
end | |
end | |
return false | |
end | |
function detect(where,max) --Where[1 detect,2 detect up, 3 detect down] | |
goThrow = 0 | |
going = true | |
if where == 1 then | |
while turtle.detect() == false and going == true do | |
turtle.forward() | |
goThrow = goThrow+1 | |
if max ~= nil then | |
if max == goThrow then | |
going = false | |
end | |
end | |
dev(false) | |
makeColor(colors.red) | |
print("Go ",goThrow," steps now") | |
makeColor() | |
end | |
makeColor(colors.green) | |
print("Finish") | |
makeColor(colors.green) | |
elseif where == 2 then | |
while turtle.detectUp() == false and going == true do | |
turtle.up() | |
goThrow = goThrow+1 | |
if max ~= nil then | |
if max == goThrow then | |
going = false | |
end | |
end | |
dev(false) | |
makeColor(colors.red) | |
print("Go ",goThrow," steps now") | |
makeColor() | |
end | |
makeColor(colors.green) | |
print("Finish") | |
makeColor() | |
elseif where == 3 then | |
while turtle.detectDown() == false and going == true do | |
turtle.down() | |
goThrow = goThrow+1 | |
if max ~= nil then | |
if max == goThrow then | |
going = false | |
end | |
end | |
dev(false) | |
makeColor(colors.red) | |
print("Go ",goThrow," steps now") | |
makeColor() | |
end | |
dev() | |
makeColor(colors.green) | |
print("Finish") | |
makeColor() | |
end | |
end | |
function checkDown(xxx) | |
if turtle.detectDown() == true then | |
drop(xxx) | |
end | |
end | |
function SuperMiner(dest,ptorch,run) | |
if ptorch ~= nil and ptorch ~= 0 then | |
torch = true | |
tS = tonumber(ptorch) | |
else | |
torch = false | |
end | |
if run ~= nil then | |
dig = false | |
else | |
dig = true | |
end | |
dist = tonumber(dest) | |
count = 0 | |
if dig == true then | |
while dist > 0 do | |
turtle.dig() | |
turtle.forward() | |
turtle.digDown() | |
turtle.turnLeft() | |
turtle.dig() | |
turtle.forward() | |
turtle.digDown() | |
turtle.turnRight() | |
dist = dist-1 | |
if count == 3 and torch == true then | |
turtle.select(tS) | |
turtle.placeDown() | |
end | |
count = count+1 | |
dev() | |
print(dist.." left") | |
end | |
else | |
while dist > 0 do | |
turtle.forward() | |
turtle.turnRight() | |
turtle.forward() | |
turtle.turnLeft() | |
dist = dist-1 | |
dev() | |
print(dist.." left") | |
end | |
end | |
dev() | |
makeColor(colors.green) | |
print("Finish!") | |
makeColor() | |
end | |
function fell(tf) | |
if tf == false then | |
a = 0 | |
b = 0 | |
elseif tf == true then | |
b = 0 | |
makeColor(colors.green) | |
print("Last tree high = ",a) | |
makeColor() | |
end | |
makeColor(colors.red) | |
print("Wait..:") | |
print("Tree is felling....") | |
if tf == false then | |
turtle.dig() | |
turtle.forward() | |
while turtle.detectUp() do | |
turtle.digUp() | |
turtle.up() | |
a = a+1 | |
b = b+1 | |
end | |
while b > 0 do | |
turtle.down() | |
b = b-1 | |
end | |
elseif tf == true then | |
while a > 0 do | |
if turtle.detectUp() then | |
turtle.digUp() | |
end | |
turtle.up() | |
if turtle.detect() then | |
turtle.dig() | |
turtle.turnLeft() | |
turtle.dig() | |
turtle.turnLeft() | |
turtle.dig() | |
turtle.turnLeft() | |
turtle.dig() | |
turtle.turnLeft() | |
end | |
a = a-1 | |
b = b+1 | |
end | |
while b > 0 do | |
turtle.down() | |
b = b-1 | |
end | |
end | |
dev() | |
makeColor(colors.green) | |
print("Tree high = ",a) | |
print("Finish!") | |
makeColor() | |
end | |
function placeTrees(pX,pSlot,pDirt) | |
dirt = true | |
slot = tonumber(pSlot) | |
if dirtslot == 'false' then | |
dirt = false | |
else | |
dirt = tonumber(pDirt) | |
end | |
a = pX*5 | |
b = a+0 | |
c = 4 | |
while a > 0 do | |
turtle.forward() | |
if turtle.detect() == true then | |
turtle.dig() | |
end | |
c = c+1 | |
if c == 5 then | |
turtle.down() | |
if turtle.detectDown() == false then | |
if dirt == true then | |
turtle.select(dirtslot) | |
turtle.placeDown() | |
turtle.select(slot) | |
end | |
end | |
turtle.up() | |
turtle.placeDown() | |
c = 0 | |
end | |
a = a-1 | |
end | |
while b > 0 do | |
turtle.back() | |
b = b-1 | |
end | |
dev() | |
makeColor(colors.green) | |
print("Finish!") | |
makeColor() | |
end | |
function automaticTrees(pX) | |
x = pX*5 | |
y = x+0 | |
while x > 0 do | |
turtle.forward() | |
if turtle.detect() == true then | |
fell(false) | |
x = x-1 | |
end | |
x = x-1 | |
end | |
while y > 0 do turtle.back() y=y-1 end | |
dev() | |
makeColor(colors.green) | |
print("All trees are fell!") | |
makeColor() | |
end | |
function drop(tfxx,tfg) | |
if tfxx ~= nil then | |
turtle.select(tfxx) | |
if tfg == nil then | |
turtle.dropDown() | |
else | |
turtle.drop() | |
end | |
else | |
tfxx = 1 | |
while tfxx <= 16 do | |
turtle.select(tfxx) | |
if tfg == nil then | |
turtle.dropDown() | |
else | |
turtle.drop() | |
end | |
tfxx = tfxx+1 | |
end | |
end | |
turtle.select(1) | |
end | |
function suck(tfxx) | |
if tfxx ~= nil then | |
turtle.select(tfxx) | |
turtle.suck() | |
else | |
tfxx = 1 | |
while tfxx <= 16 do | |
turtle.select(tfxx) | |
turtle.suck() | |
tfxx = tfxx+1 | |
end | |
end | |
turtle.select(1) | |
end | |
function MultiField(pAnz,pLenght,pPlant) | |
local x = pAnz+0 | |
local going = (pAnz*3)-3 | |
while pAnz > 0 do | |
Feld(pLenght,pPlant) | |
turtle.turnRight() | |
local fw = 3 | |
while fw > 0 do | |
turtle.forward() | |
fw = fw-1 | |
end | |
turtle.turnLeft() | |
anz = anz-1 | |
end | |
turtle.turnLeft() | |
turtle.turnLeft() | |
while going > 0 do | |
turtle.forward() | |
going = going-1 | |
end | |
dev() | |
makeColor() | |
print("Finish!") | |
makeColor() | |
end | |
function Feld(pLenght,pPlant) | |
dev() | |
makeColor(colors.red) | |
print("Working...") | |
makeColor() | |
a = pLenght | |
b = a+0 | |
a = tonumber(a) | |
tf = tfBack(pPlant) | |
turtle.forward() | |
while a > 0 do | |
turtle.digDown() | |
if tf == true then turtle.placeDown() end | |
turtle.turnRight() | |
turtle.forward() | |
turtle.digDown() | |
if tf == true then turtle.placeDown() end | |
turtle.back() | |
turtle.turnLeft() | |
turtle.forward() | |
a = a-1 | |
end | |
turtle.turnRight() | |
turtle.turnRight() | |
while b > 0 do | |
turtle.forward() | |
b = b-1 | |
end | |
turtle.turnRight() | |
turtle.turnRight() | |
turtle.back() | |
checkDown(2) | |
dev() | |
makeColor(colors.green) | |
print("Finish!") | |
makeColor() | |
end | |
function update() | |
if fs.exists("upd8r.lua") == true then | |
shell.run("upd8r.lua") | |
shell.run("TurtleControll.lua") | |
shell.exit() | |
else | |
a = http.get("http://goo.gl/7gUVmb") | |
b = fs.open(shell.getRunningProgram(),"w") | |
b.write(a.readAll()) | |
b.close() | |
shell.run(shell.getRunningProgram()) | |
end | |
end | |
function goTo( x, y, z, xPos, depth, zPos) | |
while depth > y do | |
if turtle.up() then | |
depth = depth - 1 | |
elseif turtle.digUp() or turtle.attackUp() then | |
else | |
sleep( 0.5 ) | |
end | |
end | |
if xPos > x then | |
while xDir ~= -1 do | |
turtle.turnLeft() | |
end | |
while xPos > x do | |
if turtle.forward() then | |
xPos = xPos - 1 | |
elseif turtle.dig() or turtle.attack() then | |
else | |
sleep( 0.5 ) | |
end | |
end | |
elseif xPos < x then | |
while xDir ~= 1 do | |
turtle.turnLeft() | |
end | |
while xPos < x do | |
if turtle.forward() then | |
xPos = xPos + 1 | |
elseif turtle.dig() or turtle.attack() then | |
else | |
sleep( 0.5 ) | |
end | |
end | |
end | |
if zPos > z then | |
while zDir ~= -1 do | |
turtle.turnLeft() | |
end | |
while zPos > z do | |
if turtle.forward() then | |
zPos = zPos - 1 | |
elseif turtle.dig() or turtle.attack() then | |
else | |
sleep( 0.5 ) | |
end | |
end | |
elseif zPos < z then | |
while zDir ~= 1 do | |
turtle.turnLeft() | |
end | |
while zPos < z do | |
if turtle.forward() then | |
zPos = zPos + 1 | |
elseif turtle.dig() or turtle.attack() then | |
else | |
sleep( 0.5 ) | |
end | |
end | |
end | |
while depth < y do | |
if turtle.down() then | |
depth = depth + 1 | |
elseif turtle.digDown() or turtle.attackDown() then | |
else | |
sleep( 0.5 ) | |
end | |
end | |
makeColor(colors.green) | |
print("Finish!") | |
makeColor() | |
end | |
function leiterBuilder(pDeep,pSlot,pBack) | |
a = read(pDeep) | |
Slot = tonumber(pSlot) | |
turtle.select(Slot) | |
qwas = tfBack(pBack) | |
b = 0 | |
if a == "detect" then | |
while not turtle.detectDown() do | |
turtle.place() | |
turtle.down() | |
b = b+1 | |
end | |
if tfBack(qwas) then | |
while b > 0 do | |
turtle.up() | |
b = b-1 | |
end | |
end | |
Main() | |
elseif a == "Slot" then | |
a = turtle.getItemCount(Slot) | |
else | |
a = tonumber(a) | |
end | |
while a > 0 do | |
turtle.place() | |
turtle.down() | |
a = a-1 | |
b = b+1 | |
end | |
if tfBack(qwas) == true then | |
while b > 0 do | |
turtle.up() | |
b = b-1 | |
end | |
end | |
dev() | |
makeColor(colors.green) | |
print("Finish!") | |
makeColor() | |
end | |
BlockPlacer = { | |
Start=function(pForward,pRight,pDown) | |
dev() | |
xSide = tonumber(pForward) | |
ySide = tonumber(pRight) | |
zSide = tonumber(pDown) | |
a = xSide+0 | |
b = ySide+0 | |
c = zSide+0 | |
Comp = xSide*ySide*zSide | |
CompSLot = Comp/64 | |
print("That's are ",Comp," Blocks. ") | |
print("Put Material in Slot 1 - 16 (Need "..CompSLot.."Slots") | |
print("press enter to start...") | |
while true do local sEvent, param = os.pullEvent("key") | |
if(sEvent == "key") then | |
if (param == 28) then | |
BlockPlacer.remove() | |
break | |
end | |
end | |
end | |
dev() | |
makeColor(colors.green) | |
print("Finish!") | |
makeColor() | |
Main() | |
end, | |
Status=function() | |
term.clear() | |
term.setCursorPos(1,1) | |
print("Print...") | |
print("X = ",xTemp) | |
print("Y = ",yTemp) | |
print("Z = ",zTemp) | |
term.setCursorPos(1,5) | |
print("I have ",MathTemp," blocks / "..Comp) | |
jhf = Comp-MathTemp | |
hfj = (MathTemp*100)/Comp | |
print(jhf," blocks left") | |
print(hfj,"%") | |
ChestFkt.checkSlots() | |
print("Slot = "..Slot) | |
jhf = nil | |
hfj = nil | |
end, | |
remove=function() | |
print("Please wait...") | |
aTemp = a+0 | |
bTemp = b+0 | |
cTemp = c+0 | |
xTemp = 1 | |
yTemp = 1 | |
zTemp = c+0 | |
MathTemp = 0 | |
while cTemp > 0 do | |
while aTemp > 0 do | |
turtle.turnRight() | |
while bTemp > 0 do | |
ChestFkt.checkSlots() | |
turtle.placeDown() | |
MathTemp = MathTemp+1 | |
BlockPlacer.Status() | |
if bTemp > 1 then | |
if turtle.detect() then turtle.dig() end | |
turtle.forward() | |
xTemp = xTemp+1 | |
end | |
bTemp = bTemp-1 | |
end | |
bTemp = b+0 | |
while bTemp > 1 do | |
turtle.back() | |
bTemp = bTemp-1 | |
xTemp = xTemp-1 | |
end | |
bTemp = b+0 | |
turtle.turnLeft() | |
if aTemp > 1 then | |
if turtle.detect() then turtle.dig() end | |
turtle.forward() | |
yTemp = yTemp+1 | |
end | |
aTemp = aTemp-1 | |
end | |
aTemp = a+0 | |
while aTemp > 1 do | |
turtle.back() | |
aTemp = aTemp-1 | |
yTemp = yTemp-1 | |
end | |
if cTemp > 1 then | |
turtle.up() | |
zTemp = zTemp-1 | |
xTemp = 1 | |
yTemp = 1 | |
end | |
cTemp = cTemp-1 | |
aTemp = a+0 | |
bTemp = b+0 | |
end | |
cTemp = c+0 | |
while cTemp > 0 do | |
if cTemp > 1 then | |
turtle.up() | |
end | |
cTemp = cTemp-1 | |
end | |
end, | |
} | |
ChestFkt = { | |
checkSlots = function() | |
if turtle.getItemCount(Slot) <= 0 then | |
if Slot <= 16 then | |
Slot = Slot+1 | |
turtle.select(Slot) | |
end | |
end | |
end, | |
build=function(aIn) | |
print("High of the Tower/Chests") | |
a = aIn | |
b = a+0 | |
print("Build Blocks in Slots 1-8") | |
print("Chests in Slot 9-16") | |
print("Press enter to start|Type e or exit for end") | |
xyz = read() | |
if (xyz == 'e' or xyz == 'exit') then | |
dev() | |
else | |
shell.run("Haus.lua 6 6 "..a.." go") | |
Slot = 9 | |
turtle.select(Slot) | |
turtle.turnRight() | |
turtle.forward() | |
turtle.forward() | |
turtle.turnLeft() | |
turtle.dig() | |
turtle.up() | |
turtle.dig() | |
turtle.down() | |
turtle.forward() | |
turtle.forward() | |
turtle.forward() | |
turtle.turnLeft() | |
while a > 0 do | |
turtle.place() | |
ChestFkt.checkSlots() | |
turtle.up() | |
a = a-1 | |
end | |
turtle.turnRight() | |
turtle.forward() | |
turtle.turnLeft() | |
while b > 0 do | |
ChestFkt.checkSlots() | |
turtle.place() | |
turtle.down() | |
b = b-1 | |
end | |
turtle.turnRight() | |
while a > 0 do | |
ChestFkt.checkSlots() | |
turtle.place() | |
turtle.up() | |
a = a-1 | |
end | |
turtle.turnRight() | |
turtle.forward() | |
turtle.turnLeft() | |
while b > 0 do | |
ChestFkt.checkSlots() | |
turtle.place() | |
turtle.down() | |
b = b-1 | |
end | |
turtle.turnRight() | |
turtle.forward() | |
while a > 0 do | |
ChestFkt.checkSlots() | |
turtle.place() | |
turtle.up() | |
a = a-1 | |
end | |
turtle.turnRight() | |
turtle.forward() | |
turtle.turnLeft() | |
while b > 0 do | |
ChestFkt.checkSlots() | |
turtle.place() | |
turtle.down() | |
b = b-1 | |
end | |
turtle.back() | |
turtle.turnLeft() | |
end | |
end, | |
go=function(chest,side) | |
temp = 0 | |
if side == '1' then | |
turtle.turnLeft() | |
elseif side == '2' then | |
turtle.forward() | |
elseif side == '3' then | |
turtle.turnRight() | |
turtle.forward() | |
end | |
chest = chest-1 | |
while chest > 0 do | |
turtle.up() | |
chest = chest-1 | |
temp = temp+1 | |
end | |
end, | |
goBack=function(side) | |
while temp > 0 do | |
turtle.down() | |
temp = temp-1 | |
end | |
if side == '1' then | |
turtle.turnRight() | |
elseif side == '2' then | |
turtle.back() | |
elseif side == '3' then | |
turtle.back() | |
turtle.turnLeft() | |
end | |
end, | |
} | |
BlockRemover = { | |
Start=function(pForward,pRight,pDown) | |
term.clear() | |
term.setCursorPos(1,1) | |
local back = true | |
xSide = tonumber(pForward) | |
ySide = tonumber(pRight) | |
zSide = tonumber(pDown) | |
a = xSide+0 | |
b = ySide+0 | |
c = zSide+0 | |
Comp = xSide*ySide*zSide | |
print("That's are ",Comp," Blocks. ") | |
print("press enter to start...") | |
while true do local sEvent, param = os.pullEvent("key") | |
if(sEvent == "key") then | |
if (param == 28) then | |
BlockRemover.remove() | |
break | |
end | |
end | |
end | |
dev() | |
makeColor(colors.green) | |
print("Finish!") | |
makeColor() | |
Main() | |
end, | |
Status=function() | |
term.clear() | |
term.setCursorPos(1,1) | |
print("Scanning...") | |
print("X = ",xTemp) | |
print("Y = ",yTemp) | |
print("Z = ",zTemp) | |
term.setCursorPos(1,5) | |
print("I have ",MathTemp," blocks") | |
jhf = Comp-MathTemp | |
hfj = (MathTemp*100)/Comp | |
print(jhf," blocks left") | |
print(hfj,"%") | |
jhf = nil | |
hfj = nil | |
end, | |
remove=function() | |
print("Please wait...") | |
aTemp = a+0 | |
bTemp = b+0 | |
cTemp = c+0 | |
xTemp = 1 | |
yTemp = 1 | |
zTemp = c+0 | |
MathTemp = 0 | |
while cTemp > 0 do | |
while aTemp > 0 do | |
turtle.turnRight() | |
while bTemp > 0 do | |
turtle.digDown() | |
MathTemp = MathTemp+1 | |
BlockRemover.Status() | |
if bTemp > 1 then | |
if turtle.detect() then turtle.dig() end | |
turtle.forward() | |
xTemp = xTemp+1 | |
end | |
bTemp = bTemp-1 | |
end | |
bTemp = b+0 | |
while bTemp > 1 do | |
turtle.back() | |
bTemp = bTemp-1 | |
xTemp = xTemp-1 | |
end | |
bTemp = b+0 | |
turtle.turnLeft() | |
if aTemp > 1 then | |
if turtle.detect() then turtle.dig() end | |
turtle.forward() | |
yTemp = yTemp+1 | |
end | |
aTemp = aTemp-1 | |
end | |
aTemp = a+0 | |
while aTemp > 1 do | |
turtle.back() | |
aTemp = aTemp-1 | |
yTemp = yTemp-1 | |
end | |
if cTemp > 1 then | |
turtle.down() | |
zTemp = zTemp-1 | |
xTemp = 1 | |
yTemp = 1 | |
end | |
cTemp = cTemp-1 | |
aTemp = a+0 | |
bTemp = b+0 | |
end | |
if back == true then | |
cTemp = c+0 | |
while cTemp > 0 do | |
if cTemp > 1 then | |
turtle.up() | |
end | |
cTemp = cTemp-1 | |
end | |
end | |
end, | |
} | |
Train = { | |
["Slots"] = { | |
[1] = 'Rails', | |
[2] = 1, [3] = 1, [4] = 1, [5] = 1, [6] = 1,[7] = 1, "Dirt",8,8,8,8,8,8, | |
[12] = "Motor Rail",[13] = 12, [14] = 12, | |
[15] = "Redstone Torch",[16] = 15, | |
}, | |
CheckSlot=function(y) | |
while turtle.getItemCount(Slot) == 0 do | |
if Slot+1 > y then | |
print("Out of Material") | |
a = 0 | |
else | |
Slot = Slot+1 | |
Train.sel() | |
end | |
end | |
end, | |
status=function() | |
term.clear() | |
term.setCursorPos(1,1) | |
print("a =",a) | |
print("temp =",temp) | |
end, | |
speed=function() | |
if temp == Detectby then | |
Slot = 15 | |
Train.sel() | |
Train.CheckSlot(16) | |
elseif temp == Detectby+1 or temp == Detectby+2 then | |
Slot = 12 | |
Train.sel() | |
Train.CheckSlot(14) | |
elseif temp == Detectby+3 then | |
Slot = 15 | |
Train.sel() | |
Train.CheckSlot(16) | |
temp = 0 | |
else | |
Slot = 1 | |
Train.sel() | |
Train.CheckSlot(7) | |
end | |
end, | |
sel=function() | |
turtle.select(Slot) | |
end, | |
start=function(lenght,flat,maybe) | |
Detectby = 10 | |
temp = 0 | |
a = lenght | |
if flat ~= nil and flat ~= '1' then | |
CheckGround = false | |
else | |
CheckGround = true | |
end | |
if maybe ~= nil then | |
for i=1,#Train["Slots"] do | |
print("Slot:",i,"=",Slots[i]) | |
end | |
print("e for exit|t or f for follow rails") | |
a = read() | |
end | |
if a == "e" then | |
shell.exit() | |
elseif a == "t" or a == "f" then | |
a = 0 | |
while turtle.detectDown() == true do | |
turtle.forward() | |
a = a+1 | |
Train.status() | |
end | |
else | |
a = tonumber(lenght) | |
while a > 0 do | |
if CheckGround == true then | |
turtle.down() | |
if turtle.detectDown() == false then | |
Slot = 8 | |
Train.sel() | |
Train.CheckSlot(11) | |
turtle.placeDown() | |
end | |
turtle.up() | |
end | |
Train.speed() | |
turtle.placeDown() | |
turtle.forward() | |
a = a-1 | |
temp = temp+1 | |
Train.status() | |
end | |
end | |
end, } | |
dev() | |
Main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment