Advertisement
Inksaver

MobSoftenerStartup

Jun 25th, 2023
872
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.21 KB | Source Code | 0 0
  1. version = 20230625.1400
  2. --[[
  3. MobSoftenerStartup:
  4. save as startup.lua to auto- start
  5. Setup must be run first!
  6. https://pastebin.com/AbYQMD5H
  7. ]]
  8. local function activate(layout, computerType)
  9.     rs.setAnalogueOutput("top", 15)     -- close upper block
  10.     print("Upper gate closed")
  11.     rs.setAnalogueOutput("bottom", 15)  -- close lower block
  12.     print("lower gate closed")
  13.     rs.setAnalogueOutput(layout, 15)    -- dispense lava
  14.     print("Lava dispensed")
  15.     sleep(0.2)
  16.     rs.setAnalogueOutput(layout, 0)     -- reset dispenser ready for collecting lava
  17.     if computerType == "server" then
  18.         modem.transmit(1,1,"open")
  19.     end
  20. end
  21.  
  22. local function reset()
  23.     sleep(0.5)
  24.     rs.setAnalogueOutput("top", 15)     -- close upper block
  25.     print("Upper gate closed")
  26.     rs.setAnalogueOutput("bottom", 15)  -- close lower block
  27.     print("lower gate closed")
  28.     sleep(0.5)
  29.     rs.setAnalogueOutput("top", 0)      -- close upper block
  30.     rs.setAnalogueOutput("bottom", 0)   -- close lower block
  31. end
  32.  
  33.  
  34. local function deactivate(layout, computerType)
  35.     rs.setAnalogueOutput(layout, 15)    -- collect lava
  36.     print("Lava recovered")
  37.     sleep(0.2)
  38.     rs.setAnalogueOutput(layout, 0)     -- reset dispenser ready for dispensingg lava
  39.     rs.setAnalogueOutput("top", 0)  -- close upper block
  40.     print("Upper gate opened")
  41.     rs.setAnalogueOutput("bottom", 0)   -- close lower block
  42.     if computerType == "server" then
  43.         modem.transmit(1,1,"close")
  44.     end
  45.    
  46.     print("Lower gate opened\n")
  47.     print("Waiting for player to activate")
  48. end
  49.  
  50. local function standby(text)
  51.     term.clear()
  52.     term.setCursorPos(1,1)
  53.     print(text)
  54. end
  55.  
  56. local function client(layout)
  57.     standby("Initiated: Waiting for server")
  58.     local state = rs.getAnalogueInput(layout)
  59.     while true do  
  60.         local _, side, freq, rfreq, message = os.pullEvent('modem_message')
  61.         if message == "close" then
  62.             reset()
  63.         else
  64.             standby("Waiting for server")
  65.         end
  66.     end
  67. end
  68.  
  69. local function main()
  70.     if fs.exists("config.txt") then                 -- if config file set
  71.         local input = "left"                        -- default side to get redstone input
  72.         local config = fs.open("config.txt", "r")   -- read config file
  73.         local computerType = config.readLine()      -- "single", "server", "client"
  74.         local layout = config.readLine()            -- "left", "right"
  75.         if layout == "left" then
  76.             input = "right"
  77.         end
  78.         local pistonType = config.readLine()        -- "sticky", "regular"
  79.         config.close()                              -- close config file
  80.        
  81.         if computerType == "client" then            -- only needs to activate pistons
  82.             local modem = peripheral.wrap("back")           -- attach the modem
  83.             modem.open(1)                           -- open modem for listening
  84.             client(layout)                          -- call observation loop for network messages
  85.         else
  86.             if computerType == "server" then        -- server  / client with network and regular pistons
  87.                 modem = peripheral.wrap("back")     -- attach modem
  88.             end
  89.             standby("Waiting for player to activate")
  90.             local state = rs.getAnalogueInput(input)
  91.             while true do
  92.                 local rsIn = rs.getAnalogueInput(input)
  93.                 if rsIn ~= state then
  94.                     state = rsIn
  95.                     if rsIn > 0 then
  96.                         activate(layout, computerType)
  97.                     else
  98.                         deactivate(layout, computerType)
  99.                     end
  100.                 end
  101.                 os.pullEvent("redstone")
  102.             end
  103.         end
  104.     else
  105.         print("File config.txt not found. Use setup.lua and restart")
  106.     end
  107. end
  108.  
  109. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement