Symulator EU07 (i nie tylko) > Pomoc w tworzeniu
Pytania o eventy
Pendolino:
Udało mi się wywołać jazdę AI, rp1 (komenda: Warning_signal), oraz zatrzymanie AI (komenda Emergency_brake) dziękuję za pomoc. Już bez problemów mogę napisać misję. Następnie proszę o wyjaśnienie MemCell -ów bądź proszę o wskazanie jakiejś instrukcji ich możliwości i stosowania.
dymus:
Memcell'e stosujesz do tego aby można było wywołać dwa lub więcej występujących po sobie eventów na tym samym torze, tak aby pierwszy pociąg np. wjechał na bok stacji, a drugi przejechał bez zatrzymania a trzeci np. wydał dźwięk do radia. Musisz najpierw zdefiniować komórkę
node -1 0 osobowy_mem memcell 0 0 1 osobowy_koch 0 0 none endmemcell
gdzie osobowy_mem to nazwa komórki; osobowy_koch 0 0 - wartość parametru
Następnie możesz wywołać eventy które bedą miały porównywaną wartość z komórką wyżej np.
event koch_odj multiple 0.0 osobowy_mem jakiś event condition memcompare osobowy_koch 0 0 endevent
Zdarzenie wykona się tylko wtedy, gdy będzie miało taką samą wartość komórki jak osobowy_mem
Następnie możesz zmienić wartość komórki przez event: event update1 updatevalues 2.0 osobowy_mem lisow_osob 0 0 endevent
gdziel lisow_osob 0 0 to nowa wartość komórki. Z tym, że zazwyczaj zmieniasz wartość wartość komórki po wykonaniu eventu, czyli:
--- Kod: ---node -1 0 osobowy_mem memcell 0 0 1 osobowy_koch 0 0 none endmemcell
event koch_odj multiple 0.0 osobowy_mem jakiś_event update1 condition memcompare osobowy_koch 0 0 endevent
event update1 updatevalues 2.0 osobowy_mem lisow_osob 0 0 endevent
--- Koniec kodu ---
Wyżej przykładowy ciąg eventów, przy pomocy memcell'a.
Pendolino:
Trochę zaczynam rozumieć. Ale jak pociąg A "wie" że ta komórka ma na jego oddziaływać, a nie na pociąg B? Jak będą jechać 3 pociągi przez stację a każdy ma mieć inny przebieg to trzeba trzy komórki ustawić?
dymus:
Event nie wie na co na oddziaływać. Każdy jadący pociąg może go wyzwolić. Przy komórkach memcell liczy się kolejność, bo pierwszy i kolejne pociąg zmieniają wartość jest komórki na taką aby następny pociąg mógł wyzwolić event który jest dla niego. Ustawisz jedną komórkę, a np. początkowa wartość jej to osobowy_1, i pierwszy pociąg jaki jedzie na warunek (condition memcompare) osobowy_1. Jednocześnie ten sam event na wjazd tego pierwszego pociągu ma odwołanie do updatevalues czyli zmienia wartość komórki na np. osobowy_2. Przyjeżdża następny pociag (np. osobowy 2) i ma tez event condition memcompare osobowy_2, i tak dalej. Wszystko to wykonujemy na jednej komórce, tylko odpowiednio dajemy porównanie do jednej komórki i ustalamy wcześniej kolejność tych pociągów.
Trochę "łopatologicznie" to opisałem ale mam nadzieję, że zrozumiesz o co chodzi, bo to tak naprawdę ciężko wytłumaczyć.
AtapiCl:
Nie zrozumiałeś. Jest sobie tor A. Na tym torze podczepiony jest event B, który jest uwarunkowany od stanu komórki C. Dzięki zmianom stanu komórki C, event B się wykona lub nie. Zależy od stanu komórki i warunku. Jeśli przejedzie pociąg 1, event B się wykona. Jeśli w tym evencie dodałeś zdarzenie update tej komórki na jakieś inne wartości, to gdy przejedzie pociąg 2 event ten się nie wykona. Inne eventy podczepione w innych torach mogą korzystać jednocześnie z tej jednej komórki. Mały przykład:
-----------B-------<------------
--------------->------A---------
Zakładając, że komórka "C_mem" ma wartość "A 0 0" i event A jest powiązany z komórką "C_mem" i ma warunek "condition memcompare A 0 0", event A się wykona.
Jeśli event B jest powiązany z komórką "C_mem" i ma warunek "condition memcompare B 0 0", event B się nie wykona, dopóki nie nastąpi update komórki C_mem do wartości "B 0 0". Update może nastąpić np. dzięki umieszczeniu w evencie A nazwy eventu odpowiedzialnego za update komórki "C_mem" do takiej wartości.
Bardziej łopatologicznie się nie da.
Nawigacja
[#] Następna strona
Idź do wersji pełnej