Its_Patchi

Drone

Feb 2nd, 2015
288
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. rednet.open("back")
  2. os.loadAPI("button")
  3. local m = term
  4. local areaShown = false
  5.  
  6. local homex = -847
  7. local homey = 168
  8. local homez = 970
  9.  
  10. local setx = 0
  11. local sety = 0
  12. local setz = 0
  13. local setx2 = 0
  14. local sety2 = 0
  15. local setz2 = 0
  16. local currx = 0
  17. local curry = 0
  18. local currz = 0
  19. local chestx = 0
  20. local chesty = 0
  21. local chestz = 0
  22.  
  23. local menuType = "mainMenu"
  24. local areaType = "Filled"
  25. local moveMode = "Normal"
  26.  
  27.  
  28. function sendMessage(message)
  29.     rednet.send(59, message)
  30. end
  31.  
  32. function mainMenu()
  33.     m.clear()
  34.     button.clearTable()
  35.     button.setTable("Come Here", comeHere, "", 3, 13, 1, 1)
  36.     button.setTable("Go Home", goHome, "", 15, 25, 1, 1)
  37.     button.setTable("Set Area", setXYZMenu, "", 3, 13, 3, 3)
  38.     button.setTable("GoTo", goTo, "", 15, 25, 3, 3)
  39.     button.setTable("Dig", dig, "", 3, 13, 5, 5)
  40.     button.setTable("Get Pick", getPickaxe, "", 15, 25, 5, 5)
  41.     button.setTable("Pickup", pickup, "", 3, 13, 7, 7)
  42.     button.setTable("GetItems", getItems, "", 15, 25, 7, 7)
  43.     button.setTable("ItemsChest", dropItems, "", 15, 25, 9, 9)
  44.     button.setTable("Attack", attack, "", 3, 13, 9, 9)
  45.     button.setTable("Build", place, "", 3, 13, 11, 11)
  46.     button.setTable("Set Chest", setChest, "", 3, 13, 16, 16)
  47.     button.setTable("Show Area", showAreaToggle, "", 15, 25, 18, 18)
  48.     button.setTable("Status", setStatusMenu, "", 3, 13, 18, 18)
  49.     if chesty ~= 0 then
  50.         button.toggleButton("Set Chest")
  51.     end
  52.     button.setButton("Show Area", areaShown)
  53.     button.screen()
  54. end
  55.  
  56. function statusMenu()
  57.     local x,y,z = getPosition()
  58.     m.clear()
  59.     button.clearTable()
  60.     button.setTable("Back", setMainMenu, "", 1, 6, 1, 1)
  61.     button.setTable("Refresh", displayScreen, "", 2, 25, 20,20)
  62.     button.label(1,3,"Pressure: "..getPressure())
  63.     button.label(1,4,"Position: "..math.floor(x)..","..math.floor(y)..","..math.floor(z))
  64.     button.label(1,5,"Action:   "..tostring(not isDone()))
  65. --  button.label(1,6,"Pickaxe:  "..tostring(hasPickaxe()))
  66.     button.screen()
  67. end
  68.  
  69. function xyzMenu()
  70.     m.clear()
  71.     button.clearTable()
  72.     button.label(1,1,"Position: "..currx..","..curry..","..currz)
  73.     button.setTable("Back", setMainMenu, "", 1, 6, 2, 2)
  74.     button.setTable(moveMode, toggleMoveMode, "", 10, 20, 2, 2)
  75.     button.label(1,4,"X: ")
  76.     button.setTable("x-10", changeX, -10, 4, 7, 4, 4)
  77.     button.setTable("x-1", changeX, -1, 9, 11, 4, 4)
  78.     button.label(15, 4, setx)
  79.     button.setTable("x+1", changeX, 1, 18, 20, 4, 4)
  80.     button.setTable("x+10", changeX, 10, 22, 25, 4, 4)
  81.     button.label(1,6,"Y: ")
  82.     button.setTable("y-10", changeY, -10, 4, 7, 6, 6)
  83.     button.setTable("y-1", changeY, -1, 9, 11, 6, 6)
  84.     button.label(15, 6, sety)
  85.     button.setTable("y+1", changeY, 1, 18, 20, 6, 6)
  86.     button.setTable("y+10", changeY, 10, 22, 25, 6, 6)
  87.     button.label(1,8,"Z: ")
  88.     button.setTable("z-10", changeZ, -10, 4, 7, 8, 8)
  89.     button.setTable("z-1", changeZ, -1, 9, 11, 8, 8)
  90.     button.label(15, 8, setz)
  91.     button.setTable("z+1", changeZ, 1, 18, 20, 8, 8)
  92.     button.setTable("z+10", changeZ, 10, 22, 25, 8, 8)
  93.     if moveMode == "Normal" then
  94.         button.label(1,10,"X2: ")
  95.         button.setTable("a-10", changeX2, -10, 4, 7, 10, 10)
  96.         button.setTable("a-1", changeX2, -1, 9, 11, 10, 10)
  97.         button.label(15, 10, setx2)
  98.         button.setTable("a+1", changeX2, 1, 18, 20, 10, 10)
  99.         button.setTable("a+10", changeX2, 10, 22, 25, 10, 10)
  100.         button.label(1,12,"Y2: ")
  101.         button.setTable("b-10", changeY2, -10, 4, 7, 12, 12)
  102.         button.setTable("b-1", changeY2, -1, 9, 11, 12, 12)
  103.         button.label(15, 12, sety2)
  104.         button.setTable("b+1", changeY2, 1, 18, 20, 12, 12)
  105.         button.setTable("b+10", changeY2, 10, 22, 25, 12, 12)
  106.         button.label(1,14,"Z2: ")
  107.         button.setTable("c-10", changeZ2, -10, 4, 7, 14, 14)
  108.         button.setTable("c-1", changeZ2, -1, 9, 11, 14, 14)
  109.         button.label(15, 14, setz2)
  110.         button.setTable("c+1", changeZ2, 1, 18, 20, 14, 14)
  111.         button.setTable("c+10", changeZ2, 10, 22, 25, 14, 14)
  112.     end
  113.     button.setTable("Reset", resetXYZ, "", 10, 20, 16, 16)
  114.     button.setTable(areaType, toggleAreaType, "", 3, 13, 18, 18)
  115.     button.setTable("Show Area", showAreaToggle, "", 15, 25, 18, 18)
  116.     button.setTable("Clear Area", clearArea, "", 3, 13, 20, 20)
  117.     button.setTable("Apply", refreshArea, "", 15, 25, 20, 20)
  118.     button.setButton("Show Area", areaShown)
  119.     button.screen()
  120. end
  121.  
  122. function toggleMoveMode()
  123.     if moveMode == "Normal" then
  124.         moveMode = "Move"
  125.     elseif moveMode == "Move" then
  126.         moveMode = "Expand"
  127.     elseif moveMode == "Expand" then
  128.         moveMode = "Normal"
  129.     end
  130. end
  131.  
  132. function getPressure()
  133.     local data = {}
  134.     data[0] = "getPressure"
  135.     sendMessage(textutils.serialize(data))
  136.     local id, message, distance, protocol = rednet.receive(5)
  137.     return(message)
  138. end
  139.  
  140. function getPosition()
  141.     local data = {}
  142.     data[0] = "getPosition"
  143.     sendMessage(textutils.serialize(data))
  144.     local id, message, distance, protocol = rednet.receive(5)
  145.     local returnData = textutils.unserialize(message)
  146.     return returnData[1], returnData[2], returnData[3]
  147. end
  148.  
  149. function toggleAreaType()
  150.     if areaType == "Filled" then
  151.         areaType = "Frame"
  152.     elseif areaType == "Frame" then
  153.         areaType = "Walls"
  154.     elseif areaType == "Walls" then
  155.         areaType = "Filled"
  156.     else
  157.         areaType = "Filled"
  158.     end
  159.     refreshArea()
  160. end
  161.  
  162. function resetXYZ()
  163.     setx = 0
  164.     sety = 0
  165.     setz = 0
  166.     setx2 = 0
  167.     sety2 = 0
  168.     setz2 = 0
  169.     currx,curry,currz = gpsLocate()
  170.     refreshArea()
  171. end
  172.  
  173. function setXYZMenu()
  174.     if curry==0 then
  175.         currx,curry,currz = gpsLocate()
  176.     end
  177.     menuType = "xyzMenu"
  178. end
  179.  
  180. function setMainMenu()
  181.     menuType = "mainMenu"
  182. end
  183.  
  184. function setStatusMenu()
  185.     menuType = "statusMenu"
  186. end
  187.  
  188. function refreshArea()
  189.     setAreaGlobal()
  190.     showArea(false)
  191.     showArea(true)
  192.     areaShown = true
  193. end
  194.  
  195. function setChest()
  196.     chestx = currx+setx
  197.     chesty = curry+sety
  198.     chestz = currz+setz
  199. end
  200.  
  201. function setAreaGlobal()
  202.     clearArea()
  203.     local data = {}
  204.     data[0] = "setArea"
  205.     data[1] = currx+setx
  206.     data[2] = curry+sety
  207.     data[3] = currz+setz
  208.     data[4] = currx+setx2
  209.     data[5] = curry+sety2
  210.     data[6] = currz+setz2
  211.     data[7] = areaType
  212.     sendMessage(textutils.serialize(data))
  213. end
  214.  
  215. function showAreaToggle()
  216.    areaShown = not areaShown
  217.    showArea(areaShown)
  218. end
  219.  
  220. function changeX(change)
  221.     setx = setx + change
  222.     if moveMode == "Move" then
  223.         setx2 = setx2 + change
  224.     elseif moveMode == "Expand" then
  225.         setx2 = setx2 - change
  226.     end
  227. end
  228.  
  229. function changeY(change)
  230.    sety = sety+change
  231.    if moveMode == "Move" then
  232.         sety2 = sety2 + change
  233.     elseif moveMode == "Expand" then
  234.         sety2 = sety2 - change
  235.     end
  236. end
  237.  
  238. function changeZ(change)
  239.     setz = setz+change
  240.     if moveMode == "Move" then
  241.         setz2 = setz2 + change
  242.     elseif moveMode == "Expand" then
  243.         setz2 = setz2 - change
  244.     end
  245. end
  246.  
  247. function changeX2(change)
  248.    setx2 = setx2 + change
  249. end
  250.  
  251. function changeY2(change)
  252.    sety2 = sety2+change
  253. end
  254.  
  255. function changeZ2(change)
  256.     setz2 = setz2+change
  257. end
  258.  
  259. function gpsLocate()
  260.    local x,y,z = gps.locate()
  261.    return math.floor(x)-1, math.floor(y), math.floor(z)
  262. end
  263.  
  264. function comeHere()
  265.     local data = {}
  266.     local x,y,z = gpsLocate()
  267.     data[0] = "goto"
  268.     data[1] = x
  269.     data[2] = y
  270.     data[3] = z
  271.     sendMessage(textutils.serialize(data))
  272. end
  273.  
  274. function setSpot(x,y,z)
  275.     clearArea()
  276.     local data = {}
  277.     data[0] = "setSpot"
  278.     data[1] = x
  279.     data[2] = y
  280.     data[3] = z
  281.     sendMessage(textutils.serialize(data))
  282. end
  283.  
  284. function setArea(x1,y1,z1,x2,y2,z2)
  285.     clearArea()
  286.     local data = {}
  287.     data[0] = "setArea"
  288.     data[1] = x1
  289.     data[2] = y1
  290.     data[3] = z1
  291.     data[4] = x2
  292.     data[5] = y2
  293.     data[6] = z2
  294.     sendMessage(textutils.serialize(data))
  295. end
  296.  
  297. function hasItem(itemName)
  298.     local data = {}
  299.     data[0] = "hasItem"
  300.     data[1] = itemName
  301.     sendMessage(textutils.serialize(data))
  302.     local id, message, distance, protocol = rednet.receive(5)
  303.     return(message)
  304. end
  305.  
  306. function inventoryImport(itemName)
  307.     local data = {}
  308.     data[0] = "inventoryImport"
  309.     data[1] = itemName
  310.     sendMessage(textutils.serialize(data))
  311. end
  312.  
  313. function inventoryExport(itemName)
  314.     local data = {}
  315.     data[0] = "inventoryExport"
  316.     data[1] = itemName
  317.     sendMessage(textutils.serialize(data))
  318. end
  319.  
  320. function showArea(show)
  321.     local data = {}
  322.     data[0] = "showArea"
  323.     data[1] = show
  324.     sendMessage(textutils.serialize(data))
  325. end
  326.  
  327. function clearArea()
  328.     local data = {}
  329.     data[0] = "clearArea"
  330.     sendMessage(textutils.serialize(data))
  331.     areaShown = false
  332.     showArea(areaShown)
  333. end
  334.  
  335. function pickup()
  336.     local data = {}
  337.     data[0] = "pickup"
  338.     sendMessage(textutils.serialize(data))
  339. end
  340.  
  341. function dig()
  342.     local data = {}
  343.     data[0] = "dig"
  344.     sendMessage(textutils.serialize(data))
  345. end
  346.  
  347. function place()
  348.     local data = {}
  349.     data[0] = "place"
  350.     sendMessage(textutils.serialize(data))
  351. end
  352.  
  353. function attack()
  354.     local data = {}
  355.     data[0] = "attack"
  356.     sendMessage(textutils.serialize(data))
  357. end
  358.  
  359.  
  360. function isDone()
  361.     local data = {}
  362.     data[0] = "isDone"
  363.     sendMessage(textutils.serialize(data))
  364.     local id, message, distance, protocol = rednet.receive(5)
  365.     return(message)
  366. end
  367.  
  368. function waitDone()
  369.     while not isDone() do
  370.         sleep(1)
  371.     end
  372. end
  373.  
  374. function hasPickaxe()
  375.     return(hasItem("minecraft:diamond_pickaxe"))
  376. end
  377.  
  378. function getPickaxe()
  379.     if chesty ~= 0 then
  380.         setSpot(chestx, chesty, chestz)
  381.         inventoryImport("minecraft:diamond_pickaxe")
  382.         setAreaGlobal()
  383.     else
  384.         button.label(1,20,"No Chest Location Set.")
  385.         sleep(1)
  386.     end
  387. end
  388.  
  389. function getItems()
  390.     if chesty ~= 0 then
  391.         setSpot(chestx, chesty, chestz)
  392.         inventoryImport("")
  393.         setAreaGlobal()
  394.     else
  395.         button.label(1,20,"No Chest Location Set.")
  396.         sleep(1)
  397.     end
  398. end
  399.  
  400. function dropItems()
  401.     if chesty ~= 0 then
  402.         setSpot(chestx, chesty, chestz)
  403.         inventoryExport("")
  404.         setAreaGlobal()
  405.     else
  406.         button.label(1,20,"No Chest Location Set.")
  407.         sleep(1)
  408.     end
  409. end
  410.  
  411. function tempShowArea()
  412.     showArea(true)
  413.     sleep(3)
  414.     showArea(false)
  415. end
  416.  
  417. function setRadius(xRad, zRad, yUp, yDown)
  418.    local x,y,z = gpsLocate()
  419.    x = x
  420.    y = y
  421.    print(x..y..z)
  422.    setArea(x-xRad, y-yDown, z-zRad, x+xRad, y+yUp, z+zRad)
  423.    tempShowArea()
  424. end
  425.  
  426. function setXYZ()
  427.    local x,y,z = gpsLocate()
  428.    x = x
  429.    y = y
  430.    
  431.    setArea(x-xRad, y-yDown, z-zRad, x+xRad, y+yUp, z+zRad)
  432.    
  433. end
  434.  
  435. function goHome()
  436.     local data = {}
  437.     data[0] = "goto"
  438.     data[1] = homex
  439.     data[2] = homey
  440.     data[3] = homez
  441.     sendMessage(textutils.serialize(data))
  442. end
  443.  
  444. function goTo()
  445.     local data = {}
  446.     data[0] = "goto"
  447.     data[1] = currx+setx
  448.     data[2] = curry+sety
  449.     data[3] = currz+setz
  450.     sendMessage(textutils.serialize(data))
  451. end
  452.  
  453. function displayScreen()
  454.     if menuType == "mainMenu" then
  455.         mainMenu()
  456.     elseif menuType == "xyzMenu" then
  457.         xyzMenu()
  458.     elseif menuType == "statusMenu" then
  459.         statusMenu()
  460.     end
  461.     local event, side, x, y
  462.     event, side, x, y = os.pullEvent()
  463.     while event ~= "mouse_click" do
  464.         event, side, x, y = os.pullEvent()
  465.     end
  466.     button.checkxy(x,y)
  467. end
  468.  
  469. while true do
  470.     displayScreen()
  471. end
  472.  
  473. --clearArea()  
  474. --dropItems()
  475. --getPickaxe()
  476. --setRadius(3,3,1,2)
  477. --dig()
  478. --waitDone()
  479. --clearArea()
  480. --setRadius(5,5,2,3)
  481. --pickup()
  482. --waitDone()
  483. --dropItems()
  484.  
  485. --comeHere()
Add Comment
Please, Sign In to add comment