LukasBor

CC_IR_switch_CNS_client

Feb 28th, 2021 (edited)
567
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --[[
  2. Client pro automatizaci vyhybek Immersive Railroading pomoci ComputerCraftu, instalace jako autorun: pastebin get smYLYNKv startup .
  3.  
  4. Detector (mode Computer) na horni (top), endermodem na spodni (bottom), trigger: Detector (Stock) jako druhy ve smeru (s redstonem),
  5. vystup redstonu pro ovladani vyhybky je na prave strane (redstone true je vyhybka aktivovana, redstone false je vyhybka v klidu).
  6.  
  7. Pokud ma pocitac na horni strane detector, bude odesilat zpravy o projizdejicich vlacich pri prejezdu triggeru.
  8. Format: DVyhybka:tag (napr. "DHTJDepo:Dieselka" = DHTJDepo - Detector pro vyhybku Hlavni Trat smer Jih do Depo , tag vlaku Dieselka).
  9. Nema-li detector, prejde do rezimu aktivatoru sve vyhybky a bude cekat na zpravu kde je uveden jako ten, kdo ma vyhybku aktivovat.
  10. Format: Vyhybka:1 (napr. "HTJDepo:1" = aktivuj vyhybku na Hlavni Trati ve smeru Jih na odbocce do Depa, nebo "...:0" pro klid).
  11.  
  12. Pojmenovani vlaku Computerem z CC a detectorem na zadni strane (mode Computer) prikazem: peripheral.wrap("back").setTag("Vlak")
  13. --]]
  14.  
  15. -- Komunikace s CNS
  16. local Vyhybka = "HTJDepo" -- jmeno vyhybky, kterou ovlada nebo pro kterou je detektorem (napr. Hlavni Trat smer Jih, odbocka Depo)
  17. local modemport = 6611 -- port pro komunikaci
  18.  
  19. -- Potrebne komponenty
  20. local detector = peripheral.wrap("top")
  21. local modem = peripheral.wrap("bottom")
  22.  
  23. -- Hlavni telo programu
  24. term.clear()
  25. term.setCursorPos(1,1)
  26. -- Bude pocitac v rezimu odesilani tagu nebo aktivace vyhybky? Pokud detector ~= nil, bude odesilat tagy (ma detector)
  27. if (detector ~= nil) then -- Pocitac ma detektor
  28.   -- Nastavime ComputerLabel podle Vyhybky (pokud neni stejny)
  29.   if (os.getComputerLabel() ~= ("D"..Vyhybka)) then os.setComputerLabel("D"..Vyhybka) end
  30.   -- V nekonecne smycce cekame na prijezd lokomotivy/vlaku
  31.   print("Cekam na prijezd vlaku ...")
  32.   while true do
  33.     local event_name, address, augment_type, stock_uuid = os.pullEvent("redstone")
  34.     local info = detector.info()
  35.    -- Mame vsechna potrebna data platna? (detector.info nesmi byt prazdny = bez vlaku)
  36.     if (info ~= nil) then
  37.    -- Vypis dat do terminalu
  38.       print("  Tag: "..info.tag)
  39.       print("  Loko: "..info.name)
  40.       print("  Smer: "..info.direction)
  41.       print("  Rychlost: "..math.floor(info.speed).." km/h")
  42.      -- Sestaveni zpravy
  43.       local zprava = ("D"..Vyhybka..":"..info.tag)
  44.      -- Odeslani zpravy do CNS
  45.       modem.transmit(modemport,modemport,zprava)
  46.       print("Zprava odeslana do CNS: "..zprava)
  47.       print("")
  48.       print("Cekam na prijezd vlaku ...")
  49.       sleep(1)
  50.     end
  51.   end
  52. else -- Pocitac nema detector
  53.   -- Nastavime ComputerLabel podle Vyhybky (pokud neni stejny)
  54.   if (os.getComputerLabel() ~= Vyhybka) then os.setComputerLabel(Vyhybka) end
  55.   -- V nekonecne smycce cekame na prijem zpravy
  56.   while true do
  57.     print("Cekam na zpravu se jmenem "..Vyhybka.." ...")
  58.     modem.open(modemport)
  59.     local event, modemSide, senderChannel, replyChannel, message, senderDistance = os.pullEvent("modem_message")
  60.     print("Prijata zprava: "..message)
  61.     if ((string.sub(string.lower(message), 1, -3)) == string.lower(Vyhybka)) then -- zprava je pro me
  62.       if (string.sub(message, -1) == "1") then -- zprava konci 1, aktivuj vyhybku
  63.         redstone.setOutput("right",true)
  64.         print("Vyhybka aktivni.")
  65.       else -- zprava nekonci 1, vyhybka v klidu
  66.         redstone.setOutput("right",false)
  67.         print("Vyhybka v klidu.")
  68.       end
  69.     end
  70.     print("")
  71.   end
  72. end
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×