Pojawił się problem przy pisaniu scenariusza w następującej sytuacji:
Lokomotywa AI startuje ze stacji. Dostaje wyjazd na sygnał S10 (jazda z prędkością 40 km/h, a potem z największą dozwoloną prędkością). Po przejechaniu zwrotnicy AI nie potrafił się rozpędzić, podążał z małą prędkością. Ogólnie czasem zachodzi potrzeba zmiany prędkości w sytuacji, gdy AI nie mija semafora. Z tego względu stworzyłem plik change_vel.inc. Kod przedstawia się następująco:
//"Semafor" fizycznie nieistniejący, pozwalający zadać AI różne prędkości.
//Autor: Benek
//Przykładowy wpis ma postać: include;change_vel.inc;unvissem;;;;;;;end gdzie unvissem to dowolna nazwa, wpisana przez //usera
// PODSTAWOWE ZDARZENIA:
//odczyt z pamieci (zdarzenie przypisane do toru, z którego chcemy nadać wybraną prędkość):
event (p1)_change_vel getvalues 1.0 (p1)_mem endevent
//ustawienie prędkości, którą chcemy nadać AI
event (p1)_0 updatevalues 1.0 (p1)_mem SetVelocity 0.0 0.0 endevent
event (p1)_20 updatevalues 1.0 (p1)_mem SetVelocity 20 * endevent
event (p1)_30 updatevalues 1.0 (p1)_mem SetVelocity 30 * endevent
event (p1)_40 updatevalues 1.0 (p1)_mem SetVelocity 40 * endevent
event (p1)_50 updatevalues 1.0 (p1)_mem SetVelocity 50 * endevent
event (p1)_60 updatevalues 1.0 (p1)_mem SetVelocity 60 * endevent
event (p1)_70 updatevalues 1.0 (p1)_mem SetVelocity 70 * endevent
event (p1)_80 updatevalues 1.0 (p1)_mem SetVelocity 80 * endevent
event (p1)_90 updatevalues 1.0 (p1)_mem SetVelocity 90 * endevent
event (p1)_100 updatevalues 1.0 (p1)_mem SetVelocity 100 * endevent
event (p1)_120 updatevalues 1.0 (p1)_mem SetVelocity 120 * endevent
event (p1)_140 updatevalues 1.0 (p1)_mem SetVelocity 140 * endevent
event (p1)_160 updatevalues 1.0 (p1)_mem SetVelocity 160 * endevent
event (p1)_max updatevalues 1.0 (p1)_mem SetVelocity -1 * endevent
//memcell do pamietania predkosci:
node -1 0 (p1)_mem memcell 0.0 0.0 0.0 SetVelocity 0.0 0.0 none endmemcell
Jak widać, pozwala on zmienić prędkości AI w dość dużym zakresie i z małym skokiem, aczkolwiek obawiam się, że nie zauważy się różnic między 70 a 80 km/h. Można dostrzec, iż ten "semafor" opisuje tylko 1 parametr: p1. Zaczepiony on jest defualtowo w początku układu współrzędnych. Używa się go identycznie jak semafora. Ba, jak się sprytnie użyje eventów, to wystarczy zaincludować tylko jeden plik change_vel.inc.
Post napisałem, ponieważ niebawem wyjdzie nowa sceneria z załączonym tymże plikiem. Jeśli ktoś pisze scenariusze, to warto by wiedział o jego istnieniu. Również jeżeli ktoś ma jakieś uwagi co do składni, to proszę pisać.