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ć?