Advertisement
CaptainResu

elevator_floor

Dec 25th, 2022 (edited)
963
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.10 KB | None | 0 0
  1. local floorname = "top";
  2. local doorside = "top";
  3. local redside = "right";
  4. local butside = "front";
  5. local height = "01";
  6.  
  7. local isatlevel = false;
  8. local requested = false;
  9.  
  10. peripheral.find("modem", rednet.open);
  11. function gethost()
  12.     while true do
  13.         local tmphost = rednet.lookup("elevator", "elevator.api");
  14.  
  15.         if (type(tmphost) == "number") then
  16.             return tmphost;
  17.         end
  18.     end
  19. end
  20.  
  21. local host = gethost();
  22. -- print("host: " .. tostring(host));
  23. -- local host = 7;
  24. print("start");
  25.  
  26. function iam()
  27.     -- host = rednet.lookup("elevator", "elevator.api");
  28.     -- host = gethost();
  29.     rednet.send(host, "iamfloor" .. height .. floorname);
  30. end
  31. iam();
  32.  
  33. redstone.setOutput(doorside, true);
  34. sleep(0.1);
  35. redstone.setOutput(doorside, false);
  36.  
  37. local function msgs()
  38.     com, msg = rednet.receive(nil, 5);
  39.  
  40.     if(not com) then
  41.         return;
  42.     end
  43.  
  44.     print("Msg: " .. tostring(msg));
  45.    
  46.     if(msg == "open") then
  47.         requested = false;
  48.         redstone.setOutput(doorside, true);
  49.     elseif(msg == "close") then
  50.         requested = false;
  51.         redstone.setOutput(doorside, true);
  52.         sleep(0.1);
  53.         redstone.setOutput(doorside, false);
  54.     end
  55. end
  56.  
  57. local function redstoneinput()
  58.     if(host == nil) then return end;
  59.     while true do
  60.         if(redstone.getInput(redside) and not isatlevel) then
  61.             rednet.send(host, "at" .. floorname);
  62.             isatlevel = true;
  63.         elseif(not redstone.getInput(redside)) then
  64.             isatlevel = false;
  65.         end
  66.  
  67.         if(redstone.getInput(butside) and not requested) then
  68.             requested = true;
  69.             rednet.send(host, "request" .. floorname);
  70.         end
  71.         -- elseif(not redstone.getInput(butside) and not closed) then
  72.         --     rednet.send(host, "doorclose");
  73.         --     closed = true;
  74.         -- end
  75.         sleep(0.25);
  76.     end
  77. end
  78.  
  79. -- local function waitsleep()
  80. --     sleep(0.5);
  81. -- end
  82.  
  83.  
  84. while true do
  85.     print("running");
  86.     iam();
  87.     parallel.waitForAny(msgs, redstoneinput);
  88.     -- redstoneinput();
  89.     -- msgs();
  90. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement