Advertisement
xMikhailx

OC - управление роботом (Server) v2.0

Aug 31st, 2015
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.27 KB | None | 0 0
  1. ----------------------------------------------------
  2. --              Универсальная программа           --  
  3. --    для ручного управления роботом c помощью    --
  4. --              OpenPeripheral Glasses!           --
  5. --          проект http://computercraft.ru        --  
  6. --            2015, © xMikhail, WildOne           --
  7. --                    ver. 2.0                    --
  8. ----------------------------------------------------
  9. -----------------------SERVER-----------------------
  10.  
  11.  
  12. local event = require("event")
  13. local tunnel = require("component").tunnel
  14. local g = require("component").openperipheral_bridge
  15. local s = require("serialization")
  16.  
  17. color1 = 0x00FFFF
  18. color2 = 0xFFFFFF
  19. color3 = 0x818181
  20. height = 30
  21.  
  22. --FUNCTIONS
  23.  
  24. function clear()
  25.   g.clear()
  26.   g.sync()
  27. end
  28.  
  29. if Message then
  30.   if event.ignore("modem_message",Message) then
  31.     print("Слушатель modem_message удалён")
  32.   else
  33.     print("Слушатель modem_message не удалён")
  34.   end
  35. end
  36.  
  37. if glasscommand then
  38.   if event.ignore("glasses_chat_command",glasscommand) then
  39.     print("Слушатель glasses_chat_command удалён")
  40.   else
  41.     print("Слушатель glasses_chat_command не удалён")
  42.   end
  43. end
  44.  
  45. function MassStringLength(StrMass,amount)
  46.   local StrLengthMass = {}
  47.   for n = 1, amount do
  48.     StrLengthMass[n] = string.len(StrMass[n])
  49.   end
  50.   return StrLengthMass
  51. end
  52.    
  53.    
  54.  
  55. function FindMax(mass,amount)
  56.   if amount < 1 then
  57.     return nil
  58.   else
  59.     local max = mass[1]
  60.     for n = 1, amount do
  61.       if mass[n] > max then
  62.         max = mass[n]
  63.       end
  64.     end
  65.   return max
  66.   end
  67. end
  68.  
  69. function AddInfBox(infbox)
  70.     amount = string.len(infbox)
  71. length = amount * 3.4
  72.   g.clear()
  73.     g.addBox(1,1,length + 18,3,color1,1)
  74.     g.addBox(5,4,length + 10,height,color1,0.5)
  75.     g.addBox(1,height+4,length + 18,3,color1,1)
  76.     g.addText(length / 2 - 5,8,"Робот:",color2)
  77.     g.addText(21,20,infbox,color2)
  78.   g.sync()
  79. end
  80.  
  81. function MonBox(monbox)
  82.   val = {}
  83.   val = s.unserialize(monbox)
  84.   g.clear()
  85. g.addBox(1,1,240,5,color1,1)
  86.     g.addBox(6,6,230,70,color3,0.7)
  87. g.addBox(1,71,240,5,color1)
  88.   g.addText(90,8,"Статус робота :",color2)
  89.     g.addText(9,18,"Имя робота / Опыт робота",color2)
  90.         g.addText(150,18,val.name.." / "..val.level,color2)
  91.     g.addText(9,28,"Всего / Свободно слотов",color2)
  92.         g.addText(150,28,val.inv_size.." / "..val.freeslots,color2)
  93.     g.addText(9,38,"Всего / Оставшийся заряд",color2)
  94.         g.addText(150,38,val.MAX_EU.." / "..val.EU,color2)
  95.     g.addText(9,48,"Всего / Свободно памяти",color2)
  96.         g.addText(150,48,val.TOTAL_MEM.." Кб / "..val.freeMEM.." Кб",color2)
  97.     g.addText(9,58,"Время работы / Редстоун",color2)
  98.         g.addText(150,58,val.uptime.." мин / "..val.rsstatus,color2)
  99.   g.sync()
  100. end
  101.  
  102. function InvBox(invbox)
  103.   inv = {}
  104.   inv = s.unserialize(invbox)
  105.   g.clear()
  106.   g.sync()
  107.     local maxname = FindMax(MassStringLength(inv.name,inv.busyslots),inv.busyslots)
  108.     if maxname == nil then
  109.       g.clear()
  110.       g.addBox(1,1,100,10,color1,0.7)
  111.       g.addText(20,3,"Инвентарь робота :",color2).setScale(0.8)
  112.       g.addBox(1,11,100,8,color3,0.5)
  113.     g.addText(25,13,"Нет предметов!",color2).setScale(0.8)
  114.     g.sync()
  115.   end
  116.   local amount1 = maxname
  117.   local length1 = amount1 * 5.3
  118.   local x1 = 6
  119.   local y1 = 11
  120.   local amountStolb = math.ceil(inv.busyslots / 24)
  121.     if amount1 < 15 then
  122.     length1 = 100
  123.   end
  124.   g1 = length1 * amountStolb + 10
  125.   g.addBox(1,1,g1,10,color1,0.7)
  126.   g2 = (length1 * amountStolb) / 2 - 30
  127.   g.addText(g2,2,"Инвентарь робота :",color2).setScale(0.8)
  128.   g.sync()
  129.   for i=1,inv.busyslots do
  130.     local i2 = i % 2
  131.     local h1 = color3
  132.     local h2 = color1
  133.     for k = 1,amountStolb do
  134.       local k1 = 24 * k
  135.       if i > k1 then
  136.         x1 = 6 + length1 * k
  137.         y1 = 11 - 168 * k
  138.       end
  139.     end
  140.     if i2 == 0 then
  141.       local i3 = (i - 1) * 7 + y1
  142.       local i4 = (i - 1) * 7 + (y1 + 1)
  143.       g.addBox(x1,i3,length1,7,h2,0.5)
  144.       g.addText(x1,i4,"| "..inv.slot[i].."  "..inv.name[i],color2).setScale(0.8)
  145.       g.addText(x1 + length1 - 9 ,i4,tostring(inv.amount[i]),color2).setScale(0.8)
  146.       g.sync()
  147.     else
  148.       local i3 = (i - 1) * 7 + y1
  149.       local i4 = (i - 1) * 7 + (y1 + 1)
  150.       g.addBox(x1,i3,length1,7,h1,0.5)
  151.       g.addText(x1,i4,"| "..inv.slot[i].."  "..inv.name[i],color2).setScale(0.8)
  152.       g.addText(x1 + length1 - 9 ,i4,tostring(inv.amount[i]),color2).setScale(0.8)
  153.       g.sync()
  154.     end
  155.   end
  156. end
  157. function _G.Message(_,_,_,_,_,msgbox)
  158.   msg = {}
  159.   msg[1] = tonumber(string.sub(msgbox,1,1))
  160.   msg[2] = string.sub(msgbox,3)
  161.   if msg[1] == 1 then
  162.     AddInfBox(msg[2])
  163.   elseif msg[1] == 2 then
  164.     MonBox(msg[2])
  165.   elseif msg[1] == 3 then
  166.     InvBox(msg[2])
  167. end
  168. end
  169.  
  170. function _G.glasscommand(_,_,nick,_,gcom)
  171.   print("Игрок: "..nick.." использовал команду: "..gcom)
  172.   if gcom == "clear" then clear()
  173.   else
  174.     tunnel.send(gcom)
  175.   end
  176. end
  177.  
  178. event.listen("glasses_chat_command",glasscommand)
  179. event.listen("modem_message",Message)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement