Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ----------------------------------------------------
- -- Универсальная программа --
- -- для ручного управления роботом c помощью --
- -- OpenPeripheral Glasses! --
- -- проект http://computercraft.ru --
- -- 2015, © xMikhail, WildOne --
- -- ver. 2.0 --
- ----------------------------------------------------
- -----------------------SERVER-----------------------
- local event = require("event")
- local tunnel = require("component").tunnel
- local g = require("component").openperipheral_bridge
- local s = require("serialization")
- color1 = 0x00FFFF
- color2 = 0xFFFFFF
- color3 = 0x818181
- height = 30
- --FUNCTIONS
- function clear()
- g.clear()
- g.sync()
- end
- if Message then
- if event.ignore("modem_message",Message) then
- print("Слушатель modem_message удалён")
- else
- print("Слушатель modem_message не удалён")
- end
- end
- if glasscommand then
- if event.ignore("glasses_chat_command",glasscommand) then
- print("Слушатель glasses_chat_command удалён")
- else
- print("Слушатель glasses_chat_command не удалён")
- end
- end
- function MassStringLength(StrMass,amount)
- local StrLengthMass = {}
- for n = 1, amount do
- StrLengthMass[n] = string.len(StrMass[n])
- end
- return StrLengthMass
- end
- function FindMax(mass,amount)
- if amount < 1 then
- return nil
- else
- local max = mass[1]
- for n = 1, amount do
- if mass[n] > max then
- max = mass[n]
- end
- end
- return max
- end
- end
- function AddInfBox(infbox)
- amount = string.len(infbox)
- length = amount * 3.4
- g.clear()
- g.addBox(1,1,length + 18,3,color1,1)
- g.addBox(5,4,length + 10,height,color1,0.5)
- g.addBox(1,height+4,length + 18,3,color1,1)
- g.addText(length / 2 - 5,8,"Робот:",color2)
- g.addText(21,20,infbox,color2)
- g.sync()
- end
- function MonBox(monbox)
- val = {}
- val = s.unserialize(monbox)
- g.clear()
- g.addBox(1,1,240,5,color1,1)
- g.addBox(6,6,230,70,color3,0.7)
- g.addBox(1,71,240,5,color1)
- g.addText(90,8,"Статус робота :",color2)
- g.addText(9,18,"Имя робота / Опыт робота",color2)
- g.addText(150,18,val.name.." / "..val.level,color2)
- g.addText(9,28,"Всего / Свободно слотов",color2)
- g.addText(150,28,val.inv_size.." / "..val.freeslots,color2)
- g.addText(9,38,"Всего / Оставшийся заряд",color2)
- g.addText(150,38,val.MAX_EU.." / "..val.EU,color2)
- g.addText(9,48,"Всего / Свободно памяти",color2)
- g.addText(150,48,val.TOTAL_MEM.." Кб / "..val.freeMEM.." Кб",color2)
- g.addText(9,58,"Время работы / Редстоун",color2)
- g.addText(150,58,val.uptime.." мин / "..val.rsstatus,color2)
- g.sync()
- end
- function InvBox(invbox)
- inv = {}
- inv = s.unserialize(invbox)
- g.clear()
- g.sync()
- local maxname = FindMax(MassStringLength(inv.name,inv.busyslots),inv.busyslots)
- if maxname == nil then
- g.clear()
- g.addBox(1,1,100,10,color1,0.7)
- g.addText(20,3,"Инвентарь робота :",color2).setScale(0.8)
- g.addBox(1,11,100,8,color3,0.5)
- g.addText(25,13,"Нет предметов!",color2).setScale(0.8)
- g.sync()
- end
- local amount1 = maxname
- local length1 = amount1 * 5.3
- local x1 = 6
- local y1 = 11
- local amountStolb = math.ceil(inv.busyslots / 24)
- if amount1 < 15 then
- length1 = 100
- end
- g1 = length1 * amountStolb + 10
- g.addBox(1,1,g1,10,color1,0.7)
- g2 = (length1 * amountStolb) / 2 - 30
- g.addText(g2,2,"Инвентарь робота :",color2).setScale(0.8)
- g.sync()
- for i=1,inv.busyslots do
- local i2 = i % 2
- local h1 = color3
- local h2 = color1
- for k = 1,amountStolb do
- local k1 = 24 * k
- if i > k1 then
- x1 = 6 + length1 * k
- y1 = 11 - 168 * k
- end
- end
- if i2 == 0 then
- local i3 = (i - 1) * 7 + y1
- local i4 = (i - 1) * 7 + (y1 + 1)
- g.addBox(x1,i3,length1,7,h2,0.5)
- g.addText(x1,i4,"| "..inv.slot[i].." "..inv.name[i],color2).setScale(0.8)
- g.addText(x1 + length1 - 9 ,i4,tostring(inv.amount[i]),color2).setScale(0.8)
- g.sync()
- else
- local i3 = (i - 1) * 7 + y1
- local i4 = (i - 1) * 7 + (y1 + 1)
- g.addBox(x1,i3,length1,7,h1,0.5)
- g.addText(x1,i4,"| "..inv.slot[i].." "..inv.name[i],color2).setScale(0.8)
- g.addText(x1 + length1 - 9 ,i4,tostring(inv.amount[i]),color2).setScale(0.8)
- g.sync()
- end
- end
- end
- function _G.Message(_,_,_,_,_,msgbox)
- msg = {}
- msg[1] = tonumber(string.sub(msgbox,1,1))
- msg[2] = string.sub(msgbox,3)
- if msg[1] == 1 then
- AddInfBox(msg[2])
- elseif msg[1] == 2 then
- MonBox(msg[2])
- elseif msg[1] == 3 then
- InvBox(msg[2])
- end
- end
- function _G.glasscommand(_,_,nick,_,gcom)
- print("Игрок: "..nick.." использовал команду: "..gcom)
- if gcom == "clear" then clear()
- else
- tunnel.send(gcom)
- end
- end
- event.listen("glasses_chat_command",glasscommand)
- event.listen("modem_message",Message)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement