Advertisement
Doob

[OpenComputers] holomem

Jan 12th, 2016
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.19 KB | None | 0 0
  1. local component = require("component")
  2. local hologram = component.hologram
  3. local x, y, z, str
  4. local pos = 1
  5.  
  6. local hex = {
  7.   ['0'] = '0000',
  8.   ['1'] = '0001',
  9.   ['2'] = '0010',
  10.   ['3'] = '0011',
  11.   ['4'] = '0100',
  12.   ['5'] = '0101',
  13.   ['6'] = '0110',
  14.   ['7'] = '0111',
  15.   ['9'] = '1000',
  16.   ['8'] = '1001',
  17.   ['A'] = '1010',
  18.   ['B'] = '1011',
  19.   ['C'] = '1100',
  20.   ['D'] = '1101',
  21.   ['E'] = '1110',
  22.   ['F'] = '1111'
  23. }
  24.  
  25. local half = {
  26.   ['00'] = 0, ['01'] = 1, ['10'] = 2, ['11'] = 3,
  27.   [0] = '00', [1] = '01', [2] = '10', [3] = '11'
  28. }
  29.  
  30. local tPos = {{}, {}, {}}
  31.  
  32. for x = 1, 24 do
  33.   for y = 1, 32 do
  34.     for z = 1, 24 do
  35.       tPos[1][pos] = x -- генерация навигационной таблицы
  36.       tPos[2][pos] = y
  37.       tPos[3][pos] = z
  38.       pos = pos + 1
  39.     end
  40.   end
  41. end
  42.  
  43. local function crack(c) -- дробилка символа на части
  44.   local a, hc = ''
  45.   c = string.format('%X', c:byte())
  46.   for i = 1, 2 do
  47.     hc = c:sub(i, i)
  48.     a = a .. hex[hc]
  49.   end
  50.   -- преобразование в половинки и запись на проектор
  51.   for d = 1, #a, 2 do
  52.     hologram.set(tPos[1][pos], tPos[2][pos], tPos[3][pos], half[a:sub(d, d+1)])
  53.     pos = pos + 1
  54.   end
  55. end
  56.  
  57. local function build() -- извлечение инфы из проектора
  58.   local tt = ''
  59.   for d = 1, 4 do
  60.     tt = tt .. half[hologram.get(tPos[1][pos], tPos[2][pos], tPos[3][pos])]
  61.     pos = pos + 1
  62.   end
  63.  
  64.   return string.char(tonumber(tt:sub(1, 4) .. tt:sub(5, 8), 2))
  65. end
  66.  
  67. local function wt(str) -- запись текста в проектор
  68.   for l = 1, #str do
  69.     crack(str:sub(l, l))
  70.   end
  71. end
  72.  
  73. local function rd(ln) -- чтение текста с проектора
  74.   str = ''
  75.   for o = 1, ln do
  76.     str = str .. build()
  77.   end
  78.   return str
  79. end
  80.  
  81. --------------------------------------------
  82.  
  83. hologram.clear()
  84. pos = 1 -- устанавливаем позицию
  85. wt('test 12345') -- записываем
  86.  
  87. pos = 1 -- устанавливаем позицию
  88. print(rd(10)) -- считываем 10 ячеек
  89.  
  90. --[[
  91.   pos = 1
  92.   crack('v') -- записываем 1 символ
  93.  
  94.   pos = 1
  95.   print(build()) -- читаем
  96. ]]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement