Autor Wątek:  Dodanie obsługi radia do scenariuszy  (Przeczytany 6804 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline szczurek

  • Wiadomości: 64
    • Zobacz profil
  • Otrzymane polubienia: 2
Dodanie obsługi radia do scenariuszy
« dnia: 22 Października 2018, 16:22:04 »
Pod filmem na YT omawiającym nowości w 18.07 pojawiło się pytanie o obsługę radia w którymś ze scenariuszy, padła też odpowiedź że "Fajnie jakby wszystkie stare scenariusze tak przerobić, ale nie ma chętnych rąk do pracy." No więc ręce są, ale nie bardzo wiedzą co i jak mają robić. Czy jest ktoś, kto byłby w stanie metodą łopatologiczną wyjaśnić co jest potrzebne do takich przeróbek i jak ich dokonać? Czas jest, chęci też, brakuje tylko tej wiedzy. Ktoś, coś?

Teraz zauważyłem, że to nie ten dział. Gdyby któryś moderator był tak dobry i przestawił gdzie trzeba... ;)

« Ostatnia zmiana: 22 Października 2018, 16:26:47 wysłana przez szczurek »
Optymista wie, że życie stoi do niego otworem.
Pesymista wie dokładnie którym...

Offline Stele

  • Zasłużony dla Symulatora
  • Wiadomości: 10133
    • Zobacz profil
  • Otrzymane polubienia: 2610
Odp: Dodanie obsługi radia do scenariuszy
« Odpowiedź #1 dnia: 22 Października 2018, 17:34:02 »
Oczywiście, wszystko wytłumaczę. :)

Dźwięk i jego wyzwalacz mamy w scenariuszu zdefiniowany następująco https://wiki.eu07.pl/index.php/Obiekt_node::sound :
node -1 0 najedzie_spalinowka sound -18281.6 0.2 49699.8 najedzie_spalinowka.wav endsound
event najedzie_spalinowka sound 0.0 najedzie_spalinowka 1 endevent
Pozycja node sound określa jego położenie w scenerii. Zasięg dźwięku to był zakres renderowania mapy, więc można założyć, że współrzędne mają sens. Na tej podstawie bez dociekania co to za jeden, można założyć w jakim okręgu ma być nadawany i jaki kanał tam obowiązuje.
Przypisanie go jako radiowego i nadanie mu kanału, dokonuje się poprzez dodanie dodatkowego parametru do eventu sound. Czyli by go dać przykładowo na trójkę, dajemy:
event najedzie_spalinowka sound 0.0 najedzie_spalinowka 1 3 endeventZ rozkładu jazdy odczytujesz, jakie kanały obowiązują na danym scenariuszu. Warto to zunifikować w obrębie scenerii, jeśli są różnice. Przyjąć sensowny podział i zmienić rozkłady w razie potrzeby.
W skrypcie scenariusza przeglądasz wszystkie node sound po kolei, patrząc czy to radio czy jakieś inne dźwięki. Jak radio, to na podstawie współrzędnych patrzysz w rainstedzie/symulacji gdzie to jest i jaki tam kanał obowiązuje po czym do eventu wyzwalającego tego node dopisujesz cyferkę.
Na wielu scenariuszach całość będzie w obrębie jednego kanału i wystarczy zidentyfikować co jest radiem i przypisać je do niego.
« Ostatnia zmiana: 22 Października 2018, 17:37:15 wysłana przez Stele »
Mój kanał youtube

Offline szczurek

  • Wiadomości: 64
    • Zobacz profil
  • Otrzymane polubienia: 2
Odp: Dodanie obsługi radia do scenariuszy
« Odpowiedź #2 dnia: 22 Października 2018, 19:03:19 »
Super, czyli nie ma tragedii :) Jeszcze jedno, czy jest jakiś sensowny sposób na podgląd scenerii? Np. żeby podejrzeć czy w scenerii jest gdzieś ustawiony w28 i na jaki kanał każe zmieniać? No i co ze sceneriami manewrowymi? Choć to może zostawię sobie "na deser".

A, jeszcze jedno, jak wygląda sprawa ze sprawdzeniem kanału? Z tego samego filmu wynika że kombinacja shift+F1 odpala eventa odpowiedzialnego za sprawdzenie kanału. Tyle, że coś mi to za bardzo nie chce działać.

No i ostatnie pytanie, z kim się kontaktować w sprawie gotowych plików?

Dzięki.
Optymista wie, że życie stoi do niego otworem.
Pesymista wie dokładnie którym...

Offline Stele

  • Zasłużony dla Symulatora
  • Wiadomości: 10133
    • Zobacz profil
  • Otrzymane polubienia: 2610
