Symulator EU07 (i nie tylko) > Symulator
Problem z memcell'em
Dolmio89:
Chciałem napisać misje do mojej trasy i mam problem z komórką pamięci. Założenie jest takie, że po kilku manewrach symek ma wpuścić na stację skład towarowy, żeby nie narobić zamieszania chciałem użyć memcell'a ale niestety nie działa. Czytałem oczywiście scenery.doc i tutoriale, wydaje mi się że wszystkie wpisy mam dobre. Może ktoś z większym doświadczeniem zauważy gdzie popełniłem błąd.
--- Kod: ---node -1 0 sm_mem memcell 0 0 1 manewry 0 0 none endmemcell
event manewry2 updatevalues 0.0 sm_mem manewry 0 1 endevent
event wjazd multiple 1.0 sm_mem dolmiowo_zeberko1z dolmiowo10W_F_s1 dol_zw3+ dol_zw7ad dolmiowo_wj1N_B_s13 update1 condition memcompare manewry 0 1 endevent
event update1 updatevalues 0.0 sm_mem manewry 1 1 endevent
event KeyCtrl02 multiple 0 none manewry2 endevent
--- Koniec kodu ---
Event "manewry2" uruchomiony po najechaniu loka na pewien tor ma zmienić wartość komórki pamięci "sm_mem", a to na spowodować podanie wjazdu na stację. W celach testowych dodałem aktywacje eventu "manewry2" przez shift+2 no i jak już mówiłem nie działa.
Jeszcze może fragment loga:
--- Cytuj ---Player train init OK
EVENT ADDED TO QUEUE:
keyctrl02
EVENT LAUNCHED:
keyctrl02
Multiple passed
EVENT ADDED TO QUEUE:
manewry2
EVENT LAUNCHED:
manewry2
--- Koniec cytatu ---
Czy ktoś z was uświadomi mi co zrobiłem źle?
Z góry dzięki za pomoc.
AtapiCl:
Event 'wjazd' wykona się, jeśli komórka o nazwie 'sm_mem' będzie mieć parametry: 'manewry 0 1'.
Event 'manewry2' nie wykonuje eventu wjazd. On tylko aktualizuje stan komórki 'sm_mem'.
Event 'update1' aktualizuje stan komórki 'sm_mem' na 'manewry 1 1'.
Event 'KeyCtrl02' - wiadomo, odpala...
A zrobiłeś to tak - Wciskasz Shift + 2, wykonuje się event aktualizujący komórkę 'sm_mem' ze stanu 'manewry 0 0' na stan 'manewry 0 1'. I to wszystko, co się wykonuje.
Mariusz1970:
Zbytnio nie wnikam, ale mnie na 1 rzut oka logika założeń eventów jest ok, tylko wydaje mi się, że deklaracja jak i updaty są złe. Z tego co pamiętam komórka może spamiętać jeden ciąg znaków i 2 wartości liczbowe, czyli powinny być deklarowane 3 wartości a są dwie.
Ja deklarowałem tak:
//komorka pamieci, ktora wpisuje status, czy pośpiech Koniewice-Skawrki istnieje
node -1 0 pospskw-status memcell 0 0 0.3 BRAK 0 0 none endmemcell
a zmieniałem:
event zatwpospskw updatevalues 0.0 pospskw-status Podczepiony * * endevent
sprawdzałem warunek tak:
//Wyzwala, gdy pośpiech Koniewiece-Skwarki wjeżdża do Wielkiego Kaca
event wjazd_do_Wielki_K multiple 0.0 pospskw-status
duza5pocz_s1
duzaendwl_S13
duza13+
duza11+
duza9+
zatwpospskwwjazdWK
condition memcompare Podczepiony * *
endevent
Czyli ja zmieniałem ciąg znaków, Ty możesz zmieniać tylko liczby.
Gwiazdka oznacza, iż dana zapamiętana wartość w komórce nie będzie zmieniana lub porównywana.
Reasumując, nie wiem jak traktuje taką deklarację komórek,i porównywanie symek, jakie Ty zrobiłeś.
Dolmio89:
--- Cytuj ---A zrobiłeś to tak - Wciskasz Shift + 2, wykonuje się event aktualizujący komórkę 'sm_mem' ze stanu 'manewry 0 0' na stan 'manewry 0 1'.
--- Koniec cytatu ---
--- Cytuj ---Event 'wjazd' wykona się, jeśli komórka o nazwie 'sm_mem' będzie mieć parametry: 'manewry 0 1'.
--- Koniec cytatu ---
Więc po odpaleniu "manewry2" powinien się odpalić "wjazd". Czy coś jeszcze pominąłem?
Mariusz1970 komórka ma 3 wartości
--- Kod: ---manewry 0 0
--- Koniec kodu ---
i chciałem je zmienić na
--- Kod: ---manewry 0 1
--- Koniec kodu ---
Mariusz1970:
i chciałem je zmienić na
Kod:
manewry 0 1
No ale nadal są 2 wartości.
Zrób jak Ci sugerowałem, bo prochu nie wymyślisz, a to o czym pisałem jest sprawdzone.
Nawigacja
[#] Następna strona
Idź do wersji pełnej