SHOW:
|
|
- or go back to the newest paste.
| 1 | -- ############################## | |
| 2 | - | -- msg_receiver test4 |
| 2 | + | -- msg_receiver |
| 3 | -- version 0.6 | |
| 4 | -- (a paired program: msg_sender 0.6, http://pastebin.com/yUgqzL98) | |
| 5 | -- http://hevohevo.hatenablog.com/ | |
| 6 | - | function hevo() |
| 6 | + | |
| 7 | - | print("hevohevo!")
|
| 7 | + | |
| 8 | ||
| 9 | function myRefuelAll() | |
| 10 | for i=1,16 do | |
| 11 | turtle.select(i) | |
| 12 | turtle.refuel() | |
| 13 | end | |
| 14 | turtle.select(1) | |
| 15 | - | local status, err = pcall(func) |
| 15 | + | |
| 16 | ||
| 17 | - | if status then -- success |
| 17 | + | function printResults(sender_id, message, tbl_results) |
| 18 | local exist_status, run_status, err_msg = unpack(tbl_results) | |
| 19 | - | else -- wrong string |
| 19 | + | if exist_status then -- found a function |
| 20 | - | print("(error) #",sender_id,": ",message)
|
| 20 | + | if run_status then -- success for running |
| 21 | print("#",sender_id,": ",message)
| |
| 22 | else -- failed or doesn't reply | |
| 23 | print("#",sender_id,": ",message)
| |
| 24 | if err_msg then | |
| 25 | print(" (Error) ",err_msg)
| |
| 26 | else | |
| 27 | print(" (No reply) ")
| |
| 28 | end | |
| 29 | end | |
| 30 | else -- failed with running by wrong string | |
| 31 | print("#",sender_id,": ",message)
| |
| 32 | print(" (NotFound) ")
| |
| 33 | end | |
| 34 | end | |
| 35 | ||
| 36 | -- main | |
| 37 | while true do | |
| 38 | local sender_id, message, distance = rednet.receive() | |
| 39 | ||
| 40 | -- when a message includes the plural functions, doesn't return values. | |
| 41 | if not string.find(message,";") then | |
| 42 | message = "return "..message | |
| 43 | end | |
| 44 | ||
| 45 | -- make a function and run | |
| 46 | local func = loadstring(message) | |
| 47 | setfenv(func, getfenv()) -- change func's environment(_G) to current one. | |
| 48 | local results = {pcall(func)} -- table: 1) exist_status, 2) run_status, 3) err_msg
| |
| 49 | ||
| 50 | -- respond results to the sender | |
| 51 | rednet.send(sender_id, textutils.serialize(results)) | |
| 52 | ||
| 53 | -- print results to the terminal display. | |
| 54 | printResults(sender_id, message, results) | |
| 55 | end |