Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {
- release = 0,
- files = {
- ignore = {
- "ignore",
- "run",
- ".temp",
- "startup",
- "netware",
- },
- api = {
- {
- newlib = "-- newlib\
- local burnratio = 12\
- \
- function set_label(modus)\
- os.setComputerLabel(modus..os.getComputerID())\
- end\
- \
- function pulse(side, times)\
- for i = 1, times do\
- redstone.setOutput(side, true)\
- sleep(.5)\
- redstone.setOutput(side, false)\
- sleep(.5)\
- end\
- end\
- \
- function get_itemcount(slottable)\
- if slottable == {0} then\
- slottable = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }\
- end\
- ic = 0\
- for k,v in pairs{slottable} do\
- ic = ic + turtle.getItemCount(v)\
- end\
- return ic\
- end\
- function act_direction(mode, amount, direction)\
- if direction == \"up\" then\
- if mode == \"suck\" then\
- return turtle.suckUp(amount)\
- else\
- return turtle.dropUp(amount)\
- end\
- else\
- if direction == \"front\" then\
- if mode == \"suck\" then\
- return turtle.suck(amount)\
- else\
- return turtle.drop(amount)\
- end\
- else\
- if direction == \"down\" then\
- if mode == \"suck\" then\
- return turtle.suckDown(amount)\
- else\
- return turtle.dropDown(amount)\
- end\
- else\
- return false\
- end\
- end\
- end\
- \
- end\
- \
- function is_empty(amount, direction, slottable, amount)\
- empty = true\
- -- get itemcount of all slots in table\
- ic = get_itemcount({0})\
- \
- -- probe in direction\
- result = false\
- oldic = get_itemcount({0})\
- if act_direction(\"suck\", amount, direction) then\
- ic = get_itemcount({0})\
- act_direction(\"drop\", (ic - oldic), direction)\
- else\
- result = true\
- end\
- end\
- \
- function get_burnratio()\
- return get_field(16)\
- end\
- \
- function get_mode()\
- return get_field(15)\
- end\
- \
- function get_field(slot)\
- if slot == 15 and turtle.getItemCount(slot) > 1 then\
- data = turtle.getItemCount(slot)\
- else\
- data = turtle.getItemCount(slot)\
- end\
- return data\
- end\
- \
- function feed_burner(itemcount)\
- result = false\
- if turtle.getItemCount(turtle.getSelectedSlot()) >= itemcount then\
- result = turtle.dropDown(itemcount)\
- sleep(1)\
- end\
- return result\
- end\
- \
- function isme(label)\
- if os.getComputerLabel() == label then\
- return true\
- else\
- return false\
- end\
- end\
- \
- \
- function load_file(filename)\
- infile = fs.open(filename, \"r\")\
- data = {}\
- if infile then\
- data = infile.readAll()\
- end\
- return data\
- end\
- \
- function load_table(filename)\
- return textutils.unserialize(load_file(filename))\
- end\
- \
- function save_file(data, filename)\
- outfile = fs.open(filename, \"w\")\
- outfile.write(data)\
- result = outfile.flush()\
- outfile.close()\
- return result\
- end\
- \
- function save_table(ttable, filename)\
- return save_file(textutils.serialize(ttable), filename)\
- end\
- \
- function get_key(value, ttable)\
- result = nil\
- for k,v in pairs(ttable) do\
- if value == v then\
- result = k\
- end\
- end\
- return result\
- end\
- \
- function getfilelist()\
- tin = fs.list(\"\")\
- tout = {}\
- for k,v in pairs(tin) do\
- if not fs.isDir(v) and not fs.isReadOnly(v) and not get_key(v, ignore_files) then\
- tout[k] = v\
- end\
- end\
- return tout\
- end\
- \
- function wipe()\
- files = getfilelist()\
- if not files then print(\"nothing found\") return false end\
- for no,file in pairs(files) do\
- print(\"Deleting \"..file..\" ...\")\
- fs.delete(\"/\"..file)\
- end\
- end",
- },
- {
- netware = "--netware\
- service = \"release\"\
- wifi = nil\
- server = nil\
- \
- function init()\
- tdevs = peripheral.getNames()\
- for k,v in pairs(tdevs) do\
- if peripheral.getType(v) == \"modem\"\
- and peripheral.wrap(v).isWireless() then \
- rednet.open(v)\
- if rednet.isOpen(v) then\
- rednet.close(v)\
- return v\
- --break\
- end\
- end\
- end\
- end\
- \
- function sopen(side)\
- if rednet.isOpen(side) then rednet.close(side) end\
- rednet.open(side)\
- return rednet.isOpen(side)\
- end\
- \
- function sclose(side)\
- if rednet.isOpen(side) then return rednet.close(side) end\
- end\
- \
- function ssend(service, tcommands)\
- sopen(wifi)\
- rednet.send(server, textutils.serialize(tcommands), service)\
- sclose(wifi)\
- end\
- \
- function get_server(service)\
- sopen(wifi)\
- if not server then\
- server = rednet.lookup(service)\
- end\
- sclose(wifi)\
- return server\
- end\
- wifi = init()\
- server = get_server(service)\
- cmds = {\
- latest = { \"get\", \"latest\" },\
- report = { \"report\", \"\" }, \
- }\
- ssend(service, cmds)\
- \
- ",
- },
- },
- config = {
- {
- ignore = "{\
- \"ignore_files\",\
- \"run_files\",\
- \".temp\",\
- \"startup\",\
- \"updater\",\
- }",
- },
- {
- run = "{\
- \"updater\",\
- }",
- },
- {
- startup = "--startup\
- os.loadAPI(shell.resolve(\"source/newlib\"))\
- release = newlib.load_table(\"./release\")\
- print(release)\
- \
- \
- ",
- },
- },
- run = {
- {
- distributor = "os.loadAPI(\"lib\")\
- burnratio = lib.get_burnratio()\
- mode = lib.get_mode()\
- idlecounter = 0\
- early_offset = 3\
- \
- turtle.placeUp()\
- sleep(1)\
- turtle.placeUp()\
- sleep(1)\
- \
- if burnratio >= 1 and mode == 2 then\
- print(\"Entering secondary mode...\")\
- modus = \"secondary\"\
- lib.set_label(modus)\
- end\
- while modus == \"secondary\" do\
- if turtle.getItemCount(1) >= (burnratio + 1) then\
- idlecounter = 0\
- if not turtle.suck(1) then\
- if lib.feed_burner(1) then\
- turtle.drop(burnratio)\
- end\
- lib.pulse(\"front\", burnratio)\
- turtle.turnLeft()\
- else\
- turtle.drop(1)\
- lib.pulse(\"front\", burnratio)\
- end\
- else\
- ic = turtle.getItemCount(1)\
- sum = burnratio + 1 - ic\
- if not turtle.suckUp(sum) then\
- idlecounter = idlecounter + 1\
- end\
- end\
- if idlecounter > 100 then\
- lib.pulse(\"front\", burnratio)\
- end\
- sleep(.1)\
- burnratio = lib.get_burnratio()\
- end\
- \
- if burnratio <= 1 and mode == 3 then\
- print(\"Entering tertiary mode...\")\
- turtle.select(1)\
- modus = \"tertiary\"\
- lib.set_label(modus)\
- end\
- while modus == \"tertiary\" do\
- if turtle.getItemCount(burnratio) >= 1 then\
- if turtle.drop(1) then\
- turtle.turnLeft()\
- end\
- end\
- sleep(.2)\
- end\
- \
- if burnratio >= 1 and mode == 1 then\
- print(\"Entering primary mode...\")\
- modus = \"primary\"\
- lib.set_label(modus)\
- end\
- \
- rounds = 0\
- while modus == \"primary\" do\
- before = os.time()/20*1000\
- if not (turtle.getItemCount(1) >= burnratio) then\
- turtle.suckUp(burnratio - turtle.getItemCount(1))\
- else\
- if turtle.drop(burnratio) then\
- rounds = rounds + 1\
- print(\"Round No. \"..rounds)\
- turtle.turnLeft()\
- end\
- end\
- if rounds >= 4 then\
- rounds = 0\
- burntime = (burnratio/4-1) * 10\
- now = os.time()/20*1000\
- delta = now - before\
- if delta <= (burntime- early_offset) then\
- print(\"Sleeping for \"..(burntime-delta-early_offset).. \"seconds\")\
- sleep(burntime - delta - early_offset)\
- end\
- before = os.time()/20*1000\
- end\
- sleep(.2)\
- end\
- \
- lib.set_label(\"unconfigured\")\
- print(\"Reboot in 10...\")\
- sleep(10)\
- os.reboot()",
- },
- },
- },
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement