Advertisement
maxsar

skan new render method for monitor edition

Dec 21st, 2020
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.46 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. --manual
  55. posY = -1
  56. filename = "block_colors.txt"
  57. net = peripheral.find("modem")
  58. if net == nil then print("brakuje modemu!") os.exit() end
  59. monitor = peripheral.find("monitor")
  60. if monitor == nil then print("brakuje monitora!") os.exit() end
  61. port = 420
  62.  
  63. --auto
  64. blockID = {}
  65. colorID = {}
  66. screenSize = 0
  67. if fs.exists(filename) then
  68. print("file exist loading...")
  69. sleep(1)
  70.  
  71. file = fs.open(filename, "r")
  72. switch = true
  73. line = file.readLine()
  74. while line ~= nil do
  75. if switch then
  76. table.insert(blockID,line)
  77. print("wczytano: " ..line .." do blockID")
  78. switch = false
  79. else
  80. table.insert(colorID,line)
  81. term.setTextColor(charToColor(line))
  82. print("wczytano: " ..line .." do colorID")
  83. term.setTextColor(charToColor("0"))
  84. switch = true
  85. end
  86. line = file.readLine()
  87. end
  88. file.close()
  89. print("file loaded setting screen size...")
  90. sleep(1)
  91. end
  92.  
  93. --ustawia rozmiar ekranu
  94. net.open(port)
  95. event, side, port1, port2, msg = os.pullEvent( "modem_message" )
  96. for i, block in pairs(msg) do
  97. if block.x > screenSize then
  98. screenSize = block.x
  99. end
  100. end
  101. print("screen size: " ..screenSize)
  102. sleep(1)
  103. print("starting scanning!")
  104. sleep(1)
  105.  
  106. colorText = {{},{}} -- x , y , colorZnaku , colorTla , znak
  107. colorBack = {{},{}}
  108. znakBuffer = {{},{}}
  109.  
  110. for i = 1, screenSize * 4 do
  111. colorText[i] = {} -- create a new row
  112. for j=1,screenSize * 4 do
  113. colorText[i][j] = colors.black
  114. end
  115. end
  116.  
  117. for i = 1, screenSize * 4 do
  118. colorBack[i] = {} -- create a new row
  119. for j=1,screenSize * 4 do
  120. colorBack[i][j] = colors.black
  121. end
  122. end
  123.  
  124. for i = 1, screenSize * 4 do
  125. znakBuffer[i] = {} -- create a new row
  126. for j=1,screenSize * 4 do
  127. znakBuffer[i][j] = ""
  128. end
  129. end
  130.  
  131.  
  132.  
  133.  
  134. term.clear()
  135. tempBlockID = ""
  136. while true do
  137. event, side, port1, port2, msg = os.pullEvent( "modem_message" )
  138.  
  139. for i, block in pairs(msg) do
  140.  
  141. --evenevenlower
  142. if block.name ~= "minecraft:air" and block.y == posY - 2 then
  143. tempBlockID = ""
  144. for o, line in pairs(blockID) do
  145. if block.name == blockID[o] then
  146. tempBlockID = o
  147. end
  148. end
  149.  
  150. if tempBlockID ~= "" then
  151. --print(tostring(block.x + screenSize + 1) .." , " ..tostring(block.y + screenSize + 1))
  152. colorText[block.x + screenSize + 1][block.z + screenSize + 1] = charToColor(colorID[tempBlockID])
  153. colorBack[block.x + screenSize + 1][block.z + screenSize + 1] = colors.black
  154. znakBuffer[block.x + screenSize + 1][block.z + screenSize + 1] = "\127"
  155. end
  156. end
  157.  
  158. --evelower
  159. if block.name ~= "minecraft:air" and block.y == posY - 1 then
  160. tempBlockID = ""
  161. for o, line in pairs(blockID) do
  162. if block.name == blockID[o] then
  163. tempBlockID = o
  164. end
  165. end
  166.  
  167. if tempBlockID ~= "" then
  168. colorText[block.x + screenSize + 1][block.z + screenSize + 1] = colors.black
  169. colorBack[block.x + screenSize + 1][block.z + screenSize + 1] = charToColor(colorID[tempBlockID])
  170. znakBuffer[block.x + screenSize + 1][block.z + screenSize + 1] = "\127"
  171. else
  172. colorText[block.x + screenSize + 1][block.z + screenSize + 1] = colors.red
  173. colorBack[block.x + screenSize + 1][block.z + screenSize + 1] = colors.black
  174. znakBuffer[block.x + screenSize + 1][block.z + screenSize + 1] = "\191"
  175. end
  176. end
  177.  
  178. --floor
  179.  
  180. if block.name ~= "minecraft:air" and block.y == posY then
  181. tempBlockID = ""
  182. for o, line in pairs(blockID) do
  183. if block.name == blockID[o] then
  184. tempBlockID = o
  185. end
  186. end
  187.  
  188. if tempBlockID ~= "" then
  189. colorText[block.x + screenSize + 1][block.z + screenSize + 1] = colors.gray
  190. colorBack[block.x + screenSize + 1][block.z + screenSize + 1] = charToColor(colorID[tempBlockID])
  191. znakBuffer[block.x + screenSize + 1][block.z + screenSize + 1] = "\127"
  192. else
  193. colorText[block.x + screenSize + 1][block.z + screenSize + 1] = colors.red
  194. colorBack[block.x + screenSize + 1][block.z + screenSize + 1] = colors.black
  195. znakBuffer[block.x + screenSize + 1][block.z + screenSize + 1] = "?"
  196. end
  197. end
  198.  
  199. --walls
  200. if block.name ~= "minecraft:air" and block.y == posY + 1 then
  201. tempBlockID = ""
  202. for o, line in pairs(blockID) do
  203. if block.name == blockID[o] then
  204. tempBlockID = o
  205. end
  206. end
  207.  
  208. if tempBlockID ~= "" then
  209. colorText[block.x + screenSize + 1][block.z + screenSize + 1] = colors.white
  210. colorBack[block.x + screenSize + 1][block.z + screenSize + 1] = charToColor(colorID[tempBlockID])
  211. znakBuffer[block.x + screenSize + 1][block.z + screenSize + 1] = "\127"
  212. else
  213. colorText[block.x + screenSize + 1][block.z + screenSize + 1] = colors.red
  214. colorBack[block.x + screenSize + 1][block.z + screenSize + 1] = colors.black
  215. znakBuffer[block.x + screenSize + 1][block.z + screenSize + 1] = "X"
  216. end
  217. end
  218.  
  219. --walls +1
  220. if block.name ~= "minecraft:air" and block.y == posY + 2 then
  221. tempBlockID = ""
  222. for o, line in pairs(blockID) do
  223. if block.name == blockID[o] then
  224. tempBlockID = o
  225. end
  226. end
  227.  
  228. if tempBlockID ~= "" then
  229. colorText[block.x + screenSize + 1][block.z + screenSize + 1] = colors.black
  230. colorBack[block.x + screenSize + 1][block.z + screenSize + 1] = charToColor(colorID[tempBlockID])
  231. znakBuffer[block.x + screenSize + 1][block.z + screenSize + 1] = " "
  232. else
  233. colorText[block.x + screenSize + 1][block.z + screenSize + 1] = colors.red
  234. colorBack[block.x + screenSize + 1][block.z + screenSize + 1] = colors.black
  235. znakBuffer[block.x + screenSize + 1][block.z + screenSize + 1] = "X"
  236. end
  237. end
  238.  
  239. end
  240.  
  241. --pozycja gracza
  242. if colorBack[screenSize + 1][screenSize + 1] == colors.white then
  243. colorText[screenSize + 1][screenSize + 1] = colors.black
  244. else
  245. colorText[screenSize + 1][screenSize + 1] = colors.white
  246. end
  247. znakBuffer[screenSize + 1][screenSize + 1] = "\2"
  248. --RYSOWANIE
  249.  
  250. for i = 1, screenSize * 4, 1 do
  251. for o = 1, screenSize * 4, 1 do
  252. monitor.setCursorPos(i,o)
  253. monitor.setBackgroundColor(colorBack[i][o])
  254. monitor.setTextColor(colorText[i][o])
  255. monitor.write(znakBuffer[i][o])
  256. end
  257. end
  258.  
  259. --CZYSZCZENIE BUFFERA
  260. for i = 1, screenSize * 4 do
  261. for j=1,screenSize * 4 do
  262. colorText[i][j] = colors.black
  263. end
  264. end
  265.  
  266. for i = 1, screenSize * 4 do
  267. for j=1,screenSize * 4 do
  268. colorBack[i][j] = colors.black
  269. end
  270. end
  271.  
  272. for i = 1, screenSize * 4 do
  273. for j=1,screenSize * 4 do
  274. znakBuffer[i][j] = " "
  275. end
  276. end
  277.  
  278. --sleep(0.2)
  279. end
  280.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement