Jump to content

Recommended Posts

Posted

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

 

  • Recently Browsing   0 members

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

Important Information

Terms of Use Privacy Policy