maxsar

skan new render method

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