Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- ##############################
- -- msg_sender
- -- version 0.6
- -- (a paired program: msg_receiver 0.6 http://pastebin.com/ZsGmzz2T)
- -- http://hevohevo.hatenablog.com/
- rednet.open("right")
- local args = {...}
- assert(args and #args>0, "msg_sender <receiver_id>")
- local receiver_id = tonumber(args[1])
- local trans_tbl = {
- w="turtle.forward()",
- a="turtle.turnLeft(); turtle.forward(); turtle.turnRight()",
- s="turtle.back()",
- d="turtle.turnRight(); turtle.forward(); turtle.turnLeft()",
- space="turtle.up()",
- leftShift="turtle.down()",
- left="turtle.turnRight()",
- right="turtle.turnLeft()",
- z="shell.run('dance')", -- let's dance!
- x="shell.run('boring')", -- run receiver's other program
- c="myRefuelAll()" -- call receiver's function
- }
- function printResults(sender_id, tbl_results)
- local exist_status, run_status, err_msg = unpack(tbl_results)
- if exist_status then -- found a function
- if run_status then -- success for running
- print(" #",sender_id,": ok")
- else -- failed with running or doesn't reply
- if err_msg then
- print(" #",sender_id,": (error) ",err_msg)
- else
- print(" #",sender_id,": no reply")
- end
- end
- else -- not found by wrong string
- print(" #",sender_id,": (NotFound) ")
- end
- end
- function interactiveMode()
- print(" Start: interactive mode")
- write(" > ")
- local message = io.read()
- print(" Exit: interactive mode")
- return message
- end
- print("Press 'q' to terminate")
- while true do
- local event, scancode = os.pullEvent("key")
- local keyname = keys.getName(scancode)
- local message = trans_tbl[keyname]
- if keyname == "enter" and not message then
- message = interactiveMode()
- end
- print(keyname," => ",message or "none")
- -- button for terminating
- if keyname == "q" or message =="q" then break end
- -- send an order message and recieve the results of running
- if message then
- rednet.send(receiver_id, message)
- local sender_id, results, distance = rednet.receive(3)
- printResults(sender_id, textutils.unserialize(results))
- end
- end
- print("Terminated")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement