maxsar

WATCHER

Dec 22nd, 2020 (edited)
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.86 KB | None | 0 0
  1. function charToColor(code)
  2. if code == "0" then
  3. return colors.white
  4. elseif code == "1" then
  5. return colors.orange
  6. elseif code == "2" then
  7. return colors.magenta
  8. elseif code == "3" then
  9. return colors.lightBlue
  10. elseif code == "4" then
  11. return colors.yellow
  12. elseif code == "5" then
  13. return colors.lime
  14. elseif code == "6" then
  15. return colors.pink
  16. elseif code == "7" then
  17. return colors.gray
  18. elseif code == "8" then
  19. return colors.lightGray
  20. elseif code == "9" then
  21. return colors.cyan
  22. elseif code == "a" then
  23. return colors.purple
  24. elseif code == "b" then
  25. return colors.blue
  26. elseif code == "c" then
  27. return colors.brown
  28. elseif code == "d" then
  29. return colors.green
  30. elseif code == "e" then
  31. return colors.red
  32. elseif code == "f" then
  33. return colors.black
  34. else
  35. return nil
  36. end
  37. end
  38.  
  39. function drawPixel(x,y,color)
  40. term.setCursorPos(x,y)
  41. term.setBackgroundColor(color)
  42. write(" ")
  43. end
  44.  
  45. function pixel(color,ch)
  46. term.setBackgroundColor(color)
  47. write(ch)
  48. end
  49.  
  50.  
  51. term.clear()
  52. term.setCursorPos(1,1)
  53.  
  54. allOK = false
  55. --manual
  56. posY = -1
  57. filename = "block_colors.txt"
  58. net = peripheral.find("modem")
  59. monitor = peripheral.find("monitor")
  60. if net == nil then print("brakuje modemu!") allOK = false else allOK = true end
  61. port = 420
  62.  
  63. --auto
  64. blockID = {}
  65. colorID = {}
  66. screenSize = 0
  67. if not fs.exists(filename) then shell.run("pastebin","get","fyejyf1z",filename) end
  68. if fs.exists(filename) then
  69. print("file exist loading...")
  70. sleep(1)
  71.  
  72. file = fs.open(filename, "r")
  73. switch = true
  74. line = file.readLine()
  75. while line ~= nil do
  76. if switch then
  77. table.insert(blockID,line)
  78. print("wczytano: " ..line .." do blockID")
  79. switch = false
  80. else
  81. table.insert(colorID,line)
  82. term.setTextColor(charToColor(line))
  83. print("wczytano: " ..line .." do colorID")
  84. term.setTextColor(charToColor("0"))
  85. switch = true
  86. end
  87. line = file.readLine()
  88. end
  89. file.close()
  90. print("file loaded setting screen size...")
  91. sleep(1)
  92. end
  93.  
  94. --ustawia rozmiar ekranu
  95. net.open(port)
  96. event, side, port1, port2, msg = os.pullEvent( "modem_message" )
  97. for i, block in pairs(msg) do
  98. if block.x > screenSize then
  99. screenSize = block.x
  100. end
  101. end
  102. print("screen size: " ..screenSize)
  103. sleep(1)
  104. print("starting scanning!")
  105. sleep(1)
  106.  
  107. colorText = {{},{}} -- x , y , colorZnaku , colorTla , znak
  108. colorBack = {{},{}}
  109. znakBuffer = {{},{}}
  110.  
  111. for i = 1, screenSize * 4 do
  112. colorText[i] = {} -- create a new row
  113. for j=1,screenSize * 4 do
  114. colorText[i][j] = colors.black
  115. end
  116. end
  117.  
  118. for i = 1, screenSize * 4 do
  119. colorBack[i] = {} -- create a new row
  120. for j=1,screenSize * 4 do
  121. colorBack[i][j] = colors.black
  122. end
  123. end
  124.  
  125. for i = 1, screenSize * 4 do
  126. znakBuffer[i] = {} -- create a new row
  127. for j=1,screenSize * 4 do
  128. znakBuffer[i][j] = ""
  129. end
  130. end
  131.  
  132.  
  133.  
  134.  
  135. term.clear()
  136. tempBlockID = ""
  137. while true do
  138. event, side, port1, port2, msg = os.pullEvent( "modem_message" )
  139.  
  140. for i, block in pairs(msg) do
  141.  
  142. --evenevenlower
  143. if block.name ~= "minecraft:air" and block.y == posY - 2 then
  144. tempBlockID = ""
  145. for o, line in pairs(blockID) do
  146. if string.find(block.name,blockID[o]) ~= nil then
  147. tempBlockID = o
  148. end
  149. end
  150.  
  151. if tempBlockID ~= "" then
  152. --print(tostring(block.x + screenSize + 1) .." , " ..tostring(block.y + screenSize + 1))
  153. colorText[block.x + screenSize + 1][block.z + screenSize + 1] = charToColor(colorID[tempBlockID])
  154. colorBack[block.x + screenSize + 1][block.z + screenSize + 1] = colors.black
  155. znakBuffer[block.x + screenSize + 1][block.z + screenSize + 1] = "\127"
  156. end
  157. end
  158.  
  159. --evelower
  160. if block.name ~= "minecraft:air" and block.y == posY - 1 then
  161. tempBlockID = ""
  162. for o, line in pairs(blockID) do
  163. if string.find(block.name,blockID[o]) ~= nil then
  164. tempBlockID = o
  165. end
  166. end
  167.  
  168. if tempBlockID ~= "" then
  169. colorText[block.x + screenSize + 1][block.z + screenSize + 1] = colors.black
  170. colorBack[block.x + screenSize + 1][block.z + screenSize + 1] = charToColor(colorID[tempBlockID])
  171. znakBuffer[block.x + screenSize + 1][block.z + screenSize + 1] = "\127"
  172. else
  173. colorText[block.x + screenSize + 1][block.z + screenSize + 1] = colors.red
  174. colorBack[block.x + screenSize + 1][block.z + screenSize + 1] = colors.black
  175. znakBuffer[block.x + screenSize + 1][block.z + screenSize + 1] = "\191"
  176. end
  177. end
  178.  
  179. --floor
  180.  
  181. if block.name ~= "minecraft:air" and block.y == posY then
  182. tempBlockID = ""
  183. for o, line in pairs(blockID) do
  184. if string.find(block.name,blockID[o]) ~= nil then
  185. tempBlockID = o
  186. end
  187. end
  188.  
  189. if tempBlockID ~= "" then
  190. colorText[block.x + screenSize + 1][block.z + screenSize + 1] = colors.gray
  191. colorBack[block.x + screenSize + 1][block.z + screenSize + 1] = charToColor(colorID[tempBlockID])
  192. znakBuffer[block.x + screenSize + 1][block.z + screenSize + 1] = "\127"
  193. else
  194. colorText[block.x + screenSize + 1][block.z + screenSize + 1] = colors.red
  195. colorBack[block.x + screenSize + 1][block.z + screenSize + 1] = colors.black
  196. znakBuffer[block.x + screenSize + 1][block.z + screenSize + 1] = "?"
  197. end
  198. end
  199.  
  200. --walls
  201. if block.name ~= "minecraft:air" and block.y == posY + 1 then
  202. tempBlockID = ""
  203. for o, line in pairs(blockID) do
  204. if string.find(block.name,blockID[o]) ~= nil then
  205. tempBlockID = o
  206. end
  207. end
  208.  
  209. if tempBlockID ~= "" then
  210. colorText[block.x + screenSize + 1][block.z + screenSize + 1] = colors.white
  211. colorBack[block.x + screenSize + 1][block.z + screenSize + 1] = charToColor(colorID[tempBlockID])
  212. znakBuffer[block.x + screenSize + 1][block.z + screenSize + 1] = "\127"
  213. else
  214. colorText[block.x + screenSize + 1][block.z + screenSize + 1] = colors.red
  215. colorBack[block.x + screenSize + 1][block.z + screenSize + 1] = colors.black
  216. znakBuffer[block.x + screenSize + 1][block.z + screenSize + 1] = "X"
  217. end
  218. end
  219.  
  220. --walls +1
  221. if block.name ~= "minecraft:air" and block.y == posY + 2 then
  222. tempBlockID = ""
  223. for o, line in pairs(blockID) do
  224. if string.find(block.name,blockID[o]) ~= nil then
  225. tempBlockID = o
  226. end
  227. end
  228.  
  229. if tempBlockID ~= "" then
  230. colorText[block.x + screenSize + 1][block.z + screenSize + 1] = colors.black
  231. colorBack[block.x + screenSize + 1][block.z + screenSize + 1] = charToColor(colorID[tempBlockID])
  232. znakBuffer[block.x + screenSize + 1][block.z + screenSize + 1] = " "
  233. else
  234. colorText[block.x + screenSize + 1][block.z + screenSize + 1] = colors.red
  235. colorBack[block.x + screenSize + 1][block.z + screenSize + 1] = colors.black
  236. znakBuffer[block.x + screenSize + 1][block.z + screenSize + 1] = "X"
  237. end
  238. end
  239.  
  240. end
  241.  
  242. --pozycja gracza
  243. if colorBack[screenSize + 1][screenSize + 1] == colors.white then
  244. colorText[screenSize + 1][screenSize + 1] = colors.black
  245. else
  246. colorText[screenSize + 1][screenSize + 1] = colors.white
  247. end
  248. znakBuffer[screenSize + 1][screenSize + 1] = "\2"
  249. --RYSOWANIE
  250. if(monitor == nil) then
  251. for i = 1, screenSize * 4, 1 do
  252. for o = 1, screenSize * 4, 1 do
  253. term.setCursorPos(i,o)
  254. term.setBackgroundColor(colorBack[i][o])
  255. term.setTextColor(colorText[i][o])
  256. write(znakBuffer[i][o])
  257. end
  258. end
  259. else
  260. for i = 1, screenSize * 4, 1 do
  261. for o = 1, screenSize * 4, 1 do
  262. monitor.setCursorPos(i,o)
  263. monitor.setBackgroundColor(colorBack[i][o])
  264. monitor.setTextColor(colorText[i][o])
  265. monitor.write(znakBuffer[i][o])
  266. end
  267. end
  268. end
  269. --CZYSZCZENIE BUFFERA
  270. for i = 1, screenSize * 4 do
  271. for j=1,screenSize * 4 do
  272. colorText[i][j] = colors.black
  273. end
  274. end
  275.  
  276. for i = 1, screenSize * 4 do
  277. for j=1,screenSize * 4 do
  278. colorBack[i][j] = colors.black
  279. end
  280. end
  281.  
  282. for i = 1, screenSize * 4 do
  283. for j=1,screenSize * 4 do
  284. znakBuffer[i][j] = " "
  285. end
  286. end
  287.  
  288. --sleep(0.2)
  289. end
Add Comment
Please, Sign In to add comment