misiek_131415 Posted May 27, 2024 Posted May 27, 2024 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
SIMRAIL Team inomushis Posted May 29, 2024 SIMRAIL Team Posted May 29, 2024 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. 1
misiek_131415 Posted May 29, 2024 Author Posted May 29, 2024 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?
SIMRAIL Team Królik Uszasty Posted May 29, 2024 SIMRAIL Team Posted May 29, 2024 W pliku SimRail_Data\StreamingAssets\LuaModules\SimRailCore.lua - otwieramy notatnikiem. 1
SIMRAIL Team inomushis Posted May 29, 2024 SIMRAIL Team Posted May 29, 2024 https://wiki.simrail.eu/LUA/List-of-functions 1
Recommended Posts