Compare commits

...

19 Commits

Author SHA1 Message Date
rubidium 4729a88e52 (svn r13918) -Release: 0.6.2. 2008-08-01 23:52:22 +00:00
rubidium 5f7f86e3be (svn r13916) [0.6] -Fix: backport added a free too much. 2008-08-01 19:37:10 +00:00
rubidium 9878c58727 (svn r13915) [0.6] -Backport from trunk:
- Update: translations.
- Fix: Custom vehicle names from TTD(Patch) games were lost (r13884)
2008-08-01 19:20:16 +00:00
bjarni 39f8e1085f (svn r13914) [0.6] -Backport from trunk:
- Fix: allow OSX 10.5 to build universal binaries (r13849, r13852, r13863, r13892)
2008-08-01 18:49:52 +00:00
rubidium 467de8942b (svn r13906) [0.6] -Fix: eol-style of piglatin is wrong making language backport scripts barf. 2008-08-01 00:37:16 +00:00
rubidium 6054758c1d (svn r13871) [0.6] -Backport from trunk:
- Fix: NewGRF Callback 10 (visual effect and powered wagons setting) and powered wagons operation were not performed for articulated wagons [FS#2167] (r13870)
- Fix: In some cases the sprite cache could be filled with unremovable items [FS#2153] (r13869)
- Fix: Return of wrong parent scope of (NewGRF) industry variables (r13868)
- Fix: Loading of TTD(Patch) savegames from the command line did not work (r13859)
- Fix: Buffer overflow for too long filename supplied as '-g' parameter (r13858)
- Fix: Cargo type lookup was incorrect for NewGRF version 7 files without a translation table [FS#2157] (r13855)
- Fix: GetTownByTile() is only valid for houses and roads (r13851)
- Fix: Power, running cost and capacity of multiheaded engines were (too often) doubled in newspaper resp. offer window (r13844)
- Fix: FreeType may return a bitmap glyph even if a grey-scale glyph was requested [FS#2152] (r13832)
2008-07-29 22:37:54 +00:00
rubidium 22cda2f1b8 (svn r13828) [0.6] -Backport language updates from trunk (r13820) 2008-07-25 19:59:02 +00:00
rubidium a0f6275c3a (svn r13827) [0.6] -Backport from trunk:
- Fix: Building through the wrong side of a drive through station was allowed [FS#2166] (r13822)
- Fix: Check for vehicle length changes outside a depot (callback 0x11) and give a warning about that [FS#2150] (r13816)
- Fix: Remove the unique_id from the message that a client has joined as it is only exposes the unique_id more than needed (r13714)
2008-07-25 19:54:14 +00:00
rubidium c29c7f7932 (svn r13811) [0.6] -Backport from trunk:
- Fix: Several minor memory leaks. They only happened once per game (r13809, 13810)
- Fix: Checking for train waiting at other side of two-way signal was broken [FS#2162] (r13806)
- Fix: Some revision checking code was unintentionally disabled (r13776)
- Fix: Enforce the validity of a NetworkAction (chat packet) issued by a client (r13775)
- Fix: Selecting non-full length vehicles in the depot gui would place the "mouse pointer" out of the center of the vehicle making it hard to "aim" [FS#2147] (r13759)
2008-07-23 21:51:25 +00:00
rubidium 6097389437 (svn r13735) [0.6] -Backport from trunk:
- Fix: NewGRF rail continuation would always mark a tunnel on the same axis as connected, even when the tunnel faces the wrong direction (r13734)
- Fix: Assumption that non-north tiles of a house do not have the 1x1 building bit set was flawed with some NewGRFs. This caused the amount of houses to differ, which causes the town radii to differ, which causes desyncs when towns are expanded (r13729)
- Fix: Possible desync on the autorenew settings 20+ game years (i.e. 4.5+ hours) after a company was started (r13718)
- Fix: Any player could construct new companies [FS#2144] (r13716)
- Fix: Possible crash on creating a network packet (r13713)
- Fix: Enforce the length restrictions of company and president name in the commands too (r13712)
2008-07-19 12:23:14 +00:00
rubidium bafea078f2 (svn r13710) [0.6] -Prepare: for 0.6.2-RC1. 2008-07-16 16:05:52 +00:00
rubidium 5c97e3307c (svn r13709) [0.6] -Backport from trunk: language updates. 2008-07-16 10:35:01 +00:00
rubidium 3cd7a5959f (svn r13708) [0.6] -Backport from trunk:
- Fix: Possible buffer overflow in string truncation code (r13700)
- Fix: Handle SETX(Y) properly when truncating a string instead of ignoring it and returning a too long string (r13699)
- Fix: In some cases the (sound) mixer could overflow causing artefacts in the sound [FS#2120] (r13695)
- Fix: Do not rely on .tar files always ending with a block of zeros (r13693)
- Fix: Make sure a command is ran in the context of autoreplace or not (r13691)
2008-07-16 10:07:38 +00:00
rubidium 7da596b92d (svn r13690) [0.6] -Backport from trunk:
- Fix: Bus/truck forgetting go-to-depot order when entering a non-drivethrough road stop [FS#2117] (r13664)
- Fix: Only the front of a RV would be considered when determining to what cargos a vehicle can be refitted instead of all cargos [FS#2109] (r13622)
- Fix: RVs continueing onto next DT station when they are build adjacent to them [FS#2040] (r13581)
2008-07-09 19:39:57 +00:00
rubidium fbbd7bef6d (svn r13689) [0.6] -Backport from trunk:
- Fix: Server crashing when banning the rconning client (r13661)
- Fix: Incorrect usage of strtoul (r13508)
- Fix: Crash when one tries to raise the nothern corner of MP_VOID tiles (i.e. the southern corner of the tiles on the southern map edge) in the scenario editor [FS#2106] (r13624)
- Fix: Division by zero when one would press 'd' (skip order) when there's no order (r13409)
2008-07-09 19:30:44 +00:00
rubidium b95eb99c55 (svn r13688) [0.6] -Backport from trunk:
- Fix: If the first bridge can not be build for a given length, then none of the other bridges can. Effectively meaning that if someone replaces the first bridge with a bridge that can be only 3 tiles longs then only other bridges that can be 3 tiles long will be buildable, but only if they are 3 tiles long [FS#2100] (r13611)
- Fix: [OSX] 10.5 failed to switch to fullscreen (r13584)
- Fix: Properly count number of non-north housetiles [FS#2083] (r13518)
- Fix: Drawing of zoomed out partial sprites could cause deadlocks or crashes (r13502)
2008-07-09 19:20:50 +00:00
rubidium a68eee5f31 (svn r13687) [0.6] -Backport from trunk:
- Fix: Signals were not updated correctly when a player removed a non-existing track piece (r13626)
- Fix: Signal states could be propagated through waypoints built in orthogonal axis (r13589)
- Fix: Track was not removed on company bankrupcy when there was a ship on lower halftile (r13488)
- Fix: Let ships also navigate on half-tile sloped watery rail tiles (r13485)
2008-07-09 19:15:43 +00:00
rubidium 4f76d929c6 (svn r13686) [0.6] -Backport from trunk:
- Fix: Memory leak when NewGRFs got forcefully disabled and they defined GOTO labels (r13675)
- Fix: Crash when drawing a non-real sprite caused by NewGRF interference [FS#2127] (r13674)
- Fix: Disable static NewGRFs when non-static NewGRFs query them in the context of network games. This makes it impossible for static NewGRFs to disable non-static NewGRFs and 'bad' things happening because the non-static NewGRF doesn't know about the static NewGRF (r13576)
- Fix: First determine where to *exactly* build a house before asking a NewGRF whether the location is good instead of possibly moving the house a tile after the NewGRF said the location is good (r13489)
- Fix: Do not crash when resolving vehicle sprite groups with zero sprites (r13397)
- Fix: In the purchase list, CB36 for capacity was not called for the first part of rail and road vehicles (r13385)
2008-07-09 19:13:21 +00:00
rubidium 94ae5be42a (svn r13685) [0.6] -Backport from trunk:
- Fix: In the case that elrails and 'realistic' acceleration are disabled all electrified engines would have no power on load, until the vehicle got turned around, loaded or got into a depot [FS#2102] (r13681)
- Fix: Saving TTD imported games in recession failed due to wrong (and unneeded) type conversions in the saveload code [FS#2131] (r13679)
- Fix: Inactive companies from old (TTD) saves could be marked active in some cases, which then loads garbage in their statistics and such [FS#2126] (r13676)
- Fix: Desync when building electrified trains on a dedicated server that was started with electrification disabled [FS#2122] (r13673)
- Fix: Clear the memory for the new AI during the loading of a savegame so it does not try to execute commands generated in a different savegame, which could be resulting in the AI trying to give orders to stations that do not exist (r13505)
- Fix: Loading of very old OpenTTD savegames was broken (r13373)
2008-07-09 18:59:39 +00:00
104 changed files with 5618 additions and 4932 deletions
+67
View File
@@ -1,3 +1,70 @@
0.6.2 (2008-08-01)
------------------------------------------------------------------------
- Fix: Custom vehicle names from TTD(Patch) games were lost (r13884)
- Fix: NewGRF Callback 10 (visual effect and powered wagons setting) and powered wagons operation were not performed for articulated wagons [FS#2167] (r13870)
- Fix: In some cases the sprite cache could be filled with unremovable items [FS#2153] (r13869)
- Fix: Return of wrong parent scope of (NewGRF) industry variables (r13868)
- Fix: Loading of TTD(Patch) savegames from the command line did not work (r13859)
- Fix: Buffer overflow for too long filename supplied as '-g' parameter (r13858)
- Fix: Cargo type lookup was incorrect for NewGRF version 7 files without a translation table [FS#2157] (r13855)
- Fix: GetTownByTile() is only valid for houses and roads (r13851)
- Fix: Power, running cost and capacity of multiheaded engines were (too often) doubled in newspaper resp. offer window (r13844)
- Fix: FreeType may return a bitmap glyph even if a grey-scale glyph was requested [FS#2152] (r13832)
0.6.2-RC2 (2008-07-25)
------------------------------------------------------------------------
- Fix: Building through the wrong side of a drive through station was allowed [FS#2166] (r13822)
- Fix: Check for vehicle length changes outside a depot (callback 0x11) and give a warning about that [FS#2150] (r13816)
- Fix: Several minor memory leaks. They only happened once per game (r13809, 13810)
- Fix: Checking for train waiting at other side of two-way signal was broken [FS#2162] (r13806)
- Fix: Some revision checking code was unintentionally disabled (r13776)
- Fix: Enforce the validity of a NetworkAction (chat packet) issued by a client (r13775)
- Fix: Selecting non-full length vehicles in the depot gui would place the "mouse pointer" out of the center of the vehicle making it hard to "aim" [FS#2147] (r13759)
- Fix: NewGRF rail continuation would always mark a tunnel on the same axis as connected, even when the tunnel faces the wrong direction (r13734)
- Fix: Assumption that non-north tiles of a house do not have the 1x1 building bit set was flawed with some NewGRFs. This caused the amount of houses to differ, which causes the town radii to differ, which causes desyncs when towns are expanded (r13729)
- Fix: Possible desync on the autorenew settings 20+ game years (i.e. 4.5+ hours) after a company was started (r13718)
- Fix: Any player could construct new companies [FS#2144] (r13716)
- Fix: Remove the unique_id from the message that a client has joined as it is only exposes the unique_id more than needed (r13714)
- Fix: Possible crash on creating a network packet (r13713)
- Fix: Enforce the length restrictions of company and president name in the commands too (r13712)
0.6.2-RC1 (2008-07-16)
------------------------------------------------------------------------
- Fix: Possible buffer overflow in string truncation code (r13700)
- Fix: Handle SETX(Y) properly when truncating a string instead of ignoring it and returning a too long string (r13699)
- Fix: In some cases the (sound) mixer could overflow causing artefacts in the sound [FS#2120] (r13695)
- Fix: Do not rely on .tar files always ending with a block of zeros (r13693)
- Fix: Make sure a command is ran in the context of autoreplace or not (r13691)
- Fix: In the case that elrails and 'realistic' acceleration are disabled all electrified engines would have no power on load, until the vehicle got turned around, loaded or got into a depot [FS#2102]- Fix: Saving TTD imported games in recession failed due to wrong (and unneeded) type conversions in the saveload code [FS#2131] (r13679)
- Fix: Inactive companies from old (TTD) saves could be marked active in some cases, which then loads garbage in their statistics and such [FS#2126] (r13676)
- Fix: Memory leak when NewGRFs got forcefully disabled and they defined GOTO labels (r13675)
- Fix: Crash when drawing a non-real sprite caused by NewGRF interference [FS#2127] (r13674)
- Fix: Desync when building electrified trains on a dedicated server that was started with electrification disabled [FS#2122] (r13673)
- Fix: Bus/truck forgetting go-to-depot order when entering a non-drivethrough road stop [FS#2117] (r13664)
- Fix: Server crashing when banning the rconning client (r13661)
- Fix: Signals were not updated correctly when a player removed a non-existing track piece (r13626)
- Fix: Crash when one tries to raise the nothern corner of MP_VOID tiles (i.e. the southern corner of the tiles on the southern map edge) in the scenario editor [FS#2106] (r13624)
- Fix: Only the front of a RV would be considered when determining to what cargos a vehicle can be refitted instead of all cargos [FS#2109] (r13622)
- Fix: If the first bridge can not be build for a given length, then none of the other bridges can. Effectively meaning that if someone replaces the first bridge with a bridge that can be only 3 tiles longs then only other bridges that can be 3 tiles long will be buildable, but only if they are 3 tiles long [FS#2100] (r13611)
- Fix: Signal states could be propagated through waypoints built in orthogonal axis (r13589)
- Fix: [OSX] 10.5 failed to switch to fullscreen (r13584)
- Fix: RVs continueing onto next DT station when they are build adjacent to them [FS#2040] (r13581)
- Fix: Disable static NewGRFs when non-static NewGRFs query them in the context of network games. This makes it impossible for static NewGRFs to disable non-static NewGRFs and 'bad' things happening because the non-static NewGRF doesn't know about the static NewGRF (r13576)
- Fix: Properly count number of non-north housetiles [FS#2083] (r13518)
- Fix: Incorrect usage of strtoul (r13508)
- Fix: Clear the memory for the new AI during the loading of a savegame so it does not try to execute commands generated in a different savegame, which could be resulting in the AI trying to give orders to stations that do not exist (r13505)
- Fix: Drawing of zoomed out partial sprites could cause deadlocks or crashes (r13502)
- Fix: First determine where to *exactly* build a house before asking a NewGRF whether the location is good instead of possibly moving the house a tile after the NewGRF said the location is good (r13489)
- Fix: Track was not removed on company bankrupcy when there was a ship on lower halftile (r13488)
- Fix: Let ships also navigate on half-tile sloped watery rail tiles (r13485)
- Fix: Division by zero when one would press 'd' (skip order) when there's no order (r13409)
- Fix: Do not crash when resolving vehicle sprite groups with zero sprites (r13397)
- Fix: In the purchase list, CB36 for capacity was not called for the first part of rail and road vehicles (r13385)
- Fix: Loading of very old OpenTTD savegames was broken (r13373)
0.6.1 (2008-06-01)
------------------------------------------------------------------------
- Fix: Industry tiles would sometimes tell they need a 'level' slope when they do not want the slope (r13348)
+31 -20
View File
@@ -5,7 +5,7 @@ log() {
}
set_default() {
released_version=""
released_version="0.6.2"
ignore_extra_parameters="0"
# We set all kinds of defaults for params. Later on the user can override
@@ -40,8 +40,8 @@ set_default() {
enable_static="1"
enable_translator="0"
enable_unicode="1"
enable_assert="1"
enable_strip="0"
enable_assert="0"
enable_strip="1"
enable_universal="1"
enable_osx_g5="0"
enable_cocoa_quartz="1"
@@ -564,7 +564,6 @@ check_params() {
detect_png
detect_freetype
detect_fontconfig
detect_iconv
detect_pspconfig
detect_libtimidity
@@ -829,6 +828,10 @@ check_params() {
fi
fi
# "set_universal_binary_flags" needs to be before "detect_iconv"
set_universal_binary_flags
detect_iconv
if [ -n "$personal_dir" ]
then
log 1 "personal home directory... $personal_dir"
@@ -1188,11 +1191,6 @@ make_cflags_and_ldflags() {
CFLAGS="$CFLAGS -mtune=970 -mcpu=970 -mpowerpc-gpopt"
fi
if [ "$with_osx_sysroot" != "0" ] && [ "$with_osx_sysroot" != "3" ]; then
CFLAGS="$CFLAGS -isysroot /Developer/SDKs/MacOSX$with_osx_sysroot.sdk"
LDFLAGS="$LDFLAGS -Wl,-syslibroot,/Developer/SDKs/MacOSX$with_osx_sysroot.sdk"
fi
if [ -n "$personal_dir" ]; then
CFLAGS="$CFLAGS -DWITH_PERSONAL_DIR -DPERSONAL_DIR=\\\\\"$personal_dir\\\\\""
fi
@@ -1409,6 +1407,26 @@ check_lipo() {
fi
}
set_universal_binary_flags() {
if [ -z "$osx_target_version" ]; then
# if we don't speficy a target version then we presume 10.4
osx_target_version=10.4
fi
if [ "$osx_target_version" = "10.4" ]; then
# Apple added u to 10.4 to show that it's universal
# There is a version without the u, but it's only in Xcode 2.0 and people should use the free update to 2.5
osx_sysroot_version=10.4u
else
osx_sysroot_version="$osx_target_version"
fi
if [ "$with_osx_sysroot" = "3" ]; then
CFLAGS="$CFLAGS -isysroot /Developer/SDKs/MacOSX$osx_sysroot_version.sdk -mmacosx-version-min=$osx_target_version"
LDFLAGS="$LDFLAGS -Wl,-syslibroot,/Developer/SDKs/MacOSX$osx_sysroot_version.sdk -mmacosx-version-min=$osx_target_version"
fi
}
check_direct_music() {
echo "
#include <windows.h>
@@ -2129,6 +2147,9 @@ detect_cputype() {
}
make_sed() {
T_CFLAGS="$CFLAGS"
T_LDFLAGS="$LDFLAGS"
# We check here if we are PPC, because then we need to enable FOUR_BYTE_BOOL
# We do this here, and not sooner, so universal builds also have this
# automatically correct
@@ -2137,17 +2158,7 @@ make_sed() {
# bytes too, but only for PPC.
ppc=`$cc_host -dumpmachine | egrep "powerpc|ppc"`
if [ -n "$ppc" ]; then
T_CFLAGS="$CFLAGS -DFOUR_BYTE_BOOL"
osx_sysroot_version=10.4u
else
T_CFLAGS="$CFLAGS"
osx_sysroot_version=10.4u
fi
T_LDFLAGS="$LDFLAGS"
if [ "$with_osx_sysroot" = "3" ]; then
T_CFLAGS="$T_CFLAGS -isysroot /Developer/SDKs/MacOSX$osx_sysroot_version.sdk"
T_LDFLAGS="$T_LDFLAGS -Wl,-syslibroot,/Developer/SDKs/MacOSX$osx_sysroot_version.sdk"
T_CFLAGS="$T_CFLAGS -DFOUR_BYTE_BOOL"
fi
SRC_OBJS_DIR="$BASE_SRC_OBJS_DIR/$OBJS_SUBDIR"
+17 -3
View File
@@ -1,28 +1,37 @@
.\" Hey, EMACS: -*- nroff -*-
.\" Please adjust this date whenever revising the manpage.
.Dd Sep 15, 2007
.Dd Jul 20, 2008
.Dt OPENTTD 6
.Sh NAME
.Nm openttd
.Nd An open source clone of the Microprose game "Transport Tycoon Deluxe"
.Sh SYNOPSIS
.Nm
.Op Fl Defhi
.Op Fl Defhix
.Op Fl G Ar seed
.Op Fl b Ar blitter
.Op Fl d Ar [level | cat=lvl[, ...]]
.Op Fl c Ar config_file
.Op Fl g Ar [savegame]
.Op Fl l Ar host[:port]
.Op Fl n Ar host[:port][#player]
.Op Fl r Ar widthxheight
.Op Fl t Ar date
.Op Fl m Ar driver
.Op Fl s Ar driver
.Op Fl v Ar driver
.Op Fl b Ar blitter
.Sh OPTIONS
.Bl -tag -width ".Fl n Ar host[:port][#player]"
.It Fl D
.It Fl D Ar [host][:port]
Start a dedicated server
.It Fl G Ar seed
Seed the pseudo random number generator
.It Fl b Ar blitter
Set the blitter, see
.Fl h
.It Fl c Ar config_file
Use 'config_file' instead of 'openttd.cfg'
.It Fl d Ar [level]
Set debug verbosity for all categories to
.Ar level
@@ -42,6 +51,9 @@ at start or start a new game if omitted
Display a summary of all options and available drivers
.It Fl i
Force to use the DOS palette (use this if you see a lot of magenta)
.It Fl l Ar host[:port]
Redirect DEBUG(), See
.Fl D
.It Fl m Ar driver
Set the music driver, see
.Fl h
@@ -57,6 +69,8 @@ Set the starting date
.It Fl v Ar driver
Set the video driver, see
.Fl h
.It Fl x
Do not automatically save to config file on exit
.El
.Sh SEE ALSO
http://wiki.openttd.org/, http://www.openttd.org
+3 -3
View File
@@ -11,16 +11,16 @@ by the number below on http://bugs.openttd.org.
If the bug report is closed, it has been fixed, which then can be verified
in the latest SVN version of /trunk.
Bugs for 0.6.1
Bugs for 0.6.2
------------------------------------------------------------------------
URL: http://bugs.openttd.org
- 2129 Strings from message boxes could sometimes change (e.g. the screenshot filename)
- 2085 Vehicle list of shared vehicles without orders not possible
- 1944 Road vehicles not picking empty drivethrough platform
- 1923 Unique names not always enforced
- 1891 Go to depot for servicing is forgotten
- 1890 Airplanes copy helipcopters goto heliport order
- 1885 Almost all unserved industries die in big maps
- 1868 In depot, cannot move wagon from another line before first wagon in a wagon-only line
- 1858 Industry legend in small map overwrites buttons
- 1852 Minor tram reversing glitches
- 1802 Path with space in configure fails
+18
View File
@@ -1,3 +1,21 @@
openttd (0.6.2-1) unstable; urgency=low
* New upstream release.
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Fri, 01 Aug 2008 21:25:00 +0200
openttd (0.6.2~RC2-1) unstable; urgency=low
* New upstream release.
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Fri, 25 Jul 2008 22:00:00 +0200
openttd (0.6.2~RC1-1) unstable; urgency=low
* New upstream release.
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Wed, 16 Jul 2008 19:45:00 +0200
openttd (0.6.1-1) unstable; urgency=low
* New upstream release.
+2 -2
View File
@@ -1,6 +1,6 @@
!define APPNAME "OpenTTD" ; Define application name
!define APPVERSION "0.6.1" ; Define application version
!define INSTALLERVERSION 48 ; NEED TO UPDATE THIS FOR EVERY RELEASE!!!
!define APPVERSION "0.6.2" ; Define application version
!define INSTALLERVERSION 51 ; NEED TO UPDATE THIS FOR EVERY RELEASE!!!
!define APPURLLINK "http://www.openttd.org"
!define APPNAMEANDVERSION "${APPNAME} ${APPVERSION}"
+1 -1
View File
@@ -239,7 +239,7 @@ Function IsCachedVersion(version)
End Function
Dim version
version = DetermineSVNVersion
version = "0.6.2"
If Not (IsCachedVersion(version) And FSO.FileExists("../src/rev.cpp") And FSO.FileExists("../src/ottdres.rc")) Then
UpdateFiles version
End If
+2 -2
View File
@@ -61,7 +61,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -272,7 +272,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
+2 -2
View File
@@ -61,7 +61,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -272,7 +272,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
+2 -2
View File
@@ -62,7 +62,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -270,7 +270,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
+2 -2
View File
@@ -62,7 +62,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -270,7 +270,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
+2 -2
View File
@@ -1,6 +1,6 @@
OpenTTD README
Last updated: 2008-06-01
Release version: 0.6.1
Last updated: 2008-08-01
Release version: 0.6.2
------------------------------------------------------------------------
+9 -5
View File
@@ -10,6 +10,7 @@
#include "../player_base.h"
#include "ai.h"
#include "default/default.h"
#include "trolly/trolly.h"
#include "../signal_func.h"
AIStruct _ai;
@@ -223,6 +224,13 @@ void AI_PlayerDied(PlayerID player)
{
/* Called if this AI died */
_ai_player[player].active = false;
if (_players_ainew[player].pathfinder == NULL) return;
AyStarMain_Free(_players_ainew[player].pathfinder);
delete _players_ainew[player].pathfinder;
_players_ainew[player].pathfinder = NULL;
}
/**
@@ -244,9 +252,5 @@ void AI_Initialize()
*/
void AI_Uninitialize()
{
const Player* p;
FOR_ALL_PLAYERS(p) {
if (p->is_active && p->is_ai) AI_PlayerDied(p->index);
}
for (PlayerID p = PLAYER_FIRST; p < MAX_PLAYERS; p++) AI_PlayerDied(p);
}
+2 -2
View File
@@ -271,7 +271,7 @@ uint16 AircraftDefaultCargoCapacity(CargoID cid, const AircraftVehicleInfo *avi)
* @param tile tile of depot where aircraft is built
* @param flags for command
* @param p1 aircraft type being built (engine)
* @param p2 bit 0 when set, the unitnumber will be 0, otherwise it will be a free number
* @param p2 unused
* return result of operation. Could be cost, error
*/
CommandCost CmdBuildAircraft(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
@@ -296,7 +296,7 @@ CommandCost CmdBuildAircraft(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
return_cmd_error(STR_00E1_TOO_MANY_VEHICLES_IN_GAME);
}
UnitID unit_num = HasBit(p2, 0) ? 0 : GetFreeUnitNumber(VEH_AIRCRAFT);
UnitID unit_num = (flags & DC_AUTOREPLACE) ? 0 : GetFreeUnitNumber(VEH_AIRCRAFT);
if (unit_num > _patches.max_aircraft)
return_cmd_error(STR_00E1_TOO_MANY_VEHICLES_IN_GAME);
+2 -2
View File
@@ -42,11 +42,11 @@ uint16 *GetCapacityOfArticulatedParts(EngineID engine, VehicleType type)
if (type == VEH_TRAIN) {
const RailVehicleInfo *rvi = RailVehInfo(engine);
capacity[rvi->cargo_type] = rvi->capacity;
capacity[rvi->cargo_type] = GetEngineProperty(engine, 0x14, rvi->capacity);
if (rvi->railveh_type == RAILVEH_MULTIHEAD) capacity[rvi->cargo_type] += rvi->capacity;
} else if (type == VEH_ROAD) {
const RoadVehicleInfo *rvi = RoadVehInfo(engine);
capacity[rvi->cargo_type] = rvi->capacity;
capacity[rvi->cargo_type] = GetEngineProperty(engine, 0x0F, rvi->capacity);
}
if (!HasBit(EngInfo(engine)->callbackmask, CBM_VEHICLE_ARTIC_ENGINE)) return capacity;
+4 -4
View File
@@ -58,7 +58,7 @@ static void MoveVehicleCargo(Vehicle *dest, Vehicle *source)
* the complete train, which is without the weight of cargo we just
* moved back into some (of the) new wagon(s).
*/
if (dest->type == VEH_TRAIN) TrainConsistChanged(dest->First());
if (dest->type == VEH_TRAIN) TrainConsistChanged(dest->First(), true);
}
static bool VerifyAutoreplaceRefitForOrders(const Vehicle *v, const EngineID engine_type)
@@ -127,7 +127,7 @@ static CargoID GetNewCargoTypeForReplace(Vehicle *v, EngineID engine_type)
* @param flags is the flags to use when calling DoCommand(). Mainly DC_EXEC counts
* @return value is cost of the replacement or CMD_ERROR
*/
static CommandCost ReplaceVehicle(Vehicle **w, byte flags, Money total_cost)
static CommandCost ReplaceVehicle(Vehicle **w, uint32 flags, Money total_cost)
{
CommandCost cost;
CommandCost sell_value;
@@ -157,7 +157,7 @@ static CommandCost ReplaceVehicle(Vehicle **w, byte flags, Money total_cost)
* We take it back if building fails or when we really sell the old engine */
SubtractMoneyFromPlayer(sell_value);
cost = DoCommand(old_v->tile, new_engine_type, 3, flags, GetCmdBuildVeh(old_v));
cost = DoCommand(old_v->tile, new_engine_type, 0, flags | DC_AUTOREPLACE, GetCmdBuildVeh(old_v));
if (CmdFailed(cost)) {
/* Take back the money we just gave the player */
sell_value.MultiplyCost(-1);
@@ -246,7 +246,7 @@ static CommandCost ReplaceVehicle(Vehicle **w, byte flags, Money total_cost)
if (next_veh != NULL) {
/* Verify that the wagons can be placed on the engine in question.
* This is done by building an engine, test if the wagons can be added and then sell the test engine. */
DoCommand(old_v->tile, new_engine_type, 3, DC_EXEC, GetCmdBuildVeh(old_v));
DoCommand(old_v->tile, new_engine_type, 0, DC_EXEC | DC_AUTOREPLACE, GetCmdBuildVeh(old_v));
Vehicle *temp = GetVehicle(_new_vehicle_id);
tmp_move = DoCommand(0, (temp->index << 16) | next_veh->index, 1, 0, CMD_MOVE_RAIL_VEHICLE);
DoCommand(0, temp->index, 0, DC_EXEC, GetCmdSellVeh(old_v));
+7
View File
@@ -65,6 +65,13 @@ public:
{
const char *default_blitter = "8bpp-optimized";
#if defined(__APPLE__)
/* MacOS X 10.5 removed 8bpp fullscreen support.
* Because of this we will pick 32bpp by default */
if (MacOSVersionIsAtLeast(10, 5, 0)) {
default_blitter = "32bpp-anim";
}
#endif /* defined(__APPLE__) */
if (GetBlitters().size() == 0) return NULL;
const char *bname = (StrEmpty(name)) ? default_blitter : name;
+1 -1
View File
@@ -44,7 +44,7 @@ static inline const BridgeSpec *GetBridgeSpec(BridgeType i)
void DrawBridgeMiddle(const TileInfo *ti);
bool CheckBridge_Stuff(BridgeType bridge_type, uint bridge_len);
bool CheckBridge_Stuff(BridgeType bridge_type, uint bridge_len, uint32 flags = 0);
int CalcBridgeLenCostFactor(int x);
void ResetBridges();
+9 -8
View File
@@ -264,14 +264,15 @@ enum {
* This enums defines some flags which can be used for the commands.
*/
enum {
DC_EXEC = 0x01, ///< execute the given command
DC_AUTO = 0x02, ///< don't allow building on structures
DC_QUERY_COST = 0x04, ///< query cost only, don't build.
DC_NO_WATER = 0x08, ///< don't allow building on water
DC_NO_RAIL_OVERLAP = 0x10, ///< don't allow overlap of rails (used in buildrail)
DC_AI_BUILDING = 0x20, ///< special building rules for AI
DC_NO_TOWN_RATING = 0x40, ///< town rating does not disallow you from building
DC_BANKRUPT = 0x80, ///< company bankrupts, skip money check, skip vehicle on tile check in some cases
DC_EXEC = 0x001, ///< execute the given command
DC_AUTO = 0x002, ///< don't allow building on structures
DC_QUERY_COST = 0x004, ///< query cost only, don't build.
DC_NO_WATER = 0x008, ///< don't allow building on water
DC_NO_RAIL_OVERLAP = 0x010, ///< don't allow overlap of rails (used in buildrail)
DC_AI_BUILDING = 0x020, ///< special building rules for AI
DC_NO_TOWN_RATING = 0x040, ///< town rating does not disallow you from building
DC_BANKRUPT = 0x080, ///< company bankrupts, skip money check, skip vehicle on tile check in some cases
DC_AUTOREPLACE = 0x100, ///< autoreplace/autorenew is in progress
};
/**
+1 -1
View File
@@ -426,9 +426,9 @@ DEF_CONSOLE_CMD(ConBan)
}
if (ci != NULL) {
IConsolePrint(_icolour_def, "Client banned");
banip = inet_ntoa(*(struct in_addr *)&ci->client_ip);
SEND_COMMAND(PACKET_SERVER_ERROR)(NetworkFindClientStateFromIndex(index), NETWORK_ERROR_KICKED);
IConsolePrint(_icolour_def, "Client banned");
} else {
IConsolePrint(_icolour_def, "Client not online, banned IP");
}
+14
View File
@@ -440,6 +440,20 @@ static void DepotClick(Window *w, int x, int y)
WP(w, depot_d).sel = v->index;
SetWindowDirty(w);
SetObjectToPlaceWnd(image, GetVehiclePalette(v), VHM_DRAG, w);
switch (v->type) {
case VEH_TRAIN:
_cursor.short_vehicle_offset = 16 - v->u.rail.cached_veh_length * 2;
break;
case VEH_ROAD:
_cursor.short_vehicle_offset = 16 - v->u.road.cached_veh_length * 2;
break;
default:
_cursor.short_vehicle_offset = 0;
break;
}
}
}
break;
+1 -1
View File
@@ -2011,7 +2011,7 @@ static const SaveLoad _economy_desc[] = {
SLE_CONDVAR(Economy, max_loan_unround, SLE_FILE_I32 | SLE_VAR_I64, 0, 64),
SLE_CONDVAR(Economy, max_loan_unround, SLE_INT64, 65, SL_MAX_VERSION),
SLE_CONDVAR(Economy, max_loan_unround_fract, SLE_UINT16, 70, SL_MAX_VERSION),
SLE_VAR(Economy, fluct, SLE_FILE_I16 | SLE_VAR_I32),
SLE_VAR(Economy, fluct, SLE_INT16),
SLE_VAR(Economy, interest_rate, SLE_UINT8),
SLE_VAR(Economy, infl_amount, SLE_UINT8),
SLE_VAR(Economy, infl_amount_pr, SLE_UINT8),
+1 -1
View File
@@ -15,7 +15,7 @@ struct Economy {
Money max_loan; ///< Maximum possible loan
Money max_loan_unround; ///< Economy fluctuation status
uint16 max_loan_unround_fract; ///< Fraction of the unrounded max loan
int fluct;
int16 fluct;
byte interest_rate; ///< Interest
byte infl_amount; ///< inflation amount
byte infl_amount_pr; ///< "floating" portion of inflation
+6 -3
View File
@@ -502,10 +502,13 @@ int32 SettingsDisableElrail(int32 p1)
}
}
/* setup total power for trains */
/* Fix the total power and acceleration for trains */
FOR_ALL_VEHICLES(v) {
/* power is cached only for front engines */
if (v->type == VEH_TRAIN && IsFrontEngine(v)) TrainPowerChanged(v);
/* power and acceleration is cached only for front engines */
if (v->type == VEH_TRAIN && IsFrontEngine(v)) {
TrainPowerChanged(v);
UpdateTrainAcceleration(v);
}
}
FOR_ALL_PLAYERS(p) p->avail_railtypes = GetPlayerRailtypes(p->index);
+29 -15
View File
@@ -14,6 +14,7 @@
#include "variables.h"
#include "newgrf_engine.h"
#include "strings_func.h"
#include "articulated_vehicles.h"
#include "table/strings.h"
#include "table/sprites.h"
@@ -116,21 +117,34 @@ void ShowEnginePreviewWindow(EngineID engine)
AllocateWindowDescFront(&_engine_preview_desc, engine);
}
static uint GetTotalCapacityOfArticulatedParts(EngineID engine, VehicleType type)
{
uint total = 0;
uint16 *cap = GetCapacityOfArticulatedParts(engine, type);
for (uint c = 0; c < NUM_CARGO; c++) {
total += cap[c];
}
return total;
}
static void DrawTrainEngineInfo(EngineID engine, int x, int y, int maxw)
{
const RailVehicleInfo *rvi = RailVehInfo(engine);
int multihead = (rvi->railveh_type == RAILVEH_MULTIHEAD) ? 1 : 0;
SetDParam(0, (_price.build_railvehicle >> 3) * rvi->base_cost >> 5);
SetDParam(2, rvi->max_speed * 10 / 16);
SetDParam(3, rvi->power << multihead);
SetDParam(1, rvi->weight << multihead);
SetDParam(0, (_price.build_railvehicle >> 3) * GetEngineProperty(engine, 0x17, rvi->base_cost) >> 5);
SetDParam(2, GetEngineProperty(engine, 0x09, rvi->max_speed) * 10 / 16);
SetDParam(3, GetEngineProperty(engine, 0x0B, rvi->power));
SetDParam(1, GetEngineProperty(engine, 0x16, rvi->weight) << multihead);
SetDParam(4, rvi->running_cost * GetPriceByIndex(rvi->running_cost_class) >> 8 << multihead);
SetDParam(4, GetEngineProperty(engine, 0x0D, rvi->running_cost) * GetPriceByIndex(rvi->running_cost_class) >> 8);
if (rvi->capacity != 0) {
uint capacity = GetTotalCapacityOfArticulatedParts(engine, VEH_TRAIN);
if (capacity != 0) {
SetDParam(5, rvi->cargo_type);
SetDParam(6, rvi->capacity << multihead);
SetDParam(6, capacity);
} else {
SetDParam(5, CT_INVALID);
}
@@ -140,11 +154,11 @@ static void DrawTrainEngineInfo(EngineID engine, int x, int y, int maxw)
static void DrawAircraftEngineInfo(EngineID engine, int x, int y, int maxw)
{
const AircraftVehicleInfo *avi = AircraftVehInfo(engine);
SetDParam(0, (_price.aircraft_base >> 3) * avi->base_cost >> 5);
SetDParam(0, (_price.aircraft_base >> 3) * GetEngineProperty(engine, 0x0B, avi->base_cost) >> 5);
SetDParam(1, avi->max_speed * 10 / 16);
SetDParam(2, avi->passenger_capacity);
SetDParam(3, avi->mail_capacity);
SetDParam(4, avi->running_cost * _price.aircraft_running >> 8);
SetDParam(4, GetEngineProperty(engine, 0x0E, avi->running_cost) * _price.aircraft_running >> 8);
DrawStringMultiCenter(x, y, STR_A02E_COST_MAX_SPEED_CAPACITY, maxw);
}
@@ -153,11 +167,11 @@ static void DrawRoadVehEngineInfo(EngineID engine, int x, int y, int maxw)
{
const RoadVehicleInfo *rvi = RoadVehInfo(engine);
SetDParam(0, (_price.roadveh_base >> 3) * rvi->base_cost >> 5);
SetDParam(0, (_price.roadveh_base >> 3) * GetEngineProperty(engine, 0x11, rvi->base_cost) >> 5);
SetDParam(1, rvi->max_speed * 10 / 32);
SetDParam(2, rvi->running_cost * GetPriceByIndex(rvi->running_cost_class) >> 8);
SetDParam(3, rvi->cargo_type);
SetDParam(4, rvi->capacity);
SetDParam(4, GetTotalCapacityOfArticulatedParts(engine, VEH_ROAD));
DrawStringMultiCenter(x, y, STR_902A_COST_SPEED_RUNNING_COST, maxw);
}
@@ -165,11 +179,11 @@ static void DrawRoadVehEngineInfo(EngineID engine, int x, int y, int maxw)
static void DrawShipEngineInfo(EngineID engine, int x, int y, int maxw)
{
const ShipVehicleInfo *svi = ShipVehInfo(engine);
SetDParam(0, svi->base_cost * (_price.ship_base >> 3) >> 5);
SetDParam(1, svi->max_speed * 10 / 32);
SetDParam(0, GetEngineProperty(engine, 0x0A, svi->base_cost) * (_price.ship_base >> 3) >> 5);
SetDParam(1, GetEngineProperty(engine, 0x0B, svi->max_speed) * 10 / 32);
SetDParam(2, svi->cargo_type);
SetDParam(3, svi->capacity);
SetDParam(4, svi->running_cost * _price.ship_running >> 8);
SetDParam(3, GetEngineProperty(engine, 0x0D, svi->capacity));
SetDParam(4, GetEngineProperty(engine, 0x0F, svi->running_cost) * _price.ship_running >> 8);
DrawStringMultiCenter(x, y, STR_982E_COST_MAX_SPEED_CAPACITY, maxw);
}
+10 -10
View File
@@ -330,7 +330,7 @@ FILE *FioFOpenFileSp(const char *filename, const char *mode, Searchpath sp, Subd
FILE *FioFOpenFileTar(TarFileListEntry *entry, size_t *filesize)
{
FILE *f = fopen(entry->tar->filename, "rb");
FILE *f = fopen(entry->tar_filename, "rb");
assert(f != NULL);
fseek(f, entry->position, SEEK_SET);
@@ -470,9 +470,8 @@ static bool TarListAddFile(const char *filename)
FILE *f = fopen(filename, "rb");
assert(f != NULL);
TarListEntry *tar_entry = MallocT<TarListEntry>(1);
tar_entry->filename = strdup(filename);
_tar_list.insert(TarList::value_type(filename, tar_entry));
const char *dupped_filename = strdup(filename);
_tar_list[filename].filename = dupped_filename;
TarHeader th;
char buf[sizeof(th.name) + 1], *end;
@@ -483,9 +482,10 @@ static bool TarListAddFile(const char *filename)
char empty[512];
memset(&empty[0], 0, sizeof(empty));
while (!feof(f)) {
fread(&th, 1, 512, f);
pos += 512;
for (;;) { // Note: feof() always returns 'false' after 'fseek()'. Cool, isn't it?
size_t num_bytes_read = fread(&th, 1, 512, f);
if (num_bytes_read != 512) break;
pos += num_bytes_read;
/* Check if we have the new tar-format (ustar) or the old one (a lot of zeros after 'link' field) */
if (strncmp(th.magic, "ustar", 5) != 0 && memcmp(&th.magic, &empty[0], 512 - offsetof(TarHeader, magic)) != 0) {
@@ -522,9 +522,9 @@ static bool TarListAddFile(const char *filename)
/* Store this entry in the list */
TarFileListEntry entry;
entry.tar = tar_entry;
entry.size = skip;
entry.position = pos;
entry.tar_filename = dupped_filename;
entry.size = skip;
entry.position = pos;
/* Force lowercase */
strtolower(name);
+4 -2
View File
@@ -67,13 +67,15 @@ extern const char *_searchpaths[NUM_SEARCHPATHS];
*/
struct TarListEntry {
const char *filename;
TarListEntry() : filename(NULL) {}
~TarListEntry() { free((void*)this->filename); }
};
struct TarFileListEntry {
TarListEntry *tar;
const char *tar_filename;
int size;
int position;
};
typedef std::map<std::string, TarListEntry *> TarList;
typedef std::map<std::string, TarListEntry> TarList;
typedef std::map<std::string, TarFileListEntry> TarFileList;
extern TarList _tar_list;
extern TarFileList _tar_filelist;
+3 -3
View File
@@ -308,12 +308,12 @@ static FiosItem *FiosGetFileList(int mode, fios_getlist_callback_proc *callback_
* @param mode Save/load mode.
* @param file Name of the file to check.
* @param ext A pointer to the extension identifier inside file
* @param title Buffer if a callback wants to lookup the title of the file
* @param title Buffer if a callback wants to lookup the title of the file; NULL to skip the lookup
* @return a FIOS_TYPE_* type of the found file, FIOS_TYPE_INVALID if not a savegame
* @see FiosGetFileList
* @see FiosGetSavegameList
*/
static byte FiosGetSavegameListCallback(int mode, const char *file, const char *ext, char *title)
byte FiosGetSavegameListCallback(int mode, const char *file, const char *ext, char *title)
{
/* Show savegame files
* .SAV OpenTTD saved game
@@ -325,7 +325,7 @@ static byte FiosGetSavegameListCallback(int mode, const char *file, const char *
if (mode == SLD_LOAD_GAME || mode == SLD_LOAD_SCENARIO) {
if (strcasecmp(ext, ".ss1") == 0 || strcasecmp(ext, ".sv1") == 0 ||
strcasecmp(ext, ".sv2") == 0) {
GetOldSaveGameName(title, _fios_path, file);
if (title != NULL) GetOldSaveGameName(title, _fios_path, file);
return FIOS_TYPE_OLDFILE;
}
}
+3 -1
View File
@@ -42,7 +42,7 @@ enum FileType {
FT_HEIGHTMAP, ///< heightmap file
};
enum {
enum FiosType {
FIOS_TYPE_DRIVE = 0,
FIOS_TYPE_PARENT = 1,
FIOS_TYPE_DIR = 2,
@@ -99,6 +99,8 @@ bool FiosDelete(const char *name);
void FiosMakeSavegameName(char *buf, const char *name, size_t size);
/* Allocate a new FiosItem */
FiosItem *FiosAlloc();
/* Determines type of savegame (or tells it is not a savegame) */
byte FiosGetSavegameListCallback(int mode, const char *file, const char *ext, char *title);
int CDECL compare_FiosItems(const void *a, const void *b);
+3
View File
@@ -415,6 +415,9 @@ const Sprite *GetGlyph(FontSize size, WChar key)
FT_Load_Char(face, key, FT_LOAD_DEFAULT);
FT_Render_Glyph(face->glyph, aa ? FT_RENDER_MODE_NORMAL : FT_RENDER_MODE_MONO);
/* Despite requesting a normal glyph, FreeType may have returned a bitmap */
aa = (slot->bitmap.palette_mode == FT_PIXEL_MODE_GRAY);
/* Add 1 pixel for the shadow on the medium font. Our sprite must be at least 1x1 pixel */
width = max(1, slot->bitmap.width + (size == FS_NORMAL));
height = max(1, slot->bitmap.rows + (size == FS_NORMAL));
+1 -1
View File
@@ -473,7 +473,7 @@ static void GenerateLandscapeWndProc(Window *w, WindowEvent *e)
* (use random seed) it should not be possible to be
* entered into the input field; the generate seed
* button can be used instead. */
_patches_newgame.generation_seed = minu(strtoul(_genseed_buffer, NULL, sizeof(_genseed_buffer) - 1), MAX_UVALUE(uint32) - 1);
_patches_newgame.generation_seed = minu(strtoul(_genseed_buffer, NULL, 10), MAX_UVALUE(uint32) - 1);
break;
case WE_DROPDOWN_SELECT:
+20 -11
View File
@@ -230,15 +230,20 @@ static int TruncateString(char *str, int maxw)
w += GetCharacterWidth(size, c);
if (w >= maxw) {
/* string got too big... insert dotdotdot */
ddd_pos[0] = ddd_pos[1] = ddd_pos[2] = '.';
ddd_pos[3] = '\0';
/* string got too big... insert dotdotdot, but make sure we do not
* print anything beyond the string termination character. */
for (int i = 0; *ddd_pos != '\0' && i < 3; i++, ddd_pos++) *ddd_pos = '.';
*ddd_pos = '\0';
return ddd_w;
}
} else {
if (c == SCC_SETX) str++;
else if (c == SCC_SETXY) str += 2;
else if (c == SCC_TINYFONT) {
if (c == SCC_SETX) {
w = *str;
str++;
} else if (c == SCC_SETXY) {
w = *str;
str += 2;
} else if (c == SCC_TINYFONT) {
size = FS_SMALL;
ddd = GetCharacterWidth(size, '.') * 3;
} else if (c == SCC_BIGFONT) {
@@ -669,7 +674,7 @@ void DrawSprite(SpriteID img, SpriteID pal, int x, int y, const SubSprite *sub)
}
}
static inline void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub)
static void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub)
{
const DrawPixelInfo *dpi = _cur_dpi;
Blitter::BlitterParams bp;
@@ -695,8 +700,8 @@ static inline void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMod
bp.height = UnScaleByZoom(sprite->height - clip_top - clip_bottom, dpi->zoom);
bp.top = 0;
bp.left = 0;
bp.skip_left = UnScaleByZoom(clip_left, dpi->zoom);
bp.skip_top = UnScaleByZoom(clip_top, dpi->zoom);
bp.skip_left = UnScaleByZoomLower(clip_left, dpi->zoom);
bp.skip_top = UnScaleByZoomLower(clip_top, dpi->zoom);
x += ScaleByZoom(bp.skip_left, dpi->zoom);
y += ScaleByZoom(bp.skip_top, dpi->zoom);
@@ -747,6 +752,9 @@ static inline void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMod
if (bp.width <= 0) return;
}
assert(bp.skip_left + bp.width <= UnScaleByZoom(sprite->width, dpi->zoom));
assert(bp.skip_top + bp.height <= UnScaleByZoom(sprite->height, dpi->zoom));
BlitterFactoryBase::GetCurrentBlitter()->Draw(&bp, mode, dpi->zoom);
}
@@ -957,7 +965,7 @@ void DrawMouseCursor()
}
w = _cursor.size.x;
x = _cursor.pos.x + _cursor.offs.x;
x = _cursor.pos.x + _cursor.offs.x + _cursor.short_vehicle_offset;
if (x < 0) {
w += x;
x = 0;
@@ -985,7 +993,7 @@ void DrawMouseCursor()
/* Draw cursor on screen */
_cur_dpi = &_screen;
DrawSprite(_cursor.sprite, _cursor.pal, _cursor.pos.x, _cursor.pos.y);
DrawSprite(_cursor.sprite, _cursor.pal, _cursor.pos.x + _cursor.short_vehicle_offset, _cursor.pos.y);
_video_driver->MakeDirty(_cursor.draw_pos.x, _cursor.draw_pos.y, _cursor.draw_size.x, _cursor.draw_size.y);
@@ -1236,6 +1244,7 @@ static void SetCursorSprite(SpriteID cursor, SpriteID pal)
cv->offs.y = p->y_offs;
cv->dirty = true;
cv->short_vehicle_offset = 0;
}
static void SwitchAnimatedCursor()
+1
View File
@@ -112,6 +112,7 @@ struct AnimCursor {
struct CursorVars {
Point pos, size, offs, delta; ///< position, size, offset from top-left, and movement
Point draw_pos, draw_size; ///< position and size bounding-box for drawing
int short_vehicle_offset; ///< offset of the X for short vehicles
SpriteID sprite; ///< current image of cursor
SpriteID pal;
+1 -2
View File
@@ -333,8 +333,7 @@ static Foundation GetFoundation_Industry(TileIndex tile, Slope tileh)
IndustryGfx gfx = GetIndustryGfx(tile);
/* For NewGRF industry tiles we might not be drawing a foundation. We need to
* account for this, otherwise we might be applying a FOUNDATION_LEVELED
* on a steep slope which is not allowed. Furthermore other structures should
* account for this, as other structures should
* draw the wall of the foundation in this case.
*/
if (gfx >= NEW_INDUSTRYTILEOFFSET) {
+5 -1
View File
@@ -76,8 +76,9 @@ uint ApplyFoundationToSlope(Foundation f, Slope *s)
if (!IsFoundation(f)) return 0;
if (IsLeveledFoundation(f)) {
uint dz = TILE_HEIGHT + (IsSteepSlope(*s) ? TILE_HEIGHT : 0);
*s = SLOPE_FLAT;
return TILE_HEIGHT;
return dz;
}
if (f != FOUNDATION_STEEP_BOTH && IsNonContinuousFoundation(f)) {
@@ -384,6 +385,9 @@ void DrawFoundation(TileInfo *ti, Foundation f)
AddSortableSpriteToDraw(inclined_base + inclined, PAL_NONE, ti->x, ti->y, 16, 16, 1, ti->z);
OffsetGroundSprite(31, 9);
} else if (IsLeveledFoundation(f)) {
AddSortableSpriteToDraw(leveled_base + SlopeWithOneCornerRaised(highest_corner), PAL_NONE, ti->x, ti->y, 16, 16, 7, ti->z - TILE_HEIGHT);
OffsetGroundSprite(31, 1);
} else if (f == FOUNDATION_STEEP_LOWER) {
/* one corner raised */
OffsetGroundSprite(31, 1);
+5
View File
@@ -3100,6 +3100,7 @@ STR_NEWGRF_ERROR_LOAD_AFTER :{STRING} deve s
STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{STRING} requer versão {STRING} ou maior do OpenTTD.
STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :o arquivo GRF foi designado para tradução
STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Muitos NewGRFs foram carregados.
STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Carregar {STRING} como um NewGRF estático em conjunto com {STRING} pode causar desincronias.
STR_NEWGRF_ADD :{BLACK}Adicionar
STR_NEWGRF_ADD_TIP :{BLACK}Adiciona um NewGRF à lista
@@ -3131,6 +3132,10 @@ STR_NEWGRF_NOT_FOUND_WARNING :{WHITE}Falta(m)
STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Arquivo(s) GRF faltantes
STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Despausar pode travar OpenTTD. Não envie relatórios de erros sobre travas subseqüentes.{}Você realmente quer despausar?
STR_NEWGRF_BROKEN :{WHITE} '{0:STRING}' tem altas chances de causar desincronias e/ou travamentos.
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Muda o tamanho de um veículo para '{1:ENGINE}' apesar de não estar em um depósito.
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Trem '{VEHICLE}' de '{COMPANY}' tem um tamanho inválido. Provavelmente causado por um NewGRF. O jogo pode travar ou sair de sincronia.
STR_LOADGAME_REMOVED_TRAMS :{WHITE}Jogo foi salvo numa versão sem suporte a bondes. Todos os bondes foram removidos.
STR_CURRENCY_WINDOW :{WHITE}Moeda Modificada
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Taxa de câmbio: {ORANGE}{CURRENCY} = £ {COMMA}
STR_CURRENCY_SEPARATOR :{LTBLUE}Separador:
+292 -226
View File
@@ -2,8 +2,8 @@
##ownname Български
##isocode bg_BG
##plural 0
##case accusative dative vocative nominative instrumental locative genitive
##gender мъжки женски среден
##case m f n p
##gender m f n p
#
@@ -21,7 +21,7 @@ STR_EN_ROUTE_FROM :{YELLOW}({SHORT
STR_000C_ACCEPTS :{BLACK}Приема: {WHITE}
STR_000D_ACCEPTS :{BLACK}Приема: {GOLD}
STR_000E :
STR_000F_PASSENGERS :Пътници
STR_000F_PASSENGERS :пасажери
STR_0010_COAL :Въглища
STR_0011_MAIL :Поща
STR_0012_OIL :Нефт
@@ -38,7 +38,7 @@ STR_001C_FRUIT :Плодове
STR_001D_DIAMONDS :Диаманти
STR_001E_FOOD :Храна
STR_001F_PAPER :Хартия
STR_0020_GOLD :Злато
STR_0020_GOLD :злато
STR_0021_WATER :Вода
STR_0022_WHEAT :Пшеница
STR_0023_RUBBER :Каучук
@@ -53,7 +53,7 @@ STR_002B_BATTERIES :Батерии
STR_002C_PLASTIC :Пластмаса
STR_002D_FIZZY_DRINKS :Газирани напитки
STR_002E :
STR_002F_PASSENGER :Пътници
STR_002F_PASSENGER :пасажер
STR_0030_COAL :Въглища
STR_0031_MAIL :Поща
STR_0032_OIL :Нефт
@@ -70,7 +70,7 @@ STR_003C_FRUIT :Плодове
STR_003D_DIAMOND :Диаманти
STR_003E_FOOD :Храна
STR_003F_PAPER :Хартия
STR_0040_GOLD :Злато
STR_0040_GOLD :злато
STR_0041_WATER :Вода
STR_0042_WHEAT :Пшеница
STR_0043_RUBBER :Каучук
@@ -117,7 +117,7 @@ STR_QUANTITY_BATTERIES :{COMMA} бат
STR_QUANTITY_PLASTIC :{VOLUME} пластмаса
STR_QUANTITY_FIZZY_DRINKS :{COMMA} газиран{P а и} напитк{P а и}
STR_ABBREV_NOTHING :
STR_ABBREV_PASSENGERS :{TINYFONT}ПН
STR_ABBREV_PASSENGERS :{TINYFONT}ПС
STR_ABBREV_COAL :{TINYFONT}ВГ
STR_ABBREV_MAIL :{TINYFONT}ПЩ
STR_ABBREV_OIL :{TINYFONT}НФ
@@ -269,7 +269,7 @@ STR_012A_DESERT :{BLACK}{TINYFON
STR_012B_SNOW :{BLACK}{TINYFONT}Сняг
STR_012C_MESSAGE :{WHITE}Съобщение
STR_012D :{WHITE}{STRING}
STR_012E_CANCEL :{BLACK}Преустанови
STR_012E_CANCEL :{BLACK}Отказ
STR_012F_OK :{BLACK}OK
STR_0130_RENAME :{BLACK}Преименувай
STR_0131_TOO_MANY_NAMES_DEFINED :{WHITE}Прекалено много имена
@@ -295,12 +295,12 @@ STR_TOTAL_CAPACITY_TEXT :{BLACK}Обща
STR_TOTAL_CAPACITY :{LTBLUE}- {CARGO} ({SHORTCARGO})
STR_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
STR_0140_NEW_GAME :{BLACK}Нова игра
STR_0141_LOAD_GAME :{BLACK}Отвори игра
STR_0141_LOAD_GAME :{BLACK}Отваряне на игра
STR_SINGLE_PLAYER :{BLACK}Сам играч
STR_MULTIPLAYER :{BLACK}Много играчи
STR_SCENARIO_EDITOR :{BLACK}Редактор сценарии
STR_MAPSIZE :{BLACK}Размер на картата:
STR_MAPSIZE :{BLACK}Размер:
STR_BY :{BLACK}*
STR_0148_GAME_OPTIONS :{BLACK}Настройки
@@ -309,29 +309,29 @@ STR_0151_MAP_OF_WORLD :Карта на
STR_0152_TOWN_DIRECTORY :Списък с градове
STR_0153_SUBSIDIES :Субсидии
STR_UNITS_IMPERIAL :имперска
STR_UNITS_METRIC :метрична
STR_UNITS_IMPERIAL :имперскa
STR_UNITS_METRIC :метричнa
STR_UNITS_SI :международна (SI)
STR_UNITS_VELOCITY_IMPERIAL :{COMMA} м/ч
STR_UNITS_VELOCITY_IMPERIAL :{COMMA} мил{P я и}
STR_UNITS_VELOCITY_METRIC :{COMMA} км/ч
STR_UNITS_VELOCITY_SI :{COMMA} м/с
STR_UNITS_POWER_IMPERIAL :{COMMA}к.с.
STR_UNITS_POWER_METRIC :{COMMA}кс
STR_UNITS_POWER_SI :{COMMA}kW
STR_UNITS_POWER_IMPERIAL :{COMMA} к.с.
STR_UNITS_POWER_METRIC :{COMMA} к.с.
STR_UNITS_POWER_SI :{COMMA} kW
STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}т.
STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}т.
STR_UNITS_WEIGHT_SHORT_SI :{COMMA}кг.
STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA} т.
STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA} т.
STR_UNITS_WEIGHT_SHORT_SI :{COMMA} кг.
STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} тон{P "" а}
STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} тон{P "" а}
STR_UNITS_WEIGHT_LONG_SI :{COMMA} кг
STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}гал.
STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}л.
STR_UNITS_VOLUME_SHORT_SI :{COMMA}м³
STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA} гал.
STR_UNITS_VOLUME_SHORT_METRIC :{COMMA} л.
STR_UNITS_VOLUME_SHORT_SI :{COMMA} м³
STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} галон{P "" а}
STR_UNITS_VOLUME_LONG_METRIC :{COMMA} лит{P ър ри}
@@ -354,11 +354,11 @@ STR_PERFORMANCE_DETAIL_MENU :Рейтинг
STR_015B_OPENTTD :{WHITE}Относно OpenTTD
STR_015C_SAVE_GAME :Запази игра
STR_015D_LOAD_GAME :Отвори игра
STR_015E_QUIT_GAME :Преустанови играта
STR_015D_LOAD_GAME :Отваряне на игра
STR_015E_QUIT_GAME :Прекъсване на играта
STR_015F_QUIT :Изход
STR_ABANDON_GAME_QUERY :{YELLOW}Потвърдете изоставянето на играта?
STR_0161_QUIT_GAME :{WHITE}Преустанови играта
STR_ABANDON_GAME_QUERY :{YELLOW}Искате ли да прекъснете играта?
STR_0161_QUIT_GAME :{WHITE}Прекъсване на играта
STR_SORT_ORDER_TIP :{BLACK}Избери вида на сортирането (намаляващо/нарастващо)
STR_SORT_CRITERIA_TIP :{BLACK}Избери критерий за сортиране
STR_SORT_BY :{BLACK}Сортирай по
@@ -425,12 +425,12 @@ STR_016E :{TINYFONT}{STRI
STR_016F :{TINYFONT}{STRING}{} {STRING}{}{NUM}
STR_0170 :{TINYFONT}{STRING}-
STR_0171_PAUSE_GAME :{BLACK}Пауза
STR_0172_SAVE_GAME_ABANDON_GAME :{BLACK}Запази, преустанови или излез от играта
STR_0172_SAVE_GAME_ABANDON_GAME :{BLACK}Запазване, прекъсване или изход от играта
STR_0173_DISPLAY_LIST_OF_COMPANY :{BLACK}Списък със станциите на компанията
STR_0174_DISPLAY_MAP :{BLACK}Покажи картата
STR_0175_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Покажи картата, списъка с градове
STR_0176_DISPLAY_TOWN_DIRECTORY :{BLACK}Покажи списъка с градове
STR_0177_DISPLAY_COMPANY_FINANCES :{BLACK}Покажи финансова информация на компанията
STR_0177_DISPLAY_COMPANY_FINANCES :{BLACK}Показване на финансова информация за компанията
STR_0178_DISPLAY_COMPANY_GENERAL :{BLACK}Покажи обща информация за компанията
STR_0179_DISPLAY_GRAPHS :{BLACK}Покажи графиките
STR_017A_DISPLAY_COMPANY_LEAGUE :{BLACK}Покажи класирането на компаниите
@@ -600,7 +600,7 @@ STR_020F_GENERAL_INFORMATION :{YELLOW}Общ
STR_MESSAGES_ALL :{YELLOW}Всички видове съобщения са: Изключено / Обобщено/ Пълно
STR_MESSAGE_SOUND :{YELLOW}Покажи обобщените новини със звук
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...прекалено далече от предходната цел
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Първите компании достигнали {NUM}{}({STRING} ниво)
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Първите компании достигнали {NUM}{}(ниво {STRING})
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Таблица Лига на компании в {NUM}
STR_0212 :{BIGFONT}{COMMA}.
STR_0213_BUSINESSMAN :Бизнесмен
@@ -742,7 +742,7 @@ STR_0299_SAVE_SCENARIO :{WHITE}Запи
STR_029A_PLAY_SCENARIO :{BLACK}Играене на сценарий
STR_PLAY_HEIGHTMAP :{BLACK}Игра височинна карта
STR_PLAY_HEIGHTMAP_HINT :{BLACK}Нова игра, използвайки височинна карта като терен
STR_QUIT_SCENARIO_QUERY :{YELLOW}Потвърдете излизането от сценария?
STR_QUIT_SCENARIO_QUERY :{YELLOW}Искате ли да прекъснете сценария?
STR_029C_QUIT_EDITOR :{WHITE}Затваряне на редактора
STR_029D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...може да бъде построен само в градове с население повече от 1200
STR_029E_MOVE_THE_STARTING_DATE :{BLACK}Премести назад началната дата с 1 година
@@ -757,17 +757,21 @@ STR_02A5_TOWN_SIZE :{YELLOW}Гол
STR_02B6 :{STRING} - {STRING}
STR_02B7_SHOW_LAST_MESSAGE_OR_NEWS :{BLACK}Покажи последното съобщение или отчет на новините
STR_OFF :Изключено
STR_OFF :изключено
STR_OFF.m :изключен
STR_OFF.f :изключена
STR_OFF.n :изключено
STR_OFF.p :изключени
STR_SUMMARY :Обобщение
STR_FULL :Пълно
STR_02BA :{SILVER}- - {COMPANY} - -
STR_02BB_TOWN_DIRECTORY :Списък от градовете
STR_02BC_VEHICLE_DESIGN_NAMES :{BLACK}Имена на превозни средства
STR_02BD :{BLACK}{STRING}
STR_02BE_DEFAULT :По подразбиране
STR_02BE_DEFAULT :по подразбиране
STR_02BF_CUSTOM :Изборен
STR_02C0_SAVE_CUSTOM_NAMES :{BLACK}Запис на новоизбраните имена
STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION :{BLACK}Избор на имена на превозни средства
STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION :{BLACK}Избор имена на превозни средства
STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Запис на имена на превозни средства
STR_CHECKMARK :{CHECKMARK}
@@ -815,9 +819,9 @@ STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Прем
STR_02E0_CURRENCY_UNITS :{BLACK}Парична единица
STR_02E1 :{BLACK}{SKIP}{STRING}
STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}Избор на парична единица
STR_MEASURING_UNITS :{BLACK}Мерни единици
STR_MEASURING_UNITS :{BLACK}Система мерни единици
STR_02E4 :{BLACK}{SKIP}{SKIP}{STRING}
STR_MEASURING_UNITS_SELECTION :{BLACK}Избор на мерни единици
STR_MEASURING_UNITS_SELECTION :{BLACK}Избор на система от мерни единици
STR_02E6_ROAD_VEHICLES :{BLACK}Движение по пътищата
STR_02E7 :{BLACK}{SKIP}{SKIP}{SKIP}{STRING}
STR_02E8_SELECT_SIDE_OF_ROAD_FOR :{BLACK}Избор посоката на движение по пътищата
@@ -831,6 +835,10 @@ STR_02F4_AUTOSAVE :{BLACK}Авто
STR_02F5 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_02F6_SELECT_INTERVAL_BETWEEN :{BLACK}Интервала между две автозаписваня
STR_02F7_OFF :изключено
STR_02F7_OFF.m :изключен
STR_02F7_OFF.f :изключена
STR_02F7_OFF.n :изключено
STR_02F7_OFF.p :изключени
STR_02F8_EVERY_3_MONTHS :всеки 3 месеца
STR_02F9_EVERY_6_MONTHS :всеки 6 месеца
STR_02FA_EVERY_12_MONTHS :всеки 12 месеца
@@ -943,9 +951,9 @@ STR_OPTIONS_RES :{BLACK}Разм
STR_OPTIONS_RES_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_RES_TIP :{BLACK}Избор размера на екран
STR_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Формат на екранните снимки
STR_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Формат на снимките
STR_OPTIONS_SCREENSHOT_FORMAT_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_SCREENSHOT_FORMAT_TIP :{BLACK}Избор на формата на екранните снимки
STR_OPTIONS_SCREENSHOT_FORMAT_TIP :{BLACK}Избор на файловия форма в който ще се записват екранните снимки
STR_AUTOSAVE_1_MONTH :всеки месец
STR_AUTOSAVE_FAILED :{WHITE}Автозапазването е неуспешно
@@ -1017,124 +1025,132 @@ STR_CONFIG_PATCHES :{BLACK}Наст
STR_CONFIG_PATCHES_TIP :{BLACK}Настройки на кръпките
STR_CONFIG_PATCHES_CAPTION :{WHITE}Настройка на кръпките
STR_CONFIG_PATCHES_OFF :Изключено
STR_CONFIG_PATCHES_ON :Включено
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Показване скоростта на автомобилите в лента за състоянието: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Позволяване строенето на склонове и брегове: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSLOPE :{LTBLUE}Тераформиране под сгради, пътища и др. (autoslope): {ORANGE}{STRING}
STR_CONFIG_PATCHES_OFF :изключено
STR_CONFIG_PATCHES_OFF.m :изключен
STR_CONFIG_PATCHES_OFF.f :изключена
STR_CONFIG_PATCHES_OFF.n :изключено
STR_CONFIG_PATCHES_OFF.p :изключени
STR_CONFIG_PATCHES_ON :включено
STR_CONFIG_PATCHES_ON.m :включен
STR_CONFIG_PATCHES_ON.f :включена
STR_CONFIG_PATCHES_ON.n :включено
STR_CONFIG_PATCHES_ON.p :включени
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Скорост на МПС в лента за състоянието: {ORANGE}{STRING.f}
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Строене на склонове и брегове: {ORANGE}{STRING.n}
STR_CONFIG_PATCHES_AUTOSLOPE :{LTBLUE}Тераформиране под постройки (autoslope): {ORANGE}{STRING.n}
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}По-реалистична зона за обслужване: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Премахване на повече неща собственост на град: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Строене на много дълги влакове: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Реалистично ускоряване на влаковете: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FORBID_90_DEG :{LTBLUE}Забрана на влакове и кораби да правят 90 градусови завои: {ORANGE}{STRING} {LTBLUE} (трябва NPF)
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Разрушаване на повече градска собственост: {ORANGE}{STRING.n}
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Много дълги влакове: {ORANGE}{STRING.p}
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Реалистично ускоряване на влаковете: {ORANGE}{STRING.n}
STR_CONFIG_PATCHES_FORBID_90_DEG :{LTBLUE}Забрана 90 градусови завои: {ORANGE}{STRING.f}{LTBLUE} (трябва NPF)
STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Обединяване на гари построени една до друга: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FULLLOADANY :{LTBLUE}Напускане на станцията когато някой товар е пълен, при 'пълно зареждане': {ORANGE}{STRING}
STR_CONFIG_PATCHES_IMPROVEDLOAD :{LTBLUE}Подобрен алгоритъм за зареждане: {ORANGE}{STRING}
STR_CONFIG_PATCHES_GRADUAL_LOADING :{LTBLUE}Постепенно зареждане на автомобилите: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INFLATION :{LTBLUE}Инфлация: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Доставяне на стока до станция само ако има търсене: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Строене на много дълги мостове: {ORANGE}{STRING}
STR_CONFIG_PATCHES_GOTODEPOT :{LTBLUE}Сервиз в маршрута: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Много дълги мостове: {ORANGE}{STRING.p}
STR_CONFIG_PATCHES_GOTODEPOT :{LTBLUE}Планирано обслужване в пътния лист: {ORANGE}{STRING.n}
STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD :{LTBLUE}Ръчен строеж на първични индустрии: {ORANGE}{STRING}
STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :нищо
STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :като други промишлености
STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :предстоящ
STR_CONFIG_PATCHES_MULTIPINDTOWN :{LTBLUE}Няколко еднакви индустрии на град: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SAMEINDCLOSE :{LTBLUE}Индустрии от еднакъв тип могат да бъдат строени близо една до друга: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}Показване на дълга дата в статус бара: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SIGNALSIDE :{LTBLUE}Показване на семафорите спрямо пътното движение: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SHOWFINANCES :{LTBLUE}Показване на финансовия прозорец в края на годината: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}Дълга дата в лента за състоянието: {ORANGE}{STRING.f}
STR_CONFIG_PATCHES_SIGNALSIDE :{LTBLUE}Семафорите от страната на пътното движение: {ORANGE}{STRING.n}
STR_CONFIG_PATCHES_SHOWFINANCES :{LTBLUE}Финансов отчет в края на годината: {ORANGE}{STRING.m}
STR_CONFIG_PATCHES_NEW_NONSTOP :{LTBLUE}TTDPatch съвместима обработка на "без спиране": {ORANGE}{STRING}
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Опашка на колите (със сумарен ефект): {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Преместване на прозореца когато мишката е в края: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Опашка на автомобилите (със сумарен ефект): {ORANGE}{STRING.f}
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Местене на екрана когато мишката е в края: {ORANGE}{STRING.n}
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Подкупване на местната власт: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Позволи купуване на изклучителни транспортни права: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Позволи изпращане на пари до други компаний: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Нестандартни станции: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Теглови множител към товарите за симулация на тежки влакове: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PLANE_SPEED :{LTBLUE}Скоростоопределяща: {ORANGE}1 / {STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Теглови множител за симулация на тежки влакове: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PLANE_SPEED :{LTBLUE}Скоростен множител за самолети: {ORANGE}1 / {STRING}
STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD :{LTBLUE}Преминаване през спирки на градски пътища: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ADJACENT_STATIONS :{LTBLUE}Позвалявай допрени гари: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMALL_AIRPORTS :{LTBLUE}Малки летища са винаги разрешени: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMALL_AIRPORTS :{LTBLUE}Винаги могат да се строят малки летища: {ORANGE}{STRING.n}
STR_CONFIG_PATCHES_WARN_LOST_TRAIN :{LTBLUE}Предупреждение ако влак се загуби {ORANGE}{STRING}
STR_CONFIG_PATCHES_ORDER_REVIEW :{LTBLUE}Преглед на маршрута: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ORDER_REVIEW_OFF :не
STR_CONFIG_PATCHES_ORDER_REVIEW_EXDEPOT :да, но пропусни спрените превозни средства
STR_CONFIG_PATCHES_ORDER_REVIEW_ON :от всички превозни средства
STR_CONFIG_PATCHES_WARN_INCOME_LESS :{LTBLUE}Предупреждение ако печалбата на влак е негативна: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEVER_EXPIRE_VEHICLES :{LTBLUE}Превозните средства никога не губят валидност: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Автоматично подновяване на превозно средство когато то остарее
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Автоматично подновяване когато превозното средство е {ORANGE}{STRING}{LTBLUE} месеца преди/след максималната възраст
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Автоматично възстановяване на минималната сума пари необходима за започване отначало: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Продължителност на съобщенията за грешки: {ORANGE}{STRING}
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Населението на града в етикета с името на града: {ORANGE}{STRING}
STR_CONFIG_PATCHES_WARN_LOST_TRAIN :{LTBLUE}Предупреждение при загубен влак: {ORANGE}{STRING.n}
STR_CONFIG_PATCHES_ORDER_REVIEW :{LTBLUE}Преглед на заповеди: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ORDER_REVIEW_OFF :изключен
STR_CONFIG_PATCHES_ORDER_REVIEW_EXDEPOT :включен, но без спрените ПС
STR_CONFIG_PATCHES_ORDER_REVIEW_ON :включен
STR_CONFIG_PATCHES_WARN_INCOME_LESS :{LTBLUE}Предупреждение при загуба от влак: {ORANGE}{STRING.n}
STR_CONFIG_PATCHES_NEVER_EXPIRE_VEHICLES :{LTBLUE}ПС не губят валидност: {ORANGE}{STRING.n}
STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Подновяване на остарели ПС
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Подновяване {ORANGE}{STRING}{LTBLUE} месеца преди/след амортизацията на ПС
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Минимална сума за начало на подновяване: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Продължителност на съобщенията за грешки: {ORANGE}{STRING} сек.
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Население в табелата на града: {ORANGE}{STRING.n}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Невидими дървета (с невидими сгради): {ORANGE}{STRING}
STR_CONFIG_PATCHES_LAND_GENERATOR :{LTBLUE}Генератор на земя: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LAND_GENERATOR_ORIGINAL :Оригинал
STR_CONFIG_PATCHES_LAND_GENERATOR_TERRA_GENESIS :ТераГенезис
STR_CONFIG_PATCHES_OIL_REF_EDGE_DISTANCE :{LTBLUE}Максимално разстояние на нефтените рафинерии от краищата на картата {ORANGE}{STRING}
STR_CONFIG_PATCHES_LAND_GENERATOR_ORIGINAL :оригинален
STR_CONFIG_PATCHES_LAND_GENERATOR_TERRA_GENESIS :тера-генезис
STR_CONFIG_PATCHES_OIL_REF_EDGE_DISTANCE :{LTBLUE}Разстояние на рафинериите от края на картата: {ORANGE}{STRING} плочк{P а и}
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Снежната ивица: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN :{LTBLUE}Ръбавост на терен (само за TerraGenesis) : {ORANGE}{STRING}
STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Много гладък
STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_SMOOTH :Гладен
STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_ROUGH :Ръбав
STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Много ръбав
STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN :{LTBLUE}Стръмност на терен (само за TerraGenesis): {ORANGE}{STRING}
STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :много полегат
STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_SMOOTH :полегат
STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_ROUGH :стръмен
STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :много стръмен
STR_CONFIG_PATCHES_TREE_PLACER :{LTBLUE}Алгоритъм за поставяне на дървета: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TREE_PLACER_NONE :Без
STR_CONFIG_PATCHES_TREE_PLACER_ORIGINAL :Оригинален
STR_CONFIG_PATCHES_TREE_PLACER_IMPROVED :Подобрен
STR_CONFIG_PATCHES_TREE_PLACER_NONE :без дървета
STR_CONFIG_PATCHES_TREE_PLACER_ORIGINAL :оригинален
STR_CONFIG_PATCHES_TREE_PLACER_IMPROVED :подобрен
STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION :{LTBLUE}Завъртане на картата: {ORANGE}{STRING}
STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Обратрно на часовниковата стрелка
STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION_CLOCKWISE :По часовниковата стрелка
STR_CONFIG_PATCHES_SE_FLAT_WORLD_HEIGHT :{LTBLUE}Височина на картата за плосък сценарий: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Макс. разпръснатост на станция: {ORANGE}{STRING} {RED}Внимание: Високите стойности забавят играта
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Макс. разпръснатост на станция: {ORANGE}{STRING} {RED}Внимание: високите стойности забавят играта
STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Автоматичен сервиз на хеликоптерите при кацане на хелипад: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR :{LTBLUE}Връзване на инструментите за терен с инструментите за жп/път/вода/летище: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REVERSE_SCROLLING :{LTBLUE}Обърната посока на преместване: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_SCROLLING :{LTBLUE}Плавно маневреране през прозореца: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MEASURE_TOOLTIP :{LTBLUE}Показване на измервателна подсказка при използване на инструментите за строене: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LIVERIES :{LTBLUE}Покажи цветовете на компанията: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LIVERIES_NONE :Нито една
STR_CONFIG_PATCHES_LIVERIES_OWN :Твоята компания
STR_CONFIG_PATCHES_LIVERIES_ALL :Всички компании
STR_CONFIG_PATCHES_PREFER_TEAMCHAT :{LTBLUE}Избери предпочитания отбор за чатене <ENTER>: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SCROLLWHEEL_SCROLLING :{LTBLUE}Предназначение на scrollwheel: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SCROLLWHEEL_ZOOM :Промени фокусат на картата
STR_CONFIG_PATCHES_SCROLLWHEEL_SCROLL :Разгледай картата
STR_CONFIG_PATCHES_SCROLLWHEEL_OFF :Изклучен
STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER :{LTBLUE}Scrollwheel скорост на картата: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR :{LTBLUE}Инструменти за терен при другите инструменти: {ORANGE}{STRING.p}
STR_CONFIG_PATCHES_REVERSE_SCROLLING :{LTBLUE}Обърната посока на преместване: {ORANGE}{STRING.n}
STR_CONFIG_PATCHES_SMOOTH_SCROLLING :{LTBLUE}Плавно местене на камера: {ORANGE}{STRING.n}
STR_CONFIG_PATCHES_MEASURE_TOOLTIP :{LTBLUE}Подсказка за разстояние при строене: {ORANGE}{STRING.f}
STR_CONFIG_PATCHES_LIVERIES :{LTBLUE}Показване ливреите на: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LIVERIES_NONE :нито една компания
STR_CONFIG_PATCHES_LIVERIES_OWN :собствената компания
STR_CONFIG_PATCHES_LIVERIES_ALL :всички компании
STR_CONFIG_PATCHES_PREFER_TEAMCHAT :{LTBLUE}Разговор с отбора при натискане на <ENTER>: {ORANGE}{STRING.n}
STR_CONFIG_PATCHES_SCROLLWHEEL_SCROLLING :{LTBLUE}Колелото на мишката: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SCROLLWHEEL_ZOOM :променя увеличението
STR_CONFIG_PATCHES_SCROLLWHEEL_SCROLL :превърта картата
STR_CONFIG_PATCHES_SCROLLWHEEL_OFF :не прави нищо
STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER :{LTBLUE}Превъртане на картата: {ORANGE}{STRING} клетк{P а и}
STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU :{LTBLUE}Дясно-щракане емулациа: {ORANGE}{STRING}
STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_COMMAND :Команда-щракане
STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_CONTROL :Контрол-щракане
STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_OFF :Изключен
STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME :{LTBLUE}Автоматична пауза стартирайки нова игра: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS :{LTBLUE}Използваи напредналиат списък на превозни средства: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_OFF :Изключен
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_OWN :Собствена компания
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_ALL :Всички компаний
STR_CONFIG_PATCHES_LOADING_INDICATORS :{LTBLUE}Използвай товарни индикатори: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LOADING_INDICATORS_OFF :Изключен
STR_CONFIG_PATCHES_LOADING_INDICATORS_OWN :Собствена компания
STR_CONFIG_PATCHES_LOADING_INDICATORS_ALL :Всички компаний
STR_CONFIG_PATCHES_TIMETABLE_ALLOW :{LTBLUE}Включи времеслуженето на ПС-та: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TIMETABLE_IN_TICKS :{LTBLUE}Покажи времеслуженето в случаи, а не в дни: {ORANGE}{STRING}
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE :{LTBLUE}Стандартни релси (след нова игра/отваряне на запазена игра): {ORANGE}{STRING}
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_RAIL :Нормални релси
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_ELRAIL :Електрифицирани релси
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MONORAIL :Еднорелси
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MAGLEV :Магниторелси
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_FIRST :Първо на разположение
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_LAST :Последно на разположение
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED :Най-много използван
STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME :{LTBLUE}Игрите започват в пауза: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS :{LTBLUE}Разширен списък на ПС: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_OFF :изключен
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_OWN :само за собствената компания
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_ALL :за всички компании
STR_CONFIG_PATCHES_LOADING_INDICATORS :{LTBLUE}Товарни индикатори: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LOADING_INDICATORS_OFF :изключени
STR_CONFIG_PATCHES_LOADING_INDICATORS_OWN :само за собствената компания
STR_CONFIG_PATCHES_LOADING_INDICATORS_ALL :за всички компании
STR_CONFIG_PATCHES_TIMETABLE_ALLOW :{LTBLUE}Времеслужене на ПС: {ORANGE}{STRING.n}
STR_CONFIG_PATCHES_TIMETABLE_IN_TICKS :{LTBLUE}Разписанието в цикли вместо дни: {ORANGE}{STRING.n}
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE :{LTBLUE}Стандартни релси: {ORANGE}{STRING}
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_RAIL :нормални релси
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_ELRAIL :електрифицирани релси
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MONORAIL :монорелси
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MAGLEV :маглев релси
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_FIRST :първите налични
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_LAST :последните налични
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED :най-използваните
STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE :{LTBLUE}Показване на инструментите за строене при липса на съответни превозни средства: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Макс. влакове на играч: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE :{LTBLUE}Строене при липса на подходящи ПС: {ORANGE}{STRING.n}
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Макс. брой влакове на играч: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_ROADVEH :{LTBLUE}Макс. брой коли на играч: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_AIRCRAFT :{LTBLUE}Макс. брой самолети на играч: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_SHIPS :{LTBLUE}Макс. брой кораби на играч: {ORANGE}{STRING}
@@ -1148,14 +1164,14 @@ STR_CONFIG_PATCHES_AINEW_ACTIVE :{LTBLUE}Вкл
STR_CONFIG_PATCHES_AI_IN_MULTIPLAYER :{LTBLUE}Позволяване на компютърни играчи в мултиплейър (експериментално): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SERVINT_TRAINS :{LTBLUE}Интервал на сервиз за влакове: {ORANGE}{STRING} дни/%
STR_CONFIG_PATCHES_SERVINT_TRAINS_DISABLED :{LTBLUE}Интервал на сервиз за влакове: {ORANGE}изключен
STR_CONFIG_PATCHES_SERVINT_TRAINS_DISABLED :{LTBLUE}Интервал на сервиз за влакове: {ORANGE}без сервиз
STR_CONFIG_PATCHES_SERVINT_ROADVEH :{LTBLUE}Интервал на сервиз за автомобили: {ORANGE}{STRING} дни/%
STR_CONFIG_PATCHES_SERVINT_ROADVEH_DISABLED :{LTBLUE}Интервал на сервиз за автомобили: {ORANGE}изключен
STR_CONFIG_PATCHES_SERVINT_ROADVEH_DISABLED :{LTBLUE}Интервал на сервиз за автомобили: {ORANGE}без сервиз
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Интервал на сервиз за самолети: {ORANGE}{STRING} дни/%
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Интервал на сервиз за самолети: {ORANGE}изключен
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Интервал на сервиз за самолети: {ORANGE}без сервиз
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Интервал на сервиз за кораби: {ORANGE}{STRING} дни/%
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Интервал на сервиз за кораби: {ORANGE}изключен
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Изключване на сервиза когато повредите са изключени: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Интервал на сервиз за кораби: {ORANGE}без сервиз
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Без сервиз когато повредите са изключени: {ORANGE}{STRING.n}
STR_CONFIG_PATCHES_WAGONSPEEDLIMITS :{LTBLUE}Вагоните имат ограничение на скоростта: {ORANGE}{STRING}
STR_CONFIG_PATCHES_DISABLE_ELRAILS :{LTBLUE}Без електрически влакове: {ORANGE}{STRING}
@@ -1164,9 +1180,9 @@ STR_CONFIG_PATCHES_STARTING_YEAR :{LTBLUE}Нач
STR_CONFIG_PATCHES_ENDING_YEAR :{LTBLUE}Край на играта през: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Плавна икономика (повече и по-малки промени)
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Позволяване покупката на акции от други компании
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}При влачене, поставяне на семафори всеки: {ORANGE}{STRING} плочка(и)
STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}Автоматично построй семафори преди: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENABLE_SIGNAL_GUI :{LTBLUE}Вклучи GUI за сигналите: {ORANGE}{STRING}
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Поставяне семафори всеки: {ORANGE}{STRING} плочк{P а и}
STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}Поставяне на семафори преди: {ORANGE}{STRING} година
STR_CONFIG_PATCHES_ENABLE_SIGNAL_GUI :{LTBLUE}Инструменти за сигналите: {ORANGE}{STRING.p}
STR_CONFIG_PATCHES_TOWN_LAYOUT_INVALID :{WHITE}Грацкиа план "няма повече пътища" е невалиден в сценарий редакторат
STR_CONFIG_PATCHES_TOWN_LAYOUT :{LTBLUE}Избери грацки пътформат: {ORANGE}{STRING}
@@ -1176,11 +1192,11 @@ STR_CONFIG_PATCHES_TOWN_LAYOUT_BETTER_ROADS :по-добри
STR_CONFIG_PATCHES_TOWN_LAYOUT_2X2_GRID :2х2 мрежа
STR_CONFIG_PATCHES_TOWN_LAYOUT_3X3_GRID :3х3 мрежа
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Позиция на лента за инструменти: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Ляво
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :Център
STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT :Дясно
STR_CONFIG_PATCHES_SNAP_RADIUS :{LTBLUE}Прилепване на прозорците: {ORANGE}{STRING} px
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Позиция на лентата за инструменти: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :ляво
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :център
STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT :дясно
STR_CONFIG_PATCHES_SNAP_RADIUS :{LTBLUE}Прилепване на прозорците: {ORANGE}{STRING} пиксел{P "" а}
STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED :{LTBLUE}Прилепване на прозорците: {ORANGE}изключено
STR_CONFIG_PATCHES_TOWN_GROWTH :{LTBLUE}Скорост на разтеж на града: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOWN_GROWTH_NONE :Никаква
@@ -1201,6 +1217,10 @@ STR_CONFIG_PATCHES_ECONOMY :{BLACK}Икон
STR_CONFIG_PATCHES_AI :{BLACK}Съперници
STR_CONFIG_PATCHES_DISABLED :изключено
STR_CONFIG_PATCHES_DISABLED.m :изключен
STR_CONFIG_PATCHES_DISABLED.f :изключена
STR_CONFIG_PATCHES_DISABLED.n :изключено
STR_CONFIG_PATCHES_DISABLED.p :изключени
STR_CONFIG_PATCHES_INT32 :{NUM}
STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
@@ -1208,17 +1228,17 @@ STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Пром
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Някои от стойностите за интервал(и) на сервиз са несъвместими с избраните настройки! 5-90% и 30-800 са валидни стойности
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Пътенамирач за влакове: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(Не е препоръчано)
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(не се препоръчва)
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(Препоръчано)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Пътенамирач за пътни превозни средства: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :Оригинал {RED}(Не е препоръчано)
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(препоръчва се)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Пътенамирач за автомобили: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :оригинален {RED}(не се препоръчва)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(Препоръчано)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(препоръчава се)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Пътенамирач за кораби: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :Оригинал {BLUE}(Препоръчано)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :оригинален {BLUE}(препоръчва се)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(Не е препоръчано)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(не се препоръчва)
STR_TEMPERATE_LANDSCAPE :умерен климат
STR_SUB_ARCTIC_LANDSCAPE :Арктичен климат
@@ -1265,7 +1285,7 @@ STR_BUILD_AUTORAIL_TIP :{BLACK} Стр
STR_NO_TOWN_IN_SCENARIO :{WHITE}...няма град в този сценарий
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Потвърдете създаването на случаен терен?
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Искате ли да създадете произволен терен?
STR_MANY_RANDOM_TOWNS :{BLACK}Много случайни градове
STR_RANDOM_TOWNS_TIP :{BLACK}Покриване на картата със случайно поставени градове
STR_MANY_RANDOM_INDUSTRIES :Много случайни индустрии
@@ -1296,7 +1316,7 @@ STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Не м
STR_CANT_CONVERT_RAIL :{WHITE}Тук не може да се променя типа на жп линията...
STR_CONVERT_RAIL_TIP :{BLACK}Промяна/обновяване на ЖП линия
STR_DRAG_WHOLE_TRAIN_TO_SELL_TIP :{BLACK}Преместване локомотива тук ще продаде целия влак
STR_DRAG_WHOLE_TRAIN_TO_SELL_TIP :{BLACK}Преместването на локомотив тук ще продаде целия влак
STR_DRAG_DROP :{BLACK}Влачене & Пускане
STR_STATION_DRAG_DROP :{BLACK}Строене на станция чрез изтегляне
@@ -1341,7 +1361,7 @@ STR_RAIL_REFIT_VEHICLE :{BLACK}Проб
STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Избор тип на товар за влак
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Преоборудва влака да превозва избрания тип товар
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Преоборудването на влака е невъзможно...
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Интервал на сервиз е в проценти: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Интервал на сервиз е в проценти: {ORANGE}{STRING.n}
STR_CONFIG_GAME_PRODUCTION :{WHITE}Промяна на производство
TEMP_AI_IN_PROGRESS :{WHITE}Добре дошли в новия АИ, който е още в процес на разработване. Ако срещнете проблеми, направете screenshot и го пуснете във форума.
@@ -1407,13 +1427,13 @@ STR_NETWORK_INTERNET :Интерне
STR_NETWORK_LAN_INTERNET :LAN / Интернет
STR_NETWORK_INTERNET_ADVERTISE :Интернет (реклама)
STR_NETWORK_CLIENTS_SELECT :{BLACK}{SKIP}{SKIP}{NUM} клиент{P "" s}
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Макс. клиенти:
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Макс. брой клиенти:
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Избор на максималния брой клиенти. Не всички слотове трябва да се попълнят
STR_NETWORK_COMPANIES_SELECT :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} компани{P а ий}
STR_NETWORK_NUMBER_OF_COMPANIES :{BLACK}Макс. компании:
STR_NETWORK_NUMBER_OF_COMPANIES :{BLACK}Макс. брой компании:
STR_NETWORK_NUMBER_OF_COMPANIES_TIP :{BLACK}Ограничаване на играта до определен брой компании
STR_NETWORK_SPECTATORS_SELECT :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} зрител{P "" s}
STR_NETWORK_NUMBER_OF_SPECTATORS :{BLACK}Макс. наблюдатели:
STR_NETWORK_NUMBER_OF_SPECTATORS :{BLACK}Макс. брой наблюдатели:
STR_NETWORK_NUMBER_OF_SPECTATORS_TIP :{BLACK}Ограничаване на сървъра до определен брой наблюдатели
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Говорим език:
STR_NETWORK_LANGUAGE_TIP :{BLACK}Другите играчи ще знаят езика на който се говори на сървъра
@@ -1661,42 +1681,42 @@ STR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Желе
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Първо махнете пътя
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}Пътни ремонти в процес
STR_1802_ROAD_CONSTRUCTION :{WHITE}Пътно строителство
STR_WHITE_TRAMWAY_CONSTRUCTION :{WHITE}Конструкциа на трамвайна линиа
STR_WHITE_TRAMWAY_CONSTRUCTION :{WHITE}Трамвайно строителство
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Избор на асфалтов мост
STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... еднопосочни пътища немогат да имат съединениа
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Пътя не може да се построи...
STR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Трамвайна линиа неможе да бъде посроена тук...
STR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Не може да се построи трамвайна линия...
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Пътя не може да се махне...
STR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Трамвайната линиа неможе да бъде премахната от тук...
STR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Не може да се разруши трамвайната линия...
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Ориентация на гараж
STR_TRAM_DEPOT_ORIENTATION :{WHITE}Посока на Трамвайно Депо
STR_TRAM_DEPOT_ORIENTATION :{WHITE}Посока на трамвайно депо
STR_1807_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Гаража не може да се построи...
STR_CAN_T_BUILD_TRAM_VEHICLE :{WHITE}Трамвайно депо неможе да бъде построено тук...
STR_CAN_T_BUILD_TRAM_VEHICLE :{WHITE}Не може да се построи трамвайно депо...
STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}Автогарата не може да се построи...
STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}Товарната гара не може да се построи...
STR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Пътническа трамвайна гара неможе да бъде построена...
STR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Товарна трамвайна гара неможе да бъде построена...
STR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Не може да се построи пътническа трамвайната спирка...
STR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Не може да построи товарна трамвайна спирка...
STR_180A_ROAD_CONSTRUCTION :Пътно строителство
STR_TRAMWAY_CONSTRUCTION :Конструкциа на трамвайна линиа
STR_TRAMWAY_CONSTRUCTION :Трамвайно строителство
STR_180B_BUILD_ROAD_SECTION :{BLACK}Строене на път
STR_BUILD_AUTOROAD_TIP :{BLACK}Построи отсечка от шосе използвайки Афто-шосе методът
STR_BUILD_TRAMWAY_SECTION :{BLACK}Построи секциа от трамвайна линиа
STR_BUILD_AUTOTRAM_TIP :{BLACK}Построи отсечка от железопътна линиа използвайки Афто-линиа методът
STR_BUILD_TRAMWAY_SECTION :{BLACK}Строене на трамвайна линия
STR_BUILD_AUTOTRAM_TIP :{BLACK}Автоматично строене на трамвайна линия
STR_180C_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Строене на гараж (за строене и сервиз на МПС-та)
STR_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Построи трамвайно депо (за стройтелни и сервизни коли)
STR_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Строене на трамвайно депо (за покупка и обслужване на трамваи)
STR_180D_BUILD_BUS_STATION :{BLACK}Строене на автогара
STR_180E_BUILD_TRUCK_LOADING_BAY :{BLACK}Строене на товарна гара
STR_BUILD_PASSENGER_TRAM_STATION :{BLACK}Построи пъгническа трамвайна гара
STR_BUILD_CARGO_TRAM_STATION :{BLACK}Построи товарна трамвайна гара
STR_BUILD_PASSENGER_TRAM_STATION :{BLACK}Строене на пътническа трамвайна спирка
STR_BUILD_CARGO_TRAM_STATION :{BLACK}Строене на товарна трамвайна спирка
STR_180F_BUILD_ROAD_BRIDGE :{BLACK}Построй мост
STR_BUILD_TRAMWAY_BRIDGE :{BLACK}Построи трамвайен мост
STR_BUILD_TRAMWAY_BRIDGE :{BLACK}Строене на мост за трамваи
STR_1810_BUILD_ROAD_TUNNEL :{BLACK}Построй тунел
STR_BUILD_TRAMWAY_TUNNEL :{BLACK}Построи трамвайен тунел
STR_BUILD_TRAMWAY_TUNNEL :{BLACK}Прокопаване на тунел за трамваи
STR_TOGGLE_ONE_WAY_ROAD :{BLACK}Активирай/Деактивирай еднопосочни пътища
STR_1811_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Премахване на асфалтов път
STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Превключване строене/разрушаване на трамвайни консктрукции
STR_1813_SELECT_ROAD_VEHICLE_DEPOT :{BLACK}Ориентация на гараж
STR_SELECT_TRAM_VEHICLE_DEPOT :{BLACK}Избери посоката на трамвайното депо
STR_SELECT_TRAM_VEHICLE_DEPOT :{BLACK}Избор посоката на трамвайно депо
STR_1814_ROAD :път
STR_1815_ROAD_WITH_STREETLIGHTS :Асфалтов път с улични лампи
STR_1816_TREE_LINED_ROAD :Асфалтов път с дървета
@@ -1704,8 +1724,8 @@ STR_1817_ROAD_VEHICLE_DEPOT :Авто деп
STR_1818_ROAD_RAIL_LEVEL_CROSSING :ЖП прелез
STR_CAN_T_REMOVE_BUS_STATION :{WHITE}Не може да премахне автогарата...
STR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Не може да премахне товарната гара...
STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Пътническата трамвайна гара неможе да бъде премахната...
STR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Товарната трамвайна гара неможе да бъде премахната...
STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Не може да се разруши пътническата трамвайната спирка...
STR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Не може да се разруши товарната трамвайна спирка...
##id 0x2000
STR_2000_TOWNS :{WHITE}Градове
@@ -1725,7 +1745,7 @@ STR_2009_LOCAL_AUTHORITY_REFUSES :{WHITE}{TOWN}
STR_200A_TOWN_NAMES_CLICK_ON_NAME :{BLACK}Имена на градовете - натисни на името за да центрираш този град
STR_200B_CENTER_THE_MAIN_VIEW_ON :{BLACK}Центриране на главния изглед спрямо разположението на града
STR_200C_CHANGE_TOWN_NAME :{BLACK}Промяна на име на град
STR_200D_PASSENGERS_LAST_MONTH_MAX :{BLACK}Пътници през последния месец: {ORANGE}{COMMA}{BLACK} максимум: {ORANGE}{COMMA}
STR_200D_PASSENGERS_LAST_MONTH_MAX :{BLACK}Пасажери през последния месец: {ORANGE}{COMMA}{BLACK} максимум: {ORANGE}{COMMA}
STR_200E_MAIL_LAST_MONTH_MAX :{BLACK}Поща през последния месец: {ORANGE}{COMMA}{BLACK} максимум: {ORANGE}{COMMA}
STR_200F_TALL_OFFICE_BLOCK :Висока офис сграда
STR_2010_OFFICE_BLOCK :Офис сграда
@@ -1797,7 +1817,7 @@ STR_2051_BUILD_A_STATUE_IN_HONOR :{WHITE}{STRING}
STR_2052_FUND_THE_CONSTRUCTION_OF :{WHITE}{STRING}{}{YELLOW} Финансиране изграждането на нови комерсиални сгради в града.{} Цена: {CURRENCY}
STR_2053_BUY_1_YEAR_S_EXCLUSIVE :{WHITE}{STRING}{}{YELLOW} Покупка на едногодишни специални транспортни права в града. Градските власти ще позволят единствено на пътниците и товара да използват гарите на вашата компания.{} Цена: {CURRENCY}
STR_TOWN_BRIBE_THE_LOCAL_AUTHORITY_DESC :{WHITE}{STRING}{}{YELLOW} Подкупването на местната власт за да увеличи рейтинга носи огромен риск ако бъдете хванати{} Цена: {CURRENCY}
STR_2055_TRAFFIC_CHAOS_IN_ROAD_REBUILDING :{BIGFONT}{BLACK} Хаос на трафика в {TOWN}!{}{}Програма за пътна реконструкция финансирана от {COMPANY} носи 6 месеца мизерия за мотористите!
STR_2055_TRAFFIC_CHAOS_IN_ROAD_REBUILDING :{BIGFONT}{BLACK}Хаос на трафика в {TOWN}!{}{}Програмата за пътна реконструкция, финансирана от {COMPANY}, доведе до 6 месеца мизерия за мотористите!
STR_2056 :{TINYFONT}{WHITE}{TOWN}
STR_2057 :{ORANGE}{TOWN}{BLACK} ({COMMA})
STR_2058_UNDER_CONSTRUCTION :{STRING} (в процес на изграждане)
@@ -1872,12 +1892,12 @@ STR_3040_NOW_ACCEPTS :{WHITE}{STATION
STR_3041_NOW_ACCEPTS_AND :{WHITE}{STATION} вече приема {STRING} и {STRING}
STR_3042_BUS_STATION_ORIENTATION :{WHITE}Ориентация на автогара
STR_3043_TRUCK_STATION_ORIENT :{WHITE}Ориент. товарна гара
STR_PASSENGER_TRAM_STATION_ORIENTATION :{WHITE}Посока на пътнически трамвай
STR_CARGO_TRAM_STATION_ORIENT :{WHITE}Посока на товарен трамвай
STR_PASSENGER_TRAM_STATION_ORIENTATION :{WHITE}Посока на пътническа спирка
STR_CARGO_TRAM_STATION_ORIENT :{WHITE}Посока на товарна спирка
STR_3046_MUST_DEMOLISH_BUS_STATION :{WHITE}Първо разрушете автогарата
STR_3047_MUST_DEMOLISH_TRUCK_STATION :{WHITE}Първо разрушете товарната гара
STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION :{WHITE}Пътническата трамвайна гара трябва да бъде унищожена първо
STR_MUST_DEMOLISH_CARGO_TRAM_STATION :{WHITE}Товарната трамвайна гара трябва да бъде унищожена първо
STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION :{WHITE}Първо трябва да се разруши пътническата трамвайната спирка
STR_MUST_DEMOLISH_CARGO_TRAM_STATION :{WHITE}Първо трябва да се разруши товарната трамвайна спирка
STR_3048_STATIONS :{WHITE}{COMPANY} - {COMMA} Станци{P я и}
STR_3049_0 :{YELLOW}{STATION} {STATIONFEATURES}
STR_304A_NONE :{YELLOW}- Николко -
@@ -1889,8 +1909,8 @@ STR_304F_SELECT_NUMBER_OF_PLATFORMS :{BLACK}Брой
STR_3050_SELECT_LENGTH_OF_RAILROAD :{BLACK}Дължина на ЖП гарата
STR_3051_SELECT_BUS_STATION_ORIENTATION :{BLACK}Ориентация на автогарата
STR_3052_SELECT_TRUCK_LOADING_BAY :{BLACK}Ориентация на товарната гара
STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION :{BLACK}Избери посоката на пътническата трамвайна гара
STR_SELECT_CARGO_TRAM_STATION_ORIENTATION :{BLACK}Избери посоката на товарната трамвайна гара
STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION :{BLACK}Избор посоката на пътническа трамвайна спирка
STR_SELECT_CARGO_TRAM_STATION_ORIENTATION :{BLACK}Избор посоката на товарна трамвайна спирка
STR_3053_CENTER_MAIN_VIEW_ON_STATION :{BLACK}Центриране на главния прозорец върху станцията
STR_3054_SHOW_STATION_RATINGS :{BLACK}Покажи нивото на обслужване
STR_3055_CHANGE_NAME_OF_STATION :{BLACK}Промяна името на станцията
@@ -1932,7 +1952,7 @@ STR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Тряб
##id 0x4000
STR_4000_SAVE_GAME :{WHITE}Запази играта
STR_4001_LOAD_GAME :{WHITE}Отвори игра
STR_4001_LOAD_GAME :{WHITE}Отваряне на игра
STR_4002_SAVE :{BLACK}Запази
STR_4003_DELETE :{BLACK}Изтрий
STR_4004 :{COMPANY}, {DATE_LONG}
@@ -1953,7 +1973,7 @@ STR_400D_SAVE_THE_CURRENT_GAME_USING :{BLACK}Запа
STR_400E_SELECT_NEW_GAME_TYPE :{WHITE}Избери нов тип игра
STR_400F_SELECT_SCENARIO_GREEN_PRE :{BLACK}Избери на сценарии (зелено), предварително настроена игра (синьо), или произволна нова игра
STR_4010_GENERATE_RANDOM_NEW_GAME :Генерирай произволна нова игра
STR_LOAD_HEIGHTMAP :{WHITE}Зареди височинна карта
STR_LOAD_HEIGHTMAP :{WHITE}Отваряне на височинна карта
##id 0x4800
STR_4800_IN_THE_WAY :{WHITE}{STRING} пречи
@@ -2021,8 +2041,8 @@ STR_4832_ANNOUNCES_IMMINENT_CLOSURE :{BLACK}{BIGFONT
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO :{BLACK}{BIGFONT}Проблеми с доставките предизвикаха незабавно закриване на {STRING}!
STR_4834_LACK_OF_NEARBY_TREES_CAUSES :{BLACK}{BIGFONT}Липса на дървета предизвикаха незабавно закриване на {STRING}!
STR_4835_INCREASES_PRODUCTION :{BLACK}{BIGFONT}{INDUSTRY} увеличава прозводството!
STR_4836_NEW_COAL_SEAM_FOUND_AT :{BLACK}{BIGFONT}Нови залежи на въглища са намерени в {INDUSTRY}!{}Очаква се производството да се удвои!
STR_4837_NEW_OIL_RESERVES_FOUND :{BLACK}{BIGFONT}Нови залежи на Нефт са намерени в {INDUSTRY}!{}Очаква се производстото да се удвои!
STR_4836_NEW_COAL_SEAM_FOUND_AT :{BLACK}{BIGFONT}Нови залежи на въглища са намерени в {INDUSTRY}!{}Очаква се производството да се удвои!
STR_4837_NEW_OIL_RESERVES_FOUND :{BLACK}{BIGFONT}Нови залежи на нефт са намерени в {INDUSTRY}!{}Очаква се производстото да се удвои!
STR_4838_IMPROVED_FARMING_METHODS :{BLACK}{BIGFONT}Иноваторските селскостопански технологии в {INDUSTRY} се очаква да удвоят производството!
STR_4839_PRODUCTION_DOWN_BY_50 :{BLACK}{BIGFONT}Прозиводството в {INDUSTRY} спадна с 50%
STR_483A_INSECT_INFESTATION_CAUSES :{BLACK}{BIGFONT}Напаст от насекоми предизвика опустошение в {INDUSTRY}!{}Производството намаля с 50%
@@ -2136,35 +2156,55 @@ STR_OPTIONS_SAVE_CHANGES :{BLACK}Запи
STR_6801_EASY :{BLACK}лесно
STR_6802_MEDIUM :{BLACK}средно
STR_6803_HARD :{BLACK}трудно
STR_6804_CUSTOM :{BLACK}по поръчка
STR_6804_CUSTOM :{BLACK}специална
############ range for difficulty levels ends
############ range for difficulty settings starts
STR_6805_MAXIMUM_NO_COMPETITORS :{LTBLUE}Максимален брой конкуренти: {ORANGE}{COMMA}
STR_6806_COMPETITOR_START_TIME :{LTBLUE}Конкурентите стартират: {ORANGE}{STRING}
STR_6807_NO_OF_TOWNS :{LTBLUE}Брой на градовете: {ORANGE}{STRING}
STR_6808_NO_OF_INDUSTRIES :{LTBLUE}Брой на индустриите: {ORANGE}{STRING}
STR_6806_COMPETITOR_START_TIME :{LTBLUE}Конкурентите започват: {ORANGE}{STRING}
STR_6807_NO_OF_TOWNS :{LTBLUE}Брой на градовете: {ORANGE}{STRING.m}
STR_6808_NO_OF_INDUSTRIES :{LTBLUE}Брой на индустриите: {ORANGE}{STRING.m}
STR_6809_MAXIMUM_INITIAL_LOAN_000 :{LTBLUE}Максимален начален заем: {ORANGE}{CURRENCY}
STR_680A_INITIAL_INTEREST_RATE :{LTBLUE}Начална лихва: {ORANGE}{COMMA}%
STR_680B_VEHICLE_RUNNING_COSTS :{LTBLUE}Оперативни разходи на превозните средства: {ORANGE}{STRING}
STR_680B_VEHICLE_RUNNING_COSTS :{LTBLUE}Разходи по колите: {ORANGE}{STRING.p}
STR_680C_CONSTRUCTION_SPEED_OF_COMPETITOR :{LTBLUE}Скорост на строене на конкурентите: {ORANGE}{STRING}
STR_680D_INTELLIGENCE_OF_COMPETITORS :{LTBLUE}Интелигентност на конкурентите: {ORANGE}{STRING}
STR_680D_INTELLIGENCE_OF_COMPETITORS :{LTBLUE}Интелигентност на конкурентите: {ORANGE}{STRING.f}
STR_680E_VEHICLE_BREAKDOWNS :{LTBLUE}Повреди на превозните средства: {ORANGE}{STRING}
STR_680F_SUBSIDY_MULTIPLIER :{LTBLUE}Множител на субсидиите: {ORANGE}{STRING}
STR_6810_COST_OF_CONSTRUCTION :{LTBLUE}Цена на строителството: {ORANGE}{STRING}
STR_6810_COST_OF_CONSTRUCTION :{LTBLUE}Цена на строителство: {ORANGE}{STRING.f}
STR_6811_TERRAIN_TYPE :{LTBLUE}Тип на терена: {ORANGE}{STRING}
STR_6812_QUANTITY_OF_SEA_LAKES :{LTBLUE}Количество морета/езера: {ORANGE}{STRING}
STR_6813_ECONOMY :{LTBLUE}Икономика: {ORANGE}{STRING}
STR_6812_QUANTITY_OF_SEA_LAKES :{LTBLUE}Количество морета/езера: {ORANGE}{STRING.n}
STR_6813_ECONOMY :{LTBLUE}Икономика: {ORANGE}{STRING.f}
STR_6814_TRAIN_REVERSING :{LTBLUE}Обръщане на влаковете: {ORANGE}{STRING}
STR_6815_DISASTERS :{LTBLUE}Бедствия: {ORANGE}{STRING}
STR_CITY_APPROVAL :{LTBLUE}Отношение на градските власти към промяна на земята: {ORANGE}{STRING}
STR_6815_DISASTERS :{LTBLUE}Бедствия: {ORANGE}{STRING.p}
STR_CITY_APPROVAL :{LTBLUE}Отношение на града към промяна на земята: {ORANGE}{STRING}
############ range for difficulty settings ends
STR_NONE :Николко
STR_NUM_VERY_LOW :Много ниско
STR_NONE :николко
STR_NONE.m :ни един
STR_NONE.f :ни една
STR_NONE.n :ни едно
STR_NONE.p :ни едни
STR_NUM_VERY_LOW :мн. малко
STR_NUM_VERY_LOW.m :много малък
STR_NUM_VERY_LOW.f :много малка
STR_NUM_VERY_LOW.n :много малко
STR_NUM_VERY_LOW.p :много малки
STR_6816_LOW :малко
STR_6816_LOW.m :малък
STR_6816_LOW.f :малка
STR_6816_LOW.n :малко
STR_6816_LOW.p :малки
STR_6817_NORMAL :нормално
STR_6818_HIGH :много
STR_6817_NORMAL.m :нормален
STR_6817_NORMAL.f :нормална
STR_6817_NORMAL.n :нормално
STR_6817_NORMAL.p :нормални
STR_6818_HIGH :голямо
STR_6818_HIGH.m :голям
STR_6818_HIGH.f :голяма
STR_6818_HIGH.n :голямо
STR_6818_HIGH.p :големи
STR_6819 :{BLACK}{SMALLLEFTARROW}
STR_681A :{BLACK}{SMALLRIGHTARROW}
STR_681B_VERY_SLOW :много бавно
@@ -2172,10 +2212,22 @@ STR_681C_SLOW :бавно
STR_681D_MEDIUM :средно
STR_681E_FAST :бързо
STR_681F_VERY_FAST :много бързо
STR_VERY_LOW :Много нисък
STR_6820_LOW :Ниска/Малка
STR_6821_MEDIUM :средна
STR_6822_HIGH :висока/голяма
STR_VERY_LOW :много ниско
STR_6820_LOW :ниско
STR_6820_LOW.m :нисък
STR_6820_LOW.f :ниска
STR_6820_LOW.n :ниско
STR_6820_LOW.p :ниски
STR_6821_MEDIUM :средно
STR_6821_MEDIUM.m :среден
STR_6821_MEDIUM.f :средна
STR_6821_MEDIUM.n :средно
STR_6821_MEDIUM.p :средни
STR_6822_HIGH :високо
STR_6822_HIGH.m :висок
STR_6822_HIGH.f :висока
STR_6822_HIGH.n :високо
STR_6822_HIGH.p :високи
STR_6823_NONE :без
STR_6824_REDUCED :намалени
STR_6825_NORMAL :нормални
@@ -2183,19 +2235,31 @@ STR_6826_X1_5 :x1.5
STR_6827_X2 :x2
STR_6828_X3 :x3
STR_6829_X4 :x4
STR_682A_VERY_FLAT :много равнинен
STR_682A_VERY_FLAT :платовиден
STR_682B_FLAT :равнинен
STR_682C_HILLY :хълмист
STR_682D_MOUNTAINOUS :планински
STR_682E_STEADY :стабилна
STR_682E_STEADY.m :стабилен
STR_682E_STEADY.f :стабилна
STR_682E_STEADY.n :стабилно
STR_682E_STEADY.p :стабилни
STR_682F_FLUCTUATING :променлива
STR_682F_FLUCTUATING.m :променлив
STR_682F_FLUCTUATING.f :променлива
STR_682F_FLUCTUATING.n :променливо
STR_682F_FLUCTUATING.p :променливи
STR_6830_IMMEDIATE :веднага
STR_6831_3_MONTHS_AFTER_PLAYER :3 месеца след играча
STR_6832_6_MONTHS_AFTER_PLAYER :6 месеца след играча
STR_6833_9_MONTHS_AFTER_PLAYER :9 месеца след играча
STR_6834_AT_END_OF_LINE_AND_AT_STATIONS :в края на линията и на станциите
STR_6834_AT_END_OF_LINE_AND_AT_STATIONS :в края на линията и станциите
STR_6835_AT_END_OF_LINE_ONLY :само в края на линията
STR_6836_OFF :изключено
STR_6836_OFF.m :изключен
STR_6836_OFF.f :изключена
STR_6836_OFF.n :изключено
STR_6836_OFF.p :изключени
STR_6837_ON :включено
STR_6838_SHOW_HI_SCORE_CHART :{BLACK}Покажи класирането
STR_PERMISSIVE :разрешаващи
@@ -2216,7 +2280,7 @@ STR_700A_COMPANY_NAME :Име на к
STR_700B_PRESIDENT_S_NAME :Име на управителя
STR_700C_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Не може да бъде променено името на компанията...
STR_700D_CAN_T_CHANGE_PRESIDENT :{WHITE}Не може да се промени името на управителя...
STR_700E_FINANCES :{WHITE}{COMPANY} Финанси {BLACK}{COMPANYNUM}
STR_700E_FINANCES :{WHITE}Финансов отчет на {COMPANY} {BLACK}{COMPANYNUM}
STR_700F_EXPENDITURE_INCOME :{WHITE}Разходи/Приходи
STR_7010 :{WHITE}{NUM}
STR_7011_CONSTRUCTION :{GOLD}Строеж
@@ -2271,7 +2335,7 @@ STR_7043_FACE_SELECTION :{WHITE}Избо
STR_7044_MALE :{BLACK}Мъж
STR_7045_FEMALE :{BLACK}Жена
STR_7046_NEW_FACE :{BLACK}Ново лице
STR_7047_CANCEL_NEW_FACE_SELECTION :{BLACK}Преустанови избора на ново лице
STR_7047_CANCEL_NEW_FACE_SELECTION :{BLACK}Прекъсване избора на ново лице
STR_7048_ACCEPT_NEW_FACE_SELECTION :{BLACK}Признавам избора на ново лице
STR_7049_SELECT_MALE_FACES :{BLACK}Избери мъжки лица
STR_704A_SELECT_FEMALE_FACES :{BLACK}Избери женски лица
@@ -2347,11 +2411,11 @@ STR_LIVERY_MONORAIL :Монорел
STR_LIVERY_MAGLEV :Маглев локомотив
STR_LIVERY_DMU :DMU
STR_LIVERY_EMU :EMU
STR_LIVERY_PASSENGER_WAGON_STEAM :Пътнически вагон (Парен)
STR_LIVERY_PASSENGER_WAGON_DIESEL :Пътнически вагон (Дизел)
STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Пътнически вагон (Електрически)
STR_LIVERY_PASSENGER_WAGON_MONORAIL :Пътнически вагон (Monorail - еднорелсова железопътна линия)
STR_LIVERY_PASSENGER_WAGON_MAGLEV :Пътнически вагон (Maglev - магнетично издигнат влак)
STR_LIVERY_PASSENGER_WAGON_STEAM :Пътнически вагон (парен)
STR_LIVERY_PASSENGER_WAGON_DIESEL :Пътнически вагон (дизел)
STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Пътнически вагон (електрически)
STR_LIVERY_PASSENGER_WAGON_MONORAIL :Пътнически вагон (монорелсов)
STR_LIVERY_PASSENGER_WAGON_MAGLEV :Пътнически вагон (маглев)
STR_LIVERY_FREIGHT_WAGON :Товарен вагон
STR_LIVERY_BUS :Автобус
STR_LIVERY_TRUCK :Камион
@@ -2360,8 +2424,8 @@ STR_LIVERY_FREIGHT_SHIP :Товарен
STR_LIVERY_HELICOPTER :Хеликоптер
STR_LIVERY_SMALL_PLANE :Малък аероплан
STR_LIVERY_LARGE_PLANE :Голям аероплан
STR_LIVERY_PASSENGER_TRAM :Пътнически Трамвай
STR_LIVERY_FREIGHT_TRAM :Товарен Трамвай
STR_LIVERY_PASSENGER_TRAM :Пътнически трамвай
STR_LIVERY_FREIGHT_TRAM :Товарен трамвай
STR_LIVERY_GENERAL_TIP :{BLACK}Показване на общи цветови схеми
STR_LIVERY_TRAIN_TIP :{BLACK}Показване цветовите схеми на влаковете
@@ -2629,10 +2693,10 @@ STR_80FC_FLASHBANG_WIZZER :Флашбан
STR_80FD_TRICARIO_HELICOPTER :Трикарио хеликоптер
STR_80FE_GURU_X2_HELICOPTER :Гуру X2 хеликоптер
STR_80FF_POWERNAUT_HELICOPTER :Пауернат хеликоптер
STR_8100_MESSAGE_FROM_VEHICLE_MANUFACTURE :{WHITE}Съобщение от автомобилният производител
STR_8101_WE_HAVE_JUST_DESIGNED_A :{GOLD}Току-що създадохме нов {STRING} - бихте ли се съгласили не едногодишна употреба на това МПС, за да видим как то работи преди да го пуснем на пазара за масова употреба?
STR_8100_MESSAGE_FROM_VEHICLE_MANUFACTURE :{WHITE}Съобщение от производител
STR_8101_WE_HAVE_JUST_DESIGNED_A :{GOLD}Създадохме нов {STRING}.{}Интересувате ли се от изключителното право да използвате това ПС за една година, за да видим как то работи преди да го пуснем на пазара за масова употреба?
STR_8102_RAILROAD_LOCOMOTIVE :локомотив за двурелсов път
STR_8103_ROAD_VEHICLE :МПС
STR_8103_ROAD_VEHICLE :автомобил
STR_8104_AIRCRAFT :самолет
STR_8105_SHIP :кораб
STR_8106_MONORAIL_LOCOMOTIVE :локомотив за еднорелсов път
@@ -2681,7 +2745,7 @@ STR_8812_EMPTY :{LTBLUE}Пра
STR_8813_FROM :{LTBLUE}{CARGO} от {STATION}
STR_FROM_MULT :{LTBLUE}{CARGO} от {STATION} (x{NUM})
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Влакът {COMMA} чака в депото
STR_8815_NEW_VEHICLES :{BLACK}Нови МПС-та
STR_8815_NEW_VEHICLES :{BLACK}Нови ПС
STR_8816 :{BLACK}-
STR_8819_TRAIN_TOO_LONG :{WHITE}Влакът е прекалено дълъг
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Влаковете могат да бъдат променяни само когато са спрени в депото
@@ -2738,7 +2802,7 @@ STR_8839_CAN_T_SELL_RAILROAD_VEHICLE :{WHITE}Не м
STR_883A_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Не може да намери маршрута до местното депо
STR_883B_CAN_T_STOP_START_TRAIN :{WHITE}Не може да спреш/пуснеш влака...
STR_883C_SERVICING_INTERVAL_DAYS :{BLACK}Дни на обслужване: {LTBLUE}{COMMA}дни{BLACK} Последно облужване: {LTBLUE}{DATE_LONG}
STR_SERVICING_INTERVAL_PERCENT :{BLACK}Интервал на ремонт: {LTBLUE}{COMMA}%{BLACK} Последен ремонт: {LTBLUE}{DATE_LONG}
STR_SERVICING_INTERVAL_PERCENT :{BLACK}Интервал на сервиз: {LTBLUE}{COMMA}%{BLACK} Последен сервиз: {LTBLUE}{DATE_LONG}
STR_883D_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Влакове - кликни върху някой влак за повече информация
STR_883E_BUILD_NEW_TRAINS_REQUIRES :{BLACK}Купи нови влакове (изисква влаково депо)
STR_883F_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Влакове - кликни върху някой влак за повече информация, домъкни машина за да я довавиш/премахнеш от влака
@@ -2852,12 +2916,12 @@ STR_901B_BUILD_NEW_ROAD_VEHICLES :{BLACK}Поку
STR_901C_CURRENT_VEHICLE_ACTION :{BLACK}Текущо действие - натиснете за спиране/пускане на превозното средство
STR_901D_SHOW_VEHICLE_S_ORDERS :{BLACK}Пътен лист
STR_901E_CENTER_MAIN_VIEW_ON_VEHICLE :{BLACK}Центриране на главния прозорец върху превозното средство
STR_901F_SEND_VEHICLE_TO_DEPOT :{BLACK}Прати МПС-то в депото
STR_9020_FORCE_VEHICLE_TO_TURN_AROUND :{BLACK}Накарай МПС-то да обърне
STR_9021_SHOW_ROAD_VEHICLE_DETAILS :{BLACK}Покажи детайлите на МПС-то
STR_9022_VEHICLES_CLICK_ON_VEHICLE :{BLACK}МПС-та - натисни върху МПС за информация
STR_9023_BUILD_NEW_ROAD_VEHICLE :{BLACK}Купи ново МПС
STR_9024_DRAG_ROAD_VEHICLE_TO_HERE :{BLACK}Премести МПС-то тук, за да го продадеш
STR_901F_SEND_VEHICLE_TO_DEPOT :{BLACK}Изпращане на ПС в депо. CTRL+натискане ще изпрати само за преглед
STR_9020_FORCE_VEHICLE_TO_TURN_AROUND :{BLACK}Насилствено обръщане на ПС
STR_9021_SHOW_ROAD_VEHICLE_DETAILS :{BLACK}Показва информация за автомобила
STR_9022_VEHICLES_CLICK_ON_VEHICLE :{BLACK}ПС - натиснете върху ПС за информация
STR_9023_BUILD_NEW_ROAD_VEHICLE :{BLACK}Покупка на нов автомобил
STR_9024_DRAG_ROAD_VEHICLE_TO_HERE :{BLACK}Преместен автомобил тук ще го продаде
STR_9025_CENTER_MAIN_VIEW_ON_ROAD :{BLACK}Фокусирай общия план върху местонахождението на МПС-депото
STR_9026_ROAD_VEHICLE_SELECTION :{BLACK}Списък с избор на МПС-та - натисни върху МПС за информация
STR_9027_BUILD_THE_HIGHLIGHTED_ROAD :{BLACK}Купи посоченото МПС
@@ -2870,8 +2934,8 @@ STR_902D_CAN_T_NAME_ROAD_VEHICLE :{WHITE}Не м
STR_902E_NAME_ROAD_VEHICLE :{BLACK}Преименувай МПС-то
STR_902F_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Гражданите празнуват . . .{}Първият автобус пристигнал в {STATION}!
STR_9030_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Хората празнуват . . .{}Първи камион пристигна на {STATION}!
STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM :{BLACK}{BIGFONT}Гражданите празнуват . . .{}Първиат пътнически трамвай пристига на {STATION}!
STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM :{BLACK}{BIGFONT}Гражданите празнуват . . .{}Първиат товарен трамвай пристига на {STATION}!
STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM :{BLACK}{BIGFONT}Гражданите празнуват . . .{}Първият пътнически трамвай пристигна на {STATION}!
STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM :{BLACK}{BIGFONT}Гражданите празнуват . . .{}Първият товарен трамвай пристигна на {STATION}!
STR_9031_ROAD_VEHICLE_CRASH_DRIVER :{BLACK}{BIGFONT}Пътно-транспортно Произшествие!{}Шофьор загина на място при екплозия на МПС след сблъсък с влак
STR_9032_ROAD_VEHICLE_CRASH_DIE :{BLACK}{BIGFONT}Пътно-транспортно Произшествие!{}{COMMA} загинаха на място при екплозия на МПС след сблъсък с влак
STR_9033_CAN_T_MAKE_VEHICLE_TURN :{WHITE}Не може да обърнеш МПС-то...
@@ -2936,7 +3000,7 @@ STR_9828_SHOW_SHIP_S_ORDERS :{BLACK}Пока
STR_9829_CENTER_MAIN_VIEW_ON_SHIP :{BLACK}Фокусирай общия план върху местонахождението на кораба
STR_982A_SEND_SHIP_TO_DEPOT :{BLACK}Прати кораба в депото
STR_982B_SHOW_SHIP_DETAILS :{BLACK}Покажи детайлите за кораба
STR_982E_COST_MAX_SPEED_CAPACITY :{BLACK}Cost: {CURRENCY} Макс. Скорост: {VELOCITY}{}Вместимост: {CARGO}{}Разход: {CURRENCY}/год.
STR_982E_COST_MAX_SPEED_CAPACITY :{BLACK}Цена: {CURRENCY} Макс. скорост: {VELOCITY}{}Вместимост: {CARGO}{}Разход: {CURRENCY}/год.
STR_982F_NAME_SHIP :{BLACK}Наименувай кораба
STR_9831_NAME_SHIP :{WHITE}Наименувай кораба
@@ -3008,7 +3072,7 @@ STR_A028_SHOW_AIRCRAFT_S_ORDERS :{BLACK}Марш
STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT :{BLACK}Центриране на главния прозорец върху самолета
STR_A02A_SEND_AIRCRAFT_TO_HANGAR :{BLACK}Изпращане на самолета в хангар
STR_A02B_SHOW_AIRCRAFT_DETAILS :{BLACK}Информация за самолета
STR_A02E_COST_MAX_SPEED_CAPACITY :{BLACK}Цена: {CURRENCY} Макс. скорост: {VELOCITY}{}Капацитет: {COMMA} пътника, {COMMA} чувала поща{}Разход: {CURRENCY}/г.
STR_A02E_COST_MAX_SPEED_CAPACITY :{BLACK}Цена: {CURRENCY} Макс. скорост: {VELOCITY}{}Капацитет: {COMMA} пътника, {COMMA} чувала поща{}Разход: {CURRENCY}/год.
STR_A030_NAME_AIRCRAFT :{WHITE}Име на самолет
STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Не може да нарече самолета...
@@ -3082,7 +3146,7 @@ STR_NEWGRF_APPLY_CHANGES :{BLACK}Прил
STR_NEWGRF_SET_PARAMETERS :{BLACK}Настройване на параметрите
STR_NEWGRF_TIP :{BLACK}Списък с всички инсталирани Newgrf пакети. Натисни на пакет за промяна на настройките
STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}В момента няма инсталирани newgrf файлове! Моля обърнете се към наръчника за инструкции по инсталирането на нова графика
STR_NEWGRF_FILENAME :{BLACK}Име на файл: {SILVER}{STRING}
STR_NEWGRF_FILENAME :{BLACK}Име на файл: {SILVER}{STRING}
STR_NEWGRF_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING}
STR_NEWGRF_MD5SUM :{BLACK}MD5 сума: {SILVER}{STRING}
STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}На път си да извършиш промени в активна игра; това може да крашне OpenTTD.{}Напълно ли си сигурен в това?
@@ -3100,6 +3164,7 @@ STR_NEWGRF_ERROR_LOAD_AFTER :{STRING} тря
STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{STRING} поискай OpenTTD версиа {STRING} или по-добра.
STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF файлат беше предназначен да преведе
STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Прекалено много графики (NewGRF) са заредени.
STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Зареждане на {STRING} като статичен NewGRF заедно с {STRING} може да доведе до проблеми.
STR_NEWGRF_ADD :{BLACK}Добави
STR_NEWGRF_ADD_TIP :{BLACK}Добавяне на NewGRF файл към списъка
@@ -3131,6 +3196,7 @@ STR_NEWGRF_NOT_FOUND_WARNING :{WHITE}Липс
STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Липсва GRF файл(ове)
STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Може да счупи OpenTTD. Не пускайте съобщение за грешка за последвали счупвания.{}Желаете ли да се махне паузата?
STR_LOADGAME_REMOVED_TRAMS :{WHITE}Играта бе записана във версия без поддръжка на трамваи. Всички трамваи са изтрити.
STR_CURRENCY_WINDOW :{WHITE}Парична единица
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Обменен курс: {ORANGE}{CURRENCY} = £ {COMMA}
STR_CURRENCY_SEPARATOR :{LTBLUE}Разделител:
@@ -3161,7 +3227,7 @@ STR_VEH_WITH_SHARED_ORDERS_LIST :{WHITE}Спод
STR_VEH_WITH_SHARED_ORDERS_LIST_TIP :{BLACK}Показване на всички превозни средства които споделят разписанието
### depot strings
STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Потвърдете продажбата на всички превозни средства в депото?
STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Искате ли да продадете всички коли в депото?
STR_DEPOT_WRONG_DEPOT_TYPE :Погрешен депо теп
STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP :{BLACK}Продажба всички влакове в депото
@@ -3263,18 +3329,18 @@ STR_NUM_3 :{BLACK}{SKIP}{S
########### String for New Landscape Generator
STR_GENERATE :{WHITE}Генериране
STR_RANDOM :{BLACK}Случайност
STR_RANDOM :{BLACK}Произволно
STR_RANDOM_HELP :{BLACK}Промяна на случайността използване за генериране на терен
STR_WORLD_GENERATION_CAPTION :{WHITE}Световна генерация
STR_RANDOM_SEED :{BLACK}Семе на случайност:
STR_RANDOM_SEED :{BLACK}Случайност:
STR_RANDOM_SEED_HELP :{BLACK}Натиснете за въвеждане семе на случайност
STR_LAND_GENERATOR :{BLACK}Генератор на земя:
STR_TREE_PLACER :{BLACK}Алгоритъм за дървета:
STR_LAND_GENERATOR :{BLACK}Земегенератор:
STR_TREE_PLACER :{BLACK}Дърворазсад:
STR_HEIGHTMAP_ROTATION :{BLACK}Завъртане на височинна карта:
STR_TERRAIN_TYPE :{BLACK}Тип на терен:
STR_QUANTITY_OF_SEA_LAKES :{BLACK}Морско ниво:
STR_SMOOTHNESS :{BLACK}Загладеност:
STR_SNOW_LINE_HEIGHT :{BLACK}Височина на снежната линия:
STR_SMOOTHNESS :{BLACK}Полегатост:
STR_SNOW_LINE_HEIGHT :{BLACK}Снежна линия:
STR_DATE :{BLACK}Дата:
STR_NUMBER_OF_TOWNS :{BLACK}Брой градове:
STR_NUMBER_OF_INDUSTRIES :{BLACK}Брой индустрии:
@@ -3292,7 +3358,7 @@ STR_HEIGHTMAP_SIZE :{BLACK}Разм
STR_GENERATION_WORLD :{WHITE}Създаване на свят...
STR_GENERATION_ABORT :{BLACK}Прекъсване
STR_GENERATION_ABORT_CAPTION :{WHITE}Прекъсване генерирането на свят
STR_GENERATION_ABORT_MESSAGE :{YELLOW}Потвърдете прекъсването на генерацията?
STR_GENERATION_ABORT_MESSAGE :{YELLOW}Искате ли да прекъснете създаването?
STR_PROGRESS :{WHITE}{NUM}% готово
STR_GENERATION_PROGRESS :{BLACK}{NUM} / {NUM}
STR_WORLD_GENERATION :{BLACK}Генерация на свят
@@ -3428,8 +3494,8 @@ STR_FACE_ADVANCED :{BLACK}Hапр
STR_FACE_ADVANCED_TIP :{BLACK}Напредната лице селекциа.
STR_FACE_SIMPLE :{BLACK}Прост
STR_FACE_SIMPLE_TIP :{BLACK}Проста лице селекциа.
STR_FACE_LOAD :{BLACK}Зареди
STR_FACE_LOAD_TIP :{BLACK}Зареди любимо лице
STR_FACE_LOAD :{BLACK}Отваряне
STR_FACE_LOAD_TIP :{BLACK}Отваряне на любимо лице
STR_FACE_LOAD_DONE :{WHITE}Твоето любимо лице е заредено от OpenTTD config файлът.
STR_FACE_FACECODE :{BLACK}Номер на лице на играч.
STR_FACE_FACECODE_TIP :{BLACK}Виж и/или избери номер на лицето на играчът
+5 -3
View File
@@ -389,7 +389,7 @@ STR_ENGINE_SORT_POWER_VS_RUNNING_COST :Potència/Cost
STR_ENGINE_SORT_CARGO_CAPACITY :Capacitat de càrrega
STR_NO_WAITING_CARGO :{BLACK}No hi ha càrrega d'aquest tipus esperant
STR_SELECT_ALL_FACILITIES :{BLACK}Seleccionar totes les instal·lacions
STR_SELECT_ALL_TYPES :{BLACK}Selecciona tots els tipus de càrrega (inloent carga sense espera)
STR_SELECT_ALL_TYPES :{BLACK}Selecciona tots els tipus de càrrega (incloent carga sense espera)
STR_AVAILABLE_TRAINS :{BLACK}Trens Disponibles
STR_AVAILABLE_ROAD_VEHICLES :{BLACK}Vehicles Disponibles
STR_AVAILABLE_SHIPS :{BLACK}Vaixells Disponibles
@@ -2758,7 +2758,7 @@ STR_884E_DECREASE_SERVICING_INTERVAL :{BLACK}Disminue
STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED :{BLACK}Mostra els detalls de càrrega transportada
STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES :{BLACK}Mostra els detalls d'elements del tren
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Mostra les capacitats de cada element
STR_SHOW_TOTAL_CARGO :{BLACK}Mostra la capacitat total del tren, separat per tipus de càrrega
STR_SHOW_TOTAL_CARGO :{BLACK}Mostra la capacitat total del tren, separada per tipus de càrrega
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Llista d'ordres - clica en una per seleccionar-la
STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Salta l'ordre actual, i comença la següent. CTRL + clic salta l'ordre seleccionada
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Esborra l'ordre seleccionada
@@ -3068,7 +3068,7 @@ STR_PERFORMANCE_DETAIL_STATIONS_TIP :{BLACK}Quantita
STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP :{BLACK}El benefici del vehicle amb els menors ingressos (de tots els vehicles més antics de 2 anys)
STR_PERFORMANCE_DETAIL_MIN_INCOME_TIP :{BLACK}Quantitat de diners fets durant el mes amb el mínim benefici dels darrers 12 trimestres
STR_PERFORMANCE_DETAIL_MAX_INCOME_TIP :{BLACK}Quantitat de diners fets durant el mes amb el màxim benefici dels darrers 12 trimestres
STR_PERFORMANCE_DETAIL_DELIVERED_TIP :{BLACK}Unitats de càrrega entregada en els darrers quatre trimestres.
STR_PERFORMANCE_DETAIL_DELIVERED_TIP :{BLACK}Unitats de càrrega entregades en els darrers quatre trimestres.
STR_PERFORMANCE_DETAIL_CARGO_TIP :{BLACK}Tipus de càrrega entregada durant el darrer trimestre.
STR_PERFORMANCE_DETAIL_MONEY_TIP :{BLACK}Quantitats de diners en efectiu
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Tens un prèstec elevat?
@@ -3098,6 +3098,7 @@ STR_NEWGRF_ERROR_LOAD_AFTER :{STRING} ha de
STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{STRING} necessita OpenTTD versió {STRING} o més modern.
STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :l'arxiu GRF dissenyat està pendent de traduir
STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Hi ha massa arxius NewGRF carregats.
STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Carregant {STRING} com a NewGRF estàtic amb {STRING} podria causar desincronitzacions.
STR_NEWGRF_ADD :{BLACK}Afegeix
STR_NEWGRF_ADD_TIP :{BLACK}Afegeix un arxiu NewGRF a la llista
@@ -3129,6 +3130,7 @@ STR_NEWGRF_NOT_FOUND_WARNING :{WHITE}Arxius G
STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Falten arxiu(s) GRF
STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Treure la pausa pot provocar fallades d'OpenTTD. No informis d'errors a causa de fallades subseqüents.{}Estàs segur de voler treure la pausa?
STR_LOADGAME_REMOVED_TRAMS :{WHITE}El joc s'ha desat en una versió sense suport de tramvies. Tots els tramvies s'han eliminat.
STR_CURRENCY_WINDOW :{WHITE}Moneda personalitzada
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Canvi de moneda: {ORANGE}{CURRENCY} = £ {COMMA}
STR_CURRENCY_SEPARATOR :{LTBLUE}Separador:
+10
View File
@@ -1204,6 +1204,15 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Promijeni vrijednost postavke
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Neki ili svi od zadanih servisnih intervala ispod nisu kompatibilni s odabranim postavkama! Valjane vrijednosti su 5-90% ili 30-800 dana.
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(Nije preporučivo)
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(Preporučeno)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :Original {RED}(Nije preporučivo)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(Preporučeno)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :Original {BLUE}(Preporučeno)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(Nije preporučivo)
STR_TEMPERATE_LANDSCAPE :Blagi krajolik
STR_SUB_ARCTIC_LANDSCAPE :Pod-arktički krajolik
STR_SUB_TROPICAL_LANDSCAPE :Sub-tropski krajolik
@@ -1700,6 +1709,7 @@ STR_2002 :{TINYFONT}{BLAC
STR_2002_WHITE :{TINYFONT}{WHITE}{SIGN}
STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Najprije moraš srušiti građevinu
STR_2005 :{WHITE}{TOWN}
STR_CITY :{WHITE}{TOWN} (Grad)
STR_2006_POPULATION :{BLACK}Stanovništvo: {ORANGE}{COMMA}{BLACK} Kuće: {ORANGE}{COMMA}
STR_2007_RENAME_TOWN :Preimenuj grad
STR_2008_CAN_T_RENAME_TOWN :{WHITE}Nije moguće preimenovati grad...
+13 -12
View File
@@ -1077,7 +1077,7 @@ STR_CONFIG_PATCHES_OFF :vypnuto
STR_CONFIG_PATCHES_ON :zapnuto
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Ukazovat rychlost vozidla ve stavové liště: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Povolit výstavbu na svazích kopců a na pobřežích: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSLOPE :{LTBLUE}Úpravy terénu pod budovami, kolejemi atd. (tzv. autoslope): {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSLOPE :{LTBLUE}Srovnání terénu pod budovami, kolejemi atd. (autoslope): {ORANGE}{STRING}
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Povolit u oblasti pokrytí realističtější velikost: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Povolit bourání více městských silnic, mostů, tunelů, atp.: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Povolit stavbu dlouhých vlaků: {ORANGE}{STRING}
@@ -1088,7 +1088,7 @@ STR_CONFIG_PATCHES_FULLLOADANY :{LTBLUE}Odjet,
STR_CONFIG_PATCHES_IMPROVEDLOAD :{LTBLUE}Použij vylepšený algoritmus nakládání: {ORANGE}{STRING}
STR_CONFIG_PATCHES_GRADUAL_LOADING :{LTBLUE}Nakládat vozidla postupně: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INFLATION :{LTBLUE}Inflace: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Vozit zboží do stanice jen když je poptávka: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Dodávat zboží do stanice jen když je poptávka: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Povolit stavbu velmi dlouhých mostů: {ORANGE}{STRING}
STR_CONFIG_PATCHES_GOTODEPOT :{LTBLUE}Povolit příkaz 'jeď do depa': {ORANGE}{STRING}
STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD :{LTBLUE}Způsob manuálního budování primárního průmyslu: {ORANGE}{STRING}
@@ -1109,7 +1109,7 @@ STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Umožni
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Nejednolité stanice: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Pro simulaci těžkých vlaků vynásobit hmotnost nákladu: {ORANGE}{STRING}x
STR_CONFIG_PATCHES_PLANE_SPEED :{LTBLUE}Činitel rychlosti letadel: {ORANGE}1/{STRING}
STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD :{LTBLUE}Povolit průjezdné zastávky na silnicích vlastněných obcemi: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD :{LTBLUE}Stavba průjezdných zastávek na obecních silnicích: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ADJACENT_STATIONS :{LTBLUE}Povolit stavění přilehlých stanic: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMALL_AIRPORTS :{LTBLUE}Malá letiště se budou moci stále stavět: {ORANGE}{STRING}
@@ -1121,7 +1121,7 @@ STR_CONFIG_PATCHES_ORDER_REVIEW_EXDEPOT :ano, kromě zas
STR_CONFIG_PATCHES_ORDER_REVIEW_ON :ano, u všech vozidel
STR_CONFIG_PATCHES_WARN_INCOME_LESS :{LTBLUE}Varovat, pokud vlak prodělává: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEVER_EXPIRE_VEHICLES :{LTBLUE}Vozidlům se nikdy nezastaví výroba ('nezastarají'): {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Automaticky obnovit dopravní prostředek, když je starý
STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Automaticky nahradit dopravní prostředek, když zestárne
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Obnovit vozidlo {ORANGE}{STRING}{LTBLUE} měsíců před / po dosažení maximálního stáří
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Minimální částka pro automatické obnovení: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Doba zobrazení chybové zprávy: {ORANGE}{STRING}
@@ -1215,7 +1215,7 @@ STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Vypnout
STR_CONFIG_PATCHES_WAGONSPEEDLIMITS :{LTBLUE}Zapnout omezení rychlosti vagonů: {ORANGE}{STRING}
STR_CONFIG_PATCHES_DISABLE_ELRAILS :{LTBLUE}Vypnout elektrickou železnici: {ORANGE}{STRING}
STR_CONFIG_PATCHES_COLORED_NEWS_YEAR :{LTBLUE}Barevné noviny se objeví: {ORANGE}{STRING}
STR_CONFIG_PATCHES_COLORED_NEWS_YEAR :{LTBLUE}Barevné noviny se objeví v roce: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STARTING_YEAR :{LTBLUE}Počáteční datum: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENDING_YEAR :{LTBLUE}Ukončit hru v roce: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Plynulé změny ekonomiky (více menších změn)
@@ -1225,7 +1225,7 @@ STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}Semafor
STR_CONFIG_PATCHES_ENABLE_SIGNAL_GUI :{LTBLUE}Okno pro stavbu signálů: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOWN_LAYOUT_INVALID :{WHITE}Vzor "žádné silnice" se neuplatňuje v editoru scénářů
STR_CONFIG_PATCHES_TOWN_LAYOUT :{LTBLUE}Vyber vzor městských silnic: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOWN_LAYOUT :{LTBLUE}Vzor městských silnic: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOWN_LAYOUT_NO_ROADS :žádné silnice
STR_CONFIG_PATCHES_TOWN_LAYOUT_DEFAULT :původní
STR_CONFIG_PATCHES_TOWN_LAYOUT_BETTER_ROADS :lepší silnice
@@ -1244,9 +1244,9 @@ STR_CONFIG_PATCHES_TOWN_GROWTH_SLOW :pomalá
STR_CONFIG_PATCHES_TOWN_GROWTH_NORMAL :normální
STR_CONFIG_PATCHES_TOWN_GROWTH_FAST :rychlá
STR_CONFIG_PATCHES_TOWN_GROWTH_VERY_FAST :velmi rychlá
STR_CONFIG_PATCHES_LARGER_TOWNS :{LTBLUE}Podíl měst, které budou růst dvakrát tak rychle: {ORANGE}1 z {STRING}
STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED :{LTBLUE}Podíl měst, které budou růst dvakrát tak rychle: {ORANGE}žádné
STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER :{LTBLUE}Násobitel původní velikosti města: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LARGER_TOWNS :{LTBLUE}Podíl měst, ze kterých se stanou velkoměsta: {ORANGE}1 z {STRING}
STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED :{LTBLUE}Podíl měst, ze kterých se stanou velkoměsta: {ORANGE}žádné
STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER :{LTBLUE}Činitel základní velikosti města: {ORANGE}{STRING}
STR_CONFIG_MODIFIED_ROAD_REBUILD :{LTBLUE}Odstraňovat nesmyslné prvky vozovky při výstavbě silnic
STR_CONFIG_PATCHES_GUI :{BLACK}Ovládaní
@@ -2833,7 +2833,7 @@ STR_8858_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Označen
STR_TIMETABLE_TOOLTIP :{BLACK}Jízdní řád - příkaz vybereš kliknutím.
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Změnit čas pro splnění jízdního příkazu
STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Zrušit čas pro splnění jízdního příkazu
STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Smazat ukazatel zpoždění, takže vozidlo pojede na čas
STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Smazat zpoždění, takže vozidlo pojede na čas
STR_SERVICE_HINT :{BLACK}Přeskoč tento cíl, pokud není potřeba pravidelná údržba
STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER :{BLACK}Cena: {CURRENCY} Hmotnost: {WEIGHT_S}{}Rychlost: {VELOCITY} Výkon: {POWER}{}Cena provozu: {CURRENCY} ročně{}Kapacita: {CARGO}
STR_885C_BROKEN_DOWN :{RED}Porucha
@@ -2856,7 +2856,7 @@ STR_886B_CAN_T_RENAME_TRAIN_VEHICLE :{WHITE}Nemohu p
STR_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}U označeného příkazu vozidlo musí vyložit náklad
STR_TRANSFER :{BLACK}Překládka
STR_CLEAR_TIME :{BLACK}Smazat čas
STR_RESET_LATENESS :{BLACK}Smazat ukazatel zpoždění
STR_RESET_LATENESS :{BLACK}Zapomenout zpoždění
STR_TRAIN_STOPPING :{RED}Zastavuje
STR_TRAIN_STOPPING_VEL :{RED}Zastavuje, {VELOCITY}
@@ -2888,7 +2888,7 @@ STR_9000_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Silničn
STR_9001_ROAD_VEHICLES :{WHITE}{COMPANY} - {COMMA} silniční{P "" "" ch} vozid{P lo la el}
STR_9002 :{WHITE}{VEHICLE}
STR_9003_ROAD_VEHICLE_DEPOT :{WHITE}Garáže pro silniční vozidla {TOWN}
STR_9004_NEW_VEHICLES :{BLACK}Nová silniční vozidla
STR_9004_NEW_VEHICLES :{BLACK}Nová vozidla
STR_9006_NEW_ROAD_VEHICLES :{WHITE}Nová silniční vozidla
STR_9007_BUILD_VEHICLE :{BLACK}Koupit silniční vozidlo
STR_9009_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Nemohu koupit nové silniční vozidlo...
@@ -3193,6 +3193,7 @@ STR_NEWGRF_NOT_FOUND_WARNING :{WHITE}Pro nač
STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Chybějící grafické soubory
STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Spuštění hry může shodit OpenTTD. Nehlaš chybu kvůli pádům způsobeným touto akcí.{}Opravdu chceš rozjet hru?
STR_LOADGAME_REMOVED_TRAMS :{WHITE}Hra byla uložena ve verzi bez podpory tramvají. Všechny tramvaje se odstraní.
STR_CURRENCY_WINDOW :{WHITE}Vlastní měna
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Kurz měny: {ORANGE}{CURRENCY} = £ {COMMA}
STR_CURRENCY_SEPARATOR :{LTBLUE}Oddělovač:
+1
View File
@@ -3129,6 +3129,7 @@ STR_NEWGRF_NOT_FOUND_WARNING :{WHITE}Mangler
STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Manglende GRF-fil(er)
STR_NEWGRF_UNPAUSE_WARNING :{WHITE}OpenTTD kan gå ned, når spillet sættes i gang igen. Undlad at indsende fejlrapporter for efterfølgende nedbrud.{}Vil du virkelig sætte spillet i gang igen?
STR_LOADGAME_REMOVED_TRAMS :{WHITE}Spillet er gemt i en version uden sporveje. Alle sporveje er blevet fjernet.
STR_CURRENCY_WINDOW :{WHITE}Brugerdefineret møntfod
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Kurs: {ORANGE}{CURRENCY} = £ {COMMA}
STR_CURRENCY_SEPARATOR :{LTBLUE}Tilskuer:
+5
View File
@@ -3098,6 +3098,7 @@ STR_NEWGRF_ERROR_LOAD_AFTER :{STRING} moet g
STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{STRING} heeft OpenTTD versie {STRING} of beter nodig.
STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :het GRF bestand is bedoelt voor het vertalen van
STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Er zijn teveel NewGRFs geladen.
STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Laden {STRING} als statisch NewGRF met {STRING} kan desyncs veroorzaken.
STR_NEWGRF_ADD :{BLACK}Toevoegen
STR_NEWGRF_ADD_TIP :{BLACK}Voeg een NewGRF bestand toe aan te lijst
@@ -3129,6 +3130,10 @@ STR_NEWGRF_NOT_FOUND_WARNING :{WHITE}Er zijn
STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Ontbrekende GRF bestand(en)
STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Pauze uit zetten kan OpenTTD laten vastlopen. Geef geen fout rapporten bij herhaaldelijk vastlopen.{}Weet je zeker dat je pauze wilt uit zetten?
STR_NEWGRF_BROKEN :{WHITE}Gedrag van NewGRF '{0:STRING}' zal waarschijnlijk desyncs en/of crashes veroorzaken.
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Het verandert de lengte van voertuig '{1:ENGINE}' wanneer niet in een depot.
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Trein '{VEHICLE}' behorend bij '{COMPANY}' heeft een ongeldige lengte. Het is waarschijnlijk veroorzaakt door problemen metNewGRFs. Het spel kan desync krijgen of crash.
STR_LOADGAME_REMOVED_TRAMS :{WHITE}Spel was opgeslagen in een versie zonder tram ondersteuning. Alle trams zijn verwijderd.
STR_CURRENCY_WINDOW :{WHITE}Aangepaste valuta
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Wisselkoers: {ORANGE}{CURRENCY} = £ {COMMA}
STR_CURRENCY_SEPARATOR :{LTBLUE}Scheidingsteken:
+5
View File
@@ -3098,6 +3098,7 @@ STR_NEWGRF_ERROR_LOAD_AFTER :{STRING} must b
STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{STRING} requires OpenTTD version {STRING} or better.
STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :the GRF file it was designed to translate
STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Too many NewGRFs are loaded.
STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Loading {STRING} as static NewGRF with {STRING} could cause desyncs.
STR_NEWGRF_ADD :{BLACK}Add
STR_NEWGRF_ADD_TIP :{BLACK}Add a NewGRF file to the list
@@ -3129,6 +3130,10 @@ STR_NEWGRF_NOT_FOUND_WARNING :{WHITE}Missing
STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Missing GRF file(s)
STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Unpausing can crash OpenTTD. Do not file bug reports for subsequent crashes.{}Do you really want to unpause?
STR_NEWGRF_BROKEN :{WHITE}Behaviour of NewGRF '{0:STRING}' is likely to cause desyncs and/or crashes.
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}It changes vehicle length for '{1:ENGINE}' when not inside a depot.
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Train '{VEHICLE}' belonging to '{COMPANY}' has invalid length. It is probably caused by problems with NewGRFs. Game may desync or crash.
STR_LOADGAME_REMOVED_TRAMS :{WHITE}Game was saved in version without tram support. All trams have been removed.
STR_CURRENCY_WINDOW :{WHITE}Custom currency
+10 -52
View File
@@ -2,7 +2,7 @@
##ownname Eesti keel
##isocode et_ET
##plural 0
##case g genitiiv
##case g in
#
@@ -50,138 +50,92 @@ STR_001C_FRUIT :Puuviljad
STR_001C_FRUIT.g :Puuviljade
STR_001D_DIAMONDS :Teemantid
STR_001D_DIAMONDS.g :Teemantite
STR_001D_DIAMONDS.genitiiv :Teemantite
STR_001E_FOOD :Toit
STR_001E_FOOD.g :Toidu
STR_001E_FOOD.genitiiv :Toidu
STR_001F_PAPER :Paber
STR_001F_PAPER.g :Paberi
STR_001F_PAPER.genitiiv :Paberi
STR_0020_GOLD :Kuld
STR_0020_GOLD.g :Kulla
STR_0020_GOLD.genitiiv :Kulla
STR_0021_WATER :Vesi
STR_0021_WATER.g :Vee
STR_0021_WATER.genitiiv :Vee
STR_0022_WHEAT :Nisu
STR_0022_WHEAT.g :Nisu
STR_0022_WHEAT.genitiiv :Nisu
STR_0023_RUBBER :Kumm
STR_0023_RUBBER.g :Kummi
STR_0023_RUBBER.genitiiv :Kummi
STR_0024_SUGAR :Suhkur
STR_0024_SUGAR.g :Suhkru
STR_0024_SUGAR.genitiiv :Suhkru
STR_0025_TOYS :Mänguasjad
STR_0025_TOYS.g :Mänguasjade
STR_0025_TOYS.genitiiv :Mänguasjade
STR_0026_CANDY :Maiustused
STR_0026_CANDY.g :Maiustuste
STR_0026_CANDY.genitiiv :Maiustuste
STR_0027_COLA :Koola
STR_0027_COLA.g :Koola
STR_0027_COLA.genitiiv :Koola
STR_0028_COTTON_CANDY :Suhkruvatt
STR_0028_COTTON_CANDY.g :Suhkruvati
STR_0028_COTTON_CANDY.genitiiv :Suhkruvati
STR_0029_BUBBLES :Mullid
STR_0029_BUBBLES.g :Mullide
STR_0029_BUBBLES.genitiiv :Mullide
STR_002A_TOFFEE :Iiris
STR_002A_TOFFEE.g :Iirise
STR_002A_TOFFEE.genitiiv :Iirise
STR_002B_BATTERIES :Patareid
STR_002B_BATTERIES.g :Patareide
STR_002B_BATTERIES.genitiiv :Patareide
STR_002C_PLASTIC :Plastmass
STR_002C_PLASTIC.g :Plastmassi
STR_002C_PLASTIC.genitiiv :Plastmassi
STR_002D_FIZZY_DRINKS :Kihisevad joogid
STR_002D_FIZZY_DRINKS.g :Kihisevate jookide
STR_002D_FIZZY_DRINKS.genitiiv :Kihisevate jookide
STR_002E :
STR_002F_PASSENGER :Reisija
STR_002F_PASSENGER.g :Reisijate
STR_002F_PASSENGER.genitiiv :Reisijate
STR_0030_COAL :Kivisüsi
STR_0030_COAL.g :Kivisöe
STR_0030_COAL.genitiiv :Kivisöe
STR_0031_MAIL :Post
STR_0031_MAIL.g :Posti
STR_0032_OIL :Nafta
STR_0032_OIL.g :Nafta
STR_0032_OIL.genitiiv :Nafta
STR_0033_LIVESTOCK :Kariloom
STR_0033_LIVESTOCK.g :Kariloomade
STR_0033_LIVESTOCK.genitiiv :Kariloomade
STR_0034_GOODS :Kaubad
STR_0034_GOODS.g :Kaupade
STR_0034_GOODS.genitiiv :Kaupade
STR_0035_GRAIN :Teravili
STR_0035_GRAIN.g :Teravilja
STR_0035_GRAIN.genitiiv :Teravilja
STR_0036_WOOD :Puit
STR_0036_WOOD.g :Puidu
STR_0036_WOOD.genitiiv :Puidu
STR_0037_IRON_ORE :Rauamaak
STR_0037_IRON_ORE.g :Rauamaagi
STR_0037_IRON_ORE.genitiiv :Rauamaagi
STR_0038_STEEL :Teras
STR_0038_STEEL.g :Terase
STR_0038_STEEL.genitiiv :Terase
STR_0039_VALUABLES :Väärisesemed
STR_0039_VALUABLES.g :Väärisesemete
STR_0039_VALUABLES.genitiiv :Väärisesemete
STR_003A_COPPER_ORE :Vasemaak
STR_003A_COPPER_ORE.g :Vasemaagi
STR_003A_COPPER_ORE.genitiiv :Vasemaagi
STR_003B_MAIZE :Mais
STR_003B_MAIZE.g :Maisi
STR_003C_FRUIT :Puuviljad
STR_003C_FRUIT.g :Puuviljade
STR_003C_FRUIT.genitiiv :Puuviljade
STR_003D_DIAMOND :Teemant
STR_003D_DIAMOND.g :Teemantite
STR_003D_DIAMOND.genitiiv :Teemantite
STR_003E_FOOD :Toit
STR_003E_FOOD.g :Toidu
STR_003E_FOOD.genitiiv :Toidu
STR_003F_PAPER :Paber
STR_003F_PAPER.g :Paberi
STR_003F_PAPER.genitiiv :Paberi
STR_0040_GOLD :Kuld
STR_0040_GOLD.g :Kulla
STR_0040_GOLD.genitiiv :Kulla
STR_0041_WATER :Vesi
STR_0041_WATER.g :Vee
STR_0041_WATER.genitiiv :Vee
STR_0042_WHEAT :Nisu
STR_0042_WHEAT.g :Nisu
STR_0042_WHEAT.genitiiv :Nisu
STR_0043_RUBBER :Kumm
STR_0043_RUBBER.g :kummi
STR_0043_RUBBER.genitiiv :Kummi
STR_0044_SUGAR :Suhkur
STR_0044_SUGAR.g :Suhkru
STR_0044_SUGAR.genitiiv :Suhkru
STR_0045_TOY :Mänguasjad
STR_0045_TOY.genitiiv :Mänguasjade
STR_0046_CANDY :Maiustus
STR_0046_CANDY.genitiiv :Maiustuste
STR_0047_COLA :Koola
STR_0047_COLA.genitiiv :Koola
STR_0048_COTTON_CANDY :Suhkruvatt
STR_0048_COTTON_CANDY.genitiiv :Suhkruvati
STR_0049_BUBBLE :Mullid
STR_0049_BUBBLE.genitiiv :Mullide
STR_004A_TOFFEE :Iiris
STR_004A_TOFFEE.genitiiv :Iirise
STR_004B_BATTERY :Patarei
STR_004B_BATTERY.genitiiv :Patareide
STR_004C_PLASTIC :Plastmass
STR_004C_PLASTIC.genitiiv :Plastmassi
STR_004D_FIZZY_DRINK :Kihisevad joogid
STR_004D_FIZZY_DRINK.genitiiv :Kihisevate jookide
STR_QUANTITY_NOTHING :
STR_QUANTITY_PASSENGERS :{COMMA} reisija{P "" t}
STR_QUANTITY_COAL :{WEIGHT} kivisütt
@@ -749,10 +703,10 @@ STR_0241_POWER_STATION :{BLACK}Elektrij
STR_0242_SAWMILL :{BLACK}Saeveski
STR_0243_FOREST :{BLACK}Mets
STR_0244_OIL_REFINERY :{BLACK}Naftarafineerimistehas
STR_0245_OIL_RIG :{BLACK}Naftaplatvorm
STR_0246_FACTORY :{BLACK}Vabrik
STR_0245_OIL_RIG :{BLACK}Naftapuurplatvorm
STR_0246_FACTORY :{BLACK}Tehas
STR_0247_STEEL_MILL :{BLACK}Terasetööstus
STR_0248_FARM :{BLACK}Talu
STR_0248_FARM :{BLACK}Põllumajandusettevõte
STR_0249_IRON_ORE_MINE :{BLACK}Rauamaagikaevandus
STR_024A_OIL_WELLS :{BLACK}Naftapuuraugud
STR_024B_BANK :{BLACK}Pank
@@ -951,7 +905,7 @@ STR_0311_SELECT_TOYLAND_LANDSCAPE :{BLACK}Vali 'm
STR_0312_FUND_CONSTRUCTION_OF_NEW :{BLACK}Rahasta uute ehitiste konstrueerimist
############ range for menu starts
STR_INDUSTRY_DIR :Tööstuste nimistu
STR_INDUSTRY_DIR :Tööstuste kataloog
STR_0313_FUND_NEW_INDUSTRY :Uue tööstuse rahastamine
############ range ends here
@@ -2118,7 +2072,7 @@ STR_4831_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}...metsa
STR_4832_ANNOUNCES_IMMINENT_CLOSURE :{BLACK}{BIGFONT}{STRING} juhtkond teatab sulgemisest!
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO :{BLACK}{BIGFONT}{STRING} teatab sulgemisest varustusprobleemide tõttu!
STR_4834_LACK_OF_NEARBY_TREES_CAUSES :{BLACK}{BIGFONT}Lähiümbruse puude puudumine põhjustab {STRING} sulgemise!
STR_4835_INCREASES_PRODUCTION :{BLACK}{BIGFONT}{INDUSTRY} kasvab toodang!
STR_4835_INCREASES_PRODUCTION :{BLACK}{BIGFONT}{INDUSTRY} toodang kasvas!
STR_4836_NEW_COAL_SEAM_FOUND_AT :{BLACK}{BIGFONT}{INDUSTRY} lähedal avati uus kivisöe kiht!{}Toodang kahekordistub!
STR_4837_NEW_OIL_RESERVES_FOUND :{BLACK}{BIGFONT}{INDUSTRY} lähedal avastati uusi naftareserve!{}Toodang kahekordistub!
STR_4838_IMPROVED_FARMING_METHODS :{BLACK}{BIGFONT}{INDUSTRY} võttis kasutusele uued põllutöövahendid! Toodang kahekordistub!
@@ -3229,6 +3183,10 @@ STR_NEWGRF_NOT_FOUND_WARNING :{WHITE}Mängu l
STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Puuduolevad GRF failid
STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Pausi lõpetamine võib põhjustada OpenTTD krahhi. Ära teavita järgnevatest krahhidest.{}Oled sa tõepoolest veendunud, et sa soovid pausi lõpetada?
STR_NEWGRF_BROKEN :{WHITE}NewGRF '{STRING}' käitumine põhjustab tõenäoliselt sünkrooni katkemisi ja/või mängu kokkujooksmiseid.
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Depoost väljas asudes muudab sõiduki '{1:ENGINE}' pikkust.
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Ettevõtte '{1:COMPANY}' rongil '{0:VEHICLE}' on ebasobiv pikkus. See on tõenäoliselt põhjustatud problemaatilistest NewGRF-dest. Mäng võib kokku joosta või
STR_LOADGAME_REMOVED_TRAMS :{WHITE}Mäng salvestati trammide toetuseta versioonis. Kõik trammid eemaldati.
STR_CURRENCY_WINDOW :{WHITE}Isiklik valuuta
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Vahetuskurss: {ORANGE}{CURRENCY} = £ {COMMA}
STR_CURRENCY_SEPARATOR :{LTBLUE}Vahemärk:
+4 -1
View File
@@ -852,6 +852,7 @@ STR_0313_FUND_NEW_INDUSTRY :Rakenna uutta t
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Rakenna uutta teollisuutta
STR_JUST_STRING :{STRING}
STR_JUST_INT :{NUM}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...voidaan rakentaa vain kaupunkeihin.
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...voidaan rakentaa vain sademetsäalueisiin.
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...voidaan rakentaa vain aavikkoalueisiin.
@@ -1111,7 +1112,7 @@ STR_CONFIG_PATCHES_LOADING_INDICATORS_OWN :Oma yhtiö
STR_CONFIG_PATCHES_LOADING_INDICATORS_ALL :Kaikki yhtiöt
STR_CONFIG_PATCHES_TIMETABLE_ALLOW :{LTBLUE}Aikataulut ajoneuvoille: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TIMETABLE_IN_TICKS :{LTBLUE}Näytä aikataulu tickseissä päivien sijaan: {ORANGE}{STRING}
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE :{LTBLUE}Raidetyyppi oletuksena: {ORANGE}{STRING}
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE :{LTBLUE}Oletusraidetyyppi: {ORANGE}{STRING}
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_RAIL :Tavallinen raide
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_ELRAIL :Sähköraide
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MONORAIL :Yksiraiteinen
@@ -1682,8 +1683,10 @@ STR_TOWN_LABEL :{WHITE}{TOWN}
STR_TOWN_LABEL_TINY_BLACK :{TINYFONT}{BLACK}{TOWN}
STR_TOWN_LABEL_TINY_WHITE :{TINYFONT}{WHITE}{TOWN}
STR_2002 :{TINYFONT}{BLACK}{SIGN}
STR_2002_WHITE :{TINYFONT}{WHITE}{SIGN}
STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Rakennus täytyy purkaa ensin.
STR_2005 :{WHITE}{TOWN}
STR_CITY :{WHITE}{TOWN} (City)
STR_2006_POPULATION :{BLACK}Asukasluku: {ORANGE}{COMMA}{BLACK} Taloja: {ORANGE}{COMMA}
STR_2007_RENAME_TOWN :Nimeä kaupunki
STR_2008_CAN_T_RENAME_TOWN :{WHITE}Kaupungin nimeä ei voi vaihtaa.
+5
View File
@@ -3099,6 +3099,7 @@ STR_NEWGRF_ERROR_LOAD_AFTER :{STRING} doit
STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{STRING} nécessite OpenTTD version {STRING} ou supérieur.
STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :le fichier GRF qu'il doit traduire
STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Trop de NewGRFs sont chargés.
STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Charger {STRING} comme NewGRF statique avec {STRING} peut provoquer des erreurs de synchronistation.
STR_NEWGRF_ADD :{BLACK}Ajouter
STR_NEWGRF_ADD_TIP :{BLACK}Ajouter un fichier NewGRF à la liste
@@ -3130,6 +3131,10 @@ STR_NEWGRF_NOT_FOUND_WARNING :{WHITE}Fichier(
STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Fichier(s) GRF manquant(s)
STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Retirer la pause peut faire planter OpenTTD. Ne créez pas de rapport de bug pour ceux-ci.{}Voulez-vous vraiment retirer la pause?
STR_NEWGRF_BROKEN :{WHITE}Le comportement du NewGRF '{0:STRING}' peut causer des erreurs de synchronisation et/ou des plantages.
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Il modifie la longueur de vehicule pour '{1:ENGINE}' en dehors du dépot.
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Le train '{VEHICLE}' appartenant à '{COMPANY}' a une longueur invalide. Celà est probablement dû à des problèmes avec des NewGRFs. Le jeu peut avoir des erreurs de synchronisation ou planter.
STR_LOADGAME_REMOVED_TRAMS :{WHITE}Partie sauvegardée avec une version sans support des tramways. Tous les tramways ont été supprimés.
STR_CURRENCY_WINDOW :{WHITE}Devise personnalisée
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Taux de change : {ORANGE}{CURRENCY} = £ {COMMA}
STR_CURRENCY_SEPARATOR :{LTBLUE}Séparateur :
+274 -197
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -3130,6 +3130,7 @@ STR_NEWGRF_NOT_FOUND_WARNING :{WHITE}Vantar G
STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Vantar GRF skrá(r)
STR_NEWGRF_UNPAUSE_WARNING :{WHITE}OpenTTD getur hrunið ef leikur er settur af stað. Ekki skrá villufærslur fyrir eftirfarandi hrun.{}Ertu viss um að þú viljir setja leikinn af stað?
STR_LOADGAME_REMOVED_TRAMS :{WHITE}Leikurinn var vistaður í útgáfu án sporvagna. Allir sporvagnar hafa verið fjarlægðir.
STR_CURRENCY_WINDOW :{WHITE}Sérvalinn gjaldeyrir
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Gengi: {ORANGE}{CURRENCY} = £ {COMMA}
STR_CURRENCY_SEPARATOR :{LTBLUE}Aðskilnaðarmerki:
+9 -4
View File
@@ -442,7 +442,7 @@ STR_017F_ZOOM_THE_VIEW_IN :{BLACK}Zooma la
STR_0180_ZOOM_THE_VIEW_OUT :{BLACK}Zooma la visuale indietro
STR_0181_BUILD_RAILROAD_TRACK :{BLACK}Costruisci ferrovie
STR_0182_BUILD_ROADS :{BLACK}Costruisci strade
STR_0183_BUILD_SHIP_DOCKS :{BLACK}Costruisci moli
STR_0183_BUILD_SHIP_DOCKS :{BLACK}Costruisci trasporti su acqua
STR_0184_BUILD_AIRPORTS :{BLACK}Costruisci aeroporti
STR_0185_PLANT_TREES_PLACE_SIGNS :{BLACK}Pianta alberi, posiziona cartelli etc.
STR_0186_LAND_BLOCK_INFORMATION :{BLACK}Informazioni area terreno
@@ -1241,8 +1241,8 @@ STR_CHEAT_SETUP_PROD :{LTBLUE}Permett
STR_HEADING_FOR_WAYPOINT :{LTBLUE}Diretto a {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Diretto a {WAYPOINT}, {VELOCITY}
STR_GO_TO_WAYPOINT :Procedi attraverso {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT :Procedi no-stop attraverso {WAYPOINT}
STR_GO_TO_WAYPOINT :Passa per {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT :Passa no-stop per {WAYPOINT}
STR_WAYPOINTNAME_CITY :Waypoint di {TOWN}
STR_WAYPOINTNAME_CITY_SERIAL :Waypoint di {TOWN} #{COMMA}
@@ -1285,7 +1285,7 @@ STR_BUILD_CANALS_TIP :{BLACK}Costruis
STR_LANDINFO_CANAL :Canale
STR_CANT_BUILD_LOCKS :{WHITE}Impossibile costruire qui le chiuse...
STR_BUILD_LOCKS_TIP :{BLACK}Costruisci chiuse
STR_BUILD_LOCKS_TIP :{BLACK}Costruisce chiuse per i canali
STR_LANDINFO_LOCK :Chiuse
STR_BUOY_IS_IN_USE :{WHITE}...la boa è in uso!
@@ -3100,6 +3100,7 @@ STR_NEWGRF_ERROR_LOAD_AFTER :{STRING} deve e
STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{STRING} richiede OpenTTD versione {STRING} o superiore.
STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :il file GRF che era progettato per tradurre
STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Troppi file NewGRF caricati.
STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Caricare {STRING} come NewGRF statico insieme a {STRING} può causare errori di sincronizzazione
STR_NEWGRF_ADD :{BLACK}Aggiungi
STR_NEWGRF_ADD_TIP :{BLACK}Aggiunge un file NewGRF all'elenco
@@ -3131,6 +3132,10 @@ STR_NEWGRF_NOT_FOUND_WARNING :{WHITE}Mancano
STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}File GRF mancanti
STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Uscire dalla pausa può causare un crash: nel caso, si prega di non inviare segnalazioni bug al riguardo.{}Uscire dalla pausa?
STR_NEWGRF_BROKEN :{WHITE}Le caratteristiche del NewGRF '{0:STRING}' possono causare errori di sincronizzazione e/o crash.
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}La lunghezza dei veicoli '{1:ENGINE}' può cambiare al di fuori dei depositi.
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Il treno '{VEHICLE}' della '{COMPANY}' ha una lunghezza non valida, probabilmente a causa di problemi con un NewGRF. È possibile che si verifichino errori di sincronizzazione o crash.
STR_LOADGAME_REMOVED_TRAMS :{WHITE}La partita è stata salvata in una versione senza il supporto per i tram. Tutte le tranvie sono state rimosse.
STR_CURRENCY_WINDOW :{WHITE}Valuta personalizzata
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Cambio: {ORANGE}{CURRENCY} = £ {COMMA}
STR_CURRENCY_SEPARATOR :{LTBLUE}Separatore:
+41 -36
View File
@@ -200,7 +200,7 @@ STR_00E6_VEHICLES :차량
STR_00E7_INDUSTRIES :산업시설
STR_00E8_ROUTES :경로
STR_00E9_VEGETATION :초목
STR_00EA_OWNERS :소유
STR_00EA_OWNERS :소유
STR_00EB_ROADS :{BLACK}{TINYFONT}도로
STR_00EC_RAILROADS :{BLACK}{TINYFONT}철도
STR_00ED_STATIONS_AIRPORTS_DOCKS :{BLACK}{TINYFONT}역/공항/항구
@@ -261,7 +261,7 @@ STR_0123_FIELDS :{BLACK}{TINYFON
STR_0124_TREES :{BLACK}{TINYFONT}나무
STR_0125_ROCKS :{BLACK}{TINYFONT}바위
STR_0126_WATER :{BLACK}{TINYFONT}물
STR_0127_NO_OWNER :{BLACK}{TINYFONT}소유 없음
STR_0127_NO_OWNER :{BLACK}{TINYFONT}소유 없음
STR_0128_TOWNS :{BLACK}{TINYFONT}마을
STR_0129_INDUSTRIES :{BLACK}{TINYFONT}산업 시설
STR_012A_DESERT :{BLACK}{TINYFONT}사막
@@ -342,11 +342,11 @@ STR_UNITS_FORCE_SI :{COMMA} kN
############ range for menu starts
STR_0154_OPERATING_PROFIT_GRAPH :경영 수익 그래프
STR_0155_INCOME_GRAPH :수 그래프
STR_0155_INCOME_GRAPH :수 그래프
STR_0156_DELIVERED_CARGO_GRAPH :수송 화물량 그래프
STR_0157_PERFORMANCE_HISTORY_GRAPH :성취도 그래프
STR_0158_COMPANY_VALUE_GRAPH :회사가치 그래프
STR_0159_CARGO_PAYMENT_RATES :화물 지불량 그래프
STR_0159_CARGO_PAYMENT_RATES :화물 운송단가 그래프
STR_015A_COMPANY_LEAGUE_TABLE :회사 성취도 순위
STR_PERFORMANCE_DETAIL_MENU :상세 성취도
############ range for menu ends
@@ -443,7 +443,7 @@ STR_0181_BUILD_RAILROAD_TRACK :{BLACK}철도
STR_0182_BUILD_ROADS :{BLACK}도로 건설
STR_0183_BUILD_SHIP_DOCKS :{BLACK}항만 건설
STR_0184_BUILD_AIRPORTS :{BLACK}공항 건설
STR_0185_PLANT_TREES_PLACE_SIGNS :{BLACK}나무 심기, 팻말 달기 등
STR_0185_PLANT_TREES_PLACE_SIGNS :{BLACK}나무 심기
STR_0186_LAND_BLOCK_INFORMATION :{BLACK}지역 정보
STR_0187_OPTIONS :{BLACK}옵션
STR_0188 :{BLACK}{SMALLUPARROW}
@@ -464,7 +464,7 @@ STR_0192_SHOW_VEHICLES_ON_MAP :{BLACK}맵에
STR_0193_SHOW_INDUSTRIES_ON_MAP :{BLACK}맵에 산업시설 표시
STR_0194_SHOW_TRANSPORT_ROUTES_ON :{BLACK}맵에 수송경로 표시
STR_0195_SHOW_VEGETATION_ON_MAP :{BLACK}맵에 초목 표시
STR_0196_SHOW_LAND_OWNERS_ON_MAP :{BLACK}맵에 부지 소유 표시
STR_0196_SHOW_LAND_OWNERS_ON_MAP :{BLACK}맵에 부지 소유 표시
STR_0197_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}마을 이름 표시/숨기기
STR_0198_PROFIT_THIS_YEAR_LAST_YEAR :{TINYFONT}{BLACK}올해 수입: {CURRENCY} (작년: {CURRENCY})
@@ -484,7 +484,7 @@ STR_01A3_LAND_AREA_INFORMATION :{WHITE}이 지
STR_01A4_COST_TO_CLEAR_N_A :{BLACK}초기화 가격: {LTBLUE}없음
STR_01A5_COST_TO_CLEAR :{BLACK}초기화 가격: {LTBLUE}{CURRENCY}
STR_01A6_N_A :없음
STR_01A7_OWNER :{BLACK}소유: {LTBLUE}{STRING}
STR_01A7_OWNER :{BLACK}소유: {LTBLUE}{STRING}
STR_01A8_LOCAL_AUTHORITY :{BLACK}지역 당국: {LTBLUE}{STRING}
STR_01A9_NONE :없음
STR_01AA_NAME :{BLACK}이름
@@ -608,7 +608,7 @@ STR_0215_INDUSTRIALIST :공업가
STR_0216_CAPITALIST :자본가
STR_0217_MAGNATE :권력자
STR_0218_MOGUL :거물
STR_0219_TYCOON_OF_THE_CENTURY :타이쿤!
STR_0219_TYCOON_OF_THE_CENTURY :금세기의 타이쿤!
STR_HIGHSCORE_NAME :{BIGFONT}{PLAYERNAME}, {COMPANY}
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA})
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{COMPANY}가 '{STRING}'를(을) 달성했습니다!
@@ -801,15 +801,15 @@ STR_02DA_ON :{BLACK}켜기
STR_02DC_DISPLAY_SUBSIDIES :{BLACK}보조금 표시
STR_02DD_SUBSIDIES :보조금
STR_02DE_MAP_OF_WORLD :전체 지도 보기
STR_EXTRA_VIEW_PORT :추가 보임창
STR_EXTRA_VIEW_PORT :외부 화면
STR_SIGN_LIST :팻말 목록
STR_02DF_TOWN_DIRECTORY :도시 목록
STR_TOWN_POPULATION :{BLACK}세계 인구: {COMMA}
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}보임창 {COMMA}
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}보임창으로 복사
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}이 지역의 풍경을 이 보임창으로 복사합니다
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}보임창에서 붙여넣기
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}이 지역의 풍경을 이 보임창에 붙여넣습니다
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}외부 화면 {COMMA}
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}외부 화면에 저장
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}현재 장소를 외부 화면에 저장합니다.
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}이 장소로 이동
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}외부 화면에 저장된 장소로 이동합니다.
STR_02E0_CURRENCY_UNITS :{BLACK}화폐 단위
STR_02E1 :{BLACK}{SKIP}{STRING}
@@ -1025,7 +1025,7 @@ STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}드래
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}도시 소유의 도로, 다리 등의 제거를 허용 : {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}매우 긴 열차 허용 : {ORANGE}{STRING}
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}사실감있는 열차 가속 사용 : {ORANGE}{STRING}
STR_CONFIG_PATCHES_FORBID_90_DEG :{LTBLUE}열차/선박의 90도 회전을 금지함: {ORANGE}{STRING} {LTBLUE} (requires NPF)
STR_CONFIG_PATCHES_FORBID_90_DEG :{LTBLUE}열차/선박의 90도 회전을 금지함: {ORANGE}{STRING} {LTBLUE} (NPF 필요)
STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}바로 옆에 역이 있으면 그 역의 이름으로 건설 (새로운 이름X) : {ORANGE}{STRING}
STR_CONFIG_PATCHES_FULLLOADANY :{LTBLUE}'전체 싣기'인 경우, 단 하나의 화물이라도 차면 역을 떠남 : {ORANGE}{STRING}
STR_CONFIG_PATCHES_IMPROVEDLOAD :{LTBLUE}향상된 수송 알고리즘 사용 : {ORANGE}{STRING}
@@ -1043,7 +1043,7 @@ STR_CONFIG_PATCHES_SAMEINDCLOSE :{LTBLUE}같은
STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}날짜를 일(日)단위까지 상세하게 표시 : {ORANGE}{STRING}
STR_CONFIG_PATCHES_SIGNALSIDE :{LTBLUE}신호등을 통행 방식에 따라 다른 위치에 설치 : {ORANGE}{STRING}
STR_CONFIG_PATCHES_SHOWFINANCES :{LTBLUE}연말에 재정 창을 띄움 : {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEW_NONSTOP :{LTBLUE}TTD패치에 적합한 급행(논스톱) 처리 : {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEW_NONSTOP :{LTBLUE}TTD패치에 적합한 직통(논스톱) 처리 : {ORANGE}{STRING}
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}(획기적 방법으로) 자동차를 대기하게 하기 : {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}가장자리에 마우스를 가져가면 화면을 움직이게 하기 : {ORANGE}{STRING}
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}지역 당국에 뇌물을 주는 행위 허용 : {ORANGE}{STRING}
@@ -1094,7 +1094,7 @@ STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}역의
STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}헬리콥터를 발착장에서 자동으로 점검 : {ORANGE}{STRING}
STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR :{LTBLUE}철도/도로/항만/공항 툴바에 지형 정보 링크 : {ORANGE}{STRING}
STR_CONFIG_PATCHES_REVERSE_SCROLLING :{LTBLUE}스크롤 방향 뒤집기 : {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_SCROLLING :{LTBLUE}부드러운 보임창 스크롤: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_SCROLLING :{LTBLUE}부드러운 화면 스크롤: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MEASURE_TOOLTIP :{LTBLUE}건설도구 사용시 거리측정 툴팁 표시 : {ORANGE}{STRING}
STR_CONFIG_PATCHES_LIVERIES :{LTBLUE}회사 조합원 표시 : {ORANGE}{STRING}
STR_CONFIG_PATCHES_LIVERIES_NONE :없음
@@ -1123,9 +1123,9 @@ STR_CONFIG_PATCHES_LOADING_INDICATORS_OWN :소유한 회
STR_CONFIG_PATCHES_LOADING_INDICATORS_ALL :모든 회사
STR_CONFIG_PATCHES_TIMETABLE_ALLOW :{LTBLUE}차량에 시간표 사용: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TIMETABLE_IN_TICKS :{LTBLUE}시간표를 일(日)이 아닌 틱으로 표시: {ORANGE}{STRING}
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE :{LTBLUE}기본값으로 사용할 철도 종류 (새 게임/불러오기 후): {ORANGE}{STRING}
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE :{LTBLUE}자주 쓰는 철도 종류 설정: {ORANGE}{STRING}
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_RAIL :보통 철도
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_ELRAIL :전 철도
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_ELRAIL :전 철도
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MONORAIL :모노레일
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MAGLEV :자기부상
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_FIRST :처음 사용 가능한 것
@@ -1240,8 +1240,8 @@ STR_CHEAT_SETUP_PROD :{LTBLUE}산업
STR_HEADING_FOR_WAYPOINT :{LTBLUE}{WAYPOINT}(으)로 향하는 중
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}{WAYPOINT}, {VELOCITY}(으)로 향하는 중
STR_GO_TO_WAYPOINT :{WAYPOINT}을/를 경유
STR_GO_NON_STOP_TO_WAYPOINT :{WAYPOINT}을/를 직통 경유
STR_GO_TO_WAYPOINT :[경유] {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT :[경유, 직통] {WAYPOINT}
STR_WAYPOINTNAME_CITY :웨이포인트 {TOWN}
STR_WAYPOINTNAME_CITY_SERIAL :웨이포인트 {TOWN} #{COMMA}
@@ -1273,7 +1273,7 @@ STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}산업
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}땅을 올리거나 내리기, 나무 심기 등의 지형 툴바를 엽니다.
STR_LANDSCAPING_TOOLBAR :{WHITE}지평편집
STR_LEVEL_LAND_TOOLTIP :{BLACK}위치좌표값
STR_LEVEL_LAND_TOOLTIP :{BLACK}땅을 평평하게 고릅니다.
STR_TREES_RANDOM_TYPE :{BLACK}무작위 나무
@@ -1607,7 +1607,7 @@ STR_0810_DESERT :사막
##id 0x1000
STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}잘못된 방향으로 땅이 기울어졌습니다
STR_1001_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}불가능한 트랙 조합입니다
STR_1002_EXCAVATION_WOULD_DAMAGE :{WHITE}터널에 영향을 주는 지형편집입니다
STR_1002_EXCAVATION_WOULD_DAMAGE :{WHITE}터널 때문에 지형을 편집할 수 없습니다.
STR_1003_ALREADY_AT_SEA_LEVEL :{WHITE}이미 해수면에 도달했습니다
STR_1004_TOO_HIGH :{WHITE}너무 높습니다!
STR_1005_NO_SUITABLE_RAILROAD_TRACK :{WHITE}알맞지 않은 철로입니다.
@@ -1784,7 +1784,7 @@ STR_2046_SMALL_ADVERTISING_CAMPAIGN :소규모 광
STR_2047_MEDIUM_ADVERTISING_CAMPAIGN :중규모 광고 캠페인
STR_2048_LARGE_ADVERTISING_CAMPAIGN :대규모 광고 캠페인
STR_2049_FUND_LOCAL_ROAD_RECONSTRUCTION :지역 도로 재공사에 투자
STR_204A_BUILD_STATUE_OF_COMPANY :회사 소유의 동상 건설
STR_204A_BUILD_STATUE_OF_COMPANY :회사 소유의 동상 건설
STR_204B_FUND_NEW_BUILDINGS :새로운 건물에 투자
STR_204C_BUY_EXCLUSIVE_TRANSPORT :수송 권한 독점권 구입
STR_TOWN_BRIBE_THE_LOCAL_AUTHORITY :지역 당국에 뇌물 먹이기
@@ -1811,7 +1811,7 @@ STR_INDUSTRY_FORMAT :{TOWN} {STRING}
STR_STATION :{STATION}
##id 0x2800
STR_LANDSCAPING :지형편집
STR_LANDSCAPING :지형 편집
STR_2800_PLANT_TREES :나무 심기
STR_2801_PLACE_SIGN :팻말 달기
STR_2802_TREES :{WHITE}나무
@@ -2176,7 +2176,7 @@ STR_6820_LOW :낮음
STR_6821_MEDIUM :보통
STR_6822_HIGH :높음
STR_6823_NONE :고장 안남
STR_6824_REDUCED :재생산
STR_6824_REDUCED :적음
STR_6825_NORMAL :일반
STR_6826_X1_5 :1.5배 지급
STR_6827_X2 :2배 지급
@@ -2238,7 +2238,7 @@ STR_7021 :{COMPANY} {COMP
STR_7022_INCOME_GRAPH :{WHITE}수익 그래프
STR_CURRCOMPACT :{CURRCOMPACT}
STR_7024 :{COMMA}
STR_7025_OPERATING_PROFIT_GRAPH :{WHITE}수행 이익 그래프
STR_7025_OPERATING_PROFIT_GRAPH :{WHITE}경영 수익 그래프
STR_7026_BANK_BALANCE :{WHITE}소유금
STR_7027_LOAN :{WHITE}대출
STR_MAX_LOAN :{WHITE}최대 대출: {BLACK}{CURRENCY}
@@ -2296,17 +2296,17 @@ STR_705D_HAS_BEEN_CLOSED_DOWN_BY :{BLACK}{BIGFONT
STR_705E_NEW_TRANSPORT_COMPANY_LAUNCHED :{BLACK}{BIGFONT}새로운 운송회사 등장!
STR_705F_STARTS_CONSTRUCTION_NEAR :{BLACK}{BIGFONT}{COMPANY}이/가 {TOWN}에서 공사를 시작했습니다!
STR_7060_CAN_T_BUY_COMPANY :{WHITE}회사를 인수할 수 없습니다...
STR_7061_CARGO_PAYMENT_RATES :{WHITE}화물 운송비 지급량
STR_7061_CARGO_PAYMENT_RATES :{WHITE}화물 운송단가 비율
STR_7062_DAYS_IN_TRANSIT :{BLACK}{TINYFONT}통과시간
STR_7063_PAYMENT_FOR_DELIVERING :{BLACK}{TINYFONT}10단위(또는 1만리터)의 화물을 20칸 거리 운송할 때의 운송비 지급량입니다.
STR_7063_PAYMENT_FOR_DELIVERING :{BLACK}{TINYFONT}10 단위(1만 리터)의 화물을 20칸 거리만큼 운송할 때의 운송비 지급량
STR_7064_TOGGLE_GRAPH_FOR_CARGO :{BLACK}이 화물에 대한 그래프 켜기/끄기
STR_7065 :{BLACK}{TINYFONT}{STRING}
STR_7066_ENGINEER :엔지니어
STR_7067_TRAFFIC_MANAGER :교통 경영인
STR_7067_TRAFFIC_MANAGER :교통망 관리자
STR_7068_TRANSPORT_COORDINATOR :수송 조정자
STR_7069_ROUTE_SUPERVISOR :노선 관리자
STR_706A_DIRECTOR :지도자
STR_706B_CHIEF_EXECUTIVE :집행
STR_706A_DIRECTOR :이사
STR_706B_CHIEF_EXECUTIVE :이사
STR_706C_CHAIRMAN :의장
STR_706D_PRESIDENT :회장
STR_706E_TYCOON :타이쿤!
@@ -3044,7 +3044,7 @@ STR_B006_FLOOD_VEHICLE_DESTROYED :{BLACK}{BIGFONT
STR_BRIBE_FAILED :{WHITE}당신의 뇌물 수수 행위가
STR_BRIBE_FAILED_2 :{WHITE}지역 당국에 의해 발각되었습니다!
STR_BUILD_DATE :{BLACK}생산: {LTBLUE}{DATE_LONG}
STR_BUILD_DATE :{BLACK}건설날짜: {LTBLUE}{DATE_LONG}
STR_PERFORMANCE_DETAIL :{WHITE}상세 성취도
STR_PERFORMANCE_DETAIL_KEY :{BLACK}자세히
@@ -3099,6 +3099,7 @@ STR_NEWGRF_ERROR_LOAD_AFTER :{STRING}은/는
STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{STRING}는 OpenTTD {STRING} 버전이나 그 이상이 필요합니다.
STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF 파일 자체는 번역용으로 디자인됨
STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :NewGRF이 너무 많습니다.
STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :{1:STRING}를 포함한 정적 NewGRF {0:STRING}(을)를 불러오는 것은 비동기화를 야기시킬 수 있습니다.
STR_NEWGRF_ADD :{BLACK}추가
STR_NEWGRF_ADD_TIP :{BLACK}NewGRF 파일을 목록에 추가
@@ -3128,8 +3129,12 @@ STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}사라
STR_NEWGRF_DISABLED_WARNING :{WHITE}사라진 GRF 파일은 사용불가능합니다
STR_NEWGRF_NOT_FOUND_WARNING :{WHITE}사라진 GRF 파일이 게임 로드에 사용될 수 있습니다
STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}GRF 파일 손실
STR_NEWGRF_UNPAUSE_WARNING :{WHITE}일시정지는 OpenTTD를 망가뜨릴 수 있습니다. 차후에 나오는 버그를 위해 버그 리포트를 파일로 만들지 마십시오.{}일시정지하시겠습니까?
STR_NEWGRF_UNPAUSE_WARNING :{WHITE}일시정지를 해제하면 오류가 발생할 있습니다. 차후에 나오는 오류를 위해 버그 리포트를 보관하지 마십시오.{}일시정지를 해제하시겠습니까?
STR_NEWGRF_BROKEN :{WHITE}NewGRF '{STRING}'는 비동기화 혹은 충돌을 일으킬 수 있습니다.
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}'{1:ENGINE}'이/가 차고 안에 있지 않으면 차량 길이가 바뀝니다.
STR_BROKEN_VEHICLE_LENGTH :{WHITE}'{1:COMPANY}'의 열차 '{0:VEHICLE}'은/는 유효하지 않은 길이를 가지고 있습니다. NewGRF에 의한 문제일 수 있으며 비동기화/충돌을 일으킬 수 있습니다.
STR_LOADGAME_REMOVED_TRAMS :{WHITE}전차를 지원하지 않는 버전으로 게임이 저장되었습니다. 모든 전차는 제거되었습니다.
STR_CURRENCY_WINDOW :{WHITE}사용자 화폐 단위
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}환율: {ORANGE}{CURRENCY} = {COMMA}파운드
STR_CURRENCY_SEPARATOR :{LTBLUE}단위구분:
@@ -3198,7 +3203,7 @@ STR_REPLACE_HELP :{BLACK}이 기
STR_REPLACE_REMOVE_WAGON :{BLACK}화물차 제거: {ORANGE}{SKIP}{STRING}
STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}자동교체시에 열차가 기존보다 길어지면 화물차를 제거함으로써 교체시 달라지는 열차의 길이를 같게 조정합니다 (앞쪽부터 시작됨)
STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}교체중: {ORANGE}{SKIP}{SKIP}{STRING}
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK} 실험적 기능! {}기관차/화물차 교체 창을 번갈아 띄웁니다.{}화물차 교체는 예전 화물차가 싣던 화물을 실을 수 있도록 개조할 수 있는 새로운 화물차에만 성공할 것입니다. 실제 교체가 이루어질 때 각 화물차에 체크되었습니다.
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK} 실험적 기능! {}기관차/화물차 교체 창을 번갈아 띄웁니다.{}화물차 교체는 예전 화물차가 싣던 화물을 실을 수 있도록 개조할 수 있는 새로운 화물차에만 성공할 것입니다. 이는 실제 교체가 이루어질 때 각 화물차에 체크되었습니다.
STR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}열차는 불가능합니다
STR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}차량은 불가능합니다
STR_SHIP_NOT_AVAILABLE :{WHITE}선박은 불가능합니다
@@ -3340,7 +3345,7 @@ STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}넓이:
############ Date formatting
STR_DATE_TINY :{2:NUM}.{1:STRING}.{0:STRING}
STR_DATE_SHORT :{1:NUM}년 {0:STRING}
STR_DATE_SHORT :{1:NUM}년 {0:STRING}
STR_DATE_LONG :{2:NUM}년 {1:STRING}월 {0:STRING}일
########
+3393 -3393
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -1715,6 +1715,7 @@ STR_2002 :{TINYFONT}{BLAC
STR_2002_WHITE :{TINYFONT}{WHITE}{SIGN}
STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}O edifício deve ser demolido primeiro
STR_2005 :{WHITE}{TOWN}
STR_CITY :{WHITE}{TOWN} (Cidade)
STR_2006_POPULATION :{BLACK}População: {ORANGE}{COMMA}{BLACK} Casas: {ORANGE}{COMMA}
STR_2007_RENAME_TOWN :Renomear Cidade
STR_2008_CAN_T_RENAME_TOWN :{WHITE}Não é possível renomear cidade...
+499 -476
View File
File diff suppressed because it is too large Load Diff
+2
View File
@@ -3111,6 +3111,7 @@ STR_NEWGRF_ERROR_LOAD_AFTER :{STRING} дол
STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{STRING} требует OpenTTD версии {STRING} или выше.
STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :файл GRF, который им переводится.
STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Слишком много загружено новой графики
STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Загрузка {STRING} в качестве статического NewGRF с {STRING} Может вызвать ошибку синхронизации.
STR_NEWGRF_ADD :{BLACK}Добавить
STR_NEWGRF_ADD_TIP :{BLACK}Добавить файл NewGRF в список
@@ -3142,6 +3143,7 @@ STR_NEWGRF_NOT_FOUND_WARNING :{WHITE}Не н
STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Пропущенные GRF файлы
STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Снятие с паузы может привести к ошибке OpenTTD.{}Вы хотите запустить игру?
STR_LOADGAME_REMOVED_TRAMS :{WHITE}Игра была сохранена в игре без поддержки трамваев. Все трамваи были отключены.
STR_CURRENCY_WINDOW :{WHITE}Своя валюта
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Обменный курс: {ORANGE}{CURRENCY} = £{COMMA}
STR_CURRENCY_SEPARATOR :{LTBLUE}Разделитель:
+97 -17
View File
@@ -9,7 +9,7 @@
STR_NULL :
STR_0001_OFF_EDGE_OF_MAP :{WHITE}超过地图边界
STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}距离地图边界过近
STR_0003_NOT_ENOUGH_CASH_REQUIRES :{WHITE}没有足够的金 - 需要 {CURRENCY}
STR_0003_NOT_ENOUGH_CASH_REQUIRES :{WHITE}没有足够的金 - 需要 {CURRENCY}
STR_0004 :{WHITE}{CURRENCY}
STR_EMPTY :
STR_0007_FLAT_LAND_REQUIRED :{WHITE}需要平坦的地面
@@ -36,7 +36,7 @@ STR_001D_DIAMONDS :钻石
STR_001E_FOOD :食品
STR_001F_PAPER :纸张
STR_0020_GOLD :金子
STR_0021_WATER :水
STR_0021_WATER :矿泉
STR_0022_WHEAT :小麦
STR_0023_RUBBER :橡胶
STR_0024_SUGAR :蔗糖
@@ -47,7 +47,7 @@ STR_0028_COTTON_CANDY :棉花糖
STR_0029_BUBBLES :泡泡
STR_002A_TOFFEE :太妃糖
STR_002B_BATTERIES :电池
STR_002C_PLASTIC :塑料
STR_002C_PLASTIC :塑料
STR_002D_FIZZY_DRINKS :跳跳水
STR_002E :
STR_002F_PASSENGER :旅客
@@ -238,7 +238,7 @@ STR_010E_WATER_TOWER :{BLACK}{TINYFON
STR_010F_LUMBER_MILL :{BLACK}{TINYFONT}木材厂
STR_0110_COTTON_CANDY_FOREST :{BLACK}{TINYFONT}棉花糖森林
STR_0111_CANDY_FACTORY :{BLACK}{TINYFONT}糖果厂
STR_0112_BATTERY_FARM :{BLACK}{TINYFONT}池农场
STR_0112_BATTERY_FARM :{BLACK}{TINYFONT}池农场
STR_0113_COLA_WELLS :{BLACK}{TINYFONT}可乐泉
STR_0114_TOY_SHOP :{BLACK}{TINYFONT}玩具店
STR_0115_TOY_FACTORY :{BLACK}{TINYFONT}玩具工厂
@@ -310,13 +310,13 @@ STR_UNITS_IMPERIAL :英制
STR_UNITS_METRIC :度量
STR_UNITS_SI :国际单位制
STR_UNITS_VELOCITY_IMPERIAL :{COMMA} 英里/
STR_UNITS_VELOCITY_IMPERIAL :{COMMA} 英里/时
STR_UNITS_VELOCITY_METRIC :{COMMA} 千米/小时
STR_UNITS_VELOCITY_SI :{COMMA} 米/秒
STR_UNITS_POWER_IMPERIAL :{COMMA}马力
STR_UNITS_POWER_METRIC :{COMMA}马力
STR_UNITS_POWER_SI :{COMMA}前往
STR_UNITS_POWER_SI :{COMMA}千瓦
STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}英吨
STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}吨
@@ -549,8 +549,8 @@ STR_01E4_0 :{DKGREEN}{TINYF
STR_01E5 :{DKGREEN}{TINYFONT}{COMMA}
STR_01E6 :{DKGREEN}{TINYFONT}------
STR_01E7 :{DKGREEN}{TINYFONT}"{STRING}"
STR_01E8_TRACK_XTITLE :{BLACK}{TINYFONT}轨{SETX 88}题
STR_01E9_SHUFFLE :{TINYFONT}随播放
STR_01E8_TRACK_XTITLE :{BLACK}{TINYFONT}轨{SETX 88}
STR_01E9_SHUFFLE :{TINYFONT}随播放
STR_01EA_PROGRAM :{TINYFONT}{BLACK}列表播放
STR_01EB_MUSIC_PROGRAM_SELECTION :{WHITE}音乐选单
STR_01EC_0 :{TINYFONT}{LTBLUE}0{COMMA} "{STRING}"
@@ -586,6 +586,9 @@ STR_0208_ACCIDENTS_DISASTERS :{YELLOW}事故/
STR_0209_COMPANY_INFORMATION :{YELLOW}公司信息
STR_NEWS_OPEN_CLOSE :{YELLOW}开启/关闭工业设施
STR_020A_ECONOMY_CHANGES :{YELLOW}经济变化
STR_INDUSTRY_CHANGES_SERVED_BY_PLAYER :{YELLOW}对玩家有利的工业产量变化
STR_INDUSTRY_CHANGES_SERVED_BY_OTHER :{YELLOW}对对手有利的工业产量变化
STR_OTHER_INDUSTRY_PRODUCTION_CHANGES :{YELLOW}其他工业产量变化
STR_020B_ADVICE_INFORMATION_ON_PLAYER :{YELLOW}玩家车辆的状况报告
STR_020C_NEW_VEHICLES :{YELLOW}新的车辆类型
STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}货物接受情况变更
@@ -721,6 +724,7 @@ STR_028D_PLACE_LIGHTHOUSE :{BLACK}放置
STR_028E_PLACE_TRANSMITTER :{BLACK}放置转播塔
STR_028F_DEFINE_DESERT_AREA :{BLACK}定义沙漠区域。{}摁住 CTRL 可以去掉沙漠区域。
STR_CREATE_LAKE :{BLACK}定义水域。{}修建运河,仅在CTRL被按下的情况下不会在海平面淹没周围的区域。
STR_CREATE_RIVER :{BLACK}放置河流
STR_0290_DELETE :{BLACK}删除
STR_0291_DELETE_THIS_TOWN_COMPLETELY :{BLACK}完全删除这座城镇
STR_0292_SAVE_SCENARIO :保存场景
@@ -736,7 +740,7 @@ STR_029A_PLAY_SCENARIO :{BLACK}以场
STR_PLAY_HEIGHTMAP :{BLACK}以高度图开始游戏
STR_PLAY_HEIGHTMAP_HINT :{BLACK}以高度图决定的地形开始一个新游戏。
STR_QUIT_SCENARIO_QUERY :{YELLOW}你确定要退出当前场景吗?
STR_029C_QUIT_EDITOR :{WHITE}出编辑器
STR_029C_QUIT_EDITOR :{WHITE}退出编辑器
STR_029D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}只能在人口超过 1200 的城镇建造……
STR_029E_MOVE_THE_STARTING_DATE :{BLACK}将开始年份向前调整 1 年
STR_029F_MOVE_THE_STARTING_DATE :{BLACK}将开始年份向后调整 1 年
@@ -852,6 +856,7 @@ STR_0313_FUND_NEW_INDUSTRY :新的工业设
STR_0314_FUND_NEW_INDUSTRY :{WHITE}建设新的工业设施
STR_JUST_STRING :{STRING}
STR_JUST_INT :{NUM}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}只能在城镇中建设……
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}只能在雨林中建设……
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}只能在沙漠中建设……
@@ -875,14 +880,14 @@ STR_TOWNNAME_FRENCH :法国
STR_TOWNNAME_GERMAN :德国
STR_TOWNNAME_ADDITIONAL_ENGLISH :英国 (增强的)
STR_TOWNNAME_LATIN_AMERICAN :美式拉丁
STR_TOWNNAME_SILLY :愚蠢的
STR_TOWNNAME_SILLY :搞笑地名
STR_TOWNNAME_SWEDISH :瑞典
STR_TOWNNAME_DUTCH :荷兰
STR_TOWNNAME_FINNISH :芬兰
STR_TOWNNAME_POLISH :波兰
STR_TOWNNAME_SLOVAKISH :斯洛伐克
STR_TOWNNAME_NORWEGIAN :挪威
STR_TOWNNAME_HUNGARIAN :雄拉
STR_TOWNNAME_HUNGARIAN :匈牙
STR_TOWNNAME_AUSTRIAN :澳大利亚
STR_TOWNNAME_ROMANIAN :罗马尼亚
STR_TOWNNAME_CZECH :捷克
@@ -929,6 +934,7 @@ STR_OPTIONS_LANG_TIP :{BLACK}选择
STR_OPTIONS_FULLSCREEN :{BLACK}全屏幕
STR_OPTIONS_FULLSCREEN_TIP :{BLACK}选择此项可以在全屏幕模式下进行 OpenTTD 游戏
STR_FULLSCREEN_FAILED :{WHITE}无法切换到全屏模式
STR_OPTIONS_RES :{BLACK}屏幕分辨率
STR_OPTIONS_RES_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
@@ -1025,6 +1031,10 @@ STR_CONFIG_PATCHES_INFLATION :{LTBLUE}通货
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}仅在车站接受此货物时卸货:{ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}允许建造超长桥梁:{ORANGE}{STRING}
STR_CONFIG_PATCHES_GOTODEPOT :{LTBLUE}允许前往车库的计划任务:{ORANGE}{STRING}
STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD :{LTBLUE}原料工业建设方式: {ORANGE}{STRING}
STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :无
STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :同其他工业
STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :探矿式
STR_CONFIG_PATCHES_MULTIPINDTOWN :{LTBLUE}允许在一个城镇中建设多个同类工业设施:{ORANGE}{STRING}
STR_CONFIG_PATCHES_SAMEINDCLOSE :{LTBLUE}工业设施可以相邻:{ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}永远在状态栏中显示长日期:{ORANGE}{STRING}
@@ -1034,9 +1044,13 @@ STR_CONFIG_PATCHES_NEW_NONSTOP :{LTBLUE}TTDPatc
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}汽车自动排队 (有量子效应): {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}当鼠标移动到屏幕边缘时移动屏幕:{ORANGE}{STRING}
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}允许贿赂地方政府:{ORANGE}{STRING}
STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}允许买断经营权: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}允许向其他公司转移资金: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}允许异形站台:{ORANGE}{STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}根据装载货物的数量模拟超重列车:{ORANGE}{STRING}
STR_CONFIG_PATCHES_PLANE_SPEED :{LTBLUE}飞机速度因数: {ORANGE}1 / {STRING}
STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD :{LTBLUE}允许在城镇所有的道路上穿过禁行标志 {ORANGE}{STRING}
STR_CONFIG_PATCHES_ADJACENT_STATIONS :{LTBLUE}允许建设临近站台: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMALL_AIRPORTS :{LTBLUE}总允许建设小型机场:{ORANGE}{STRING}
@@ -1077,6 +1091,7 @@ STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}站台
STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}直升机在降落平台自动保养:{ORANGE}{STRING}
STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR :{LTBLUE}将景观美化工具栏与铁路/公路/船只/机场工具栏连接:{ORANGE}{STRING}
STR_CONFIG_PATCHES_REVERSE_SCROLLING :{LTBLUE}拖动方向与屏幕移动方向相反:{ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_SCROLLING :{LTBLUE}平滑视角滚动: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MEASURE_TOOLTIP :{LTBLUE}建设时显示测量数据:{ORANGE}{STRING}
STR_CONFIG_PATCHES_LIVERIES :{LTBLUE}显示公司特别外观:{ORANGE}{STRING}
STR_CONFIG_PATCHES_LIVERIES_NONE :不显示
@@ -1089,6 +1104,27 @@ STR_CONFIG_PATCHES_SCROLLWHEEL_SCROLL :滚动地图
STR_CONFIG_PATCHES_SCROLLWHEEL_OFF :关闭
STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER :{LTBLUE}地图滚动速度:{ORANGE}{STRING}
STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_OFF :关闭
STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME :{LTBLUE}开始新游戏时自动暂停: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS :{LTBLUE}使用高级车辆列表: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_OFF :关闭
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_OWN :玩家公司
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_ALL :全体公司
STR_CONFIG_PATCHES_LOADING_INDICATORS :{LTBLUE}使用装货进度指示: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LOADING_INDICATORS_OFF :关闭
STR_CONFIG_PATCHES_LOADING_INDICATORS_OWN :玩家公司
STR_CONFIG_PATCHES_LOADING_INDICATORS_ALL :全体公司
STR_CONFIG_PATCHES_TIMETABLE_ALLOW :{LTBLUE}允许使用时间表: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TIMETABLE_IN_TICKS :{LTBLUE}使用ticks而不是天为单位: {ORANGE}{STRING}
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE :{LTBLUE}默认铁路类型 (新建/读取游戏后): {ORANGE}{STRING}
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_RAIL :普通铁轨
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_ELRAIL :电气化铁路
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MONORAIL :单轨铁路
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MAGLEV :磁悬浮
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_FIRST :第一个可用的
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_LAST :第后一个可用的
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED :最常用的
STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE :{LTBLUE}当没有合适的运输工具时显示建设工具: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}每位玩家最大火车数量:{ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_ROADVEH :{LTBLUE}每位玩家最大汽车数量:{ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_AIRCRAFT :{LTBLUE}每位玩家最大飞机数量:{ORANGE}{STRING}
@@ -1121,7 +1157,9 @@ STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}启用
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}允许购买其他公司的股份
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}当拖动的时候每 {ORANGE}{STRING} 个地块放置一个信号灯
STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}在 {ORANGE}{STRING} 前自动设置旗帜信号
STR_CONFIG_PATCHES_ENABLE_SIGNAL_GUI :{LTBLUE}使用信号GUI {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOWN_LAYOUT_DEFAULT :默认
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}主工具栏位置:{ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :左侧
@@ -1153,6 +1191,17 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}改变设置值
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}下面一个或多个保养周期的值设置不对,应当在 0%-90% 或 30-800 天之内。
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(不推荐)
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(推荐)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}汽车寻路: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :原始的 {RED}(不推荐)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(推荐)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}船只寻路: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :原始 {BLUE}(推荐)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(不推荐)
STR_TEMPERATE_LANDSCAPE :温带景观
STR_SUB_ARCTIC_LANDSCAPE :寒带景观
STR_SUB_TROPICAL_LANDSCAPE :沙漠景观
@@ -1223,6 +1272,7 @@ STR_LANDINFO_LOCK :船闸
STR_BUOY_IS_IN_USE :{WHITE}浮标正在被使用……
STR_LANDINFO_COORDS :{BLACK}坐标: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING})
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}不能拆除站台的一部分……
STR_CANT_CONVERT_RAIL :{WHITE}不能转换铁路的类型……
@@ -1333,6 +1383,7 @@ STR_NETWORK_SET_PASSWORD :{BLACK}设置
STR_NETWORK_PASSWORD_TIP :{BLACK}如果不希望你的游戏被外人加入,请设置一个密码
STR_NETWORK_SELECT_MAP :{BLACK}选择地图:
STR_NETWORK_SELECT_MAP_TIP :{BLACK}选择你要玩的地图
STR_NETWORK_LAN_INTERNET_COMBO :{BLACK}{SKIP}{STRING}
STR_NETWORK_LAN :局域网
STR_NETWORK_INTERNET :Internet
STR_NETWORK_LAN_INTERNET :局域网 / Internet
@@ -1345,6 +1396,7 @@ STR_NETWORK_NUMBER_OF_SPECTATORS :{BLACK}旁观
STR_NETWORK_NUMBER_OF_SPECTATORS_TIP :{BLACK}限制服务器上旁观者的数量
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}语言选项:
STR_NETWORK_LANGUAGE_TIP :{BLACK}其他玩家可以知道服务器的官方语言
STR_NETWORK_LANGUAGE_COMBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_START_GAME :{BLACK}开始游戏
STR_NETWORK_START_GAME_TIP :{BLACK}以指定场景或随机地图开始游戏
STR_NETWORK_LOAD_GAME :{BLACK}读取游戏
@@ -1355,6 +1407,31 @@ STR_NETWORK_LANG_ANY :任意
STR_NETWORK_LANG_ENGLISH :英语
STR_NETWORK_LANG_GERMAN :德语
STR_NETWORK_LANG_FRENCH :法语
STR_NETWORK_LANG_BRAZILIAN :巴西语
STR_NETWORK_LANG_BULGARIAN :保加利亚语
STR_NETWORK_LANG_CHINESE :中文
STR_NETWORK_LANG_CZECH :捷克语
STR_NETWORK_LANG_DANISH :丹麦语
STR_NETWORK_LANG_DUTCH :荷兰语
STR_NETWORK_LANG_ESPERANTO :世界语
STR_NETWORK_LANG_FINNISH :芬兰语
STR_NETWORK_LANG_HUNGARIAN :匈牙利语
STR_NETWORK_LANG_ICELANDIC :冰岛语
STR_NETWORK_LANG_ITALIAN :意大利语
STR_NETWORK_LANG_JAPANESE :日语
STR_NETWORK_LANG_KOREAN :韩文
STR_NETWORK_LANG_LITHUANIAN :立陶宛语
STR_NETWORK_LANG_NORWEGIAN :挪威语
STR_NETWORK_LANG_POLISH :波兰语
STR_NETWORK_LANG_PORTUGUESE :葡萄牙语
STR_NETWORK_LANG_ROMANIAN :罗马尼亚语
STR_NETWORK_LANG_RUSSIAN :俄语
STR_NETWORK_LANG_SLOVAK :斯洛伐克语
STR_NETWORK_LANG_SLOVENIAN :斯洛文尼亚语
STR_NETWORK_LANG_SPANISH :西班牙语
STR_NETWORK_LANG_SWEDISH :瑞典语
STR_NETWORK_LANG_TURKISH :土耳其语
STR_NETWORK_LANG_UKRAINIAN :乌克兰语
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}多用户通道
@@ -1516,6 +1593,7 @@ STR_1004_TOO_HIGH :{WHITE}太高
STR_1005_NO_SUITABLE_RAILROAD_TRACK :{WHITE}没有合适的铁轨
STR_1007_ALREADY_BUILT :{WHITE}已经建好了……
STR_1008_MUST_REMOVE_RAILROAD_TRACK :{WHITE}必须先拆除铁轨
STR_ERR_CROSSING_ON_ONEWAY_ROAD :{WHITE}这是单行道或堵死了
STR_100A_RAILROAD_CONSTRUCTION :{WHITE}铁路建设
STR_TITLE_ELRAIL_CONSTRUCTION :{WHITE}电气化铁路建设
STR_100B_MONORAIL_CONSTRUCTION :{WHITE}单轨铁路建设
@@ -1546,7 +1624,9 @@ STR_1023_RAILROAD_TRAIN_DEPOT :列车车库
STR_1024_AREA_IS_OWNED_BY_ANOTHER :{WHITE}此区域由另一公司所有……
STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS :带有普通信号的铁路
STR_RAILROAD_TRACK_WITH_PRESIGNALS :带有入口信号的铁路
STR_RAILROAD_TRACK_WITH_EXITSIGNALS :带有出口新乡的铁路
STR_RAILROAD_TRACK_WITH_EXITSIGNALS :带有出口信号的铁路
STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :双向信号灯的铁路
STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS :单信号灯的铁路
@@ -1595,7 +1675,7 @@ STR_200A_TOWN_NAMES_CLICK_ON_NAME :{BLACK}城镇
STR_200B_CENTER_THE_MAIN_VIEW_ON :{BLACK}将屏幕中心移动到城镇所在的位置
STR_200C_CHANGE_TOWN_NAME :{BLACK}城镇改名
STR_200D_PASSENGERS_LAST_MONTH_MAX :{BLACK}上月旅客数量:{ORANGE}{COMMA}{BLACK} 最大值:{ORANGE}{COMMA}
STR_200E_MAIL_LAST_MONTH_MAX :{BLACK}上月有报数量:{ORANGE}{COMMA}{BLACK} 最大值:{ORANGE}{COMMA}
STR_200E_MAIL_LAST_MONTH_MAX :{BLACK}上月邮包数量:{ORANGE}{COMMA}{BLACK} 最大值:{ORANGE}{COMMA}
STR_200F_TALL_OFFICE_BLOCK :高层写字楼
STR_2010_OFFICE_BLOCK :写字楼
STR_2011_SMALL_BLOCK_OF_FLATS :底层住宅
@@ -1715,7 +1795,7 @@ STR_3009_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}距离
STR_300A_0 :{WHITE}{STATION} {STATIONFEATURES}
STR_300B_MUST_DEMOLISH_RAILROAD :{WHITE}必须先拆除火车站
STR_300D_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}距离另一机场过近
STR_300E_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}必须先拆机场
STR_300E_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}必须先拆机场
STR_3030_RENAME_STATION_LOADING :重命名车站
STR_3031_CAN_T_RENAME_STATION :{WHITE}不能重命名车站
@@ -2264,8 +2344,8 @@ STR_8032_TOY_VAN :玩具篷车
STR_8033_BATTERY_TRUCK :电池挂车
STR_8034_FIZZY_DRINK_TRUCK :跳跳汁挂车
STR_8035_PLASTIC_TRUCK :塑料挂车
STR_8036_X2001_ELECTRIC :'X2001' (Electric)
STR_8037_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Electric)
STR_8036_X2001_ELECTRIC :'X2001' (电力)
STR_8037_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (电力)
STR_8038_WIZZOWOW_Z99 :Wizzowow Z99
STR_8039_PASSENGER_CAR :旅客车厢
STR_803A_MAIL_VAN :邮政车厢
@@ -2336,7 +2416,7 @@ STR_807A_PLODDYPHUT_MKIII_BUS :Ploddyphut MkII
STR_807B_BALOGH_COAL_TRUCK :Balogh 煤炭卡车
STR_807C_UHL_COAL_TRUCK :Uhl 煤炭卡车
STR_807D_DW_COAL_TRUCK :DW 煤炭卡车
STR_807E_MPS_MAIL_TRUCK :MPS 煤炭卡车
STR_807E_MPS_MAIL_TRUCK :MPS 邮政卡车
STR_807F_REYNARD_MAIL_TRUCK :Reynard 邮政卡车
STR_8080_PERRY_MAIL_TRUCK :Perry 邮政卡车
STR_8081_MIGHTYMOVER_MAIL_TRUCK :MightyMover 邮政卡车
+4
View File
@@ -3193,6 +3193,10 @@ STR_NEWGRF_NOT_FOUND_WARNING :{WHITE}Cýbajú
STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Chýba(jú) GRF súbor(y)
STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Odpauzovanie môže spôsobit pád OpenTTD. Nezaznamenávajte nasledujúce chyby.{}Naozaj chcete odpauzovat?
STR_NEWGRF_BROKEN :{WHITE}Správanie NewGRF '{STRING}' asi sposobí desynchronizáciu a/alebo pád hry.
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Zmenilo dlžku vozidla '{1:ENGINE}' mimo depa.
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Vlak '{VEHICLE}' patriaci '{COMPANY}' má neplatnu dlžku. Pravdeposobne to sposobil problém s NewGRF. Je možná desynchronizácia alebo pád hry.
STR_LOADGAME_REMOVED_TRAMS :{WHITE}Hra bola uložená vo verzii bez elektriciek. Vsetky elektricky boli odstránené.
STR_CURRENCY_WINDOW :{WHITE}Vlastná mena
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Kurz meny: {ORANGE}{CURRENCY} = £ {COMMA}
STR_CURRENCY_SEPARATOR :{LTBLUE}Oddelovac:
+2
View File
@@ -3178,6 +3178,7 @@ STR_NEWGRF_ERROR_LOAD_AFTER :{STRING} je pot
STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{STRING} potrebuje OpenTTD različico {STRING} ali boljšo.
STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF datoteka je bila narejena za prevod
STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Preveč NewGrf-jev je naloženih.
STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Nalaganje {STRING} kot statični NewGRF z/s {STRING} lahko povzroči desinhronizacijo.
STR_NEWGRF_ADD :{BLACK}Dodaj
STR_NEWGRF_ADD_TIP :{BLACK}Dodaj NewGRF datoteko na seznam
@@ -3209,6 +3210,7 @@ STR_NEWGRF_NOT_FOUND_WARNING :{WHITE}Manjkajo
STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Manjkajoče GRF datoteke
STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Izklop pavze lahko sesuje OpenTTD. Ne poročaj o napaki zaradi takih problemov.{}Zagotovo želiš izklopiti pavzo?
STR_LOADGAME_REMOVED_TRAMS :{WHITE}Igra je bila shranjena brez podpore za tramvaj. Vsi tramvaji so bili odstranjeni.
STR_CURRENCY_WINDOW :{WHITE}Valuta po meri
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Menjalni tečaj: {ORANGE}{CURRENCY} = £ {COMMA}
STR_CURRENCY_SEPARATOR :{LTBLUE}Ločitev:
+4
View File
@@ -3099,6 +3099,7 @@ STR_NEWGRF_ERROR_LOAD_AFTER :{STRING} debe s
STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{STRING} requiere OpenTTD versión {STRING} o superior.
STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :el fichero GRF ha sido diseñado para ser traducido
STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Demasiados NewGRFs han sido cargados.
STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Cargar {STRING} como NewGRF estático con {STRING} puede causar desincronizaciones.
STR_NEWGRF_ADD :{BLACK}Añadir
STR_NEWGRF_ADD_TIP :{BLACK}Añadir un NewGRF a la lista
@@ -3130,6 +3131,9 @@ STR_NEWGRF_NOT_FOUND_WARNING :{WHITE}Fichero(
STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Fichero(s) GRF que faltan
STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Quitar la pausa puede hacer que se cierre OpenTTD. No notifique este error.{}¿Desea realmente quitar la pausa?
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Cambia la longitud del vehículo para '{1:ENGINE}' cuando no está dentro de un depósito
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Tren '{VEHICLE}' perteneciente a '{COMPANY}' tiene una longitud incorrecta. Puede ser debido a problemas con los NewGRF. El juego puede fallar.
STR_LOADGAME_REMOVED_TRAMS :{WHITE}El juego ha sido grabado en una versión sin soporte de tranvía. Todos los tranvías serán eliminados.
STR_CURRENCY_WINDOW :{WHITE}Moneda personalizada
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Tasa de cambio: {ORANGE}{CURRENCY} = £ {COMMA}
STR_CURRENCY_SEPARATOR :{LTBLUE}Separador:
+2
View File
@@ -3098,6 +3098,7 @@ STR_NEWGRF_ERROR_LOAD_AFTER :{STRING} måste
STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{STRING} kräver OpenTTD version {STRING} eller bättre.
STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF-filen den var designad att översätta
STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :För många NewGRFer är laddade.
STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Laddar {STRING} som statisk NewGRF med {STRING} kan orsaka osynk.
STR_NEWGRF_ADD :{BLACK}Lägg till
STR_NEWGRF_ADD_TIP :{BLACK}Lägg till en ny NewGRF-fil till listan
@@ -3129,6 +3130,7 @@ STR_NEWGRF_NOT_FOUND_WARNING :{WHITE}Saknas G
STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Saknad(e) GRF-fil(er)
STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Avpausning kan krascha OpenTTD. Skicka ej igen bugg-rapport för möjlig krasch.{}Är du säker att du vill avpausa?
STR_LOADGAME_REMOVED_TRAMS :{WHITE}Spelet sparades i en version som ej stöder spårvagn. Alla spårvagnar har tagits bort
STR_CURRENCY_WINDOW :{WHITE}Egen valuta
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Växlingskurs: {ORANGE}{CURRENCY} = £ {COMMA}
STR_CURRENCY_SEPARATOR :{LTBLUE}Avskiljare:
+116 -108
View File
@@ -15,6 +15,7 @@ STR_EMPTY :
STR_0007_FLAT_LAND_REQUIRED :{WHITE}需要平地
STR_0008_WAITING :{BLACK}等候:{WHITE}{STRING}
STR_0009 :{WHITE}{CARGO}
STR_EN_ROUTE_FROM :{YELLOW}({SHORTCARGO} 轉送自 {STATION})
STR_000C_ACCEPTS :{BLACK}接受:{WHITE}
STR_000D_ACCEPTS :{BLACK}接受:{GOLD}
STR_000E :
@@ -166,7 +167,7 @@ STR_00C6 :{SILVER}{CROSS}
STR_00C7_QUIT :{WHITE}離開
STR_00C8_YES :{BLACK}是
STR_00C9_NO :{BLACK}否
STR_00CA_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}你要放棄遊戲並回到 {STRING}?
STR_00CA_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}您確定要放棄進行中的遊戲{}返回{STRING}?
STR_00CB_1 :{BLACK}1
STR_00CC_2 :{BLACK}2
STR_00CD_3 :{BLACK}3
@@ -281,12 +282,12 @@ STR_OSNAME_AMIGAOS :AmigaOS
STR_OSNAME_OS2 :OS/2
STR_OSNAME_SUNOS :SunOS
STR_013B_OWNED_BY :{WHITE}...{STRING} 所有
STR_013B_OWNED_BY :{WHITE}... 擁有者是 {STRING}
STR_013C_CARGO :{BLACK}貨物
STR_013D_INFORMATION :{BLACK}資訊
STR_013E_CAPACITIES :{BLACK}
STR_013E_CAPACITIES :{BLACK}
STR_TOTAL_CARGO :{BLACK}總貨物量
STR_013F_CAPACITY :{BLACK}載量:{LTBLUE}{CARGO}
STR_013F_CAPACITY :{BLACK}容量: {LTBLUE}{CARGO}
STR_CAPACITY_MULT :{BLACK}載量:{LTBLUE}{CARGO} (x{NUM})
STR_TOTAL_CAPACITY_TEXT :{BLACK}此列車的總載量:
STR_TOTAL_CAPACITY :{LTBLUE}- {CARGO} ({SHORTCARGO})
@@ -370,7 +371,7 @@ STR_SORT_BY_DATE :{BLACK}日期
STR_SORT_BY_NUMBER :編號
STR_SORT_BY_PROFIT_LAST_YEAR :上年盈利
STR_SORT_BY_PROFIT_THIS_YEAR :本年盈利
STR_SORT_BY_AGE :年齡
STR_SORT_BY_AGE :使用年數
STR_SORT_BY_RELIABILITY :可靠性
STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :總容量,依貨物種類排序
STR_SORT_BY_MAX_SPEED :最高速度
@@ -381,9 +382,9 @@ STR_SORT_BY_WAITING :等候貨物總
STR_SORT_BY_RATING_MAX :酬載評價
STR_ENGINE_SORT_ENGINE_ID :引擎編號
STR_ENGINE_SORT_COST :價值
STR_ENGINE_SORT_POWER :輸出
STR_ENGINE_SORT_POWER :功率
STR_ENGINE_SORT_INTRO_DATE :登場日期
STR_ENGINE_SORT_RUNNING_COST :運費用
STR_ENGINE_SORT_RUNNING_COST :運費用
STR_ENGINE_SORT_POWER_VS_RUNNING_COST :功率/營運費用
STR_ENGINE_SORT_CARGO_CAPACITY :載貨量
STR_NO_WAITING_CARGO :{BLACK}沒有任何酬載等候中
@@ -677,51 +678,51 @@ STR_025E_FIZZY_DRINK_FACTORY :{BLACK}汽水
STR_025F_BUBBLE_GENERATOR :{BLACK}泡泡工場
STR_0260_TOFFEE_QUARRY :{BLACK}太妃糖礦場
STR_0261_SUGAR_MINE :{BLACK}砂糖礦場
STR_0262_CONSTRUCT_COAL_MINE :{BLACK}興建煤礦
STR_0262_CONSTRUCT_COAL_MINE :{BLACK}興建煤礦
STR_0263_CONSTRUCT_POWER_STATION :{BLACK}興建發電廠
STR_0264_CONSTRUCT_SAWMILL :{BLACK}興建鋸木廠
STR_0265_PLANT_FOREST :{BLACK}
STR_0265_PLANT_FOREST :{BLACK}種植森
STR_0266_CONSTRUCT_OIL_REFINERY :{BLACK}興建煉油廠
STR_0267_CONSTRUCT_OIL_RIG_CAN_ONLY :{BLACK}興建油井 (只能在地圖邊緣興建)
STR_0267_CONSTRUCT_OIL_RIG_CAN_ONLY :{BLACK}興建鑽油平台 (只能在地圖邊緣)
STR_0268_CONSTRUCT_FACTORY :{BLACK}興建工廠
STR_0269_CONSTRUCT_STEEL_MILL :{BLACK}興建鋼廠
STR_0269_CONSTRUCT_STEEL_MILL :{BLACK}興建鋼廠
STR_026A_CONSTRUCT_FARM :{BLACK}興建農場
STR_026B_CONSTRUCT_IRON_ORE_MINE :{BLACK}興建鐵礦
STR_026B_CONSTRUCT_IRON_ORE_MINE :{BLACK}興建鐵礦
STR_026C_CONSTRUCT_OIL_WELLS :{BLACK}興建油井
STR_026D_CONSTRUCT_BANK_CAN_ONLY :{BLACK}開設銀行 (只能在人口高於 1200 的市鎮內開設)
STR_026D_CONSTRUCT_BANK_CAN_ONLY :{BLACK}興建銀行 (只能建在1200人以上的城鎮)
STR_026E_CONSTRUCT_PAPER_MILL :{BLACK}興建造紙廠
STR_026F_CONSTRUCT_FOOD_PROCESSING :{BLACK}興建食物加工
STR_026F_CONSTRUCT_FOOD_PROCESSING :{BLACK}興建食物處理
STR_0270_CONSTRUCT_PRINTING_WORKS :{BLACK}興建印刷廠
STR_0271_CONSTRUCT_GOLD_MINE :{BLACK}興建金礦
STR_0272_CONSTRUCT_BANK_CAN_ONLY :{BLACK}開設銀行 (只能在市鎮內開設)
STR_0273_CONSTRUCT_LUMBER_MILL_TO :{BLACK}興建鋸木 (砍伐雨林出產木材)
STR_0271_CONSTRUCT_GOLD_MINE :{BLACK}興建金礦
STR_0272_CONSTRUCT_BANK_CAN_ONLY :{BLACK}興建銀行 (只能建在城鎮裡)
STR_0273_CONSTRUCT_LUMBER_MILL_TO :{BLACK}興建鋸木 (清除雨林製造木材)
STR_0274_PLANT_FRUIT_PLANTATION :{BLACK}種植蔬果園
STR_0275_PLANT_RUBBER_PLANTATION :{BLACK}種植橡膠樹
STR_0276_CONSTRUCT_WATER_SUPPLY :{BLACK}興建供水
STR_0277_CONSTRUCT_WATER_TOWER_CAN :{BLACK}興建水塔 (只能在市鎮內興建)
STR_0278_CONSTRUCT_DIAMOND_MINE :{BLACK}興建鑽石礦
STR_0279_CONSTRUCT_COPPER_ORE_MINE :{BLACK}興建銅礦
STR_0275_PLANT_RUBBER_PLANTATION :{BLACK}種植橡膠樹
STR_0276_CONSTRUCT_WATER_SUPPLY :{BLACK}興建供水
STR_0277_CONSTRUCT_WATER_TOWER_CAN :{BLACK}興建水塔 (只能建在城鎮裡)
STR_0278_CONSTRUCT_DIAMOND_MINE :{BLACK}興建鑽石礦
STR_0279_CONSTRUCT_COPPER_ORE_MINE :{BLACK}興建銅礦
STR_027A_PLANT_COTTON_CANDY_FOREST :{BLACK}種植棉花糖森林
STR_027B_CONSTRUCT_CANDY_FACTORY :{BLACK}興建糖果工廠
STR_027C_CONSTRUCT_BATTERY_FARM :{BLACK}興建電池農場
STR_027D_CONSTRUCT_COLA_WELLS :{BLACK}興建可樂井
STR_027E_CONSTRUCT_TOY_SHOP :{BLACK}設立玩具店
STR_027E_CONSTRUCT_TOY_SHOP :{BLACK}興建玩具店
STR_027F_CONSTRUCT_TOY_FACTORY :{BLACK}興建玩具工廠
STR_0280_CONSTRUCT_PLASTIC_FOUNTAINS :{BLACK}興建塑膠噴泉
STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY :{BLACK}興建汽水工廠
STR_0282_CONSTRUCT_BUBBLE_GENERATOR :{BLACK}興建泡泡產生器
STR_0283_CONSTRUCT_TOFFEE_QUARRY :{BLACK}興建太妃糖礦場
STR_0284_CONSTRUCT_SUGAR_MINE :{BLACK}興建糖礦
STR_0284_CONSTRUCT_SUGAR_MINE :{BLACK}興建糖礦
STR_0285_CAN_T_BUILD_HERE :{WHITE}不能在這裡建造 {STRING} ...
STR_0286_MUST_BUILD_TOWN_FIRST :{WHITE}...先建造市鎮
STR_0286_MUST_BUILD_TOWN_FIRST :{WHITE}...先建造市鎮
STR_0287_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}...每個市鎮僅允許一個
STR_0288_PLANT_TREES :{BLACK}植樹
STR_0289_PLACE_SIGN :{BLACK}設置標誌
STR_028A_RANDOM_TREES :{BLACK}隨機樹種
STR_028B_PLANT_TREES_RANDOMLY_OVER :{BLACK}在場景上隨機植樹
STR_028C_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}在場景上產生岩石區
STR_028D_PLACE_LIGHTHOUSE :{BLACK}建立燈塔
STR_028E_PLACE_TRANSMITTER :{BLACK}建立發射站
STR_028D_PLACE_LIGHTHOUSE :{BLACK}放置燈塔
STR_028E_PLACE_TRANSMITTER :{BLACK}放置天線塔
STR_028F_DEFINE_DESERT_AREA :{BLACK}定義沙漠區。{}請按住 CTRL 移除
STR_CREATE_LAKE :{BLACK}劃出湖泊範圍。{}開鑿運河。在海平面上按 CTRL 鍵則會淹沒週遭土地
STR_CREATE_RIVER :{BLACK}劃出河流範圍
@@ -742,7 +743,7 @@ STR_PLAY_HEIGHTMAP_HINT :{BLACK}以高
STR_QUIT_SCENARIO_QUERY :{YELLOW}你要離開這個場景嗎?
STR_029C_QUIT_EDITOR :{WHITE}離開編輯器
STR_029D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...只能在市鎮人口超過 1200 人的地方建造
STR_029E_MOVE_THE_STARTING_DATE :{BLACK}將開始時間提早一
STR_029E_MOVE_THE_STARTING_DATE :{BLACK}將開始時間往前 1
STR_029F_MOVE_THE_STARTING_DATE :{BLACK}將開始時間往後一年
STR_02A0_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}...橋樑的兩端應該在陸地上
STR_02A1_SMALL :{BLACK}小型
@@ -809,9 +810,9 @@ STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}將這
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}將主視野移到視窗視野
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}將主視野移到這個視窗的視野位置
STR_02E0_CURRENCY_UNITS :{BLACK}幣單位
STR_02E0_CURRENCY_UNITS :{BLACK}幣單位
STR_02E1 :{BLACK}{SKIP}{STRING}
STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}選擇幣單位
STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}選擇幣單位
STR_MEASURING_UNITS :{BLACK}度量單位
STR_02E4 :{BLACK}{SKIP}{SKIP}{STRING}
STR_MEASURING_UNITS_SELECTION :{BLACK}度量單位
@@ -833,7 +834,7 @@ STR_02F9_EVERY_6_MONTHS :每六個月
STR_02FA_EVERY_12_MONTHS :每十二個月
STR_02FB_START_A_NEW_GAME :{BLACK}開始新遊戲
STR_02FC_LOAD_A_SAVED_GAME :{BLACK}載入舊遊戲
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}建立自訂遊戲場景
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}建立自訂遊戲世界/劇本
STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}選擇單人單機遊戲
STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}選擇 2 ~ 8 人的連線遊戲
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}顯示遊戲選項
@@ -960,8 +961,8 @@ STR_MONTH_OCT :十月
STR_MONTH_NOV :十一月
STR_MONTH_DEC :十二月
STR_HEADING_FOR_STATION :{LTBLUE}目的地:{STATION}
STR_HEADING_FOR_STATION_VEL :{LTBLUE}目的地:{STATION}{VELOCITY}
STR_HEADING_FOR_STATION :{LTBLUE}正前往: {STATION}
STR_HEADING_FOR_STATION_VEL :{LTBLUE}正前往: {STATION}, {VELOCITY}
STR_NO_ORDERS :{LTBLUE}沒有指令
STR_NO_ORDERS_VEL :{LTBLUE}沒有指令, {VELOCITY}
@@ -1010,7 +1011,7 @@ STR_SHIP_AUTORENEW_FAILED :{WHITE}輪船 {
STR_AIRCRAFT_AUTORENEW_FAILED :{WHITE}飛機 {COMMA}自動翻新失敗 (金錢限制)
STR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}置換後列車 {COMMA} 過長
STR_CONFIG_PATCHES :{BLACK}設置修正
STR_CONFIG_PATCHES :{BLACK}設定補綴
STR_CONFIG_PATCHES_TIP :{BLACK}設置修正選項
STR_CONFIG_PATCHES_CAPTION :{WHITE}設置修正
@@ -1064,7 +1065,7 @@ STR_CONFIG_PATCHES_WARN_INCOME_LESS :{LTBLUE}於列
STR_CONFIG_PATCHES_NEVER_EXPIRE_VEHICLES :{LTBLUE}運輸工具永遠不會過期:{ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}運輸工具自動翻新
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}當運具在使用年限 {ORANGE}{STRING}{LTBLUE} 個月前/後自動更新
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}自動翻新最低費用:{ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}自動翻新所需最低餘額: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}錯誤訊息顯示時間:{ORANGE}{STRING}
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}於標籤顯示市鎮人口:{ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}選擇半透明建築物時將樹木隱藏:{ORANGE}{STRING}
@@ -1134,35 +1135,35 @@ STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE :{LTBLUE}即使
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}每位玩家可擁有列車數目:{ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_ROADVEH :{LTBLUE}每位玩家可擁有車輛數目:{ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_AIRCRAFT :{LTBLUE}每位玩家可擁有飛機數目:{ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_SHIPS :{LTBLUE}每位玩家可擁有船舶數目{ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_SHIPS :{LTBLUE}每位玩家可擁有船舶數目: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AI_BUILDS_TRAINS :{LTBLUE}電腦不可擁有列車:{ORANGE}{STRING}
STR_CONFIG_PATCHES_AI_BUILDS_ROADVEH :{LTBLUE}電腦不可擁有路面車輛:{ORANGE}{STRING}
STR_CONFIG_PATCHES_AI_BUILDS_AIRCRAFT :{LTBLUE}電腦不可擁有飛機:{ORANGE}{STRING}
STR_CONFIG_PATCHES_AI_BUILDS_SHIPS :{LTBLUE}電腦不可擁有飛機:{ORANGE}{STRING}
STR_CONFIG_PATCHES_AI_BUILDS_TRAINS :{LTBLUE}不允許電腦使用鐵道: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AI_BUILDS_ROADVEH :{LTBLUE}不允許電腦使用汽車: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AI_BUILDS_AIRCRAFT :{LTBLUE}不允許電腦使用飛機: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AI_BUILDS_SHIPS :{LTBLUE}不允許電腦使用船舶: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AINEW_ACTIVE :{LTBLUE}使用新人工智能 (開發階段){ORANGE}{STRING}
STR_CONFIG_PATCHES_AI_IN_MULTIPLAYER :{LTBLUE}可於連線遊戲加入電腦對手 (測試階段):{ORANGE}{STRING}
STR_CONFIG_PATCHES_AINEW_ACTIVE :{LTBLUE}起動新 AI (早期測試中): {ORANGE}{STRING}
STR_CONFIG_PATCHES_AI_IN_MULTIPLAYER :{LTBLUE}允許多人連線時使用 AI (實驗中): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SERVINT_TRAINS :{LTBLUE}列車預設檢修頻率:{ORANGE}{STRING} /%
STR_CONFIG_PATCHES_SERVINT_TRAINS_DISABLED :{LTBLUE}列車預設檢修頻率:{ORANGE}關閉
STR_CONFIG_PATCHES_SERVINT_ROADVEH :{LTBLUE}路面車輛預設檢修頻率:{ORANGE}{STRING} /%
STR_CONFIG_PATCHES_SERVINT_ROADVEH_DISABLED :{LTBLUE}路面車輛預設檢修頻率:{ORANGE}關閉
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}飛機預設檢修頻率:{ORANGE}{STRING} /%
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}飛機預設檢修頻率:{ORANGE}關閉
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}船預設檢修頻率:{ORANGE}{STRING} /%
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}船預設檢修頻率:{ORANGE}關閉
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}當故障關閉時不作定期檢查維修:{ORANGE}{STRING}
STR_CONFIG_PATCHES_WAGONSPEEDLIMITS :{LTBLUE}載具速度限制:{ORANGE}{STRING}
STR_CONFIG_PATCHES_DISABLE_ELRAILS :{LTBLUE}電氣化鐵路:{ORANGE}{STRING}
STR_CONFIG_PATCHES_SERVINT_TRAINS :{LTBLUE}列車預設維護間隔: {ORANGE}{STRING} /%
STR_CONFIG_PATCHES_SERVINT_TRAINS_DISABLED :{LTBLUE}列車預設維護間隔: {ORANGE}關閉
STR_CONFIG_PATCHES_SERVINT_ROADVEH :{LTBLUE}汽車預設維護間隔: {ORANGE}{STRING} /%
STR_CONFIG_PATCHES_SERVINT_ROADVEH_DISABLED :{LTBLUE}汽車預設維護間隔: {ORANGE}關閉
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}飛機預設維護間隔: {ORANGE}{STRING} /%
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}飛機預設維護間隔: {ORANGE}關閉
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}船預設維護間隔: {ORANGE}{STRING} /%
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}船預設維護間隔: {ORANGE}關閉
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}關閉運具故障之後也不自動維護: {ORANGE}{STRING}
STR_CONFIG_PATCHES_WAGONSPEEDLIMITS :{LTBLUE}起動列車車廂速限: {ORANGE}{STRING}
STR_CONFIG_PATCHES_DISABLE_ELRAILS :{LTBLUE}關閉電氣化鐵道: {ORANGE}{STRING}
STR_CONFIG_PATCHES_COLORED_NEWS_YEAR :{LTBLUE}彩色報紙出現於:{ORANGE}{STRING}
STR_CONFIG_PATCHES_STARTING_YEAR :{LTBLUE}開始時間:{ORANGE}{STRING}
STR_CONFIG_PATCHES_ENDING_YEAR :{LTBLUE}終結遊戲年份:{ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}平滑經濟模式 (更多而小的變化)
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}可以從對手購入股份
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}拖放時訊號燈之間距離:{ORANGE}{STRING} 格
STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}於日期前自動建立舊式號誌臂:{ORANGE}{STRING}
STR_CONFIG_PATCHES_COLORED_NEWS_YEAR :{LTBLUE}彩色報紙登場年份: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STARTING_YEAR :{LTBLUE}開始年份: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENDING_YEAR :{LTBLUE}遊戲結束年份: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}起動平順經濟 (更多、更小變動)
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}允許購買其它公司的股票
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}拖拉時每隔: {ORANGE}{STRING} 格自動建造號誌
STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}自動在指定年份前建造臂木號誌: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENABLE_SIGNAL_GUI :{LTBLUE}啟用號誌介面:{ORANGE}{STRING}
STR_CONFIG_PATCHES_TOWN_LAYOUT_INVALID :{WHITE}在場景編輯器中,"市鎮道路不再規劃" 是不可行的
@@ -1173,12 +1174,12 @@ STR_CONFIG_PATCHES_TOWN_LAYOUT_BETTER_ROADS :較好的規劃
STR_CONFIG_PATCHES_TOWN_LAYOUT_2X2_GRID :2乘2網格
STR_CONFIG_PATCHES_TOWN_LAYOUT_3X3_GRID :3乘3網格
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}主工具列位置{ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}主工具列位置: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :左
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :中
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :中
STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT :右
STR_CONFIG_PATCHES_SNAP_RADIUS :{LTBLUE}視窗自動黏貼範圍:{ORANGE}{STRING} 像素
STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED :{LTBLUE}視窗自動黏貼範圍:{ORANGE}關閉
STR_CONFIG_PATCHES_SNAP_RADIUS :{LTBLUE}視窗黏接距離: {ORANGE}{STRING} px
STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED :{LTBLUE}視窗黏接距離: {ORANGE}關閉
STR_CONFIG_PATCHES_TOWN_GROWTH :{LTBLUE}城市增長速度: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOWN_GROWTH_NONE :不會增長
STR_CONFIG_PATCHES_TOWN_GROWTH_SLOW :慢
@@ -1191,18 +1192,18 @@ STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER :{LTBLUE}市鎮
STR_CONFIG_MODIFIED_ROAD_REBUILD :{LTBLUE}在鋪設道路時移除不合理的路面
STR_CONFIG_PATCHES_GUI :{BLACK}介面
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}建
STR_CONFIG_PATCHES_VEHICLES :{BLACK}運輸工
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}建
STR_CONFIG_PATCHES_VEHICLES :{BLACK}運具
STR_CONFIG_PATCHES_STATIONS :{BLACK}車站
STR_CONFIG_PATCHES_ECONOMY :{BLACK}經濟
STR_CONFIG_PATCHES_AI :{BLACK}對手
STR_CONFIG_PATCHES_AI :{BLACK}競爭對手
STR_CONFIG_PATCHES_DISABLED :關
STR_CONFIG_PATCHES_DISABLED :關
STR_CONFIG_PATCHES_INT32 :{NUM}
STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}改設定值
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}以下預設檢修期與揀選項目不相容! 合法設定為 5-90% 30-800
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}改設定值
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}下面有些預設維護間隔與選定的設定不相容!5-90% 30-800 天是允許範圍
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}列車的路徑搜尋方式:{ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(不建議)
@@ -1217,78 +1218,78 @@ STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :預設 {BLUE}(
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(不建議)
STR_TEMPERATE_LANDSCAPE :溫帶
STR_SUB_ARCTIC_LANDSCAPE :亞北極
STR_SUB_ARCTIC_LANDSCAPE :
STR_SUB_TROPICAL_LANDSCAPE :亞熱帶
STR_TOYLAND_LANDSCAPE :玩具世界
STR_CHEATS :{WHITE}作弊
STR_CHEATS_TIP :{BLACK}勾選的項目表示你之前用過這個作弊
STR_CHEATS_WARNING :{BLACK}注意! 你要背叛你的對手喔! 你要記住這種行為會被一輩子記著的
STR_CHEATS_TIP :{BLACK}勾選代表您用過這個密技
STR_CHEATS_WARNING :{BLACK}警告!您正準備背叛競爭對手。請記得這種恥辱將永傳不朽
STR_CHEAT_MONEY :{LTBLUE}增加金錢:{CURRENCY}
STR_CHEAT_CHANGE_PLAYER :{LTBLUE}控制玩家:{ORANGE}{COMMA}
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}神奇剷泥車 (可以移除工業等平時拆不掉的東西){ORANGE}{STRING}
STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}隧道可以互相穿過:{ORANGE}{STRING}
STR_CHEAT_BUILD_IN_PAUSE :{LTBLUE}暫停模式建設:{ORANGE}{STRING}
STR_CHEAT_NO_JETCRASH :{LTBLUE}噴射機不會經常於小型機場失事:{ORANGE} {STRING}
STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}改變氣候:{ORANGE} {STRING}
STR_CHEAT_CHANGE_DATE :{LTBLUE}改變日期:{ORANGE} {DATE_SHORT}
STR_CHEAT_SETUP_PROD :{LTBLUE}可改變產量:{ORANGE}{STRING}
STR_CHEAT_CHANGE_PLAYER :{LTBLUE}切換玩家身分: {ORANGE}{COMMA}
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}無敵推土機 (可摧毀工業、所有東西): {ORANGE}{STRING}
STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}允許隧道交叉: {ORANGE}{STRING}
STR_CHEAT_BUILD_IN_PAUSE :{LTBLUE}暫停時建造: {ORANGE}{STRING}
STR_CHEAT_NO_JETCRASH :{LTBLUE}噴射機不會 (經常) 墜毀在小機場: {ORANGE} {STRING}
STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}切換場景類型: {ORANGE} {STRING}
STR_CHEAT_CHANGE_DATE :{LTBLUE}修改日期: {ORANGE} {DATE_SHORT}
STR_CHEAT_SETUP_PROD :{LTBLUE}允許修改產量: {ORANGE}{STRING}
STR_HEADING_FOR_WAYPOINT :{LTBLUE}目的地:{WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}目的地:{WAYPOINT}{VELOCITY}
STR_HEADING_FOR_WAYPOINT :{LTBLUE}正前往 {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}正前往 {WAYPOINT}, {VELOCITY}
STR_GO_TO_WAYPOINT : {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT : {WAYPOINT},中途不停
STR_GO_TO_WAYPOINT :前往 {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT :前往 {WAYPOINT} 不停
STR_WAYPOINTNAME_CITY :路標 {TOWN}
STR_WAYPOINTNAME_CITY_SERIAL :路標 {TOWN} #{COMMA}
STR_LANDINFO_WAYPOINT :路標
STR_WAYPOINTNAME_CITY :{TOWN} 號誌站
STR_WAYPOINTNAME_CITY_SERIAL :{TOWN} {COMMA} 號誌站
STR_LANDINFO_WAYPOINT :號誌站
STR_WAYPOINT :{WHITE}路標
STR_WAYPOINT_GRAPHICS_TIP :{BLACK}選擇路標種類
STR_WAYPOINT :{WHITE}號誌站
STR_WAYPOINT_GRAPHICS_TIP :{BLACK}顯示號誌站種類
STR_WAYPOINT_VIEWPORT :{WHITE}{WAYPOINT}
STR_WAYPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{WAYPOINT}
STR_WAYPOINT_RAW :{WAYPOINT}
STR_EDIT_WAYPOINT_NAME :{WHITE}更改路標名稱
STR_EDIT_WAYPOINT_NAME :{WHITE}編輯導航點名稱
STR_CANT_CHANGE_WAYPOINT_NAME :{WHITE}不能更改路標名稱
STR_CONVERT_RAIL_TO_WAYPOINT_TIP :{BLACK}將路軌變為路標
STR_CANT_BUILD_TRAIN_WAYPOINT :{WHITE}不能建立鐵路路標
STR_CANT_REMOVE_TRAIN_WAYPOINT :{WHITE}不能移除鐵路路標
STR_CANT_CHANGE_WAYPOINT_NAME :{WHITE}無法修改號誌站...
STR_CONVERT_RAIL_TO_WAYPOINT_TIP :{BLACK}將軌道轉成號誌站
STR_CANT_BUILD_TRAIN_WAYPOINT :{WHITE}無法在此建造列車號誌站...
STR_CANT_REMOVE_TRAIN_WAYPOINT :{WHITE}無法移除號誌站...
STR_BUILD_AUTORAIL_TIP :{BLACK}以自動模式鋪設路
STR_BUILD_AUTORAIL_TIP :{BLACK}以自動鋪軌模式建造鐵
STR_NO_TOWN_IN_SCENARIO :{WHITE}...這個場景沒有市鎮
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}你要建立一個隨機地形嗎?
STR_MANY_RANDOM_TOWNS :{BLACK}隨機產生多個市
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}您確定要隨機建立地形嗎
STR_MANY_RANDOM_TOWNS :{BLACK}許多隨機城
STR_RANDOM_TOWNS_TIP :{BLACK}以隨機放置的市鎮佈滿版圖
STR_MANY_RANDOM_INDUSTRIES :隨機產生多個工業
STR_RANDOM_INDUSTRIES_TIP :{BLACK}以隨機放置的工業佈滿版圖
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}隨機產生工業失敗...
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}無法產生工業...
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}開啟地形工具列以修改地形,植樹等等
STR_LANDSCAPING_TOOLBAR :{WHITE}地形改造
STR_LEVEL_LAND_TOOLTIP :{BLACK}移平土地
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}打開第型工具列,提升/降低地面,種樹等等
STR_LANDSCAPING_TOOLBAR :{WHITE}地形
STR_LEVEL_LAND_TOOLTIP :{BLACK}整平地面
STR_TREES_RANDOM_TYPE :{BLACK}隨機種類樹木
STR_TREES_RANDOM_TYPE_TIP :{BLACK}種植隨機種類樹木
STR_CANT_BUILD_CANALS :{WHITE}不可以在這裏開鑿運河...
STR_BUILD_CANALS_TIP :{BLACK}開鑿運河。
STR_CANT_BUILD_CANALS :{WHITE}無法在此建造運河...
STR_BUILD_CANALS_TIP :{BLACK}建造運河。按住 CTRL 可在海面上建造 (僅限海平面)
STR_LANDINFO_CANAL :運河
STR_CANT_BUILD_LOCKS :{WHITE}不可以在這裏興建水閘...
STR_BUILD_LOCKS_TIP :{BLACK}建水閘
STR_CANT_BUILD_LOCKS :{WHITE}無法在此建造水閘...
STR_BUILD_LOCKS_TIP :{BLACK}建水閘
STR_LANDINFO_LOCK :水閘
STR_BUOY_IS_IN_USE :{WHITE}...浮標正使用!
STR_BUOY_IS_IN_USE :{WHITE}...浮標正使用
STR_LANDINFO_COORDS :{BLACK}座標:{LTBLUE}{NUM}x{NUM}x{NUM} ({STRING})
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}不能移除車站部份...
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}無法移除局部車站...
STR_CANT_CONVERT_RAIL :{WHITE}無法轉換軌道種類...
STR_CONVERT_RAIL_TIP :{BLACK}轉換/升級軌道種類
@@ -2803,6 +2804,7 @@ STR_NEW_VEHICLE_TYPE :{BLACK}{BIGFONT
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}{STRING} 問世了! - {ENGINE}
STR_CAN_T_SELL_DESTROYED_VEHICLE :{WHITE}損毀的運具不能出售...
STR_CAN_T_REFIT_DESTROYED_VEHICLE :{WHITE}不能改造已撞毀的載具
STR_CAN_T_TIMETABLE_VEHICLE :{WHITE}無法為運具加入時刻表...
STR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}運具只能等待於站點。
@@ -3124,7 +3126,9 @@ STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}已為
STR_NEWGRF_DISABLED_WARNING :{WHITE}找不到的 GRF 檔已被關閉
STR_NEWGRF_NOT_FOUND_WARNING :{WHITE}找不到載入遊戲所需的 GRF 檔案
STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}一個或多個 GRF 檔案遺失
STR_NEWGRF_UNPAUSE_WARNING :{WHITE}取消暫停可能會讓 OpenTTD 當掉。請不要回報之後的當機情形。{}您真的要取消暫停嗎?
STR_LOADGAME_REMOVED_TRAMS :{WHITE}存檔版本不支援路面電車,已移除所有路面電車。
STR_CURRENCY_WINDOW :{WHITE}自訂幣值
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}匯率:{ORANGE}{CURRENCY} = £ {COMMA}
STR_CURRENCY_SEPARATOR :{LTBLUE}分隔符號:
@@ -3248,6 +3252,9 @@ STR_PURCHASE_INFO_ALL_TYPES :所有酬載類
STR_PURCHASE_INFO_ALL_BUT :{GOLD}除了
STR_PURCHASE_INFO_MAX_TE :{BLACK}最大牽引力:{GOLD}{FORCE}
STR_NUM_1 :{BLACK}{SKIP}{NUM}
STR_NUM_2 :{BLACK}{SKIP}{SKIP}{NUM}
STR_NUM_3 :{BLACK}{SKIP}{SKIP}{SKIP}{NUM}
########### String for New Landscape Generator
STR_GENERATE :{WHITE}產生
@@ -3346,6 +3353,7 @@ STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}將透
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}將透明度套用於建物,如車站、廠棚、路標及電線
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}將透明度套用於橋樑
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}將透明度套用於設施,如燈塔、天線塔等
STR_TRANSPARENT_CATENARY_DESC :{BLACK}切換供電線透明與否。CTRL+左鍵 可鎖定。
STR_TRANSPARENT_LOADING_DESC :{BLACK}將透明度套用於運載顯示表
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
+2 -1
View File
@@ -1381,7 +1381,7 @@ STR_NETWORK_SERVER_VERSION :{SILVER}Sunucu
STR_NETWORK_SERVER_ADDRESS :{SILVER}Sunucu adresi: {WHITE}{STRING} : {NUM}
STR_NETWORK_START_DATE :{SILVER}Başlama tarihi: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Şimdiki tarih: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Şifre korumalı!
STR_NETWORK_PASSWORD :{SILVER}Parola korumalı!
STR_NETWORK_SERVER_OFFLINE :{SILVER}SUNUCU KAPALI
STR_NETWORK_SERVER_FULL :{SILVER}SUNUCU DOLU
STR_NETWORK_VERSION_MISMATCH :{SILVER}SÜRÜM UYUŞMAZLIĞI
@@ -3413,6 +3413,7 @@ STR_PREVIOUS_SIGN_TOOLTIP :{BLACK}Önceki
########
STR_FUND_NEW_INDUSTRY :{BLACK}Parayla Yap
STR_PROSPECT_NEW_INDUSTRY :{BLACK}Tetkik arama
STR_BUILD_NEW_INDUSTRY :{BLACK}İnşa et
STR_INDUSTRY_SELECTION_HINT :{BLACK}Bu listeden uygun fabrikayı seçin
+61 -56
View File
@@ -33,9 +33,9 @@ STR_0011_MAIL.z :пошту
STR_0012_OIL :нафта
STR_0012_OIL.r :нафти
STR_0012_OIL.z :нафту
STR_0013_LIVESTOCK :тварини
STR_0013_LIVESTOCK.r :тварин
STR_0013_LIVESTOCK.z :тварин
STR_0013_LIVESTOCK :худоба
STR_0013_LIVESTOCK.r :худоби
STR_0013_LIVESTOCK.z :худобу
STR_0014_GOODS :товари
STR_0014_GOODS.r :товарів
STR_0014_GOODS.z :товари
@@ -126,9 +126,9 @@ STR_0031_MAIL.z :пошту
STR_0032_OIL :нафта
STR_0032_OIL.r :нафти
STR_0032_OIL.z :нафту
STR_0033_LIVESTOCK :тварини
STR_0033_LIVESTOCK.r :тварин
STR_0033_LIVESTOCK.z :тварин
STR_0033_LIVESTOCK :худоба
STR_0033_LIVESTOCK.r :худоби
STR_0033_LIVESTOCK.z :худобу
STR_0034_GOODS :товари
STR_0034_GOODS.r :товарів
STR_0034_GOODS.z :товари
@@ -212,7 +212,7 @@ STR_QUANTITY_PASSENGERS :{COMMA} пас
STR_QUANTITY_COAL :{WEIGHT} вугілля
STR_QUANTITY_MAIL :{COMMA} сум{P ка ки ок} пошти
STR_QUANTITY_OIL :{VOLUME} нафти
STR_QUANTITY_LIVESTOCK :{COMMA} гол{P ова ови ів} тварин{P и и ""}
STR_QUANTITY_LIVESTOCK :{COMMA} кор{P ова ови ів}
STR_QUANTITY_GOODS :{COMMA} ящи{P к ки ків} товарів
STR_QUANTITY_GRAIN :{WEIGHT} зерна
STR_QUANTITY_WOOD :{WEIGHT} деревини
@@ -394,9 +394,9 @@ STR_012C_MESSAGE :{WHITE}Пові
STR_012D :{WHITE}{STRING}
STR_012E_CANCEL :{BLACK}Відміна
STR_012F_OK :{BLACK}Так
STR_0130_RENAME :{BLACK}Ім'я
STR_0131_TOO_MANY_NAMES_DEFINED :{WHITE}Дуже багато імен
STR_0132_CHOSEN_NAME_IN_USE_ALREADY :{WHITE}Таке ім'я вже є
STR_0130_RENAME :{BLACK}Назва
STR_0131_TOO_MANY_NAMES_DEFINED :{WHITE}Дуже багато назв
STR_0132_CHOSEN_NAME_IN_USE_ALREADY :{WHITE}Така назва вже є
STR_OSNAME_WINDOWS :Windows
STR_OSNAME_UNIX :Unix
@@ -491,7 +491,7 @@ STR_SORT_BY_PRODUCTION :{BLACK}за п
STR_SORT_BY_TYPE :{BLACK}за типом
STR_SORT_BY_TRANSPORTED :{BLACK}за перевезенням
STR_SORT_BY_NAME :{BLACK}за назвою
STR_SORT_BY_DROPDOWN_NAME :Назва
STR_SORT_BY_DROPDOWN_NAME :за назвою
STR_SORT_BY_DATE :{BLACK}за датою
STR_SORT_BY_NUMBER :за номером
STR_SORT_BY_PROFIT_LAST_YEAR :за прибутком минулого року
@@ -500,18 +500,18 @@ STR_SORT_BY_AGE :за віком
STR_SORT_BY_RELIABILITY :за надійністю
STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :за місткістю
STR_SORT_BY_MAX_SPEED :за швидкістю
STR_SORT_BY_MODEL :Модель
STR_SORT_BY_MODEL :за моделлю
STR_SORT_BY_VALUE :за ціною
STR_SORT_BY_FACILITY :Вид станцій
STR_SORT_BY_FACILITY :за типом станції
STR_SORT_BY_WAITING :за ціною вантажу
STR_SORT_BY_RATING_MAX :Рейтинг вантажів
STR_ENGINE_SORT_ENGINE_ID :ID (класичне)
STR_ENGINE_SORT_COST :Ціна
STR_ENGINE_SORT_POWER :Потужність
STR_ENGINE_SORT_INTRO_DATE :Дата випуску
STR_ENGINE_SORT_RUNNING_COST :Вартість експлуатації
STR_ENGINE_SORT_POWER_VS_RUNNING_COST :Потужність/Вартість експлуатації
STR_ENGINE_SORT_CARGO_CAPACITY :Місткість
STR_ENGINE_SORT_ENGINE_ID :за ID (класичне)
STR_ENGINE_SORT_COST :за ціною
STR_ENGINE_SORT_POWER :за потужністю
STR_ENGINE_SORT_INTRO_DATE :за датою випуску
STR_ENGINE_SORT_RUNNING_COST :за вартістю експлуатації
STR_ENGINE_SORT_POWER_VS_RUNNING_COST :за потужністю/вартістю експлуатації
STR_ENGINE_SORT_CARGO_CAPACITY :за місткістю
STR_NO_WAITING_CARGO :{BLACK}Звідси поки що нічого перевозити
STR_SELECT_ALL_FACILITIES :{BLACK}Вибрати весь транспорт
STR_SELECT_ALL_TYPES :{BLACK}Вибрати всі типи вантажів
@@ -723,7 +723,7 @@ STR_020F_GENERAL_INFORMATION :{YELLOW}Заг
STR_MESSAGES_ALL :{YELLOW}Відображати повідомлення: відкл. / коротко / повно
STR_MESSAGE_SOUND :{YELLOW}Звукове сповіщення для підсумкових новин
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...дуже далеко від попереднього пункту призначення
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Кращі компанії, що досягли {NUM}{}({STRING} рівень)
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Кращі компанії, які досягли {NUM}{}({STRING} рівень)
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Таблиця компаній з {NUM}
STR_0212 :{BIGFONT}{COMMA}.
STR_0213_BUSINESSMAN :Бізнесмен
@@ -763,7 +763,7 @@ STR_0238_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}...на
STR_0239_SITE_UNSUITABLE :{WHITE}...невідповідне місце
STR_023A_TOO_MANY_TOWNS :{WHITE}...забагато міст
STR_CANNOT_GENERATE_TOWN :{WHITE}Не можна створити місто
STR_NO_SPACE_FOR_TOWN :{WHITE}...На карті немає вільного місця
STR_NO_SPACE_FOR_TOWN :{WHITE}...на карті немає вільного місця
STR_023B_INCREASE_SIZE_OF_TOWN :{BLACK}Збільшити розмір міста
STR_023C_EXPAND :{BLACK}Розширити
STR_023D_RANDOM_TOWN :{BLACK}Випадкове місто
@@ -914,7 +914,7 @@ STR_TRANSPARENT_SIGNS :{SETX 12}Про
############ range for menu starts
STR_02D5_LAND_BLOCK_INFO :Інформація про ділянку
STR_02D6 :
STR_CONSOLE_SETTING :Вкл/викл консоль
STR_CONSOLE_SETTING :Вкл.ідкл. консоль
STR_02D7_SCREENSHOT_CTRL_S :Копія екрану (Ctrl-S)
STR_02D8_GIANT_SCREENSHOT_CTRL_G :Копія всієї карти (Ctrl-G)
STR_02D9_ABOUT_OPENTTD :Про гру 'OpenTTD'
@@ -966,7 +966,7 @@ STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Пока
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Показати налаштування складності
STR_0303_START_A_NEW_GAME_USING :{BLACK}Почати нову гру, використовуючи сценарій
STR_0304_QUIT :{BLACK}Вихід
STR_0305_QUIT_OPENTTD :{BLACK}покинути 'OpenTTD'
STR_0305_QUIT_OPENTTD :{BLACK}Вийти з OpenTTD
STR_0307_OPENTTD :{WHITE}OpenTTD {REV}
STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...можна будувати лише у містах
STR_030E_SELECT_TEMPERATE_LANDSCAPE :{BLACK}Вибрати 'помірний' клімат
@@ -1093,7 +1093,7 @@ STR_NO_ORDERS_VEL :{LTBLUE}Без
STR_PASSENGERS :пасАжир
STR_BAGS :мішків
STR_TONS :тонИ
STR_TONS :тони
STR_LITERS :літрів
STR_ITEMS :штук
STR_CRATES :ЯщикИ
@@ -1212,7 +1212,7 @@ STR_CONFIG_PATCHES_TREE_PLACER_IMPROVED :Покраще
STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION :{LTBLUE}Обертання карти висот: {ORANGE}{STRING}
STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Проти годинникової
STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION_CLOCKWISE :За годинниковою
STR_CONFIG_PATCHES_SE_FLAT_WORLD_HEIGHT :{LTBLUE}Рівень висоти для карт з плоским рельєфом: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SE_FLAT_WORLD_HEIGHT :{LTBLUE}Рівень висоти для карт з пласким рельєфом: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Макс. довжина станції: {ORANGE}{STRING} {RED}Велике значення гальмує гру
STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Автоматичний техогляд гелікоптерів на площадках: {ORANGE}{STRING}
@@ -1464,7 +1464,7 @@ STR_RAIL_REFIT_VEHICLE :{BLACK}Пере
STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Виберіть вид вантажу для перевезення
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Переобладнати поїзд для перевезення вибраного виду вантажу
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Неможливо переобладнати поїзд...
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Тривалість обслуговування у відсотках: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Інтервал техогляду у відсотках: {ORANGE}{STRING}
STR_CONFIG_GAME_PRODUCTION :{WHITE}Змінити виробництво
TEMP_AI_IN_PROGRESS :{WHITE}Ласкаво просимо до тестування нового інтелекту. Якщо Ви помітили недолік, надішліть копію екрану у форум.
@@ -1703,8 +1703,8 @@ STR_CONFIG_PATCHES_MAP_Y :{LTBLUE}Y-ро
STR_PNGMAP_ERROR :{WHITE}Неможливо завантажити ландшафт з PNG...
STR_PNGMAP_ERR_FILE_NOT_FOUND :{WHITE}...файл не знайдено
STR_PNGMAP_ERR_IMAGE_TYPE :{WHITE}...неможливо конвертувати. треба 8 чи 24-bit PNG формат.
STR_PNGMAP_ERR_MISC :{WHITE}...Помилка. (можливо зіпсований файл)
STR_PNGMAP_ERR_IMAGE_TYPE :{WHITE}...неможливо конвертувати. Треба 8 чи 24-bit PNG формат.
STR_PNGMAP_ERR_MISC :{WHITE}...помилка (можливо, зіпсований файл).
STR_BMPMAP_ERROR :{WHITE}Не можу завантажити ландшафт з BMP...
STR_BMPMAP_ERR_IMAGE_TYPE :{WHITE}...неможливо перетворити тип зображення
@@ -1786,7 +1786,7 @@ STR_ROAD_WORKS_IN_PROGRESS :{WHITE}Доро
STR_1802_ROAD_CONSTRUCTION :{WHITE}Будівництво дороги
STR_WHITE_TRAMWAY_CONSTRUCTION :{WHITE}Будівництво трамвайної колії
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Виберіть дорожній міст
STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... односторонні дороги не можуть перетинатись
STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}...односторонні дороги не можуть перетинатись
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Неможливо тут побудувати дорогу ...
STR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Тут не можна побудувати трамвайну колію...
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Неможливо прибрати дорогу звідси...
@@ -2320,35 +2320,35 @@ STR_6815_DISASTERS :{LTBLUE}Сти
STR_CITY_APPROVAL :{LTBLUE}Відношення влади до перебудови території міста: {ORANGE}{STRING}
############ range for difficulty settings ends
STR_NONE :Нема
STR_NONE :нема
STR_NUM_VERY_LOW :дуже мало
STR_6816_LOW :МалО
STR_6817_NORMAL :Нормально
STR_6818_HIGH :Багато
STR_6816_LOW :мало
STR_6817_NORMAL :нормально
STR_6818_HIGH :багато
STR_6819 :{BLACK}{SMALLLEFTARROW}
STR_681A :{BLACK}{SMALLRIGHTARROW}
STR_681B_VERY_SLOW :Дуже повільно
STR_681C_SLOW :Повільно
STR_681D_MEDIUM :Середньо
STR_681E_FAST :Швидко
STR_681F_VERY_FAST :Дуже швидко
STR_VERY_LOW :Дуже мало
STR_6820_LOW :МаЛо
STR_6821_MEDIUM :Середньо
STR_6822_HIGH :Багато
STR_6823_NONE :Відкл.
STR_6824_REDUCED :Знижено
STR_6825_NORMAL :Нормально
STR_681D_MEDIUM :середньо
STR_681E_FAST :швидко
STR_681F_VERY_FAST :дуже швидко
STR_VERY_LOW :дуже мало
STR_6820_LOW :мало
STR_6821_MEDIUM :середньо
STR_6822_HIGH :багато
STR_6823_NONE :відкл.
STR_6824_REDUCED :знижено
STR_6825_NORMAL :нормально
STR_6826_X1_5 :x1.5
STR_6827_X2 :x2
STR_6828_X3 :x3
STR_6829_X4 :x4
STR_682A_VERY_FLAT :Дуже рівний
STR_682B_FLAT :Рівнинний
STR_682C_HILLY :Горбкуватий
STR_682D_MOUNTAINOUS :Гористий
STR_682E_STEADY :Стабільна
STR_682F_FLUCTUATING :Нестійка
STR_682A_VERY_FLAT :плаский
STR_682B_FLAT :рівнинний
STR_682C_HILLY :горбкуватий
STR_682D_MOUNTAINOUS :гористий
STR_682E_STEADY :стабільна
STR_682F_FLUCTUATING :нестійка
STR_6830_IMMEDIATE :відразу
STR_6831_3_MONTHS_AFTER_PLAYER :3 місяці після гравця
STR_6832_6_MONTHS_AFTER_PLAYER :6 місяців після гравця
@@ -2358,9 +2358,9 @@ STR_6835_AT_END_OF_LINE_ONLY :лише в к
STR_6836_OFF :відкл.
STR_6837_ON :вкл.
STR_6838_SHOW_HI_SCORE_CHART :{BLACK}Показати таблицю рекордів
STR_PERMISSIVE :Допустиме
STR_TOLERANT :Терпиме
STR_HOSTILE :Вороже
STR_PERMISSIVE :допустиме
STR_TOLERANT :терпиме
STR_HOSTILE :вороже
##id 0x7000
STR_7000 :
@@ -2564,7 +2564,7 @@ STR_801B_PASSENGER_CAR :Пасажир
STR_801C_MAIL_VAN :Поштовий
STR_801D_COAL_CAR :Вугільний
STR_801E_OIL_TANKER :Нафтовий
STR_801F_LIVESTOCK_VAN :Вагон для тварин
STR_801F_LIVESTOCK_VAN :Вагон для худоби
STR_8020_GOODS_VAN :Товарний
STR_8021_GRAIN_HOPPER :Вагон для зерна
STR_8022_WOOD_TRUCK :Вагон для деревини
@@ -2594,7 +2594,7 @@ STR_8039_PASSENGER_CAR :Пасажир
STR_803A_MAIL_VAN :Вагон для пошти
STR_803B_COAL_CAR :Вагон для вугілля
STR_803C_OIL_TANKER :Цистерна для нафти
STR_803D_LIVESTOCK_VAN :вантажівка для тварин
STR_803D_LIVESTOCK_VAN :вантажівка для худоби
STR_803E_GOODS_VAN :вантажівка для товарів
STR_803F_GRAIN_HOPPER :вагон для зерна
STR_8040_WOOD_TRUCK :лісовоз
@@ -3260,6 +3260,7 @@ STR_NEWGRF_ERROR_LOAD_AFTER :{STRING} має
STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{STRING} потребує версію OpenTTD не нижче {STRING}.
STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF-файл, для якого це призначалось перекласти
STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Завантажено забагато NewGRF-файлів.
STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Завантаження {STRING} як статичного NewGRF з {STRING} може викликати десинхронізацію.
STR_NEWGRF_ADD :{BLACK}Додати
STR_NEWGRF_ADD_TIP :{BLACK}Додати файли NewGRF до списку
@@ -3291,6 +3292,10 @@ STR_NEWGRF_NOT_FOUND_WARNING :{WHITE}Відс
STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Відсутній GRF файл(и)
STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Зняття з паузи може привести до аварійної відмови OpenTTD. Не рапортуйте про наступні відмови.{}Ви дійсно хочете зняти з паузи?
STR_NEWGRF_BROKEN :{WHITE}Поведінка NewGRF '{0:STRING}' може спричинити розсинхронізацію та/або аварійне завершення.
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Це змінить довжину транспорту для '{1:ENGINE}', якщо він не в депо.
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Потяг '{VEHICLE}', який належить '{COMPANY}', має неправильну довжину. Можливо, це спричинено проблемами з NewGRFs. Гра може розсинхронізуватись або аварійно завершитись.
STR_LOADGAME_REMOVED_TRAMS :{WHITE}Гра була записана у версії без підтримки трамваїв. Усі трамваї були видалені.
STR_CURRENCY_WINDOW :{WHITE}Вибір грошової одиниці
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Валютний курс: {ORANGE}{CURRENCY} = Ј {COMMA}
STR_CURRENCY_SEPARATOR :{LTBLUE}Роздільник:
@@ -3489,7 +3494,7 @@ STR_HELISTATION :{BLACK}Гелі
STR_SMALL_AIRPORTS :{BLACK}Малі аеропорти
STR_LARGE_AIRPORTS :{BLACK}Великі аеропорти
STR_HUB_AIRPORTS :{BLACK}Мега-аеропорти
STR_HUB_AIRPORTS :{BLACK}Вузлові аеропорти
STR_HELIPORTS :{BLACK}Геліко-аеропорт
############ Tooltip measurment
+4 -8
View File
@@ -225,14 +225,12 @@ static bool IsUniqueCompanyName(const char *name)
*/
CommandCost CmdChangeCompanyName(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
{
Player *p;
if (StrEmpty(_cmd_text)) return CMD_ERROR;
if (StrEmpty(_cmd_text) || strlen(_cmd_text) > MAX_LENGTH_COMPANY_NAME) return CMD_ERROR;
if (!IsUniqueCompanyName(_cmd_text)) return_cmd_error(STR_NAME_MUST_BE_UNIQUE);
if (flags & DC_EXEC) {
p = GetPlayer(_current_player);
Player *p = GetPlayer(_current_player);
free(p->name);
p->name = strdup(_cmd_text);
MarkWholeScreenDirty();
@@ -264,14 +262,12 @@ static bool IsUniquePresidentName(const char *name)
*/
CommandCost CmdChangePresidentName(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
{
Player *p;
if (StrEmpty(_cmd_text)) return CMD_ERROR;
if (StrEmpty(_cmd_text) || strlen(_cmd_text) > MAX_LENGTH_PRESIDENT_NAME) return CMD_ERROR;
if (!IsUniquePresidentName(_cmd_text)) return_cmd_error(STR_NAME_MUST_BE_UNIQUE);
if (flags & DC_EXEC) {
p = GetPlayer(_current_player);
Player *p = GetPlayer(_current_player);
free(p->president_name);
p->president_name = strdup(_cmd_text);
+17 -8
View File
@@ -5,6 +5,7 @@
#include "stdafx.h"
#include "openttd.h"
#include "mixer.h"
#include "core/math_func.hpp"
struct MixerChannel {
bool active;
@@ -19,8 +20,8 @@ struct MixerChannel {
uint32 samples_left;
/* Mixing volume */
uint volume_left;
uint volume_right;
int volume_left;
int volume_right;
uint flags;
};
@@ -28,14 +29,22 @@ struct MixerChannel {
static MixerChannel _channels[8];
static uint32 _play_rate;
/**
* The theoretical maximum volume for a single sound sample. Multiple sound
* samples should not exceed this limit as it will sound too loud. It also
* stops overflowing when too many sounds are played at the same time, which
* causes an even worse sound quality.
*/
static const int MAX_VOLUME = 128 * 128;
static void mix_int8_to_int16(MixerChannel *sc, int16 *buffer, uint samples)
{
int8 *b;
uint32 frac_pos;
uint32 frac_speed;
uint volume_left;
uint volume_right;
int volume_left;
int volume_right;
if (samples > sc->samples_left) samples = sc->samples_left;
sc->samples_left -= samples;
@@ -50,15 +59,15 @@ static void mix_int8_to_int16(MixerChannel *sc, int16 *buffer, uint samples)
if (frac_speed == 0x10000) {
/* Special case when frac_speed is 0x10000 */
do {
buffer[0] += *b * volume_left >> 8;
buffer[1] += *b * volume_right >> 8;
buffer[0] = Clamp(buffer[0] + (*b * volume_left >> 8), -MAX_VOLUME, MAX_VOLUME);
buffer[1] = Clamp(buffer[1] + (*b * volume_right >> 8), -MAX_VOLUME, MAX_VOLUME);
b++;
buffer += 2;
} while (--samples > 0);
} else {
do {
buffer[0] += *b * volume_left >> 8;
buffer[1] += *b * volume_right >> 8;
buffer[0] = Clamp(buffer[0] + (*b * volume_left >> 8), -MAX_VOLUME, MAX_VOLUME);
buffer[1] = Clamp(buffer[1] + (*b * volume_right >> 8), -MAX_VOLUME, MAX_VOLUME);
buffer += 2;
frac_pos += frac_speed;
b += frac_pos >> 16;
+2 -1
View File
@@ -22,10 +22,11 @@ enum {
SEND_MTU = 1460, ///< Number of bytes we can pack in a single packet
NETWORK_GAME_INFO_VERSION = 4, ///< What version of game-info do we use?
NETWORK_COMPANY_INFO_VERSION = 4, ///< What version of company info is this?
NETWORK_COMPANY_INFO_VERSION = 5, ///< What version of company info is this?
NETWORK_MASTER_SERVER_VERSION = 1, ///< What version of master-server-protocol do we use?
NETWORK_NAME_LENGTH = 80, ///< The maximum length of the server name and map name, in bytes including '\0'
NETWORK_COMPANY_NAME_LENGTH = 32, ///< The maximum length of the company name, in bytes including '\0'
NETWORK_HOSTNAME_LENGTH = 80, ///< The maximum length of the host name, in bytes including '\0'
NETWORK_UNIQUE_ID_LENGTH = 33, ///< The maximum length of the unique id of the clients, in bytes including '\0'
NETWORK_REVISION_LENGTH = 15, ///< The maximum length of the revision, in bytes including '\0'
+1
View File
@@ -45,6 +45,7 @@ bool _network_advertise; ///< is the server advertising to the master server?
/* Check whether NETWORK_NUM_LANDSCAPES is still in sync with NUM_LANDSCAPE */
assert_compile((int)NETWORK_NUM_LANDSCAPES == (int)NUM_LANDSCAPE);
assert_compile((int)NETWORK_COMPANY_NAME_LENGTH == MAX_LENGTH_COMPANY_NAME + 1);
// global variables (declared in network_data.h)
CommandPacket *_local_command_queue;
-3
View File
@@ -397,10 +397,8 @@ DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_CLIENT_INFO)
uint16 index = p->Recv_uint16();
PlayerID playas = (Owner)p->Recv_uint8();
char name[NETWORK_NAME_LENGTH];
char unique_id[NETWORK_UNIQUE_ID_LENGTH];
p->Recv_string(name, sizeof(name));
p->Recv_string(unique_id, sizeof(unique_id));
if (MY_CLIENT->has_quit) return NETWORK_RECV_STATUS_CONN_LOST;
@@ -432,7 +430,6 @@ DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_CLIENT_INFO)
ci->client_playas = playas;
ttd_strlcpy(ci->client_name, name, sizeof(ci->client_name));
ttd_strlcpy(ci->unique_id, unique_id, sizeof(ci->unique_id));
InvalidateWindow(WC_CLIENT_LIST, 0);
+52 -6
View File
@@ -47,7 +47,6 @@ DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_CLIENT_INFO)(NetworkTCPSocketHandler
// uint16: The index of the client (always unique on a server. 1 = server)
// uint8: As which player the client is playing
// String: The name of the client
// String: The unique id of the client
//
if (ci->client_index != NETWORK_EMPTY_INDEX) {
@@ -55,7 +54,6 @@ DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_CLIENT_INFO)(NetworkTCPSocketHandler
p->Send_uint16(ci->client_index);
p->Send_uint8 (ci->client_playas);
p->Send_string(ci->client_name);
p->Send_string(ci->unique_id);
cs->Send_Packet(p);
}
@@ -609,6 +607,12 @@ DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_COMPANY_INFO)
DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_NEWGRFS_CHECKED)
{
if (cs->status != STATUS_INACTIVE) {
/* Illegal call, return error and ignore the packet */
SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_NOT_EXPECTED);
return;
}
NetworkClientInfo *ci = DEREF_CLIENT_INFO(cs);
/* We now want a password from the client else we do not allow him in! */
@@ -625,6 +629,12 @@ DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_NEWGRFS_CHECKED)
DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_JOIN)
{
if (cs->status != STATUS_INACTIVE) {
/* Illegal call, return error and ignore the packet */
SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_NOT_EXPECTED);
return;
}
char name[NETWORK_CLIENT_NAME_LENGTH];
char unique_id[NETWORK_UNIQUE_ID_LENGTH];
NetworkClientInfo *ci;
@@ -634,14 +644,12 @@ DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_JOIN)
p->Recv_string(client_revision, sizeof(client_revision));
#if defined(WITH_REV) || defined(WITH_REV_HACK)
// Check if the client has revision control enabled
if (!IsNetworkCompatibleVersion(client_revision)) {
// Different revisions!!
SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_WRONG_REVISION);
return;
}
#endif
p->Recv_string(name, sizeof(name));
playas = (Owner)p->Recv_uint8();
@@ -889,7 +897,7 @@ DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_COMMAND)
* to match the player in the packet. If it doesn't, the client has done
* something pretty naughty (or a bug), and will be kicked
*/
if (!(cp->cmd == CMD_PLAYER_CTRL && cp->p1 == 0) && ci->client_playas != cp->player) {
if (!(cp->cmd == CMD_PLAYER_CTRL && cp->p1 == 0 && ci->client_playas == PLAYER_NEW_COMPANY) && ci->client_playas != cp->player) {
IConsolePrintF(_icolour_err, "WARNING: player %d (IP: %s) tried to execute a command as player %d, kicking...",
ci->client_playas + 1, GetPlayerIP(ci), cp->player + 1);
SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_PLAYER_MISMATCH);
@@ -1009,6 +1017,12 @@ DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_QUIT)
DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_ACK)
{
if (cs->status < STATUS_AUTH) {
/* Illegal call, return error and ignore the packet */
SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_NOT_AUTHORIZED);
return;
}
uint32 frame = p->Recv_uint32();
/* The client is trying to catch up with the server */
@@ -1137,6 +1151,12 @@ void NetworkServer_HandleChat(NetworkAction action, DestType desttype, int dest,
DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_CHAT)
{
if (cs->status < STATUS_AUTH) {
/* Illegal call, return error and ignore the packet */
SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_NOT_AUTHORIZED);
return;
}
NetworkAction action = (NetworkAction)p->Recv_uint8();
DestType desttype = (DestType)p->Recv_uint8();
int dest = p->Recv_uint16();
@@ -1144,11 +1164,31 @@ DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_CHAT)
p->Recv_string(msg, MAX_TEXT_MSG_LEN);
NetworkServer_HandleChat(action, desttype, dest, msg, cs->index);
const NetworkClientInfo *ci = DEREF_CLIENT_INFO(cs);
switch (action) {
case NETWORK_ACTION_GIVE_MONEY:
if (!IsValidPlayer(ci->client_playas)) break;
/* Fall-through */
case NETWORK_ACTION_CHAT:
case NETWORK_ACTION_CHAT_CLIENT:
case NETWORK_ACTION_CHAT_COMPANY:
NetworkServer_HandleChat(action, desttype, dest, msg, cs->index);
break;
default:
IConsolePrintF(_icolour_err, "WARNING: invalid chat action from client %d (IP: %s).", ci->client_index, GetPlayerIP(ci));
SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_NOT_EXPECTED);
break;
}
}
DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_SET_PASSWORD)
{
if (cs->status != STATUS_ACTIVE) {
/* Illegal call, return error and ignore the packet */
SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_NOT_EXPECTED);
return;
}
char password[NETWORK_PASSWORD_LENGTH];
const NetworkClientInfo *ci;
@@ -1162,6 +1202,12 @@ DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_SET_PASSWORD)
DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_SET_NAME)
{
if (cs->status != STATUS_ACTIVE) {
/* Illegal call, return error and ignore the packet */
SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_NOT_EXPECTED);
return;
}
char client_name[NETWORK_CLIENT_NAME_LENGTH];
NetworkClientInfo *ci;
+5 -52
View File
@@ -92,12 +92,6 @@ DEF_UDP_RECEIVE_COMMAND(Server, PACKET_UDP_CLIENT_FIND_SERVER)
DEF_UDP_RECEIVE_COMMAND(Server, PACKET_UDP_CLIENT_DETAIL_INFO)
{
NetworkTCPSocketHandler *cs;
NetworkClientInfo *ci;
Player *player;
byte current = 0;
int i;
// Just a fail-safe.. should never happen
if (!_network_udp_server) return;
@@ -110,6 +104,8 @@ DEF_UDP_RECEIVE_COMMAND(Server, PACKET_UDP_CLIENT_DETAIL_INFO)
/* Fetch the latest version of everything */
NetworkPopulateCompanyInfo();
Player *player;
byte current = 0;
/* Go through all the players */
FOR_ALL_PLAYERS(player) {
/* Skip non-active players */
@@ -130,58 +126,15 @@ DEF_UDP_RECEIVE_COMMAND(Server, PACKET_UDP_CLIENT_DETAIL_INFO)
/* Send 1 if there is a passord for the company else send 0 */
packet.Send_bool (!StrEmpty(_network_player_info[player->index].password));
for (i = 0; i < NETWORK_VEHICLE_TYPES; i++)
for (int i = 0; i < NETWORK_VEHICLE_TYPES; i++) {
packet.Send_uint16(_network_player_info[player->index].num_vehicle[i]);
}
for (i = 0; i < NETWORK_STATION_TYPES; i++)
for (int i = 0; i < NETWORK_STATION_TYPES; i++) {
packet.Send_uint16(_network_player_info[player->index].num_station[i]);
/* Find the clients that are connected to this player */
FOR_ALL_CLIENTS(cs) {
ci = DEREF_CLIENT_INFO(cs);
if (ci->client_playas == player->index) {
packet.Send_bool (true);
packet.Send_string(ci->client_name);
packet.Send_string(ci->unique_id);
packet.Send_uint32(ci->join_date);
}
}
/* Also check for the server itself */
ci = NetworkFindClientInfoFromIndex(NETWORK_SERVER_INDEX);
if (ci->client_playas == player->index) {
packet.Send_bool (true);
packet.Send_string(ci->client_name);
packet.Send_string(ci->unique_id);
packet.Send_uint32(ci->join_date);
}
/* Indicates end of client list */
packet.Send_bool(false);
}
/* And check if we have any spectators */
FOR_ALL_CLIENTS(cs) {
ci = DEREF_CLIENT_INFO(cs);
if (!IsValidPlayer(ci->client_playas)) {
packet.Send_bool (true);
packet.Send_string(ci->client_name);
packet.Send_string(ci->unique_id);
packet.Send_uint32(ci->join_date);
}
}
/* Also check for the server itself */
ci = NetworkFindClientInfoFromIndex(NETWORK_SERVER_INDEX);
if (!IsValidPlayer(ci->client_playas)) {
packet.Send_bool (true);
packet.Send_string(ci->client_name);
packet.Send_string(ci->unique_id);
packet.Send_uint32(ci->join_date);
}
/* Indicates end of client list */
packet.Send_bool(false);
this->SendPacket(&packet, client_addr);
}
+63 -22
View File
@@ -44,6 +44,7 @@
#include "road_func.h"
#include "player_base.h"
#include "settings_type.h"
#include "network/network.h"
#include "map_func.h"
#include "table/strings.h"
@@ -224,6 +225,23 @@ static GRFFile *GetFileByFilename(const char *filename)
return file;
}
/** Reset all NewGRFData that was used only while processing data */
static void ClearTemporaryNewGRFData()
{
/* Clear the GOTO labels used for GRF processing */
for (GRFLabel *l = _cur_grffile->label; l != NULL;) {
GRFLabel *l2 = l->next;
free(l);
l = l2;
}
_cur_grffile->label = NULL;
/* Clear the list of spritegroups */
free(_cur_grffile->spritegroups);
_cur_grffile->spritegroups = NULL;
_cur_grffile->spritegroups_count = 0;
}
/** Used when setting an object's property to map to the GRF's strings
* while taking in consideration the "drift" between TTDPatch string system and OpenTTD's one
@@ -3670,6 +3688,32 @@ static void CfgApply(byte *buf, int len)
}
}
/**
* Disable a static NewGRF when it is influencing another (non-static)
* NewGRF as this could cause desyncs.
*
* We could just tell the NewGRF querying that the file doesn't exist,
* but that might give unwanted results. Disabling the NewGRF gives the
* best result as no NewGRF author can complain about that.
* @param c the NewGRF to disable.
*/
static void DisableStaticNewGRFInfluencingNonStaticNewGRFs(GRFConfig *c)
{
if (c->error != NULL) {
free(c->error->custom_message);
free(c->error->data);
free(c->error);
}
c->status = GCS_DISABLED;
c->error = CallocT<GRFError>(1);
c->error->data = strdup(_cur_grfconfig->name);
c->error->severity = STR_NEWGRF_ERROR_MSG_FATAL;
c->error->message = STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC;
ClearTemporaryNewGRFData();
_skip_sprites = -1;
}
/* Action 0x07 */
/* Action 0x09 */
static void SkipIf(byte *buf, int len)
@@ -3723,7 +3767,12 @@ static void SkipIf(byte *buf, int len)
if (param == 0x88 && condtype != 0x0B && condtype != 0x0C) {
/* GRF ID checks */
const GRFConfig *c = GetGRFConfig(cond_val);
GRFConfig *c = GetGRFConfig(cond_val);
if (c != NULL && HasBit(c->flags, GCF_STATIC) && !HasBit(_cur_grfconfig->flags, GCF_STATIC) && c->status != GCS_DISABLED && _networking) {
DisableStaticNewGRFInfluencingNonStaticNewGRFs(c);
c = NULL;
}
if (condtype != 10 && c == NULL) {
grfmsg(7, "SkipIf: GRFID 0x%08X unknown, skipping test", BSWAP32(cond_val));
@@ -3821,6 +3870,7 @@ static void SkipIf(byte *buf, int len)
/* If an action 8 hasn't been encountered yet, disable the grf. */
if (_cur_grfconfig->status != GCS_ACTIVATED) {
_cur_grfconfig->status = GCS_DISABLED;
ClearTemporaryNewGRFData();
}
}
}
@@ -3993,7 +4043,7 @@ static void GRFLoadError(byte *buf, int len)
/* This is a fatal error, so make sure the GRF is deactivated and no
* more of it gets loaded. */
_cur_grfconfig->status = GCS_DISABLED;
ClearTemporaryNewGRFData();
_skip_sprites = -1;
}
@@ -4176,6 +4226,7 @@ static uint32 PerformGRM(uint32 *grm, uint16 num_ids, uint16 count, uint8 op, ui
/* Deactivate GRF */
grfmsg(0, "ParamSet: GRM: Unable to allocate %d %s, deactivating", count, type);
_cur_grfconfig->status = GCS_DISABLED;
ClearTemporaryNewGRFData();
_skip_sprites = -1;
return UINT_MAX;
}
@@ -4266,8 +4317,8 @@ static void ParamSet(byte *buf, int len)
if (_cur_spriteid + count >= 16384) {
grfmsg(0, "ParamSet: GRM: Unable to allocate %d sprites; try changing NewGRF order", count);
_cur_grfconfig->status = GCS_DISABLED;
_skip_sprites = -1;
ClearTemporaryNewGRFData();
_skip_sprites = -1;
return;
}
@@ -4299,7 +4350,12 @@ static void ParamSet(byte *buf, int len)
} else {
/* Read another GRF File's parameter */
const GRFFile *file = GetFileByGRFID(data);
if (file == NULL || src1 >= file->param_end) {
GRFConfig *c = GetGRFConfig(data);
if (c != NULL && HasBit(c->status, GCF_STATIC) && !HasBit(_cur_grfconfig->status, GCF_STATIC) && _networking) {
/* Disable the read GRF if it is a static NewGRF. */
DisableStaticNewGRFInfluencingNonStaticNewGRFs(c);
src1 = 0;
} else if (file == NULL || src1 >= file->param_end || (c != NULL && c->status == GCS_DISABLED)) {
src1 = 0;
} else {
src1 = file->param[src1];
@@ -4584,6 +4640,7 @@ static void FeatureTownName(byte *buf, int len)
grfmsg(0, "FeatureTownName: definition 0x%02X doesn't exist, deactivating", ref_id);
DelGRFTownName(grfid);
_cur_grfconfig->status = GCS_DISABLED;
ClearTemporaryNewGRFData();
_skip_sprites = -1;
return;
}
@@ -4874,6 +4931,7 @@ static void TranslateGRFStrings(byte *buf, int len)
_cur_grfconfig->error = error;
_cur_grfconfig->status = GCS_DISABLED;
ClearTemporaryNewGRFData();
_skip_sprites = -1;
return;
}
@@ -5241,23 +5299,6 @@ static void ResetNewGRFData()
InitializeSpriteGroupPool();
}
/** Reset all NewGRFData that was used only while processing data */
static void ClearTemporaryNewGRFData()
{
/* Clear the GOTO labels used for GRF processing */
for (GRFLabel *l = _cur_grffile->label; l != NULL;) {
GRFLabel *l2 = l->next;
free(l);
l = l2;
}
_cur_grffile->label = NULL;
/* Clear the list of spritegroups */
free(_cur_grffile->spritegroups);
_cur_grffile->spritegroups = NULL;
_cur_grffile->spritegroups_count = 0;
}
static void BuildCargoTranslationMap()
{
memset(_cur_grffile->cargo_map, 0xFF, sizeof(_cur_grffile->cargo_map));
+9 -3
View File
@@ -106,9 +106,15 @@ CargoID GetCargoTranslation(uint8 cargo, const GRFFile *grffile, bool usebit)
/* Else the cargo value is a 'climate independent' 'bitnum' */
if (HasBit(_cargo_mask, cargo)) return GetCargoIDByBitnum(cargo);
} else {
/* If the GRF contains a translation table (and the cargo is in bounds)
* then get the cargo ID for the label */
if (cargo < grffile->cargo_max) return GetCargoIDByLabel(grffile->cargo_list[cargo]);
/* If the GRF contains a translation table... */
if (grffile->cargo_max > 0) {
/* ...and the cargo is in bounds, then get the cargo ID for
* the label */
if (cargo < grffile->cargo_max) return GetCargoIDByLabel(grffile->cargo_list[cargo]);
} else {
/* Else the cargo value is a 'climate independent' 'bitnum' */
if (HasBit(_cargo_mask, cargo)) return GetCargoIDByBitnum(cargo);
}
}
return CT_INVALID;
}
+12 -5
View File
@@ -26,7 +26,13 @@ enum GRFStatus {
GCS_ACTIVATED ///< GRF file has been activated
};
enum GRFListCompatibility{
/** Encountered GRF bugs */
enum GRFBugs {
GBUG_VEH_LENGTH, ///< Length of rail vehicle changes when not inside a depot
};
/** Status of post-gameload GRF compatibility check */
enum GRFListCompatibility {
GLC_ALL_GOOD,
GLC_COMPATIBLE,
GLC_NOT_FOUND
@@ -52,10 +58,11 @@ struct GRFConfig : public GRFIdentifier {
char *info;
GRFError *error;
uint8 flags;
GRFStatus status;
uint32 param[0x80];
uint8 num_params;
uint8 flags; ///< NOSAVE: GCF_Flags, bitset
GRFStatus status; ///< NOSAVE: GRFStatus, enum
uint32 grf_bugs; ///< NOSAVE: bugs in this GRF in this run, @see enum GRFBugs
uint32 param[0x80]; ///< GRF parameters
uint8 num_params; ///< Number of used parameters
struct GRFConfig *next;
+3 -3
View File
@@ -107,7 +107,7 @@ void UnloadWagonOverrides()
/* Space for NUM_CARGO real cargos and 2 pseudo cargos, CT_DEFAULT and CT_PURCHASE */
static const SpriteGroup *_engine_custom_sprites[TOTAL_NUM_ENGINES][NUM_CARGO + 2];
static const GRFFile *_engine_grf[TOTAL_NUM_ENGINES];
const GRFFile *_engine_grf[TOTAL_NUM_ENGINES];
void SetCustomEngineSprites(EngineID engine, byte cargo, const SpriteGroup *group)
{
@@ -866,7 +866,7 @@ SpriteID GetCustomEngineSprite(EngineID engine, const Vehicle *v, Direction dire
NewVehicleResolver(&object, engine, v);
group = Resolve(GetVehicleSpriteGroup(engine, v), &object);
if (group == NULL || group->type != SGT_RESULT) return 0;
if (group == NULL || group->type != SGT_RESULT || group->g.result.num_sprites == 0) return 0;
return group->g.result.sprite + (direction % group->g.result.num_sprites);
}
@@ -890,7 +890,7 @@ SpriteID GetRotorOverrideSprite(EngineID engine, const Vehicle *v, bool info_vie
group = GetWagonOverrideSpriteSet(engine, CT_DEFAULT, engine);
group = Resolve(group, &object);
if (group == NULL || group->type != SGT_RESULT) return 0;
if (group == NULL || group->type != SGT_RESULT || group->g.result.num_sprites == 0) return 0;
if (v == NULL) return group->g.result.sprite;
+3 -6
View File
@@ -30,6 +30,7 @@ static BuildingCounts _building_counts;
static HouseClassMapping _class_mapping[HOUSE_CLASS_MAX];
HouseOverrideManager _house_mngr(NEW_HOUSE_OFFSET, HOUSE_MAX, INVALID_HOUSE_ID);
extern TileIndex GetHouseNorthPart(HouseID &house);
/**
* Check and update town and house values.
@@ -67,12 +68,8 @@ void UpdateHousesAndTowns()
IncreaseBuildingCount(town, house_id);
if (IsHouseCompleted(t)) town->population += GetHouseSpecs(house_id)->population;
/* Increase the number of houses for every house tile which
* has a size bit set. Multi tile buildings have got only
* one tile with such a bit set, so there is no problem. */
if (GetHouseSpecs(GetHouseType(t))->building_flags & BUILDING_HAS_1_TILE) {
town->num_houses++;
}
/* Increase the number of houses for every house, but only once. */
if (GetHouseNorthPart(house_id) == 0) town->num_houses++;
}
/* Update the population and num_house dependant values */
+17
View File
@@ -210,6 +210,23 @@ uint32 IndustryGetVariable(const ResolverObject *object, byte variable, byte par
IndustryType type = object->u.industry.type;
const IndustrySpec *indspec = GetIndustrySpec(type);
/* Shall the variable get resolved in parent scope and are we not yet in parent scope? */
if (object->u.industry.gfx == INVALID_INDUSTRYTILE && object->scope == VSG_SCOPE_PARENT) {
/* Pass the request on to the town of the industry */
const Town *t;
if (industry != NULL) {
t = industry->town;
} else if (tile != INVALID_TILE) {
t = ClosestTownFromTile(tile, UINT_MAX);
} else {
*available = false;
return UINT_MAX;
}
return TownGetVariable(variable, parameter, available, t);
}
if (industry == NULL) {
/* industry does not exist, only use those variables that are "safe" */
switch (variable) {
+12 -4
View File
@@ -17,11 +17,12 @@
#include "newgrf_station.h"
#include "newgrf_spritegroup.h"
#include "cargotype.h"
#include "town_map.h"
#include "town.h"
#include "newgrf_town.h"
#include "gfx_func.h"
#include "date_func.h"
#include "player_func.h"
#include "tunnelbridge_map.h"
#include "table/sprites.h"
#include "table/strings.h"
@@ -291,11 +292,18 @@ static uint32 GetRailContinuationInfo(TileIndex tile)
uint i;
for (i = 0; i < lengthof(x_dir); i++, dir++, diagdir++) {
TrackBits trackbits = TrackStatusToTrackBits(GetTileTrackStatus(tile + TileOffsByDir(*dir), TRANSPORT_RAIL, 0));
TileIndex neighbour_tile = tile + TileOffsByDir(*dir);
TrackBits trackbits = TrackStatusToTrackBits(GetTileTrackStatus(neighbour_tile, TRANSPORT_RAIL, 0));
if (trackbits != TRACK_BIT_NONE) {
/* If there is any track on the tile, set the bit in the second byte */
SetBit(res, i + 8);
/* With tunnels and bridges the tile has tracks, but they are not necessarily connected
* with the next tile because the ramp is not going in the right direction. */
if (IsTileType(neighbour_tile, MP_TUNNELBRIDGE) && GetTunnelBridgeDirection(neighbour_tile) != *diagdir) {
continue;
}
/* If any track reaches our exit direction, set the bit in the lower byte */
if (trackbits & DiagdirReachesTracks(*diagdir)) SetBit(res, i);
}
@@ -350,12 +358,12 @@ static uint32 StationGetVariable(const ResolverObject *object, byte variable, by
if (object->scope == VSG_SCOPE_PARENT) {
/* Pass the request on to the town of the station */
Town *t;
const Town *t;
if (st != NULL) {
t = st->town;
} else if (tile != INVALID_TILE) {
t = GetTownByTile(tile);
t = ClosestTownFromTile(tile, UINT_MAX);
} else {
*available = false;
return UINT_MAX;
+18 -4
View File
@@ -324,6 +324,8 @@ static void FixOldStations()
}
}
static StringID *_old_vehicle_names = NULL;
static void FixOldVehicles()
{
/* Check for shared orders, and link them correctly */
@@ -332,6 +334,8 @@ static void FixOldVehicles()
FOR_ALL_VEHICLES(v) {
Vehicle *u;
v->name = CopyFromOldName(_old_vehicle_names[v->index]);
/* We haven't used this bit for stations for ages */
if (v->type == VEH_ROAD &&
v->u.road.state != RVSB_IN_DEPOT &&
@@ -417,6 +421,8 @@ static void ReadTTDPatchFlags()
and 1 becomes 2. The rest of the values are okay */
if (_old_vehicle_multiplier < 2) _old_vehicle_multiplier++;
_old_vehicle_names = MallocT<StringID>(_old_vehicle_multiplier * 850);
/* TTDPatch increases the Vehicle-part in the middle of the game,
so if the multipler is anything else but 1, the assert fails..
bump the assert value so it doesn't!
@@ -993,9 +999,13 @@ static bool LoadOldPlayer(LoadgameState *ls, int num)
if (!LoadChunk(ls, p, player_chunk)) return false;
if (_old_string_id == 0) {
p->is_active = false;
return true;
}
p->name_1 = RemapOldStringID(_old_string_id);
p->president_name_1 = RemapOldStringID(_old_string_id_2);
p->player_money = p->player_money;
_players_ai[_current_player_id].tick = ai_tick;
if (num == 0) {
@@ -1261,8 +1271,8 @@ bool LoadOldVehicle(LoadgameState *ls, int num)
if (_old_next_ptr != 0xFFFF) v->next = GetVehiclePoolSize() <= _old_next_ptr ? new (_old_next_ptr) InvalidVehicle() : GetVehicle(_old_next_ptr);
_old_string_id = RemapOldStringID(_old_string_id);
v->name = CopyFromOldName(_old_string_id);
_old_vehicle_names[_current_vehicle_id] = RemapOldStringID(_old_string_id);
v->name = NULL;
/* Vehicle-subtype is different in TTD(Patch) */
if (v->type == VEH_SPECIAL) v->subtype = v->subtype >> 1;
@@ -1540,7 +1550,7 @@ static const OldChunks main_chunk[] = {
OCL_VAR ( OC_FILE_U32 | OC_VAR_I64, 1, &_economy.max_loan ),
OCL_VAR ( OC_FILE_U32 | OC_VAR_I64, 1, &_economy.max_loan_unround ),
OCL_VAR ( OC_FILE_U16 | OC_VAR_U32, 1, &_economy.fluct ),
OCL_VAR ( OC_INT16, 1, &_economy.fluct ),
OCL_VAR ( OC_UINT16, 1, &_disaster_delay ),
@@ -1602,8 +1612,10 @@ static bool LoadOldMain(LoadgameState *ls)
DEBUG(oldloader, 3, "Reading main chunk...");
/* Load the biggest chunk */
_old_vehicle_names = NULL;
if (!LoadChunk(ls, NULL, main_chunk)) {
DEBUG(oldloader, 0, "Loading failed");
free(_old_vehicle_names);
return false;
}
DEBUG(oldloader, 3, "Done, converting game data...");
@@ -1676,6 +1688,8 @@ static bool LoadOldMain(LoadgameState *ls)
DEBUG(oldloader, 3, "Finished converting game data");
DEBUG(oldloader, 1, "TTD(Patch) savegame successfully converted");
free(_old_vehicle_names);
return true;
}
+21 -7
View File
@@ -410,13 +410,23 @@ int ttd_main(int argc, char *argv[])
case 'i': _use_dos_palette = true; break;
case 'g':
if (mgo.opt != NULL) {
strcpy(_file_to_saveload.name, mgo.opt);
ttd_strlcpy(_file_to_saveload.name, mgo.opt, sizeof(_file_to_saveload.name));
_switch_mode = SM_LOAD;
} else {
_switch_mode = SM_NEWGAME;
/* Give a random map */
generation_seed = InteractiveRandom();
_file_to_saveload.mode = SL_LOAD;
/* if the file doesn't exist or it is not a valid savegame, let the saveload code show an error */
const char *t = strrchr(_file_to_saveload.name, '.');
if (t != NULL) {
FiosType ft = (FiosType)FiosGetSavegameListCallback(SLD_LOAD_GAME, _file_to_saveload.name, t, NULL);
if (ft != FIOS_TYPE_INVALID) SetFiosType(ft);
}
break;
}
_switch_mode = SM_NEWGAME;
/* Give a random map */
generation_seed = InteractiveRandom();
break;
case 'G': generation_seed = atoi(mgo.opt); break;
case 'c': _config_file = strdup(mgo.opt); break;
@@ -687,6 +697,8 @@ static void ShowScreenshotResult(bool b)
static void MakeNewGameDone()
{
SettingsDisableElrail(_patches.disable_elrails);
/* In a dedicated server, the server does not play */
if (_network_dedicated) {
SetLocalPlayer(PLAYER_SPECTATOR);
@@ -700,7 +712,6 @@ static void MakeNewGameDone()
_current_player = _local_player;
DoCommandP(0, (_patches.autorenew << 15 ) | (_patches.autorenew_months << 16) | 4, _patches.autorenew_money, NULL, CMD_SET_AUTOREPLACE);
SettingsDisableElrail(_patches.disable_elrails);
SetDefaultRailGui();
#ifdef ENABLE_NETWORK
@@ -1330,6 +1341,8 @@ static bool InitializeWindowsAndCaches()
players[v->owner]->num_engines[v->engine_type]++;
}
CheckTrainsLengths();
return true;
}
@@ -1811,7 +1824,7 @@ bool AfterLoadGame()
}
FOR_ALL_VEHICLES(v) {
if (v->type == VEH_TRAIN && (IsFrontEngine(v) || IsFreeWagon(v))) TrainConsistChanged(v);
if (v->type == VEH_TRAIN && (IsFrontEngine(v) || IsFreeWagon(v))) TrainConsistChanged(v, true);
}
}
@@ -2481,4 +2494,5 @@ void ReloadNewGRFData()
UpdateHousesAndTowns();
/* redraw the whole screen */
MarkWholeScreenDirty();
CheckTrainsLengths();
}
+1
View File
@@ -543,6 +543,7 @@ static void OrdersWndProc(Window *w, WindowEvent *e)
assert(w->widget[ORDER_WIDGET_REFIT].bottom == w->widget[ORDER_WIDGET_UNLOAD].bottom);
assert(w->widget[ORDER_WIDGET_REFIT].display_flags == w->widget[ORDER_WIDGET_UNLOAD].display_flags);
}
if (GetVehicle(w->window_number)->num_orders == 0) return;
if (_patches.timetabling) {
w->widget[ORDER_WIDGET_CAPTION].right -= 61;
+4 -4
View File
@@ -66,8 +66,8 @@ END
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 0,6,0,@@REVISION@@
PRODUCTVERSION 0,6,0,@@REVISION@@
FILEVERSION 0,6,2,13918
PRODUCTVERSION 0,6,2,13918
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -85,14 +85,14 @@ BEGIN
VALUE "Comments", "This program is licensed under the GNU General Public License.\0"
VALUE "CompanyName", "OpenTTD Development Team\0"
VALUE "FileDescription", "OpenTTD\0"
VALUE "FileVersion", "Development @@VERSION@@\0"
VALUE "FileVersion", "0.6.2\0"
VALUE "InternalName", "openttd\0"
VALUE "LegalCopyright", "Copyright © OpenTTD Developers 2002-2008. All Rights Reserved.\0"
VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename", "openttd.exe\0"
VALUE "PrivateBuild", "\0"
VALUE "ProductName", "OpenTTD\0"
VALUE "ProductVersion", "Development @@VERSION@@\0"
VALUE "ProductVersion", "0.6.2\0"
VALUE "SpecialBuild", "-\0"
END
END
+2 -2
View File
@@ -1181,7 +1181,7 @@ static void PlayerCompanyWndProc(Window *w, WindowEvent *e)
const Player *p = GetPlayer((PlayerID)w->window_number);
WP(w, def_d).byte_1 = 0;
SetDParam(0, p->index);
ShowQueryString(STR_PLAYER_NAME, STR_700B_PRESIDENT_S_NAME, 31, 94, w, CS_ALPHANUMERAL);
ShowQueryString(STR_PLAYER_NAME, STR_700B_PRESIDENT_S_NAME, MAX_LENGTH_PRESIDENT_NAME, 94, w, CS_ALPHANUMERAL);
break;
}
@@ -1189,7 +1189,7 @@ static void PlayerCompanyWndProc(Window *w, WindowEvent *e)
Player *p = GetPlayer((PlayerID)w->window_number);
WP(w, def_d).byte_1 = 1;
SetDParam(0, p->index);
ShowQueryString(STR_COMPANY_NAME, STR_700A_COMPANY_NAME, 31, 150, w, CS_ALPHANUMERAL);
ShowQueryString(STR_COMPANY_NAME, STR_700A_COMPANY_NAME, MAX_LENGTH_PRESIDENT_NAME, 150, w, CS_ALPHANUMERAL);
break;
}
+5
View File
@@ -30,6 +30,11 @@ enum Owner {
};
DECLARE_POSTFIX_INCREMENT(Owner);
enum {
MAX_LENGTH_PRESIDENT_NAME = 31, ///< The maximum length for a president's name
MAX_LENGTH_COMPANY_NAME = 31, ///< The maximum length for a company's name
};
/** Define basic enum properties */
template <> struct EnumPropsT<Owner> : MakeEnumPropsT<Owner, byte, OWNER_BEGIN, OWNER_END, INVALID_OWNER> {};
typedef TinyEnumT<Owner> OwnerByte;
+16 -10
View File
@@ -841,18 +841,21 @@ CommandCost CmdPlayerCtrl(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
NetworkChangeCompanyPassword(1, &password);
}
#endif /* ENABLE_NETWORK */
_current_player = _local_player;
/* Now that we have a new player, broadcast our autorenew settings to
* all clients so everything is in sync */
NetworkSend_Command(0,
(_patches_newgame.autorenew << 15 ) | (_patches_newgame.autorenew_months << 16) | 4,
_patches_newgame.autorenew_money,
CMD_SET_AUTOREPLACE,
NULL
);
MarkWholeScreenDirty();
}
/* Now that we have a new player, broadcast its autorenew settings to
* all clients so everything is in sync */
DoCommand(0,
(_patches.autorenew << 15 ) | (_patches.autorenew_months << 16) | 4,
_patches.autorenew_money,
DC_EXEC,
CMD_SET_AUTOREPLACE
);
#ifdef ENABLE_NETWORK
if (_network_server) {
/* XXX - UGLY! p2 (pid) is mis-used to fetch the client-id, done at
@@ -1243,8 +1246,11 @@ static void Load_PLYR()
_player_colors[index] = p->player_color;
/* This is needed so an AI is attached to a loaded AI */
if (p->is_ai && (!_networking || _network_server) && _ai.enabled)
if (p->is_ai && (!_networking || _network_server) && _ai.enabled) {
/* Clear the memory of the new AI, otherwise we might be doing wrong things. */
memset(&_players_ainew[index], 0, sizeof(PlayerAiNew));
AI_StartNewAI(p->index);
}
}
}
+18 -1
View File
@@ -1107,6 +1107,7 @@ CommandCost CmdRemoveSingleSignal(TileIndex tile, uint32 flags, uint32 p1, uint3
if (!ValParamTrackOrientation(track) ||
!IsTileType(tile, MP_RAILWAY) ||
!HasTrack(tile, track) ||
!EnsureNoTrainOnTrack(tile, track) ||
!HasSignalOnTrack(tile, track)) {
return CMD_ERROR;
@@ -1376,7 +1377,10 @@ static CommandCost ClearTile_Track(TileIndex tile, byte flags)
cost.AddCost(ret);
}
if (water_ground) {
/* when bankrupting, don't make water dirty, there could be a ship on lower halftile */
if (water_ground && !(flags & DC_BANKRUPT)) {
if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
/* The track was removed, and left a coast tile. Now also clear the water. */
if (flags & DC_EXEC) DoClearSquare(tile);
cost.AddCost(_price.clear_water);
@@ -2098,6 +2102,19 @@ set_ground:
static TrackStatus GetTileTrackStatus_Track(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
{
/* Case of half tile slope with water. */
if (mode == TRANSPORT_WATER && IsPlainRailTile(tile) && GetRailGroundType(tile) == RAIL_GROUND_WATER) {
TrackBits tb = GetTrackBits(tile);
switch (tb) {
default: NOT_REACHED();
case TRACK_BIT_UPPER: tb = TRACK_BIT_LOWER; break;
case TRACK_BIT_LOWER: tb = TRACK_BIT_UPPER; break;
case TRACK_BIT_LEFT: tb = TRACK_BIT_RIGHT; break;
case TRACK_BIT_RIGHT: tb = TRACK_BIT_LEFT; break;
}
return CombineTrackStatus(TrackBitsToTrackdirBits(tb), TRACKDIR_BIT_NONE);
}
if (mode != TRANSPORT_RAIL) return 0;
TrackBits trackbits = TRACK_BIT_NONE;
+3 -3
View File
@@ -19,7 +19,7 @@
* norev000 is for non-releases that are made on systems without
* subversion or sources that are not a checkout of subversion.
*/
extern const char _openttd_revision[] = "@@VERSION@@";
extern const char _openttd_revision[] = "0.6.2";
/**
* The NewGRF revision of OTTD:
@@ -34,11 +34,11 @@ extern const char _openttd_revision[] = "@@VERSION@@";
* final release will always have a lower version number than the released
* version, thus making comparisions on specific revisions easy.
*/
uint32 _openttd_newgrf_version = 0 << 28 | 6 << 24 | 1 << 20 | 0 << 19 | (@@REVISION@@ & ((1 << 19) - 1));
uint32 _openttd_newgrf_version = 0 << 28 | 6 << 24 | 2 << 20 | 1 << 19 | (13918 & ((1 << 19) - 1));
#ifdef __MORPHOS__
/**
* Variable used by MorphOS to show the version.
*/
extern const char morphos_versions_tag[] = "\\0$VER: OpenTTD @@VERSION@@ (@@DATE@@) OpenTTD Team [MorphOS, PowerPC]";
extern const char morphos_versions_tag[] = "\\0$VER: OpenTTD 0.6.2 (@@DATE@@) OpenTTD Team [MorphOS, PowerPC]";
#endif
+6 -1
View File
@@ -519,7 +519,12 @@ CommandCost CmdBuildRoad(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
}
case MP_STATION:
if (!IsDriveThroughStopTile(tile)) return CMD_ERROR;
if (!IsRoadStop(tile)) goto do_clear;
if (IsDriveThroughStopTile(tile)) {
if (pieces & ~AxisToRoadBits(DiagDirToAxis(GetRoadStopDir(tile)))) goto do_clear;
} else {
if (pieces & ~DiagDirToRoadBits(GetRoadStopDir(tile))) goto do_clear;
}
if (HasTileRoadType(tile, rt)) return_cmd_error(STR_1007_ALREADY_BUILT);
break;
+12 -14
View File
@@ -163,7 +163,7 @@ void RoadVehUpdateCache(Vehicle *v)
* @param tile tile of depot where road vehicle is built
* @param flags operation to perform
* @param p1 bus/truck type being built (engine)
* @param p2 bit 0 when set, the unitnumber will be 0, otherwise it will be a free number
* @param p2 unused
*/
CommandCost CmdBuildRoadVeh(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
{
@@ -197,7 +197,7 @@ CommandCost CmdBuildRoadVeh(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
v = vl[0];
/* find the first free roadveh id */
unit_num = HasBit(p2, 0) ? 0 : GetFreeUnitNumber(VEH_ROAD);
unit_num = (flags & DC_AUTOREPLACE) ? 0 : GetFreeUnitNumber(VEH_ROAD);
if (unit_num > _patches.max_roadveh)
return_cmd_error(STR_00E1_TOO_MANY_VEHICLES_IN_GAME);
@@ -1814,13 +1814,12 @@ again:
v->u.road.frame == RVC_DRIVE_THROUGH_STOP_FRAME))) {
RoadStop *rs = GetRoadStopByTile(v->tile, GetRoadStopType(v->tile));
Station* st = GetStationByTile(v->tile);
Station *st = GetStationByTile(v->tile);
/* Vehicle is at the stop position (at a bay) in a road stop.
* Note, if vehicle is loading/unloading it has already been handled,
* so if we get here the vehicle has just arrived or is just ready to leave. */
if (v->current_order.type != OT_LEAVESTATION &&
v->current_order.type != OT_GOTO_DEPOT) {
if (v->current_order.type != OT_LEAVESTATION) {
/* Vehicle has arrived at a bay in a road stop */
if (IsDriveThroughStopTile(v->tile)) {
@@ -1828,7 +1827,7 @@ again:
RoadStop::Type type = IsCargoInClass(v->cargo_type, CC_PASSENGERS) ? RoadStop::BUS : RoadStop::TRUCK;
/* Check if next inline bay is free */
if (IsDriveThroughStopTile(next_tile) && (GetRoadStopType(next_tile) == type)) {
if (IsDriveThroughStopTile(next_tile) && (GetRoadStopType(next_tile) == type) && GetStationIndex(v->tile) == GetStationIndex(next_tile)) {
RoadStop *rs_n = GetRoadStopByTile(next_tile, type);
if (rs_n->IsFreeBay(HasBit(v->u.road.state, RVS_USING_SECOND_BAY))) {
@@ -1850,14 +1849,13 @@ again:
v->last_station_visited = GetStationIndex(v->tile);
RoadVehArrivesAt(v, st);
v->BeginLoading();
return false;
}
/* Vehicle is ready to leave a bay in a road stop */
if (v->current_order.type != OT_GOTO_DEPOT) {
if (IsDriveThroughStopTile(v->tile) || (v->current_order.type == OT_GOTO_STATION && v->current_order.dest == st->index)) {
RoadVehArrivesAt(v, st);
v->BeginLoading();
return false;
}
} else {
/* Vehicle is ready to leave a bay in a road stop */
if (rs->IsEntranceBusy()) {
/* Road stop entrance is busy, so wait as there is nowhere else to go */
v->cur_speed = 0;
+3 -1
View File
@@ -23,7 +23,7 @@
void DrawRoadVehDetails(const Vehicle *v, int x, int y)
{
uint y_offset = RoadVehHasArticPart(v) ? 15 :0;
uint y_offset = RoadVehHasArticPart(v) ? 15 : 0;
StringID str;
SetDParam(0, v->engine_type);
@@ -62,6 +62,8 @@ void DrawRoadVehDetails(const Vehicle *v, int x, int y)
DrawStringTruncated(x, y + 10 + y_offset, STR_JUST_STRING, TC_BLUE, 380 - x);
for (const Vehicle *u = v; u != NULL; u = u->Next()) {
if (u->cargo_cap == 0) continue;
str = STR_8812_EMPTY;
if (!u->cargo.Empty()) {
SetDParam(0, u->cargo_type);
+10 -2
View File
@@ -620,10 +620,18 @@ void SlArray(void *array, uint length, VarType conv)
/* NOTICE - handle some buggy stuff, in really old versions everything was saved
* as a byte-type. So detect this, and adjust array size accordingly */
if (!_sl.save && _sl_version == 0) {
/* all arrays except difficulty settings */
if (conv == SLE_INT16 || conv == SLE_UINT16 || conv == SLE_STRINGID ||
conv == SLE_INT32 || conv == SLE_UINT32) {
length *= SlCalcConvFileLen(conv);
conv = SLE_INT8;
SlCopyBytes(array, length * SlCalcConvFileLen(conv));
return;
}
/* used for conversion of Money 32bit->64bit */
if (conv == (SLE_FILE_I32 | SLE_VAR_I64)) {
for (uint i = 0; i < length; i++) {
((int64*)array)[i] = (int32)BSWAP32(SlReadUint32());
}
return;
}
}
+1 -1
View File
@@ -1154,7 +1154,7 @@ static int32 UpdateConsists(int32 p1)
Vehicle *v;
FOR_ALL_VEHICLES(v) {
/* Update the consist of all trains so the maximum speed is set correctly. */
if (v->type == VEH_TRAIN && (IsFrontEngine(v) || IsFreeWagon(v))) TrainConsistChanged(v);
if (v->type == VEH_TRAIN && (IsFrontEngine(v) || IsFreeWagon(v))) TrainConsistChanged(v, true);
}
return 0;
}
+2 -2
View File
@@ -802,7 +802,7 @@ void ShipsYearlyLoop()
* @param tile tile of depot where ship is built
* @param flags type of operation
* @param p1 ship type being built (engine)
* @param p2 bit 0 when set, the unitnumber will be 0, otherwise it will be a free number
* @param p2 unused
*/
CommandCost CmdBuildShip(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
{
@@ -820,7 +820,7 @@ CommandCost CmdBuildShip(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
if (!IsTileDepotType(tile, TRANSPORT_WATER)) return CMD_ERROR;
if (!IsTileOwner(tile, _current_player)) return CMD_ERROR;
unit_num = HasBit(p2, 0) ? 0 : GetFreeUnitNumber(VEH_SHIP);
unit_num = (flags & DC_AUTOREPLACE) ? 0 : GetFreeUnitNumber(VEH_SHIP);
if (!Vehicle::AllocateList(NULL, 1) || unit_num > _patches.max_ships)
return_cmd_error(STR_00E1_TOO_MANY_VEHICLES_IN_GAME);
+1
View File
@@ -298,6 +298,7 @@ static SigFlags ExploreSegment(Owner owner)
}
if (GetRailTileType(tile) == RAIL_TILE_WAYPOINT) {
if (GetWaypointAxis(tile) != DiagDirToAxis(enterdir)) continue;
if (!(flags & SF_TRAIN) && VehicleFromPos(tile, NULL, &TrainOnTileEnum)) flags |= SF_TRAIN;
tile += TileOffsByDiagDir(exitdir);
/* enterdir and exitdir stay the same */
-2
View File
@@ -347,13 +347,11 @@ static inline Corner GetRailFoundationCorner(Foundation f)
* Returns the foundation needed to flatten a slope.
* The returned foundation is either FOUNDATION_NONE if the tile was already flat, or FOUNDATION_LEVELED.
*
* @pre The slope must not be steep.
* @param s The current #Slope.
* @return The needed #Foundation.
*/
static inline Foundation FlatteningFoundation(Slope s)
{
assert(!IsSteepSlope(s));
return (s == SLOPE_FLAT ? FOUNDATION_NONE : FOUNDATION_LEVELED);
}
+15 -3
View File
@@ -28,6 +28,7 @@ struct SpriteCache {
uint32 file_pos;
uint16 file_slot;
int16 lru;
bool real_sprite; ///< In some cases a single sprite is misused by two NewGRFs. Once as real sprite and once as non-real sprite. If the non-real sprite gets into the cache it might be drawn as real sprite which causes enormous trouble.
};
@@ -136,7 +137,7 @@ static void* ReadSprite(SpriteCache *sc, SpriteID id, bool real_sprite)
file_pos = GetSpriteCache(SPR_IMG_QUERY)->file_pos;
}
if (BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth() == 32) {
if (real_sprite && BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth() == 32) {
#ifdef WITH_PNG
/* Try loading 32bpp graphics in case we are 32bpp output */
SpriteLoaderPNG sprite_loader;
@@ -146,6 +147,8 @@ static void* ReadSprite(SpriteCache *sc, SpriteID id, bool real_sprite)
sc->ptr = BlitterFactoryBase::GetCurrentBlitter()->Encode(&sprite, &AllocSprite);
free(sprite.data);
sc->real_sprite = real_sprite;
return sc->ptr;
}
/* If the PNG couldn't be loaded, fall back to 8bpp grfs */
@@ -170,12 +173,13 @@ static void* ReadSprite(SpriteCache *sc, SpriteID id, bool real_sprite)
DEBUG(sprite, warning_level, "Tried to load non sprite #%d as a real sprite. Probable cause: NewGRF interference", id);
warning_level = 6;
if (id == SPR_IMG_QUERY) error("Uhm, would you be so kind not to load a NewGRF that makes the 'query' sprite a non- sprite?");
return (void*)GetSprite(SPR_IMG_QUERY);
return (void*)GetRawSprite(SPR_IMG_QUERY, true);
}
byte *dest = (byte *)AllocSprite(num);
sc->ptr = dest;
sc->real_sprite = real_sprite;
FioReadBlock(dest, num);
return sc->ptr;
@@ -190,6 +194,7 @@ static void* ReadSprite(SpriteCache *sc, SpriteID id, bool real_sprite)
* something ;) The image should really have been a data-stream
* (so type = 0xFF basicly). */
if (id >= 4845 && id <= 4881) {
assert(real_sprite);
uint height = FioReadByte();
uint width = FioReadWord();
Sprite *sprite;
@@ -217,6 +222,8 @@ static void* ReadSprite(SpriteCache *sc, SpriteID id, bool real_sprite)
}
}
sc->real_sprite = real_sprite;
return sc->ptr;
}
@@ -224,11 +231,14 @@ static void* ReadSprite(SpriteCache *sc, SpriteID id, bool real_sprite)
static byte warning_level = 0;
DEBUG(sprite, warning_level, "Tried to load real sprite #%d as a non sprite. Probable cause: NewGRF interference", id);
warning_level = 6;
return (void*)GetRawSprite(id, true);
}
SpriteLoaderGrf sprite_loader;
SpriteLoader::Sprite sprite;
sc->real_sprite = real_sprite;
if (!sprite_loader.LoadSprite(&sprite, file_slot, file_pos)) return NULL;
if (id == 142) sprite.height = 10; // Compensate for a TTD bug
sc->ptr = BlitterFactoryBase::GetCurrentBlitter()->Encode(&sprite, &AllocSprite);
@@ -255,6 +265,7 @@ bool LoadNextSprite(int load_index, byte file_slot, uint file_sprite_id)
sc->ptr = NULL;
sc->lru = 0;
sc->id = file_sprite_id;
sc->real_sprite = false;
return true;
}
@@ -269,6 +280,7 @@ void DupSprite(SpriteID old_spr, SpriteID new_spr)
scnew->file_pos = scold->file_pos;
scnew->ptr = NULL;
scnew->id = scold->id;
scnew->real_sprite = scold->real_sprite;
}
@@ -454,7 +466,7 @@ const void *GetRawSprite(SpriteID sprite, bool real_sprite)
p = sc->ptr;
/* Load the sprite, if it is not loaded, yet */
if (p == NULL) p = ReadSprite(sc, sprite, real_sprite);
if (p == NULL || sc->real_sprite != real_sprite) p = ReadSprite(sc, sprite, real_sprite);
return p;
}
+1 -1
View File
@@ -44,7 +44,7 @@ static bool OpenPNGFile(const char *filename, uint32 id, bool mask)
return false;
}
static bool LoadPNG(SpriteLoader::Sprite *sprite, const char *filename, uint32 id, bool mask)
static bool LoadPNG(SpriteLoader::Sprite *sprite, const char *filename, uint32 id, volatile bool mask)
{
png_byte header[8];
png_structp png_ptr;
+2 -2
View File
@@ -338,8 +338,6 @@ static void CommonRaiseLowerBigLand(TileIndex tile, int mode)
DoCommandP(tile, SLOPE_N, (uint32)mode, CcTerraform, CMD_TERRAFORM_LAND | CMD_MSG(msg));
} else {
SndPlayTileFx(SND_1F_SPLAT, tile);
assert(_terraform_size != 0);
/* check out for map overflows */
sizex = min(MapSizeX() - TileX(tile) - 1, _terraform_size);
@@ -347,6 +345,8 @@ static void CommonRaiseLowerBigLand(TileIndex tile, int mode)
if (sizex == 0 || sizey == 0) return;
SndPlayTileFx(SND_1F_SPLAT, tile);
if (mode != 0) {
/* Raise land */
h = 15; // XXX - max height
+22 -22
View File
@@ -1614,7 +1614,7 @@ HouseZonesBits GetTownRadiusGroup(const Town* t, TileIndex tile)
* @param random_bits required for newgrf houses
* @pre house can be built here
*/
static inline void ClearMakeHouseTile(TileIndex tile, TownID tid, byte counter, byte stage, HouseID type, byte random_bits)
static inline void ClearMakeHouseTile(TileIndex tile, Town *t, byte counter, byte stage, HouseID type, byte random_bits)
{
#if !defined(NDEBUG) || defined(WITH_ASSERT)
CommandCost cc =
@@ -1624,7 +1624,8 @@ static inline void ClearMakeHouseTile(TileIndex tile, TownID tid, byte counter,
assert(CmdSucceeded(cc));
MakeHouseTile(tile, tid, counter, stage, type, random_bits);
IncreaseBuildingCount(t, type);
MakeHouseTile(tile, t->index, counter, stage, type, random_bits);
}
@@ -1638,14 +1639,14 @@ static inline void ClearMakeHouseTile(TileIndex tile, TownID tid, byte counter,
* @param random_bits required for newgrf houses
* @pre house can be built here
*/
static void MakeTownHouse(TileIndex t, TownID tid, byte counter, byte stage, HouseID type, byte random_bits)
static void MakeTownHouse(TileIndex t, Town *town, byte counter, byte stage, HouseID type, byte random_bits)
{
BuildingFlags size = GetHouseSpecs(type)->building_flags;
ClearMakeHouseTile(t, tid, counter, stage, type, random_bits);
if (size & BUILDING_2_TILES_Y) ClearMakeHouseTile(t + TileDiffXY(0, 1), tid, counter, stage, ++type, random_bits);
if (size & BUILDING_2_TILES_X) ClearMakeHouseTile(t + TileDiffXY(1, 0), tid, counter, stage, ++type, random_bits);
if (size & BUILDING_HAS_4_TILES) ClearMakeHouseTile(t + TileDiffXY(1, 1), tid, counter, stage, ++type, random_bits);
ClearMakeHouseTile(t, town, counter, stage, type, random_bits);
if (size & BUILDING_2_TILES_Y) ClearMakeHouseTile(t + TileDiffXY(0, 1), town, counter, stage, ++type, random_bits);
if (size & BUILDING_2_TILES_X) ClearMakeHouseTile(t + TileDiffXY(1, 0), town, counter, stage, ++type, random_bits);
if (size & BUILDING_HAS_4_TILES) ClearMakeHouseTile(t + TileDiffXY(1, 1), town, counter, stage, ++type, random_bits);
}
@@ -1902,11 +1903,6 @@ static bool BuildTownHouse(Town *t, TileIndex tile)
}
if ((hs->extra_flags & BUILDING_IS_HISTORICAL) && !_generating_world) continue;
if (HasBit(hs->callback_mask, CBM_HOUSE_ALLOW_CONSTRUCTION)) {
uint16 callback_res = GetHouseCallback(CBID_HOUSE_ALLOW_CONSTRUCTION, 0, 0, house, t, tile);
if (callback_res != CALLBACK_FAILED && GB(callback_res, 0, 8) == 0) continue;
}
}
if (_cur_year < hs->min_date || _cur_year > hs->max_date) continue;
@@ -1920,7 +1916,7 @@ static bool BuildTownHouse(Town *t, TileIndex tile)
SetBit(oneof, TOWN_HAS_STADIUM);
}
if (HASBITS(t->flags12 , oneof)) continue;
if (HASBITS(t->flags12, oneof)) continue;
/* Make sure there is no slope? */
bool noslope = (hs->building_flags & TILE_NOT_SLOPED) != 0;
@@ -1936,9 +1932,13 @@ static bool BuildTownHouse(Town *t, TileIndex tile)
/* 1x1 house checks are already done */
}
if (HasBit(hs->callback_mask, CBM_HOUSE_ALLOW_CONSTRUCTION)) {
uint16 callback_res = GetHouseCallback(CBID_HOUSE_ALLOW_CONSTRUCTION, 0, 0, house, t, tile);
if (callback_res != CALLBACK_FAILED && GB(callback_res, 0, 8) == 0) continue;
}
/* build the house */
t->num_houses++;
IncreaseBuildingCount(t, house);
/* Special houses that there can be only one of. */
t->flags12 |= oneof;
@@ -1959,7 +1959,7 @@ static bool BuildTownHouse(Town *t, TileIndex tile)
}
}
MakeTownHouse(tile, t->index, construction_counter, construction_stage, house, Random());
MakeTownHouse(tile, t, construction_counter, construction_stage, house, Random());
return true;
}
@@ -1968,9 +1968,10 @@ static bool BuildTownHouse(Town *t, TileIndex tile)
}
static void DoClearTownHouseHelper(TileIndex tile)
static void DoClearTownHouseHelper(TileIndex tile, Town *t, HouseID house)
{
assert(IsTileType(tile, MP_HOUSE));
DecreaseBuildingCount(t, house);
DoClearSquare(tile);
DeleteAnimatedTile(tile);
}
@@ -1982,7 +1983,7 @@ static void DoClearTownHouseHelper(TileIndex tile)
* @param house Is changed to the HouseID of the north tile of the same house
* @return TileDiff from the tile of the given HouseID to the north tile
*/
static TileIndex GetHouseNorthPart(HouseID &house)
TileIndex GetHouseNorthPart(HouseID &house)
{
if (house >= 3) { // house id 0,1,2 MUST be single tile houses, or this code breaks.
if (GetHouseSpecs(house - 1)->building_flags & TILE_SIZE_2x1) {
@@ -2021,7 +2022,6 @@ void ClearTownHouse(Town *t, TileIndex tile)
}
t->num_houses--;
DecreaseBuildingCount(t, house);
/* Clear flags for houses that only may exist once/town. */
if (hs->building_flags & BUILDING_IS_CHURCH) {
@@ -2032,10 +2032,10 @@ void ClearTownHouse(Town *t, TileIndex tile)
/* Do the actual clearing of tiles */
eflags = hs->building_flags;
DoClearTownHouseHelper(tile);
if (eflags & BUILDING_2_TILES_X) DoClearTownHouseHelper(tile + TileDiffXY(1, 0));
if (eflags & BUILDING_2_TILES_Y) DoClearTownHouseHelper(tile + TileDiffXY(0, 1));
if (eflags & BUILDING_HAS_4_TILES) DoClearTownHouseHelper(tile + TileDiffXY(1, 1));
DoClearTownHouseHelper(tile, t, house);
if (eflags & BUILDING_2_TILES_Y) DoClearTownHouseHelper(tile + TileDiffXY(0, 1), t, ++house);
if (eflags & BUILDING_2_TILES_X) DoClearTownHouseHelper(tile + TileDiffXY(1, 0), t, ++house);
if (eflags & BUILDING_HAS_4_TILES) DoClearTownHouseHelper(tile + TileDiffXY(1, 1), t, ++house);
}
static bool IsUniqueTownName(const char *name)
+1
View File
@@ -275,6 +275,7 @@ byte FreightWagonMult(CargoID cargo);
int CheckTrainInDepot(const Vehicle *v, bool needs_to_be_stopped);
int CheckTrainStoppedInDepot(const Vehicle *v);
void UpdateTrainAcceleration(Vehicle* v);
void CheckTrainsLengths();
/**
* This class 'wraps' Vehicle; you do not actually instantiate this class.
+89 -24
View File
@@ -47,6 +47,7 @@
#include "autoreplace_gui.h"
#include "gfx_func.h"
#include "settings_type.h"
#include "network/network.h"
#include "table/strings.h"
#include "table/train_cmd.h"
@@ -177,13 +178,70 @@ static void TrainCargoChanged(Vehicle* v)
}
/** Logs a bug in GRF and shows a warning message if this
* is for the first time this happened.
* @param u first vehicle of chain
*/
static void RailVehicleLengthChanged(const Vehicle *u)
{
extern const GRFFile *_engine_grf[TOTAL_NUM_ENGINES];
if (_engine_grf[u->engine_type] == NULL) return;
uint32 grfid = _engine_grf[u->engine_type]->grfid;
GRFConfig *grfconfig = GetGRFConfig(grfid);
if (!HasBit(grfconfig->grf_bugs, GBUG_VEH_LENGTH)) {
SetBit(grfconfig->grf_bugs, GBUG_VEH_LENGTH);
SetDParamStr(0, grfconfig->name);
SetDParam(1, u->engine_type);
ShowErrorMessage(STR_NEWGRF_BROKEN_VEHICLE_LENGTH, STR_NEWGRF_BROKEN, 0, 0);
/* debug output */
char buffer[512];
SetDParamStr(0, grfconfig->name);
GetString(buffer, STR_NEWGRF_BROKEN, lastof(buffer));
DEBUG(grf, 0, "%s", buffer + 3);
SetDParam(1, u->engine_type);
GetString(buffer, STR_NEWGRF_BROKEN_VEHICLE_LENGTH, lastof(buffer));
DEBUG(grf, 0, "%s", buffer + 3);
if (!_networking) _pause_game = -1;
}
}
/** Checks if lengths of all rail vehicles are valid. If not, shows an error message. */
void CheckTrainsLengths()
{
const Vehicle *v;
FOR_ALL_VEHICLES(v) {
if (v->type == VEH_TRAIN && v->First() == v && !(v->vehstatus & VS_CRASHED)) {
for (const Vehicle *u = v, *w = v->Next(); w != NULL; u = w, w = w->Next()) {
if (u->u.rail.track != TRACK_BIT_DEPOT) {
if ((w->u.rail.track != TRACK_BIT_DEPOT &&
max(abs(u->x_pos - w->x_pos), abs(u->y_pos - w->y_pos)) != u->u.rail.cached_veh_length) ||
(w->u.rail.track == TRACK_BIT_DEPOT && TicksToLeaveDepot(u) <= 0)) {
SetDParam(0, v->index);
SetDParam(1, v->owner);
ShowErrorMessage(INVALID_STRING_ID, STR_BROKEN_VEHICLE_LENGTH, 0, 0);
if (!_networking) _pause_game = -1;
}
}
}
}
}
}
/**
* Recalculates the cached stuff of a train. Should be called each time a vehicle is added
* to/removed from the chain, and when the game is loaded.
* Note: this needs to be called too for 'wagon chains' (in the depot, without an engine)
* @param v First vehicle of the chain.
* @param same_length should length of vehicles stay the same?
*/
void TrainConsistChanged(Vehicle* v)
void TrainConsistChanged(Vehicle *v, bool same_length)
{
uint16 max_speed = 0xFFFF;
@@ -291,8 +349,14 @@ void TrainConsistChanged(Vehicle* v)
veh_len = GetVehicleCallback(CBID_VEHICLE_LENGTH, 0, 0, u->engine_type, u);
}
if (veh_len == CALLBACK_FAILED) veh_len = rvi_u->shorten_factor;
veh_len = Clamp(veh_len, 0, u->Next() == NULL ? 7 : 5); // the clamp on vehicles not the last in chain is stricter, as too short wagons can break the 'follow next vehicle' code
u->u.rail.cached_veh_length = 8 - veh_len;
veh_len = 8 - Clamp(veh_len, 0, u->Next() == NULL ? 7 : 5); // the clamp on vehicles not the last in chain is stricter, as too short wagons can break the 'follow next vehicle' code
/* verify length hasn't changed */
if (same_length && veh_len != u->u.rail.cached_veh_length) RailVehicleLengthChanged(u);
/* update vehicle length? */
if (!same_length) u->u.rail.cached_veh_length = veh_len;
v->u.rail.cached_total_length += u->u.rail.cached_veh_length;
}
@@ -630,7 +694,7 @@ static CommandCost CmdBuildRailWagon(EngineID engine, TileIndex tile, uint32 fla
_new_vehicle_id = v->index;
VehiclePositionChanged(v);
TrainConsistChanged(v->First());
TrainConsistChanged(v->First(), false);
UpdateTrainGroupID(v->First());
InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
@@ -697,8 +761,7 @@ static void AddRearEngineToMultiheadedTrain(Vehicle* v, Vehicle* u, bool buildin
* @param tile tile of the depot where rail-vehicle is built
* @param flags type of operation
* @param p1 engine type id
* @param p2 bit 0 when set, the train will get number 0, otherwise it will get a free number
* bit 1 prevents any free cars from being added to the train
* @param p2 bit 1 prevents any free cars from being added to the train
*/
CommandCost CmdBuildRailVehicle(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
{
@@ -736,7 +799,7 @@ CommandCost CmdBuildRailVehicle(TileIndex tile, uint32 flags, uint32 p1, uint32
Vehicle *v = vl[0];
UnitID unit_num = HasBit(p2, 0) ? 0 : GetFreeUnitNumber(VEH_TRAIN);
UnitID unit_num = (flags & DC_AUTOREPLACE) ? 0 : GetFreeUnitNumber(VEH_TRAIN);
if (unit_num > _patches.max_trains)
return_cmd_error(STR_00E1_TOO_MANY_VEHICLES_IN_GAME);
@@ -806,10 +869,10 @@ CommandCost CmdBuildRailVehicle(TileIndex tile, uint32 flags, uint32 p1, uint32
AddArticulatedParts(vl, VEH_TRAIN);
}
TrainConsistChanged(v);
TrainConsistChanged(v, false);
UpdateTrainGroupID(v);
if (!HasBit(p2, 1)) { // check if the cars should be added to the new vehicle
if (!HasBit(p2, 1) && !(flags & DC_AUTOREPLACE)) { // check if the cars should be added to the new vehicle
NormalizeTrainVehInDepot(v);
}
@@ -1258,7 +1321,7 @@ CommandCost CmdMoveRailVehicle(TileIndex tile, uint32 flags, uint32 p1, uint32 p
if (src_head != NULL) {
NormaliseTrainConsist(src_head);
TrainConsistChanged(src_head);
TrainConsistChanged(src_head, false);
UpdateTrainGroupID(src_head);
if (IsFrontEngine(src_head)) {
/* Update the refit button and window */
@@ -1271,7 +1334,7 @@ CommandCost CmdMoveRailVehicle(TileIndex tile, uint32 flags, uint32 p1, uint32 p
if (dst_head != NULL) {
NormaliseTrainConsist(dst_head);
TrainConsistChanged(dst_head);
TrainConsistChanged(dst_head, false);
UpdateTrainGroupID(dst_head);
if (IsFrontEngine(dst_head)) {
/* Update the refit button and window */
@@ -1444,7 +1507,7 @@ CommandCost CmdSellRailWagon(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
/* 5. If the train still exists, update its acceleration, window, etc. */
if (first != NULL) {
NormaliseTrainConsist(first);
TrainConsistChanged(first);
TrainConsistChanged(first, false);
UpdateTrainGroupID(first);
if (IsFrontEngine(first)) InvalidateWindow(WC_VEHICLE_REFIT, first->index);
}
@@ -1510,7 +1573,7 @@ CommandCost CmdSellRailWagon(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
/* 3. If it is still a valid train after selling, update its acceleration and cached values */
if (flags & DC_EXEC && first != NULL) {
NormaliseTrainConsist(first);
TrainConsistChanged(first);
TrainConsistChanged(first, false);
UpdateTrainGroupID(first);
InvalidateWindow(WC_VEHICLE_REFIT, first->index);
}
@@ -1846,7 +1909,7 @@ static void ReverseTrainDirection(Vehicle *v)
ClrBit(v->u.rail.flags, VRF_REVERSING);
/* recalculate cached data */
TrainConsistChanged(v);
TrainConsistChanged(v, true);
/* update all images */
for (Vehicle *u = v; u != NULL; u = u->Next()) u->cur_image = u->GetImage(u->direction);
@@ -2023,7 +2086,7 @@ CommandCost CmdRefitRailVehicle(TileIndex tile, uint32 flags, uint32 p1, uint32
_returned_refit_capacity = num;
/* Update the train's cached variables */
if (flags & DC_EXEC) TrainConsistChanged(GetVehicle(p1)->First());
if (flags & DC_EXEC) TrainConsistChanged(GetVehicle(p1)->First(), false);
return cost;
}
@@ -3042,13 +3105,13 @@ static void CheckTrainCollision(Vehicle *v)
static void *CheckVehicleAtSignal(Vehicle *v, void *data)
{
Direction dir = *(Direction*)data;
DiagDirection exitdir = *(DiagDirection *)data;
if (v->type == VEH_TRAIN && IsFrontEngine(v)) {
DirDiff diff = ChangeDirDiff(DirDifference(v->direction, dir), DIRDIFF_90RIGHT);
if (diff == DIRDIFF_90RIGHT || (v->cur_speed <= 5 && diff <= DIRDIFF_REVERSE)) return v;
/* front engine of a train, not inside wormhole or depot, not crashed */
if (v->type == VEH_TRAIN && IsFrontEngine(v) && (v->u.rail.track & TRACK_BIT_MASK) != 0 && !(v->vehstatus & VS_CRASHED)) {
if (v->cur_speed <= 5 && TrainExitDir(v->direction, v->u.rail.track) == exitdir) return v;
}
return NULL;
}
@@ -3139,11 +3202,13 @@ static void TrainController(Vehicle *v, Vehicle *nomove, bool update_image)
v->subspeed = 0;
v->progress = 255 - 10;
if (++v->load_unload_time_rem < _patches.wait_twoway_signal * 73) {
TileIndex o_tile = gp.new_tile + TileOffsByDiagDir(enterdir);
Direction rdir = ReverseDir(dir);
DiagDirection exitdir = TrackdirToExitdir(i);
TileIndex o_tile = TileAddByDiagDir(gp.new_tile, exitdir);
exitdir = ReverseDiagDir(exitdir);
/* check if a train is waiting on the other side */
if (VehicleFromPos(o_tile, &rdir, &CheckVehicleAtSignal) == NULL) return;
if (VehicleFromPos(o_tile, &exitdir, &CheckVehicleAtSignal) == NULL) return;
}
}
goto reverse_train_direction;
@@ -3280,7 +3345,7 @@ static void DeleteLastWagon(Vehicle *v)
InvalidateWindow(WC_COMPANY, v->owner);
} else {
/* Recalculate cached train properties */
TrainConsistChanged(first);
TrainConsistChanged(first, false);
/* Update the depot window if the first vehicle is in depot -
* if v == first, then it is updated in PreDestructor() */
if (first->u.rail.track == TRACK_BIT_DEPOT) {
+8 -5
View File
@@ -152,15 +152,18 @@ static CommandCost CheckBridgeSlopeSouth(Axis axis, Slope *tileh, uint *z)
return CommandCost(EXPENSES_CONSTRUCTION, _price.terraform);
}
bool CheckBridge_Stuff(BridgeType bridge_type, uint bridge_len)
bool CheckBridge_Stuff(BridgeType bridge_type, uint bridge_len, uint32 flags)
{
const BridgeSpec *b = GetBridgeSpec(bridge_type);
uint max; // max possible length of a bridge (with patch 100)
if (flags & DC_QUERY_COST) {
return bridge_len <= (_patches.longbridges ? 100U : 16U);
}
if (bridge_type >= MAX_BRIDGES) return false;
const BridgeSpec *b = GetBridgeSpec(bridge_type);
if (b->avail_year > _cur_year) return false;
max = b->max_length;
uint max = b->max_length;
if (max >= 16 && _patches.longbridges) max = 100;
return b->min_length <= bridge_len && bridge_len <= max;
@@ -244,7 +247,7 @@ CommandCost CmdBuildBridge(TileIndex end_tile, uint32 flags, uint32 p1, uint32 p
/* set and test bridge length, availability */
bridge_len = sx + sy - x - y - 1;
if (!CheckBridge_Stuff(bridge_type, bridge_len)) return_cmd_error(STR_5015_CAN_T_BUILD_BRIDGE_HERE);
if (!CheckBridge_Stuff(bridge_type, bridge_len, flags)) return_cmd_error(STR_5015_CAN_T_BUILD_BRIDGE_HERE);
/* retrieve landscape height and ensure it's on land */
tile_start = TileXY(x, y);

Some files were not shown because too many files have changed in this diff Show More