Rahph

DC2

Jun 30th, 2017
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --Written by rahph and Cobra_Tomtrein
  2. --Send nukes I mean nudes
  3. --Anyway, config
  4. local sV = "Release 1.12pr1"
  5. local tape0 = peripheral.wrap("tape_drive_3")
  6. local tape1 = peripheral.wrap("tape_drive_0")
  7. local tape2 = peripheral.wrap("tape_drive_2")
  8. local tape3 = peripheral.wrap("tape_drive_1")
  9. local floor = peripheral.wrap("monitor_17")
  10. local lampData = {}
  11. local discoApiPath = "/disco/disco.api"
  12. local monitorName = ""
  13.  
  14.  
  15. --End config. Dont alter the program beyond this line unless you know what ya doin
  16. local oldwrite = nil
  17. local oldbg = nil
  18. local oldfg = nil
  19. local lampConnected = 0
  20. local function rewrite()
  21. oldwrite = mon.write
  22. oldbg = mon.setBackgroundColor
  23. oldfg = mon.setTextColor
  24. mon.write = function(text) oldwrite(text) sleep(0.05) end
  25. mon.setBackgroundColor = function(col) oldbg(col) sleep(0.05) end
  26. mon.setTextColor = function(col) oldfg(col) sleep(0.05) end
  27. end
  28. local function play(id)
  29. if id == 1 then tape0.play() end
  30. if id == 2 then tape1.play() end
  31. if id == 3 then tape2.play() end
  32. if id == 4 then tape3.play() end
  33. end
  34. local err = {}
  35. err["mt"] = {}
  36. err["lt"] = {}
  37. function errorReport()
  38.  
  39. mon.setTextScale(0.5)
  40. x,y = mon.getSize()
  41. mon.setPaletteColor(colors.blue,0x0000FF)
  42. mon.setPaletteColor(colors.white,0xFFFFFF)
  43. mon.clear()
  44. mon.setBackgroundColor(colors.blue)
  45. mon.clear()
  46. mon.setTextColor(colors.white)
  47. mon.setCursorPos(1,2)
  48. mon.setPaletteColor(colors.gray,0x99AAB5)
  49. mon.setTextColor(colors.gray)
  50. for i=1,x do mon.write("\127") end
  51. mon.setCursorPos(1,1)
  52. for i=1,x do mon.write("\127") end
  53. mon.setCursorPos(1,3)
  54. for i=1,x do mon.write("\127") end
  55. mon.setTextColor(colors.white)
  56. mon.setCursorPos((x-16)/2+1,2)
  57. mon.write(" DISCO CONTROLL ")
  58. mon.setCursorPos(3,4)
  59. mon.write("The program has ran into an issue")
  60. mon.setCursorPos(3,5)
  61. mon.write("The following is an error report given to us.")
  62. mon.setCursorPos(3,6)
  63. if err["mt"][1] ~= nil then
  64. mon.write(err["mt"][2] .. " @ Main thread")
  65. end
  66. if err["lt"][1] ~= nil then
  67. mon.write(err["lt"][2] .. " @ Lamp thread")
  68. end
  69. mon.setCursorPos(3,y-1)
  70. mon.write("Thats all we know")
  71. mon.setCursorPos(3,9)
  72. mon.write("Dumping report...")
  73. mon.setCursorPos(3,10)
  74. fname = "DiscoCrash" .. "-" .. os.day() .. "-" .. textutils.formatTime(os.time())
  75. mon.write("File name: " .. fname)
  76. mon.setCursorPos(3,11)
  77. mon.write("[##")
  78. oFile = fs.open(fname,"w")
  79. mon.write("####")
  80. oFile.write(textutils.serialise(err))
  81. mon.write("######")
  82. oFile.flush()
  83. mon.write("###")
  84. oFile.close()
  85. mon.write("###]")
  86. mon.setCursorPos(3,12)
  87. mon.write("Thats all we know")
  88. mon.setCursorPos(3,y-1)
  89. mon.write("Restarting in 10 seconds")
  90. mon.setCursorPos(1,y)
  91. for i=1,x do sleep(10/x) mon.write("X") end
  92. end
  93. local function rewind(id)
  94. if id == 1 then tape0.seek(-tape0.getSize()) end
  95. if id == 2 then tape1.seek(-tape1.getSize()) end
  96. if id == 3 then tape2.seek(-tape2.getSize()) end
  97. if id == 4 then tape3.seek(-tape3.getSize()) end
  98. end
  99.  
  100. local function pause(id)
  101. if id == 1 then tape0.stop() end
  102. if id == 2 then tape1.stop() end
  103. if id == 3 then tape2.stop() end
  104. if id == 4 then tape3.stop() end
  105. end
  106.  
  107. local function round(num, n)
  108. local mult = 10^(n or 0)
  109. return math.floor(num * mult + 0.5) / mult
  110. end
  111. mon = peripheral.wrap("top")
  112. --rewrite()
  113. function redraw(vol,speed,light)
  114.  
  115. mon.setTextScale(1)
  116. x,y = mon.getSize()
  117. local objloc = {}
  118. objloc["tape"] = {}
  119. objloc.tape[1] = {}
  120. objloc.tape[1]["volume"] = {up=0,down=0}
  121. objloc.tape[1]["speed"] = {up=0,down=0}
  122. objloc.tape[1]["ctrlr"] = {0,0}
  123. objloc.tape[2] = {}
  124. objloc.tape[2]["volume"] = {up=0,down=0}
  125. objloc.tape[2]["speed"] = {up=0,down=0}
  126. objloc.tape[2]["ctrlr"] = {0,0}
  127. objloc.tape[3] = {}
  128. objloc.tape[3]["volume"] = {up=0,down=0}
  129. objloc.tape[3]["speed"] = {up=0,down=0}
  130. objloc.tape[3]["ctrlr"] = {0,0}
  131. objloc.tape[4] = {}
  132. objloc.tape[4]["volume"] = {up=0,down=0}
  133. objloc.tape[4]["speed"] = {up=0,down=0}
  134. objloc.tape[4]["ctrlr"] = {0,0}
  135. objloc.tape[1]["ctrlr"]["back"] = {4,4}
  136. objloc.tape[1]["ctrlr"]["stop"] = {4,5}
  137. objloc.tape[1]["ctrlr"]["play"] = {4,6}
  138. objloc.tape[2]["ctrlr"]["back"] = {28,4}
  139. objloc.tape[2]["ctrlr"]["stop"] = {28,5}
  140. objloc.tape[2]["ctrlr"]["play"] = {28,6}
  141. objloc.tape[3]["ctrlr"]["back"] = {4,11}
  142. objloc.tape[3]["ctrlr"]["stop"] = {4,12}
  143. objloc.tape[3]["ctrlr"]["play"] = {4,13}
  144. objloc.tape[4]["ctrlr"]["back"] = {28,11}
  145. objloc.tape[4]["ctrlr"]["stop"] = {28,12}
  146. objloc.tape[4]["ctrlr"]["play"] = {28,13}
  147. objloc.light = {}
  148.  
  149. mon.setPaletteColor(colors.blue,0x23272A)
  150. mon.setPaletteColor(colors.white,0xFFFFFF)
  151. mon.clear()
  152. mon.setBackgroundColor(colors.blue)
  153. mon.clear()
  154. mon.setTextColor(colors.white)
  155. mon.setCursorPos(1,2)
  156. mon.setPaletteColor(colors.gray,0x99AAB5)
  157. mon.setTextColor(colors.gray)
  158. for i=1,x do mon.write("\127") end
  159. mon.setCursorPos(1,1)
  160. for i=1,x do mon.write("\127") end
  161. mon.setCursorPos(1,3)
  162. for i=1,x do mon.write("\127") end
  163. mon.setTextColor(colors.white)
  164. mon.setCursorPos((x-16)/2+1,2)
  165. mon.write(" DISCO CONTROLL ")
  166. mon.setCursorPos(((x/2)-6)/2,4)
  167. mon.write("TAPE 0")
  168. mon.setCursorPos(4,4)
  169. mon.write("\17")
  170. mon.setCursorPos(4,5)
  171. mon.write("\143")
  172. mon.setCursorPos(4,6)
  173. mon.write("\16")
  174. mon.setCursorPos((((x/2)-6)/2)+(x/2),4)
  175. mon.write("TAPE 1")
  176. mon.setCursorPos(28,4)
  177. mon.write("\17")
  178. mon.setCursorPos(28,5)
  179. mon.write("\143")
  180. mon.setCursorPos(28,6)
  181. mon.write("\16")
  182. mon.setCursorPos(((x/2)-6)/2,11)
  183. mon.write("TAPE 2")
  184. mon.setCursorPos(4,11)
  185. mon.write("\17")
  186. mon.setCursorPos(4,12)
  187. mon.write("\143")
  188. mon.setCursorPos(4,13)
  189. mon.write("\16")
  190. mon.setCursorPos((((x/2)-6)/2)+(x/2),11)
  191. mon.write("TAPE 3")
  192. mon.setCursorPos(28,11)
  193. mon.write("\17")
  194. mon.setCursorPos(28,12)
  195. mon.write("\143")
  196. mon.setCursorPos(28,13)
  197. mon.write("\16")
  198. mon.setTextColor(colors.gray)
  199. for i=4,y do mon.setCursorPos(25,i) mon.write("\127\127") end
  200. mon.setTextColor(colors.white)
  201. objloc.light = {((x/2)-10/2)+9,18}
  202. if lampConnected == 1 then
  203. mon.setCursorPos((x/2)-10/2,18)
  204. mon.write("LIGHTS [")
  205. if light == 0 then mon.setTextColor(colors.red) mon.write("X") mon.setTextColor(colors.white) end
  206. if light == 1 then mon.setTextColor(colors.orange) mon.write("-") mon.setTextColor(colors.white) end
  207. if light == 2 then mon.setTextColor(colors.lime) mon.write("V") mon.setTextColor(colors.white) end
  208. mon.write("]")
  209. else
  210. mon.setCursorPos((x/2)-15/2,18)
  211. mon.write("NO LIGHTS FOUND")
  212. end
  213. mon.setTextColor(colors.gray)
  214. mon.setCursorPos(1,19)
  215. for i=1,x do mon.write("\127") end
  216. for i=1,y do mon.setCursorPos(1,i) mon.write("\127\127") end
  217. for i=1,y do mon.setCursorPos(x-1,i) mon.write("\127\127") end
  218. mon.setCursorPos(1,10)
  219. --for i=1,x do mon.write("\127") end
  220. --mon.setCursorPos(1,11)
  221. for i=1,x do mon.write("\127") end
  222. mon.setCursorPos(1,17)
  223. for i=1,x do mon.write("\127") end
  224. mon.setCursorPos(x-#sV+1,y)
  225. mon.write(sV)
  226. mon.setCursorPos(((x/2)-6)/2,6)
  227. mon.write("VOLUME")
  228. mon.setCursorPos(((x/2)-6)/2,8)
  229. mon.write("SPEED:")
  230. mon.setCursorPos((((x/2)-6)/2)+(x/2),6)
  231. mon.write("VOLUME")
  232. mon.setCursorPos((((x/2)-6)/2)+(x/2),8)
  233. mon.write("SPEED:")
  234. mon.setCursorPos(((x/2)-6)/2,13)
  235. mon.write("VOLUME")
  236. mon.setCursorPos(((x/2)-6)/2,15)
  237. mon.write("SPEED:")
  238. mon.setCursorPos((((x/2)-6)/2)+(x/2),13)
  239. mon.write("VOLUME")
  240. mon.setCursorPos((((x/2)-6)/2)+(x/2),15)
  241. mon.write("SPEED:")
  242. mon.setBackgroundColor(colors.white)
  243. objloc.tape[1].volume.down = {((x/2)-8)/2-0.5,7}
  244. objloc.tape[1].volume.up = {objloc.tape[1].volume.down[1] + 7,7}
  245. mon.setPaletteColor(colors.yellow,0x7289DA)
  246. mon.setBackgroundColor(colors.yellow)
  247. mon.setTextColor(colors.white)
  248. mon.setCursorPos(objloc.tape[1].volume.down[1],7)
  249. mon.write("\171 \187")
  250. mon.setBackgroundColor(colors.white)
  251. mon.setTextColor(colors.black)
  252. mon.setCursorPos(((x/2)-6)/2,7)
  253. mon.write(" ")
  254. if #tostring(vol[1]) % 2 == 1 then
  255. mon.setCursorPos(((x/2)-#tostring(vol[1]))/2-1,7)
  256. else
  257. mon.setCursorPos(((x/2)-#tostring(vol[1]))/2,7)
  258. end
  259. mon.write(vol[1])
  260. mon.setBackgroundColor(colors.white)
  261. objloc.tape[1].speed.down = {((x/2)-8)/2-0.5,9}
  262. objloc.tape[1].speed.up = {objloc.tape[1].speed.down[1] + 7,9}
  263. mon.setPaletteColor(colors.yellow,0x7289DA)
  264. mon.setBackgroundColor(colors.yellow)
  265. mon.setTextColor(colors.white)
  266. mon.setCursorPos(objloc.tape[1].speed.down[1],9)
  267. mon.write("\171 \187")
  268. mon.setBackgroundColor(colors.white)
  269. mon.setTextColor(colors.black)
  270. mon.setCursorPos(((x/2)-6)/2,9)
  271. mon.write(" ")
  272. if #tostring(speed[1]) % 2 == 1 then
  273. mon.setCursorPos(((x/2)-#tostring(speed[1]))/2-1,9)
  274. else
  275. mon.setCursorPos(((x/2)-#tostring(speed[1]))/2,9)
  276. end
  277. mon.write(speed[1])
  278.  
  279. mon.setBackgroundColor(colors.white)
  280. objloc.tape[2].volume.down = {(((x/2)-8)/2)+(x/2)-0.5,7}
  281. objloc.tape[2].volume.up = {objloc.tape[2].volume.down[1] + 7,7}
  282. mon.setPaletteColor(colors.yellow,0x7289DA)
  283. mon.setBackgroundColor(colors.yellow)
  284. mon.setTextColor(colors.white)
  285. mon.setCursorPos(objloc.tape[2].volume.down[1],7)
  286. mon.write("\171 \187")
  287. mon.setBackgroundColor(colors.white)
  288. mon.setTextColor(colors.black)
  289. mon.setCursorPos((((x/2)-6)/2)+(x/2),7)
  290. mon.write(" ")
  291. if #tostring(vol[2]) % 2 == 1 then
  292. mon.setCursorPos((((x/2)-#tostring(vol[2]))/2-1)+(x/2),7)
  293. else
  294. mon.setCursorPos((((x/2)-#tostring(vol[2]))/2)+(x/2),7)
  295. end
  296. mon.write(vol[2])
  297.  
  298. mon.setBackgroundColor(colors.white)
  299. objloc.tape[2].speed.down = {(((x/2)-8)/2)+(x/2)-0.5,9}
  300. objloc.tape[2].speed.up = {objloc.tape[2].speed.down[1] + 7,9}
  301. mon.setPaletteColor(colors.yellow,0x7289DA)
  302. mon.setBackgroundColor(colors.yellow)
  303. mon.setTextColor(colors.white)
  304. mon.setCursorPos(objloc.tape[2].speed.down[1],9)
  305. mon.write("\171 \187")
  306. mon.setBackgroundColor(colors.white)
  307. mon.setTextColor(colors.black)
  308. mon.setCursorPos((((x/2)-6)/2+(x/2)),9)
  309. mon.write(" ")
  310. if #tostring(speed[2]) % 2 == 1 then
  311. mon.setCursorPos((((x/2)-#tostring(speed[2]))/2-1)+(x/2),9)
  312. else
  313. mon.setCursorPos((((x/2)-#tostring(speed[2]))/2)+(x/2),9)
  314. end
  315. mon.write(speed[2])
  316. mon.setBackgroundColor(colors.white)
  317. objloc.tape[3].volume.down = {((x/2)-8)/2-0.5,14}
  318. objloc.tape[3].volume.up = {objloc.tape[3].volume.down[1] + 7,14}
  319. mon.setPaletteColor(colors.yellow,0x7289DA)
  320. mon.setBackgroundColor(colors.yellow)
  321. mon.setTextColor(colors.white)
  322. mon.setCursorPos(objloc.tape[3].volume.down[1],14)
  323. mon.write("\171 \187")
  324. mon.setBackgroundColor(colors.white)
  325. mon.setTextColor(colors.black)
  326. mon.setCursorPos(((x/2)-6)/2,14)
  327. mon.write(" ")
  328. if #tostring(vol[3]) % 2 == 1 then
  329. mon.setCursorPos(((x/2)-#tostring(vol[3]))/2-1,14)
  330. else
  331. mon.setCursorPos(((x/2)-#tostring(vol[3]))/2,14)
  332. end
  333. mon.write(vol[3])
  334. mon.setBackgroundColor(colors.white)
  335. objloc.tape[3].speed.down = {((x/2)-8)/2-0.5,16}
  336. objloc.tape[3].speed.up = {objloc.tape[3].speed.down[1] + 7,16}
  337. mon.setPaletteColor(colors.yellow,0x7289DA)
  338. mon.setBackgroundColor(colors.yellow)
  339. mon.setTextColor(colors.white)
  340. mon.setCursorPos(objloc.tape[3].speed.down[1],16)
  341. mon.write("\171 \187")
  342. mon.setBackgroundColor(colors.white)
  343. mon.setTextColor(colors.black)
  344. mon.setCursorPos(((x/2)-6)/2,16)
  345. mon.write(" ")
  346. if #tostring(speed[3]) % 2 == 1 then
  347. mon.setCursorPos(((x/2)-#tostring(speed[3]))/2-1,16)
  348. else
  349. mon.setCursorPos(((x/2)-#tostring(speed[3]))/2,16)
  350. end
  351. mon.write(speed[3])
  352.  
  353. mon.setBackgroundColor(colors.white)
  354. objloc.tape[4].volume.down = {(((x/2)-8)/2)+(x/2)-0.5,14}
  355. objloc.tape[4].volume.up = {objloc.tape[4].volume.down[1] + 7,14}
  356. mon.setPaletteColor(colors.yellow,0x7289DA)
  357. mon.setBackgroundColor(colors.yellow)
  358. mon.setTextColor(colors.white)
  359. mon.setCursorPos(objloc.tape[4].volume.down[1],14)
  360. mon.write("\171 \187")
  361. mon.setBackgroundColor(colors.white)
  362. mon.setTextColor(colors.black)
  363. mon.setCursorPos((((x/2)-6)/2)+(x/2),14)
  364. mon.write(" ")
  365. if #tostring(vol[4]) % 2 == 1 then
  366. mon.setCursorPos((((x/2)-#tostring(vol[4]))/2-1)+(x/2),14)
  367. else
  368. mon.setCursorPos((((x/2)-#tostring(vol[4]))/2)+(x/2),14)
  369. end
  370. mon.write(vol[4])
  371. mon.setBackgroundColor(colors.white)
  372. objloc.tape[4].speed.down = {(((x/2)-8)/2)+(x/2)-0.5,16}
  373. objloc.tape[4].speed.up = {objloc.tape[4].speed.down[1] + 7,16}
  374. mon.setPaletteColor(colors.yellow,0x7289DA)
  375. mon.setBackgroundColor(colors.yellow)
  376. mon.setTextColor(colors.white)
  377. mon.setCursorPos(objloc.tape[4].speed.down[1],16)
  378. mon.write("\171 \187")
  379. mon.setBackgroundColor(colors.white)
  380. mon.setTextColor(colors.black)
  381. mon.setCursorPos((((x/2)-6)/2+(x/2)),16)
  382. mon.write(" ")
  383. if #tostring(speed[4]) % 2 == 1 then
  384. mon.setCursorPos((((x/2)-#tostring(speed[4]))/2-1)+(x/2),16)
  385. else
  386. mon.setCursorPos((((x/2)-#tostring(speed[4]))/2)+(x/2),16)
  387. end
  388. mon.write(speed[4])
  389. return objloc
  390. end
  391. local currentVolume = {0.5,0.5,0.5,0.5}
  392. local lampStatus = 0
  393. local currentSpeed = {1,1,1,1}
  394. function mainThread()
  395. while true do
  396. if floor.getSize() then lampConnected = 1 else lampConnected = 0 end
  397. tape0.setVolume(currentVolume[1])
  398. tape1.setVolume(currentVolume[2])
  399. tape2.setVolume(currentVolume[3])
  400. tape3.setVolume(currentVolume[4])
  401. tape0.setSpeed(currentSpeed[1])
  402. tape1.setSpeed(currentSpeed[2])
  403. tape2.setSpeed(currentSpeed[3])
  404. tape3.setSpeed(currentSpeed[4])
  405. local objs = redraw(currentVolume,currentSpeed,lampStatus)
  406. local tEvent = {os.pullEvent("monitor_touch")}
  407. local x = tEvent[3]
  408. local y = tEvent[4]
  409. if tEvent[2] == "top" then
  410. for i=1,4 do
  411. if objs.tape[i].volume.down[1] < x+2 and objs.tape[i].volume.down[1] > x-2 then
  412. if objs.tape[i].volume.down[2] == y then
  413. if currentVolume[i] > 0.10 then
  414. currentVolume[i] = currentVolume[i] - 0.05
  415. currentVolume[i] = round(currentVolume[i],2)
  416. else currentVolume[i] = 0 end
  417. end
  418. end
  419. end
  420. for i=1,4 do
  421. if objs.tape[i].volume.up[1] < x+2 and objs.tape[i].volume.up[1] > x-2 then
  422. if objs.tape[i].volume.up[2] == y then
  423. if currentVolume[i] < 0.901 then
  424. currentVolume[i] = currentVolume[i] + 0.05
  425. currentVolume[i] = round(currentVolume[i],2)
  426. else currentVolume[i] = 1 end
  427. end
  428. end
  429. end
  430. for i=1,4 do
  431. if objs.tape[i].speed.down[1] < x+2 and objs.tape[i].speed.down[1] > x-2 then
  432. if objs.tape[i].speed.down[2] == y then
  433. if currentSpeed[i] > 0.30 then
  434. currentSpeed[i] = currentSpeed[i] - 0.05
  435. currentSpeed[i] = round(currentSpeed[i],2)
  436. else currentSpeed[i] = 0.25 end
  437. end
  438. end
  439. end
  440. for i=1,4 do
  441. if objs.tape[i].speed.up[1] < x+2 and objs.tape[i].speed.up[1] > x-2 then
  442. if objs.tape[i].speed.up[2] == y then
  443. if currentSpeed[i] < 1.90 then
  444. currentSpeed[i] = currentSpeed[i] + 0.05
  445. currentSpeed[i] = round(currentSpeed[i],2)
  446. else currentSpeed[i] = 2 end
  447. end
  448. end
  449. end
  450. if y == 18 then
  451. if lampStatus == 0 then lampStatus = 2 elseif lampStatus == 1 then lampStatus = 0 else lampStatus = 1 end
  452. end
  453. print("Checking rewind")
  454. print(x .. " " .. y)
  455. if x > 2 and x < 6 and y == 4 then rewind(1) end
  456. if x > 26 and x < 30 and y == 4 then rewind(2) end
  457. if x > 2 and x < 6 and y == 11 then rewind(3) end
  458. if x > 26 and x < 30 and y == 11 then rewind(4) end
  459.  
  460. if x > 2 and x < 6 and y == 5 then pause(1) end
  461. if x > 26 and x < 30 and y == 5 then pause(2) end
  462. if x > 2 and x < 6 and y == 12 then pause(3) end
  463. if x > 26 and x < 30 and y == 12 then pause(4) end
  464.  
  465.  
  466. if x > 2 and x < 6 and y == 6 then play(1) end
  467. if x > 26 and x < 30 and y == 6 then play(2) end
  468. if x > 2 and x < 6 and y == 13 then play(3) end
  469. if x > 26 and x < 30 and y == 13 then play(4) end
  470. end
  471. end
  472. end
  473. function lampThread()
  474. local api = dofile(discoApiPath)
  475. lampData.styles = api.updateStyles()
  476. local routine = nil
  477. local routineName = nil
  478. while true do
  479. evt = {os.pullEvent()}
  480. if lampData.changed == true then
  481. lampData.changed = false
  482. if lampData.styleName ~= routineName or lampData.renewFloor == true then
  483. if routine then
  484. coroutine.resume(routine,"terminate")
  485. end
  486. routine = coroutine.create(api.makeDisplay(monitorName,lampData.tps or 2,lampData.scale or 5,lampData.styleName))
  487. end
  488. end
  489. if lampData.updateStyle == true then
  490. lampData.updateStyle = false
  491. lampData.styles = api.updateStyles()
  492. end
  493. coroutine.resume(routine,table.unpack(evt))
  494. end
  495. end
  496. if lampStatus == 0 and floor.getSize() then
  497. floor.setPaletteColor(colors.black,0x000000)
  498. floor.setBackgroundColor(colors.black)
  499. floor.clear()
  500. end
  501. sleep(0.5)
  502. end
  503. end
  504. while true do
  505. parallel.waitForAny(function() err["mt"] = {pcall(mainThread)} end, function() err["lt"] = {pcall(lampThread)} end)
  506. print(textutils.serialise(err))
  507. good,er = pcall(errorReport)
  508. if er == "Terminated" then
  509. break
  510. end
  511. err = {}
  512. end
Advertisement
Add Comment
Please, Sign In to add comment