Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- valve
- -- Pours and retrieves water at specified time intervals
- -- Written by HarvDad, June 2014
- args = {...}
- nArgs = #args
- version = "valve: Rev 1.0"
- mission = "Pour and retrieve water at intervals."
- instructions = "Place full bucket in slot 1, empty bucket in slot 2."
- usage1 = "usage: valve <direction> <t1> <t2>"
- usage2 = " direction = up, down, forward"
- usage3 = " t1 = seconds after pour"
- usage4 = " t2 = seconds after retrieval"
- secondsAfterPouring = 10
- secondsAfterRetrieving = 30
- up = 0
- down = 1
- forward = 2
- direction = 0
- abort = false
- function synchWithServerTime()
- print("Waiting for synch...")
- while true do
- time = os.time()
- timeStr = tostring(time)
- tailStr = string.sub(timeStr, -3)
- tail = tonumber(tailStr)
- if tail > 995 then
- break
- end
- sleep(0)
- end
- end
- function needWater(direction)
- if direction == up then
- turtle.select(1)
- if turtle.compareTo(3) then
- return true
- end
- elseif direction == down then
- turtle.select(2)
- if turtle.compareTo(3) then
- return true
- end
- end
- return false
- end
- -- prep: Retrieve any water possibly left over from previous run
- function prep()
- turtle.select(1)
- if turtle.compareTo(3) then
- if needWater(up) then
- turtle.placeUp()
- end
- if needWater(down) then
- turtle.placeDown()
- end
- end
- end
- function updateWater()
- turtle.select(1)
- turtle.placeUp()
- turtle.select(2)
- turtle.placeDown()
- end
- function doTheRightThing()
- local naptime = 0
- turtle.select(1)
- if turtle.compareTo(3) then
- napTime = secondsAfterRetrieving
- -- print("Retrieving water. napTime = ", napTime)
- else
- napTime = secondsAfterPouring
- -- print("Pouring water. napTime = ", napTime)
- end
- updateWater()
- return napTime
- end
- -- Main program
- if nArgs == 0 or (nArgs == 1 and args[1]== "help") then
- print(version)
- print(instructions)
- print(usage1)
- print(usage2)
- print(usage3)
- print(usage4)
- return
- end
- if nArgs < 2 or nArgs > 2 then
- print(usage1)
- print(usage2)
- print(usage3)
- print(usage4)
- return
- end
- secondsAfterPouring = tonumber(args[1])
- if secondsAfterPouring == nil then
- print("\"", args[1], "\" is not a valid time interval")
- return
- end
- if secondsAfterPouring < 1 then
- print("t1 must be a positive integer")
- return
- end
- secondsAfterRetrieving= tonumber(args[2])
- if secondsAfterRetrieving == nil then
- print("\"", args[2], "\" is not a valid time interval")
- return
- end
- if secondsAfterRetrieving < 1 then
- print("t2 must be a positive integer")
- return
- end
- if turtle.getItemCount(1) == 0 or turtle.getItemCount(2) == 0 then
- print("If no water running yet,")
- print(" place full bucket in slot 1.")
- print("If water is already running,")
- print(" place empty bucket in slot 1.")
- print("Always have empty bucket in slot 2 as comparitor.")
- return
- end
- prep()
- --synchWithServerTime()
- -- Main loop
- print("Beginning loop...")
- print("secondsAfterPouring: ", secondsAfterPouring, " secondsAfterRetrieving: ", secondsAfterRetrieving)
- while true do
- if abort then
- break
- end
- napTime = doTheRightThing()
- sleep(napTime)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement