Jump to content

Tworzenie ścieżki dla pociągu w scenariuszu


Recommended Posts

Mam problem. Poniżej wklejam moje "dzieło" Kiedyś dawno temu liznąłem podstawy C++, Delphi, VB. Więc jako takie pojęcie mam jak ten LUA może działać. Ale baaaaaardzo mgliste:)))

Chcę zrobić przelot przez Katowice. Wymyśliłem takie coś, a raczej podpatrzyłem w innych scenariuszach oryginalnych i graczy. Ważne że na razie działa i dojechałem tak z Kato do Ząbkowic.  Tylko że to moje rozwiązanie to działa tak że każdy następny semafor aktywuje się po przejechaniu poprzedniego. Dotyczy tylko w obrębie stacji. Pomiędzy stacjami to wiadomo że jak tor wolny to zielone zawsze.  Zwiększanie wartości w [m] ile od semafora ma się polecenie wczytać nie ma znaczenia. Każdy semafor przejeżdzamy z wiedzą że następny jest czerwony i dopiero po minięciu sygnału pomarańczowego mamy kolejny semafor zielony. Dla gracza korzystającego z podpowiedzi pod klawiszem F2 w czasie gry to bez znaczenia. Ale dla kogoś grającego bez tego to masakra bo ciągle nie wie czy będzie czerwone czy zmieni się na zielone. Jeżeli ktoś obyty z tym tematem ma czas i chęci proszę o podpowiedz. Czy te moje linijki kodu można jakoś zmodyfikować czy też ten mój sposób do ślepy zaułek i innych poleceń/funkcji/zmiennych muszę użyć. Jak to przerobić żeby mi wyświetlało kilka semaforów jednocześnie do przodu. Np cały przelot przez KO. Albo KZ. A nie tylko od semafora do semafora. Jak ktoś ma czas i chęci z góry dziękuję. 

 

 

CreateSignalTrigger(FindSignal("KO_O"), 300,
{
        check = UnconditialCheck,
        result = function (state) VDSetRoute("KO_O", "KO_M5", VDOrderType.TrainRoute)
        trainset.SetState(DynamicState.dsStop, TrainsetState.tsTrain, true)
        end
})
 
CreateSignalTrigger(FindSignal("KO_M5"), 1100,
{
        check = UnconditialCheck,
        result = function (state) VDSetRoute("KO_M5", "KO_E15", VDOrderType.TrainRoute)
         trainset.SetState(DynamicState.dsStop, TrainsetState.tsTrain, true)
        end
})
 
CreateSignalTrigger(FindSignal("KO_E15"), 1000,
{
        check = UnconditialCheck,
        result = function (state) VDSetRoute("KO_E15", "KO_Akps", VDOrderType.TrainRoute)
        trainset.SetState(DynamicState.dsStop, TrainsetState.tsTrain, true)
        end
})
 
CreateSignalTrigger(FindSignal("KZ_P"), 2000,
{
       check = UnconditialCheck,
       result = function (state) VDSetRoute("KZ_P", "KZ_G", VDOrderType.TrainRoute)
       trainset.SetState(DynamicState.dsStop, TrainsetState.tsTrain, true)
       end

 

Link to comment
Share on other sites

  • SIMRAIL Team

Możesz nastawić więcej niż jeden przebieg, jeden po drugim - z jednego triggera.

 

CreateSignalTrigger(FindSignal("KO_O"), 300,
{
        check = UnconditialCheck,
        result = function (state) 
            VDSetRoute("KO_O", "KO_M5", VDOrderType.TrainRoute)
            VDSetRoute("KO_M5", "KO_E15", VDOrderType.TrainRoute)
        end
})

 

PS. Nie musisz za każdym triggerem zmieniać stanu pociągu na dsStop/tsTrain. W zasadzie robisz to tylko po spawnie, żeby określić czy gracz przejmuje maszynę na zimno, czy na gorąco.

  • Thanks 1
Link to comment
Share on other sites

2 godziny temu, inomushis napisał(a):

Nie musisz za każdym triggerem zmieniać stanu pociągu na dsStop/tsTrain

Nie wiedziałem co to jest:) Wklejałem bo tak gdzieś podpatrzyłem. Działało:) 

Czyli  DynamicState.dsStop    to mamy czy zaczynamy stojąc czy w ruchu? A  TrainsetState.tsTrain  to jest czy zimna czy ciepła lokomotywa? W ruchu loko to będzie dsRun a zimna zmieniamy warunek na końcu na false? Tak to będzie? 

Jest gdzieś spis tych komend tych wszystkich true i false? Żeby zobaczyć co jaka komenda oznacza? Np w spawnie lokomotywy jest chyba za podaniem semafora odległość od semafora i kilka razy true, true, true, true.  Może jest to gdzieś opisane i można poczytać sobie na ten temat?  

 

 

 

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy