Advertisement
Microstar301

CCCCM3

Feb 18th, 2013
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.20 KB | None | 0 0
  1. --monitor
  2. function printUsage()
  3.     print( "Usage: monitor <side> <program> <arguments>" )
  4.     return
  5. end
  6.  
  7. local tArgs = { ... }
  8. if #tArgs < 2 then
  9.     printUsage()
  10.     return
  11. end
  12.  
  13. local sSide = tArgs[1]
  14. if peripheral.getType( sSide ) ~= "monitor" then
  15.     print( "No monitor on "..sSide.." side" )
  16.     return
  17. end
  18.  
  19. local sProgram = tArgs[2]
  20. local sPath = shell.resolveProgram( sProgram )
  21. if sPath == nil then
  22.     print( "No such program: "..sProgram )
  23.     return
  24. end
  25.  
  26. --print( "Running "..sProgram.." on "..sSide.." monitor" )
  27.  
  28. local monitor = peripheral.wrap( sSide )
  29. term.redirect( monitor )
  30.  
  31. local function runProgram(...)
  32.     shell.run( sProgram, select( 3, ... ) )
  33. end
  34.  
  35. local co = coroutine.create(runProgram, ...)
  36.  
  37. local event = {}
  38. local tFilter = {}
  39.  
  40. while true do
  41.     if event[1] == "monitor_touch" and event[2] == sSide then
  42.         os.queueEvent( "mouse_click", 1, unpack( event, 3 ) )
  43.     end
  44.     local ok, param = coroutine.resume( co, unpack(event) )
  45.     if not ok then
  46.         term.restore()
  47.         error(param)
  48.     else
  49.         tFilter = param
  50.     end
  51.    
  52.     if coroutine.status(co) == "dead" then
  53.         break
  54.     end
  55.    
  56.     event = { os.pullEventRaw() }
  57. end
  58.  
  59. term.restore()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement