Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- server_id=1
- function open()
- local bOpen, sFreeSide = false, nil
- for n,sSide in pairs(rs.getSides()) do
- if peripheral.getType( sSide ) == "modem" then
- sFreeSide = sSide
- if rednet.isOpen( sSide ) then
- bOpen = true
- break
- end
- end
- end
- if not bOpen then
- if sFreeSide then
- print( "No modem active. Opening "..sFreeSide.." modem" )
- rednet.open( sFreeSide )
- return true
- else
- print( "No modem attached" )
- return false
- end
- end
- return true
- end
- local rdmess=false
- function ShowMenu()
- term.clear()
- if rdmess then
- local x,y=term.getSize()
- term.setCursorPos(1, y)
- term.write('<Del>-Delete <Right>-Next message')
- end
- term.setCursorPos(1, 1)
- print('+'..string.rep('-',49)..'+')
- print('|F1 New user | F2 Login |F3 Check mes|F4 Read mes|')
- print('+'..string.rep('-',49)..'+')
- print('|F5 Send mess| F6 News | F9 Logout | F10 Exit |')
- print('+'..string.rep('-',49)..'+')
- end
- function ShowWin(text)
- if text then
- if term.isColour() then term.setTextColour( colours.yellow ) end
- term.setCursorPos(math.ceil((term.getSize()-#text) / 2), 8) print(text)
- end
- if term.isColour() then term.setTextColour( colours.lime ) end
- term.setCursorPos(11, 10) print('Nick:')
- term.setCursorPos(7, 12) print('Password:')
- if term.isColour() then term.setTextColour( colours.white ) end
- for i=9,13 do
- term.setCursorPos(17, i)
- if i % 2 == 1 then print('+----------------+')
- else print('| |')
- end
- end
- term.setCursorPos(19, 10) local nick=read()
- term.setCursorPos(19, 12) local pswd=read('*')
- return nick,pswd
- end
- eventKey={}
- local work=true
- eventKey[keys.f1]= function ()
- local user,pwd=ShowWin('Registration new user')
- rednet.send(server_id,'adduser user='..user..' pwd='..pwd)
- end
- eventKey[keys.f2]= function ()
- local user,pwd=ShowWin('Enter your nick and password')
- rednet.send(server_id,'login user='..user..' pwd='..pwd)
- end
- eventKey[keys.f3]= function ()
- rednet.send(server_id,'checkmess')
- end
- eventKey[keys.f4]= function ()
- rednet.send(server_id,'readfirst')
- rdmess=true
- end
- eventKey[keys.f5]= function ()
- rednet.send(server_id,'users')
- local id,users
- repeat
- id,users=rednet.receive(1)
- if not id then
- print('No ansver from server')
- return
- end
- until id==server_id
- local userstab={}
- for name in users:gmatch('%S+') do
- table.insert(userstab, name)
- end
- table.sort(userstab)
- write('Destination user nick:')
- local user=read(nil, userstab)
- write('Enter text:')
- local mess=read()
- rednet.send(server_id,'sendmess user='..user..' '..mess)
- end
- eventKey[keys.f6]= function ()
- rednet.send(server_id,'news')
- end
- eventKey[keys.f9]= function ()
- rednet.send(server_id,'logout')
- end
- eventKey[keys.f10]= function ()
- eventKey[keys.f9]()
- work=false
- end
- eventKey[keys.right]= function ()
- if rdmess then
- rednet.send(server_id,'readmess')
- end
- end
- eventKey[keys.delete]= function ()
- if rdmess then
- rednet.send(server_id,'delmess')
- end
- end
- function os.pullEvent()
- return os.pullEventRaw()
- end
- if not open() then return end
- while work do
- ShowMenu()
- -- rednet.send(server_id,'ask')
- while true do
- local event,p1,p2,p3=os.pullEvent()
- if event=='rednet_message' then
- if p1==server_id then
- print(p2)
- if rdmess and #p2>0 and p2:sub(1,1)~='<' then
- rdmess=false
- local x,y=term.getSize()
- term.setCursorPos(1, y)
- term.clearLine()
- end
- end
- elseif event=='key' then
- if eventKey[p1]~=nil then
- eventKey[p1]()
- break
- end
- elseif event=='mouse_click' and p1==1 then
- if p2>1 and p2<14 then
- if p3==2 then eventKey[keys.f1]() end
- if p3==4 then eventKey[keys.f5]() end
- end
- if p2>14 and p2<26 then
- if p3==2 then eventKey[keys.f2]() end
- if p3==4 then eventKey[keys.f6]() end
- end
- if p2>26 and p2<39 then
- if p3==2 then eventKey[keys.f3]() end
- if p3==4 then eventKey[keys.f9]() end
- end
- if p2>39 and p2<51 then
- if p3==2 then eventKey[keys.f4]() end
- if p3==4 then eventKey[keys.f10]() end
- end
- break
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement