patwrobel Posted January 24 Posted January 24 Witam, mam następujące problemy. Zrobiłem pociąg osobowy, który jedzie przed NASZYM towarem i jest sterowany przez BOT. Zauważyłem kilka problemów, które są błędem gry lub można to jakoś obejść włączając specjalny tryb tego BOTa ale nie wiem jak. Bota tworzę tak: SpawnTrainsetOnSignalAsync( "PassengerTrain", FindSignal(aSignalName), aDistance, false, false, true, { CreateNewSpawnVehicleDescriptor(LocomotiveNames.EN57_650, false), CreateNewSpawnVehicleDescriptor(LocomotiveNames.EN57_650, false) }, function (trainset) LOCAL.PassengerTrain = trainset; trainset.SetTimetable(LoadTimetableFromFile("PassengerTrain.xml"), true); trainset.SetState(DynamicState.dsStop, TrainsetState.tsTrain, true); Coroutine(PassengerTrain__OnLoad); end ); Pierwszy problem jest taki że nie zawsze zatrzymuje się na przystankach - tak mi się zdaje bo za szybko dociera do następnej dużej stacji (niezgodnie z rozkładem co sugeruje że nie zatrzymuje się po drodze - dużo przed co jest nie możliwe gdyby z poprzedniego przystanku odjechał zgodnie z rozkładem). Wydaje mi się że to się dzieje jak odjedzie za daleko ode mnie i przestaje być obiektem graficznym a staje się tylko "klockiem" (podczas Developer Mode można to zaobserwować jak się teleportuje do niego). Pewnie wówczas ma ograniczoną fizykę itp. Może da się to jakoś wyłączyć? Chciałem w funkcji SpawnTrainsetOnSignalAsync ustawić parametr isDummyVehicle na false ale wówczas w ogóle sam nie jedzie! Drugi problem to taki że ustawiłem mu na jakiś event BotCommand -> bcDriveLength: CreateMediumBotCommand(BotCommandType.bcDriveLength, "DriveLength", aDistance, 0, false, false, true) Jak jestem blisko to działa bez zarzutu mniej więcej po ustalanej odległości BOT zatrzymuje się potem mam kolejną komendę do zmiany stanu na dsCold i jest OK. Jednak jak jestem daleko od akcji BOT jedzie dalej do następnego semafora. Trzeci problem chciałem weryfikować czy BOT zatrzymał się już poprzez komendę: coroutine.yield(CoroutineYields.WaitForVehicleStop, LOCAL.PassengerTrain.Vehicles[1]); Jak jestem blisko wszystko działa jak BOT odjedzie leci błąd bo Vehicles jest NULL - wiec jak można to weryfikować?
Recommended Posts