Plik scenerii: Różnice pomiędzy wersjami

Z MaSzyna
Skocz do: nawigacja, szukaj
 
(Nie pokazano 185 wersji utworzonych przez 5 użytkowników)
Linia 1: Linia 1:
           
+
[[Category:Formaty plików symulatora]]
<br>
+
Plik scenerii jest [[Plik_tekstowy|plikiem tekstowym]], zawierającym definicje obiektów, zdarzeń, pojazdów znajdujących się w scenerii. Aby plik scenerii mógł zostać uruchomiony przez symulator, należy umieścić go bezpośrednio w folderze ''scenery''.
  
+
== Przygotowanie ==
<br>
+
Scenerię można uruchomić za pomocą startera, wiersza poleceń lub bezpośrednio przez plik wykonywalny symulatora.
  
+
* Komenda wiersza poleceń, uruchamiająca scenerię scene.scn:
'''OPIS
+
    eu07.exe –s scenery/scene.scn
FORMATU PLIKU SCENERII'''
 
  
+
* Wpis w eu07.ini, powodujący uruchomienie scene.scn przez plik wykonywalny
Opracowanie
+
    sceneryfile scene.scn
na podstawie dokumentu scenery.doc autorstwa
 
  
+
Scenerie używają prawoskrętnego ukłądu współrzędnych:
Marcina
 
Woźniaka i Macieja Czapkiewicza
 
  
+
[[Plik:Swspol.png]]
Aktualizacja
 
wg stanu na rok 2015
 
  
+
== Rodzaje plików składowych scenerii ==
Igor
+
Poniższe rodzaje plików nie różnią się składnią, a jedynie pomagają zachować ład w plikach wchodzących w skład scenerii. Są one dołączane do głównego pliku scenerii za pomocą dyrektywy [[Dyrektywa_include|include]].
Q Puchalsku
+
* SCN - główny plik scenerii, zawiera zazwyczaj [[Dyrektywa_trainset|definicje składów]] i polecenia [[Dyrektywa_include|include]], dołączające obiekty z innego pliku do scenerii.
 +
* SCM - plik z elementami składowymi scenerii. Zazwyczaj używa się tych plików do podziału obiektów scenerii na tory, drogi, drzewa, wskaźniki...
 +
* CTR - plik ze zdarzeniami tworzącymi scenariusz
 +
* [[Plik_INC|INC]] - plik pozwalający na wstawienie parametryzowanego zbioru obiektów scenerii.
  
+
== Składnia ==
<br>
+
Scenerię konfiguruje się za pomocą dyrektyw i wpisów przedstawionych w poniższym rozdziale:
  
+
=== Dyrektywy scenariusza ===
<br>
+
* [[Dyrektywa_atmo|atmo]] - ustawienia mgły.
 +
* [[Dyrektywa_sky|sky]] - ustawienie modelu nieba.
 +
* [[Dyrektywa_time|time]] - ustawienie czasu symulacji.
 +
* [[Dyrektywa_FirstInit|FirstInit]] - polecenie inicjalizacji wczytanych obiektów.
 +
* [[Dyrektywa_trainset|trainset]] - definicja składu.
 +
* [[Obiekt_event|event]] - zdarzenie, np. polecenie zmiany sygnału na semaforze.
 +
* [[Dyrektywa_include|include]] - dołączanie zawartości innych plików do pliku scenerii.
 +
* [[Dyrektywa_camera|camera]] - ustawienia predefiniowanych pozycji kamer w trybie ''freefly''.
 +
* [[Dyrektywa_config|config]] - ustawienia aplikacji specyficzne dla scenerii.
 +
* [[Dyrektywa_lua|lua]] - dołączenie skryptu sterującego scenariuszem w języku LUA.
 +
* [[Obiekt_node|node]] - definicja obiektów widocznych: tory, rzeki, modele.
 +
* [[Dyrektywa_origin|origin]] - polecenie przesunięcia obiektów o wektor.
 +
* [[Dyrektywa_rotate|rotate]] - polecenie obrotu obiektów o kąty.
 +
* [[Dyrektywa_group|group]] - grupowanie obiektów
 +
* [[Dyrektywa_isolated|isolated]] - definiowanie odcinków izolowanych
 +
* [[Dyrektywa_area|area]] - grupowanie odcinków izolowanych
  
+
Wycofane:
<br>
+
* <s>[[Dyrektywa_description|description]] - opis scenerii na potrzeby starterów.</s>
 +
* <s>[[Dyrektywa_light|light]] - ustawienie źródła oświetlenia scenerii.</s>
 +
* <s>[[Dyrektywa_test|test]] - testowanie poprawności dyrektyw.</s>       
  
+
=== Dyrektywy startera ===
Na
 
zebranych tu informacjach oparte zostały skrypty eksporterów
 
  
+
Dyrektywy startera to zestaw parametrów (według składni komentarzy) pełniących rolę wprowadzenia do danego startera symulatora MaSzyna dodatkowych informacji oraz konfiguracji.
jaki
+
Nie mają wpływu na działanie symulacji!
i importerów scenerii dla środowiska 3DS Max Studio oraz
 
  
+
:'''//$n''' – nazwa scenerii:
parser
+
::*Rainsted.exe wyświetlana w głównym oknie wyboru scenerii w polu z żółtym tłem;
przetwarzajacy dane z plików scenerii wbudowany w programie EU07.EXE
+
::*Starter.exe wyświetlana w głównym oknie wyboru scenerii w zakładce ''Opis służby'';
 +
:::''Rozpoznawana przez: Starter.exe, Rainsted.exe''
  
+
:'''//$d''' – opis scenerii:
<br>
+
::*Rainsted.exe wyświetlany w głównym oknie wyboru scenerii obok wybranego składu/scenariusza;
 +
::*Starter.exe wyświetlany w głównym oknie wyboru scenerii w zakładce ''Opis służby'';
 +
:::''Rozpoznawana przez: Starter.exe, Rainsted.exe''
  
 
+
:'''//$f''' – link do zewnętrznego pliku lub strony internetowej dotyczący scenerii albo pojedynczego scenariusza, możliwy do otwarcia z poziomu startera (wyświetlany jako dedykowany przycisk):
Domyślny plik trasy powinien nazywać
+
::*Rainsted.exe wyświetla do trzech przycisków tego typu w głównym oknie wyboru scenerii;
się '''scene.scn''', możliwe jest wgranie innego pliku poprzez
+
::*Starter.exe wyświetla przyciski tego typu w głównym oknie wyboru scenerii w zakładce ''Rozkład jazdy'';
podanie jego nazwy jako parametr w skrócie lub w konsoli polecen, np.
+
:::''Rozpoznawana przez: Starter.exe, Rainsted.exe''
  
+
:'''//$o''' – opis składu, pokazywany przez dany starter. Jeśli skład ma być ukryty, przed pierwszym znakiem opisu powinien znaleźć się znak minus '''-'''. Dyrektywa ta musi zostać wprowadzona do pliku po dyrektywie scenariusza '''FirstInit'''.
<tt>eu07.exe
+
:::''Rozpoznawana przez: Starter.exe, Rainsted.exe''
&ndash;s scenery/testowo.scn</tt>.
 
  
+
:'''//$i''' – nazwa obrazka wyświetlanego przez dany starter w głównym oknie (miniaturka scenerii)
<br>
+
:::''Rozpoznawana przez: Starter.exe, Rainsted.exe''
  
+
:'''//$it''' – definicja indywidualnego obrazka mini z katalogu scenery/images dla danego składu - deklaracja obrazka - nazwa bez rozszerzenia!
Można również
+
:::''Rozpoznawana przez: Starter.exe''
zdefiniować domyślną nazwę scenerii w pliku '''eu07.ini
 
'''podajac
 
parametr w kluczu sceneryfile
 
np.:
 
  
+
:'''//$it''' – definicja indywidualnego logo startowego dla składu z katalogu textures/logo - deklaracja obrazka - nazwa bez rozszerzenia!
sceneryfile
+
:::''Rozpoznawana przez: Starter.exe''
testowo.scn
 
  
+
:'''//$decor''' – pomijanie składów dekoracyjnych tj. nie wykonujących zadań scenariusza.
<br>
+
:::''Rozpoznawana przez: Starter.exe''
  
+
:'''//$a''' – oznaczenie scenerii jako archiwalna. Nie wyświetla się domyślnie w głównym oknie Startera.
Parametry
+
:::''Rozpoznawana przez: Starter.exe''
obiektów w scenerii mogą być oddzielane spacjami, przecinkami,
 
średnikami, tabulatorami lub końcami linii, jednak dla lepszej
 
czytelności dla człowieka zaleca się oddzielanie ich wyłącznie
 
spacją.
 
  
+
:'''//$l''' – kategoria scenerii pozwalająca zwinąć wszystkie scenariusze do jednej grupie.
<br>
+
:::''Rozpoznawana przez: Starter.exe''
  
+
:'''//$e''' – opis błędu
'''Przykłady:'''
+
:::''Rozpoznawana przez: Rainsted.exe''
  
+
:'''//$g''' – odnośnik do mapy
include;tree.inc;l61_plants/drzewo1024f;-3947.2;-4.0;2401.17;56.0;8.3;4.2;end
+
:::''Rozpoznawana przez: Rainsted.exe''
  
+
:'''//$r''' – plik odniesienia
include,tree.inc,l61_plants/drzewo1024f,-3947.2,-4.0,2401.17,56.0,8.3,4.2,end
+
:::''Rozpoznawana przez: Rainsted.exe''
  
+
:'''//$t''' – regeneracja plików terenu
include
+
:::''Rozpoznawana przez: Rainsted.exe''
tree.inc l61_plants/drzewo1024f -3947.2 -4.0 2401.17 56.0 8.3 4.2 end
 
  
+
:'''//$w''' – parametry składu
<br>
+
:::'''type''' - Rodzaj pociągu: p - pasażerski, t - towarowy, m - towarowo-osobowy;
 +
:::'''lmax''' - Maksymalna długość składu;
 +
:::'''vmin''' - Minimalna prędkość pojazdów w składzie;
 +
:::'''vmax''' - Maksymalna prędkość, jaką można rozwinąć na trasie przejazdu;
 +
:::'''d''' - Rozstaw toru. Domyślnie normalny (1435m).
 +
:::''Rozpoznawana przez: Rainsted.exe''
  
+
:'''//$x''' – wymagana wersja pliku eu07.exe
W
+
:::''Rozpoznawana przez: Rainsted.exe''
pliku scenerii rozróżniamy 11 typów obiektów, są to:
 
  
+
[[Kategoria:Scenerie]]
'''node''',
 
'''event''',''' include''', '''trainset''',''' rotate''', '''orgin''','''
 
description''', '''atmo''', '''light''', '''camera''', '''config'''
 
 
 
 
<br>
 
 
 
 
Dwa
 
z wymienionych typow, tj. '''node''' i '''event''' dziela się na
 
podtypy. Wpis typu '''node''' posiada 13 podtypów zaś wpis '''event'''
 
8.
 
 
 
 
<br>
 
 
 
 
1
 
Wpis NODE
 
 
 
 
<br>
 
 
 
 
Typ
 
'''NODE''' definiuje obiekty widoczne (a ogólniej: obiekty które
 
bierze pod uwagę funkcja Render).
 
 
 
 
Obiekty
 
tego typu mogą być rysowalne lub niewidoczne. Parametry podstawowe
 
wspólne dla wszystkich podtypów to:
 
 
 
 
<br>
 
 
 
 
* MaxDistance &ndash; maksymalna odległość z jakiej obiekt będzie widoczny
 
* MinDistance &ndash; minimalna odległość z jakiej obiekt będzie widoczny
 
* Name &ndash; nazwa obiektu, jeśli nie potrzebujemy należy wpisać '''none'''
 
* Type - rodzaj obiektu
 
 
<br>
 
 
 
 
Poniżej
 
tabela opisująca poszczególne podtypy wpisu NODE
 
 
 
                                                               
 
{| border="1"
 
|-
 
!
 
track
 
 
 
 
!
 
Definiuje
 
trajektorię, po której może poruszać się obiekt dynamic. Kształt
 
trajektorii definiujemy za pomocą krzywej Beziera
 
 
 
 
!
 
<br>
 
 
 
 
|-
 
|
 
traction
 
 
 
 
|
 
Definiuje
 
obiekt odcinka drutu sieci trakcyjnej
 
 
 
 
|
 
<br>
 
 
 
 
|-
 
|
 
dynamic
 
 
 
 
|
 
Definiuje
 
obiekt poruszający się po ścieżkach typu '''track''' lub''' road'''
 
 
 
 
|
 
<br>
 
 
 
 
|-
 
|
 
model
 
 
 
 
|
 
Wstawia
 
obiekt modelu 3d statyczny lub z możliwością animacji
 
 
 
 
|
 
<br>
 
 
 
 
|-
 
|
 
triangles
 
 
 
 
|
 
Definiuje
 
jeden trójkąt składajacy się z trzech wierzchołków jako element
 
składowy terenu
 
 
 
 
|
 
<br>
 
 
 
 
|-
 
|
 
riangle_strip
 
 
 
 
|
 
Definiuje
 
wielokąt jako element składowy terenu
 
 
 
 
|
 
<br>
 
 
 
 
|-
 
|
 
triangle_fan
 
 
 
 
|
 
<br>
 
 
 
 
|
 
<br>
 
 
 
 
|-
 
|
 
lines
 
 
 
 
|
 
Definiuje
 
linię &ndash; pojedynczy odcinek od punktu A do punktu B
 
 
 
 
|
 
<br>
 
 
 
 
|-
 
|
 
line_strip
 
 
 
 
|
 
<br>
 
 
 
 
|
 
<br>
 
 
 
 
|-
 
|
 
line_loop
 
 
 
 
|
 
<br>
 
 
 
 
|
 
<br>
 
 
 
 
|-
 
|
 
memcell
 
 
 
 
|
 
Komórka
 
pamięci, nie jest rysowana ale ma współrzędne X, Y, Z, które np.
 
są przekazywane do AI jako pozycja semafora.
 
 
 
 
|
 
<br>
 
 
 
 
|-
 
|
 
eventlauncher
 
 
 
 
|
 
Obiekt
 
wyzwalany naciśnięciem klawisza albo o określonej godzinie lub raz
 
na jakiś czas. Nie jest rysowany ale ma współrzędne X, Y, Z,
 
istotne przy wyzwalaniu klawiszem.
 
 
 
 
|
 
<br>
 
 
 
 
|}         
 
{| border="1"
 
|-
 
|
 
sound
 
 
 
 
|
 
<br>
 
 
 
 
|
 
<br>
 
 
 
 
|}
 
<br>
 
 
 
 
NODE::Track
 
 
 
 
Definiuje tor, po którym możemy puścić
 
obiekt '''dynamic'''. Kształt toru definiujemy za pomocą krzywej
 
Beziera.
 
 
 
 
Parametry: na
 
zielono wartości domyślne (default) które powinny być w skrypcie
 
tworzącym
 
 
 
 
<br>
 
 
 
 
* TrackType''' normal''' (tor kolejowy prosty), '''switch''' &mdash; zwrotnica, '''table''' &mdash; obrotnica, przesuwnica, wywrotnica, '''road''' &mdash; droga lądowa, '''cross''' &mdash; skrzyżowanie dróg (ma dwa odcinki), '''river''' &mdash; rzeka, kanał, ciek wodny, droga wodna, '''tributary''' &mdash; połączenie dróg wodnych
 
 
* TrackLength &ndash; długość odcinka toru
 
* TrackWidth &ndash; szerokość toru (potrzebne w wielu sprawach) 1.435
 
* Friction &ndash; statyczny współczynnik tarcia 0.15 czy ta wielkość jest prawidłowa?
 
* SoundDist &ndash; co ile metrów będzie odgrywany dźwięk stukotu 20
 
* Quality &ndash; pierwsze 4 bity &ndash; ile ton/oś, pozostałe &ndash; rezerwa 20
 
* DamageFlag &ndash; kombinacja stałych dtrack_* z mover.pas, np 128 oznacza brak szyn '''0''' dla normal, '''2''' dla switch
 
* Environment &ndash; słowo kluczowe oznaczające otoczenie toru: <tt>flat, mountains, canyon, tunnel</tt> (w zależności od tego będzie się zmieniać oświetlenie i/lub echo dźwięków
 
* Visibility &ndash; jeśli tor ma być niewidoczny wpisujemy '''unvis '''ale normalnie powinno być '''vis''' i wtedy należy podać:
 
* Tex1 &ndash; tekstura szyn (jeśli '''none''' to szyny nie są rysowane) Rail_screw_used1
 
* TexLength &ndash; długość w [m] odpowiadająca teksturze szyny 4.0
 
* Tex2 &ndash; dla '''track normal''' tekstura podsypki z podkładami (gdy none to nie jest automatycznie rysowana) a w przypadku zwrotnicy tekstura szyn drugiego toru (dla zwrotnicy podkłady trzeba zdefiniować jako oddzielny obiekt!) TpD.tex
 
* TexHeight &ndash; wysokość rysowanej podsypki (w przypadku zwrotnicy odstęp iglicy od szyny) 0.2
 
* TexWidth &ndash; szerokość rysowanej podsypki od szyny do początku nachylenia (w przypadku zwrotnicy długość odbojnicy) 0.5
 
* TexSlope &ndash; szerokość rysowanej podsypki w obszarze pochylenia (w przypadku zwrotnicy odległość środka odbojnicy od końca rozjazdu) 1.1
 
* Point1 &ndash; punkt początkowy toru [x,y,z]
 
* Roll1 &ndash; przechyłka początku toru [deg]
 
* CVec1 &ndash; wektor [x,y,z]
 
* CVec2 &ndash; wektor [x,y,z]
 
* Point2 &ndash; punkt końcowy toru [x,y,z]
 
* Roll2 &ndash; przechyłka końca toru [deg]
 
* Radius1 &ndash; najmniejszy promień toru
 
* Point3 &ndash; (tylko w przypadku zwrotnicy) punkt początkowy toru [x,y,z]
 
* Roll3 &ndash; (tylko w przypadku zwrotnicy) przechyłka toru [deg]
 
* CVec3 &ndash; (tylko w przypadku zwrotnicy) wektor [x,y,z]
 
* CVec4 &ndash; (tylko w przypadku zwrotnicy) wektor [x,y,z]
 
* Point4 &ndash; (tylko w przypadku zwrotnicy) punkt końcowy toru [x,y,z]
 
* Roll4 &ndash; (tylko w przypadku zwrotnicy) przechyłka toru [deg]
 
* Radius2 &ndash; najmniejszy promień toru (tylko w przypadku zwrotnicy)
 
* Velocity (opcjonalny) &ndash; prędkość jakiej będzie się starał nie przekroczyć jadący przez ten tor obiekt '''dynamic '''jeśli jest sterowany przez AI
 
* Event0 (opcjonalny) &ndash; zdarzenie zostanie uruchomione gdy '''obsadzony załogą''' ''dynamic'' stoi na torze.
 
* Event1 (opcjonalny) &ndash; zdarzenie zostanie uruchomione gdy '''obsadzony załogą''''' dynamic'' wjedzie na tor w kierunku punktu początkowego (Point1)
 
* Event2 (opcjonalny) &ndash; zdarzenie zostanie uruchomione gdy '''obsadzony załogą''''' dynamic'' wjedzie na tor w kierunku punktu końcowego (Point2)
 
* Eventall0 (opcjonalny) &ndash; zdarzenie które zostanie uruchomione gdy '''jakikolwiek''' ''dynamic'' stoi na torze.
 
* Event1 (opcjonalny) &ndash; zdarzenie zostanie uruchomione gdy '''jakikolwiek''' ''dynamic'' wjedzie na tor w kierunku punktu początkowego (Point1)
 
* Event2 (opcjonalny) &ndash; zdarzenie które zostanie uruchomione gdy '''jakikolwiek''' ''dynamic'' wjedzie na tor w kierunku punktu końcowego (Point2)
 
* Isolated (opcjonalny) &ndash; nazwa odcinka izolowanego, do którego należy tor
 
* Overhead (opcjonalny) &ndash; podać parametr 0, jeśli AI ma przejeżdżać bezprądowo
 
* Angle1 (opcjonalny) &ndash; ścięcie końca 1 pod innym kątem
 
* Angle2 (opcjonalny) &ndash; ścięcie końca 2 pod innym kątem
 
* Fouling1 (opcjonalny) &ndash; wskazanie modelu ukresu od strony 1
 
* Fouling2 (opcjonalny) &ndash; wskazanie modelu ukresu od strony 2
 
 
Jeśli chcemy otrzymać tor prosty należy
 
oba wektory CVec wyzerować oraz dać Radius1=0.
 
 
 
 
Nazwa toru jest potrzebna tylko gdy
 
chcemy na ten tor jakoś oddziaływać (np. przełożyć zwrotnicę) albo
 
ustawić na nim obiekt dynamic.
 
Zwykły tor nie musi mieć konkretnej nazwy tzn. można go nazwać '''none'''.
 
 
 
 
Przykład toru prostego o nazwie
 
track_sbl02, o długości 100m, z ograniczeniem szlakowym 40km/h:
 
 
 
 
<br>
 
 
 
 
<tt>node
 
-1 0 track_sbl02 track normal 100.0</tt><tt>
 
1.435</tt><tt>
 
20.0 19 4 flat vis </tt>
 
 
 
 
<tt>Rail_screw_used1
 
4.0 TpB-old1.tex 0.2 0.5 1.1</tt>
 
 
 
 
<tt>-646.0
 
0.2 169.0 0.0 </tt>
 
 
 
 
<tt>0.0
 
0.0 0.0 </tt>
 
 
 
 
<tt>0.0
 
0.0 0.0 </tt>
 
 
 
 
<tt>-646.0
 
0.2 69.0 0.0 </tt>
 
 
 
 
<tt>0</tt>
 
 
 
 
<tt>event1
 
test_sbl02_s1 </tt>
 
 
 
 
<tt>event2
 
test_sbl02_s1 </tt>
 
 
 
 
<tt>velocity
 
40 </tt>
 
 
 
 
<tt>endtrack</tt>
 
 
 
 
<br>
 
 
 
 
Przykład
 
anonimowego zakrętu w wykopie
 
 
 
 
<tt>node
 
-1 0 none track normal 100.0</tt><tt>
 
1.435</tt><tt>
 
25.0 20 0 canyon vis</tt>
 
 
 
 
<tt>Rail_screw_used1
 
4.0 TpD.tex 0.3 0.6 0.9</tt>
 
 
 
 
<tt>-46.0
 
0.2 -65.0001 0.0 </tt>
 
 
 
 
<tt>0.0
 
0.0 -11.3351 </tt>
 
 
 
 
<tt>1.28189
 
0.0 11.2623 </tt>
 
 
 
 
<tt>-47.9246
 
0.2 -98.9273 0.0 </tt>
 
 
 
 
<tt>300.0</tt>
 
 
 
 
<tt>endtrack</tt>
 
 
 
 
<br>
 
 
 
 
Przykład
 
zwrotnicy:
 
 
 
 
<tt>node
 
-1 0 Testowo_zwr1 track switch </tt><tt>34.0
 
1.435</tt><tt>
 
25.0 20 2 flat vis </tt>
 
 
 
 
<tt>Rail_screw_used1
 
4.0 Rail_screw_uNused1 0.2 1.5 2.5</tt>
 
 
 
 
<tt>-46.0
 
0.2 269.0 0 //point 1</tt>
 
 
 
 
<tt>0.0
 
0.0 0.0 //control vector 1</tt>
 
 
 
 
<tt>0.0
 
0.0 0.0 //control vector 2</tt>
 
 
 
 
<tt>-46.0
 
0.2 235.0 0 //point 2</tt>
 
 
 
 
<tt>0</tt>
 
 
 
 
<tt>-46.0
 
0.2 269.0 0 //point 1</tt>
 
 
 
 
<tt>0.0
 
0.0 -11.3351 //control vector 1</tt>
 
 
 
 
<tt>1.28189
 
0.0 11.2623 //control vector 2</tt>
 
 
 
 
<tt>-47.9246
 
0.2 235.073 0 //point 2</tt>
 
 
 
 
<tt>-100</tt>
 
 
 
 
<tt>endtrack</tt>
 
 
 
 
<br>
 
 
 
 
<br>
 
 
 
 
NODE::Traction
 
 
 
 
Definiuje odcinek drutu sieci
 
trakcyjnej
 
 
 
 
Parametry: na
 
zielono wartości domyślne (default) które są w skrypcie tworzącym
 
 
 
 
<br>
 
 
 
 
* PowerSourceName &ndash; nazwa źródła zasilania, tak sama dla każdego odcinka zasilania
 
* NominalVoltage &ndash; napięcie w sieci trakcyjnej bez obciążenia 3500
 
* MaxCurrent &ndash; prąd przy którym napięcie w sieci spadłoby o połowę 4500
 
* Resistivity &ndash; rezystancja styku ślizgacz-przewód 0.01
 
* Material &ndash; z czego zrobiony jest drut [Cu, Al] Cu
 
* WireThickness &ndash; grubość drutu w mm 3
 
* DamageFlag &ndash; flaga bitowa uszkodzeń, 1 oznacza patynę, 128 oznacza zerwanie 1
 
* Point1 [x,y,z] &ndash; punkt początkowy dolnego przewodu (jezdnego)
 
* Point2 [x,y,z] &ndash; punkt końcowy dolnego przewodu (jezdnego)
 
* Point3 [x,y,z] &ndash; punkt początkowy górnego przewodu (nośnego)
 
* Point4 [x,y,z] &ndash; punkt końcowy górnego przewodu (nośnego)
 
* Hmin &ndash; najniższa wysokość górnego przewodu nad dolnym 0.4
 
* DeltaL &ndash; odstęp pomiędzy kolejnymi wieszakami
 
* Wires &ndash; ilość przewodów (0,1,2,3 a w przyszłości 4) 2
 
* WireOffset &ndash; odstep między przewodami jezdnymi gdy Wires=3 0.04
 
* Visibility &ndash; jeśli trakcja ma być niewidoczna, wpisujemy '''unvis '''vis
 
 
* CurrentEvent (opcjonalny) &ndash; zdarzenie które zostanie uruchomione gdy '''dynamic''' pobiera prąd z sieci.
 
 
<br>
 
 
 
 
<br>
 
 
 
 
Przykład:
 
 
 
 
include
 
tra/sb165-3d.inc tra/betonrelief1 -2.313 5.8 100.247 0 end
 
 
 
 
node
 
-1 0 none traction pwr01 3500 4500 0.01 cu 3.0 1
 
 
 
 
0.687223
 
5.8 100.247
 
 
 
 
0.087223
 
5.8 170.247
 
 
 
 
0.687223
 
7.5 100.247
 
 
 
 
0.087223
 
7.5 170.247
 
 
 
 
0.4
 
4.0 3 0.04 vis
 
 
 
 
endtraction
 
 
 
 
 
Uwaga
 
&ndash; słupy/wysięgniki są odrębnymi obiektami (skrypt 3dsmax
 
umożliwia dołączanie słupów .inc do każdego wezła linii typu
 
Traction)
 
 
 
 
<br>
 
 
 
 
<br>
 
 
 
 
NODE::TractionPowerSource
 
 
 
 
Definiuje
 
zasilacz trakcji elektrycznej
 
 
 
 
Parametry:
 
 
 
 
* Origin [x,y,z] &ndash; położenie źródła prądu
 
* NominalVoltage &ndash; napięcie w sieci trakcyjnej bez obciążenia
 
* VoltageFrequency &ndash; częstotliwość prądu (0 dla stałego)
 
* InternalRes &ndash; rezystancja wewnętrzna podstacji
 
* MaxOutputCurrent &ndash; prąd przy którym uruchamia się bezpiecznik nadmiarowy szybki
 
* FastFuseTimeOut &ndash; czas po którym obwód się uruchamia ponownie po przeciążeniu
 
* FastFuseRepetition &ndash; ilość prób wznowienia pracy obwodu
 
* SlowFuseTimeOut &ndash; czas po jakim zostanie uruchomiony obwód jeśli zostanie przekroczona ilość wznowień (załączeń bezpiecznika szybkiego)
 
* Recuperation &ndash; czy jest odzysk prądu z sieci (jeśli nie to dać NoRecuperation)
 
 
<br>
 
 
 
 
=== składnia: ===
 
 
=== TractionPowerSource (p2) (p3) (p4) (p7) 0 (p8) (p9) 1.0 3 60.0 norecuperation end ===
 
 
<tt>przykład:
 
</tt>
 
 
 
 
<tt>node
 
-1 0 pwr01 tractionpowersource 0 0 0 3400 0 0.01 2000 1.0 3 60.0
 
section end</tt>
 
 
 
 
<br>
 
 
 
 
UWAGA
 
&ndash; nazwa tego obiektu informuje program że wszystkie obiekty
 
typu Traction które mają taką samą nazwę w polu PowerSourceName
 
należą do tego samego odcinka zasilania.
 
 
 
 
 
<br>
 
 
 
 
NODE::Dynamic
 
 
 
 
Obiekt poruszający się po torach.
 
 
 
 
Parametry:
 
 
 
 
* Dir &ndash; katalog bazowy obiektu np. PKP/EU07
 
* ReplacableSkin &ndash; tekstura która zostanie podmieniona (na ogół nadwozie) &ndash; patrz model
 
* Type &ndash; plik (bez rozszerzenia .chk) z charakterystyką techniczną obiektu np. 303E
 
* Track ('''tylko''' jeśli nie jest częścią '''TrainSet''') &ndash; nazwa toru na którym ustawiamy obiekt
 
* Dist &ndash; odległość początkowa (w/m pocz. Toru) jeśli jest -1 to pojazd będzie wstawiony odwrotnie
 
* CabOccupancy &ndash; obsługa pojazdu, możliwe wartości: headdriver, reardriver, nobody, passenger, conductor
 
 
* Vel (tylko jeśli <u>NIE JEST</u> częścią '''TrainSet''') &ndash; prędkość początkowa
 
* Coupler &ndash; (tylko jeśli <u>JEST</u> częścią '''TrainSet''') &ndash; typ sprzęgu łączącego z poprzednikiem
 
* Loadquantity &ndash; ilość ładunku
 
* LoadType &ndash; nazwa ładunku &ndash; <u>TYLKO gdy Loadquantity &gt; 0</u>
 
 
<br>
 
 
 
 
=== składnia: ===
 
 
=== node mindist maxdist name type dir replacableskin chktype dist cabocupancy coupler loadquantity loadtype enddynamic ===
 
 
<tt>przykład:
 
</tt>
 
 
 
 
<tt>node
 
-1 0 505126-08109-8 dynamic pkp\bdhpumn_v2 505126-08109-8 bdhpumn 0.0
 
nobody 0 0 enddynamic</tt>
 
 
 
 
<tt>przykład:
 
</tt>
 
 
 
 
<tt>node
 
-1 0 eamos dynamic pkp\eams_v1 eams3 401zl 0.0 nobody 3 1 sand
 
enddynamic</tt>
 
 
 
 
<br>
 
 
 
 
Komentarz:
 
typ sprzęgu definiowany jest jako kombinacja bitowa flag: 1=sprzęg
 
rzeczywisty, 2=sprzęg pneumatyczny, 4=sprzęg sterowania ukrotnionego
 
itp. Zero oznacza brak fizycznego połączenia.
 
 
 
 
<br>
 
 
 
 
<br>
 
 
 
 
NODE::Model
 
 
 
 
Wstawia model nieruchomy ale z
 
możliwością animacji, np. semafor.
 
 
 
 
Parametry:
 
 
 
 
* Position &ndash; pozycja [x,y,z]
 
* Angle &ndash; kąt [deg]
 
* Model &ndash; model obiektu
 
* texture &ndash; jeśli w modelu istnieje tekstura o takiej nazwie to zostanie ona podmieniona
 
* Lights (opcjonalny) &ndash; stany świateł obiektu 0-wył, 1-wł, 2-migające
 
 
w
 
modelu trzeba je nazwać Light_On01, Light_Off01, Light_On02,
 
Light_Off02 itd.
 
 
 
 
Light_On01
 
to światło włączone, Light_Off01 to wyłączone
 
 
 
 
składnia:
 
<tt>node
 
&ndash;1 0 none model pos.x pos.y pos.z angle model </tt><tt>texture</tt><tt>
 
lights 0 0 1 0 0 0 endmodel</tt>
 
 
 
 
<br>
 
 
 
 
Przykład osadzenia modelu semafora
 
świetlnego z napisem A na tabliczce:
 
 
 
 
<tt>node
 
&ndash;1 0 none model 10 20 4 90 SS5zpcpbY.t3d </tt><tt>A</tt><tt>
 
Lights 0 0 1 0 0 0 endmodel</tt>
 
 
 
 
Przykład osadzenia modelu latarni
 
zwrotnicowej:
 
 
 
 
<tt>node
 
-1 0 Testowo_zwr1_Wz model &ndash;44.0 0.2 234.5 0.0 WzL.t3d none
 
endmodel</tt>
 
 
 
 
<br>
 
 
 
 
<br>
 
 
 
 
NODE::Triangles
 
 
 
 
Definiuje trojkąt jako element skladowy
 
terenu:
 
 
 
 
Parametry:
 
 
 
 
* ambient, diffuse, specular &ndash; podatność materiału na oświetlenie tymi 3ma składowymi światła
 
* Texture &ndash; nazwa pliku z tekstura obiektu
 
* Vertices &ndash; lista wierzchołków w formacie [x,y,z,nx,ny,nz,tu,tv], ich ilość musi być podzielna przez 3
 
 
<br>
 
 
 
 
x, y, z &ndash; współrzędne wierzchołka
 
 
 
 
nx, ny, nz &ndash; wektor normalny do
 
płaszczyzny o długości 1
 
 
 
 
tu, tv &ndash; współrzędne tekstury w
 
danym wierzchołku
 
 
 
 
<br>
 
 
 
 
info:
 
materiał błyszczący powinien mieć wysoką składową ''specular'',
 
ściany tunelu powinny mieć wysoką składową ambient i bardzo niskie
 
''diffuse'' i ''specular''
 
aby światło słoneczne na nie nie padało, itp
 
 
 
 
<br>
 
 
 
 
składnia:
 
<tt>node 1000 0
 
none triangles material ambient: r g b diffuse: r g b specular: r g b
 
endmaterial texture</tt>
 
 
 
 
<tt>x
 
y z nx ny nz tu tv end</tt>
 
 
 
 
<tt>x
 
y z nx ny nz tu tv end</tt>
 
 
 
 
<tt>x
 
y z nx ny nz tu tv </tt>
 
 
 
 
<tt>endtri</tt>
 
 
 
 
<br>
 
 
 
 
Przykład trójkąta, który będzie
 
widoczny z odległości mniejszej niż 1km, z teksturą grass:
 
 
 
 
<tt>node
 
1000 0 none triangles material ambient: 100 100 100 diffuse: 255 255
 
255 specular: 200 200 200 endmaterial grass</tt>
 
 
 
 
<tt>-51.4
 
0.2 0.0 -1.1094 1.6641 0.0 0.15 0.0 end</tt>
 
 
 
 
<tt>-51.4
 
0.2 100.0 -0.554701 0.83205 0.0 0.15 25.0 end</tt>
 
 
 
 
<tt>-48.6
 
0.2 0.0 0.0 2.0 0.0 0.85 0.0 </tt>
 
 
 
 
<tt>endtri</tt>
 
 
 
 
<br>
 
 
 
 
<br>
 
 
 
 
<br>
 
 
 
 
NODE::Triangle_Strip
 
 
 
 
Definiuje wielokąt:
 
 
 
 
Parametry:
 
 
 
 
* Texture &ndash; nazwa pliku z tekstura obiektu
 
* Vertices &ndash; lista wierzchołków w formacie [x,y,z,nx,ny,nz,tu,tv]
 
 
<br>
 
 
 
 
NODE::Triangle_Fan
 
 
 
 
Definiuje wielokąt:
 
 
 
 
Parametry:
 
 
 
 
* Texture &ndash; nazwa pliku z tekstura obiektu
 
* Vertices &ndash; lista wierzchołków w formacie [x,y,z,nx,ny,nz,tu,tv]
 
 
<br>
 
 
 
 
NODE::Lines
 
 
 
 
Definiuje listę linii:
 
 
 
 
Parametry:
 
 
 
 
* Color &ndash; [r,g,b]
 
* Thickness &ndash; grubość linii
 
* Points &ndash; lista wierzchołków w formacie [x,y,z], ich ilość musi być podzielna przez 2
 
 
<br>
 
 
 
 
Jeśli
 
grubość linii (liczona w pierwszym wierzchołku) odwzorowana na ekran
 
jest mniejsza niż jeden piksel to linia rysowana jest jako częściowo
 
przeźroczysta (chyba że przeźroczystość jst mniejsza niż 4%, wtedy w
 
ogóle nie rysuje).
 
 
 
 
<br>
 
 
 
 
Przykład czarnych
 
linii o grubości 3mm:
 
 
 
 
<tt>node
 
300 0 none lines 0 0 0 3</tt>
 
 
 
 
<tt>-638.0
 
0.0 -89.0 -638.0 1.7 -89.0 </tt>
 
 
 
 
<tt>-638.0
 
1.7 -89.0 -630.5 1.5 -86.0 </tt>
 
 
 
 
<tt>endline</tt>
 
 
 
 
<br>
 
 
 
 
NODE::Line_Strip
 
 
 
 
Definiuje łamaną:
 
 
 
 
Parametry:
 
 
 
 
* Color &ndash; [r,g,b]
 
* Points &ndash; lista wierzchołków w formacie [x,y,z]
 
 
Przykład
 
zielonej łamanej o grubości 1mm:
 
 
 
 
<tt>node
 
300 0 none lines 0 255 0 1</tt>
 
 
 
 
<tt>-638.0
 
0.0 -89.0 </tt>
 
 
 
 
<tt>-638.0
 
1.7 -89.0 </tt>
 
 
 
 
<tt>-630.5
 
1.5 -86.0 </tt>
 
 
 
 
<tt>endline</tt>
 
 
 
 
<br>
 
 
 
 
NODE::Line_Loop
 
 
 
 
Definiuje łamaną zamkniętą:
 
 
 
 
Parametry:
 
 
 
 
* Color &ndash; [r,g,b]
 
* Points &ndash; lista wierzchołków w formacie [x,y,z]
 
 
Przykład
 
niebieskozielonej linii zamkniętej nigdy nie przeźroczystej:
 
 
 
 
<tt>node
 
300 0 none lines 0 255 128 </tt><tt>-1</tt>
 
 
 
 
<tt>-638.0
 
0.0 -89.0 </tt>
 
 
 
 
<tt>-638.0
 
1.7 -89.0 </tt>
 
 
 
 
<tt>-630.5
 
1.5 -86.0 </tt>
 
 
 
 
<tt>endline</tt>
 
 
 
 
<br>
 
 
 
 
NODE::MemCell
 
 
 
 
Komórka pamięci, nie jest rysowana ale
 
ma współrzędne X,Y,Z
 
 
 
 
Parametry:
 
 
 
 
* Position X,Y,Z: współrzędne komórki pamięci
 
* Command: początkowa wartość parametru (informacji) tekstowego
 
* Value1: początkowa wartość parametru liczbowego
 
* Value2: początkowa wartość drugiego parametru liczbowego
 
* TrackName: nazwa toru na który oddziałowywuje w przypadku zmiany parametrów (można dać '''none''')
 
 
<br>
 
 
 
 
Przykład:
 
 
 
 
<tt>node
 
-1 0 memcell_train3 memcell 1.0 1.0 1.0 Wait_for_orders 0 0
 
StatAStatC_trk415 endmemcell</tt>
 
 
 
 
<br>
 
 
 
 
NODE::EventLauncher
 
 
 
 
Obiekt wyzwalany naciśnięciem klawisza
 
albo o określonej godzinie lub raz na jakiś czas. Nie jest rysowany
 
ale ma współrzędne X,Y,Z
 
 
 
 
Parametry:
 
 
 
 
* Position X,Y,Z: współrzędne wyzwalacza
 
* Radius: maksymalna odległość obserwatora od obiektu, -1 oznacza brak sprawdzania odległości
 
* Key: kod klawisza (tylko literowe, none= brak reakcji na klawisze)
 
* Time: godzina w formacie '''hh:mm''' albo ze znakiem minus: okresowość wyzwalania w sekundach, zero -brak reakcji czasowej
 
* Event1: zdarzenie wyzwalane przy naciśnięciu klawisza gdy SHIFT nie jest naciśnięty albo gdy upłynął określony czas
 
* Event2: zdarzenie wyzwalane przy naciśnięciu klawisza gdy SHIFT jest naciśnięty opcjonalnie, po słowie <tt>condition</tt>
 
* MemCell: nazwa komórki pamięciowej
 
* Parameters &ndash; String, Val1, Val2 &ndash; wartości którym się muszą równać wartości komórki pamięciowej żeby zdarzenia zostały wysłane do kolejkowania
 
 
<br>
 
 
 
 
Przykład z pliku scenery/
 
zwrL34R300M.inc:
 
 
 
 
//sterowanie
 
zwrotnica za pomoca klawiszy t,t
 
 
 
 
node
 
-1 0 (p1) eventlauncher (p2) (p3) (p4) 3.0 t 0 (p1)+ (p1)- end
 
 
 
 
<br>
 
 
 
 
NODE::Sound
 
 
 
 
Definiuje
 
dzwiek umieszczony w okreslonej pozycji
 
 
 
 
przykład:
 
 
 
 
<tt>node
 
400 0 kierpoc4_wav sound -12320.0 1.5 29468.0 rp14_22.wav endsound</tt>
 
 
 
 
<br>
 
 
 
 
<br>
 
 
 
 
2
 
Wpis EVENT
 
 
 
 
Definiuje zdarzenia które służą do
 
sterowania obiektami, np. zmienić sygnał na semaforze czy przełożyć
 
zwrotnice.
 
 
 
 
Parametry:
 
 
 
 
* Name &ndash; nazwa zdarzenia
 
* EventType &ndash; typ zdarzenia
 
* Delay &ndash; opóźnienie przy uruchamianiu zdarzenia może byc ujemne, wtedy wywoływane jest cyklicznie, ale to jest nieprzetestowane
 
* ObjectName &ndash; nazwa obiektu do którego odnosi się zdarzenie
 
* dodatkowe parametry zależne od EventType:
 
 
<br>
 
 
 
 
Część
 
nazwy może być parametrem, np.
 
 
 
 
<tt>event;(P1)_sem_anim12
 
animation 0 kszt2.t3d rotate Ramie01 0 45 0 80 endevent</tt>
 
 
 
 
oznacza,
 
jeśli taka deklaracja jest w pliku semkszt2.inc, że jak damy w
 
scenerii wywołanie <tt>semkszt2
 
Raba_A</tt>
 
 
 
 
to
 
zdarzenie będzie miało nazwę <tt>Raba_A_sem_anim11</tt>.
 
 
 
 
<br>
 
 
 
 
Rozróżnia
 
się 9 typów zdarzeń:
 
 
 
                                                     
 
{| border="1"
 
|-
 
|
 
=== Lights ===
 
 
|
 
Zmienia
 
światła w danym przez ObjectName modelu
 
 
 
 
!
 
<br>
 
 
 
 
|-
 
|
 
=== Animation ===
 
 
|
 
dokonuje
 
rotacji lub translacji fragmentu modelu, nazwa modelu jest w
 
ObjectName
 
 
 
 
|
 
<br>
 
 
 
 
|-
 
|
 
=== TrackVel ===
 
 
|
 
Zmienia
 
przypisaną prędkość do toru.
 
 
 
 
|
 
<br>
 
 
 
 
|-
 
|
 
=== UpdateValues ===
 
 
|
 
Ładuje
 
informacje do komórki pamięci.
 
 
 
 
|
 
<br>
 
 
 
 
|-
 
|
 
=== GetValues ===
 
 
|
 
Pobiera
 
informacje z komórki pamięci i wysyła do obiektu ''dynamic''.
 
 
 
 
|
 
<br>
 
 
 
 
|-
 
|
 
=== Multiple ===
 
 
|
 
Pozwala
 
wywołać więcej zdarzeń.
 
 
 
 
|
 
<br>
 
 
 
 
|-
 
|
 
=== Switch ===
 
 
|
 
Zmienia
 
przełożenie zwrotnicy.
 
 
 
 
|
 
<br>
 
 
 
 
|-
 
|
 
=== Sound ===
 
 
|
 
Odtwarza
 
dźwięk z pliku .wav o nazwie określonej jako ObjectName
 
 
 
 
|
 
<br>
 
 
 
 
|-
 
|
 
=== PutValues ===
 
 
|
 
Wysyła
 
statyczne informacje do obiektu ''dynamic'' (z pominięciem
 
komórki pamięci)
 
 
 
 
|
 
<br>
 
 
 
 
|}
 
<br>
 
 
 
 
EVENT::Lights
 
 
 
 
Zmienia światła w danym przez
 
ObjectName modelu
 
 
 
 
Parametry:
 
 
 
 
* eventname &ndash; nazwa zdarzenia
 
* delay &ndash; opóźnienie wykonania
 
* objname &ndash; nazwa node'a który ma swiatla
 
* Lights &ndash; stany świateł obiektu 0-wył, 1-wł, 2-migające
 
 
składnia:
 
 
 
 
<tt>event
 
eventname lights delay objname 2 0 0 1 0 endevent</tt>
 
 
 
 
przykład:
 
 
 
 
<tt>event
 
sem10_light11 lights 0.0 sem10 2 0 0 1 0 endevent</tt>
 
 
 
 
<br>
 
 
 
 
EVENT::Animation
 
 
 
 
dokonuje rotacji lub translacji
 
fragmentu modelu, nazwa modelu jest w ObjectName
 
 
 
 
Parametry:
 
 
 
 
* AnimationType &ndash; rodzaj animacji: rotate/translate
 
* SubModel &ndash; nazwa fragmentu modelu podlegającego animacji
 
* X, Y, Z &ndash; wartości kątów lub przesunięć
 
* AnimationSpeed &ndash; prędkość animacji
 
 
przykład:
 
 
 
 
jeśli
 
model jest osadzony (patrz 1.1.3) w ten sposób:
 
 
 
 
<tt>node
 
-1 0 Testowo_A model 100.0 0.2 20.0 180 sem_kszt2.t3d endmodel</tt>
 
 
 
 
i
 
jego fragment nazwany jest <tt>Ramie01</tt>
 
to rotacja tego
 
ramienia o 45deg wokół osi Y z prędkością 40deg/s definiuje się:
 
 
 
 
<tt>event
 
Testowo_A_sem_anim21 animation 0 Testowo_A rotate Ramie01 0 -45 0 40
 
endevent</tt>
 
 
 
 
 
EVENT::TrackVel
 
 
 
 
Parametry:
 
 
 
 
* eventname &ndash; nazwa zdarzenia.
 
* Delay &ndash; opóźnienie wykonania
 
* TrackName &ndash; tor ktoremu zostanie ustawiona predkość
 
* Velocity &ndash; prędkość która zostanie przypisana do toru.
 
 
<br>
 
 
 
 
składnia:
 
 
 
 
<tt>event
 
eventname trackvel delay trackname velocity endevent</tt>
 
 
 
 
przykład:
 
 
 
 
<tt>event
 
zwr_1_wbok trackvel 0.0 t_zwr_1 40.0 endevent</tt>
 
 
 
 
<br>
 
 
 
 
EVENT::UpdateValues
 
 
 
 
Ładuje informacje do komórki pamięci.
 
 
 
 
Parametry:
 
 
 
 
* eventname &ndash; nazwa zdarzenia
 
* Delay &ndash; opóźnienie wykonania
 
* Command &ndash; łańcuch znaków
 
* Value1 &ndash; jakaś liczba
 
* Value2 &ndash; jakaś druga liczba
 
 
Uwaga
 
&ndash; jeśli któryś z 3 powyższych parametrów jest * to dany
 
parametr komórki pamięciowej nie zostanie uaktualniony (można
 
selektywnie uaktualniać)
 
 
 
 
<br>
 
 
 
 
składnia:
 
 
 
 
<tt>event
 
eventname updatevalues delay memcell_train3 command value1 value2
 
endevent</tt>
 
 
 
 
Przykłady:
 
 
 
 
<tt>event
 
start3b updatevalues 30.0 memcell_train3 SetVelocity 50 -1 endevent</tt>
 
 
 
 
(po 30 sekundach wpisze
 
komendę SetVelocity(50,-1) do komórki memcell_train3)
 
 
 
 
albo w pliku
 
.inc:
 
 
 
 
<tt>event
 
(p1)_sem_info_shunt2 updatevalues 1.0 (p1)_sem_mem ShuntVelocity 40 0</tt>
 
 
 
 
(po 1 sekundzie wpisze
 
komendę ShuntVelocity(40,0) do
 
komórki o nazwie (p1)_sem_mem gdzie P1 jest nazwą semafora
 
definiowaną na zewnątrz pliku .inc
 
 
 
 
a może wykolejnica?
 
 
 
 
<tt>event
 
Wk1_1 </tt><tt>updatevalues
 
0</tt><tt>
 
Wk1_status DamageFlag 128 1 endevent</tt>
 
 
 
 
wykorzystanie komórki
 
pamięciowej do informacji o drodze przebiegu:
 
 
 
 
<tt>event
 
Testowo_Wjazd1-Zaczynek updatevalues 0.0 Testowo_status1 Wjechal 1 </tt><tt>*</tt><tt>
 
endevent</tt>
 
 
 
 
<br>
 
 
 
 
EVENT::GetValues
 
 
 
 
Pobiera informacje z komórki pamięci i
 
wysyła do obiektu ''dynamic''.
 
 
 
 
ObjectName w tym przypadku to nazwa
 
komórki pamięci.
 
 
 
 
Parametry Command, Value1, Value2 oraz
 
współrzędne komórki pamięci X,Y,Z są przekazywane obiektowi który
 
wywołuje zdarzenie GetValues
 
 
 
 
Przykłady:
 
 
 
 
<tt>event
 
StatAStatC_szlak getvalues 1.0 StatAStatC_szlak_mem endevent</tt>
 
 
 
 
(z
 
komórki o nazwie <tt>StatAStatC_szlak_mem
 
</tt>wysyłana jest jej
 
zawartość do obiektu który wjechał na tor w którym była deklaracja
 
<tt>event1
 
</tt><tt>StatAStatC_szlak</tt>
 
 
 
 
<br>
 
 
 
 
albo
 
w pliku .inc definiujacym semafor:
 
 
 
 
<tt>event
 
(p1)_sem_info getvalues 1.0 (p1)_sem_mem endevent</tt>
 
 
 
 
(z
 
komórki o nazwie <tt>(p1)_sem_mem
 
wysyła informacje o aktualnej prędkości tego semafora)</tt>
 
 
 
 
<br>
 
 
 
 
EVENT::PutValues
 
 
 
 
Wysyła statyczne informacje do obiektu
 
''dynamic'' (z pominięciem komórki pamięci)
 
 
 
 
Przykłady:
 
 
 
 
<tt>event
 
odpalciecia putvalues 10.0 none 0.1 0.1 0.1 Jump_to_order 0 0
 
endevent</tt>
 
 
 
 
<tt>W9-start.inc</tt>
 
 
 
 
<tt>W9-stop.inc
 
itp</tt>
 
 
 
 
<br>
 
 
 
 
<br>
 
 
 
 
<br>
 
 
 
 
EVENT::Multiple
 
 
 
 
Pozwala wywołać więcej zdarzeń.
 
ObjectName jest na ogół nieużywane, chyba że na końcu listy zdarzeń
 
będzie parametr <tt>condition</tt>
 
 
 
 
Parametry:
 
 
 
 
* Events &ndash; lista zdarzeń do wywołania
 
 
opcjonalnie po
 
słowie kluczowym condition:
 
 
 
 
* ConditionType &ndash; typ warunku:
 
 
<tt>trackoccupied
 
trackfree propability memcompare</tt>
 
 
 
 
dwa
 
pierwsze: wyzwalane są gdy tor określony w ObjectName jest zajęty lub
 
wolny, propability wyzwalane jest jeśli wylosowana liczba jest
 
mniejsza niz parametr z zakresu 0...1,
 
 
 
 
memcompare
 
wyzwalane jest gdy zawartości komórki pamięciowej określonej w
 
ObjectName równe są podanej liście parametrów:
 
 
 
 
* Parameters &ndash; String, Val1, Val2 (tylko w przypadku memcompare &ndash; wszystkie 3 wartości muszą być równe wartościom komórki pamięciowej, chyba że któreś z nich jest *)
 
 
<br>
 
 
 
 
Przykład:
 
 
 
 
<tt>event
 
semA_S13 multiple 0 none semA_light13 semA_S13set</tt><tt> </tt><tt>endevent</tt>
 
 
 
 
(wywołuje
 
dwa zdarzenia, jedno ustawia światła na semaforze, drugie definiuje
 
jego prędkość)
 
 
 
 
<br>
 
 
 
 
albo
 
zdarzenia warunkowe:
 
 
 
 
<tt>event
 
przejazd_otwieraj multiple 2.0 tornaprzejezdzie przejazd_1_sygn1
 
przejazd_1_sygn2 condition trackfree</tt>
 
 
 
 
wyzwalane
 
jest gdy tor o nazwie tornaprzejezdzie jest wolny;
 
 
 
 
<br>
 
 
 
 
<tt>event
 
Zaczynek-Testowo1 multiple 3.0 Testowo-status Testowo-Zatwierdz
 
Testowo-zwr1+ Testowo_ToA_os2 Testowo_A_S5 Testowo_D_S1 condition
 
memcompare Rozwiazany * *</tt>
 
 
 
 
<tt>wyzwalane
 
jest jeśli pierwszy parametr komórki pamięciowej Testowo-status jest
 
słowem Rozwiazany</tt>
 
 
 
 
<br>
 
 
 
 
EVENT::Switch
 
 
 
 
Parametry:
 
 
 
 
* delay &ndash; opoznienie wykonania
 
* '''switchname - '''Nazwa zwrotnicy
 
* State &ndash; stan na który należy przełączyć zwrotnice '''0''' lub '''1'''
 
 
<br>
 
 
 
 
składnia:
 
 
 
 
<tt>event
 
eventname switch delay switchname state endevent</tt>
 
 
 
 
przykład:
 
 
 
 
<tt>event
 
Testowo_zwr1+ switch 0.0 Testowo_zwr1 1 endevent</tt>
 
 
 
 
<br>
 
 
 
 
EVENT::Sound
 
 
 
 
Odtwarza dźwięk z pliku .wav o nazwie
 
określonej jako ObjectName
 
 
 
 
Parametry:
 
 
 
 
* Attenuation &ndash; odległość połowicznego zaniku natężenia dźwięku (-1 - brak zależności natężenia od odległości obserwatora od źródła, np. radio)
 
 
* SndNode &ndash; nazwa obiektu NODE
 
* X,Y,Z &ndash; położenie dźwięku
 
* PlayStatus &ndash; czy dźwięk ma być wyłączony (0) czy włączony (1) (-1 oznacza brak zaniku, np. radio)
 
 
składnia:
 
 
 
 
<tt>event
 
name sound attenuation sndnode playstatus endevent</tt>
 
 
 
 
przykład:
 
 
 
 
<tt>event
 
kierpoc2 sound 1.0 kierpoc2_wav 1 endevent</tt>
 
 
 
 
<tt>przykład
 
definicji dzwieku wywolywanego przez ten event w opisie NODE::Sound</tt>
 
 
 
 
<br>
 
 
 
 
3
 
Wpis TRAINSET
 
 
 
 
Służy do ustawiania składów. Patrz też:
 
NODE::Dynamic.
 
 
 
 
Parametry:
 
 
 
 
* TrainName &ndash; nazwa pociągu (taka sama jak nazwa pliku *.txt z rozkładem jazdy)
 
* Track &ndash; nazwa toru na którym ustawiamy skład
 
* Dist &ndash; odległość początkowa
 
* Vel &ndash; prędkość początkowa
 
 
<br>
 
 
 
 
składnia:
 
 
 
 
<tt>trainset
 
trainname track dist vel </tt>
 
 
 
 
przykład
 
pociągu ciągniętego przez dwie EU07 w trakcji ukrotnionej:
 
 
 
 
<tt>trainset
 
</tt><tt>PE2307</tt><tt>
 
StatB_track03 170.0 0.0 </tt>
 
 
 
 
<tt>node
 
-1 0 player_train dynamic PKP\EU07 4E 0.0 1 7 </tt><tt>0</tt><tt>
 
enddynamic</tt>
 
 
 
 
<tt>node
 
-1 0 player_train dynamic PKP\EU07 4E 0.0 0 3 </tt><tt>0</tt><tt>
 
enddynamic</tt>
 
 
 
 
<tt>node
 
-1 0 5051-503320-2 dynamic PKP\Bipa Bipa-A 0.0 0 3 </tt><tt>10
 
Passengers</tt><tt>
 
enddynamic</tt>
 
 
 
 
<tt>node
 
-1 0 5051-503321-7 dynamic PKP\Bipa Bipa-CD 0.0 0 3 </tt><tt>25
 
Passengers</tt><tt>
 
enddynamic</tt>
 
 
 
 
<tt>node
 
-1 0 5051-503322-1 dynamic PKP\Bipa Bipa-CD 0.0 0 3 </tt><tt>8
 
Passengers</tt><tt>
 
enddynamic</tt>
 
 
 
 
<tt>node
 
-1 0 5051-503323-5 dynamic PKP\Bipa Bipa-B 0.0 0 0 </tt><tt>9
 
Passengers</tt><tt>
 
enddynamic</tt>
 
 
 
 
<tt>endtrainset</tt>
 
 
 
 
<br>
 
 
 
 
<br>
 
 
 
 
4
 
Wpis INCLUDE
 
 
 
 
Dołącza plik z opcjonalnymi parametrami
 
 
 
 
Parametry:
 
 
 
 
* FileName &ndash; nazwa pliku do dołączenia
 
* Parameters &ndash; lista parametrów
 
 
Ciągi znaków '''(p1)''', '''(p2)''',
 
'''(p3)''' ... w pliku dołączanym zostanie zastąpiony odpowiednimi
 
parametrami.
 
 
 
 
<br>
 
 
 
 
Składnia:
 
 
 
 
przykład:
 
 
 
 
<tt>include
 
drzewo.inc Pine1.tga 42.0 0.0 5.0 45 5 2 end</tt>
 
 
 
 
<br>
 
 
 
 
Plik drzewo.inc wygląda tak:
 
 
 
 
<tt>//---------------drzewo---------------</tt>
 
 
 
 
<tt>//param:
 
tekstura, x, y, z, kat, wysokosc, rozpietosc </tt>
 
 
 
 
<tt>origin
 
(p2) (p3) (p4)</tt>
 
 
 
 
<tt> rotate
 
0 (p5) 0</tt>
 
 
 
 
<br>
 
 
 
 
<tt> node
 
500 0 none triangle_strip (p1) </tt>
 
 
 
 
<tt> 0,0,(p7) 0,0,0 1,1 end</tt>
 
 
 
 
<tt> 0,(p6),(p7) 0,0,0 1,0 end</tt>
 
 
 
 
<tt> 0,0,-(p7) 0,0,0 0,1 end</tt>
 
 
 
 
<tt> 0,(p6),-(p7) 0,0,0 0,0 end</tt>
 
 
 
 
<tt> 0,0,(p7) 0,0,0 1,1 end</tt>
 
 
 
 
<tt> 0,(p6),(p7) 0,0,0 1,0</tt>
 
 
 
 
<tt> endtri</tt>
 
 
 
 
<br>
 
 
 
 
<tt> node
 
500 0 none triangle_strip (p7) </tt>
 
 
 
 
<tt> -(p7),0,0 0,0,0 1,1 end</tt>
 
 
 
 
<tt> -(p7),(p6),0 0,0,0 1,0 end</tt>
 
 
 
 
<tt> (p7),0,0 0,0,0 0,1 end</tt>
 
 
 
 
<tt> (p7),(p6),0 0,0,0 0,0 end</tt>
 
 
 
 
<tt> -(p7),0,0 0,0,0 1,1 end</tt>
 
 
 
 
<tt> -(p7),(p6),0 0,0,0 1,0</tt>
 
 
 
 
<tt> endtri</tt>
 
 
 
 
<br>
 
 
 
 
<tt> rotate
 
0 0 0</tt>
 
 
 
 
<tt>endorigin</tt>
 
 
 
 
<br>
 
 
 
 
<br>
 
 
 
 
5
 
Wpis ORIGIN
 
 
 
 
Przesuwa obiekty o wektor, przykład
 
powyżej.
 
 
 
 
<br>
 
 
 
 
6
 
Wpis ROTATE
 
 
 
 
Obraca obiekty o zadane kąty, przykład
 
powyżej.
 
 
 
 
<br>
 
 
 
 
7
 
Wpis DESCRIPTION
 
 
 
 
<tt>Opis
 
scenerii, tekst pomiędzy Description a EndDescription jest ignorowany
 
przez program eu07.exe, ale przydatny dla innych programów typu
 
loader scenerii itp.</tt>
 
 
 
 
<br>
 
 
 
 
8
 
Wpis ATMO
 
 
 
 
Definiuje
 
kolor tła (R,G,B 0...1) oraz mgłę: początek, koniec, kolory R,G, B
 
mgły.
 
 
 
 
przykład:
 
 
 
 
<tt>atmo
 
0.5 0.6 1.0 300 1200 0.7 0.8 1.0 endatmo</tt>
 
 
 
 
=== Kolory R,G, B mają być z zakresu 0...1. ===
 
 
<br>
 
 
 
 
9
 
Wpis LIGHT
 
 
 
 
<tt>Definiuje
 
pozycję XYZ oraz kolor RGB &lt;0;1&gt; składowej ambient
 
(rozproszone), diffuse (kierunkowe) i specular (zajączki) światła
 
dziennego. </tt>
 
 
 
 
<tt>przykład:</tt>
 
 
 
 
<pre>light &ndash;500 500 200  0.5 0.45 0.45  0.50 0.55 0.54  0.95 0.94 0.90  endlight
 
</pre>
 
 
 
Pierwsze 3 liczby określają kierunek padania światła. Wektor ten
 
zawsze jest przeliczany na jednostkowy, dlatego nie ma znaczenia, czy
 
będzie &ndash;'''500 500 200''', czy &ndash;'''5 5 2'''. Kolejne
 
liczby są składowymi RGB składowych światła.
 
 
 
 
We wcześniejszych wersjach EXE definiowane były dwa światła
 
ambient, co powodowało, że znaczenie światła diffuse (tworzącego
 
cienie) było niewielkie. Ponieważ po wyłączeniu jednego światła
 
ambient robiło się zbyt ciemno, dla zachowania zgodności wstecz
 
został wprowadzony parametr '''doubleambient yes'''. Docelowo należy
 
używać '''doubleambient no''' i przy takim ustawieniu testować wpisy
 
światła, a także jasność modeli i tekstur.
 
 
 
 
<br>
 
 
 
 
10
 
Wpis CAMERA
 
 
 
 
Definiuje
 
pozycję kamery w przypadku trybu freefly, parametry: X,Y,Z,
 
 
 
 
<br>
 
 
 
 
11
 
Wpis CONFIG
 
 
 
 
Pozwala
 
na wpisanie pomiędzy '''config'''
 
a '''endconfig'''
 
dodatkowych parametrów konfiguracji (specyficznych dla scenerii),
 
podobnie jak w [[EU07.INI]].
 
Nie wszystkie parametry dadzą się ustawić na tym etapie, np. nie da
 
się zmienić rozmiaru okna, czy nazwy wczytywanej scenerii.
 

Aktualna wersja na dzień 07:55, 6 lip 2022

Plik scenerii jest plikiem tekstowym, zawierającym definicje obiektów, zdarzeń, pojazdów znajdujących się w scenerii. Aby plik scenerii mógł zostać uruchomiony przez symulator, należy umieścić go bezpośrednio w folderze scenery.

Przygotowanie

Scenerię można uruchomić za pomocą startera, wiersza poleceń lub bezpośrednio przez plik wykonywalny symulatora.

  • Komenda wiersza poleceń, uruchamiająca scenerię scene.scn:
   eu07.exe –s scenery/scene.scn
  • Wpis w eu07.ini, powodujący uruchomienie scene.scn przez plik wykonywalny
   sceneryfile scene.scn 

Scenerie używają prawoskrętnego ukłądu współrzędnych:

Swspol.png

Rodzaje plików składowych scenerii

Poniższe rodzaje plików nie różnią się składnią, a jedynie pomagają zachować ład w plikach wchodzących w skład scenerii. Są one dołączane do głównego pliku scenerii za pomocą dyrektywy include.

  • SCN - główny plik scenerii, zawiera zazwyczaj definicje składów i polecenia include, dołączające obiekty z innego pliku do scenerii.
  • SCM - plik z elementami składowymi scenerii. Zazwyczaj używa się tych plików do podziału obiektów scenerii na tory, drogi, drzewa, wskaźniki...
  • CTR - plik ze zdarzeniami tworzącymi scenariusz
  • INC - plik pozwalający na wstawienie parametryzowanego zbioru obiektów scenerii.

Składnia

Scenerię konfiguruje się za pomocą dyrektyw i wpisów przedstawionych w poniższym rozdziale:

Dyrektywy scenariusza

  • atmo - ustawienia mgły.
  • sky - ustawienie modelu nieba.
  • time - ustawienie czasu symulacji.
  • FirstInit - polecenie inicjalizacji wczytanych obiektów.
  • trainset - definicja składu.
  • event - zdarzenie, np. polecenie zmiany sygnału na semaforze.
  • include - dołączanie zawartości innych plików do pliku scenerii.
  • camera - ustawienia predefiniowanych pozycji kamer w trybie freefly.
  • config - ustawienia aplikacji specyficzne dla scenerii.
  • lua - dołączenie skryptu sterującego scenariuszem w języku LUA.
  • node - definicja obiektów widocznych: tory, rzeki, modele.
  • origin - polecenie przesunięcia obiektów o wektor.
  • rotate - polecenie obrotu obiektów o kąty.
  • group - grupowanie obiektów
  • isolated - definiowanie odcinków izolowanych
  • area - grupowanie odcinków izolowanych

Wycofane:

  • description - opis scenerii na potrzeby starterów.
  • light - ustawienie źródła oświetlenia scenerii.
  • test - testowanie poprawności dyrektyw.

Dyrektywy startera

Dyrektywy startera to zestaw parametrów (według składni komentarzy) pełniących rolę wprowadzenia do danego startera symulatora MaSzyna dodatkowych informacji oraz konfiguracji. Nie mają wpływu na działanie symulacji!

//$n – nazwa scenerii:
  • Rainsted.exe wyświetlana w głównym oknie wyboru scenerii w polu z żółtym tłem;
  • Starter.exe wyświetlana w głównym oknie wyboru scenerii w zakładce Opis służby;
Rozpoznawana przez: Starter.exe, Rainsted.exe
//$d – opis scenerii:
  • Rainsted.exe wyświetlany w głównym oknie wyboru scenerii obok wybranego składu/scenariusza;
  • Starter.exe wyświetlany w głównym oknie wyboru scenerii w zakładce Opis służby;
Rozpoznawana przez: Starter.exe, Rainsted.exe
//$f – link do zewnętrznego pliku lub strony internetowej dotyczący scenerii albo pojedynczego scenariusza, możliwy do otwarcia z poziomu startera (wyświetlany jako dedykowany przycisk):
  • Rainsted.exe wyświetla do trzech przycisków tego typu w głównym oknie wyboru scenerii;
  • Starter.exe wyświetla przyciski tego typu w głównym oknie wyboru scenerii w zakładce Rozkład jazdy;
Rozpoznawana przez: Starter.exe, Rainsted.exe
//$o – opis składu, pokazywany przez dany starter. Jeśli skład ma być ukryty, przed pierwszym znakiem opisu powinien znaleźć się znak minus -. Dyrektywa ta musi zostać wprowadzona do pliku po dyrektywie scenariusza FirstInit.
Rozpoznawana przez: Starter.exe, Rainsted.exe
//$i – nazwa obrazka wyświetlanego przez dany starter w głównym oknie (miniaturka scenerii)
Rozpoznawana przez: Starter.exe, Rainsted.exe
//$it – definicja indywidualnego obrazka mini z katalogu scenery/images dla danego składu - deklaracja obrazka - nazwa bez rozszerzenia!
Rozpoznawana przez: Starter.exe
//$it – definicja indywidualnego logo startowego dla składu z katalogu textures/logo - deklaracja obrazka - nazwa bez rozszerzenia!
Rozpoznawana przez: Starter.exe
//$decor – pomijanie składów dekoracyjnych tj. nie wykonujących zadań scenariusza.
Rozpoznawana przez: Starter.exe
//$a – oznaczenie scenerii jako archiwalna. Nie wyświetla się domyślnie w głównym oknie Startera.
Rozpoznawana przez: Starter.exe
//$l – kategoria scenerii pozwalająca zwinąć wszystkie scenariusze do jednej grupie.
Rozpoznawana przez: Starter.exe
//$e – opis błędu
Rozpoznawana przez: Rainsted.exe
//$g – odnośnik do mapy
Rozpoznawana przez: Rainsted.exe
//$r – plik odniesienia
Rozpoznawana przez: Rainsted.exe
//$t – regeneracja plików terenu
Rozpoznawana przez: Rainsted.exe
//$w – parametry składu
type - Rodzaj pociągu: p - pasażerski, t - towarowy, m - towarowo-osobowy;
lmax - Maksymalna długość składu;
vmin - Minimalna prędkość pojazdów w składzie;
vmax - Maksymalna prędkość, jaką można rozwinąć na trasie przejazdu;
d - Rozstaw toru. Domyślnie normalny (1435m).
Rozpoznawana przez: Rainsted.exe
//$x – wymagana wersja pliku eu07.exe
Rozpoznawana przez: Rainsted.exe