Guest User

Untitled

a guest
Nov 9th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.84 KB | None | 0 0
  1. if fs.exists("VALUES") == false then
  2. h = fs.open("VALUES", "w")
  3. h.writeLine(0) h.writeLine(0) h.writeLine(0) h.writeLine(1)
  4. h.writeLine(0) h.writeLine(0) h.writeLine(0) h.writeLine(0)
  5. h.writeLine(0) h.writeLine(0) h.writeLine(0) h.writeLine(0)
  6. h.writeLine(0) h.writeLine(0) h.writeLine(0) h.writeLine(0)
  7. h.writeLine(0) h.writeLine(0) h.writeLine(0) h.writeLine(0)
  8. h.writeLine(0) h.writeLine(0) h.writeLine(0) h.writeLine(0)
  9. h.writeLine(1)
  10. h.close()
  11. end
  12. h = fs.open("VALUES", "r")
  13. x = (tonumber(h.readLine()*1))
  14. y = (tonumber(h.readLine()*1))
  15. z = (tonumber(h.readLine()*1))
  16. f = (tonumber(h.readLine()*1))
  17. tgtx = (tonumber(h.readLine()*1))
  18. tgty = (tonumber(h.readLine()*1))
  19. tgtz = (tonumber(h.readLine()*1))
  20. tgtf = (tonumber(h.readLine()*1))
  21. distance = (tonumber(h.readLine()*1))
  22. slot = (tonumber(h.readLine()*1))
  23. wallslot = (tonumber(h.readLine()*1))
  24. wall = (tonumber(h.readLine()*1))
  25. nextturn = (tonumber(h.readLine()*1))
  26. ufmode = (tonumber(h.readLine()*1))
  27. items = (tonumber(h.readLine()*1))
  28. titems = (tonumber(h.readLine()*1))
  29. tgtfuel = (tonumber(h.readLine()*1))
  30. ichestside = (tonumber(h.readLine()*1))
  31. fchestside = (tonumber(h.readLine()*1))
  32. option = (tonumber(h.readLine()*1))
  33. mfmode = (tonumber(h.readLine()*1))
  34. delay = (tonumber(h.readLine()*1))
  35. runlevel = (tonumber(h.readLine()*1))
  36. remaining = (tonumber(h.readLine()*1))
  37. step = (tonumber(h.readLine()*1))
  38. h.close()
  39. ls = {}
  40. repeat
  41. slot = (slot + 1)
  42. ls[slot] = turtle.getItemCount(slot)
  43. until slot == 16
  44. function save()
  45. h = fs.open("VALUES", "w")
  46. h.writeLine(x) h.writeLine(y) h.writeLine(z) h.writeLine(f)
  47. h.writeLine(tgtx) h.writeLine(tgty) h.writeLine(tgtz) h.writeLine(tgtf)
  48. h.writeLine(distance) h.writeLine(slot) h.writeLine(wallslot) h.writeLine(wall)
  49. h.writeLine(nextturn) h.writeLine(ufmode) h.writeLine(items) h.writeLine(titems)
  50. h.writeLine(tgtfuel) h.writeLine(ichestside) h.writeLine(fchestside) h.writeLine(option)
  51. h.writeLine(mfmode) h.writeLine(delay) h.writeLine(runlevel) h.writeLine(remaining)
  52. h.writeLine(step)
  53. h.close()
  54. end
  55. function forward()
  56. if turtle.detect() == true then matching() if wall == 0 then turtle.dig() end end
  57. if turtle.forward() == true then
  58. distance = (distance + 1)
  59. if f == 1 then z = (z + 1)
  60. elseif f == 2 then x = (x + 1)
  61. elseif f == 3 then z = (z - 1)
  62. elseif f == 4 then x = (x - 1)
  63. end
  64. end
  65. save()
  66. end
  67. function right()
  68. turtle.turnRight()
  69. if f == 4 then f = 1 else f = (f + 1) end
  70. save()
  71. end
  72. function left()
  73. turtle.turnLeft()
  74. if f == 1 then f = 4 else f = (f - 1) end
  75. save()
  76. end
  77. function up()
  78. if turtle.up() == true then
  79. distance = (distance + 1)
  80. y = (y + 1)
  81. save()
  82. end
  83. end
  84. function down()
  85. if turtle.down()== true then
  86. distance = (distance + 1)
  87. y = (y - 1)
  88. end
  89. save()
  90. end
  91. function rotate(tgtf)
  92. if tgtf ~= f then
  93. if (tgtf - 3) == f then left()
  94. elseif (tgtf + 3) == f then right()
  95. elseif tgtf < f == true
  96. then repeat left() until f == tgtf
  97. else repeat right() until f == tgtf
  98. end
  99. end
  100. save()
  101. end
  102. function firstturn()
  103. if nextturn == 1
  104. then left()
  105. else right()
  106. end
  107. end
  108. function secondturn()
  109. forward()
  110. if nextturn == 1
  111. then left()
  112. nextturn = 0
  113. else right()
  114. nextturn = 1
  115. end
  116. end
  117. function setup(tgtfuel)
  118. slot = 0
  119. if ichestside == 2 then rotate(2)
  120. elseif ichestside == 5 then rotate(3)
  121. elseif ichestside == 4 then rotate(4)
  122. end
  123. titems = titems + (ls[1] + ls[2] + ls[3] + ls[4] +
  124. ls[5] + ls[6] + ls[7] + ls[8] + ls[9] +
  125. ls[10] + ls[11] + ls[12] + ls[13] + ls[14]+
  126. ls[15] + ls[16] - 1)
  127. repeat
  128. slot = (slot + 1)
  129. turtle.select(slot)
  130. if slot ~= wallslot then
  131. if ichestside == 1 then turtle.dropUp()
  132. elseif ichestside == 3 then turtle.dropDown()
  133. elseif ichestside == 2 or ichestside == 4 or ichestside == 5 then turtle.drop()
  134. end
  135. end
  136. until slot == 16
  137. if tgtfuel > 0 then
  138. if fchestside == 2 then rotate(2)
  139. elseif fchestside == 5 then rotate(3)
  140. elseif fchestside == 4 then rotate(4)
  141. end
  142. if turtle.getFuelLevel() == "unlimited" then ufmode = 1 else ufmode = 0 end
  143. if ufmode == 0 then
  144. turtle.select(1)
  145. repeat
  146. if fchestside == 1 then turtle.suckUp()
  147. elseif fchestside == 3 then turtle.suckDown()
  148. elseif fchestside == 2 or fchestside == 4 or fchestside == 5 then turtle.suck()
  149. end
  150. repeat
  151. ls[1] = turtle.getItemCount(1)
  152. turtle.refuel(1)
  153. if ls[1] == turtle.getItemCount(1) then if wallslot < 16 then turtle.transferTo(wallslot + 1) else turtle.transferTo(wallslot - 1) end end
  154. until turtle.getFuelLevel() > tgtfuel or turtle.getItemCount(1) == 0
  155. until turtle.getFuelLevel() > tgtfuel
  156. end
  157. slot = 0
  158. repeat
  159. slot = (slot + 1)
  160. if slot ~= wallslot then
  161. turtle.select(slot)
  162. if ichestside == 1 then turtle.dropUp()
  163. elseif ichestside == 3 then turtle.dropDown()
  164. elseif ichestside == 2 or ichestside == 4 or ichestside == 5 then turtle.drop()
  165. end
  166. end
  167. until slot == 16
  168. slot = 0
  169. turtle.select(1)
  170. end
  171. rotate(1)
  172. end
  173. function go(tgtx, tgty, tgtz, tgtf)
  174. if y ~= tgty then
  175. repeat
  176. if x < 0 then rotate(2)
  177. elseif x > 0 then rotate(4)
  178. end
  179. if turtle.detect() == false and x ~= 0 then repeat forward() until x == 0 or turtle.detect() == true end
  180. if z < 0 then rotate(1)
  181. elseif z > 0 then rotate(3)
  182. end
  183. if turtle.detect() == false and z ~= 0 then repeat forward() until z == 0 or turtle.detect() == true end
  184. if y < tgty then if turtle.detectUp() == false then repeat up() until y == tgty or turtle.detectUp() == true end
  185. elseif y > tgty then if turtle.detectDown() == false then repeat down() until y == tgty or turtle.detectDown() == true end
  186. end
  187. until (x == 0) == true and (z == 0) == true and (y == tgty) == true
  188. repeat
  189. if x < tgtx then rotate(2)
  190. elseif x > tgtx then rotate(4)
  191. end
  192. if turtle.detect() == false and x ~= tgtx then repeat forward() until x == tgtx or turtle.detect() == true end
  193. if z < tgtz then rotate(1)
  194. elseif z > tgtz then rotate(3)
  195. end
  196. if turtle.detect() == false and z ~= tgtz then repeat forward() until z == tgtz or turtle.detect() == true end
  197. until (x == tgtx) == true and (z == tgtz) == true
  198. else
  199. repeat
  200. if z < tgtz then rotate(1)
  201. elseif z > tgtz then rotate(3)
  202. end
  203. if turtle.detect() == false and z ~= tgtz then repeat forward() until z == tgtz or turtle.detect() == true end
  204. if x < tgtx then rotate(2)
  205. elseif x > tgtx then rotate(4)
  206. end
  207. if turtle.detect() == false and x ~= tgtx then repeat forward() until x == tgtx or turtle.detect() == true end
  208. until (x == tgtx) == true and (z == tgtz) == true
  209. end
  210. rotate(tgtf)
  211. end
  212. function matching()
  213. turtle.select(wallslot)
  214. if turtle.compare() == true
  215. then wall = 1
  216. else wall = 0
  217. end
  218. turtle.select(1)
  219. end
  220. function core()
  221. ls = {}
  222. turtle.select(1)
  223. slot = 0
  224. if turtle.detectDown() == true
  225. then
  226. repeat
  227. slot = (slot + 1)
  228. ls[slot] = turtle.getItemCount(slot)
  229. until slot == 16
  230. turtle.digDown()
  231. slot = 0
  232. repeat
  233. slot = (slot + 1)
  234. until ls[slot] ~= turtle.getItemCount(slot) or slot == 16
  235. if wallslot ~= slot then
  236. turtle.select(slot)
  237. turtle.placeDown()
  238. end
  239. if turtle.detectDown() == false and slot ~= 16
  240. then
  241. repeat
  242. slot = (slot + 1)
  243. turtle.select(slot)
  244. if slot ~= wallslot then turtle.placeDown() end
  245. until turtle.detectDown() == true or slot == 16
  246. end
  247. slot = 0
  248. turtle.select(1)
  249. end
  250. matching()
  251. if wall == 0 and turtle.detect() == true
  252. then
  253. turtle.dig()
  254. turtle.suck()
  255. turtle.suckUp()
  256. turtle.suckDown()
  257. end
  258. end
  259. function info()
  260. term.clear()
  261. term.setCursorPos(1,1)
  262. print("[ LAST HARVEST INFO ]")
  263. print("---------------------------------------")
  264. term.setCursorPos(1,3)
  265. print("Total blocks travelled:".. distance)
  266. term.setCursorPos(1,5)
  267. print("Total items harvested:".. titems)
  268. term.setCursorPos(1,12)
  269. print("---------------------------------------")
  270. term.setCursorPos(1,11)
  271. print("Press any key to exit")
  272. os.pullEvent("key")
  273. end
  274. function options()
  275. repeat
  276. repeat
  277. term.clear()
  278. term.setCursorPos(1,1)
  279. print("[ MFAS V2 OPTIONS ]")
  280. print("---------------------------------------")
  281. term.setCursorPos(1,3)
  282. print("1-Multi floor mode")
  283. term.setCursorPos(1,5)
  284. print("2-Change sides of chests")
  285. term.setCursorPos(1,7)
  286. print("3-Change sleeping time")
  287. term.setCursorPos(1,9)
  288. print("4-Back to main menu")
  289. term.setCursorPos(1,11)
  290. print("Type the number and press enter")
  291. term.setCursorPos(1,12)
  292. print("---------------------------------------")
  293. term.setCursorPos(1,13)
  294. option = (io.read() * 1)
  295. until option == 1 or option == 2 or option == 3 or option == 4
  296. if option == 1 then
  297. repeat
  298. term.clear()
  299. term.setCursorPos(1,1)
  300. print("[ MULTIFLOOR MODE ]")
  301. print("---------------------------------------")
  302. term.setCursorPos(1,3)
  303. print("1-Enable")
  304. term.setCursorPos(1,5)
  305. print("0-Disable")
  306. term.setCursorPos(1,11)
  307. print("Type the number and press enter")
  308. term.setCursorPos(1,12)
  309. print("---------------------------------------")
  310. term.setCursorPos(1,13)
  311. mfmode = (io.read() * 1)
  312. until mfmode == 1 or mfmode == 0
  313. elseif option == 2 then
  314. repeat
  315. term.clear()
  316. term.setCursorPos(1,1)
  317. print("[ FUEL CHEST SIDE ]")
  318. print("---------------------------------------")
  319. term.setCursorPos(1,3)
  320. print("1-Up")
  321. term.setCursorPos(1,4)
  322. print("2-Right")
  323. term.setCursorPos(1,5)
  324. print("3-Bottom")
  325. term.setCursorPos(1,6)
  326. print("4-Left")
  327. term.setCursorPos(1,7)
  328. print("5-Back")
  329. term.setCursorPos(1,11)
  330. print("Type the number and press enter")
  331. term.setCursorPos(1,12)
  332. print("---------------------------------------")
  333. term.setCursorPos(1,13)
  334. fchestside = (io.read() * 1)
  335. until fchestside == 1 or fchestside == 2 or fchestside == 3 or fchestside == 4 or fchestside == 5
  336. repeat
  337. term.clear()
  338. term.setCursorPos(1,1)
  339. print("[ ITEM CHEST SIDE ]")
  340. print("---------------------------------------")
  341. term.setCursorPos(1,3)
  342. print("1-Up")
  343. term.setCursorPos(1,4)
  344. print("2-Right")
  345. term.setCursorPos(1,5)
  346. print("3-Bottom")
  347. term.setCursorPos(1,6)
  348. print("4-Left")
  349. term.setCursorPos(1,7)
  350. print("5-Back")
  351. term.setCursorPos(1,11)
  352. print("Type the number and press enter")
  353. term.setCursorPos(1,12)
  354. print("---------------------------------------")
  355. term.setCursorPos(1,13)
  356. ichestside = (io.read() * 1)
  357. until (ichestside == 1 or ichestside == 2 or ichestside == 3 or ichestside == 4 or ichestside == 5) == true and fchestside ~= ichestside
  358. elseif option == 3 then
  359. repeat
  360. term.clear()
  361. term.setCursorPos(1,1)
  362. print("[ SLEEPING TIME ]")
  363. print("---------------------------------------")
  364. print("Hours between harvests? Can be a decimal number using a dot.")
  365. print("")
  366. print("i.e 0.5 -> 30 minutes")
  367. term.setCursorPos(1,13)
  368. delay = (io.read() * 1)
  369. until delay >= 0
  370. end
  371. until option == 4
  372. end
  373. function gui()
  374. repeat
  375. term.clear()
  376. term.setCursorPos(1,1)
  377. print("[ MFAS V2 ]")
  378. print("---------------------------------------")
  379. term.setCursorPos(1,3)
  380. print("1-Run now")
  381. term.setCursorPos(1,5)
  382. print("2-Options")
  383. term.setCursorPos(1,7)
  384. print("3-Last harvest info")
  385. term.setCursorPos(1,9)
  386. print("4-Close MFAS")
  387. term.setCursorPos(1,11)
  388. print("Type the number and press enter")
  389. term.setCursorPos(1,12)
  390. print("---------------------------------------")
  391. term.setCursorPos(1,13)
  392. repeat
  393. term.setCursorPos(1,13)
  394. option = io.read()*1
  395. until option == 1 or option == 2 or option == 3 or option == 4
  396. if option == 2 then
  397. options()
  398. elseif option == 3 then
  399. info()
  400. elseif option == 4 then
  401. save()
  402. term.clear()
  403. term.setCursorPos(1,1)
  404. print("Thanks for using MFAS - Mendoza")
  405. sleep(3)
  406. os.reboot()
  407. end
  408. until option == 1
  409. term.clear()
  410. end
  411. function main()
  412. turtle.dig()
  413. forward()
  414. rotate(4)
  415. matching()
  416. if turtle.detect() == true and wall == 1
  417. then
  418. nextturn = 0
  419. else
  420. nextturn = 1
  421. end
  422. rotate(1)
  423. while true do
  424. save()
  425. core()
  426. if (turtle.getFuelLevel() == ((math.abs(x)) + (math.abs(y)) + (math.abs(z)) + 50) and ufmode == 0) == true then
  427. tgtx = x
  428. tgty = y
  429. tgtz = z
  430. tgtf = f
  431. go(0, 0, 0, 1)
  432. setup(1000)
  433. go(tgtx, tgty, tgtz, tgtf)
  434. elseif full() == true then
  435. tgtx = x
  436. tgty = y
  437. tgtz = z
  438. tgtf = f
  439. go(0, 0, 0, 1)
  440. setup(0)
  441. go(tgtx, tgty, tgtz, tgtf)
  442. end
  443. save()
  444. if turtle.detect() == false
  445. then
  446. forward()
  447. turtle.suckDown()
  448. else
  449. turtle.suckDown()
  450. firstturn()
  451. matching()
  452. if turtle.detect() == true and wall == 1
  453. then break
  454. else
  455. if wall == 0 and turtle.detect() == true
  456. then
  457. turtle.dig()
  458. turtle.suck()
  459. turtle.suckUp()
  460. turtle.suckDown()
  461. turtle.down()
  462. for i = 1, 4 do
  463. turtle.suck()
  464. turtle.turnLeft()
  465. end
  466. turtle.up()
  467. end
  468. secondturn()
  469. end
  470. end
  471. end
  472. go(0, y, 0, 1)
  473. end
  474. function wait()
  475. term.clear()
  476. if remaining <= 0 then remaining = (delay*3600) end
  477. repeat
  478. remaining = remaining - 1
  479. save()
  480. sleep(1)
  481. until remaining <= 0
  482. term.clear()
  483. step = 1
  484. save()
  485. end
  486. function full()
  487. if wallslot == 16 then
  488. if turtle.getItemCount(15) > 0 then return true
  489. else return false end
  490. elseif wallslot ~= 16 then
  491. if turtle.getItemCount(16) > 0 then return true
  492. else return false end
  493. end
  494. end
  495. save()
  496. if runlevel == 0 then
  497. term.clear()
  498. term.setCursorPos(1,1)
  499. print("[ APAM V1 ]")
  500. print("---------------------------------------")
  501. term.setCursorPos(1,3)
  502. print("Welcome to APAM V1. Please, add to the inventory of the turtle the block which are made the walls of the farm, and press a key")
  503. os.pullEvent("key")
  504. repeat
  505. wallslot = (wallslot + 1)
  506. turtle.select(wallslot)
  507. until turtle.getItemCount(wallslot) > 0
  508. if wallslot == 1 then
  509. wallslot = 16
  510. turtle.select(1)
  511. turtle.transferTo(16)
  512. turtle.select(1)
  513. end
  514. turtle.select(1)
  515. term.clear()
  516. term.setCursorPos(1,1)
  517. print("[ APAM V1 ]")
  518. print("---------------------------------------")
  519. term.setCursorPos(1,3)
  520. print("Before starting, set the options in the next page")
  521. os.pullEvent("key")
  522. repeat
  523. term.clear()
  524. term.setCursorPos(1,1)
  525. print("[ MULTIFLOOR MODE ]")
  526. print("---------------------------------------")
  527. term.setCursorPos(1,3)
  528. print("1-Enable")
  529. term.setCursorPos(1,5)
  530. print("0-Disable")
  531. term.setCursorPos(1,11)
  532. print("Type the number and press enter")
  533. term.setCursorPos(1,12)
  534. print("---------------------------------------")
  535. term.setCursorPos(1,13)
  536. mfmode = (io.read() * 1)
  537. until mfmode == 1 or mfmode == 0
  538. save()
  539. repeat
  540. term.clear()
  541. term.setCursorPos(1,1)
  542. print("[ FUEL CHEST SIDE ]")
  543. print("---------------------------------------")
  544. term.setCursorPos(1,3)
  545. print("1-Up")
  546. term.setCursorPos(1,4)
  547. print("2-Right")
  548. term.setCursorPos(1,5)
  549. print("3-Bottom")
  550. term.setCursorPos(1,6)
  551. print("4-Left")
  552. term.setCursorPos(1,7)
  553. print("5-Back")
  554. term.setCursorPos(1,11)
  555. print("Type the number and press enter")
  556. term.setCursorPos(1,12)
  557. print("---------------------------------------")
  558. term.setCursorPos(1,13)
  559. fchestside = (io.read() * 1)
  560. until fchestside == 1 or fchestside == 2 or fchestside == 3 or fchestside == 4 or fchestside == 5
  561. save()
  562. repeat
  563. term.clear()
  564. term.setCursorPos(1,1)
  565. print("[ ITEM CHEST SIDE ]")
  566. print("---------------------------------------")
  567. term.setCursorPos(1,3)
  568. print("1-Up")
  569. term.setCursorPos(1,4)
  570. print("2-Right")
  571. term.setCursorPos(1,5)
  572. print("3-Bottom")
  573. term.setCursorPos(1,6)
  574. print("4-Left")
  575. term.setCursorPos(1,7)
  576. print("5-Back")
  577. term.setCursorPos(1,11)
  578. print("Type the number and press enter")
  579. term.setCursorPos(1,12)
  580. print("---------------------------------------")
  581. term.setCursorPos(1,13)
  582. ichestside = (io.read() * 1)
  583. until (ichestside == 1 or ichestside == 2 or ichestside == 3 or ichestside == 4 or ichestside == 5) == true and fchestside ~= ichestside
  584. save()
  585. repeat
  586. term.clear()
  587. term.setCursorPos(1,1)
  588. print("[ SLEEPING TIME ]")
  589. print("---------------------------------------")
  590. print("Hours between harvests? Can be a decimal number using a dot.")
  591. print("")
  592. print("i.e 0.5 -> 30 minutes")
  593. term.setCursorPos(1,13)
  594. delay = (io.read() * 1)
  595. until delay >= 0
  596. runlevel = 1
  597. end
  598. function wait()
  599. if remaining <= 0 and step == 2 then remaining = (delay*3600) end
  600. repeat
  601. remaining = remaining - 1
  602. sleep(1)
  603. until remaining <= 0
  604. end
  605. function redstone()
  606. os.pullEvent("redstone")
  607. term.clear()
  608. end
  609. save()
  610. if step == 1 then gui() end
  611. while true do
  612. if step == 1 then
  613. titems = 0
  614. if distance == 0 then setup(1000) else setup(distance) distance = 0 end
  615. if mfmode == 1 then
  616. while turtle.detectDown() == false do
  617. down()
  618. end
  619. main()
  620. while turtle.detectUp() == false do
  621. while turtle.detect() == false do
  622. up()
  623. end
  624. repeat
  625. up()
  626. until turtle.detect() == false
  627. main()
  628. end
  629. go(0, 0, 0, 1)
  630. else main() end
  631. repeat
  632. slot = (slot + 1)
  633. ls[slot] = turtle.getItemCount(slot)
  634. until slot == 16
  635. setup(0)
  636. save()
  637. step = 2
  638. save()
  639. else
  640. parallel.waitForAny(wait, redstone, gui)
  641. term.clear()
  642. step = 1
  643. save()
  644. end
  645. end
Advertisement
Add Comment
Please, Sign In to add comment