Corbinhol

Robot - Main

Jul 31st, 2024 (edited)
335
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.50 KB | None | 0 0
  1. -- local robot = require("robot");
  2. local event = require("event");
  3. local component = require("component");
  4. local modem = component.modem;
  5. local term = require("term");
  6. local thread = require("thread");
  7. local filesystem = require("filesystem");
  8. local serialization = require("serialization");
  9. local computer = require("computer");
  10.  
  11. local data = {};
  12.  
  13.  
  14. function close()
  15.     os.exit();
  16. end
  17.  
  18. function send()
  19.     modem.send(data["server-address"], 60, "Confirmed. Communications locked.");
  20. end
  21.  
  22. function saveData()
  23.     local file = io.open("data.dat", "w");
  24.     file:write(serialization.serialize(data));
  25.     file:close();
  26. end
  27.  
  28. if filesystem.exists("/usr/CM_Automator/data.dat") then
  29.     print("Loading Data...");
  30.     local file = io.open("data.dat", "r");
  31.     local fileIn = file:read("*a");
  32.     file:close();
  33.  
  34.     data = serialization.unserialize(fileIn);
  35.     if data["verify"] == nil then
  36.         print("Error loading file...closing.");
  37.         close();
  38.     end
  39. else
  40.     print("No data found. Assuming to be new.");
  41.     data["verify"] = true;
  42.     saveData();
  43. end
  44.  
  45. term.clear();
  46. print("Started.");
  47.  
  48. function send(message1, message2, message3)
  49.     modem.send(data["server-address"], 60, message1, message2, message3);
  50. end
  51.  
  52. function recieve(timeout)
  53.     local _, _, _, _, _, message1, message2, message3
  54.     if timeout ~= nil then
  55.         _, _, _, _, _, message1, message2, message3 = event.pull(timeout, "modem_message", nil, data["server-address"]);
  56.     else
  57.         _, _, _, _, _, message1, message2, message3 = event.pull("modem_message", nil, data["server-address"]);
  58.     end
  59.     return message1, message2, message3;
  60. end
  61.  
  62. function modemHandler()
  63.     modem.open(60);
  64.     if modem.isOpen(60) then
  65.         print("Opened port 60!");
  66.     else
  67.         print("Failed to open port 60! Closing");
  68.         close();
  69.     end
  70.  
  71.     if data["server-address"] == nil then
  72.         print("No server address found. Assuming new.");
  73.         local shouldLoop = true;
  74.         while shouldLoop do
  75.             local _, _, from, _, _, message, message2 = event.pull("modem_message");
  76.             if message == "WhoIs" then
  77.                 if message2 == "CM_Auto_Robot" then                    
  78.                     print("Found a potential match!")
  79.                     for i=1, 5 do
  80.                         modem.send(from, 60, "I am!");
  81.                         _, _, from, _, _, message, message2 = event.pull(1, "modem_message");
  82.                         if message == "Confirmed. I am server." then
  83.                             modem.send(from, 60, "Confirmed. Communications locked.");
  84.                             data["server-address"] = from;
  85.                             saveData();
  86.                             shouldLoop = false;
  87.                             print("Successfully paired with server \"" .. data["server-address"] .. "\".");
  88.                             break;
  89.                         end
  90.                     end
  91.                 end
  92.             end
  93.         end
  94.     end
  95.  
  96.     print("Wireless Handler Started.");
  97.     while true do
  98.         local message1, message2, message3 = recieve();
  99.         if message1 == "getData" then
  100.             send("heres data", serialization.serialize(data));
  101.         end
  102.         print(message1);
  103.         os.sleep(0);
  104.     end
  105. end
  106.  
  107. local handlerThread = thread.create(modemHandler);
  108. function updateData()
  109.     data["energy"] = computer.energy();
  110.     data["max-energy"] = computer.maxEnergy();
  111. end
  112.  
  113. while true do
  114.     updateData();
  115.     os.sleep(0);
  116. end
Advertisement
Add Comment
Please, Sign In to add comment