Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- version = 20230625.1400
- --[[
- MobSoftenerStartup:
- save as startup.lua to auto- start
- Setup must be run first!
- https://pastebin.com/AbYQMD5H
- ]]
- local function activate(layout, computerType)
- rs.setAnalogueOutput("top", 15) -- close upper block
- print("Upper gate closed")
- rs.setAnalogueOutput("bottom", 15) -- close lower block
- print("lower gate closed")
- rs.setAnalogueOutput(layout, 15) -- dispense lava
- print("Lava dispensed")
- sleep(0.2)
- rs.setAnalogueOutput(layout, 0) -- reset dispenser ready for collecting lava
- if computerType == "server" then
- modem.transmit(1,1,"open")
- end
- end
- local function reset()
- sleep(0.5)
- rs.setAnalogueOutput("top", 15) -- close upper block
- print("Upper gate closed")
- rs.setAnalogueOutput("bottom", 15) -- close lower block
- print("lower gate closed")
- sleep(0.5)
- rs.setAnalogueOutput("top", 0) -- close upper block
- rs.setAnalogueOutput("bottom", 0) -- close lower block
- end
- local function deactivate(layout, computerType)
- rs.setAnalogueOutput(layout, 15) -- collect lava
- print("Lava recovered")
- sleep(0.2)
- rs.setAnalogueOutput(layout, 0) -- reset dispenser ready for dispensingg lava
- rs.setAnalogueOutput("top", 0) -- close upper block
- print("Upper gate opened")
- rs.setAnalogueOutput("bottom", 0) -- close lower block
- if computerType == "server" then
- modem.transmit(1,1,"close")
- end
- print("Lower gate opened\n")
- print("Waiting for player to activate")
- end
- local function standby(text)
- term.clear()
- term.setCursorPos(1,1)
- print(text)
- end
- local function client(layout)
- standby("Initiated: Waiting for server")
- local state = rs.getAnalogueInput(layout)
- while true do
- local _, side, freq, rfreq, message = os.pullEvent('modem_message')
- if message == "close" then
- reset()
- else
- standby("Waiting for server")
- end
- end
- end
- local function main()
- if fs.exists("config.txt") then -- if config file set
- local input = "left" -- default side to get redstone input
- local config = fs.open("config.txt", "r") -- read config file
- local computerType = config.readLine() -- "single", "server", "client"
- local layout = config.readLine() -- "left", "right"
- if layout == "left" then
- input = "right"
- end
- local pistonType = config.readLine() -- "sticky", "regular"
- config.close() -- close config file
- if computerType == "client" then -- only needs to activate pistons
- local modem = peripheral.wrap("back") -- attach the modem
- modem.open(1) -- open modem for listening
- client(layout) -- call observation loop for network messages
- else
- if computerType == "server" then -- server / client with network and regular pistons
- modem = peripheral.wrap("back") -- attach modem
- end
- standby("Waiting for player to activate")
- local state = rs.getAnalogueInput(input)
- while true do
- local rsIn = rs.getAnalogueInput(input)
- if rsIn ~= state then
- state = rsIn
- if rsIn > 0 then
- activate(layout, computerType)
- else
- deactivate(layout, computerType)
- end
- end
- os.pullEvent("redstone")
- end
- end
- else
- print("File config.txt not found. Use setup.lua and restart")
- end
- end
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement