Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local getNumber, getCpuNum, getModem, getMonitor, updateStatus, writeToLog
- function getModem(isWireless)
- for k,v in pairs(rs.getSides()) do
- if peripheral.getType(v)=="modem" and peripheral.call(v,"isWireless")==isWireless then return v end
- end
- return false
- end
- function getMonitor()
- for k,v in pairs(rs.getSides()) do
- if peripheral.getType(v)=="monitor" then return v end
- end
- return false
- end
- local sWire=getModem(false)
- local sMon=getMonitor()
- if not sWire or not sMon then error("Needs wired modem and monitor.") end
- term.clear()
- term.setCursorPos(1,1)
- local pWire=peripheral.wrap(sWire)
- local pMon=peripheral.wrap(sMon)
- function callRemote(call)
- local function cake()
- callRemote("shutdown")
- callRemote("turnOn")
- end
- if call=="reboot" then return cake() end
- for k,v in pairs(pWire.getNamesRemote()) do
- if pWire.getTypeRemote(v)=="computer" then
- local numz=((getNumber()~=0 and getNumber()+1) or 0)
- pWire.callRemote(v,call)
- if call~="shutdown" then
- sleep(0.2)
- pWire.transmit(1234,1234,numz)
- sleep(0.05)
- end
- end
- end
- end
- local function centerPrint(text, ny)
- if type(text) == "table" then for _, v in pairs(text) do centerPrint(v) end
- else
- local x, y = term.getCursorPos()
- local w, h = term.getSize()
- term.setCursorPos(w/2 - text:len()/2 + (#text % 2 == 0 and 1 or 0), ny or y)
- print(text)
- end
- end
- function updateStatus(stat,line)
- line=line or 10
- term.setCursorPos(1,line)
- term.clearLine()
- centerPrint(stat,line)
- end
- function getNumber()
- return (getCpuNum()>0 and (getCpuNum()*128)-1) or 0
- end
- function getCpuNum()
- local i=0
- for k,v in pairs(peripheral.getNames()) do
- if peripheral.getType(v)=="computer" and peripheral.call(v,"getID") then
- i=i+1
- end
- end
- return i
- end
- function writeToLog(...)
- local args={...}
- local string=table.concat(args)
- local f=fs.open("log","a")
- f.writeLine(string)
- f.close()
- end
- pMon.clear()
- pMon.setCursorPos(1,1)
- pWire.closeAll()
- pWire.open(1337)
- pWire.closeAll()
- pWire.open(9001)
- pWire.open(1337)
- pWire.open(1301)
- callRemote("reboot")
- local num=getNumber()
- if num<0 then num=0 end
- updateStatus("RedIntercept Server CPU",1)
- updateStatus("S for shutdown",2)
- updateStatus("R for reboot",3)
- updateStatus("T for turn on",4)
- updateStatus("E to exit",5)
- local isAlive=true
- while true do
- num=getNumber()
- updateStatus("Live Computers: "..getCpuNum(),6)
- updateStatus("Channel Range: 0 - "..num,7)
- local e={os.pullEventRaw()}
- if e[1]=="char" then
- if e[2]=="s" then
- updateStatus("Shutting down computers.")
- updateStatus("Shutting down",9)
- callRemote("shutdown")
- updateStatus("Shut down",9)
- isAlive=false
- num=getNumber()
- elseif e[2]=="r" then
- updateStatus("Rebooting computers.")
- updateStatus("Rebooting",9)
- callRemote("reboot")
- updateStatus("Online",9)
- num=getNumber()
- isAlive=true
- elseif e[2]=="t" then
- updateStatus("Booting computers.")
- updateStatus("Booting",9)
- callRemote("turnOn")
- updateStatus("Online",9)
- isAlive=true
- num=getNumber()
- elseif e[2]=="e" then
- term.clear()
- term.setCursorPos(1,1)
- centerPrint("Thanks for using RedIntercept",1)
- centerPrint("By Mudkip",2)
- return
- end
- elseif e[1]=="modem_message" then
- if e[3]==9001 then
- local tMessage=textutils.unserialize(e[5])
- term.redirect(pMon)
- print("Channel: "..tMessage[1])
- writeToLog("Channel: "..tMessage[1])
- print("ReplyChannel: "..tMessage[2])
- writeToLog("ReplyChannel: "..tMessage[2])
- print("Message:")
- writeToLog("Message:")
- print(tMessage[3])
- writeToLog(tMessage[3])
- print("Distance: "..tostring(tMessage[4]))
- writeToLog("Distance: "..tostring(tMessage[4]))
- print("--End of Transmission--")
- writeToLog("-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-")
- term.restore()
- elseif e[3]==1301 then
- pWire.transmit(1234,1234,((getNumber()~=0 and getNumber()-127) or 0))
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment