Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- Client pro automatizaci vyhybek Immersive Railroading pomoci ComputerCraftu, instalace jako autorun: pastebin get smYLYNKv startup .
- Detector (mode Computer) na horni (top), endermodem na spodni (bottom), trigger: Detector (Stock) jako druhy ve smeru (s redstonem),
- vystup redstonu pro ovladani vyhybky je na prave strane (redstone true je vyhybka aktivovana, redstone false je vyhybka v klidu).
- Pokud ma pocitac na horni strane detector, bude odesilat zpravy o projizdejicich vlacich pri prejezdu triggeru.
- Format: DVyhybka:tag (napr. "DHTJDepo:Dieselka" = DHTJDepo - Detector pro vyhybku Hlavni Trat smer Jih do Depo , tag vlaku Dieselka).
- Nema-li detector, prejde do rezimu aktivatoru sve vyhybky a bude cekat na zpravu kde je uveden jako ten, kdo ma vyhybku aktivovat.
- Format: Vyhybka:1 (napr. "HTJDepo:1" = aktivuj vyhybku na Hlavni Trati ve smeru Jih na odbocce do Depa, nebo "...:0" pro klid).
- Pojmenovani vlaku Computerem z CC a detectorem na zadni strane (mode Computer) prikazem: peripheral.wrap("back").setTag("Vlak")
- --]]
- -- Komunikace s CNS
- local Vyhybka = "HTJDepo" -- jmeno vyhybky, kterou ovlada nebo pro kterou je detektorem (napr. Hlavni Trat smer Jih, odbocka Depo)
- local modemport = 6611 -- port pro komunikaci
- -- Potrebne komponenty
- local detector = peripheral.wrap("top")
- local modem = peripheral.wrap("bottom")
- -- Hlavni telo programu
- term.clear()
- term.setCursorPos(1,1)
- -- Bude pocitac v rezimu odesilani tagu nebo aktivace vyhybky? Pokud detector ~= nil, bude odesilat tagy (ma detector)
- if (detector ~= nil) then -- Pocitac ma detektor
- -- Nastavime ComputerLabel podle Vyhybky (pokud neni stejny)
- if (os.getComputerLabel() ~= ("D"..Vyhybka)) then os.setComputerLabel("D"..Vyhybka) end
- -- V nekonecne smycce cekame na prijezd lokomotivy/vlaku
- print("Cekam na prijezd vlaku ...")
- while true do
- local event_name, address, augment_type, stock_uuid = os.pullEvent("redstone")
- local info = detector.info()
- -- Mame vsechna potrebna data platna? (detector.info nesmi byt prazdny = bez vlaku)
- if (info ~= nil) then
- -- Vypis dat do terminalu
- print(" Tag: "..info.tag)
- print(" Loko: "..info.name)
- print(" Smer: "..info.direction)
- print(" Rychlost: "..math.floor(info.speed).." km/h")
- -- Sestaveni zpravy
- local zprava = ("D"..Vyhybka..":"..info.tag)
- -- Odeslani zpravy do CNS
- modem.transmit(modemport,modemport,zprava)
- print("Zprava odeslana do CNS: "..zprava)
- print("")
- print("Cekam na prijezd vlaku ...")
- sleep(1)
- end
- end
- else -- Pocitac nema detector
- -- Nastavime ComputerLabel podle Vyhybky (pokud neni stejny)
- if (os.getComputerLabel() ~= Vyhybka) then os.setComputerLabel(Vyhybka) end
- -- V nekonecne smycce cekame na prijem zpravy
- while true do
- print("Cekam na zpravu se jmenem "..Vyhybka.." ...")
- modem.open(modemport)
- local event, modemSide, senderChannel, replyChannel, message, senderDistance = os.pullEvent("modem_message")
- print("Prijata zprava: "..message)
- if ((string.sub(string.lower(message), 1, -3)) == string.lower(Vyhybka)) then -- zprava je pro me
- if (string.sub(message, -1) == "1") then -- zprava konci 1, aktivuj vyhybku
- redstone.setOutput("right",true)
- print("Vyhybka aktivni.")
- else -- zprava nekonci 1, vyhybka v klidu
- redstone.setOutput("right",false)
- print("Vyhybka v klidu.")
- end
- end
- print("")
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement