Advertisement
zeplintwo

portal dw20RTB

Jan 27th, 2014
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.43 KB | None | 0 0
  1. -- pastebin get gsrnJ0XP portal
  2. os.loadAPI("button")
  3. m = peripheral.wrap("left")
  4. m.clear()
  5. rednet.open("bottom")
  6. local names = {}
  7. local turtles = {}
  8. local remove = false
  9.  
  10. function fillTurtles()
  11. turtles[1] = 5
  12. turtles[2] = 6
  13. turtles[3] = 7
  14. end
  15.  
  16. function fillTable()
  17. m.clear()
  18. button.clearTable()
  19. local numNames = 0
  20. local col = 2
  21. local row = 12
  22. local countRow = 1
  23. for turt, data in pairs(names) do
  24. for slot, name in pairs(data) do
  25. if countRow % 2 ~= 0 then
  26. row = 12-(countRow-1)
  27. else
  28. row = 12+(countRow)
  29. end
  30. names[turt][slot] = string.sub(name, 0, 10)
  31. button.setTable(string.sub(name, 0, 10), runStuff, turt..":"..slot, col, col+10, row, row)
  32. if col == 26 then
  33. col = 2
  34. countRow = countRow + 1
  35. else
  36. col = col+12
  37. end
  38. end
  39. --col = col+12
  40. end
  41. button.setTable("Rescan Turtles", checkNames, "", 20, 35, 26, 26)
  42. button.setTable("Remove Book", removeIt, "", 3, 18, 26, 26)
  43. button.screen()
  44. end
  45.  
  46. function getNames()
  47. names = {}
  48. for x, y in pairs(turtles) do
  49. names[y] = {}
  50. rednet.send(y, "getNames")
  51. local id, msg, dist = rednet.receive(2)
  52. -- print(msg)
  53. names[y] = textutils.unserialize(msg)
  54. end
  55. end
  56.  
  57. function removeIt()
  58. remove = not remove
  59. -- print(remove)
  60. button.toggleButton("Remove Book")
  61. end
  62.  
  63. function runStuff(info)
  64. if remove == true then
  65. removeBook(info)
  66. else
  67. openPortal(info)
  68. end
  69. end
  70.  
  71. function removeBook(info)
  72. local turt, slot = string.match(info, "(%d+):(%d+)")
  73. button.toggleButton(names[tonumber(turt)][tonumber(slot)])
  74. data = "remove"..tostring(slot)
  75. rednet.send(tonumber(turt), data)
  76. rednet.receive()
  77. button.toggleButton(names[tonumber(turt)][tonumber(slot)])
  78. remove=false
  79. button.toggleButton("Remove Book")
  80. sleep(4)
  81. checkNames()
  82. end
  83.  
  84. function openPortal(info)
  85. local turt,slot = string.match(info, "(%d+):(%d+)")
  86. -- print(names[tonumber(turt)][tonumber(slot)])
  87. button.toggleButton(names[tonumber(turt)][tonumber(slot)])
  88. print(names[tonumber(turt)][tonumber(slot)])
  89. data = "books"..tostring(slot)
  90. rednet.send(tonumber(turt), data)
  91. rednet.receive()
  92. button.toggleButton(names[tonumber(turt)][tonumber(slot)])
  93. end
  94.  
  95. function checkNames()
  96. button.flash("Rescan Turtles")
  97. for num, turt in pairs(turtles) do
  98. rednet.send(turt, "checkSlots")
  99. msg = ""
  100. while msg ~= "done" do
  101. id, msg, dist = rednet.receive()
  102. if msg == "getName" then
  103. m.clear()
  104. m.setCursorPos(5, 12)
  105. m.write("New book detected.")
  106. m.setCursorPos(5, 14)
  107. m.write("Please enter the name")
  108. m.setCursorPos(5, 16)
  109. m.write("On the computer")
  110. m.setCursorPos(5, 18)
  111. m.write("---->>")
  112. term.clear()
  113. term.write("Please enter a name for the new book: ")
  114. name = read()
  115. rednet.send(id, name)
  116. end
  117. end
  118. end
  119. getNames()
  120. fillTable()
  121. end
  122.  
  123. function getClick()
  124. event, side, x,y = os.pullEvent()
  125. if event == "monitor_touch" then
  126. button.checkxy(x,y)
  127. elseif event == "redstone" then
  128. print("redstone")
  129. sleep(6)
  130. checkNames()
  131. end
  132. end
  133.  
  134. fillTurtles()
  135. getNames()
  136. fillTable()
  137.  
  138. while true do
  139. getClick()
  140. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement