Symulator EU07 (i nie tylko) > Na warsztacie

 Exe c++ aktualnosci, changelog itp

<< < (2/3) > >>

tmj:
Skonczylo sie miejsce w pierwszym poscie, wiec ciag dalszy patch notes bedzie tutaj ;/


--- Cytuj ---* dodane nowe urzadzenie kabinowe, hamulec bezpieczenstwa ("klapa Ackermana"). Stan urzadzenia domyslnie przelaczany jest kombinacja Shift+Ctrl+B. Nazwa urzadzenia w pliku .mmd to alarmchain

* dodana obsluga modeli dla urzadzen kabinowych: przelacznika sprezarki pantografow, definiowanego w .mmd jako pantcompressor_sw: i zaworu przelaczajacego polaczenie pantografow ze zbiornikiem glownym lub sprezarka pomocnicza, definiowanego w .mmd jako pantcompressorvalve_sw:

* obliczenia fizyki sa teraz domyslnie przeprowadzane z pelna dokladnoscia dla kazdego kroku. Przywrocenie starego trybu obliczen, ktory moze byc latwiejszy do zniesienia dla starych/slabych komputerow, dokonuje sie wpisem w .ini

--- Kod: ---fullphysics no

--- Koniec kodu ---

* aktualna pozycja w kabinie jest zapamietywana przy wyjsciu na zewnatrz i przywracana po powrocie, aby nie trzeba bylo za kazdym razem poprawiac sie recznie w fotelu; pozycja standardowa przywracana jest przy zmianie pomieszczenia/pojazdu

* event whois moze byc wykorzystany do sprawdzenia biezacego poziom zahamowania skladu, do ktorego nalezy badany pojazd. Poziom podawany jest jako pierwsza wartosc liczbowa przy wywolaniu eventu z parametrem 31

* event whois moze byc uzyty by uzyskac informacje na temat odleglosci skladu do najblizszego pojazdu na drodze biezacego kierunku jazdy. Odleglosc podawana jest jako druga wartosc liczbowa przy wywolaniu eventu z parametrem 31

* zmieniona nieco kolorystyka trakcji w trybie debug: zasilanie jednokierunkowe sygnalizowane jest kolorem niebieskim lub zoltym zaleznie od kierunku, zasilanie dwustronne to kolor zielony, odcinek polaczony z innymi jednostronnie/izolowany to kolor czerwony; przesla z bezposrednim podpieciem zasilania sa biale, a te bez zasilania w ogole czarne

* w plikach .inc mozna teraz uzywac wiecej niz tylko jednego parametru na token, dopuszczalne jest tez ich zagniezdzanie. Jesli zdefiniujemy np.

include foo.inc param1_i_(p3) param2 param3

to parser przy odczytywaniu takiego include i napotkaniu tokena "wstaw_tutaj_(p1)_oraz_(p2)" wyprodukuje:
wstaw_tutaj_param1_i_param3_oraz_param2

* mozliwosc przypisania do geometrii dodatkowej tekstury/tekstur, ktore moga byc wykorzystane do generowania bardziej zaawansowanych efektow graficznych.

- w miejsce dotychczasowych wpisow sciezki/nazwy tekstury w plikach .scn itp. podajemy sciezke/nazwe pliku tekstowego z rozszerzeniem .mat  Dopiero w tym pliku podane sa sciezki/nazwy tekstur w postaci:

--- Kod: ---texture1: nazwa_dotychczasowej_tekstury
texture2: nazwa_tekstury_dodatkowej

--- Koniec kodu ---
- jesli symulator nie znajdzie pliku .mat o podanej nazwie, automatycznie probuje on wczytac wskazany plik jako podstawowa teksture.

- sila 'odbic otoczenia' definiowana jest w kanale alfa tekstury dodatkowej; uklad UV jest taki sam jak dla tekstury podstawowej, kolor bialy odpowiada maksymalnej sile odbic. Tutaj uwaga, z sila nie nalezy przesadzac; wystarczajace sa wartosci w granicach 5-20% w zaleznosci od materialu

* w plikach .mat mozna teraz opcjonalnie definiowac zestawy tekstur dla wybranych por roku. Definicja ma postac dodatkowych blokow

--- Kod: ---poraroku: { texture1: nazwa_tekstury_glownej texture2: nazwa_tekstury_dodatkowej }

--- Koniec kodu ---
np plik .mat dla standardowej trawy rozszerzony o wersje "zimowa" i bez zdefiniowanych tekstur dodatkowych wyglada tak:

--- Kod: ---winter: { texture1: snow_grass }
texture1: grass

--- Koniec kodu ---
rozpoznawane pory roku to spring: summer: autumn: i winter:  Pora roku okreslana jest na podstawie wpisu daylight lub w przypadku ustawienia daylight na 0 aktualnej daty pobranej z zegara/kalendarza komputera.

* Dodane nowe parametry dostepne dla modulu pythona:

--- Kod: ---epfuse (stan zalacznika hamulca elektropneumatycznego)
sanding (stan piasecznicy)
slip_X (informacja o poslizgu dla czlonu X, gdzie X to liczba w zakresie 1-20)

--- Koniec kodu ---

* wprowadzony pierwszy etap zapisu scenariuszy z poziomu symulatora; na razie ograniczony do zapisu geometrii terenu -- plik z rozszerzeniem .sbt tworzony jest automatycznie po zaladowaniu scenariusza, i rownie automatycznie wykorzystywany przy ladowaniu, o ile wystepuje. Przechowywane sa w nim dane wszystkich node triangles i lines jak rowniez zawartosc ewentualnych modeli 3d terenu.

* dodane nowe urzadzenia kabinowe, lampki kontrolne dla aktualnie aktywnych swiatel. Nazwy urzadzen w pliku .mmd to i-upperlight: i-leftlight: i-rightlight: i-leftend: i-rightend: i-rearupperlight: i-rearleftlight: i-rearrightlight: i-rearleftend: i-rearrightend:

* przy probie wczytania modelu ladunku dla danego pojazdu exe szuka najpierw specjalizowanego modelu nazwatypupojazdu_nazwaladunku.t3d Jesli taki model nie zostanie znaleziony, ladowany jest dotychczasowy model nazwaladunku.t3d

* wprowadzona obsluga pozycjonowania 3d dzwiekow, w oparciu o biblioteke OpenAL. Pozycjonowane sa w miare mozliwosci wszystkie dzwieki pojazdow, na podstawie polozenia przyciskow w kabinach jak i elementow ruchomych (wozki, drzwi, pantografy, sprzegi) "na zewnatrz"

* wprowadzone kategorie "polozenia" dzwiekow -- zrodlo dzwieku moze znajdowac sie w kabinie pojazdu, w przedziale silnikowym, "na zewnatrz" lub "miedzy wnetrzem i zewnetrzem". Glosnosc dzwiekow zmienia sie na podstawie polozenia tak dzwieku jak i uzytkownika

* wszystkie dzwieki dla ktorych mialo to sens zostaly przeniesione z kabiny do obiektu pojazdu

* wyboru implementacji openAL ktora powinna byc wykorzystana dokonuje sie przez wpis w .ini

--- Kod: ---sound.openal.renderer devicename

--- Koniec kodu ---

* ogolny poziom glosnosc odtwarzanych dzwiekow mozna modyfikowac wpisem w .ini

--- Kod: ---sound.volume X

--- Koniec kodu ---
gdzie X to wartosc w zakresie 1-4 (takze z ulamkiem) Domyslnie ustawiana jest wartosc 2.0

* w sekcji sounds pliku .mmd mozna zdefiniowac wpisem outernoise: dzwiek odtwarzany podczas ruchu danego pojazdu, slyszalny na zewnatrz pojazdu (parametry sa takie same jak dla runningnoise: )

* wszedzie, gdzie podawane sa nazwy plikow dzwiekowych mozna zamiast nazwy pojedynczego pliku podac ich 'zestaw', dowolna ilosc dzwiekow w formacie:
Kod:
[ dzwiek innydzwiek jeszczeinnydzwiek ]
przy ladowaniu scenariusza exe wybierze z takiego zestawu jeden dzwiek losowo.

* oprocz dotychczasowego sposobu definiowania dzwiekow i ich atrybutow, dostepny jest tez sposob alternatywny, umozliwiajacy modyfikacje domyslnych wartosci nowo wprowadzonych parametrow. Skladnia nowego sposobu definicji jest nastepujaca:

--- Kod: ---identyfikator: { atrybut: wartosc atrybut: wartosc atrybut: wartosc itp }

--- Koniec kodu ---
identyfikator: to do tej pory uzywane nazwy dzwiekow, np compressor: lub runningnoise:
rozpoznawane atrybuty to:

--- Kod: ---soundbegin: (dzwiek poczatkowy. wartosc to nazwa pliku dzwiekowego, lub zbior plikow zamkniety w nawiasach [ ] dla dzwieku wybieranego losowo)

soundmain: (dzwiek glowny. wartosc j.w.)

soundend: (dzwiek koncowy. wartosc j.w)

placement: (pomieszczenie, w ktorym znajduje sie dzwiek. parametr ten decyduje kiedy sila dzwieku jest tlumiona. dopuszczalne wartosci to:
internal (dzwiek umieszczony jest w kabinie pojazdu)
engine (dzwiek umieszczony jest w przedziale silnikowym)
external (dzwiek umieszczony jest 'na zewnatrz', np. syrena lub przetwornica w EN57)
general (dzwiek slyszalny jest tak samo w kabinie i na zewnatrz, zazwyczaj sa to drzwi itp)

offset: ( polozenie dzwieku wzgledem punktu centralnego pojazdu lub scenerii. wartosc to lokacja 3d podana w postaci [ X, Y, Z ] Dla pojazdow +X polozona jest po ich lewej stronie, +Y wskazuje gore, a +Z przod pojazdu)

range: (nominalny zasieg dzwieku, w metrach)

frequencyfactor: (mnoznik czestotliwosci, wartosc to liczba zmiennoprzecinkowa)

frequencyoffset: (dodawana do czestotliwosci, wartosc j.w.)

amplitudefactor: (mnoznik amplitudy, wartosc j.w.)

amplitudeoffset: (dodawana do czestotliwosci, wartosc j.w.)

--- Koniec kodu ---

* w nowej wersji definiowania dzwiekow obslugiwany jest parametr

--- Kod: ---soundset: "start.wav main.wav stop.wav"
lub
soundset: start.wav|main.wav|stop.wav

--- Koniec kodu ---
pozwala on zdefiniowac jednym wpisem dzwiek inicjujacy, glowny i konczacy (w miejsce indywidualnych definicji soundbegin: soundmain: i soundend: ) Podobnie jak w przypadku przypisywania pojedynczych dzwiekow, mozna podac wieksza ilosc zestawow, sposrod ktorych zostanie wylosowany i przypisany jeden:

--- Kod: ---soundset: [ "start.wav main.wav stop.wav", "innystart.wav innymain.wav innystop.wav" ]

--- Koniec kodu ---

* ujednolicone definiowanie dzwiekow wydawanych przez uklad napedowy. Dla wszystkich typow lokomotyw definicje sa teraz nastepujace

engine: definiuje dzwieki 'glownego' silnika pojazdu, zazwyczaj bedzie to silnik diesla. lokomotywy elektryczne nie potrzebuja tej definicji. przy dzwiekach skladanych aktywacja poszczegolnych elementow nastepuje na podstawie aktualnych obrotow silnika
tractionmotor: definiuje dzwieki motorow trakcyjnych. przy dzwiekach skladanych aktywacja poszczegolnych elementow nastepuje na podstawie aktualnych obrotow motorow
converter: definiuje dzwiek przetwornicy. lokomotyw bez przetwornicy nie potrzebuja tej definicji.

* ujednolicona obsluga dzwiekow wydawanych przez uklad napedowy:

tractionmotor: dziala takze w lokomotywach spalinowo-elektrycznych (w polaczeniu z silnikiem diesla)
ignition: dziala takze w lokomotywach spalinowo-elektrycznych
dieselinc: dziala takze w lokomotywach spalinowych

* przy definiowaniu progu zalaczenie 'oswietlonych' submodeli wpisem node poziom zapamietywany jest indywidualnie dla kazdego submodelu; pozwala to na aktywacje oswietlonych elementow etapami, zamiast wszystkich naraz

* dzwiek turbo silnika obsluguje parametry czestotliwosci i amplitudy

* w sekcji sounds pliku .mmd mozna zdefiniowac wpisem wheelflat: dzwiek podkucia kol danego pojazdu; czestotliwosc odtwarzania dzwieku bazowana jest na predkosci obrotowej kol pojazdu i uwzglednia wartosc mnoznika czestotliwosci.

* dzwiek wywolywany eventem moze byc odtwarzany z pozycji radia w kabinie obsadzonego pojazdu, na okreslonym kanale. Kanal radia podawany jest jako dodatkowy parametr przy definiowaniu eventu:

--- Kod: ---event nazwa_eventu sound opoznienie nazwa_dzwieku 1 numer_kanalu endevent

--- Koniec kodu ---

* dodane nowe urzadzenia kabinowe

i-mainbreakeroff: (lampka jest aktywna gdy wylacznik szybki nie jest zamkniety)
i-mainbreakerboff: (odpowiednik i-mainbreakeroff: w czlonie B)
i-converteroff: (lampka jest aktywna gdy przetwornica nie jest zalaczona)
i-converterboff: (odpowiednik i-converteroff: w czlonie B)
i-compressoroff: (lampka jest aktywna gdy sprezarka w pojezdzie nie pracuje)
i-compressorboff: (odpowiednik i-compressoroff: w czlonie B)
i-brakingoff: (lampka jest aktywna gdy cisnienie hamulca pojazdu jest ponizej 10 kPa)

--- Koniec cytatu ---

tmj:
Nowy kawalek logu na nowy rok, zwlaszcza ze poprzedni znowu robil sie pelny

--- Cytuj ---* zamiast pojedynczego dzwieku aktywacji stycznikow mozna teraz definiowac odrebny dzwiek dla kazdej pozycji, wykorzystujac format dzwiekow skladanych (czyli wpisy soundX: i opcjonalnie pitchX:) Dzwiek zalaczenia stycznikow umieszczony jest na pozycji sound1: natomiast ich rozlaczenia na pozycji sound0:

* dzwiek zalaczania bocznikow ma teraz swoj wlasnie wpis, shuntfield: w sekcji internaldata: Konfigurowany jest tak samo jak dotychczasowy relay: i podobnie jak on umozliwia teraz podanie odrebnych dzwiekow dla kazdej pozycji bocznikow.

* dodane nowe urzadzenia kabinowe, lampki kontrolne dla aktualnie aktywnej nastawy predkosci dzialania hamulca. Nazwy urzadzen w pliku .mmd to i-brakeprofileg: i-brakeprofilep: oraz i-brakeprofiler:

* dzwiek dieselinc: moze byc definiowany jako dzwiek skladany, podobnie jak glowny dzwiek silnika. W przypadku takiej definicji gdy silnik zwieksza obroty zostaje odtworzona przypisana dla danego przedzialu probka z dieselinc: a 'glowny' dzwiek silnika zostaje na ten czas wyciszony, zamiast zwyklego miksowania jak ma to miejsce przy pojedynczym dzwieku dieselinc:

* dzwiek falownikow zostal rozdzielony od dzwieku wentylatorow i otrzymal wlasny wpis inverter: w sekcji sounds: pliku mmd.

* usuwanie nieuzywanych tekstur z pamieci karty graficznej mozna wylaczyc wpisem w .ini

--- Kod: ---gfx.resource.sweep no

--- Koniec kodu ---

* tryb konserwacji pamieci przy usuwaniu nieuzywanych tekstur z pamieci karty graficznej mozna wlaczyc wpisem w .ini

--- Kod: ---gfx.resource.move yes

--- Koniec kodu ---
nalezy zwrocic uwage ze tryb ten moze (prawdopodobine) powodowac na niektorych kartach graficznych problemy z ponownym wyswietlaniem usunietych tekstur

* dodany nowe parametr dostepny dla modulu pythona:

--- Kod: ---radio_channel (aktualnie wybrany kanal radia)

--- Koniec kodu ---

* dodana obsluga pokretla wyboru kanalu radia, oraz przyciskow wyboru poprzedniego i kolejnego kanalu. Nazwy przelacznikow w pliku .mmd to radiochannel_sw: radiochannelprev_sw: i radiochannelnext_sw:

* dodana obsluga przycisku testu radiostopu, radiotest_sw: przycisku faktycznego radiostopu radiostop_sw: lampki kontrolnej otrzymanego radiostopu i-radiostop: oraz dzwiek radiostop w sekcji internaldata wydawany po otrzymaniu sygnalu radiostopu

* dodany parametr zmiany predkosci obrotowej wentylatorow oporow rozruchowych w pliku .fiz (zmienna RVentSpeed o domyslnej wartosci 0.5)

* wprowadzona obsluga nowego typu pojazdow, dmu czyli spalinowych zespolow trakcyjnych. Typ definiowany jest w kategorii Param. pliku .fiz wpisem

--- Kod: ---Type=dmu

--- Koniec kodu ---

* dla tekstur w formacie tga przy ladowaniu uwzgledniany jest parametr orientacji tekstury

* zmiana komunikacji z pulpitami sterowania opartymi na kontrolerze arduino. Wiaze sie z tym zmiana definicji parametrow wspolpracy w pliku .ini -- w miejsce dotychczasowych parametrow "mwd" rozpoznawane sa:

--- Kod: ---//uart <nazwa portu> <nie zmieniać> <częstość wysyłania danych (czas)>
uart COM3 500000 0.1 0.05
//uarttune <ham. zespolony min> <max> <ham. dodatkowy min> <max> <ciśnienie max w zbiorniku gł.> <max wartość dla PWM> (to samo dla przewodu gł i cylindrów hamulcowych)
uarttune 46.0 943.0 175.0 874.0 0.9 1023.0 0.7 1023.0 0.5 1023.0 4000.0 1023.0 800.0 1023.0
//uartfeature <nastawnik> <bocznik> <hamulec> <hamulec lokomotywy>
uartfeature no no yes yes
//uartdebug <wyświetlanie danych debugowania w konsoli>
uartdebug no

--- Koniec kodu ---

* definiujac kombinacje klawiszy sterujacych mozna uzywajac klucza none wylaczyc aktywacje danej komendy

* dodano mozliwosc konfiguracji funkcji aktywowanych przez urzadzenia zewnetrzne podpiete przez port szeregowy. Konfiguracja umieszczona jest w pliku eu07_input-uart.ini w katalogu symulatora. Definicja funkcji konkretnych bitow/pinow umieszczana jest linia po linii, wg skladni

--- Kod: ---numer_bitu typ_kontrolki funkcja_1 funkcja_2

--- Koniec kodu ---
rozpoznawane typy urzadzen kontrolnych to toggle (przelacznik bistabilny) i impulse (przycisk lub przelacznik impulsowy)
funkcja_1 i funkcja_2 to komendy, ktorych liste mozna znalezc w pliku konfiguracji klawiatury.
Przelaczniki impulsowe obsluguja jedna funkcje, aktywowana gdy dany bit/pin generuje sygnal. Przelaczniki bistabilne obsluguja dwie funkcje, z ktorych pierwsza jest aktywowana gdy dany bit/pin generuje sygnal, a druga gdy sygnalu nie ma.

* wprowadzona mozliwosc definiowania tekstur, ktore ladowane sa przy okreslonych warunkach pogodowych. Tymczasowo pogoda okreslana jest na podstawie parametru zachmurzenia dla danej scenerii, i ustawionej pory roku:
- przy zachmurzeniu ponizej 0.25 preferencje otrzymuja tekstury z kategorii clear:
- przy zachmurzeniu miedzy 0.25-1.0 preferencje otrzymuja tekstury z kategorii cloudy:
- przy zachmurzeniu miedzy 1.0-2.0 preferencje otrzymuja tekstury z kategorii rain: lub, w okresie zimowym, snow:
priorytety przy wyborze tekstury to: wariant dla pogody+pory roku > wariant dla pogody > wariant dla pory roku > tekstura podstawowa

* wprowadzona automatyczna zmiana ilosci pasazerow w wagonach po zatrzymaniu sie na przystanku. Liczba pasazerow wsiadajacych i wysiadajacych wplywa na wymagany czas postoju, a aktualne oblozenie wagonu jest mniej wiecej wizualizowane, przez wyswietlanie odpowiedniej czesci ze zdefiniowanych submodeli w modelu ladunku. Na ostatnim przystanku wymienionym w rozkladzie wagony sa oprozniane.

* dodana mozliwosc konfigurowania dla danego pojazdu wielkosci podkucia kol. dokonyuje sie podobnie jak konfiguracje parametrow hamulca wpisem w trainset, z nastepujaca skladnia

--- Kod: ---WFxRyPz

--- Koniec kodu ---
gdzie parametry to:
- x: "gwarantowana" wielkosc podkucia w mm
- Ry: opcjonalnie, losowe zwiekszenie podkucia o 0-y mm
- Pz: opcjonalnie, prawdopobienstwo podkucia pojazdu wynosi z%

* dodana parametryzacja rzucania pojazdem przez pracujacy silnik diesla. Dokonywana przez opcjonalny wpis .mmd:

--- Kod: ---enginespring: 2.0 1.5 0.3 10.0 0.5 // wartosci domyslne

--- Koniec kodu ---
gdzie parametry to:
- modyfikator sily rzucania
- obroty silnika / sekunde, od ktorych zaczyna sie efekt rzucania pojazdem
- predkosc narastania sily rzucania
- obroty silnika / sekunde, od ktorych efekt rzucania zaczyna zanikac
- predkosc wygasania efektu

* wsiadanie i wysiadanie pasazerow na przystankach odbywa sie z predkoscia zdefiniowana w pliku .fiz dla danego pojazdu (lub dwukrotnie szybciej, gdy uzywane sa perony po obu stronach)

* istnieje mozliwosc zdefiniowania dzwiekow odtwarzanych gdy nastepuje wyladunek lub zaladunek. Dzwieki definiowane sa w sekcji sounds pliku .mmd jako
unloading: (przy wysiadaniu/wyladunku)
loading: (przy wsiadaniu/zaladunku)

- przy definiowaniu typu obslugi drzwi pojadu w pliku .fiz wpisami OpenCtrl i CloseCtrl rozpoznawane sa nastepujace typy

--- Kod: ---Passenger (typ domyslny przy braku definicji; drzwi sa otwierane/zamykane recznie, ignoruja ewentualne zdalne komendy)
AutomaticCtrl (drzwi dzialaja automatycznie; uwaga: ta odmiana nie jest zaimplementowana w pelni)
DriverCtrl (drzwi kontrolowane sa przez mechanika prowadzacego sklad, i reaguja tylko na zdalne komendy)
Conductor (drzwi kontrolowane sa przez kierownika pociagu, reaguja tylko na zdalne komendy)
Mixed (drzwi moga byc otwierane/zamykane zarowno recznie, jak i zdalnie)

--- Koniec kodu ---

* sprzetowa kompresje tekstur tga mozna wylaczyc wpisem w .ini

--- Kod: ---compresstex no // domyslnie yes

--- Koniec kodu ---

* rozbudowana wersja ekranu informacyjnego F1 wyswietla czas postoju potrzebny do zakonczenia operacji wsiadania/wysiadania lub zmiany ladunku

* dodana mozliwosc definiowania polozenia zrodel dzwieku wozkow, motorow trakcyjnych i drzwi. Lokacje podawane sa w nowej sekcji pliku .mmd, locations: ktora powinna byc umieszczona przed sekcjami definiujacymi same dzwieki.
przykladowy wpis:

--- Kod: ---locations:
 doors: -2.0 both 3.5 left end // para drzwi 2m od punkty srodkowego w strone czola pojazdu, pojedyncze drzwi po lewej stronie 3.5m za punktem srodkowym pojazdu
 tractionmotors: -4.0 4.0 end // lacznie 2 motory, zlokalizowane 4m przed i za punktem srodkowym pojazdu
 bogies: -4.5 4.5 end // dwa wozki, zlokalizowane 4.5m przed i za punktem srodkowym pojazdu
endlocations

--- Koniec kodu ---
- polozenie poszczegolnych drzwi okreslane jest przez pare parametrow: przesuniecie od centralnego punktu modelu, i klucz definiujacy czy drzwi wystepuja po lewej ("left"), prawej ("right") lub obu ("both") stronach pojazdu.
- dla wozkow i motorow trakcyjnych podawane jest tylko przesuniecie od centralnego punktu modelu; ewentualne przesuniecia wzdluz osi X i Y sa pobierane, razem z innymi parametrami, z definicji dzwiekow w sekcji sounds:
(w przypadku motorow sensownie jest ograniczyc sie do definicji nie wiecej niz jednego zrodla na wozek, nawet jesli w obrebie danego wozka napedzanych jest wiecej osi; dla wozkow wspoldzielonych przez sasiednie czlony dobrze jest ograniczyc wpis dla wozka tylko dla jednego z czlonow)

* dodana mozliwosc rzucania kamera wskutek wezykowania obsadzonego pojazdu. Parametry zjawiska konfigurowane sa w pliku .mmd wpisem

--- Kod: ---huntingspring: modyfikator_sily modyfikator_czestotliwosci predkosc_poczatkowa predkosc_pelna

--- Koniec kodu ---
gdzie
- modyfikator sily: mnoznik domyslnej sily z jaka rzucana jest kamera
- modyfikator_czestotliwosci: mnoznik domyslnej czestotliwosci z jaka rzucana jest kamera (czestotliwosc do pewnego stopnia zalezy od ksztaltu i stopnia zuzycia zestawow kolowych)
- predkosc_poczatkowa: predkosc w km/h powyzej ktorej zaczyna sie wezykowanie
- predkosc_pelna: predkosc w km/h powyzej ktorej pojazd rzucany jest z pelna sila

* dodana mozliwosc konfigurowania dla danego pojazdu prawdopodobienstwa wystapienia wezykowania. Prawdopodobienstwo definiowane jest w sekcji W wpisu w trainset, z nastepujaca skladnia

--- Kod: ---Hx

--- Koniec kodu ---
gdzie x: prawdopobienstwo wezykowania pojazdu wynosi x%

* dodana pompa paliwa dla silnikow spalinowych. Przelacznik stanu pompy definiowany jest w pliku .mmd jako fuelpump_sw: a jego polozenie domyslnie przelaczane jest klawiszem F (przelacznik miedzy rozruchem niskim/wysokim przeniesiony zostal pod ctrl+F)

* dodane do .fiz: parametr FuelStart w sekcji Cntrl. okreslajacy metode obslugi pompy paliwa -- domyslnie (wartosc Manual) pompa sterowana jest recznie. Jesli wartosc parametru ustawiona jest na Automatic pompa wlacza sie automatycznie przy rozruchu silnika.

* kazdy z definiowanych dzwiekow stukotu kol wheel_clatter: moze byc opcjonalnie dzwiekiem skladanym, uwzgledniajacym aktualna predkosc pojazdu

* dodana obsluga dedykowanych wariantow dzwiekow rozciagania sprzegow i zderzania sie buforow odtwarzane przy wiekszych silach, couplerstretch_loud: i bufferclamp_loud:

* dodane nowe urzadzenie kabinowe, lampka i-fuelpumpoff: ktora aktywuje sie, gdy pompa paliwa nie jest zalaczona

* dodana mozliwosc przesuniecia czasu scenariusza; przesuniecie definiowane jest wpisem w eu07.ini

--- Kod: ---scenario.time.offset X

--- Koniec kodu ---
gdzie X okresla, o ile godzin powinna zostac przesunieta domyslna godzina rozpoczecia scenariusza i zdefiniowane rozklady jazdy (dopuszczalne sa takze wartosci z ulamkiem np 3.5 i/lub przesuniecie wstecz, np. -2.0)

* dodana opcja automatycznego ustawiania czasu rozpoczecia scenariusza na zgodny z czasem wskazywanym przez zegar komputera; funkcja aktywowana jest wpisem w eu07.ini

--- Kod: ---scenario.time.current yes

--- Koniec kodu ---

* dodana obsluga pompy oleju w lokomotywach spalinowych i spalinowo-elektrycznych.
- stan pompy domyslnie przelaczany jest kombinacja shift+f
- przelacznik stanu definiowany jest w pliku .mmd jako oilpump_sw:
- wskazowka poziomu cisnienia definiowana jest w pliku .mmd jako oilpress:
- dzwiek pracujacej pompy definiowany jest w sekcji sounds pliku .mmd jako oilpump:
- metoda zalaczania definiowana jest w sekcji Cntrl. pliku .fiz jako OilStart (rozpoznawane wartosci to Manual, Automatic i Mixed)
- opcjonalnie minimalne cisnienie oleju przy ktorym uruchomi sie silnik definiowane jest w sekcji Engine: pliku .fiz jako OilMinPressure (podana wartosc odpowiada wymaganej wartosci cisnienia)
- aktualna wartosc cisnienia oleju mozna sprawdzic na ekranie F1 w trybie debug, wpis OilP

* dodana mozliwosc wstawienia pojazdu do scenariusza w stanie "zimnym", poprzez dodanie klucza .TA do wartosci sprzegu pojazdu we wpisie node w pliku .scn

* dodane urzadzenia kabinowe, definiowane w pliku .mmd:

--- Kod: ---waterpump_sw: (przelacznik stanu pompy wody, domyslnie obslugiwany przez klawisz W)
waterpumpbreaker_sw: (wylacznik samoczynny pompy wody w szafie NN, domyslnie obslugiwany kombinacja Ctrl + W)
waterheater_sw: (przelacznik stanu podgrzewacza wody, domyslnie obslugiwany kombinacja Shift + W)
waterheaterbreaker_sw: (wylacznik samoczynny podgrzewacza wody w szafie NN, domyslnie obslugiwany kombinacja Shift + Ctrl + W)
watercircuitslink_sw: (zawor laczacy obiegi wody, domyslnie obslugiwany kombinacja Shift + H)

--- Koniec kodu ---

* dodane wskazniki kabinowe, definiowane w pliku .mmd:

--- Kod: ---oiltemp: (wskaznik temperatury oleju)
water1temp: (wskaznik temperatury wody w obiegu glownym)
water2temp: (wskaznik temperatury wody w obiegu pomocniczym)

--- Koniec kodu ---

* dodane kontrolki kabinowe, defniowane w pliku .mmd:

--- Kod: ---i-motorblowers: (kontrolka pracy wentylatorow motorow trakcyjnych)
i-malfunction: (kontrolka awarii)

--- Koniec kodu ---

* dodane parametry konfiguracyjne ukladu chlodzenia silnikow spalinowych:
- w sekcji Cntrl.

--- Kod: ---WaterStart (okresla metode uruchomienia pompy wody; rozpoznawane opcje to Manual czyli reczna i Battery czyli urzadzenie jest stale aktywne przy zalaczonej baterii)

--- Koniec kodu ---
- w sekcji Engine:

--- Kod: ---WaterMinTemperature (minimalna temperatura wody, przy ktorej mozna uruchomic silnik)
WaterMaxTemperature (maksymalna dopuszczalna temperatura wody)
WaterCoolingTemperature (temperatura przy ktorej rozpoczyna sie jego aktywne chlodzenie -- zalaczany jest wentylator chlodnicy i ew. otwierane sa zaluzje)
WaterFlowTemperature (temperatura, przy ktorej uruchamiany jest obieg wody w ukladzie)
WaterShutters (flaga definiujaca obecnosc zaluzji)

WaterAuxCircuit (flaga definiujaca obecnosc pomocniczego obiegu wody)
WaterAuxMinTemperature (minimalna temperatura wody w obiegu pomocniczym, przy ktorej mozna uruchomic silnik)
WaterAuxMaxTemperature (maksymalna dopuszczalna temperatura wody w obiegu pomocniczym)
WaterAuxCoolingTemperature (temperatura w obiegu pomocniczym przy ktorej rozpoczyna sie jego aktywne chlodzenie -- zalaczany jest wentylator chlodnicy i ew. otwierane sa zaluzje)
WaterAuxShutters (flaga definiujaca obecnosc zaluzji dla obiegu pomocniczego)

OilMinTemperature (minimalna temperatura oleju, przy ktorej mozna uruchomic silnik)
OilMaxTemperature (maksymalna dopuszczalna temperatura oleju

HeaterMinTemperature (temperatura wody ponizej ktorej uruchamia sie zalaczony ogrzewacz)
HeaterMaxTemperature (temperatura wody powyzej ktorej przestaje pracowac zalaczony ogrzewacz)

HeatKW (modyfikator wplywu wentylatorow chlodzacych na zmiane temperatury)
HeatKV (modyfikator wplywu predkosci pojazdu na zmiane temperatury)
HeatKFE (modyfikator wymiany ciepla miedzy silnikiem i otoczeniem)
HeatKFS (modyfikator wymiany ciepla miedzy silnikiem i woda chlodzaca)
HeatKFO (modyfikator wymiany ciepla miedzy silnikiem i olejem)
HeatKFO2 (modyfikator wymiany ciepla miedzy olejem i woda)

--- Koniec kodu ---
(w przypadku niepodania danego parametru temperatury jest on nieaktywny, tzn przy braku np minimalnej temperatury oleju nie ma ona wplywu na mozliwosc uruchomienia silnika. Pewnym wyjatkiem jest tutaj temperatura obiegu wody -- jesli ten parametr nie jest podany, to obieg jest aktywny bez wzgledu na temperature)

* przy pomocy dzwigni bocznikowania mozna modyfikowac predkosc, ktora powinien utrzymywac tempomat w lokomotywach z napedem asynchronicznym

* dodane nowe urzadzenie kabinowe:

--- Kod: ---i-malfunctionb: (lampka awarii dla lokomotywy pracujacej w ukrotnieniu)
shuntmodepower: (pokretlo kontroli predkosci/mocy w trybie manewrowym)

--- Koniec kodu ---

* urzadzenia kabinowe obsluguja dodatkowe tryby animacji:

--- Kod: ---rotvar submodel krok_poczatkowy offset opoznienie wartosc_koncowa krok_koncowy
movvar submodel krok_poczatkowy offset opoznienie wartosc_koncowa krok_koncowy

--- Koniec kodu ---
tryby te sa wariantami istniejacych trybow rot i mov ale krok, o jaki wykonywany jest obrot/przesuniecie submodelu nie jest staly, a zmienia sie zaleznie od wskazywanej wartosci -- dla wartosci 0 uzywany jest krok_poczatkowy, dla wartosci rownej parametrowi wartosc_koncowa (lub wyzszej) uzywany jest krok_koncowy, a dla wartosci posrednich proporcjonalna wartosc posrednia miedzy krokiem poczatkowym i koncowym.

* dodana obsluga przelaczania miedzy trybami pracy hamulca pociagu; do przelaczania miedzy trybami standardowo uzywane sa kombinacje Shift+Ctrl+Num9 i Shift+Ctrl+Num3 (uwaga: do dzialania kombinacji Shift+klawiatura numeryczna musi byc wylaczony Num Lock)

* dodana mozliwosc okreslenia metody uruchomienia sprezarki pojazdu, wpisem CompressorStart w sekcji Ctrl. w pliku .fiz, rozpoznawane wartosci to Manual i Automatic

* dodana obsluga submodeli stanu zaluzji w glownym modelu pojazdu; submodele powinny miec nazwy shutters1_on i shutters1_off (zaluzje obiegu glownego w stanie zamknietym i otwartym) oraz shutters2_on i shutters2_off (zaluzje obiegu pomocniczego w stanie zamknietym i otwartym)

* dodana obsluga dzwieku wentylatora chlodnicy dla obiegu glownego, radiatorfan1: i pomocniczego, radiatorfan2: Wpisy umieszczane sa w sekcji sounds: Przy definicji dzwieku "stara metoda" wystarczy podac sama nazwe sampla, przy uzyciu "nowego" formatu definiowac mozna tez pozostale parametry

--- Koniec cytatu ---

tmj:
Wincyj zmian; WINCYJ


--- Cytuj ---* dodana sekcja Blending: w pliku .fiz umozliwiajaca definicje parametrow laczenia trybow hamowania. Rozpoznawane parametry to:

--- Kod: ---MED_Vmax (predkosc maksymalna dla obliczen chwilowej sily hamowania EP w MED)
MED_Vmin (predkosc minimalna dla obliczen chwilowej sily hamowania EP w MED)
MED_Vref (predkosc referencyjna dla obliczen dostepnej sily hamowania EP w MED)
MED_amax (maksymalne opoznienie hamowania sluzbowego MED)
MED_EPVC (czy korekcja sily hamowania EP, gdy nie ma dostepnego ED)
MED_Ncor (czy korekcja sily hamowania z uwzglednieniem nacisku)

--- Koniec kodu ---

* dzwiek tachometer: moze byc rowniez dzwiekiem skladanym

* uruchomiona animacja schodka drzwi pojazdu. Ilosc animowanych stopni podawana jest jako 8-my parametr we wpisie animations: (w takiej sytuacji poprzedzajacy parametr powinien miec wartosc 0 zamiast standardowego -1)  Obslugiwane dla animacji parametry:

--- Kod: ---w pliku .mmd:
animstepprefix: (prefix nazwy submodeli animowanego stopnia. tak jak dla pozostalych elementow parzystosc liczby wystepujaca po nazwie okresla, po ktorej stronie pojazdu znajduje sie submodel)

w pliku .fiz:
PlatformMaxShift (wartosc przesuniecia lub kat obrotu dla calkowicie rozlozonego stopnia)
PlatformSpeed (predkosc animacji stopnia, gdzie 1.0 odpowiada animacji trwajacej jedna sekunde, wartosc 0.5 dwom sekundom, itp)
PlatformOpenMethod (typ animacji stopnia, rozpoznawane wartosci to Shift (przesuniecie) lub Rotate (obrot)

--- Koniec kodu ---

* uruchomiona animacja lusterek pojazdu. Ilosc animowanych lusterek podawana jest jako 9-ty parametr we wpisie animations: Obslugiwane dla animacji parametry:

--- Kod: ---w pliku .mmd:
animmirrorprefix: (prefix nazwy submodeli animowanych lusterek. tak jak dla pozostalych elementow parzystosc liczby wystepujaca po nazwie okresla, po ktorej stronie pojazdu znajduje sie submodel)

w pliku .fiz:
MirrorMaxShift (kat obrotu dla calkowicie rozlozonego lusterka)

--- Koniec kodu ---

* dodana trzecia syrena (albo gwizdek); dzwiek definiowany jest jako horn3: w sekcji sounds: pliku .mmd, przycisk aktywujacy dzwiek definiowany jest jako whistle_bt: Aktywacja domyslnie klawiszem Z

* dodane wskazniki kabinowe: cisnienie oleju w pojezdzie/czlonie ukrotnionym oilpressb: oraz temperatura wody obiegu glownego w pojezdzie/czlonie ukrotnionym water1tempb:

* poziom cisnienia oleju przy maksymalnych obrotach silnika moze byc konfigurowany wpisem OilMaxPressure w sekcji Engine: pliku .fiz

* animacja zamykania drzwi pojazdu moze byc opcjonalnie opozniona. Wielkosc opoznienia definiowana jest wpisem DoorCloseDelay w sekcji Doors: pliku .fiz  Pozwala to na w miare latwa implementacje drzwi, ktore wydaja przez chwile dzwiek ostrzegawczy zanim zaczna sie zamykac

* temperatura otoczenia moze byc definiowana wpisem scenario.weather.temperature w pliku .ini

* dodany podglad biezacej kolejki eventow, pod klawiszem F11

* mierniki w kabinie pojazdu moga generowac dzwieki na takich samych zasadach jak przelaczniki i lampki

* dodane dzwieki towarzyszace zmianie cisnienia w cylindrze hamulca, brakecylinderinc: i brakecylinderdec: definiowane w sekcji sounds:

* dodane dzwieki rozkladania i skladania stopnia drzwi doorstepopen: i doorstepclose: definiowane w sekcji sounds:

* predkosci przelaczenia wysokiego stopnia dla hamulca EstED moze byc konfigurowana wpisem RV w sekcji Brake: pliku .fiz

* dodatkowy parametr dostepny dla modulu pythona, air_temperature (aktualna temperatura otoczenia)

* rozklad jazdy pociagu dostepny dla modulu pythona; dostepne zmienne to:

--- Kod: ---train_stationindex (int, numer aktualnej stacji z rozkladu jazdy)
train_stationcount (int, ogolna liczba stacji w rozkladzie jazdy)
train_stationX_name (string, nazwa stacji z pozycji X rozkladu jazdy, gdzie X to liczba z zakresu 1-train_stationcount)
train_stationX_fclt (string, wyposazenie stacji z pozycji X rozkladu jazdy)
train_stationX_lctn (float, pozycja/kilometraz dla stacji z pozycji X rozkladu jazdy)
train_stationX_vmax (int, dopuszczalna predkosc jazdy na odcinku od stacji z pozycji X rozkladu jazdy)
train_stationX_ah (int, godzina przyjazdu dla stacji z pozycji X rozkladu jazdy, lub -1 dla stacji przelotowej)
train_stationX_am (int, minuta przyjazdu dla stacji z pozycji X rozkladu jazdy, lub -1 dla stacji przelotowej)
train_stationX_dh (int, godzina odjazdu dla stacji z pozycji X rozkladu jazdy)
train_stationX_dm (int, minuta odjazdu dla stacji z pozycji X rozkladu jazdy)

--- Koniec kodu ---

* animacje drzwi i stopnia sa w przypadku EZT i szynobusow synchronizowane, zaleznie od typu stopnia; stopien wysuwany jest przed otwarciem drzwi i chowany po ich zamknieciu, dla stopni obracanych "otwarcie" nastepuje razem z otwarciem drzwi, natomiast zlozenie po ich zamknieciu.

* zapis parametrow pojazdu aktywowany ustawieniem physicslog w ini obejmuje takze temperature silnika, oleju i wody

* aktualny kat kamery jest zapamietywany przy aktywacji widoku zewnetrznego i przywracany po powrocie do kabiny. Dodatkowo domyslny kat kamery w danej kabinie moze byc definiowany w pliku .mmd w sekcji cabXdefinition: wpisem

--- Kod: ---driverXangle: kat_poziomy kat_pionowy

--- Koniec kodu ---
gdzie X to numer kabiny. Dla zachowania zgodnosci wstecznej wpis kata kamery powinien byc umieszczony przed wpisami driverXpos: i/lub driverXsitpos:

* dodana interpolacja obrotu kamery

* predkosc krecenia sie wentylatorow chlodnicy moze byc konfigurowana w pliku .fiz wpisem WaterCoolingFanSpeed=X gdzie X to procent aktualnych obrotow silnika pojazdu lub, w przypadku wartosci ujemnej, okreslona stala ilosc obrotow/min

* dodana dedykowana komenda ustawienia nawrotnika na pozycje N2, reverserforwardhigh

* dzwiek zmiany stanu bocznikowania shuntfield: aktywowany jest rowniez dla pojazdow z napedem spalinowo-elektrycznym

* dzwieki urzadzen kabinowych uwzgledniaja zdefiniowany dla nich parametr offset:

* dodana obsluga 5-ciopozycyjnego manipulatora hamulca zespolonego Knorr, MHZ_K5P

* dla pojazdow z silnikiem spal-ele mozna zdefiniowac minimalny poziom obrotow/min utrzymywany przez silnik przy zalaczonym ogrzewaniu. Ilosc obrotow definiowana jest wpisem HeatingRPM w sekcji Engine: pliku .fiz

* w eventach typu multiple zniesiony zostal limit 8 eventow potomnych

* dla torow zniesiony zostal limit pojedynczych eventow typu eventX i eventallX

*  pod kombinacja shift+ctrl+F11 zostal umieszczony eksport aktualnego stanu scenerii; eksport generuje dwa pliki:
- nazwascenerii_eksport.ctr zawierajacy wszystkie zdefiniowane komorki pamieci i eventy
- nazwascenerii_eksport.scm zawierajacy wszystkie elementy typu node (tory, statyczne modele 3d, dzwieki itp)

eksport nie obejmuje danych geometrii (node triangles i lines ktore przechowywane sa w pliku. sbt) oraz definicji skladow i parametrow scenariusza (czas, pogoda, config) ktore powinny tak jak dotychczas znajdowac sie w 'glownym' pliku .scn, razem z dyrektywami include dla plikow generowanymi przez eksport:

--- Kod: ---// konfiguracja
config ... endconfig
time ... endtime
sky ... endsky
atmo ... endatmo

// include
include nazwascenerii_eksport.ctr
include nazwascenerii_eksport.scm
include geometria_dla_scenerii.scm

FirstInit

// sklady
trainset
...
endtrainset

--- Koniec kodu ---

* dodana obslugi/przestrzegania przez AI podanych parametrow okreslajacych wlasciwosci przystankow W4:

--- Kod: ---pierwszy parametr ujemny - preferowana odleglosc zatrzymania miedzy wskaznikiem i czołem składu (np. przed przejściem).
pierwszy parametr dodatni - preferowana odleglosc zatrzymania miedzy wskaznikiem i środkiem składu (np. przy wiacie, przejściu podziemnym).
drugi parametr ujemny - wskazanie zatrzymania dla krótszych składów (W32).
drugi paramer dodatni - długość peronu (W4).

--- Koniec kodu ---

* pulpity sterowania oparte na kontrolerze Arduino moga sterowac plynnie kranem hamulca dodatkowego

* w trybie ruchu na zewnatrz pojazdu wskazanie mysza i klikniecie na elemencie scenerii pozwala odczytac na panelu F11 podstawowe informacje na temat tego elementu

* panel F11 wyswietla odleglosc miedzy aktualna pozycja kamery i polozeniem ostatnio wybranego elementu scenerii

* w trybie edycji (aktywny panel F11) i przy zalaczonym trybie debug wyswietlane sa takze zdefiniowane w scenerii komorki pamieci

* AI powinno zwracac baczniejsza uwage na obciazenie sieci trakcyjnej, potencjalnie redukujac liczba przeciazen przy duzym ruchu

* dodatkowy tryb (4) aktywacji submodeli "swiatel" w obiektach; tryb ten konfigurowany jest i dziala tak samo jak tryb 3, ale dodatkowo gwarantuje wylaczenie swiatla w poznych godzinach nocnych, od 1-ej do 6-ej rano.

* w trybie edytora (F11) dostepne sa podstawowe operacje modyfikowania polozenia modeli 3d
- klikniecie/przytrzymanie LPM na obiekcie i przesuwanie myszy = zmiana polozenia; wcisniecie Ctrl przy zmianie polozenia = wyrownanie polozenia w pionie do wysokosci terenu
- klikniecie/przytrzymanie LPM na obiekcie i przesuwanie myszy gora/dol przy wcisnietym klawiszu Shift = zmiana polozenia w pionie
- klikniecie/przytrzymanie LPM na obiekcie i przesuwanie myszy lewo/prawo przy wcisnietym klawiszu Alt = obrot; wcisniecie Ctrl przy obrocie = zaokraglenie wartosci kata do najblizszej wielokrotnosci 15 stopni

* jesli w promieniu dzialania eventlaunchera znajduje sie model 3d o takiej samej nazwie, wskazanie modelu mysza w trybie freefly i klikniecie na nim lewym przyciskiem aktywuje rzeczony eventlauncher (jesli launcher ma zdefiniowane dwa eventy, drugi event uruchamiany jest przez klikniecie z wcisnietym Shift)

* rozszerzona wersja panelu F1 wyswietla rowniez nachylenie toru po ktorym porusza sie pojazd

* dodano mozliwosc konfiguracji funkcji aktywowanych kolkiem myszy. Konfiguracja umieszczona jest w pliku eu07_input-mouse.ini w katalogu symulatora. Funkcje przypisywane sa wg skladni

--- Kod: ---wheel funkcja_1 funkcja_2

--- Koniec kodu ---
gdzie funkcja_1 wywolywana jest przy kreceniu 'od siebie' zas funkcja_2 przy kreceniu 'do siebie'.

* dodane nowe urzadzenia kabinowe do obslugi drzwi:

--- Kod: ---doorleftoff_sw: // przycisk zamkniecia lewych drzwi
doorrightoff_sw: // przycisk zamkniecia prawych drzwi
dooralloff_sw: // przycisk zamkniecia wszystkich drzwi. domyslny skrot klawiszowy: Ctrl + /
doorlefton_sw: // impulsowy przycisk otwarcia lewych drzwi
doorrighton_sw: // impulsowy przycisk otwarcia prawych drzwi

--- Koniec kodu ---

* w przypadku umieszczenia w pliku .fiz w sekcji Doors wpisu

--- Kod: ---DoorClosureWarningAuto=Yes

--- Koniec kodu ---
przyciski zamykania drzwi po wcisnieciu uruchamiaja sygnal dzwiekowy; wylaczenie sygnalu i faktyczne zamkniecie drzwi nastepuje w takiej sytuacji po puszczeniu przycisku

* w pliku .mmd w sekcji internaldata: mozna zdefiniowac dodatkowe dzwieki:

--- Kod: ---linebreakerclose: // odgrywany przy zamknieciu wylacznika szybkiego
linebreakeropen: // odgrywany przy otwarciu wylacznika szybkiego

--- Koniec kodu ---

* AI prowadzaca sklad rozpoznaje dodatkowa komende:

--- Kod: ---SetLights czolo_skladu tyl_skladu

--- Koniec kodu ---
po otrzymaniu ktorej w trybie jazdy rozkladowej AI ustawia swiatla skladu wedlug podanej specyfikacji. Normalna obsluga swiatel zostaje przywrocona automatycznie przy zmianie trybu pracy, lub po otrzymaniu komendy SetLights -1 -1

specyfikacja zapalonych swiatel to suma wartosci przypisanych poszczegolnym swiatlom

--- Kod: ---1 // lewy reflektor
2 // lewe swiatlo czerwone
4 // gorny reflektor
16 // prawy reflektor
32 // prawe swiatlo czerwone
64 // tabliczki konca skladu

--- Koniec kodu ---
wartosc -1 oznacza domyslny uklad swiatel.

* przy wczytywaniu danych z pliku .scn obiekty zawarte w pliku .inc sa grupowane razem. Operacje przesuwania i/lub obracania elementow w edytorze dokonywana jest na calej grupie

* sterownik hamulca zmienia tryb pracy po okreslonym czasie od zaniku hamowania ED

* w pliku .mmd w sekcji sounds: zdefiniowac mozna dodatkowe dzwieki:

--- Kod: ---doorlock: // aktywacja blokady drzwi
doorunlock: // zwolnienie blokady drzwi

--- Koniec kodu ---

* w pliku .mmd w sekcji internaldata: zdefiniowac mozna wpisem huntingnoise: dzwiek odtwarzany w kabinie gdy dany pojazd wezykuje

* przy eksporcie scenerii z poziomu edytora elementy oryginalnie utworzone przez plik .inc grupowane sa razem. Zawartosc poszczegolnych grup w pliku .scn umieszczona jest miedzy identyfikatorami group i endgroup

* zastosowanie napelniania uderzeniowego przez AI uwzglednia typy hamulcow pojazdow w skladzie

* informacje dla developerow z ekranow f3, f8, f9 i f1 w trybie debug zostaly zebrane i przeniesione do nowego okna dostepnego pod klawiszem f12. Wyjscie z programu zostalo przeniesione do mini-menu otwieranego klawiszem Esc.

* stopien widocznosci paneli interfejsu uzytkownika mozna regulowac wpisem w pliku eu07.ini,

--- Kod: ---ui.bg.opacity X

--- Koniec kodu ---
gdzie X to wartosc w przedziale 0.0-1.0, domyslnie 0.65

* sterowanie przelaczenie kamer zostalo przeniesione pod kombinacje Ctrl+1-9

* wyswietlanie submodeli ladunku w zaleznosci od stopnia zaladowania pojazdu obejmuje rowniez ladunki wagonow towarowych. Wyswietlanie realizowane jest na zasadach podobnych do modeli pasazerow: w modelu glownym pojazdu (nie w lowpoly, bo tego wagony towarowe z reguly nie maja) sprawdzane jest wystepowanie submodeli (wystarczy ze jest to banan) o nazwie external_loadXX gdzie XX to kolejne liczby 00, 01 itp. Nastepnie w aktualnym modelu ladunku pojazdu dla kazdej tak utworzonej "sekcji" wyszukiwane sa submodele o takiej samej nazwie. Rowniez tutaj submodel moze byc bananem, jako ze faktyczne "sztuki" ladunku do wyswietlenia to submodele potomne. Utworzone "sekcje" submodeli wyswietlane sa losowo, zas submodele w obrebie sekcji aktywowane sa w kolejnosci wystepowania w pliku t3d

* pozycja w ktorej wyswietlany jest model ladunku moze zmieniac sie linearnie w zaleznosci od stopnia zaladowania pojazdu. Wielkosc przesuniecia okreslana jest w pliku .fiz pojazdu w sekcji Load: parametrem LoadMinOffset=X gdzie X to przesuniecie modelu (w metrach) jakie powinno miec miejsce przy minimalnej ilosci ladunku.

* dodano mozliwosc ustawienia konkretnego czas rozpoczecia scenariusza. Definicji dokonuje sie wpisem w pliku eu07.ini scenario.time.override X gdzie X to godzina rozpoczecia. Minuta rozpoczecia podawana jest jako ulamek, tzn np. 10:30 zapisywana jest jako 10.5

* przy podawaniu nazwy tekstury w pliku .mat mozliwe jest opcjonalnie podanie zestawu wartosci zamknietego w klamrach [ ] Z zestawu takiego przy wczytywaniu wybrana zostanie losowo jedna z wartosci (podobnie jak ma to miejsce dla zestawow dzwiekow)

* przy definiowaniu toru mozliwe jest tez okreslenie promienia jego luku pionowego; definicja realizowana jest wpisem wlasciwosci opcjonalnej vradius X gdzie X to promien luku pionowego toru, w metrach

* odcinki izolowane moga byc laczone w grupe; utworzona w ten sposob grupa dziala jak kazdy inny odcinek izolowany ale odzwierciedla stan zbiorczy swoich skladowych, czyli sygnalizuje zajetosc gdy zajety jest ktorykolwiek z odcinkow podrzednych. Definicji dokonuje sie wpisem

--- Kod: ---area grupa odcinek1 odcinek2 odcinek3 (itp) endarea

--- Koniec kodu ---
gdzie odcinek1, odcinek2 itp to nazwy odcinkow izolowanych ktore wlaczone zostana do odcinka zbiorczego o nazwie grupa

* dodane urzadzenia kabinowe, definiowane w pliku .mmd:

--- Kod: ---i-hvoltageb: // lampka wysokiego napiecia w czlonie B
i-dashboardlight: // oswietlenie pulpitu
i-timetablelight: // oswietlenie rozkladu jazdy
dashboardlight_sw: // przelacznik stanu oswietlenia pulpitu
timetablelight_sw: // przelacznik stanu oswietlenia rozkladu jazdy

--- Koniec kodu ---

* dzwieki odjazdu moga byc rowniez umieszczone w katalogu sounds/ gdzie szukane sa w drugiej kolejnosci

* parametr losowego opoznienia uruchomienia eventu randomdelay moze byc teraz podany dla kazdego rodzaju eventu

* uruchomienie eventu warunkowanego moze zalezec teraz od wiecej niz jednego czynnika. Poszczegolne warunki wpisujemy po kolei po slowie kluczowym condition

* zamiast nazwy pojedynczego obiektu na ktory ma dzialac dany event mozna podac nazwy dowolnej liczby obiektow rozdzielone znakiem | Po uruchomieniu event wykona swoja funkcje po kolei na wszystkich podanych obiektach. W przypadku gdy taki zestaw obiektow zostanie podany dla eventow uruchamianych warunkowo, to warunek zostanie uznany za spelniony tylko wtedy, gdy jest on spelniony dla wszystkich podanych obiektow.

* parametr przesuniecia ladunku LoadMinOffset oprocz pojedynczej wartosci moze teraz przyjmowac ich zbior rozdzielony przecinkami, w taki sam sposob w jaki definiowana jest lista obslugiwanych ladunkow. Poszczegolne ladunki beda w takiej sytuacji mialy przypisane kolejne wartosci parametru LoadMinOffset. Jesli ladunkow jest wiecej niz wartosci przesuniecia, ostatnia podana wartosc bedzie uzyta dla pozostalych ladunkow.

* dodana wizualizacja opadow deszczu i sniegu, w przypadku ustawienie parametru zachmurzenia dla scenariusza w przedziale 1-2. W przypadku opadow deszczu odtwarzany jest rowniez odpowiedni dzwiek

* dodane urzadzenie kabinowe wyboru trybu dzialania hamulca, brakeopmode_sw:

* wyprowadzone dla modulu pythona:
- stan trybu dzialania hamulca, brake_op_mode_flag
- stan nastawy opoznienie hamulca, brake_delay_flag

* przy kalkulacji progu zalaczenia swiatel w obiektach uwzgledniany jest rowniez poziom zachmurzenia

* obecnosc opadow wplywa automatycznie na parametry mgly zdefiniowane dla scenerii

* w przypadku gdy parametr pyscreen: w pliku .mmd zawiera sciezke dostepu skrypt wyszukiwany bedzie bezposrednio w podanej lokacji, zamiast w katalogu danego pojazdu

* definiujac urzadzenia kabinowe mozna skonfigurowac dany przelacznik jako impulsowy uzywajac w jego definicji wpisu type: return

* w pliku .mmd zdefiniowac mozna dzwiek odtwarzany gdy zalaczone jest ogrzewanie skladu; dzwiek ogrzewania moze byc dzwiekiem skladanym uzaleznionym od biezacych obrotow silnika. Definicji dokonuje sie wpisem heater: w sekcji sounds:

* w pliku .mat mozna zdefiniowac 'fizyczne' rozmiary tekstury w metrach, wpisem

--- Kod: ---size: X Y

--- Koniec kodu ---
tak zdefiniowana wielkosc tekstury uzywana jest przy teksturowaniu torow, drog itp, zastepujac wielkosc podana we wpisie node.

* w przypadku podania parametru zachmurzenia dla scenariusza jako liczby ujemnej -X faktyczne zachmurzenie bedzie wartoscia losowa w przedziale (0, X).

--- Koniec cytatu ---

tmj:

--- Cytuj ---* wstepna obsluga wentylatorow motorow trakcyjnych
- wpisy konfiguracyjne w pliku .fiz

--- Kod: ---// w sekcji Engine:
MotorBlowersSpeed=X // predkosc obrotowa, gdzie X > 0 to mnoznik biezacych obrotow silnika glownego (np. 1.5 ) zas X < 0 to stala ilosc obr/min (np -1500)
// w sekcji Cntrl.
MotorBlowersStart=X // sposob uruchomieniu, gdzie X to jedna z wartosci:
Manual // start reczny, praca uzalezniona od pracy silnika glownego
Automatic // start automatyczny razem z silnikiem glownym
Mixed // start reczny lub automatyczny razem z silnikiem glownym
Battery // start automatyczny razem z zalaczeniem baterii
Converter // start automatyczny razem z zalaczeniem przetwornicy

--- Koniec kodu ---
- dodane urzadzenia kabinowe

--- Kod: ---motorblowersfront_sw: // przelacznik stanu przednich wentylatorow, domyslnie pod klawiszem shift+N
motorblowersrear_sw: // przelacznik stanu tylnych wentylatorow, domyslnie pod klawiszem shift+M
motorblowersalloff_sw: // wylacznik wszystkich wentylatorow, domyslnie pod klawiszem ctrl+M

--- Koniec kodu ---
- dodany obsluga dzwieku wentylatorow, definiowanego wpisem motorblower: w sekcji sounds: pliku .mmd Zrodla dzwieku pozycjonowane sa w lokacjach tractionmotors: (przesuniecie na osiach X i Y potencjalnie pobierane jest z parametru offset we wpisie dzwieku) Dzwiek wentylatorow moze byc dzwiekiem skladanym, wybor probki nastepuje na podstawie aktualnej predkosci obrotowej wentylatora.

* dodana opcja autogeneracji podsypek rozjazdow; przy wczytywaniu plikow .scn exe ignoruje wpisy dla dotychczasowych modeli podsypek (oraz trojkatow geometrii z teksturami rozjazdow krzyzowych i zamiast tego tworzy automatycznie podsypki z tekstura zapozyczona z sasiedniego toru (od strony iglic) funkcjonalnosc mozna wylaczyc wpisem w eu07.ini

--- Kod: ---createswitchtrackbeds no // (yes) automatyczna generacja podsypek rozjazdow

--- Koniec kodu ---

* dodana mozliwosc definicji konkretnej tekstury do pomalowania wygenerowanej podsypki rozjazdu. Do definicji sluzy wpis

--- Kod: ---trackbed nazwa_tekstury

--- Koniec kodu ---
w sekcji parametrow opcjonalnych node switch

* poziom mgly i/lub opadow w scenariuszu wplywa na pseudo-rozmycie punktow swietlnych

* dodane urzadzenie kabinowe, lampka sygnalizujaca brak zalaczenia blokady drzwi; nazwa urzadzenia w pliku .mmd to i-door_blockedoff:

* w pliku .mmd w sekcji internaldata: zdefiniowac mozna wpisem startjolt: dzwiek szarpniecia generowany przez pojazd podczas przyspieszania przy niskiej predkosci (5-15 km/h)

* przy wstawianiu do scenerii modelu statycznego wyposazonego w swiatla mozna opcjonalnie podac kolor freespotow powiazanych z tymi swiatlami; definicja kolorow dokonywana jest opcjonalnym wpisem

--- Kod: ---node ... model ...
 lightcolors kolor_swiatla_0 kolor_swiatla_1 kolor_swiatla_2 // itp, -1 oznacza pozostawienie wartosci zdefiniowanej w modelu 3d
endmodel

--- Koniec kodu ---
gdzie kolor_swiatla_X to wartosc RGB w zapisie szesnastkowym. Wpis lightcolors moze wystepowac w polaczeniu z dotychczasowym wpisem lights w dowolnej kolejnosci

* przy definiowaniu torow mozna rowniez opcjonalnym wpisem railprofile X okreslic profil szyny jaki powinien byc zastosowany dla danego odcinka. Definicja danego profilu pobierana jest z pliku railprofile_X.txt zlokalizowanego w katalogu models/tory

* wszedzie gdzie do tej pory podawane bylo odwolanie do pliku tekstury mozna umiescic wywolanie skryptu pythona ktory powinien wygenerowac teksture, na zasadach podobnych co skrypty wyswietlaczy w lokomotywach. Skladnia wywolania wyglada nastepujaco:

--- Kod: ---make:sciezka/skrypt?parametr=wartosc&parametr=wartosc&parametr=wartosc // etc

--- Koniec kodu ---
wpis taki spowoduje (jednorazowe) wywolanie skryptu skrypt.py zlokalizowanego w katalogu sciezka. Przy uruchomieniu skrypt otrzyma dictionary ze zbiorem zdefiniowanych w wywolaniu par [parametr, wartosc]

* oswietlenie kabin pojazdu zostalo wlaczone do systemu oswietlenia przedzialow

* dodany system kamer zewnetrznych; wybor i przelaczanie pomiedzy dostepnymi kamerami odbywa sie poprzez kombinacje shift-f4, powrot do kabiny poprzez klawisz f4.

* modyfikacje polozenia kamer zewnetrznych powiazanych z pojazdem sa zapamietywane (zmiana pojazdu powoduje przywrocenie wartosci domyslnych)

* pozycje 'lusterek' w pojezdzie kalkulowane sa na podstawie szerokosci pojazdu zdefiniowanej w pliku .fiz

* submodele urzadzen kontrolnych i wskaznikow wyszukiwane sa rowniez w modelu lowpoly

* modyfikacje w obsludze systemu lowpoly:
-- wersja lowpoly poszczegolnych kabin rozpoznawana jest w modelu lowpoly wg nazwy submodelu. Kabina A jest identyfikowana po nazwie cab1, kabina B to cab2 zas maszynownia cab0. Jako dana kabina traktowane sa rowniez obiekty potomne danego submodelu
-- zdefiniowane w pliku .mmd lowpoly rysowane jest zawsze, oprocz aktualnie obsadzonej sekcji w prowadzonym pojezdzie
-- poszczegolne kabiny zapamietuja swoj wlasny stan przelacznikow oswietlenia
-- w przypadku pojazdow z jedna tylko "prawdziwa" kabina (jak np SM42 lub jej modernizacje) nalezy poinformowac o tym exe uzywajac wpisu

--- Kod: ---jointcabs: true

--- Koniec kodu ---
w pliku .mmd pojazdu

* dodane urzadzenie kabinowe: wskaznik cisnienia w zbiorniku pantografow, definiowany jako pantpress:

* AI zalacza baterie w wagonach skladu w momencie objecia kontroli zamiast dopiero po dojezdzie do pierwszej stacji

* dzwiek zapinania/rozpinania sprzegow generowany jest rowniez dla pozostalych skladow oraz w sytuacji laczenia sie automatycznych sprzegow

* rozpinanie sprzegow wymaga nieco mniejszej precyzji dociskania

* ai zwraca uwage na stan wylacznika szybkiego we wszystkich kontrolowanych pojazdach, zamiast tylko w obsadzonym

* punkty swietlne sa mniej wiecej widoczne przynajmniej z 500 m bez wzgledu na warunki pogodowe

* w przypadku podania ujemnej predkosci animacji dla eventu animacji typu rotate animowany element wykona tylko obrot o podana wartosc, bez zapetlania

* dodatkowa diagnostyka przy wczytywaniu modeli w formacie t3d, w przypadku zle sformowanych danych submodelu

* dodana wersja oswietlenia przyrzadow i-instrumentlight_a: aktywujaca sie automatycznie po zalaczeniu baterii

* dodany wskaznik cisnienia w przewodzie zasilajacym scndpress:

* mapa odbic jest obslugiwana rowniez przy rysowaniu kabiny

* panel F12 podaje rowniez aktualny tryb pracy hamulca

* dodatkowe zmienne dla modulu pythona

--- Kod: ---scenario // nazwa pliku aktualnego scenariusza
train_brakingmassratio // podany w rozkladzie wymagany procent masy hamujacej skladu
train_enginetype // podany w rozkladzie typ lokomotywy ciagnacej sklad
train_engineload // podane w rozkladzie obciazenie lokomotywy
train_atpassengerstop // flaga ustawiana gdy sklad znajduje sie w peronie aktualnej stacji rozkladu jazdy

--- Koniec kodu ---

* w pliku .ini mozna okreslic czestotliwosc odswiezania odbic otoczenia, parametrem gfx.reflections.framerate X gdzie X = ilosc aktualizacji na sekunde

* w logu umieszczana jest rowniez nazwa komorki na ktorej wykonywany jest test memcompare

* dla modulu pythona pod zmienna light_level dostepny jest aktualny poziom swiatla slonecznego

* parametr brakestep wplywa rowniez na wielkosc przesuniecia kranow typu FV4a

* dodane kontrolki stanu kabinowych urzadzen universalX: definiowane w pliku .mmd wpisem i-universalX:

* dodana emulacja systemu zezwalania na otwieranie drzwi przez pasazerow. W ramach systemu:
- dodane urzadzenia:

--- Kod: ---doorleftpermit_sw: // zezwolenie na otwieranie drzwi lewych, domyslnie pod kombinacja shift + ,
doorrightpermit_sw: // zezwolenie na otwieranie drzwi prawych, domyslnie pod kombinacja shift + .
doorallon_sw: // otwarcie centralne drzwi na otwarcie ktorych wydano zezwolenie, domyslnie pod kombinacja shift + /

--- Koniec kodu ---
- dodane lampki:

--- Kod: ---i-doorpermit_left: // stan zezwolenia drzwi lewych
i-doorpermit_right: // stan zezwolenia drzwi prawych
i-doors: // sygnalizacja otwarcia drzwi w skladzie (bez wzgledu na strone)

--- Koniec kodu ---
- zmiany w systemie konfiguracji drzwi: w sekcji Doors pliku .fiz tryb AutomaticCtrl nie jest juz uzywany, zamiast tego pozostale typy drzwi uwzgledniaja opcjonalne wpisy DoorStayOpen=X (drzwi zamykaja sie automatycznie po X sekundach jesli otwarte zostaly lokalnie przez pasazera) oraz DoorAutoCloseVel=X (drzwi zamykaja sie automatycznie jesli predkosc pojazdu przekroczy X km/h) Pojazdy w ktorych otwieranie drzwi przez pasazerow wymaga udzielenia zgody przez mechanika wymagaja wpisu w sekcji Doors pliku .fiz
DoorNeedPermit=Yes

* dodana obsluga urzadzenia kabinowego doorpermitpreset_sw: pokretla umozliwiajacego wybor drzwi ktore moga byc otwarte (przez pasazerow lub przyciskiem centralnego otwierania drzwi)
- w pliku .fiz w sekcji Doors mozliwa jest konfiguracja zezwolen udzielanych w poszczegolnych polozeniach wpisami

--- Kod: ---DoorPermitList=konfiguracja|konfiguracja|konfiguracja|etc // konfiguracja: liczba w zakresie 0-3 gdzie 0=brak zezwolen, 1=zezwolenie obslugi drzwi lewych, 2=prawych, 3=wszystkich
DoorPermitListDefault=X // domyslnie ustawiona pozycja pokretla z zestawu zdefiniowanego przez wpis DoorPermitList, pozycje numerowane sa od 1

--- Koniec kodu ---

* wpis dzwieku tachometru w pliku mmd reaguje na opcjonalne parametry glosnosci

* dodatkowy typ oswietlenia przyrzadow, i-instrumentlight_l: aktywujacy sie przy zalaczeniu w pojezdzie reflektorow

* automatyczne zamykanie po uplywie danego czasu drzwi otwartych centralnie moze byc kontrolowane wpisem w sekcji Doors pliku .fiz DoorAutoCloseRemote=Yes/No (domyslnie No)

* ekran F2 w trybie rozszerzonym podaje aktualna dlugosc skladu oraz rozkladowa i rzeczywista wartosc brutto.

* dodane urzadzenia kabinowe

--- Kod: ---doorstep_sw: // przelacznik stanu stopnia drzwi
i-doorstep: // kontrolka wybranego stanu stopnia drzwi

--- Koniec kodu ---

* dodana mozliwosc udzwiekowienia wskazowki sekundowej zegarka w tachometrze za posrednictwem urzadzenia kabinowego clock_seconds: Wykorzystanie funkcjonalnosci wymaga podania wpisu konfiguracyjnego przed wpisem clock: analog.

* dodane urzadzenie kabinowe, jointctrl: stanowiace polaczenie nastawnika jazdy i hamowania

* dla modulu pythona dostepna jest informacja o wysunieciu stopnia drzwi, za posrednictwem kluczy doorstep_l_X oraz doorstep_r_X gdzie X to numer pojazdu w skladzie, "r" odpowiada stronie prawej a "l" stronie lewej.

* dodany tryb pracy AI, Loose_shunt Dziala on w duzej mierze tak samo jak zwykly tryb Shunt i akceptuje takie same parametry, ale powoduje ze zamiast zatrzymywac sie w bezpiecznej odleglosci przed napotkanym skladem, AI bedzie probowalo ten sklad popychac (bez koniecznosci sprzegania) z predkoscia ok. 8 km/h

* przy wywolaniu trybu Loose_shunt jako operacji polaczenia i rozlaczenia (podajac komende Loose_shunt X Y) jesli podany typ sprzegu (parametr Y) jest wartoscia dodatnia to po zakonczeniu operacji rozlaczania AI bedzie kontynuowac jazde w kierunku skladu, pchajac go przed soba

* w trybie Loose_shunt w przypadku gdy popychane przez AI pojazdy sa zahamowane ich hamulce zostana wyluzowane "recznie", bez koniecznosci polaczenie

* dodane okienko informacji na temat scenariusza, dostepne pod klawiszem F3. W oknie tym podawane jest aktualne polecenie dla danego skladu oraz, opcjonalnie, ogolny opis misji dla danego skladu. Opis jest odpowiednikiem wpisu //$o z ktorego korzysta Rainsted i definiowany jest jako dodatkowa sekcja we wpisie trainset:

--- Kod: ---trainset
assignment
pl "zlecenie dla skladu, wyswietlone gdy ustawiony jest jezyk polski"
en "assignment for this consist, shown when language is set to english"
endassignment
endtrainset

--- Koniec kodu ---
(opis misji moze obejmowac rowniez wersje jezykowe inne niz pl i en)

* dodane urzadzenia kabinowe:

--- Kod: ---coolingfans_sw: // przelacznik wymuszajacy prace wentylatorow oporow rozruchowych
i-coolingfans: // kontrolka pracy wentylatorow oporow rozruchowych
tempomat_sw: // dedykowany przelacznik stanu tempomatu

--- Koniec kodu ---

* dodany nastawnik MHZ_6P dla pojazdow z rodziny Traxx

* dodana mozliwosc przypisania w pliku .mmd pojazdu modeli .t3d, ktore powinny zostac uzyte do wizualizacji ladunkow. Pozwala to na wykorzystanie tych samych modeli w kilku pojazdach, bez koniecznosci klonowania ich dla kazdego typu z osobna. Przypisanie modeli umieszczone jest w sekcji models/endmodels w formacie:

--- Kod: ---loads: {
 typ: model_ladunku // np. passengers: passengers_110_1stclass
 typ: model_ladunku
 // itd
}

--- Koniec kodu ---
zamiast pojedynczego modelu ladunku mozliwe jest podanie zestawu modeli w klamrach [] czyli np [ ladunek1 ladunek2 ladunek3 ]  W takiej sytuacji dla danego pojazdu model ladunku wybrany zostanie losowo z podanego zestawu.

* lampki stanu drzwi w kabinie B nie wymagaja juz odwrotnego przypisania im submodeli

* sprzegi automatyczne lacza sie samoistnie tylko z innymi sprzegami automatycznymi

* dodane nowe urzadzenie kabinowe, lampke sygnalizujaca fakt zalaczenia tempomatu, i-tempomat:

* w wagonach ktorych plik .fiz definiuje obecnosc ogrzewania zalaczane sa rowniez przetwornice, aktywowane jesli dany wagon otrzyma za posrednictwem sprzegu wysokie napiecie

* tablice relacyjne z ustawionym parametrem self-illum wyswietlaja wersje "aktywna" tylko jesli pojazd ma zalaczona baterie

* tablice relacyjne moga byc generowane dynamicznie przez skrypt pythona na podstawie aktualnego rozkladu. Zdefiniowany w pliku .mmd pojazdu skrypt zostanie uruchomiony w sytuacji, gdy dotychczasowe metody wyszukiwania tablicy nie znajda zadnego pasujacego egzemplarza. Definicja w pliku .mmd umieszczana jest w sekcji internaldata: i wyglada nastepujaco:

--- Kod: ---pydestinationsign: { skrypt instance: X parameters: Y }

--- Koniec kodu ---
gdzie

--- Kod: ---skrypt // nazwa skryptu generujacego teksture, z opcjonalna sciezka dostepu; przy braku sciezki skrypt wyszukiwany bedzie w folderze danego pojazdu
instance: X // opcjonalny parametr pozwalajacy generowac odrebne tekstury dla pojazdow w danym skladzie, uzywajacych tego samego skryptu. na chwile obecna X moze byc jedna z dwoch wartosci: name (nazwa danego pojazdu) lub type (typ danego pojazdu)
parameters: Y // opcjonalne dodatkowe parametry jakie otrzyma wywolany skrypt, gdzie Y to ciag w postaci parametr=wartosc&parametr=wartosc&parametr=wartosc (itd)

--- Koniec kodu ---

* dzwiek pisku kol na lukach szyn moze byc rowniez dzwiekiem skladanym; wybor probki dokonywany jest na podstawie predkosci pojazdu

* drzwi pojazdow typu AutomaticCtrl otwieraja sie i zamykaja automatycznie na podstawie udzielonego zezwolenia

* przyciski zezwolenia dla drzwi moga byc definiowane jako impulsowe lub bistabilne

* punkt wystepowania mgly na scenerii losowany jest z zakresu definiowanego przez wartosci fog_start i fog_end we wpisie atmo

* dodatkowe klucze dostepne dla modulu pythona, train_stationfrom oraz train_stationto odpowiadajaca poczatkowej i koncowej stacji w przypisanym do pojazdu rozkladzie

* parametr AIM w sekcji Engine pliku .fiz pozwala rowniez zdefiniowac predkosc zmiany obrotow silnika dla pojazdow z napedem spalinowo-elektrycznym. Wartosc domyslna parametru dla napedu spal-ele, odpowiadajaca dotychczasowemu zachowaniu, to 1.25

* kalkulacja oporow powietrza uwzglednia redukcje oporu przez pojazd poprzedzajacy

* poziom glosnosci komunikatow radiowych moze byc modyfikowany parametrem w pliku .ini sound.volume.radio X gdzie X to liczba w zakresie 0.0-1.0 bedaca mnoznikiem glosnosci bazowej

* skrypty pythona powinny otrzymywac informacje o pozycji nastawnikow z pojazdu kontrolowanego zamiast obsadzonego

* metoda uruchomienia sprezarki pantografow moze byc definiowana w pliku .fiz wpisem PantCompressorStart w sekcji Cntrl.

* przycisk stanu baterii moze byc skonfigurowany jako impulsowy

* dodane urzadzenie kabinowe, przelacznik doormode_sw: pozwalajacy na przelaczenie sterowania drzwiami miedzy trybem indywidualnym i centralnym; przycisk domyslnie obslugiwany jest kombinacja Shift + Ctrl + /

* dodany tempomat dla EZT z napedem asynchronicznym

* przy podawaniu godzin przyjazdu i odjazdu w rozkladzie mozna rowniez podac dziesietne czesci minuty (poprzedzone kropka)

* po zatrzymaniu sie na przystanku kolorem sygnalizowana jest koniecznosc postoju (celem wymiany pasazerow, lub w oczekiwaniu na czas odjazdu)

* czlon rozrzadczy w skladzie moze kontrolowac rowniez pojazd/czlon silnikowy podlaczony kablem sterujacym

* przycisk zalaczania ogrzewania moze byc skonfigurowany jako impulsowy

* dodana obsluga zintegrowanego nastawnika w pojazdach z silnikiem diesla

* wirtualny mechanik pamieta o zalaczeniu ogrzewania skladu

* tabelka rozkladu jazdy odwzorowuje graficznie typ linii na danym odcinku (jedno/dwutorowa) Ilosc torow dostepna jest dla modulu pythona jako parametr train_stationX_tracks gdzie X to numer stacji w rozkladzie

* panel f12 otrzymal nowa sekcje, wyswietlajaca prad generowany przez wszystkie zdefiniowane podstacje. Kolorami akcentowane sa podstacje obciazone ponizej bezpiecznego poziomu oraz wylaczone.

* kolorowanie sieci trakcyjnej uzaleznione jest teraz od dedykowanego przelacznika

* urzadzenia grzewcze w skladzie pobieraja prad zgodnie z zapotrzebowaniem

* wpis konfiguracyjny przycisku zamykania wszystkich drzwi moze miec podana flage type=delayed ktora spowoduje ze faktyczne zamkniecie drzwi nastapi dopiero po puszczeniu przycisku, zamiast natychmiast po jego wcisnieciu

* zachowanie zaworu sprezarki pantografow (automatyczny/reczny) moze byc skonfigurowane wpisem w sekcji Cntrl. pliku fiz, PantAutoValve=X gdzie X moze miec wartosc Yes lub No (w celu zachowania zgodnosci wstecznej tryb automatyczny jest ustawiany domyslnie dla EZT, a reczny dla pozostalych)

* wczytywanie plikow fiz jest wykonywane przy uzyciu wewnetrznego parsera, co teoretycznie umozliwia stosowanie dyrektyw include (rowniez z parametrami)

* dodany tryb pracy nastawnika uniwersalnego pozwalajacy obslugiwac hamulec skladu zamiast hamulca lokalnego

--- Koniec cytatu ---

tmj:

--- Cytuj ---* dodana wstepna implementacja pradnicy jako zrodla pradu dla ogrzewania skladu; konfiguracja pradnicy w pliku .fiz wyglada nastepujaco:

--- Kod: ---Clima: Heating=Generator HGeneratorEngine=Main HGeneratorMinRPM=696 HGeneratorMinVoltage=2400 HGeneratorMaxRPM=1500 HGeneratorMaxVoltage=3300

--- Koniec kodu ---
gdzie:

--- Kod: ---HGeneratorEngine // typ silnika napedzajacego pradnice; na ten moment faktycznie obslugiwany jest tylko typ Main oznaczajacy spiecie z 'glownym' silnikiem pojazdu
HGeneratorMinRPM // dolna wartosc zakresu 'roboczego' pradnicy, w obrotach na minute
HGeneratorMinVoltage // napiecie generowane przy dolnej roboczej predkosci obrotowej
HGeneratorMaxRPM // gorna wartosc zakresu 'roboczego' pradnicy, w obrotach na minute
HGeneratorMaxVoltage // napiecie generowane przy gornej roboczej predkosci obrotowej

--- Koniec kodu ---

* rysowanie cieni w kabinie moze opcjonalnie obejmowac cienie rzucane przez otoczenie pojazdu (slupy trakcji, drzewa, mijane sklady itp) Opcja aktywowana jest wpisem w pliku .ini gfx.shadows.cab.range X gdzie X to ~promien (w metrach) obszaru uwzglednianego przy rysowani cieni.

* w pliku .fiz mozna zdefiniowac czas potrzebny do "aktywacji" glownego obwodu/wylacznika szybkiego po otrzymaniu wysokiego napiecia. Do definicji sluzy wpis MainInitTime=X w sekcji Cntrl. gdzie X to czas aktywacji ukladu w sekundach. Stan inicjalizacji dostepny jest rowniez z poziomu pythona pod kluczem main_init a gotowosc do zamkniecia wylacznika szybkiego pod kluczem main_ready

* oprocz standardowych eventlauncherow mozliwe jest rowniez definiowanie eventlauncherow uruchamianych poprzez wyslanie z pojazdu sygnalu radiowego ZEW3. Eventlauncher uruchamiany radiem definiowany jest tak samo jak zwykly eventlauncher, ale jako klawisz aktywujacy podany ma ciag radio_call3 Sygnal ZEW3 wysylany jest domyslnie klawiszem Backspace, o ile w pojezdzie znajduje sie zalaczona radio ustawione na kanal inny niz 10

* dodane urzadzenie kabinowe, przycisk sygnalu radia ZEW3 definiowany wpisem radiocall3_sw:

* dodane urzadzenia kabinowe:

--- Kod: ---heatingvoltage: // woltomierz pradnicy grzewczej
heatingcurrent: // amperomierz pradnicy grzewczej

--- Koniec kodu ---

* klawisze przejscia do poprzedniej/nastepnej kabiny i pojazdu powinny przemieszczac uzytkownika w danym kierunku bez wzgledu na potencjalny obrot pojazdu w skladzie

* dodana obsluga zrodel dymu:
-- definicje parametrow dla zrodla umieszczane sa w plikach tekstowym w katalogu data/ Nazwa pliku powinna zaczynac sie od ciagu smokesource_
-- zrodlo wszczepiane jest do modelu poprzez wstawienie "banana" o nazwie takiej samej jak nazwa pliku definiujacego parametry dane zrodlo dymu. Jedyne parametry submodelu ktore brane sa pod uwage to wlasnie nazwa (okreslajaca nazwe zrodla) oraz macierz transformacji, okreslajaca punkt wylotowy dymu

* waga jednostek ladunku jest teraz umieszczona w zewnetrznym pliku data/load_weights.txt co umozliwia latwiejsze definiowanie wagi dla dodatkowych typow ladunkow

* emisja dymu moze byc kontrolowana wpisami w pliku .ini:

--- Kod: ---gfx.smoke X // gdzie X = yes/no (domyslnie yes) zalacza/wylacza obsluge dymu
gfx.smoke.fidelity X // gdzie X = wartosc w przedziale 1-4 (domyslnie 1) ilosc generowanych czastek dymu

--- Koniec kodu ---

* definicja zrodla dymu moze rowniez obejmowac kolor dymu. Kolor okreslany jest w sekcji initializer: definicji zrodla, wpisem:

--- Kod: ---color: [ R, G, B ]

--- Koniec kodu ---
gdzie R, G i B to skladowe koloru (czerwona, zielona i niebieska) w przedziale 0-255

* ciagniecie za sprzeg z sila przekraczaja jego tolerancje moze doprowadzic do zerwania rzeczonego sprzegu

* uderzenie w inny pojazd z predkoscia wyzsza niz bezpieczna moze doprowadzic do wykolejenia

* diagnostyka zderzen obejmuje dodatkowo logowanie predkosci

* identyfikator czuwaka na panelu pomocnika miga w celu poprawienia zauwazalnosci

* na port uart wysylana jest dodatkowo informacja o aktywnej kabinie (6 bajt, 2 bit) oraz stan miernika niskiego napiecia (bajty 21-22). W zwiazu z ta zmiana parametr uarttune wymaga podawania dwoch dodatkowych zmiennych, konfigurujacych miernik niskiego napiecia na takich samych zasadach jak konfigurowane sa pozostale mierniki analogowe

* skrypty pythona otrzymuja informacje z grupy diesel_param_X_ rowniez dla pojazdow z napedem spal-ele. W grupie podawany jest dodatkowy parametr, temperatura silnika dostepna pod kluczem engine_temp

* dodany alternatywny tryb przejmowania kontroli nad innym pojazdem, dostepny pod kombinacja Ctrl+F5  W trybie tym, jesli przejmujemy pojazd bedacy czescia skladu ktory juz kontrolowalismy z innego pojazdu, ai normalnie umieszczane w pojezdzie ktory opuszczamy zostaje automatycznie uspiona. Pozwala to np. na przechodzenie miedzy dwoma lub wiecej obsadzonymi EZT spietymi ze soba w trakcie scenariusza (nalezy jednak pamietac o 'recznym' ustawieniu w opuszczanym pojezdzie kranu w pozycje odciecia oraz nastawnikow jazdy/kierunku w pozycji neutralnej)

* dodana obsluga sprezynowego hamulca postojowego (definiowanego w nowej sekcji SpringBrake: pliku fiz)

* zintegrowany nastawnik moze byc pozbawiony funkcji hamowania

* z poziomu skryptow pythona mozliwy jest odczyt stanu swiatel obsadzonego pojazdu, przy pomocy kluczy lights_front oraz lights_rear

* z poziomu skryptow pythona mozliwy jest odczyt stan hamulca sprezynowego

* piaskowania reczne i automatyczne funkcjonuja odrebnie

* dodany przycisk stanu automatycznego piaskowania, autosandallow_sw:

* zalaczony hamulec sprezynowy odlacza naped

* dodany zawor bezpieczenstwa glownego cylindra oraz pokretlo programatora sprezarek, compressorlist_sw:

* zwiekszone mozliwosci konfiguracji kranow hamulca, dodane uniwersalne przyciski hamowania universalbrakeX_bt: gdzie X to wartosc w zakresie 1-3

* dodane przyciski obslugi hamulca sprezynowego, springbraketoggle_bt: springbrakeon_bt: springbrakeoff_bt:

* dodana obsluga miernika przejechanej odleglosci. Na miernik skladaja sie nastepujace elementy:
-- (opcjonalny) dzwiek distancecounter: zdefiniowany w sekcji internaldata pliku .mmd  Dzwiek odtwarzany jest gdy, po uruchomieniu miernika, pociag przejedzie dystans rowny dlugosci skladu.
-- przycisk distancecounter_sw: wcisniecie ktorego uruchamia miernik. Miernik automatycznie konczy prace po przejechaniu odleglosci rownej dlugosci skladu. Wcisniecie przycisku w trakcie pracy miernika powoduje naliczanie odleglosci od zera
-- lampka i-distancecounter: sygnalizujaca prace miernika. Lampka zapala sie gdy miernik zostanie uruchomiony i gasnie po zakonczeniu jego pracy, tzn po przejechaniu odleglosci rownej dlugosci skladu (lub po wylaczeniu zasilania w pojezdzie)
-- aktualny stan miernika dostepny jest dla skryptow pythona pod kluczem distance_counter Wartosc ujemna sygnalizuje ze miernik jest wylaczony, wartosc dodatnia to przejechana od momentu uruchomienia miernika odleglosc w metrach

* skryptom pythona udostepniony zostal stan sprezarki pantografow, dostepny pod kluczem pant_compressor

* skryptom pythona udostepniony zostala dlugosc prowadzonego skladu, dostepna pod kluczem train_length

* w plikach .mmd oprocz zwyklego tekstu mozna rowniez umieszczac parametry, na zasadach takich samych jak w plikach dolaczanych dyrektywa include. Obslugiwane sa nastepujace parametry:

--- Kod: ---(p1) // nazwa pojazdu, podana we wpisie trainset/node
(p2) // nazwa typu pojazdu, podana we wpisie trainset/node
(p3) // nazwa skorki przypisanej do danego egzemplarza, podana we wpisie trainset/node

--- Koniec kodu ---

* w pliku .mmd mozna zdefiniowac dodatkowe modele 3d ktore zostana "doczepione" do danego pojazdu. Modele te otrzymaja taki sam zestaw tekstur wymiennych jak pojazd, do ktorego sa doczepione. Definicja doczepek umieszczana jest w sekcji models: i wyglada nastepujaco:

--- Kod: ---attachments: {
 model1
 model2
// itd
}

--- Koniec kodu ---
gdzie model1, model2 itd to nazwy plikow modeli ktore powinny zostac doczepione do pojazdu (modele wyszukiwane sa w katalogu danego pojazdu). Dla kazdego modelu oprocz pojedynczej nazwy modelu mozna podac ich zestaw zamkniety w nawiasach [] co spowoduje wylosowanie jednej nazwy z tak zdefiniowanego zestawu.

* skryptom pythona udostepniony zostal stan retardera w pojazdach skladu, dostepny pod kluczem diesel_param_X_retarder_fill gdzie X to numer pojazdu w skladzie

* modele statyczne typu node model obsluguja wiecej niz jedna teksture wymienna, na takich samych zasadach jak modele pojazdow

* rozbudowana obsluga tempomatu
-- dodane urzadzenia kabinowe:

--- Kod: ---speedinc_bt: // zwiekszenie predkosci utrzymywanej przez tempomat
speeddec_bt: // zmniejszenie predkosci utrzymywanej przez tempomat
speedctrlpowerinc_bt: // zwiekszenie maksymalnego poziomu mocy dostepnej dla tempomatu
speedctrlpowerdec_bt: // zmniejszenie maksymalnego poziomu mocy dostepnej dla tempomatu
speedbuttonX: // ustalenie dla tempomatu zdefiniowanej predkosci nr X, gdzie X to wartosc w przedziale 0-9

--- Koniec kodu ---

* panel f12 wyswietla w sekcji grafiki liczbe malowanych czastek dymu

* dla skryptow pythona udostepnione zostaly informacje o stanie aktywacji tempomatu, dostepne pod kluczami speedctrlactive (tempomat zalaczony) oraz speedctrlstandby (tempomat w stanie czuwania)

* przyciski w kabinie oprocz dotychczasowego submodelu moga miec tez opcjonalny submodel z nazwa poszerzona o koncowke _on
-- wyswietlanie wersji _on jest uzaleznione od spelnienia warunku, zaleznego od funkcji konkretnego przycisku.
-- dla przycisku mozna tez zdefiniowac dodatkowe dzwieki, soundon: i soundoff: odgrywane gdy nastepuje przelaczenie miedzy wyswietlaniem submodelu domyslnego i wersji _on

* dodana kalkulacja zuzycia paliwa w pojazdach z silnikiem diesla

* zalaczenie trybu manewrowego zapobiega aktywacji czuwaka

* sklad prowadzony przez uzytkownika ma domyslnie zapalone koncowki zamiast zalozonych blach, o ile to mozliwe

* dodana pseudo-symulacja elektrozaworow czuwakowych

* domyslnym trybem wizualizacji jest szaderowy renderer, wymagajacy openGL w wersji 3.3 lub wyzszej. Dotychczasowy renderer dostepny jest poprzez ustawienie parametru gfxrenderer w pliku .ini na wartosc legacy

* dodana mozliwosc definiowania dodatkowych parametrow silnika z wykorzystaniem tabelek

* dodane przyciski regulacji glosnosci radia:

--- Kod: ---radiovolume_sw: // pokretlo wyboru glosnosci
radiovolumeprev_sw: // przycisk zmniejszenia glosnosci radia
radiovolumenext_sw: // przycisk zwiekszenia glosnosci radia

--- Koniec kodu ---

* poziom gloscnosci radia dostepny jest z poziomu pythona pod kluczem radio_volume

* pociagi osobowe zatrzymujace sie na postoju technicznym (stacje w rozkladzie z umieszczonym w konfiguracji symbolem pt) oraz pociagi towarowe ogolnie nie czekaja z odjazdem do rozkladowej godziny o ile otrzymaja wolna droge

* dodany parametr konfiguracji bufora gfx.framebuffer.fidelity X gdzie X jest wartoscia w przedziale 0-3 okreslajaca ogolna wielkosc bufora na ktorym generuje obraz renderer shaderowy, a tym samym dokladnosc/zasobozernosc wizualizacji.

* dodany parametr TransEff w sekcji Engine pliku .fiz, definiujacy sprawnosc przekladni

* uruchomiona obsluga parametru cablight: w pliku .mmd

* aktywowana obsluga CurrentCollector jako zrodla zasilania dla ogrzewania (wpis Heating= w sekcji Clima: pliku .fiz) W trybie tym zasilanie obwodu ogrzewania nie wymaga zamkniecia wylacznika szybkiego, a jedynie doplywu pradu z sieci do pantografow

* komenda Load jako drugi parametr pozwala zdefiniowac dopuszczalna odleglosc od lokacji zrodla komendy

* dodany przelacznik deaktywacji wczytywania/generowania plikow .sbt file.binary.terrain X gdzie X to yes lub no

* wsiadanie do (innego) pojazdu dostepne pod klawiszem F5 nie wymaga juz by pojazd ten mial ustawiona z gory obsade w pliku .scn

* dodany wpis dla pliku .ini maxcabtexturesize dzialajacy tak jak dotychczasowy maxtexturesize ale kontrolujacy dopuszczalna wielkosc tekstur kabiny

* przyciski universalX moga byc definiowane jako impulsowe

* definicja dzwieku moze zawierac parametr pitchvariation: X gdzie X okresla zakres z jakiego losowana jest czestotliwosc dzwieku. Przykladowo pitchvariation: 0.1 spowoduje modyfikacje czestotliwosci bazowej w zakresie +- 5% zas pitchvariation: 0 spowoduje ze dany dzwiek bedzie zawsze odtwarzany tak samo

* szaderowy silnik graficzny wykorzystuje przy malowaniu cieni tzw kaskade map (CSM) pozwalajaca na uzyskanie lepszej jakosci cieni. Poniewaz cienie zewnetrzne w tym systemie automatycznie wplywaja na oswietlenie kabiny parametr gfx.shadows.cab.range ma od tej pory zastosowanie tylko dla silnika legacy

* wizualizacja obiektow uwzglednia ich wielkosc/odleglosci od kamery, decydujac dodatkowo na tej podstawie czy powinny byc malowanie

* dodana mozliwosc konfiguracji podpietego joysticka/gamepada
-- konfiguracja przechowywana jest w pliku eu07_input-gamepad.ini
-- przypisanie funkcji do danego przycisku lub osi powinno zajmowac jedna (i tylko jedna) linijke w pliku
-- przypisanie funkcji do przycisku wyglada nastepujaco:

--- Kod: ---buttonX impulse komenda

--- Koniec kodu ---
gdzie X to liczba-identyfikator przycisku, a komenda to nazwa przypisanej komendy. Klucz impulse oznacza ze przycisk dziala impulsowo, tzn komenda generowana jest dopoki przycisk pozostaje wcisniety
-- alternatywnie przycisk moze miec funkcje zmiany trybu dzialania galek gamepada, konfigurowana nastepujaco:

--- Kod: ---buttonX mode Y

--- Koniec kodu ---
gdzie X to liczba-identyfikator przycisku, a Y to liczba-identyfikator trybu dzialania galek
-- przypisanie funkcji do galek odbywa sie na poziomie poszczegolnych osi, w sposob nastepujacy:

--- Kod: ---axisX value komenda numerparametru
// lub
axisX 3state komenda1 komenda2

--- Koniec kodu ---
gdzie X to liczba-identyfikator osi ruchu galki; w trybie value wychylenie galki powoduje wygenerowanie podanej komendy zas wartosc wychylenia (w zakresie od -1 do 1) zostanie dolaczona jako podany parametr -- numerparametru moze miec wartosc 1, 2, x lub y (1 oraz x maja ten sam efekt, podobnie jak 2 oraz y) Mozliwe jest tez podanie trybu value_inverted ktory dziala tak jak value ale odwraca wartosc polozenia galki. Wreszcie tryb 3state powoduje wygenerowanie komendy1 przy wychyleniu galki w kierunku pozytywnym, lub komendy2 przy wychyleniu w kierunku przeciwnym
-- definicja funkcji osi galki moze byc rozbudowana o dodatkowe konfiguracje, poprzez dodanie ciagu:

--- Kod: ---modeX tryb parametry

--- Koniec kodu ---
gdzie X to liczba-identyfikator, zgodna z wartoscia Y podana dla przycisku, ktory ma aktywowac dany tryb pracy. Tryb to klucz value/value_inverted/3state zas parametry zaleza od trybu, zgodnie z opisem powyzej

* silnik szaderowy pozwala na definicje parametru glossiness dla materialu.

* wybor konfiguracji pracy sprezarek jest propagowany wzdluz skladu

* pokretlo trybu pracy sprezarki moze byc skonfigurowane jako przelacznik impulsowy. W takiej konfiguracji urzadzenie przelacza sprezarki miedzy konfiguracja domyslna i kolejna po niej, w tabelce parametrow pracy sprezarek

* lampka sygnalizujaca otwarcie wylacznika szybkiego i-mainbreakeroff: ignoruje 'gotowosc' ukladu elektrycznego. Sygnalizacja 'gotowosci' WSa do zalaczenia zajmuje sie nowa lampka, i-mainbreakerready:

* dodana kontrolka stanu zablokowania przewodu glownego, i-mainpipelock:

* dodana obsluga uniwersalnego nastawnika dla pojazdow z napedem spal-ele

* dodane impulsowe przyciski kontroli stanu baterii, batteryon_sw: oraz batteryoff_sw:

* w przypadku zdefiniowania roznych wartosci parametrow MinCP oraz MaxCP w pojezdzie ze sprezarka napedzana przez silnik spalinowy, po nabiciu cisnienia do wartosci MaxCP powietrze zostaje upuszczone do poziomu MinCP (zamiast na sztywno o 20% jak ma to miejsce w przypadku gdy wartosci MinCP oraz MaxCP sa rowne)

* smuga oswietlenia na silniku szaderowym generowana jest na podstawie stanu poszczegolnych reflektorow

--- Koniec cytatu ---

Nawigacja

[0] Indeks wiadomości

[#] Następna strona

[*] Poprzednia strona

Idź do wersji pełnej
Powered by Advanced Topic Prefix Pro
Powered by SMFPacks Likes Pro Mod