Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- Server pro automatizaci vyhybek Immersive Railroading pomoci ComputerCraftu, instalace jako autorun:
- edit startup: multishell.launch({},"/Vyhybky.lua")
- pastebin get VAvHgZDv /Vyhybky.lua
- Endermodem na strane "top" (komunikace CNS - odpovedi na dotaz, zda pro vlak aktivovat vyhybku a informace o poloze a smeru vlaku)
- Prichozi: DVyhybka:tag (napr. "DHTJDepo:Dieselka" = DHTJDepo - Detector u vyhybky Hlavni Trat smer Jih u Depo, tag vlaku Dieselka).
- Odchozi: Vyhybka:1 (napr. "HTJDepo:1" = aktivuj vyhybku na Hlavni Trati ve smeru Jih na odbocce do Depa, nebo "...:0" pro klid).
- Pokud pro prijaty detektor a dany vlak (jeho tag) existuje shoda, odesle se pozadavek na aktivaci vyhybky (není-li, posle se klid).
- Format seznamu detektoru a vlaku v souboru Vyhybky.txt je:
- {
- TagVlaku = {"jmena", "detektoru", "aktivujicich", "vyhybky"} -- dalsi tag jako nove podpole
- }
- --]]
- -- Nacteni seznamu vlaku a jejich vyhybek ze souboru
- file = fs.open("Vyhybky.txt","r")
- Seznam = textutils.unserialize(file.readAll())
- file.close()
- -- Kanal pro komunikaci s CNS
- local modemport = 6611
- -- Potrebne komponenty
- local modem = peripheral.wrap("left")
- local monitor = peripheral.find("monitor")
- -- Hlavni telo programu
- term.redirect(monitor)
- term.clear()
- term.setCursorPos(1,1)
- modem.open(modemport)
- print("Cekam na prijem dotazu ...")
- -- V nekonecne smycce cekame na zachyceni eventu...
- while true do
- local event, modemSide, senderChannel, replyChannel, message, senderDistance = os.pullEvent("modem_message")
- print("Prijato: "..message)
- local act = false
- local dvojtecka, _ = string.find(message,":")
- local det = string.sub(message,2,dvojtecka-1) -- Od druheho znaku (prvni znak je D) do znaku pred dvojteckou
- local tag = string.sub(message,dvojtecka+1,-1) -- Od znaku za dvojteckou do posledniho (pozice -1 je posledni znak)
- -- Pokud vlak nema tag, bude s nim CNS zachazet jako s tagem "testing"
- if (string.len(tag) == 0) then tag = "testing"; print("Prazdny tag = \"testing\"") end
- -- Vyhledani vyhybky podle tagu vlaku
- for _,vyhybka in pairs(Seznam[tag]) do
- -- Pokud je v seznamu, bude act = true a pokud ne, zustane act = false
- if (det == vyhybka) then
- act = true
- break
- end
- end
- -- Pokud je act = true, vyhybka je v seznamu a aktivujeme ji (jinak ji prepneme do klidu)
- if (act) then
- modem.transmit(modemport,modemport,det..":1")
- print("Vyhybka "..det.." aktivni.")
- else
- modem.transmit(modemport,modemport,det..":0")
- print("Vyhybka "..det.." v klidu.")
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement