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 |