|
Patch OpenTTD 1.8.1
|
Liczba postów: 40
Liczba wątków: 5
Dołączył: Dec 2018
Jest to rozszerzenie OTTD 1.8.0 choć dotyczy różnych podobnych oznaczeń i numeracji .
Umożliwia działanie z dodawaniem skryptów GS, które przyporządkowują barwy firm (znane od 1.9) oraz typ "face" męski i żeński do wyboru wg ustawień.
Dopiero dostosowany skrypt GS może automatycznie to zrobić , ale użytkownik konfiguruje po swojemu .
W dalszej kolejności można zaimplementować "zegar ścienny" odmierzający w godzinach i minutach jazdy" (Wall_Clock)
i to nic innego jak jakaś gałąź OpenTTD -
tyle ,że ujęte w same modyfikacje w odniesieniu do czegoś (bez przepisywania wszystkiego).
Po prostu patch .
Do kompilacji wymaga odpowiedniego oprzyrządowania, m.in. minGW (jakieś minimum kompilatorów z bibliotekami Windows) , msys (Miniamal system , z patch, diff etc)
Ogólnie jako plik łatki podaje się zunifikowany plik różnicowy .diff (albo nowszy . patch)
zwany inaczej 'poprawką' , nie wymaga zbyt sporego nakładu i może być wygenerowana przez system kontroli wersji SVN lub nowszy Git ( portable ) .
więcej w tutorialu angielskim
Jeśli w jakimś notatniku tekstowym naniesione zostaną nowsze dane i zapisane (w .cpp )
To najprostsze powstanie pliku .dif uruchamia polecenie w powłoce rxvt :
Kod: diff -u oryginal zmienione
gdzie -u domyślne to 3 linie kontekstu,
u0 bez kontextu, gdy =1 z linią kontestu
W skrócie zawarte w .diff zmiany w zestawie plików (np. ze źródłowego Ottd 1.8 ).
oznacza się następująco :
ścieżki i nazwy mogą odnosić się do nazw plików
Od "@" jest informacja która linia ulega zmianie i zakresy
+ oznacza dodane wpisy
- skasowane
mogą byc otoczone kontekstem do orientacji (linie z góry i dołu bez znaku +-)
pozostałe 'indexy' użyte np. do całkiem nowego pliku
Po przeprogramowaniu konkretnych plików - wielu ,
a kiedy różnica jest tylko w pojedynczych liniach, wystarczy aby aplikacje Subversion automatycznie zawarły to w spójny 1 .
Wtedy krótszy .diff utworzy się podczas porównywania dwóch folderów: tzw. rewizji aktualnej (po edycji) i poprzednio zatwierdzonej , zajmując mniej miejsca (pamięciowo) i lepiej przenosić kopie (mniej czasochłonne).
Aby odtworzyć OpenTTD z tym , przeważnie należy pobrać z repozytorium (składowiska jak GitHub) pakiet nieskompilowany i rozpakować .zip .
Do tak przygotowanego folderu kopii roboczej umieścić łatkę i z tego katalogu wykonać "patchowanie" :
Kod: patch -p1 < nazwaPliku.diff
przy opcji -p nr=1 dla występujących ścieżek : " /src/... "
0 bywa przy ścieżkach : " src/... "
Liczba postów: 40
Liczba wątków: 5
Dołączył: Dec 2018
właściwa treść patcha - do skopiowania i wklejenia
Kod: .ottdrev | 1 +
src/script/api/game/game_company.hpp.sq | 89 ++++++++++++++++++-------
src/script/api/game_changelog.hpp | 10 +++
src/script/api/script_company.cpp | 11 +++
src/script/api/script_company.hpp | 67 +++++++++++++++++++
src/script/api/template/template_company.hpp.sq | 4 ++
6 files changed, 159 insertions(+), 23 deletions(-)
diff --git a/.ottdrev b/.ottdrev
new file mode 100644
index 0000000..7d7b3d4
--- /dev/null
+++ /.ottdrev
@@ -0,0 +1 @@
+1.8.1 20180402 2 28003
diff --git a/src/script/api/game/game_company.hpp.sq b/src/script/api/game/game_company.hpp.sq
index 56917a5..def0c82 100644
--- /src/script/api/game/game_company.hpp.sq
+++ /src/script/api/game/game_company.hpp.sq
@@ -23,25 +23,65 @@ SQGSCompany.AddConstructor<void (ScriptComp
- SQGSCompany.DefSQConst(engine, ScriptCompany::CURRENT_QUARTER, "CURRENT_QUARTER");
- SQGSCompany.DefSQConst(engine, ScriptCompany::EARLIEST_QUARTER, "EARLIEST_QUARTER");
- SQGSCompany.DefSQConst(engine, ScriptCompany::COMPANY_FIRST, "COMPANY_FIRST");
- SQGSCompany.DefSQConst(engine, ScriptCompany::COMPANY_LAST, "COMPANY_LAST");
- SQGSCompany.DefSQConst(engine, ScriptCompany::COMPANY_INVALID, "COMPANY_INVALID");
- SQGSCompany.DefSQConst(engine, ScriptCompany::COMPANY_SELF, "COMPANY_SELF");
- SQGSCompany.DefSQConst(engine, ScriptCompany::GENDER_MALE, "GENDER_MALE");
- SQGSCompany.DefSQConst(engine, ScriptCompany::GENDER_FEMALE, "GENDER_FEMALE");
- SQGSCompany.DefSQConst(engine, ScriptCompany::GENDER_INVALID, "GENDER_INVALID");
- SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_CONSTRUCTION, "EXPENSES_CONSTRUCTION");
- SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_NEW_VEHICLES, "EXPENSES_NEW_VEHICLES");
- SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_TRAIN_RUN, "EXPENSES_TRAIN_RUN");
- SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_ROADVEH_RUN, "EXPENSES_ROADVEH_RUN");
- SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_AIRCRAFT_RUN, "EXPENSES_AIRCRAFT_RUN");
- SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_SHIP_RUN, "EXPENSES_SHIP_RUN");
- SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_PROPERTY, "EXPENSES_PROPERTY");
- SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_TRAIN_INC, "EXPENSES_TRAIN_INC");
- SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_ROADVEH_INC, "EXPENSES_ROADVEH_INC");
- SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_AIRCRAFT_INC, "EXPENSES_AIRCRAFT_INC");
- SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_SHIP_INC, "EXPENSES_SHIP_INC");
- SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_LOAN_INT, "EXPENSES_LOAN_INT");
- SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_OTHER, "EXPENSES_OTHER");
- SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_INVALID, "EXPENSES_INVALID");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::CURRENT_QUARTER, "CURRENT_QUARTER");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::EARLIEST_QUARTER, "EARLIEST_QUARTER");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::COMPANY_FIRST, "COMPANY_FIRST");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::COMPANY_LAST, "COMPANY_LAST");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::COMPANY_INVALID, "COMPANY_INVALID");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::COMPANY_SELF, "COMPANY_SELF");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::GENDER_MALE, "GENDER_MALE");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::GENDER_FEMALE, "GENDER_FEMALE");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::GENDER_INVALID, "GENDER_INVALID");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_CONSTRUCTION, "EXPENSES_CONSTRUCTION");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_NEW_VEHICLES, "EXPENSES_NEW_VEHICLES");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_TRAIN_RUN, "EXPENSES_TRAIN_RUN");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_ROADVEH_RUN, "EXPENSES_ROADVEH_RUN");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_AIRCRAFT_RUN, "EXPENSES_AIRCRAFT_RUN");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_SHIP_RUN, "EXPENSES_SHIP_RUN");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_PROPERTY, "EXPENSES_PROPERTY");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_TRAIN_INC, "EXPENSES_TRAIN_INC");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_ROADVEH_INC, "EXPENSES_ROADVEH_INC");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_AIRCRAFT_INC, "EXPENSES_AIRCRAFT_INC");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_SHIP_INC, "EXPENSES_SHIP_INC");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_LOAN_INT, "EXPENSES_LOAN_INT");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_OTHER, "EXPENSES_OTHER");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_INVALID, "EXPENSES_INVALID");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::LS_DEFAULT, "LS_DEFAULT");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::LS_STEAM, "LS_STEAM");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::LS_DIESEL, "LS_DIESEL");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::LS_ELECTRIC, "LS_ELECTRIC");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::LS_MONORAIL, "LS_MONORAIL");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::LS_MAGLEV, "LS_MAGLEV");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::LS_DMU, "LS_DMU");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::LS_EMU, "LS_EMU");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::LS_PASSENGER_WAGON_STEAM, "LS_PASSENGER_WAGON_STEAM");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::LS_PASSENGER_WAGON_DIESEL, "LS_PASSENGER_WAGON_DIESEL");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::LS_PASSENGER_WAGON_ELECTRIC, "LS_PASSENGER_WAGON_ELECTRIC");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::LS_PASSENGER_WAGON_MONORAIL, "LS_PASSENGER_WAGON_MONORAIL");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::LS_PASSENGER_WAGON_MAGLEV, "LS_PASSENGER_WAGON_MAGLEV");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::LS_FREIGHT_WAGON, "LS_FREIGHT_WAGON");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::LS_BUS, "LS_BUS");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::LS_TRUCK, "LS_TRUCK");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::LS_PASSENGER_SHIP, "LS_PASSENGER_SHIP");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::LS_FREIGHT_SHIP, "LS_FREIGHT_SHIP");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::LS_HELICOPTER, "LS_HELICOPTER");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::LS_SMALL_PLANE, "LS_SMALL_PLANE");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::LS_LARGE_PLANE, "LS_LARGE_PLANE");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::LS_PASSENGER_TRAM, "LS_PASSENGER_TRAM");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::LS_FREIGHT_TRAM, "LS_FREIGHT_TRAM");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::LS_INVALID, "LS_INVALID");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_DARK_BLUE, "COLOUR_DARK_BLUE");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_PALE_GREEN, "COLOUR_PALE_GREEN");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_PINK, "COLOUR_PINK");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_YELLOW, "COLOUR_YELLOW");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_RED, "COLOUR_RED");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_LIGHT_BLUE, "COLOUR_LIGHT_BLUE");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_GREEN, "COLOUR_GREEN");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_DARK_GREEN, "COLOUR_DARK_GREEN");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_BLUE, "COLOUR_BLUE");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_CREAM, "COLOUR_CREAM");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_MAUVE, "COLOUR_MAUVE");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_PURPLE, "COLOUR_PURPLE");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_ORANGE, "COLOUR_ORANGE");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_BROWN, "COLOUR_BROWN");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_GREY, "COLOUR_GREY");
+ SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_WHITE, "COLOUR_WHITE");
@@ -70,2 +108,5 @@ SQGSCompany.DefSQStaticMethod(engine, &Scri
SQGSCompany.DefSQStaticMethod(engine, &ScriptCompany::GetAutoRenewMoney, "GetAutoRenewMoney", 2, ".i");
+ SQGSCompany.DefSQStaticMethod(engine, &ScriptCompany::SetPrimaryLiveryColour, "SetPrimaryLiveryColour", 3, ".ii");
+ SQGSCompany.DefSQStaticMethod(engine, &ScriptCompany::SetSecondaryLiveryColour, "SetSecondaryLiveryColour", 3, ".ii");
+ SQGSCompany.DefSQStaticMethod(engine, &ScriptCompany::SetPresidentGender, "SetPresidentGender", 2, ".i");
diff --git a/src/script/api/game_changelog.hpp b/src/script/api/game_changelog.hpp
index 20fa38f..ef34901 100644
--- /src/script/api/game_changelog.hpp
+++ /src/script/api/game_changelog.hpp
@@ -17,2 +17,12 @@ * in GetAPIVersion() in info.nut.
*
+ * \b 1.8.1
+ *
+ * 1.8.1 nie zostało wydane. Poniższe zmiany nie są oficjalnie ustalone.
+ * API additions:
+ * \li GSCompany::SetPrimaryLiveryColour
+ * \li GSCompany::SetSecondaryLiveryColour
+ *
+ * Other changes:
+ * \li GSCompany::SetPresidentGender ustawienie automatyczne płci nie tylko w AI
+ *
* \b 1.8.0
diff --git a/src/script/api/script_company.cpp b/src/script/api/script_company.cpp
index a1f40c5..393b57a 100644
--- /src/script/api/script_company.cpp
+++ /src/script/api/script_company.cpp
@@ -298,1 +298,12 @@ return ::Company::Get((CompanyID)company)-
}
+
+ /* dodane: */
+/* statyc. */ bool ScriptCompany::SetPrimaryLiveryColour(LiveryScheme scheme, Colours colour)
+{
+ return ScriptObject::DoCommand(0, scheme, colour, CMD_SET_COMPANY_COLOUR);
+}
+
+/* statyc. */ bool ScriptCompany::SetSecondaryLiveryColour(LiveryScheme scheme, Colours colour)
+{
+ return ScriptObject::DoCommand(0, scheme | 1 << 8, colour, CMD_SET_COMPANY_COLOUR);
+}
diff --git a/src/script/api/script_company.hpp b/src/script/api/script_company.hpp
index 4deaeed..9ae8c4d 100644
--- /src/script/api/script_company.hpp
+++ /src/script/api/script_company.hpp
@@ -67,2 +67,52 @@ EXPENSES_INVALID = ::INVALID_EXPENSE
};
+
+ /* dodane: */
+ /** Lista różnych schematów barw. */
+ enum LiveryScheme {
+ LS_DEFAULT, ///< Domyślny schemat.
+ LS_STEAM, ///< Silniki parowe.
+ LS_DIESEL, ///< Silniki Diesla.
+ LS_ELECTRIC, ///< Silniki elektryczne.
+ LS_MONORAIL, ///< Silniki jednotorowe. +
+ LS_MAGLEV, ///< Silniki Maglev. -"- */
+ LS_DMU, ///< DMU i ich wagony pasażerskie.
+ LS_EMU, ///< UGW i ich wagony pasażerskie.
+ LS_PASSENGER_WAGON_STEAM, ///< Wagony pasażerskie przymocowane do silników parowych.
+ LS_PASSENGER_WAGON_DIESEL, ///< Wagony pasażerskie przymocowane do silników Diesla.
+ LS_PASSENGER_WAGON_ELECTRIC, ///< Wagony pasażerskie przymocowane do silników elektrycznych.
+ LS_PASSENGER_WAGON_MONORAIL, ///< Wagony pasażerskie przymocowane do silników jednoszynowych. +
+ LS_PASSENGER_WAGON_MAGLEV, ///< Wagony pasażerskie przymocowane do silników Maglev. -"- */
+ LS_FREIGHT_WAGON, ///< Wagony towarowe.
+ LS_BUS, ///< Autobusy.
+ LS_TRUCK, ///< Ciężarówki.
+ LS_PASSENGER_SHIP, ///< Statki pasażerskie.
+ LS_FREIGHT_SHIP, ///< Statki towarowe.
+ LS_HELICOPTER, ///< Śmigłowce.
+ LS_SMALL_PLANE, ///< Małe samoloty.
+ LS_LARGE_PLANE, ///< Duże samoloty.
+ LS_PASSENGER_TRAM, ///< Tramwaje pasażerskie.
+ LS_FREIGHT_TRAM, ///< Tramwaje towarowe.
+ LS_INVALID = -1,
+ };
+
+ /** Lista kolorów. */
+ enum Colours {
+ COLOUR_DARK_BLUE,
+ COLOUR_PALE_GREEN,
+ COLOUR_PINK,
+ COLOUR_YELLOW,
+ COLOUR_RED,
+ COLOUR_LIGHT_BLUE,
+ COLOUR_GREEN,
+ COLOUR_DARK_GREEN,
+ COLOUR_BLUE,
+ COLOUR_CREAM,
+ COLOUR_MAUVE,
+ COLOUR_PURPLE,
+ COLOUR_ORANGE,
+ COLOUR_BROWN,
+ COLOUR_GREY,
+ COLOUR_WHITE,
+ /* COLOUR_INVALID = ::INVALID_COLOUR // + game_instance.cpp ( ai), - script_company.cpp (network_content.cpp) */
+ };
@@ -332,2 +380,19 @@ */
static Money GetAutoRenewMoney(CompanyID company);
+
+ /* dodane: */
+ /**
+ * Ustaw. koloru podstawowego dla firmy 1.
+ * @parametr scheme Schemat barwny do ustawienia.
+ * @parametr colour Kolor do ustawienia.
+ * @zwotna Fałsz, jeśli nie można ustawić podstawowego koloru schematu barwnego (np. kolor w użyciu).
+ */
+ static bool SetPrimaryLiveryColour(LiveryScheme scheme, Colours colour);
+
+ /**
+ * Ustaw. koloru dodatkowego dla firmy 1.
+ * @parametr scheme Livery scheme to set.
+ * @parametr colour Colour to set.
+ * @zwrotna Fałsz, jeśli nie można ustawić dodatkowego koloru schematu barw.
+ */
+ static bool SetSecondaryLiveryColour(LiveryScheme scheme, Colours colour);
};
diff --git a/src/script/api/template/template_company.hpp.sq b/src/script/api/template/template_company.hpp.sq
index 7dc63f2..320d00c 100644
--- /src/script/api/template/template_company.hpp.sq
+++ /src/script/api/template/template_company.hpp.sq
@@ -23,2 +23,6 @@ template <> inline ScriptCompany::ExpensesT
template <> inline int Return<ScriptCompany::ExpensesType>(HSQUIRRELVM vm, ScriptCompany::ExpensesType res) { sq_pushinteger(vm, (int32)res); return 1; }
+ template <> inline ScriptCompany::LiveryScheme GetParam(ForceType<ScriptCompany::LiveryScheme>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptCompany::LiveryScheme)tmp; }
+ template <> inline int Return<ScriptCompany::LiveryScheme>(HSQUIRRELVM vm, ScriptCompany::LiveryScheme res) { sq_pushinteger(vm, (int32)res); return 1; }
+ template <> inline ScriptCompany::Colours GetParam(ForceType<ScriptCompany::Colours>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptCompany::Colours)tmp; }
+ template <> inline int Return<ScriptCompany::Colours>(HSQUIRRELVM vm, ScriptCompany::Colours res) { sq_pushinteger(vm, (int32)res); return 1; }
Liczba postów: 40
Liczba wątków: 5
Dołączył: Dec 2018
12-05-2020, 17:55
(Ten post był ostatnio modyfikowany: 14-05-2020, 15:18 przez spaceport.
Powód edycji: dodany patch zegara
)
1 enter ucięło - na końcu bez niczego linie można wstawić .
Tabulator tez chyba zastępowany jest .
Zaś link do oryginału Zegara :
https://www.tt-forums.net/viewtopic.php?...=wallclock
dodatkowo tablica z rozkładem jazdy na stacji .
Poniżej tzw. extracting z JGR's z 2017, przerobiony dla wersji 1.8 i dodany polski język :
wallclockPL-r28002.zip (Rozmiar: 32.54 KB / Pobrań: 66)
Może zdarzyć się , że pojazd gdy jedzie niekompletnie załadowany na auto-rozkładzie, to kiedy przewiezie więcej, może mieć opóźnienia.
Wtedy wystarczy dodać więcej minut na stacji lub jeszcze raz włączyć automatyczny harmonogram (wypełnienie godzin odjazdów)
|
|
|
Zamknięcie forum OpenTTD Polska
|
| Forum OpenTTD Polska zostało wyłączone. Obecnie znajduje się tu archiwum dyskusji o dodatkach tworzonych przez naszą społeczność. |
| Po aktualne treści i dyskusje zapraszamy na nasz discord! :) |
|