Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
-- Peripheral setup local modem = peripheral.find("modem") or error("No modem found", 0) local monitor = peripheral.wrap("front") or error("No monitor on front", 0) -- Monitor setup monitor.setTextScale(0.5) monitor.setBackgroundColor(colors.cyan) monitor.clear() local function drawLabel(y, text) monitor.setCursorPos(1, y) monitor.clearLine() monitor.write(text) end local function drawUI() drawLabel(4, "Fuel Feed") drawLabel(5, "-=-=-=-=-=-=-=-") drawLabel(8, "Clutch") drawLabel(9, "-=-=-=-=-=-=-=-") drawLabel(12, "Output") drawLabel(13, "-=-=-=-=-=-=-=-") monitor.setCursorPos(4, 1) monitor.write("Turbine #1") end drawUI() term.clear() term.setCursorPos(1, 1) print("Running...") -- Core Functions local function transmitAndDisplay(channelOut, channelIn, mode, yPos, bgColor, side, pulse) if side then rs.setOutput(side, true) end modem.transmit(channelOut, channelIn, mode) monitor.setCursorPos(1, yPos) monitor.clearLine() monitor.blit(mode, ("0"):rep(#mode), bgColor) if pulse then sleep(1); if side then rs.setOutput(side, false) end end end local function fuelFeed(side, mode, bgColor) transmitAndDisplay(3, 4, mode, 6, bgColor, side, true) end local function shift(side, mode, bgColor) rs.setOutput("left", false) transmitAndDisplay(2, 3, mode, 10, bgColor, side, true) end local function modemCall(channel, callback) modem.open(channel) local _, _, _, _, message = os.pullEvent("modem_message") modem.close(channel) if callback then callback(message) end return message end local function battCall() return tonumber(modemCall(4, function(msg) term.setCursorPos(1, 2) term.clearLine() print(msg) end)) or 0 end local function outputCall() modemCall(5, function(msg) monitor.setCursorPos(1, 14) monitor.clearLine() monitor.write(msg) end) end -- Main control loop local inject, delay = 0, 0 while not rs.getInput("front") do local batt = battCall() local speed = rs.getAnalogInput("right") outputCall() if inject == 1 then delay = delay + 1 end if delay >= 280 then inject, delay = 0, 0 end if speed == 0 then shift("top", "Offline", "eeeeeee") if batt <= 30 and inject == 0 then fuelFeed("bottom", "Engaged", "ddddddd") inject = 1 elseif batt >= 35 then fuelFeed("top", "Offline", "eeeeeee") end elseif speed <= 8 then shift("top", "Low RPM", "1111111") if batt >= 35 then fuelFeed("top", "Offline", "eeeeeee") end else shift("left", "Engaged", "ddddddd") if batt >= 35 then fuelFeed("top", "Offline", "eeeeeee") end end end
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)