Odp: Dodanie obsługi radia do scenariuszy
« Odpowiedź #3 dnia: 22 Października 2018, 19:24:56 »
Rainsted>struktura>wczytaj wszystkie include bez parametrów debugger>podgląd scenerii daje wgląd w mapkę. Ale wypatrzeć tam wskaźniki to powodzenia. Prościej odpalić scenariusz i przelecieć się kamerą czy gdzieś wskaźniki stoją. Mogą być sytuacje, że stoją a nie jest to ujęte w rozkładzie albo jest ujęta zmiana a nie ma wskaźników. Pomożemy w takich sytuacjach dostawić co trzeba, nie martw się.
Na filmie przejęzyczyłem się. Miało być shift+1. Zwykły keyctrl. Na linii 53 odpowiada za to kod:
event keyctrl01 multiple 0 test_radiotelefonu_mem test_radiotelefonu_set test_radiotelefonu_reset l053test_odtwarzaj l0533 l0535 l0539 condition memcompare * 0 0 endevent
 node -1 0 test_radiotelefonu_mem memcell 0 0 0 nic 0 0 none endmemcell
 event test_radiotelefonu_set updatevalues 0 test_radiotelefonu_mem * 1 1 endevent
 event test_radiotelefonu_reset updatevalues 3 test_radiotelefonu_mem * 0 0 endevent

 node -1 0 l053test sound 0 0 0 radiotelefon/linia053/l053_wieczor_probaradia.wav endsound
 event l053test_odtwarzaj sound 0 l053test 1 endevent
 
event l0533 multiple 5 none l0533_a endevent
event l0533_a multiple 0 radio_kanal3 radio_kanal3_blokuj l0533_odtwarzaj l0533_reset else l0533_b condition memcompare * 0 0 endevent
 event l0533_b multiple 2 none l0533_a endevent
node -1 0 l0533 sound 0 0 0 radiotelefon/linia053/l053_wieczor_test3.wav endsound
 event l0533_odtwarzaj sound 0 l0533 1 3 endevent
 event l0533_reset updatevalues 4 radio_kanal3 * 0 0 endevent

event l0535 multiple 5 none l0535_a endevent
event l0535_a multiple 0 radio_kanal5 radio_kanal5_blokuj l0535_odtwarzaj l0535_reset else l0535_b condition memcompare * 0 0 endevent
 event l0535_b multiple 2 none l0535_a endevent
node -1 0 l0535 sound 0 0 0 radiotelefon/linia053/l053_wieczor_test5.wav endsound
 event l0535_odtwarzaj sound 0 l0535 1 5 endevent
 event l0535_reset updatevalues 4 radio_kanal5 * 0 0 endevent

event l0539 multiple 5 none l0539_a endevent
event l0539_a multiple 0 radio_kanal9 radio_kanal9_blokuj l0539_odtwarzaj l0539_reset else l0539_b condition memcompare * 0 0 endevent
 event l0539_b multiple 2 none l0539_a endevent
node -1 0 l0539 sound 0 0 0 radiotelefon/linia053/l053_wieczor_test9.wav endsound
 event l0539_odtwarzaj sound 0 l0539 1 9 endevent
 event l0539_reset updatevalues 4 radio_kanal9 * 0 0 endevent
Nieco to skomplikowane, bo dochodzi tam blokada kanału w przypadku zajętej fali nośnej. Nasłuch jest na 3, 5 i 9
W uproszczeniu ma to wyglądać tak:
event keyctrl01 multiple 0 none dzwiek_testu odzew_nr_kanalu endevent //wyzwalanie pod shift+1
 node -1 0 dzwiek_testu sound 0 0 0 sampel_testu.wav endsound //deklaracja dźwięku testu
 event dzwiek_testu sound 0 dzwiek_testu 1 endevent //odtworzenie dźwięku testu (nie na radiu)
node -1 0 odzew_nr_kanalu sound 0 0 0 sample_odzewu.wav endsound //deklaracja dźwięku odzewu
 event odzew_nr_kanalu sound 4 odzew_nr_kanalu 1 (nr_kanalu) endevent //odtworzenie dźwięku odzewu na kanale (nr_kanału)
Keyctrl1 może być zajęty na danym scenariuszu. Lepiej wtedy dotychczasowe przesunąć na inną cyferkę (0-9) by na jedynce zawsze było radio. Wystarczy wyszukać w skrypcie frazę "keyctrl1".
Gotowce podsyłaj mi, chyba że ktoś chce się podjąć ogarnięcia czy wszystko ok.
« Ostatnia zmiana: 22 Października 2018, 19:28:54 wysłana przez Stele »
Mój kanał youtube

Offline szczurek

  • Wiadomości: 64
    • Zobacz profil
  • Otrzymane polubienia: 2
Odp: Dodanie obsługi radia do scenariuszy
« Odpowiedź #4 dnia: 22 Października 2018, 20:22:20 »
Dzięki, będę się odzywał.
Optymista wie, że życie stoi do niego otworem.
Pesymista wie dokładnie którym...