Advertisement
FeodorKekovich

CheckPlayer (OpenComputers)

Feb 5th, 2017
390
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.88 KB | None | 0 0
  1. local a=require('component')local b=require('event')local c=require('serialization')local d=require('filesystem')local e=require('computer')local f=require('term')local g=require('unicode').len;local h='/checkPlayer/'local i=f.clear;local j=e.addUser;local k=e.removeUser;local l=a.gpu;local m,o=l.getResolution()local q,r=50,25;local s=2;local t=3;local u=39;local v=20;local w=true;local x={'[Добавить]','x','online','offline'}local y={colors={0xFFFFFF,0xff0066,0xff0000,0x474747,0x00ff00,0xfff200,0xff00ff,0x0000ff,0xff8800,0x00bbff,0x00ffff,0x773d00,0x770000,0x007200,0x00575b,0x11007f,0xb77979,0xbc9ace,0x9aa0ce,0xcfd396},players={}}function check()l.setResolution(q,r)l.setBackground(0x000000)i()l.setForeground(y.colors[4])l.set(18,1,'Список игроков:')l.set(1,r,x[1])l.set(q,r,x[2])for z=1,#y.players do local A=y.players[z].nick;local B=y.players[z].prefix;local C=y.players[z].nickColor;local D=y.players[z].prefixColor;local E=y.players[z].activeScript;local F=g(B)local G=t-1+z;local H=j(A)l.setForeground(y.colors[1])l.set(s,G,'[')l.set(s+F+1,G,'] - ')l.setForeground(D)l.set(s+1,G,B)l.setForeground(C)l.set(s+F+5,G,A)if H then if E then pcall(loadfile(h..A..'.lua'))y.players[z].activeScript=false end;l.setForeground(y.colors[5])l.set(u,G,'   '..x[3]..' ')l.setForeground(y.colors[4])l.set(q-1,G,x[2]..' ')k(A)else y.players[z].activeScript=true;l.setForeground(y.colors[4])l.set(u,G,'  '..x[4]..' ')l.set(q-1,G,x[2]..' ')end end end;function link(I,J,K)e.beep(1500)l.setForeground(y.colors[9])l.set(J,K,x[I])os.sleep(0.3)end;function clicker(L,L,M,N)if M==q and N==r then link(2,q,r)w=false elseif M==q-1 and N>=t and N<=t+#y.players-1 then link(2,q-1,N)local O=N-t+1;remover(O)elseif M>=1 and M<=10 and N==r then link(1,1,r)if#y.players<v then addPlayer()else playersLimitter()end end end;function remover(O)d.remove(h..y.players[O].nick..'.lua')table.remove(y.players,O)conf_S()end;function playersLimitter()e.beep(1700)l.set(1,r-1,'> Вы достигли лимита в '..v..' игроков!')os.sleep(2)end;function makeUserScript(P)local Q=io.open(h..P..'.lua','w')Q:flush()Q:close()end;function addPlayer()b.ignore('touch',clicker)l.fill(1,10,100,100,' ')for R=1,#y.colors do l.setForeground(y.colors[R])if R<=10 then l.set(R*5-3,24,'>'..tostring(R))else l.set(R*5-3-q,25,'>'..tostring(R))end end;l.setForeground(y.colors[9])l.fill(1,10,100,1,'─')l.fill(1,23,100,1,'─')l.set(23,22,'Цвета:')f.setCursor(1,11)io.write('> Новый ник: ')n=io.read()io.write('> Префикс: ')p=io.read()io.write('> Цвет ника (по номеру ниже): ')local S=tonumber(io.read())if S==nil or S>20 or S<1 then nC=1 else nC=math.floor(S)end;io.write('> Цвет префикса (по номеру ниже): ')local S=tonumber(io.read())if S==nil or S>20 or S<1 then pC=1 else pC=math.floor(S)end;io.write('> Создать скрипт '..h..'*ник игрока*.lua,\nвыполняющийся при заходе игрока? Y/N: ')local S=io.read()if S=='y'or S=='Y'then makeUserScript(n)end;table.insert(y.players,{nick=n,prefix=p,prefixColor=y.colors[pC],nickColor=y.colors[nC],activeScript=true})conf_S()b.listen('touch',clicker)end;function conf_S()local Q=io.open(h..'config.cfg','w')Q:write(c.serialize(y,false))Q:flush()Q:close()end;function conf_R()local Q=io.open(h..'config.cfg','r')y=c.unserialize(Q:read(d.size(h..'config.cfg')))Q:close()end;function run()if not d.exists(h)then d.makeDirectory(h)conf_S()else conf_R()end;b.listen('touch',clicker)while w do check()os.sleep(1)end;exit()end;function exit()conf_S()b.ignore('touch',clicker)i()l.setForeground(y.colors[1])l.setResolution(m,o)end;function start()if l.maxDepth()<=4 then e.beep(1500)print('CheckPlayer: Ошибка! Глубина цвета 4 и ниже не поддерживается! Наобходима видеокарта и монитор 3 уровня.')else run()end end;function b.shouldInterrupt()return false end;start()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement