Advertisement
Patriik

Server

Apr 3rd, 2021 (edited)
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.42 KB | None | 0 0
  1. local port = 1212
  2.  
  3. local net = peripheral.find("modem")
  4. net.open(port)
  5. local eventHandlers = {}
  6.  
  7. local modemHandlers = {handlers={}}
  8. local keyHandlers = {handlers={}}
  9. local commandHandlers = {handlers={}}
  10.  
  11. function commandHandlers.addCommandHandler(name, func)
  12.     if not commandHandlers["handlers"][name] then
  13.         commandHandlers["handlers"][name] = {}
  14.         commandHandlers["handlers"][name]["name"] = name
  15.         commandHandlers["handlers"][name]["exec"] = func
  16.     end
  17. end
  18.  
  19. function commandHandlers.handleCommand(cmd, args)
  20.     cmd = string.lower(cmd)
  21.     if commandHandlers["handlers"][cmd] then
  22.         commandHandlers["handlers"][cmd]["exec"](cmd, args)
  23.     else
  24.         return false
  25.     end
  26. end
  27.  
  28. function keyHandlers.addKeyHandler(keycode, func)
  29.     table.insert(keyHandlers["handlers"], {key=keycode, exec=func})
  30. end
  31.  
  32. function keyHandlers.handleKey(keycode, isHeld)
  33.     for k,v in pairs(keyHandlers["handlers"]) do
  34.         if v["key"] == keycode then
  35.             v["exec"](isHeld)
  36.         end
  37.     end
  38. end
  39.  
  40. function modemHandlers.addModemHandler(cmd, func)
  41.     table.insert(modemHandlers["handlers"], {cmd=cmd, exec=func})
  42. end
  43.  
  44. function modemHandlers.handleMessage(channel, reply, msg, dist)
  45.     local split = split(msg," ")
  46.     local cmd = split[1]
  47.     table.remove(split, 1)
  48.    
  49.     print("true")
  50.     if modemHandlers["handlers"][cmd] then
  51.         modemHandlers["handlers"][cmd]["exec"](channel, repy, cmd, split, dist)
  52.         print(true)
  53.     else
  54.         print(false)
  55.         return false
  56.     end
  57. end
  58.  
  59. function split(str, delim)
  60.     local res = {}
  61.     for match in (str..delim):gmatch("(.-)"..delim) do
  62.         table.insert(res, match)
  63.     end
  64.     return res
  65. end
  66.  
  67. function parseMessage(message)
  68.     local split = split(message)
  69.  
  70.     local command = split[1]
  71.     table.remove(split, 1)
  72.  
  73.     return command, split
  74. end
  75.  
  76. function getCommandInput()
  77.  
  78. end
  79.  
  80. function eventHandlers.modem()
  81.     while true do
  82.         local ev, side, channel, replyChannel, msg, dist = os.pullEvent("modem_message")
  83.  
  84.         modemHandlers.handleMessage(channel, replyChannel, msg, dist)
  85.     end
  86. end
  87.  
  88. function eventHandlers.key()
  89.     while true do
  90.         local ev, key, isHeld = os.pullEvent("key")
  91.  
  92.         keyHandlers.handleKey(key, isHeld)
  93.     end
  94. end
  95.  
  96. commandHandlers.addCommandHandler("quit", function(cmd, args)
  97.  
  98. end)
  99.  
  100. keyHandlers.addKeyHandler(keys.t, function(keycode, isHeld)
  101.     print("T press")
  102. end)
  103.  
  104. modemHandlers.addModemHandler("test", function(channel, reply, cmd, split, dist)
  105.     print("modem test")
  106. end)
  107.  
  108. parallel.waitForAll(eventHandlers.modem, eventHandlers.key)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement