1
0
mirror of https://github.com/OpenTTD/OpenTTD.git synced 2025-08-14 18:19:11 +00:00

Compare commits

..

3 Commits
0.3.5 ... 0.3.4

Author SHA1 Message Date
truelight
e8c8a3f397 (svn r257) Hopefully now the 0.3.4 tag is correct 2004-09-14 19:03:03 +00:00
darkvater
be94ee8859 (svn r255) tagged 0.3.4 (again) 2004-09-14 18:58:39 +00:00
darkvater
eea1731db1 (svn r254) tag for revision 0.3.4 created 2004-09-14 18:54:10 +00:00
225 changed files with 23828 additions and 55921 deletions

163
Jamfile.next Normal file
View File

@@ -0,0 +1,163 @@
CFILES = ai.c aircraft_cmd.c aircraft_gui.c airport_gui.c
bridge_gui.c clear_cmd.c command.c disaster_cmd.c
dock_gui.c dummy_land.c economy.c engine.c engine_gui.c
fileio.c gfx.c graph_gui.c industry_cmd.c industry_gui.c
intro_gui.c landscape.c main_gui.c minilzo.c misc.c
misc_cmd.c misc_gui.c music_gui.c namegen.c network.c
news_gui.c oldloader.c order_cmd.c order_gui.c pathfind.c
player_gui.c players.c rail_cmd.c rail_gui.c road_cmd.c
road_gui.c roadveh_cmd.c roadveh_gui.c saveload.c sdl.c
settings.c settings_gui.c ship_cmd.c ship_gui.c smallmap_gui.c
sound.c spritecache.c station_cmd.c station_gui.c
strings.c subsidy_gui.c texteff.c town_cmd.c town_gui.c
train_cmd.c train_gui.c tree_cmd.c ttd.c
tunnelbridge_cmd.c unmovable_cmd.c vehicle.c
viewport.c water_cmd.c widget.c window.c screenshot.c
airport.c grfspecial.c terraform_gui.c ;
LANGFILES = english.txt swedish.txt french.txt german.txt italian.txt slovak.txt hungarian.txt norwegian.txt danish.txt czech.txt galician.txt polish.txt romanian.txt;
####################
# On UNIX we use gcc
####################
if $(UNIX) {
SDL_CONFIG_CFLAGS = `XX_SDL_CONFIG_PLACEHOLDER_XX --cflags` ;
SDL_CONFIG_LIBS = `XX_SDL_CONFIG_PLACEHOLDER_XX --libs` ;
LINKFLAGS += $(SDL_CONFIG_LIBS) ;
CC = gcc ;
CCFLAGS += -Wall -Wno-multichar -DUNIX -DWITH_SDL ;
OPTIMFLAGS = -O2 -fomit-frame-pointer ;
DEBUGFLAGS = -g ;
# also include extmidi
CFILES += extmidi.c unix.c ;
# compile in PNG support?
if $(WITH_PNG) {
CCFLAGS += -DWITH_PNG -I$(WITH_PNG) ;
LINKFLAGS += -lpng ;
}
# compile in zlib support?
if $(WITH_ZLIB) {
CCFLAGS += -DWITH_ZLIB ;
LINKFLAGS += -lz ;
}
# compile for BeOS 5.1 and higher
if $(WITH_BONE_NETWORKING) {
CCFLAGS += -DENABLE_NETWORK ;
LINKFLAGS += -lsocket -lbind ;
}
# link in BeOS MIDI and Be API libraries
if $(BEOS_MIDI) {
CCFLAGS += -DBEOS_MIDI ;
LINKFLAGS += -lbe -lmidi ;
CFILES += bemidi.cpp ;
}
}
####################
# MSVC on Win32
####################
actions ActWin32Res {
$(VISUALC)\\..\\common\\msdev98\\bin\\rc /r /i $(STDHDRS) /fo $(<) $(>)
}
rule Win32Res { ActWin32Res $(<) : $(>) ; DEPENDS $(<) : $(>) ; }
if $(TOOLSET) = VISUALC {
OPTIMFLAGS = /Oa /Os /Ow /Oy /Oi /Og /Ox /Gr /Gf /Gy /Zp4 /J /WX /W3 -DNDEBUG ;
CCFLAGS += -DWIN32 -DWIN32_EXCEPTION_TRACKER ;
CFILES += win32.c ;
LINKFLAGS += /opt:nowin98 /LIBPATH:$(VISUALC)\\lib ;
LINKLIBS = ws2_32.lib winmm.lib user32.lib gdi32.lib ;
# compile resources too
EOBJ = ttd.res ;
Win32Res ttd.res : ttd.rc ;
# png screenshots?
if $(WITH_PNG) {
CCFLAGS += -DWITH_PNG -I$(WITH_PNG) ;
LINKLIBS += libpng.lib ;
}
# zlib savegames?
if $(WITH_ZLIB) {
CCFLAGS += -DWITH_ZLIB ;
LINKLIBS += zlibstat.lib ;
}
# build release by default
RELEASE = 1 ;
}
####################
# Common
####################
rule MyObjects {
local _i _t _s ;
_t = $(OUTDIR)/$(>:S=$(SUFOBJ)) ;
OPTIM on $(_t) = $(3) ;
MkDir $(OUTDIR) ;
Depends $(_t) : $(OUTDIR) ;
for _i in $(>) {
_s = $(OUTDIR)/$(_i:S=$(SUFOBJ)) ;
Object $(_s) : $(_i) ;
# special handling for sdl.c and unix.c
if $(_i) = sdl.c || $(_i) = unix.c { CCFLAGS on $(_s) += $(SDL_CONFIG_CFLAGS) ; }
}
MainFromObjects $(OUTDIR)/$(<) : $(_t) $(EOBJ) ;
}
rule MyMain {
if $(RELEASE) {
OUTDIR = release ;
MyObjects ttd : $(>) : $(OPTIMFLAGS) ;
} else {
OUTDIR = debug ;
MyObjects ttd : $(>) : -D_DEBUG $(DEBUGFLAGS) ;
}
}
actions CompileLang {
strgen$(SLASH)strgen $(>)
}
rule LangFile {
if $(>) = lang/english.txt {
CompileLang $(<) table/strings.h : ;
DEPENDS table/string.h : $(>) ;
} else {
CompileLang $(<) : $(>) ;
}
Clean clean : $(<) ;
DEPENDS $(<) : $(>) ;
DEPENDS all : $(<) ;
DEPENDS $(<) : strgen/strgen ;
}
rule LangFiles {
local _i ;
for _i in $(<) { LangFile $(_i:S=.lng) : $(_i) ; }
Clean clean : table/strings.h ;
}
LangFiles lang/$(LANGFILES) ;
Main strgen/strgen : strgen/strgen.c ;
MyMain ttd : $(CFILES) ;

463
Makefile
View File

@@ -36,7 +36,6 @@
# mrproper: remove intermediate files and makefile configuration
# upgradeconf: add new options to old Makefile.config
# osx: OS X application
# release: used by OSX to make a dmg file ready to release
# Options:
#
@@ -45,8 +44,6 @@
# UNIX: building on *nix derivate (Linux, FreeBSD)
# OSX: building on Mac OS X
# MORPHOS: building on MorphOS
# BEOS: building on BeOS
# SUNOS: building on SunOS (Solaris)
#
# Summary of library choice defines
# WITH_ZLIB: savegames using zlib
@@ -66,48 +63,16 @@
# If unset, it will use the hardcoded path in the c code
# NOVERBOSE: supress all warnings and errors during compilation.
# It looks nicer, but you will not know what went wrong. Use it on released (stable) sources only
# VERBOSE: actually show the commands used for compilation.
# WITH_NETWORK: enable networking
# DEDICATED: allows compilation on UNIX without SDL. Useful for dedicated servers
#
# Paths:
# INSTALL: If not set, the game uses the directory of the binary to
# store everything (lang, data, gm, save and openttd.cfg), this is the `old' behaviour.
# In this case, none of the following paths are used, you also should _not_
# use `make install', but copy the required stuff yourself (or just play out
# of you source directory, which should work fine).
# If you want to use `make install' to install the game globally, you should
# define it _before_ you build the game. If you only define INSTALL when you
# do `make install', the game won't be able to find it's files (so you should
# also define all the following paths before building).
#
# So, the following paths should be defined if INSTALL is defined.
# None of these paths have to end with /
# PREFIX: Normally /usr/local
# BINARY_DIR: The location of the binary, normally games. (Will be prefixed
# with $PREFIX)
# DATA_DIR: The location of the data (lang, data and gm), normally
# share/games/openttd. (Will be prefixed with $PREFIX)
# PERSONAL_DIR: The directory where openttd.cfg and the save folder will be
# stored. You cannot use ~ here, define USE_HOMEDIR for that.
# USE_HOMEDIR: If this variable is set, PERSONAL_DIR will be prefixed with
# ~/ at runtime (the user's homedir)
# SECOND_DATA_PATH Use this data dir if a file is not found in the data dir in the data path
# CUSTOM_LANG_PATH If this is set, it will use the path given to search for lng files
# instead of the lang dir in the data path
# NOTE: both SECOND_DATA_PATH and CUSTOM_LANG_PATH uses paths relative to where OTTD is opened
#
# DEST_DIR: make install will use this directory instead of the filesystem
# root to install its files. This should normally not be used by
# ordinary users, currently it is only used for the debian
# packaging. This value should only be set when calling `make
# install' and is not saved in Makefile.config
# DATA_DIR_PREFIX: This sets the dir OpenTTD looks for the needed files.
# MUST END WITH / if defined
#
# STATIC: link statically
# CYGWIN: build in Cygwin environment
# MINGW: build with MingW compiler, link with MingW libraries
#
# Experimental (does not work properly):
# WITH_NETWORK: enable networking
# WITH_DIRECTMUSIC: enable DirectMusic MIDI support
@@ -118,7 +83,7 @@
# Makefile version tag
# it checks if the version tag in makefile.config is the same and force update outdated config files
MAKEFILE_VERSION:=6
MAKEFILE_VERSION:=1
# CONFIG_WRITER have to be found even for manual configuration
CONFIG_WRITER=makefiledir/Makefile.config_writer
@@ -162,17 +127,7 @@ endif
# this is used if there aren't any makefile.config
ifndef CONFIG_INCLUDED
# sets network on by default if there aren't any config file
ENABLE_NETWORK:=1
# paths for make install
# disabled as they would break it for some (many?) people if they were default
#PREFIX:=/usr/local
#DATA_DIR:=share/games/openttd
#BINARY_DIR:=games
#PERSONAL_DIR:=.openttd
#USE_HOMEDIR:=1
ENABLE_NETWORK:=1 # sets network on by default if there aren't any config file
-include $(LIB_DETECTION)
endif
@@ -209,20 +164,11 @@ endif
endif
endif
ifdef RELEASE
ifdef OSX
ifndef STATIC
$(error do not make dynamically linked releases. Most users can't use those)
endif
endif
endif
# Force SDL on UNIX platforms
ifndef WITH_SDL
ifdef UNIX
ifndef DEDICATED
$(error You need to have SDL installed in order to run OpenTTD on UNIX. Use DEDICATED if you want to compile a CLI based server)
endif
$(error You need to have SDL installed in order to run OpenTTD on UNIX.)
endif
endif
@@ -259,7 +205,7 @@ REV_NUMBER := $(shell if test -d .svn; then svnversion . | tr -dc 0-9; fi)
ifdef RELEASE
REV:=$(RELEASE)
else
REV := $(shell if test -d .svn; then svnversion . | awk '{ print "r"$$0 }'; fi)
REV := $(shell if test -d .svn; then echo -n r; svnversion .; fi)
tmp_test:=$(shell echo "$(REV)" | grep "M" )
ifdef tmp_test
REV_NUMBER:=1
@@ -302,7 +248,6 @@ BASECFLAGS += -g
else
ifdef PROFILE
BASECFLAGS += -pg
LDFLAGS += -pg
else
# Release mode
ifndef MORPHOS
@@ -317,7 +262,7 @@ ifdef OSX
BASECFLAGS += -O3 -funroll-loops -fsched-interblock -falign-loops=16 -falign-jumps=16 -falign-functions=16 -falign-jumps-max-skip=15 -falign-loops-max-skip=15 -mdynamic-no-pic -mpowerpc-gpopt -force_cpusubtype_ALL $(WARNING_DISPLAY)
else
ifdef MORPHOS
BASECFLAGS += -O3 -funroll-loops -fexpensive-optimizations -mstring -mmultiple $(WARNING_DISPLAY)
BASECFLAGS += -O2 -funroll-loops -fexpensive-optimizations -mstring -mmultiple $(WARNING_DISPLAY)
else
BASECFLAGS += -O2 $(WARNING_DISPLAY)
endif
@@ -333,17 +278,15 @@ LDFLAGS += -static
endif
endif
# If building on MingW don't link with Cygwin libs
# If building on Cygwin/MingW don't link with Cygwin libs
ifdef WIN32
ifdef CYGWIN
BASECFLAGS += -mwin32
LDFLAGS += -mwin32
endif
ifdef MINGW
ifdef CYGWIN
BASECFLAGS += -mno-cygwin
LDFLAGS += -mno-cygwin
endif
endif
endif
CFLAGS += $(BASECFLAGS)
@@ -351,23 +294,6 @@ ifdef UNIX
CDEFS += -DUNIX
endif
ifdef BEOS
CDEFS += -DBEOS
LDFLAGS += -lmidi -lbe
ifdef WITH_NETWORK
ifdef BEOS_NET_SERVER
CDEFS += -DBEOS_NET_SERVER
endif
endif
endif
ifdef SUNOS
CDEFS += -DSUNOS
ifdef WITH_NETWORK
LDFLAGS += -lnsl -lsocket
endif
endif
# SDL config
ifdef WITH_SDL
CDEFS += -DWITH_SDL
@@ -423,33 +349,25 @@ ifdef FREEBSD
LIBS += -lpng
else
CFLAGS += `libpng-config --cflags`
# seems like older libpng versions are broken and need this
PNGCONFIG_FLAGS = --ldflags --libs
ifdef STATIC
ifdef OSX
ifdef STATIC
# Seems like we need a tiny hack for OSX static to work
LIBS += `libpng-config --prefix`/lib/libpng.a
else
LIBS += `libpng-config --static $(PNGCONFIG_FLAGS)`
LIBS += `libpng-config --libs`
endif
else
LIBS += `libpng-config --L_opts $(PNGCONFIG_FLAGS)`
# seems like older libpng versions are broken and need this
PNGCONFIG_FLAGS = --ldflags --libs
ifdef STATIC
LIBS += `libpng-config --static $(PNGCONFIG_FLAGS)`
else
LIBS += `libpng-config $(PNGCONFIG_FLAGS)`
endif
endif
endif
endif
# enables/disables assert()
ifdef DISABLE_ASSERTS
CFLAGS += -DNDEBUG
endif
# automatically disables asserts for release
ifdef RELEASE
ifndef ENABLE_ASSERTS
CFLAGS += -DNDEBUG
endif
endif
ifdef TRANSLATOR
STRGEN_FLAGS=-t
@@ -457,18 +375,24 @@ else
STRGEN_FLAGS=
endif
# file paths setup
ifdef GAME_DATA_DIR
CDEFS += -DGAME_DATA_DIR=\"$(GAME_DATA_DIR)\"
endif
ifdef PERSONAL_DIR
CDEFS += -DPERSONAL_DIR=\"$(PERSONAL_DIR)\"
endif
ifdef USE_HOMEDIR
CDEFS += -DUSE_HOMEDIR
endif
# MIDI setup
ifdef OSX
ifndef MIDI
MIDI:=$(OSXAPP)/contents/macos/track_starter
endif
ifndef SECOND_DATA_PATH
SECOND_DATA_PATH:="$(OSXAPP)/contents/data/"
endif
ifndef CUSTOM_LANG_DIR
CUSTOM_LANG_DIR:="$(OSXAPP)/contents/lang/"
endif
endif
ifdef MIDI
@@ -478,11 +402,9 @@ CDEFS += -DMIDI_ARG=\"$(MIDI_ARG)\"
endif
endif
# Experimental
ifdef WITH_NETWORK
CDEFS += -DENABLE_NETWORK
ifdef QNX
LIBS += -lsocket
endif
ifdef UNIX
ifndef OSX
ifndef MORPHOS
@@ -494,15 +416,6 @@ endif
endif
endif
ifdef SECOND_DATA_PATH
CDEFS += -DSECOND_DATA_DIR=\"$(SECOND_DATA_PATH)/\"
endif
ifdef CUSTOM_LANG_DIR
CDEFS += -DCUSTOM_LANG_DIR=\"$(CUSTOM_LANG_DIR)/\"
endif
ifdef WITH_DIRECTMUSIC
CDEFS += -DWIN32_ENABLE_DIRECTMUSIC_SUPPORT
endif
@@ -513,27 +426,15 @@ TTDLDFLAGS += -Wl,--subsystem,windows
endif
# sets up the paths for use for make install
ifdef INSTALL
# We use _PREFIXED vars here, so the paths are recalculated every time, and
# the prefix is not prepended in the makefile config
BINARY_DIR_PREFIXED:=$(PREFIX)/$(BINARY_DIR)
DATA_DIR_PREFIXED:=$(PREFIX)/$(DATA_DIR)
# We use _INSTALL vars here, these vars are the locations where the files will
# be installed
DATA_DIR_INSTALL=$(DEST_DIR)/$(DATA_DIR_PREFIXED)
BINARY_DIR_INSTALL=$(DEST_DIR)/$(BINARY_DIR_PREFIXED)
# Let the code know where to find stuff
ifdef DATA_DIR_PREFIXED
CDEFS += -DGAME_DATA_DIR=\"$(DATA_DIR_PREFIXED)/\"
endif
ifdef PERSONAL_DIR
CDEFS += -DPERSONAL_DIR=\"$(PERSONAL_DIR)/\"
endif
ifdef USE_HOMEDIR
CDEFS += -DUSE_HOMEDIR
ifdef BINARY_DIR
BINARY_INSTALL:=$(BINARY_DIR)$(TTD)
else
BINARY_INSTALL:=$(INSTALL_DIR)$(TTD)
endif
ifdef DATA_DIR_PREFIX
DATA_DIR:=$(DATA_DIR_PREFIX)
else
DATA_DIR:=$(INSTALL_DIR)
endif
##############################################################################
@@ -545,117 +446,33 @@ endif
### Sources
C_SOURCES += ai.c
C_SOURCES += ai_build.c
C_SOURCES += ai_new.c
C_SOURCES += ai_pathfinder.c
C_SOURCES += ai_shared.c
C_SOURCES += aircraft_cmd.c
C_SOURCES += aircraft_gui.c
C_SOURCES += airport.c
C_SOURCES += airport_gui.c
C_SOURCES += aystar.c
C_SOURCES += bridge_gui.c
C_SOURCES += callback_table.c
C_SOURCES += clear_cmd.c
C_SOURCES += command.c
C_SOURCES += console.c
C_SOURCES += console_cmds.c
C_SOURCES += dedicated.c
C_SOURCES += disaster_cmd.c
C_SOURCES += dock_gui.c
C_SOURCES += dummy_land.c
C_SOURCES += economy.c
C_SOURCES += engine.c
C_SOURCES += engine_gui.c
C_SOURCES += fileio.c
C_SOURCES += gfx.c
C_SOURCES += graph_gui.c
C_SOURCES += newgrf.c
C_SOURCES += industry_cmd.c
C_SOURCES += industry_gui.c
C_SOURCES += intro_gui.c
C_SOURCES += landscape.c
C_SOURCES += main_gui.c
C_SOURCES += map.c
C_SOURCES += md5.c
C_SOURCES += minilzo.c
C_SOURCES += misc.c
C_SOURCES += misc_cmd.c
C_SOURCES += misc_gui.c
C_SOURCES += music_gui.c
C_SOURCES += namegen.c
C_SOURCES += network.c
C_SOURCES += network_client.c
C_SOURCES += network_data.c
C_SOURCES += network_gamelist.c
C_SOURCES += network_gui.c
C_SOURCES += network_server.c
C_SOURCES += network_udp.c
C_SOURCES += news_gui.c
C_SOURCES += oldloader.c
C_SOURCES += order_cmd.c
C_SOURCES += order_gui.c
C_SOURCES += pathfind.c
C_SOURCES += player_gui.c
C_SOURCES += players.c
C_SOURCES += queue.c
C_SOURCES += rail_cmd.c
C_SOURCES += rail_gui.c
C_SOURCES += rev.c
C_SOURCES += road_cmd.c
C_SOURCES += road_gui.c
C_SOURCES += roadveh_cmd.c
C_SOURCES += roadveh_gui.c
C_SOURCES += saveload.c
C_SOURCES += screenshot.c
C_SOURCES += settings.c
C_SOURCES += settings_gui.c
C_SOURCES += ship_cmd.c
C_SOURCES += ship_gui.c
C_SOURCES += smallmap_gui.c
C_SOURCES += sound.c
C_SOURCES += sprite.c
C_SOURCES += spritecache.c
C_SOURCES += station_cmd.c
C_SOURCES += station_gui.c
C_SOURCES += strings.c
C_SOURCES += subsidy_gui.c
C_SOURCES += terraform_gui.c
C_SOURCES += texteff.c
C_SOURCES += town_cmd.c
C_SOURCES += town_gui.c
C_SOURCES += train_cmd.c
C_SOURCES += train_gui.c
C_SOURCES += tree_cmd.c
C_SOURCES += ttd.c
C_SOURCES += tunnelbridge_cmd.c
C_SOURCES += unmovable_cmd.c
C_SOURCES += vehicle.c
C_SOURCES += vehicle_gui.c
C_SOURCES += viewport.c
C_SOURCES += water_cmd.c
C_SOURCES += widget.c
C_SOURCES += window.c
CXX_SOURCES =
ttd_SOURCES = \
ai.c ai_build.c ai_new.c ai_pathfinder.c ai_shared.c aircraft_cmd.c \
aircraft_gui.c airport.c airport_gui.c aystar.c bridge_gui.c \
clear_cmd.c command.c console.c console_cmds.c disaster_cmd.c dock_gui.c dummy_land.c economy.c \
engine.c engine_gui.c fileio.c gfx.c graph_gui.c grfspecial.c \
industry_cmd.c industry_gui.c intro_gui.c landscape.c main_gui.c \
minilzo.c misc.c misc_cmd.c misc_gui.c music_gui.c namegen.c network.c \
network_gui.c news_gui.c oldloader.c order_cmd.c order_gui.c \
pathfind.c player_gui.c players.c queue.c rail_cmd.c rail_gui.c rev.c \
road_cmd.c road_gui.c roadveh_cmd.c roadveh_gui.c saveload.c \
screenshot.c settings.c settings_gui.c ship_cmd.c ship_gui.c \
smallmap_gui.c sound.c spritecache.c station_cmd.c station_gui.c \
strings.c subsidy_gui.c terraform_gui.c texteff.c town_cmd.c \
town_gui.c train_cmd.c train_gui.c tree_cmd.c ttd.c tunnelbridge_cmd.c \
unmovable_cmd.c vehicle.c vehicle_gui.c viewport.c water_cmd.c widget.c window.c \
ifdef WITH_SDL
C_SOURCES += sdl.c
ttd_SOURCES += sdl.c
endif
ifdef WIN32
C_SOURCES += win32.c w32dm.c
ttd_SOURCES += win32.c w32dm.c
else
C_SOURCES += extmidi.c unix.c
ttd_SOURCES += extmidi.c unix.c
endif
ttd_OBJS = $(C_SOURCES:%.c=%.o) $(CXX_SOURCES:%.cpp=%.o)
ifdef BEOS
CXX_SOURCES += os/beos/bemidi.cpp
CFLAGS += -I.
endif
ttd_OBJS = $(ttd_SOURCES:%.c=%.o)
ifdef WIN32
# Resource file
@@ -663,7 +480,8 @@ ttd_OBJS += winres.o
endif
ifdef WITH_DIRECTMUSIC
CXX_SOURCES += w32dm2.cpp
ttd_SOURCES += w32dm2.cpp
ttd_OBJS += w32dm2.o
endif
ttd_DEPS1 = $(foreach obj,$(ttd_OBJS),.deps/$(obj))
@@ -696,7 +514,7 @@ OSX:=OSX
endif
all: endian.h $(UPDATECONFIG) $(LANGS) $(TTD) $(OSX) $(endwarnings)
all: endian.h $(UPDATECONFIG) $(TTD) $(OSX) $(endwarnings)
endian.h: $(ENDIAN_CHECK)
@# Check if system is LITTLE_ENDIAN or BIG_ENDIAN
@@ -708,26 +526,21 @@ $(ENDIAN_CHECK): endian_check.c
$(CC) $(BASECFLAGS) $(CDEFS) endian_check.c -o $@
$(TTD): table/strings.h $(ttd_OBJS) $(MAKE_CONFIG)
$(if $(VERBOSE),@echo '$(C_LINK) $@ $(TTDLDFLAGS) $(ttd_OBJS) $(LIBS)';,@echo 'Compiling and Linking $@';) \
$(C_LINK) $@ $(TTDLDFLAGS) $(ttd_OBJS) $(LIBS) $(VERBOSE_FILTER)
$(TTD): table/strings.h $(ttd_OBJS) $(LANGS) $(MAKE_CONFIG)
@echo 'Compiling and Linking $@'; \
$(C_LINK) $@ $(TTDLDFLAGS) $(ttd_OBJS) $(LIBS) $(VERBOSE_FILTER)
$(OSX): $(TTD)
@rm -fr "$(OSXAPP)"
@mkdir -p "$(OSXAPP)"/Contents/MacOS
@mkdir -p "$(OSXAPP)"/Contents/Resources
@mkdir -p "$(OSXAPP)"/Contents/Data
@mkdir -p "$(OSXAPP)"/Contents/Lang
@echo "APPL????" > "$(OSXAPP)"/Contents/PkgInfo
@cp os/macos/ttd.icns "$(OSXAPP)"/Contents/Resources/openttd.icns
@os/macos/plistgen.sh "$(OSXAPP)" "$(REV)"
@cp os/macos/track_starter "$(OSXAPP)"/contents/macos
$(OSX):
@mkdir -p $(OSXAPP)/Contents/MacOS
@mkdir -p $(OSXAPP)/Contents/Resources
@echo "APPL????" > $(OSXAPP)/Contents/PkgInfo
@cp os/macos/ttd.icns $(OSXAPP)/Contents/Resources/openttd.icns
@os/macos/plistgen.sh $(OSXAPP) $(REV)
@cp os/macos/track_starter $(OSXAPP)/contents/macos
@ls os/macos | grep -q "\.class" || \
javac os/macos/OpenTTDMidi.java
@cp os/macos/OpenTTDMidi.class "$(OSXAPP)"/contents/macos
@cp data/* "$(OSXAPP)"/Contents/data/
@cp lang/*.lng "$(OSXAPP)"/Contents/lang/
@cp $(TTD) "$(OSXAPP)"/Contents/MacOS/$(TTD)
@cp os/macos/OpenTTDMidi.class $(OSXAPP)/contents/macos
@cp $(TTD) $(OSXAPP)/Contents/MacOS/$(TTD)
$(endwarnings): $(64_bit_warnings)
@@ -735,94 +548,31 @@ $(64_bit_warnings):
$(warning 64 bit CPUs will get some 64 bit specific bugs!)
$(warning If you see any bugs, include in your bug report that you use a 64 bit CPU)
$(STRGEN): strgen/strgen.c endian.h
$(STRGEN): strgen/strgen.c rev.o
@echo 'Compiling and Linking $@'; \
$(CC) $(BASECFLAGS) $(CDEFS) -o $@ $< $(VERBOSE_FILTER)
$(CC) $(BASECFLAGS) $(CDEFS) -o $@ $^ $(VERBOSE_FILTER)
table/strings.h: lang/english.txt $(STRGEN)
lang/english.lng: lang/english.txt $(STRGEN)
@echo 'Generating $@'; \
$(STRGEN)
lang/%.lng: lang/%.txt $(STRGEN) lang/english.txt
table/strings.h: lang/english.lng
lang/%.lng: lang/%.txt $(STRGEN)
@echo 'Generating $@'; \
$(STRGEN) $(STRGEN_FLAGS) $< $(VERBOSE_FILTER) $(LANG_ERRORS)
winres.o: ttd.rc
windres -o $@ $<
ifdef MORPHOS
release: all
@rm -fr "/t/openttd-$(RELEASE)-morphos.lha"
@mkdir -p "/t/"
@mkdir -p "/t/openttd-$(RELEASE)-morphos"
@mkdir -p "/t/openttd-$(RELEASE)-morphos/docs"
@mkdir -p "/t/openttd-$(RELEASE)-morphos/data"
@mkdir -p "/t/openttd-$(RELEASE)-morphos/lang"
@cp -R $(TTD) "/t/openttd-$(RELEASE)-morphos/"
@cp data/* "/t/openttd-$(RELEASE)-morphos/data/"
@cp lang/*.lng "/t/openttd-$(RELEASE)-morphos/lang/"
@cp readme.txt "/t/openttd-$(RELEASE)-morphos/docs/ReadMe"
@cp docs/console.txt "/t/openttd-$(RELEASE)-morphos/docs/Console"
@cp COPYING "/t/openttd-$(RELEASE)-morphos/docs/"
@cp changelog.txt "/t/openttd-$(RELEASE)-morphos/docs/ChangeLog"
@cp os/morphos/icons/openttd.info "/t/openttd-$(RELEASE)-morphos/$(TTD).info"
@cp os/morphos/icons/docs.info "/t/openttd-$(RELEASE)-morphos/docs.info"
@cp os/morphos/icons/drawer.info "/t/openttd-$(RELEASE)-morphos.info"
@cp os/morphos/icons/document.info "/t/openttd-$(RELEASE)-morphos/docs/ReadMe.info"
@cp os/morphos/icons/document.info "/t/openttd-$(RELEASE)-morphos/docs/Console.info"
@cp os/morphos/icons/document.info "/t/openttd-$(RELEASE)-morphos/docs/COPYING.info"
@cp os/morphos/icons/document.info "/t/openttd-$(RELEASE)-morphos/docs/ChangeLog.info"
@strip --strip-all --strip-unneeded --remove-section .comment "/t/openttd-$(RELEASE)-morphos/$(TTD)"
@lha a -r "t:openttd-$(RELEASE)-morphos.lha" "t:openttd-$(RELEASE)-morphos"
@lha a "t:openttd-$(RELEASE)-morphos.lha" "t:openttd-$(RELEASE)-morphos.info"
@rm -fr "/t/openttd-$(RELEASE)-morphos"
@rm -fr "/t/openttd-$(RELEASE)-morphos.info"
@echo "Release archive can be found in RAM:t/ now."
.PHONY: release
endif
ifdef OSX
release: all
@mkdir -p "OpenTTD $(RELEASE)"
@mkdir -p "OpenTTD $(RELEASE)"/docs
@cp -R $(OSXAPP) "OpenTTD $(RELEASE)"/
@cp docs/OSX_where_did_the_package_go.txt "OpenTTD $(RELEASE)"/Where\ did\ the\ package\ go.txt
@cp readme.txt "OpenTTD $(RELEASE)"/docs/
@cp docs/README_if_game_crashed_on_OSX.txt "OpenTTD $(RELEASE)"/docs/readme\ if\ crashed\ on\ OSX.txt
@cp docs/console.txt "OpenTTD $(RELEASE)"/docs/
@cp COPYING "OpenTTD $(RELEASE)"/docs/
@cp changelog.txt "OpenTTD $(RELEASE)"/docs/
@cp docs/README_if_game_crashed_on_OSX.txt "OpenTTD $(RELEASE)"/docs/
@cp os/macos/*.webloc "OpenTTD $(RELEASE)"
@/usr/bin/hdiutil create -ov -format UDZO -srcfolder "OpenTTD $(RELEASE)" openttd-"$(RELEASE)"-osx.dmg
@rm -fr "OpenTTD $(RELEASE)"
nightly_build: all
@mkdir -p "OpenTTD_nightly_$(DATE)"
@mkdir -p "OpenTTD_nightly_$(DATE)"/docs
@cp -R $(OSXAPP) "OpenTTD_nightly_$(DATE)"/
@cp docs/OSX_where_did_the_package_go.txt "OpenTTD_nightly_$(DATE)"/Where\ did\ the\ package\ go.txt
@cp readme.txt "OpenTTD_nightly_$(DATE)"/docs/
@cp docs/README_if_game_crashed_on_OSX.txt "OpenTTD_nightly_$(DATE)"/docs/readme\ if\ crashed\ on\ OSX.txt
@cp docs/console.txt "OpenTTD_nightly_$(DATE)"/docs/
@cp COPYING "OpenTTD_nightly_$(DATE)"/docs/
@cp revisionlog.txt "OpenTTD_nightly_$(DATE)"/revisionlog.txt
@cp docs/README_if_game_crashed_on_OSX.txt "OpenTTD_nightly_$(DATE)"/docs/
@cp os/macos/*.webloc "OpenTTD_nightly_$(DATE)"/
@/usr/bin/hdiutil create -ov -format UDZO -srcfolder "OpenTTD_nightly_$(DATE)" openttd-nightly-"$(DATE)".dmg
@rm -fr "OpenTTD_nightly_$(DATE)"
.PHONY: release nightly_build
endif
rev.c: FORCE
@# setting the revision number in a place, there the binary can read it
@echo 'const char _openttd_revision[] = "$(REV)";' >>rev.c.new
@echo 'const char _openttd_revision[] = "'$(REV)'";' >>rev.c.new
@echo 'const int _revision_number = $(REV_NUMBER);' >>rev.c.new
@# some additions for MorphOS versions tag
@echo '#ifdef __MORPHOS__' >>rev.c.new
@echo 'const char morphos_versions_tag[] = "\\0$$VER: OpenTTD $(REV) ('${BUILDDATE}') <20> OpenTTD Team [MorphOS, PowerPC]";' >>rev.c.new
@echo 'const char morphos_versions_tag[] = "\\0$$VER: OpenTTD '$(REV)' ('${BUILDDATE}') <20> OpenTTD Team [MorphOS, PowerPC]";' >>rev.c.new
@echo '#endif' >>rev.c.new
@# Only update the real rev.c if it actually changed, to prevent
@# useless rebuilds.
@@ -832,9 +582,11 @@ rev.c: FORCE
FORCE:
# ttd$(EXE) is removed just to make sure people execute the right binary (openttd$(EXE))
# remove this for next release!
clean:
@echo 'Cleaning up...'; \
rm -rf .deps *~ $(TTD) $(STRGEN) core table/strings.h $(LANGS) $(ttd_OBJS) endian.h $(ENDIAN_CHECK)
rm -rf .deps *~ $(TTD) $(STRGEN) core table/strings.h $(LANGS) $(ttd_OBJS) endian.h $(ENDIAN_CHECK) ttd$(EXE)
mrproper: clean
rm -rf $(MAKE_CONFIG)
@@ -842,34 +594,15 @@ mrproper: clean
ifndef OSX
ifndef MORPHOS
install:
ifeq ($(INSTALL),)
$(error make install is highly experimental at his state and not\
@if [ "$(INSTALL)" == "" ]; then $(error make install is highly experimental at his state and not\
tested very much - use at your own risk - to use run \"make install INSTALL:=1\" - make sure makefile.config\
is set correctly up - run \"make upgradeconf\")
endif
ifeq ($(PREFIX), )
$(error no prefix set - check makefile.config)
endif
# We compare against the non prefixed version here, so we won't install
# if only the prefix has been set
ifeq ($(DATA_DIR),)
$(error no data path set - check makefile.config)
endif
ifeq ($(BINARY_DIR),)
$(error no binary path set - check makefile.config)
endif
# We'll install in $DEST_DIR instead of root if it is set (we don't
# care about extra /'s
mkdir -p $(DATA_DIR_INSTALL)/lang
mkdir -p $(DATA_DIR_INSTALL)/data
mkdir -p $(DATA_DIR_INSTALL)/gm
mkdir -p $(BINARY_DIR_INSTALL)
cp $(TTD) $(BINARY_DIR_INSTALL)
cp lang/*.lng $(DATA_DIR_INSTALL)/lang
cp data/*.grf $(DATA_DIR_INSTALL)/data
cp data/opntitle.dat $(DATA_DIR_INSTALL)/data
cp media/openttd.64.png $(DATA_DIR_INSTALL)
@if [ "$(DATA_DIR)" == "" ]; then $(error no install path set - check makefile.config)
mkdir -p $(DATA_DIR)/lang
mkdir -p $(DATA_DIR)/data
cp $(TTD) $(BINARY_INSTALL)
cp lang/*.lng $(DATA_DIR)/lang
cp data/*.grf $(DATA_DIR)/data
else #MorphOS
install:
$(error make install is not supported on MorphOS)
@@ -915,8 +648,8 @@ DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
#@echo '$(C_BUILD) $<'; \
%.o: %.c $(MAKE_CONFIG) endian.h table/strings.h
$(if $(VERBOSE),@echo '$(C_BUILD) $<',@echo 'Compiling $(*F).o'); \
%.o: %.c $(MAKE_CONFIG)
@echo 'Compiling $(*F).o'; \
$(C_BUILD) $< -Wp,-MD,.deps/$(*F).pp $(VERBOSE_FILTER)
@-cp .deps/$(*F).pp .deps/$(*F).P; \
tr ' ' '\012' < .deps/$(*F).pp \
@@ -924,6 +657,6 @@ DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
>> .deps/$(*F).P; \
rm .deps/$(*F).pp
# For DirectMusic build and BeOS specific parts
%.o: %.cpp $(MAKE_CONFIG) endian.h table/strings.h
$(CXX_BUILD) $< -o $@
# For DirectMusic build
%.o: %.cpp $(MAKE_CONFIG)
$(CXX_BUILD) $<

138
ai.c
View File

@@ -1,6 +1,5 @@
#include "stdafx.h"
#include "ttd.h"
#include "map.h"
#include "player.h"
#include "vehicle.h"
#include "engine.h"
@@ -114,19 +113,25 @@ static void AiStateVehLoop(Player *p)
p->ai.state_counter = 0;
}
// XXX
static const byte _rail_locos_count[3] = {
27, 3, 5
};
extern const byte _rail_engines_start[3];
static int AiChooseTrainToBuild(byte railtype, int32 money, byte flag)
{
int best_veh_index = -1;
byte best_veh_score = 0;
int32 r;
int i;
for (i = 0; i < NUM_TRAIN_ENGINES; i++) {
const RailVehicleInfo *rvi = RailVehInfo(i);
Engine *e = DEREF_ENGINE(i);
int i = _rail_engines_start[railtype];
int end = i + _rail_locos_count[railtype];
Engine *e = &_engines[i];
do {
assert(!(_rail_vehicle_info[i].flags & RVI_WAGON));
if (e->railtype != railtype || rvi->flags & RVI_WAGON
|| !HASBIT(e->player_avail, _current_player) || e->reliability < 0x8A3D)
if (!HASBIT(e->player_avail, _current_player) || e->reliability < 0x8A3D)
continue;
r = DoCommandByTile(0, i, 0, 0, CMD_BUILD_RAIL_VEHICLE);
@@ -137,7 +142,7 @@ static int AiChooseTrainToBuild(byte railtype, int32 money, byte flag)
best_veh_score = _cmd_build_rail_veh_score;
best_veh_index = i;
}
}
} while (++e, ++i != end);
return best_veh_index;
}
@@ -249,7 +254,7 @@ static int AiChooseShipToReplaceWith(Player *p, Vehicle *v)
static void AiHandleGotoDepot(Player *p, int cmd)
{
if (p->ai.cur_veh->current_order.type != OT_GOTO_DEPOT)
if ((p->ai.cur_veh->next_order & OT_MASK) != OT_GOTO_DEPOT)
DoCommandByTile(0, p->ai.cur_veh->index, 0, DC_EXEC, cmd);
if (++p->ai.state_counter <= 1387) {
@@ -257,20 +262,18 @@ static void AiHandleGotoDepot(Player *p, int cmd)
return;
}
if (p->ai.cur_veh->current_order.type == OT_GOTO_DEPOT) {
p->ai.cur_veh->current_order.type = OT_DUMMY;
p->ai.cur_veh->current_order.flags = 0;
if ((p->ai.cur_veh->next_order&OT_MASK) == OT_GOTO_DEPOT) {
p->ai.cur_veh->next_order = OT_DUMMY;
InvalidateWindow(WC_VEHICLE_VIEW, p->ai.cur_veh->index);
}
}
static void AiRestoreVehicleOrders(Vehicle *v, BackuppedOrders *bak)
{
const Order *os = bak->order;
uint16 *os = bak->order, ord;
int ind = 0;
while (os++->type != OT_NOTHING) {
if (DoCommandByTile(0, v->index + (ind << 16), PackOrder(os), DC_EXEC, CMD_INSERT_ORDER) == CMD_ERROR)
while ((ord = *os++) != 0) {
if (DoCommandByTile(0, v->index + (ind << 16), ord, DC_EXEC, CMD_INSERT_ORDER) == CMD_ERROR)
break;
ind++;
}
@@ -1531,7 +1534,6 @@ static bool AiCheckTrackResources(TileIndex tile, const AiDefaultBlockData *p, b
uint values[NUM_CARGO];
int w,h;
uint tile2;
int rad;
for(;p->mode != 4;p++) if (p->mode == 1) {
tile2 = TILE_ADD(tile, p->tileoffs);
@@ -1540,18 +1542,11 @@ static bool AiCheckTrackResources(TileIndex tile, const AiDefaultBlockData *p, b
h = ((p->attr>>4) & 7);
if (p->attr&1) intswap(w, h);
if (_patches.modified_catchment) {
rad = CA_TRAIN;
} else {
rad = 4;
}
if (cargo & 0x80) {
GetProductionAroundTiles(values, tile2, w, h, rad);
GetProductionAroundTiles(values, tile2, w, h);
return values[cargo & 0x7F] != 0;
} else {
GetAcceptanceAroundTiles(values, tile2, w, h, rad);
GetAcceptanceAroundTiles(values, tile2, w, h);
if (!(values[cargo] & ~7))
return false;
if (cargo != CT_MAIL)
@@ -1947,7 +1942,7 @@ static bool AiCheckRailPathBetter(AiRailFinder *arf, const byte *p)
return better;
}
static inline void AiCheckBuildRailBridgeHere(AiRailFinder *arf, TileIndex tile, const byte *p)
static void FORCEINLINE AiCheckBuildRailBridgeHere(AiRailFinder *arf, TileIndex tile, const byte *p)
{
TileIndex tile_new;
bool flag;
@@ -1987,7 +1982,7 @@ static inline void AiCheckBuildRailBridgeHere(AiRailFinder *arf, TileIndex tile,
}
}
static inline void AiCheckBuildRailTunnelHere(AiRailFinder *arf, TileIndex tile, const byte *p)
static void FORCEINLINE AiCheckBuildRailTunnelHere(AiRailFinder *arf, TileIndex tile, const byte *p)
{
FindLandscapeHeightByTile(&arf->ti, tile);
@@ -2426,20 +2421,15 @@ handle_nocash:
for(i=0; p->ai.order_list_blocks[i] != 0xFF; i++) {
AiBuildRec *aib = (&p->ai.src) + p->ai.order_list_blocks[i];
uint flags = (AiGetStationIdByDef(aib->use_tile, aib->cur_building_rule) << 8) + OT_GOTO_STATION;
bool is_pass = (p->ai.cargo_type == CT_PASSENGERS ||
p->ai.cargo_type == CT_MAIL ||
(_opt.landscape==LT_NORMAL && p->ai.cargo_type == CT_VALUABLES));
Order order;
order.type = OT_GOTO_STATION;
order.flags = 0;
order.station = AiGetStationIdByDef(aib->use_tile, aib->cur_building_rule);
if (!is_pass && i == 1) flags |= OF_UNLOAD;
if (p->ai.num_want_fullload != 0 && (is_pass || i == 0)) flags |= OF_FULL_LOAD;
if (!is_pass && i == 1) order.flags |= OF_UNLOAD;
if (p->ai.num_want_fullload != 0 && (is_pass || i == 0))
order.flags |= OF_FULL_LOAD;
DoCommandByTile(0, loco_id + (i << 16), PackOrder(&order), DC_EXEC, CMD_INSERT_ORDER);
DoCommandByTile(0, loco_id + (i << 16), flags, DC_EXEC, CMD_INSERT_ORDER);
}
DoCommandByTile(0, loco_id, 0, DC_EXEC, CMD_START_STOP_TRAIN);
@@ -2481,24 +2471,16 @@ static void AiStateDeleteRailBlocks(Player *p)
static bool AiCheckRoadResources(TileIndex tile, const AiDefaultBlockData *p, byte cargo)
{
uint values[NUM_CARGO];
int rad;
if (_patches.modified_catchment) {
rad = CA_TRUCK; //Same as CA_BUS at the moment?
} else { //change that at some point?
rad = 4;
}
for(;;p++) {
if (p->mode == 4) {
return true;
} else if (p->mode == 1) {
uint tile2 = TILE_ADD(tile, p->tileoffs);
if (cargo & 0x80) {
GetProductionAroundTiles(values, tile2, 1, 1, rad);
GetProductionAroundTiles(values, tile2, 1, 1);
return values[cargo & 0x7F] != 0;
} else {
GetAcceptanceAroundTiles(values, tile2, 1, 1, rad);
GetAcceptanceAroundTiles(values, tile2, 1, 1);
return (values[cargo]&~7) != 0;
}
}
@@ -2790,7 +2772,7 @@ static const uint16 _ai_road_table_and[4] = {
0x2A00,
};
static bool AiCheckRoadFinished(Player *p)
bool AiCheckRoadFinished(Player *p)
{
AiRoadEnum are;
uint tile;
@@ -2837,7 +2819,7 @@ static bool AiBuildRoadHelper(uint tile, int flags, int type)
return DoCommandByTile(tile, _road_bits[type], 0, flags, CMD_BUILD_ROAD) != CMD_ERROR;
}
static inline void AiCheckBuildRoadBridgeHere(AiRoadFinder *arf, TileIndex tile, const byte *p)
static void FORCEINLINE AiCheckBuildRoadBridgeHere(AiRoadFinder *arf, TileIndex tile, const byte *p)
{
TileIndex tile_new;
bool flag;
@@ -2877,7 +2859,7 @@ static inline void AiCheckBuildRoadBridgeHere(AiRoadFinder *arf, TileIndex tile,
}
}
static inline void AiCheckBuildRoadTunnelHere(AiRoadFinder *arf, TileIndex tile, const byte *p)
static void FORCEINLINE AiCheckBuildRoadTunnelHere(AiRoadFinder *arf, TileIndex tile, const byte *p)
{
FindLandscapeHeightByTile(&arf->ti, tile);
@@ -3186,20 +3168,15 @@ static void AiStateBuildRoadVehicles(Player *p)
for(i=0; p->ai.order_list_blocks[i] != 0xFF; i++) {
AiBuildRec *aib = (&p->ai.src) + p->ai.order_list_blocks[i];
uint flags = (AiGetStationIdFromRoadBlock(aib->use_tile, aib->cur_building_rule) << 8) + OT_GOTO_STATION;
bool is_pass = (p->ai.cargo_type == CT_PASSENGERS ||
p->ai.cargo_type == CT_MAIL ||
(_opt.landscape==LT_NORMAL && p->ai.cargo_type == CT_VALUABLES));
Order order;
order.type = OT_GOTO_STATION;
order.flags = 0;
order.station = AiGetStationIdFromRoadBlock(aib->use_tile, aib->cur_building_rule);
if (!is_pass && i == 1) flags |= OF_UNLOAD;
if (p->ai.num_want_fullload != 0 && (is_pass || i == 0)) flags |= OF_FULL_LOAD;
if (!is_pass && i == 1) order.flags |= OF_UNLOAD;
if (p->ai.num_want_fullload != 0 && (is_pass || i == 0))
order.flags |= OF_FULL_LOAD;
DoCommandByTile(0, loco_id + (i << 16), PackOrder(&order), DC_EXEC, CMD_INSERT_ORDER);
DoCommandByTile(0, loco_id + (i << 16), flags, DC_EXEC, CMD_INSERT_ORDER);
}
DoCommandByTile(0, loco_id, 0, DC_EXEC, CMD_START_STOP_ROADVEH);
@@ -3353,23 +3330,16 @@ static bool AiCheckAirportResources(TileIndex tile, const AiDefaultBlockData *p,
uint values[NUM_CARGO];
int w,h;
uint tile2;
int rad;
if (_patches.modified_catchment) {
rad = CA_AIR_LARGE; //I Have NFI what airport the
} else { //AI is going to build here
rad = 4;
}
for(;p->mode==0;p++) {
tile2 = TILE_ADD(tile, p->tileoffs);
w = _airport_size_x[p->attr];
h = _airport_size_y[p->attr];
if (cargo & 0x80) {
GetProductionAroundTiles(values, tile2, w, h, rad);
GetProductionAroundTiles(values, tile2, w, h);
return values[cargo & 0x7F] != 0;
} else {
GetAcceptanceAroundTiles(values, tile2, w, h, rad);
GetAcceptanceAroundTiles(values, tile2, w, h);
return values[cargo] >= 8;
}
}
@@ -3508,18 +3478,13 @@ static void AiStateBuildAircraftVehicles(Player *p)
for(i=0; p->ai.order_list_blocks[i] != 0xFF; i++) {
AiBuildRec *aib = (&p->ai.src) + p->ai.order_list_blocks[i];
uint flags = (AiGetStationIdFromAircraftBlock(aib->use_tile, aib->cur_building_rule) << 8) + OT_GOTO_STATION;
bool is_pass = (p->ai.cargo_type == CT_PASSENGERS || p->ai.cargo_type == CT_MAIL);
Order order;
order.type = OT_GOTO_STATION;
order.flags = 0;
order.station = AiGetStationIdFromAircraftBlock(aib->use_tile, aib->cur_building_rule);
if (!is_pass && i == 1) flags |= OF_UNLOAD;
if (p->ai.num_want_fullload != 0 && (is_pass || i == 0)) flags |= OF_FULL_LOAD;
if (!is_pass && i == 1) order.flags |= OF_UNLOAD;
if (p->ai.num_want_fullload != 0 && (is_pass || i == 0))
order.flags |= OF_FULL_LOAD;
DoCommandByTile(0, loco_id + (i << 16), PackOrder(&order), DC_EXEC, CMD_INSERT_ORDER);
DoCommandByTile(0, loco_id + (i << 16), flags, DC_EXEC, CMD_INSERT_ORDER);
}
DoCommandByTile(0, loco_id, 0, DC_EXEC, CMD_START_STOP_AIRCRAFT);
@@ -3560,7 +3525,7 @@ static void AiStateSellVeh(Player *p)
if (v->type == VEH_Train) {
if (!IsTrainDepotTile(v->tile) || v->u.rail.track != 0x80 || !(v->vehstatus&VS_STOPPED)) {
if (v->current_order.type != OT_GOTO_DEPOT)
if ((v->next_order & OT_MASK) != OT_GOTO_DEPOT)
DoCommandByTile(0, v->index, 0, DC_EXEC, CMD_TRAIN_GOTO_DEPOT);
goto going_to_depot;
}
@@ -3570,7 +3535,7 @@ static void AiStateSellVeh(Player *p)
} else if (v->type == VEH_Road) {
if (!IsRoadDepotTile(v->tile) || v->u.road.state != 254 || !(v->vehstatus&VS_STOPPED)) {
if (v->current_order.type != OT_GOTO_DEPOT)
if ((v->next_order & OT_MASK) != OT_GOTO_DEPOT)
DoCommandByTile(0, v->index, 0, DC_EXEC, CMD_SEND_ROADVEH_TO_DEPOT);
goto going_to_depot;
}
@@ -3578,7 +3543,7 @@ static void AiStateSellVeh(Player *p)
DoCommandByTile(0, v->index, 0, DC_EXEC, CMD_SELL_ROAD_VEH);
} else if (v->type == VEH_Aircraft) {
if (!IsAircraftHangarTile(v->tile) && !(v->vehstatus&VS_STOPPED)) {
if (v->current_order.type != OT_GOTO_DEPOT)
if ((v->next_order & OT_MASK) != OT_GOTO_DEPOT)
DoCommandByTile(0, v->index, 0, DC_EXEC, CMD_SEND_AIRCRAFT_TO_HANGAR);
goto going_to_depot;
}
@@ -3595,9 +3560,8 @@ going_to_depot:;
if (++p->ai.state_counter <= 832)
return;
if (v->current_order.type == OT_GOTO_DEPOT) {
v->current_order.type = OT_DUMMY;
v->current_order.flags = 0;
if ((v->next_order&OT_MASK) == OT_GOTO_DEPOT) {
v->next_order = OT_DUMMY;
InvalidateWindow(WC_VEHICLE_VIEW, v->index);
}
return_to_loop:;
@@ -3608,7 +3572,7 @@ static void AiStateRemoveStation(Player *p)
{
// Remove stations that aren't in use by any vehicle
byte in_use[256], *used;
Order *ord;
uint16 *ord;
Station *st;
uint tile;
@@ -3617,9 +3581,9 @@ static void AiStateRemoveStation(Player *p)
// Get a list of all stations that are in use by a vehicle
memset(in_use, 0, sizeof(in_use));
for (ord = _order_array; ord != _ptr_to_next_order; ++ord) {
if (ord->type == OT_GOTO_STATION)
in_use[ord->station] = 1;
for(ord=_order_array; ord != _ptr_to_next_order; ord++) {
if ((*ord & OT_MASK) == OT_GOTO_STATION)
in_use[*ord >> 8] = 1;
}
// Go through all stations and delete those that aren't in use

View File

@@ -1,6 +1,5 @@
#include "stdafx.h"
#include "ttd.h"
#include "map.h"
#include "command.h"
#include "ai.h"
#include "engine.h"

View File

@@ -15,8 +15,6 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "map.h"
#include "command.h"
#include "ai.h"
#include "town.h"
@@ -498,18 +496,17 @@ static void AiNew_State_LocateRoute(Player *p) {
static bool AiNew_CheckVehicleStation(Player *p, Station *st) {
int count = 0;
Vehicle *v;
uint16 *sched;
uint16 ord;
// Also check if we don't have already a lot of busses to this city...
FOR_ALL_VEHICLES(v) {
if (v->owner == _current_player) {
const Order *sched = v->schedule_ptr;
if (sched != NULL) {
for (; sched->type != OT_NOTHING; ++sched) {
if (sched->type == OT_GOTO_STATION &&
DEREF_STATION(sched->station) == st) {
// This vehicle has this city in his list
count++;
}
sched = v->schedule_ptr;
while (sched != NULL && (ord=*sched++) != 0) {
if ((ord & OT_MASK) == OT_GOTO_STATION && DEREF_STATION(ord >> 8) == st) {
// This vehicle has this city in his list
count++;
}
}
}
@@ -519,6 +516,9 @@ static bool AiNew_CheckVehicleStation(Player *p, Station *st) {
return true;
}
extern const byte _roadveh_speed[88];
extern const byte _roadveh_capacity[88];
// This function finds a good spot for a station
static void AiNew_State_FindStation(Player *p) {
TileIndex tile;
@@ -570,7 +570,7 @@ static void AiNew_State_FindStation(Player *p) {
if (p->ainew.tbt == AI_BUS && (FACIL_BUS_STOP & st->facilities) == FACIL_BUS_STOP) {
if (st->town == town) {
// Check how much cargo there is left in the station
if ((st->goods[p->ainew.cargo].waiting_acceptance & 0xFFF) > RoadVehInfo(i)->capacity * AI_STATION_REUSE_MULTIPLER) {
if ((st->goods[p->ainew.cargo].waiting_acceptance & 0xFFF) > _roadveh_capacity[i-ROAD_ENGINES_INDEX] * AI_STATION_REUSE_MULTIPLER) {
if (AiNew_CheckVehicleStation(p, st)) {
// We did found a station that was good enough!
new_tile = st->xy;
@@ -612,8 +612,7 @@ static void AiNew_State_FindStation(Player *p) {
if (IS_TILETYPE(new_tile, MP_CLEAR) || IS_TILETYPE(new_tile, MP_TREES)) {
// This tile we can build on!
// Check acceptance
// XXX - Get the catchment area
GetAcceptanceAroundTiles(accepts, new_tile, 1, 1, 4);
GetAcceptanceAroundTiles(accepts, new_tile, 1, 1);
// >> 3 == 0 means no cargo
if (accepts[p->ainew.cargo] >> 3 == 0) continue;
// See if we can build the station
@@ -830,10 +829,11 @@ static int AiNew_HowManyVehicles(Player *p) {
// Passenger run.. how long is the route?
length = p->ainew.path_info.route_length;
// Calculating tiles a day a vehicle moves is not easy.. this is how it must be done!
tiles_a_day = RoadVehInfo(i)->max_speed * DAY_TICKS / 256 / 16;
// ROAD_ENGINES_INDEX is because the first roadveh engine is ROAD_ENGINES_INDEX, and _roadveh_speed starts from 0
tiles_a_day = _roadveh_speed[i-ROAD_ENGINES_INDEX] * DAY_TICKS / 256 / 16;
// We want a vehicle in a station once a month at least, so, calculate it!
// (the * 2 is because we have 2 stations ;))
amount = length * 2 * 2 / tiles_a_day / 30;
amount = ((int)(((float)length / (float)tiles_a_day / 30 * 2))) * 2;
if (amount == 0) amount = 1;
return amount;
} else if (p->ainew.tbt == AI_TRUCK) {
@@ -845,7 +845,8 @@ static int AiNew_HowManyVehicles(Player *p) {
// Passenger run.. how long is the route?
length = p->ainew.path_info.route_length;
// Calculating tiles a day a vehicle moves is not easy.. this is how it must be done!
tiles_a_day = RoadVehInfo(i)->max_speed * DAY_TICKS / 256 / 16;
// ROAD_ENGINES_INDEX is because the first roadveh engine is ROAD_ENGINES_INDEX, and _roadveh_speed starts from 0
tiles_a_day = _roadveh_speed[i-ROAD_ENGINES_INDEX] * DAY_TICKS / 256 / 16;
if (p->ainew.from_deliver)
max_cargo = DEREF_INDUSTRY(p->ainew.from_ic)->total_production[0];
else
@@ -856,7 +857,7 @@ static int AiNew_HowManyVehicles(Player *p) {
// We want all the cargo to be gone in a month.. so, we know the cargo it delivers
// we know what the vehicle takes with him, and we know the time it takes him
// to get back here.. now let's do some math!
amount = 2 * length * max_cargo / tiles_a_day / 30 / RoadVehInfo(i)->capacity;
amount = (int)(((float)length / (float)tiles_a_day / 30 * 2) * ((float)max_cargo / (float)_roadveh_capacity[i-ROAD_ENGINES_INDEX]));
amount += 1;
return amount;
} else {
@@ -1116,9 +1117,7 @@ static void AiNew_State_BuildVehicle(Player *p) {
// Put the stations in the order list
static void AiNew_State_GiveOrders(Player *p) {
int idx;
Order order;
int order, flags;
assert(p->ainew.state == AI_STATE_GIVE_ORDERS);
if (p->ainew.veh_main_id != (VehicleID)-1) {
@@ -1135,29 +1134,23 @@ static void AiNew_State_GiveOrders(Player *p) {
}
// When more then 1 vehicle, we send them to different directions
idx = 0;
order.type = OT_GOTO_STATION;
order.flags = 0;
order.station = _map2[p->ainew.from_tile];
order = 0;
flags = (_map2[p->ainew.from_tile] << 8) | OT_GOTO_STATION;
if (p->ainew.tbt == AI_TRUCK && p->ainew.from_deliver)
order.flags |= OF_FULL_LOAD;
DoCommandByTile(0, p->ainew.veh_id + (idx << 16), PackOrder(&order), DC_EXEC, CMD_INSERT_ORDER);
flags |= OF_FULL_LOAD;
DoCommandByTile(0, p->ainew.veh_id + (order << 16), flags, DC_EXEC, CMD_INSERT_ORDER);
idx = 1;
order.type = OT_GOTO_STATION;
order.flags = 0;
order.station = _map2[p->ainew.to_tile];
order = 1;
flags = (_map2[p->ainew.to_tile] << 8) | OT_GOTO_STATION;
if (p->ainew.tbt == AI_TRUCK && p->ainew.to_deliver)
order.flags |= OF_FULL_LOAD;
DoCommandByTile(0, p->ainew.veh_id + (idx << 16), PackOrder(&order), DC_EXEC, CMD_INSERT_ORDER);
flags |= OF_FULL_LOAD;
DoCommandByTile(0, p->ainew.veh_id + (order << 16), flags, DC_EXEC, CMD_INSERT_ORDER);
// Very handy for AI, goto depot.. but yeah, it needs to be activated ;)
if (_patches.gotodepot) {
idx = 2;
order.type = OT_GOTO_DEPOT;
order.flags = OF_UNLOAD;
order.station = GetDepotByTile(p->ainew.depot_tile);
DoCommandByTile(0, p->ainew.veh_id + (idx << 16), PackOrder(&order), DC_EXEC, CMD_INSERT_ORDER);
order = 2;
flags = (GetDepotByTile(p->ainew.depot_tile) << 8) | OT_GOTO_DEPOT | OF_UNLOAD;
DoCommandByTile(0, p->ainew.veh_id + (order << 16), flags, DC_EXEC, CMD_INSERT_ORDER);
}
// Start the engines!

View File

@@ -1,6 +1,5 @@
#include "stdafx.h"
#include "ttd.h"
#include "map.h"
#include "command.h"
#include "ai.h"

View File

@@ -1,6 +1,5 @@
#include "stdafx.h"
#include "ttd.h"
#include "map.h"
#include "ai.h"
#include "vehicle.h"

View File

@@ -1,14 +1,11 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "map.h"
#include "vehicle.h"
#include "engine.h"
#include "command.h"
#include "station.h"
#include "news.h"
#include "gfx.h"
#include "sound.h"
#include "player.h"
#include "airport.h"
@@ -36,49 +33,123 @@ int GetAircraftImage(Vehicle *v, byte direction)
{
int spritenum = v->spritenum;
#ifdef AIRCRAFT_CUSTOM_SPRITES // TODO --pasky
if (is_custom_sprite(spritenum)) {
int sprite = GetCustomVehicleSprite(v, direction);
if (sprite) return sprite;
spritenum = _engine_original_sprites[v->engine_type];
}
#endif
return direction + _aircraft_sprite[spritenum];
}
const byte _aircraft_cost_table[NUM_AIRCRAFT_ENGINES] = {
14, 15, 16, 75, 15, 18, 17, 18,
19, 20, 16, 18, 17, 30, 18, 19,
27, 25, 20, 19, 18, 26, 16, 17,
16, 16, 17, 18, 20, 21, 19, 24,
80, 13, 18, 25, 32, 80, 15, 17,
15
};
const byte _aircraft_speed[NUM_AIRCRAFT_ENGINES] = {
37, 37, 74, 181, 37, 74, 74, 74,
74, 74, 74, 74, 74, 74, 74, 74,
74, 74, 74, 74, 74, 74, 74, 74,
74, 74, 74, 74, 74, 74, 181, 74,
181, 37, 37, 74, 74, 181, 25, 40,
25
};
const byte _aircraft_running_cost[NUM_AIRCRAFT_ENGINES] = {
85, 100, 130, 250, 98, 240, 150, 245,
192, 190, 135, 240, 155, 253, 210, 220,
230, 225, 235, 220, 170, 210, 125, 145,
130, 149, 170, 210, 230, 220, 160, 248,
251, 85, 100, 140, 220, 255, 81, 77,
80
};
const byte _aircraft_num_mail[NUM_AIRCRAFT_ENGINES] = {
4, 8, 10, 20, 6, 30, 15, 30,
40, 25, 10, 35, 15, 50, 25, 25,
40, 35, 30, 25, 20, 20, 10, 10,
10, 10, 18, 25, 60, 65, 45, 80,
45, 5, 9, 12, 40, 30, 15, 20,
10
};
const uint16 _aircraft_num_pass[NUM_AIRCRAFT_ENGINES] = {
25, 65, 90,100, 30,200,100,150,
220,230, 95,170,110,300,200,240,
260,240,260,210,160,220, 80, 85,
75, 85, 65,110,180,150, 85,400,
130, 25, 60, 90,200,100, 40, 55,
40
};
const byte _aircraft_sounds[NUM_AIRCRAFT_ENGINES] = {
6, 6, 7, 59, 6, 7, 7, 7,
7, 7, 7, 7, 7, 61, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 61,
59, 69, 70, 7, 61, 59, 7, 7,
7
};
const byte _aircraft_table_3[NUM_AIRCRAFT_ENGINES] = {
1, 0, 2, 8, 5, 6, 2, 2,
3, 3, 2, 2, 4, 7, 4, 4,
4, 3, 4, 4, 4, 4, 6, 2,
11, 10, 15, 12, 13, 14, 16, 17,
18, 20, 21, 22, 23, 24, 9, 19,
25
};
// &1 = regular aircraft
// &2 = crashes easily on small airports
const byte _aircraft_subtype[NUM_AIRCRAFT_ENGINES] = {
1, 1, 3, 3, 1, 3, 1, 3,
3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 1, 1,
3, 3, 3, 3, 3, 3, 3, 3,
3, 1, 1, 1, 3, 3, 0, 0,
0
};
const byte _aircraft_acceleration[NUM_AIRCRAFT_ENGINES] = {
18, 20, 35, 50, 20, 40, 35, 40,
40, 40, 35, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 50, 40,
40, 40, 40, 40, 40, 40, 40, 40,
50, 18, 20, 40, 40, 50, 20, 20,
20,
};
void DrawAircraftEngine(int x, int y, int engine, uint32 image_ormod)
{
int spritenum = AircraftVehInfo(engine)->image_index;
DrawSprite((6 + _aircraft_sprite[_aircraft_table_3[engine - AIRCRAFT_ENGINES_INDEX]]) | image_ormod, x, y);
if (is_custom_sprite(spritenum)) {
int sprite = GetCustomVehicleIcon(engine, 6);
if (sprite) {
DrawSprite(sprite | image_ormod, x, y);
return;
}
spritenum = _engine_original_sprites[engine];
}
DrawSprite((6 + _aircraft_sprite[spritenum]) | image_ormod, x, y);
if ((AircraftVehInfo(engine)->subtype & 1) == 0)
if ((_aircraft_subtype[engine - AIRCRAFT_ENGINES_INDEX]&1) == 0)
DrawSprite(0xF3D, x, y-5);
}
void DrawAircraftEngineInfo(int engine, int x, int y, int maxw)
{
const AircraftVehicleInfo *avi = AircraftVehInfo(engine);
SetDParam(0, ((_price.aircraft_base >> 3) * avi->base_cost) >> 5);
SetDParam(1, avi->max_speed << 3);
SetDParam(2, avi->passanger_capacity);
SetDParam(3, avi->mail_capacity);
SetDParam(4, avi->running_cost * _price.aircraft_running >> 8);
engine -= AIRCRAFT_ENGINES_INDEX;
SET_DPARAM32(0, ((_price.aircraft_base >> 3) * _aircraft_cost_table[engine]) >> 5);
SET_DPARAM16(1, _aircraft_speed[engine] << 3);
SET_DPARAM16(2, _aircraft_num_pass[engine]);
SET_DPARAM16(3, _aircraft_num_mail[engine]);
SET_DPARAM32(4, _aircraft_running_cost[engine] * _price.aircraft_running >> 8);
DrawStringMultiCenter(x, y, STR_A02E_COST_MAX_SPEED_CAPACITY, maxw);
}
/* Allocate many vehicles */
static bool AllocateVehicles(Vehicle **vl, int num)
bool AllocateVehicles(Vehicle **vl, int num)
{
int i;
Vehicle *v;
@@ -102,7 +173,7 @@ static bool AllocateVehicles(Vehicle **vl, int num)
static int32 EstimateAircraftCost(uint16 engine_type)
{
return AircraftVehInfo(engine_type)->base_cost * (_price.aircraft_base>>3)>>5;
return _aircraft_cost_table[engine_type - AIRCRAFT_ENGINES_INDEX] * (_price.aircraft_base>>3)>>5;
}
@@ -113,7 +184,6 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
Vehicle *vl[3], *v, *u, *w;
byte unit_num;
uint tile = TILE_FROM_XY(x,y);
const AircraftVehicleInfo *avi = AircraftVehInfo(p1);
Engine *e;
SET_EXPENSES_TYPE(EXPENSES_NEW_VEHICLES);
@@ -124,7 +194,7 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
return value;
// allocate 2 or 3 vehicle structs, depending on type
if (!AllocateVehicles(vl, (avi->subtype & 1) == 0 ? 3 : 2) ||
if (!AllocateVehicles(vl, (_aircraft_subtype[p1 - AIRCRAFT_ENGINES_INDEX]&1) == 0 ? 3 : 2) ||
_ptr_to_next_order >= endof(_order_array))
return_cmd_error(STR_00E1_TOO_MANY_VEHICLES_IN_GAME);
@@ -166,11 +236,11 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
v->vehstatus = VS_HIDDEN | VS_STOPPED | VS_DEFPAL;
u->vehstatus = VS_HIDDEN | VS_UNCLICKABLE | VS_DISASTER;
v->spritenum = avi->image_index;
v->spritenum = _aircraft_table_3[p1 - AIRCRAFT_ENGINES_INDEX];
// v->cargo_count = u->number_of_pieces = 0;
v->cargo_cap = avi->passanger_capacity;
u->cargo_cap = avi->mail_capacity;
v->cargo_cap = _aircraft_num_pass[p1 - AIRCRAFT_ENGINES_INDEX];
u->cargo_cap = _aircraft_num_mail[p1 - AIRCRAFT_ENGINES_INDEX];
v->cargo_type = CT_PASSENGERS;
u->cargo_type = CT_MAIL;
@@ -183,11 +253,11 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
v->last_station_visited = 0xFF;
// v->destination_coords = 0;
v->max_speed = avi->max_speed;
v->acceleration = avi->acceleration;
v->max_speed = _aircraft_speed[p1 - AIRCRAFT_ENGINES_INDEX];
v->acceleration = _aircraft_acceleration[p1 - AIRCRAFT_ENGINES_INDEX];
v->engine_type = (byte)p1;
v->subtype = (avi->subtype & 1) == 0 ? 0 : 2;
v->subtype = (_aircraft_subtype[p1 - AIRCRAFT_ENGINES_INDEX]&1) == 0 ? 0 : 2;
v->value = value;
u->subtype = 4;
@@ -199,9 +269,7 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
_new_aircraft_id = v->index;
_ptr_to_next_order->type = OT_NOTHING;
_ptr_to_next_order->flags = 0;
v->schedule_ptr = _ptr_to_next_order++;
*(v->schedule_ptr = _ptr_to_next_order++) = 0;
// the AI doesn't click on a tile to build airplanes, so the below code will
// never work. Therefore just assume the AI's planes always come from Hangar0
// On hold for NewAI
@@ -218,7 +286,8 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
byte i = 0;
st = DEREF_STATION(_map2[tile]);
Airport = GetAirport(st->airport_type);
for (cur_depot = Airport->airport_depots; i != Airport->nof_depots; cur_depot++) {
// first element of depot array contains #of depots on the airport
for (cur_depot=&Airport->airport_depots[1]; i != Airport->airport_depots[0]; cur_depot++) {
if ((uint)(st->airport_tile + *cur_depot) == tile) {
assert(Airport->layout[i].heading == HANGAR);
v->u.air.pos = Airport->layout[i].position;
@@ -267,7 +336,8 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
}
InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
RebuildVehicleLists();
_vehicle_sort_dirty[VEHAIRCRAFT] = true; // build aircraft
InvalidateWindow(WC_AIRCRAFT_LIST, v->owner);
InvalidateWindow(WC_COMPANY, v->owner);
}
@@ -295,10 +365,11 @@ static bool CheckStoppedInHangar(Vehicle *v)
}
static void DoDeleteAircraft(Vehicle *v)
void DoDeleteAircraft(Vehicle *v)
{
DeleteWindowById(WC_VEHICLE_VIEW, v->index);
RebuildVehicleLists();
_vehicle_sort_dirty[VEHAIRCRAFT] = true; // delete aircraft
InvalidateWindow(WC_AIRCRAFT_LIST, v->owner);
InvalidateWindow(WC_COMPANY, v->owner);
DeleteVehicleChain(v);
}
@@ -343,7 +414,7 @@ int32 CmdStartStopAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
if (flags & DC_EXEC) {
v->vehstatus ^= VS_STOPPED;
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, 4);
InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
}
@@ -361,12 +432,12 @@ int32 CmdSendAircraftToHangar(int x, int y, uint32 flags, uint32 p1, uint32 p2)
if (!CheckOwnership(v->owner))
return CMD_ERROR;
if (v->current_order.type == OT_GOTO_DEPOT) {
if ((v->next_order&OT_MASK) == OT_GOTO_DEPOT) {
if (flags & DC_EXEC) {
if (v->current_order.flags & OF_UNLOAD) v->cur_order_index++;
v->current_order.type = OT_DUMMY;
v->current_order.flags = 0;
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
if (v->next_order&OF_UNLOAD)
{ v->cur_order_index++; }
v->next_order = OT_DUMMY;
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, 4);
}
} else {
st = DEREF_STATION(v->u.air.targetairport);
@@ -376,10 +447,9 @@ int32 CmdSendAircraftToHangar(int x, int y, uint32 flags, uint32 p1, uint32 p2)
return CMD_ERROR;
if (flags & DC_EXEC) {
v->current_order.type = OT_GOTO_DEPOT;
v->current_order.flags = OF_NON_STOP | OF_FULL_LOAD;
v->current_order.station = v->u.air.targetairport;
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
v->next_order = OF_NON_STOP | OF_FULL_LOAD | OT_GOTO_DEPOT;
v->next_order_param = v->u.air.targetairport;
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, 4);
}
}
@@ -419,7 +489,7 @@ int32 CmdRefitAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
if (!CheckOwnership(v->owner) || !CheckStoppedInHangar(v))
return CMD_ERROR;
pass = AircraftVehInfo(v->engine_type)->passanger_capacity;
pass = _aircraft_num_pass[v->engine_type - AIRCRAFT_ENGINES_INDEX];
if (p2 != 0) {
pass >>= 1;
if (p2 != 5)
@@ -436,7 +506,7 @@ int32 CmdRefitAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
v->cargo_cap = pass;
u = v->next;
mail = AircraftVehInfo(v->engine_type)->mail_capacity;
mail = _aircraft_num_mail[v->engine_type - AIRCRAFT_ENGINES_INDEX];
if (p2 != 0) {
mail = 0;
}
@@ -461,31 +531,28 @@ static void CheckIfAircraftNeedsService(Vehicle *v)
if (_patches.servint_aircraft == 0)
return;
if (!VehicleNeedsService(v))
if (SERVICE_INTERVAL)
return;
if (v->vehstatus & VS_STOPPED)
return;
if (v->current_order.type == OT_GOTO_DEPOT &&
v->current_order.flags & OF_FULL_LOAD)
if ((v->next_order & (OT_MASK | OF_FULL_LOAD)) == (OT_GOTO_DEPOT | OF_FULL_LOAD))
return;
if (_patches.gotodepot && ScheduleHasDepotOrders(v->schedule_ptr))
return;
st = DEREF_STATION(v->current_order.station);
st = DEREF_STATION(v->next_order_param);
// only goto depot if the target airport has terminals (eg. it is airport)
if (st->xy != 0 && st->airport_tile != 0 && GetAirport(st->airport_type)->nofterminals != 0) {
// printf("targetairport = %d, st->index = %d\n", v->u.air.targetairport, st->index);
// v->u.air.targetairport = st->index;
v->current_order.type = OT_GOTO_DEPOT;
v->current_order.flags = OF_NON_STOP;
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
} else if (v->current_order.type == OT_GOTO_DEPOT) {
v->current_order.type = OT_DUMMY;
v->current_order.flags = 0;
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
v->next_order = OF_NON_STOP | OT_GOTO_DEPOT;
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, 4);
} else if ((v->next_order & OT_MASK) == OT_GOTO_DEPOT) {
v->next_order = OT_DUMMY;
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, 4);
}
}
@@ -508,7 +575,7 @@ void OnNewDay_Aircraft(Vehicle *v)
if (v->vehstatus & VS_STOPPED)
return;
cost = AircraftVehInfo(v->engine_type)->running_cost * _price.aircraft_running / 364;
cost = _aircraft_running_cost[v->engine_type - AIRCRAFT_ENGINES_INDEX] * _price.aircraft_running / 364;
v->profit_this_year -= cost >> 8;
@@ -556,7 +623,7 @@ static void HelicopterTickHandler(Vehicle *v)
// if true, helicopter rotors do not rotate. This should only be the case if a helicopter is
// loading/unloading at a terminal or stopped
if (v->current_order.type == OT_LOADING || (v->vehstatus & VS_STOPPED)) {
if ((v->next_order&OT_MASK) == OT_LOADING || (v->vehstatus&VS_STOPPED)) {
if (u->cur_speed != 0) {
u->cur_speed++;
if (u->cur_speed >= 0x80 && u->cur_image == 0xF40) {
@@ -650,13 +717,15 @@ static void ServiceAircraft(Vehicle *v)
SetAircraftPosition(v, v->x_pos, v->y_pos, v->z_pos);
InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
VehicleServiceInDepot(v);
v->date_of_last_service = _date;
v->breakdowns_since_last_service = 0;
v->reliability = _engines[v->engine_type].reliability;
InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
}
static void PlayAircraftSound(Vehicle *v)
{
SndPlayVehicleFx(AircraftVehInfo(v->engine_type)->sfx, v);
SndPlayVehicleFx(_aircraft_sounds[v->engine_type - AIRCRAFT_ENGINES_INDEX], v);
}
static bool UpdateAircraftSpeed(Vehicle *v)
@@ -674,7 +743,7 @@ static bool UpdateAircraftSpeed(Vehicle *v)
if (spd != v->cur_speed) {
v->cur_speed = spd;
if (_patches.vehicle_speed)
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, 4);
}
if (!(v->direction & 1)) {
@@ -736,7 +805,7 @@ static bool Aircraft_5(Vehicle *v)
if (u->cur_speed > 32) {
v->cur_speed = 0;
if (--u->cur_speed == 32) {
SndPlayVehicleFx(SND_18_HELICOPTER, v);
SndPlayVehicleFx(0x16, v);
}
} else {
u->cur_speed = 32;
@@ -985,19 +1054,16 @@ static void HandleAircraftSmoke(Vehicle *v)
static void ProcessAircraftOrder(Vehicle *v)
{
Order order;
uint order;
// OT_GOTO_DEPOT, OT_LOADING
if (v->current_order.type >= OT_GOTO_DEPOT &&
v->current_order.type <= OT_LOADING) {
if (v->current_order.type != OT_GOTO_DEPOT ||
!(v->current_order.flags & OF_UNLOAD))
if ((v->next_order & OT_MASK) >= OT_GOTO_DEPOT && (v->next_order & OT_MASK) <= OT_LOADING) {
if ((v->next_order & (OT_MASK|OF_UNLOAD)) != (OT_GOTO_DEPOT|OF_UNLOAD))
return;
}
if (v->current_order.type == OT_GOTO_DEPOT &&
(v->current_order.flags & (OF_UNLOAD | OF_FULL_LOAD)) == (OF_UNLOAD | OF_FULL_LOAD) &&
!VehicleNeedsService(v)) {
if ((v->next_order & (OT_MASK|OF_UNLOAD|OF_FULL_LOAD)) == (OT_GOTO_DEPOT|OF_UNLOAD|OF_FULL_LOAD) &&
SERVICE_INTERVAL) {
v->cur_order_index++;
}
@@ -1006,23 +1072,21 @@ static void ProcessAircraftOrder(Vehicle *v)
order = v->schedule_ptr[v->cur_order_index];
if (order.type == OT_NOTHING) {
v->current_order.type = OT_NOTHING;
v->current_order.flags = 0;
if (order == 0) {
v->next_order = OT_NOTHING;
return;
}
if (order.type == v->current_order.type &&
order.flags == v->current_order.flags &&
order.station == v->current_order.station)
if (order == (uint)((v->next_order | (v->next_order_param<<8))))
return;
v->current_order = order;
v->next_order = (byte)order;
v->next_order_param = (byte)(order >> 8);
// orders are changed in flight, ensure going to the right station
if (order.type == OT_GOTO_STATION && v->u.air.state == FLYING) {
if ((order & OT_MASK) == OT_GOTO_STATION && v->u.air.state == FLYING) {
AircraftNextAirportPos_and_Order(v);
v->u.air.targetairport = order.station;
v->u.air.targetairport = order >> 8;
}
InvalidateVehicleOrderWidget(v);
@@ -1030,11 +1094,11 @@ static void ProcessAircraftOrder(Vehicle *v)
static void HandleAircraftLoading(Vehicle *v, int mode)
{
if (v->current_order.type == OT_NOTHING)
if (v->next_order == OT_NOTHING)
return;
if (v->current_order.type != OT_DUMMY) {
if (v->current_order.type != OT_LOADING)
if (v->next_order != OT_DUMMY) {
if ((v->next_order&OT_MASK) != OT_LOADING)
return;
if (mode != 0)
@@ -1043,17 +1107,16 @@ static void HandleAircraftLoading(Vehicle *v, int mode)
if (--v->load_unload_time_rem)
return;
if (v->current_order.flags & OF_FULL_LOAD && CanFillVehicle(v)) {
if (v->next_order&OF_FULL_LOAD && CanFillVehicle(v)) {
SET_EXPENSES_TYPE(EXPENSES_AIRCRAFT_INC);
LoadUnloadVehicle(v);
return;
}
{
Order b = v->current_order;
v->current_order.type = OT_NOTHING;
v->current_order.flags = 0;
if (!(b.flags & OF_NON_STOP))
byte b = v->next_order;
v->next_order = OT_NOTHING;
if (!(b & OF_NON_STOP))
return;
}
}
@@ -1072,7 +1135,7 @@ static void MaybeCrashAirplane(Vehicle *v)
//FIXME -- MaybeCrashAirplane -> increase crashing chances of very modern airplanes on smaller than AT_METROPOLITAN airports
prob = 0x10000 / 1500;
if (st->airport_type == AT_SMALL && (AircraftVehInfo(v->engine_type)->subtype & 2) && !_cheats.no_jetcrash.value) {
if (st->airport_type == AT_SMALL && (_aircraft_subtype[v->engine_type - AIRCRAFT_ENGINES_INDEX]&2) && !_cheats.no_jetcrash.value) {
prob = 0x10000 / 20;
}
@@ -1094,28 +1157,28 @@ static void MaybeCrashAirplane(Vehicle *v)
amt = 2;
if (v->cargo_type == CT_PASSENGERS) amt += v->cargo_count;
SetDParam(0, amt);
SET_DPARAM16(0, amt);
v->cargo_count = 0;
v->next->cargo_count = 0,
SetDParam(1, st->index);
SET_DPARAM16(1, st->index);
AddNewsItem(STR_A034_PLANE_CRASH_DIE_IN_FIREBALL,
NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_VEHICLE, NT_ACCIDENT, 0),
v->index,
0);
ModifyStationRatingAround(TILE_FROM_XY(v->x_pos, v->y_pos), v->owner, -160, 30);
SndPlayVehicleFx(SND_12_EXPLOSION, v);
SndPlayVehicleFx(16, v);
}
// we've landed and just arrived at a terminal
static void AircraftEntersTerminal(Vehicle *v)
{
Station *st;
Order old_order;
byte old_order;
if (v->current_order.type == OT_GOTO_DEPOT)
if ((v->next_order & OT_MASK) == OT_GOTO_DEPOT)
return;
st = DEREF_STATION(v->u.air.targetairport);
@@ -1126,7 +1189,7 @@ static void AircraftEntersTerminal(Vehicle *v)
uint32 flags;
st->had_vehicle_of_type |= HVOT_AIRCRAFT;
SetDParam(0, st->index);
SET_DPARAM16(0, st->index);
// show newsitem of celebrating citizens
flags = (v->owner == _local_player) ? NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_VEHICLE, NT_ARRIVAL_PLAYER, 0) : NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_VEHICLE, NT_ARRIVAL_OTHER, 0);
AddNewsItem(
@@ -1136,45 +1199,40 @@ static void AircraftEntersTerminal(Vehicle *v)
0);
}
old_order = v->current_order;
v->current_order.type = OT_LOADING;
v->current_order.flags = 0;
old_order = v->next_order;
v->next_order = OT_LOADING;
if (old_order.type == OT_GOTO_STATION &&
v->current_order.station == v->last_station_visited) {
v->current_order.flags =
(old_order.flags & (OF_FULL_LOAD | OF_UNLOAD)) | OF_NON_STOP;
if ((old_order & OT_MASK) == OT_GOTO_STATION &&
v->next_order_param == v->last_station_visited) {
v->next_order = OT_LOADING | (old_order & (OF_UNLOAD|OF_FULL_LOAD)) | OF_NON_STOP;
}
SET_EXPENSES_TYPE(EXPENSES_AIRCRAFT_INC);
LoadUnloadVehicle(v);
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, 4);
}
static void AircraftEnterHangar(Vehicle *v)
{
Order old_order;
byte old_order;
ServiceAircraft(v);
MaybeRenewVehicle(v, EstimateAircraftCost(v->engine_type));
TriggerVehicle(v, VEHICLE_TRIGGER_DEPOT);
if (v->current_order.type == OT_GOTO_DEPOT) {
if ((v->next_order & OT_MASK) == OT_GOTO_DEPOT) {
InvalidateWindow(WC_VEHICLE_VIEW, v->index);
old_order = v->current_order;
v->current_order.type = OT_NOTHING;
v->current_order.flags = 0;
old_order = v->next_order;
v->next_order = OT_NOTHING;
if (old_order.flags & OF_UNLOAD) {
v->cur_order_index++;
} else if (old_order.flags & OF_FULL_LOAD) { // force depot visit
if (old_order & OF_UNLOAD) { v->cur_order_index++; }
else if (old_order & OF_FULL_LOAD) { // force depot visit
v->vehstatus |= VS_STOPPED;
if (v->owner == _local_player) {
SetDParam(0, v->unitnumber);
SET_DPARAM16(0, v->unitnumber);
AddNewsItem(
STR_A014_AIRCRAFT_IS_WAITING_IN,
NEWS_FLAGS(NM_SMALL, NF_VIEWPORT|NF_VEHICLE, NT_ADVICE, 0),
@@ -1193,7 +1251,7 @@ static void AircraftLand(Vehicle *v)
static void AircraftLandAirplane(Vehicle *v)
{
AircraftLand(v);
SndPlayVehicleFx(SND_17_SKID_PLANE, v);
SndPlayVehicleFx(0x15, v);
MaybeCrashAirplane(v);
}
@@ -1203,9 +1261,9 @@ static void AircraftNextAirportPos_and_Order(Vehicle *v)
Station *st;
const AirportFTAClass *Airport;
if (v->current_order.type == OT_GOTO_STATION ||
v->current_order.type == OT_GOTO_DEPOT)
v->u.air.targetairport = v->current_order.station;
if ((v->next_order&OT_MASK) == OT_GOTO_STATION ||
(v->next_order&OT_MASK) == OT_GOTO_DEPOT)
v->u.air.targetairport = v->next_order_param;
st = DEREF_STATION(v->u.air.targetairport);
Airport = GetAirport(st->airport_type);
@@ -1230,7 +1288,6 @@ static void AircraftLeaveHangar(Vehicle *v)
}
}
VehicleServiceInDepot(v);
SetAircraftPosition(v, v->x_pos, v->y_pos, v->z_pos);
InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
}
@@ -1260,22 +1317,19 @@ static void AircraftEventHandler_InHangar(Vehicle *v, const AirportFTAClass *Air
return;
}
// if we were sent to the depot, stay there
if (v->current_order.type == OT_GOTO_DEPOT && (v->vehstatus & VS_STOPPED)) {
v->current_order.type = OT_NOTHING;
v->current_order.flags = 0;
if ((v->next_order&OT_MASK) == OT_GOTO_DEPOT && (v->vehstatus&VS_STOPPED)) { // if we were sent to the depot, stay there
v->next_order = OT_NOTHING;
return;
}
if (v->current_order.type != OT_GOTO_STATION &&
v->current_order.type != OT_GOTO_DEPOT)
if ((v->next_order&OT_MASK) != OT_GOTO_STATION && (v->next_order&OT_MASK) != OT_GOTO_DEPOT)
return;
// if the block of the next position is busy, stay put
if (AirportHasBlock(v, &Airport->layout[v->u.air.pos], Airport)) {return;}
// We are already at the target airport, we need to find a terminal
if (v->current_order.station == v->u.air.targetairport) {
if (v->next_order_param == v->u.air.targetairport) {
// FindFreeTerminal:
// 1. Find a free terminal, 2. Occupy it, 3. Set the vehicle's state to that terminal
if (v->subtype != 0) {if(!AirportFindFreeTerminal(v, Airport)) {return;}} // airplane
@@ -1309,7 +1363,8 @@ static void AircraftEventHandler_AtTerminal(Vehicle *v, const AirportFTAClass *A
return;
}
if (v->current_order.type == OT_NOTHING) return;
// removed &0x1F
if (v->next_order == OT_NOTHING) {return;}
// if the block of the next position is busy, stay put
if (AirportHasBlock(v, &Airport->layout[v->u.air.pos], Airport)) {
@@ -1319,20 +1374,19 @@ static void AircraftEventHandler_AtTerminal(Vehicle *v, const AirportFTAClass *A
// airport-road is free. We either have to go to another airport, or to the hangar
// ---> start moving
switch (v->current_order.type) {
switch (v->next_order&OT_MASK) {
case OT_GOTO_STATION: // ready to fly to another airport
// airplane goto state takeoff, helicopter to helitakeoff
v->u.air.state = (v->subtype != 0) ? TAKEOFF : HELITAKEOFF;
break;
case OT_GOTO_DEPOT: // visit hangar for serivicing, sale, etc.
if (v->current_order.station == v->u.air.targetairport)
if (v->next_order_param == v->u.air.targetairport)
v->u.air.state = HANGAR;
else
v->u.air.state = (v->subtype != 0) ? TAKEOFF : HELITAKEOFF;
break;
default: // orders have been deleted (no orders), goto depot and don't bother us
v->current_order.type = OT_NOTHING;
v->current_order.flags = 0;
v->next_order = OT_NOTHING;
v->u.air.state = HANGAR;
}
AirportMove(v, Airport);
@@ -1438,7 +1492,7 @@ static void AircraftEventHandler_EndLanding(Vehicle *v, const AirportFTAClass *A
// 1. in case all terminals are busy AirportFindFreeTerminal() returns false or
// 2. not going for terminal (but depot, no order),
// --> get out of the way to the hangar.
if (v->current_order.type == OT_GOTO_STATION) {
if ((v->next_order&OT_MASK) == OT_GOTO_STATION) {
if (AirportFindFreeTerminal(v, Airport)) {return;}
}
v->u.air.state = HANGAR;
@@ -1457,7 +1511,7 @@ static void AircraftEventHandler_HeliEndLanding(Vehicle *v, const AirportFTAClas
// --> else TAKEOFF
// the reason behind this is that if an airport has a terminal, it also has a hangar. Airplanes
// must go to a hangar.
if (v->current_order.type == OT_GOTO_STATION) {
if ((v->next_order&OT_MASK) == OT_GOTO_STATION) {
if (AirportFindFreeHelipad(v, Airport)) {return;}
}
v->u.air.state = (Airport->nofterminals != 0) ? HANGAR : HELITAKEOFF;
@@ -1735,7 +1789,7 @@ static void AircraftEventHandler(Vehicle *v, int loop)
ProcessAircraftOrder(v);
HandleAircraftLoading(v, loop);
if (v->current_order.type >= OT_LOADING)
if ((v->next_order&OT_MASK) >= OT_LOADING)
return;
// pass the right airport structure to the functions

View File

@@ -1,7 +1,5 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "map.h"
#include "window.h"
#include "gui.h"
#include "vehicle.h"
@@ -12,6 +10,12 @@
#include "viewport.h"
#include "player.h"
extern const byte _aircraft_cost_table[NUM_AIRCRAFT_ENGINES];
extern const byte _aircraft_speed[NUM_AIRCRAFT_ENGINES];
extern const uint16 _aircraft_num_pass[NUM_AIRCRAFT_ENGINES];
extern const byte _aircraft_num_mail[NUM_AIRCRAFT_ENGINES];
extern const byte _aircraft_running_cost[NUM_AIRCRAFT_ENGINES];
static void DrawAircraftImage(Vehicle *v, int x, int y, VehicleID selection)
{
@@ -26,7 +30,7 @@ static void DrawAircraftImage(Vehicle *v, int x, int y, VehicleID selection)
}
}
void CcBuildAircraft(bool success, uint tile, uint32 p1, uint32 p2)
static void CcBuildAircraft(bool success, uint tile, uint32 p1, uint32 p2)
{
Vehicle *v;
@@ -89,20 +93,19 @@ static void NewAircraftWndProc(Window *w, WindowEvent *e)
WP(w,buildtrain_d).sel_engine = selected_id;
if (selected_id != -1) {
const AircraftVehicleInfo *avi = AircraftVehInfo(selected_id);
Engine *e;
SetDParam(0, avi->base_cost * (_price.aircraft_base>>3)>>5);
SetDParam(1, avi->max_speed * 8);
SetDParam(2, avi->passanger_capacity);
SetDParam(3, avi->mail_capacity);
SetDParam(4, avi->running_cost * _price.aircraft_running >> 8);
SET_DPARAM32(0, _aircraft_cost_table[selected_id - AIRCRAFT_ENGINES_INDEX] * (_price.aircraft_base>>3)>>5);
SET_DPARAM16(1, _aircraft_speed[selected_id - AIRCRAFT_ENGINES_INDEX] * 8);
SET_DPARAM16(2, _aircraft_num_pass[selected_id - AIRCRAFT_ENGINES_INDEX]);
SET_DPARAM16(3, _aircraft_num_mail[selected_id - AIRCRAFT_ENGINES_INDEX]);
SET_DPARAM32(4,_aircraft_running_cost[selected_id - AIRCRAFT_ENGINES_INDEX] * _price.aircraft_running >> 8);
e = &_engines[selected_id];
SetDParam(6, e->lifelength);
SetDParam(7, e->reliability * 100 >> 16);
SET_DPARAM16(6, e->lifelength);
SET_DPARAM8(7, e->reliability * 100 >> 16);
ConvertDayToYMD(&ymd, e->intro_date);
SetDParam(5, ymd.year + 1920);
SET_DPARAM16(5, ymd.year + 1920);
DrawString(2, 111, STR_A007_COST_SPEED_CAPACITY_PASSENGERS, 0);
}
@@ -210,60 +213,36 @@ static void AircraftRefitWndProc(Window *w, WindowEvent *e)
byte color;
int cargo;
SetDParam(0, v->string_id);
SetDParam(1, v->unitnumber);
SET_DPARAM16(0, v->string_id);
SET_DPARAM16(1, v->unitnumber);
DrawWindowWidgets(w);
DrawString(1, 15, STR_A040_SELECT_CARGO_TYPE_TO_CARRY, 0);
/* TODO: Support for custom GRFSpecial-specified refitting! --pasky */
cargo = -1;
x = 6;
y = 25;
sel = WP(w,refit_d).sel;
#define show_cargo(ctype) { \
color = 16; \
if (sel == 0) { \
cargo = ctype; \
color = 12; \
} \
sel--; \
DrawString(x, y, _cargoc.names_s[ctype], color); \
y += 10; \
}
if (_engine_refit_masks[v->engine_type]) {
uint32 mask = _engine_refit_masks[v->engine_type];
int cid = 0;
for (; mask; mask >>= 1, cid++) {
if (!(mask & 1)) // not this cid
continue;
if (!(_local_cargo_id_landscape[cid] & (1 << _opt.landscape))) // not in this landscape
continue;
show_cargo(_local_cargo_id_ctype[cid]);
b = _aircraft_refit_types[_opt.landscape];
do {
color = 16;
if (sel == 0) {
cargo = *b;
color = 12;
}
} else { // generic refit list
b = _aircraft_refit_types[_opt.landscape];
do {
show_cargo(*b);
} while (*++b != 0xFF);
}
#undef show_cargo
sel--;
DrawString(x,y,_cargoc.names_s[*b], color);
y += 10;
} while (*++b != 0xFF);
WP(w,refit_d).cargo = cargo;
if (cargo != -1) {
int32 cost = DoCommandByTile(v->tile, v->index, cargo, DC_QUERY_COST, CMD_REFIT_AIRCRAFT);
if (cost != CMD_ERROR) {
SetDParam(2, cost);
SetDParam(0, _cargoc.names_long_p[cargo]);
SetDParam(1, _aircraft_refit_capacity);
SET_DPARAM32(2, cost);
SET_DPARAM16(0, _cargoc.names_long_p[cargo]);
SET_DPARAM16(1, _aircraft_refit_capacity);
DrawString(1, 137, STR_A041_NEW_CAPACITY_COST_OF_REFIT, 0);
}
}
@@ -333,8 +312,8 @@ static void AircraftDetailsWndProc(Window *w, WindowEvent *e)
if (!_patches.servint_aircraft) // disable service-scroller when interval is set to disabled
w->disabled_state |= (1 << 5) | (1 << 6);
SetDParam(0, v->string_id);
SetDParam(1, v->unitnumber);
SET_DPARAM16(0, v->string_id);
SET_DPARAM16(1, v->unitnumber);
DrawWindowWidgets(w);
/* Draw running cost */
@@ -342,7 +321,7 @@ static void AircraftDetailsWndProc(Window *w, WindowEvent *e)
int year = v->age / 366;
StringID str;
SetDParam(1, year);
SET_DPARAM16(1, year);
str = STR_0199_YEAR;
if (year != 1) {
@@ -350,36 +329,36 @@ static void AircraftDetailsWndProc(Window *w, WindowEvent *e)
if (v->max_age - 366 < v->age)
str++;
}
SetDParam(0, str);
SetDParam(2, v->max_age / 366);
SetDParam(3, _price.aircraft_running * AircraftVehInfo(v->engine_type)->running_cost >> 8);
SET_DPARAM16(0, str);
SET_DPARAM16(2, v->max_age / 366);
SET_DPARAM32(3, _price.aircraft_running * _aircraft_running_cost[v->engine_type - AIRCRAFT_ENGINES_INDEX] >> 8);
DrawString(2, 15, STR_A00D_AGE_RUNNING_COST_YR, 0);
}
/* Draw max speed */
{
SetDParam(0, v->max_speed * 8);
SET_DPARAM16(0, v->max_speed * 8);
DrawString(2, 25, STR_A00E_MAX_SPEED, 0);
}
/* Draw profit */
{
SetDParam(0, v->profit_this_year);
SetDParam(1, v->profit_last_year);
SET_DPARAM32(0, v->profit_this_year);
SET_DPARAM32(1, v->profit_last_year);
DrawString(2, 35, STR_A00F_PROFIT_THIS_YEAR_LAST_YEAR, 0);
}
/* Draw breakdown & reliability */
{
SetDParam(0, v->reliability * 100 >> 16);
SetDParam(1, v->breakdowns_since_last_service);
SET_DPARAM8(0, v->reliability * 100 >> 16);
SET_DPARAM16(1, v->breakdowns_since_last_service);
DrawString(2, 45, STR_A010_RELIABILITY_BREAKDOWNS, 0);
}
/* Draw service interval text */
{
SetDParam(0, v->service_interval);
SetDParam(1, v->date_of_last_service);
SET_DPARAM16(0, v->service_interval);
SET_DPARAM16(1, v->date_of_last_service);
DrawString(13, 103, _patches.servint_ispercent?STR_SERVICING_INTERVAL_PERCENT:STR_883C_SERVICING_INTERVAL_DAYS, 0);
}
@@ -390,17 +369,17 @@ static void AircraftDetailsWndProc(Window *w, WindowEvent *e)
do {
if (v->subtype <= 2) {
SetDParam(0, GetCustomEngineName(v->engine_type));
SetDParam(1, 1920 + v->build_year);
SetDParam(2, v->value);
SET_DPARAM16(0, GetCustomEngineName(v->engine_type));
SET_DPARAM16(1, 1920 + v->build_year);
SET_DPARAM32(2, v->value);
DrawString(60, y, STR_A011_BUILT_VALUE, 0);
y += 10;
SetDParam(0, _cargoc.names_long_p[v->cargo_type]);
SetDParam(1, v->cargo_cap);
SET_DPARAM16(0, _cargoc.names_long_p[v->cargo_type]);
SET_DPARAM16(1, v->cargo_cap);
u = v->next;
SetDParam(2, _cargoc.names_long_p[u->cargo_type]);
SetDParam(3, u->cargo_cap);
SET_DPARAM16(2, _cargoc.names_long_p[u->cargo_type]);
SET_DPARAM16(3, u->cargo_cap);
DrawString(60, y, STR_A019_CAPACITY + (u->cargo_cap == 0), 0);
y += 14;
}
@@ -408,9 +387,9 @@ static void AircraftDetailsWndProc(Window *w, WindowEvent *e)
if (v->cargo_count != 0) {
/* Cargo names (fix pluralness) */
SetDParam(0, v->cargo_type);
SetDParam(1, v->cargo_count);
SetDParam(2, v->cargo_source);
SET_DPARAM8(0, v->cargo_type);
SET_DPARAM16(1, v->cargo_count);
SET_DPARAM16(2, v->cargo_source);
DrawString(60, y, STR_8813_FROM, 0);
y += 10;
@@ -422,7 +401,7 @@ static void AircraftDetailsWndProc(Window *w, WindowEvent *e)
case WE_CLICK:
switch(e->click.widget) {
case 2: /* rename */
SetDParam(0, v->unitnumber);
SET_DPARAM16(0, v->unitnumber);
ShowQueryString(v->string_id, STR_A030_NAME_AIRCRAFT, 31, 150, w->window_class, w->window_number);
break;
@@ -503,8 +482,7 @@ static void ShowAircraftDetailsWindow(Vehicle *v)
static const Widget _aircraft_view_widgets[] = {
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 237, 0, 13, STR_A00A, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, 14, 238, 249, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_CAPTION, 14, 11, 249, 0, 13, STR_A00A, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_IMGBTN, 14, 0, 231, 14, 103, 0x0, STR_NULL},
{ WWT_6, 14, 2, 229, 16, 101, 0x0, STR_NULL},
{ WWT_PUSHIMGBTN, 14, 0, 249, 104, 115, 0x0, STR_A027_CURRENT_AIRCRAFT_ACTION},
@@ -521,7 +499,7 @@ static void AircraftViewWndProc(Window *w, WindowEvent *e)
switch(e->event) {
case WE_PAINT: {
Vehicle *v = &_vehicles[w->window_number];
uint32 disabled = 1<<8;
uint32 disabled = 1<<7;
StringID str;
{
@@ -533,12 +511,12 @@ static void AircraftViewWndProc(Window *w, WindowEvent *e)
}
if (v->owner != _local_player)
disabled |= 1<<8 | 1<<7;
disabled |= 1<<7 | 1<<6;
w->disabled_state = disabled;
/* draw widgets & caption */
SetDParam(0, v->string_id);
SetDParam(1, v->unitnumber);
SET_DPARAM16(0, v->string_id);
SET_DPARAM16(1, v->unitnumber);
DrawWindowWidgets(w);
/* draw the flag */
@@ -549,16 +527,16 @@ static void AircraftViewWndProc(Window *w, WindowEvent *e)
} else if (v->vehstatus & VS_STOPPED) {
str = STR_8861_STOPPED;
} else {
switch (v->current_order.type) {
switch(v->next_order & OT_MASK) {
case OT_GOTO_STATION: {
SetDParam(0, v->current_order.station);
SetDParam(1, v->cur_speed * 8);
SET_DPARAM16(0, v->next_order_param);
SET_DPARAM16(1, v->cur_speed * 8);
str = STR_HEADING_FOR_STATION + _patches.vehicle_speed;
} break;
case OT_GOTO_DEPOT: {
SetDParam(0, v->current_order.station);
SetDParam(1, v->cur_speed * 8);
SET_DPARAM16(0, v->next_order_param);
SET_DPARAM16(1, v->cur_speed * 8);
str = STR_HEADING_FOR_HANGAR + _patches.vehicle_speed;
} break;
@@ -569,7 +547,7 @@ static void AircraftViewWndProc(Window *w, WindowEvent *e)
default:
if (v->num_orders == 0) {
str = STR_NO_ORDERS + _patches.vehicle_speed;
SetDParam(0, v->cur_speed * 8);
SET_DPARAM16(0, v->cur_speed * 8);
} else
str = STR_EMPTY;
break;
@@ -584,22 +562,22 @@ static void AircraftViewWndProc(Window *w, WindowEvent *e)
Vehicle *v = &_vehicles[w->window_number];
switch(e->click.widget) {
case 5: /* start stop */
case 4: /* start stop */
DoCommandP(v->tile, v->index, 0, NULL, CMD_START_STOP_AIRCRAFT | CMD_MSG(STR_A016_CAN_T_STOP_START_AIRCRAFT));
break;
case 6: /* center main view */
case 5: /* center main view */
ScrollMainWindowTo(v->x_pos, v->y_pos);
break;
case 7: /* goto hangar */
case 6: /* goto hangar */
DoCommandP(v->tile, v->index, 0, NULL, CMD_SEND_AIRCRAFT_TO_HANGAR | CMD_MSG(STR_A012_CAN_T_SEND_AIRCRAFT_TO));
break;
case 8: /* refit */
case 7: /* refit */
ShowAircraftRefitWindow(v);
break;
case 9: /* show orders */
case 8: /* show orders */
ShowOrdersWindow(v);
break;
case 10: /* show details */
case 9: /* show details */
ShowAircraftDetailsWindow(v);
break;
}
@@ -617,7 +595,7 @@ static void AircraftViewWndProc(Window *w, WindowEvent *e)
static const WindowDesc _aircraft_view_desc = {
-1,-1, 250, 116,
WC_VEHICLE_VIEW ,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS,
_aircraft_view_widgets,
AircraftViewWndProc
};
@@ -643,7 +621,7 @@ static void DrawAircraftDepotWindow(Window *w)
tile = w->window_number;
/* setup disabled buttons */
w->disabled_state = (_map_owner[tile]==_local_player) ? 0 : ((1<<4)|(1<<6));
w->disabled_state = (_map_owner[tile]==_local_player) ? 0 : ((1<<3)|(1<<5));
/* determine amount of items for scroller */
num = 0;
@@ -654,7 +632,7 @@ static void DrawAircraftDepotWindow(Window *w)
}
SetVScrollCount(w, (num + 3) >> 2);
SetDParam(0, _map2[tile]);
SET_DPARAM16(0, _map2[tile]);
DrawWindowWidgets(w);
x = 2;
@@ -670,7 +648,7 @@ static void DrawAircraftDepotWindow(Window *w)
DrawAircraftImage(v, x+12, y, WP(w,traindepot_d).sel);
SetDParam(0, v->unitnumber);
SET_DPARAM16(0, v->unitnumber);
DrawString(x, y+2, (uint16)(v->max_age-366) >= v->age ? STR_00E2 : STR_00E3, 0);
DrawSprite( (v->vehstatus & VS_STOPPED) ? 0xC12 : 0xC13, x, y+12);
@@ -756,8 +734,7 @@ static void AircraftDepotClickAircraft(Window *w, int x, int y)
static const Widget _aircraft_depot_widgets[] = {
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 318, 0, 13, STR_A002_AIRCRAFT_HANGAR, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, 14, 319, 330, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_CAPTION, 14, 11, 330, 0, 13, STR_A002_AIRCRAFT_HANGAR, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_MATRIX, 14, 0, 295, 14, 61, 0x204, STR_A021_AIRCRAFT_CLICK_ON_AIRCRAFT},
{ WWT_IMGBTN, 14, 296, 319, 14, 61, 0x2A9, STR_A023_DRAG_AIRCRAFT_TO_HERE_TO},
{ WWT_SCROLLBAR, 14, 320, 330, 14, 61, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
@@ -776,13 +753,13 @@ static void AircraftDepotWndProc(Window *w, WindowEvent *e)
case WE_CLICK:
switch(e->click.widget) {
case 3: /* click aircraft */
case 2: /* click aircraft */
AircraftDepotClickAircraft(w, e->click.pt.x, e->click.pt.y);
break;
case 6: /* show build aircraft window */
case 5: /* show build aircraft window */
ShowBuildAircraftWindow(w->window_number);
break;
case 7: /* scroll to tile */
case 6: /* scroll to tile */
ScrollMainWindowToTile(w->window_number);
break;
}
@@ -794,7 +771,7 @@ static void AircraftDepotWndProc(Window *w, WindowEvent *e)
case WE_DRAGDROP: {
switch(e->click.widget) {
case 3: {
case 2: {
Vehicle *v;
VehicleID sel = WP(w,traindepot_d).sel;
@@ -808,12 +785,12 @@ static void AircraftDepotWndProc(Window *w, WindowEvent *e)
}
} break;
case 4:
if (!HASBIT(w->disabled_state, 4) &&
case 3:
if (!HASBIT(w->disabled_state, 3) &&
WP(w,traindepot_d).sel != INVALID_VEHICLE) {
Vehicle *v;
HandleButtonClick(w, 4);
HandleButtonClick(w, 3);
v = &_vehicles[WP(w,traindepot_d).sel];
WP(w,traindepot_d).sel = INVALID_VEHICLE;
@@ -840,7 +817,7 @@ static void AircraftDepotWndProc(Window *w, WindowEvent *e)
static const WindowDesc _aircraft_depot_desc = {
-1, -1, 331, 74,
WC_VEHICLE_DEPOT,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS,
_aircraft_depot_widgets,
AircraftDepotWndProc
};
@@ -860,15 +837,15 @@ void ShowAircraftDepotWindow(uint tile)
}
static void DrawSmallSchedule(Vehicle *v, int x, int y) {
const Order *sched;
uint16 *sched;
int sel;
Order ord;
uint ord;
int i = 0;
sched = v->schedule_ptr;
sel = v->cur_order_index;
while ((ord = *sched++).type != OT_NOTHING) {
while ((ord=*sched++) != 0) {
if (sel == 0) {
_stringwidth_base = 0xE0;
DoDrawString( "\xAF", x-6, y, 16);
@@ -876,8 +853,8 @@ static void DrawSmallSchedule(Vehicle *v, int x, int y) {
}
sel--;
if (ord.type == OT_GOTO_STATION) {
SetDParam(0, ord.station);
if ((ord & OT_MASK) == OT_GOTO_STATION) {
SET_DPARAM16(0, ord >> 8);
DrawString(x, y, STR_A036, 0);
y += 6;
@@ -887,128 +864,159 @@ static void DrawSmallSchedule(Vehicle *v, int x, int y) {
}
}
// used to get a sorted list of the vehicles
static SortStruct _aircraft_sort[NUM_NORMAL_VEHICLES];
static uint16 _num_aircraft_sort[MAX_PLAYERS];
static Widget _player_aircraft_widgets[] = {
{ WWT_CLOSEBOX, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 247, 0, 13, STR_A009_AIRCRAFT, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, 14, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_PUSHTXTBTN, 14, 0, 80, 14, 25, SRT_SORT_BY, STR_SORT_ORDER_TIP},
{ WWT_PANEL, 14, 81, 237, 14, 25, 0x0, STR_SORT_CRITERIA_TIP},
{ WWT_CLOSEBOX, 14, 238, 248, 14, 25, STR_0225, STR_SORT_CRITERIA_TIP},
{ WWT_PANEL, 14, 249, 259, 14, 25, 0x0, STR_NULL},
{ WWT_MATRIX, 14, 0, 248, 26, 169, 0x401, STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT},
{ WWT_SCROLLBAR, 14, 249, 259, 26, 169, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WWT_PUSHTXTBTN, 14, 0, 129, 170, 181, STR_A003_NEW_AIRCRAFT, STR_A020_BUILD_NEW_AIRCRAFT_REQUIRES},
{ WWT_PANEL, 14, 130, 259, 170, 181, 0x0, STR_NULL},
{ WIDGETS_END},
};
static void GlobalSortAircraftList()
{
const Vehicle *v;
uint16 *i;
uint32 n = 0;
static Widget _other_player_aircraft_widgets[] = {
{ WWT_CLOSEBOX, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 247, 0, 13, STR_A009_AIRCRAFT, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, 14, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_PUSHTXTBTN, 14, 0, 80, 14, 25, SRT_SORT_BY, STR_SORT_ORDER_TIP},
{ WWT_PANEL, 14, 81, 237, 14, 25, 0x0, STR_SORT_CRITERIA_TIP},
{ WWT_CLOSEBOX, 14, 238, 248, 14, 25, STR_0225, STR_SORT_CRITERIA_TIP},
{ WWT_PANEL, 14, 249, 259, 14, 25, 0x0, STR_NULL},
{ WWT_MATRIX, 14, 0, 248, 26, 169, 0x401, STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT},
{ WWT_SCROLLBAR, 14, 249, 259, 26, 169, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WIDGETS_END},
};
// reset #-of aircraft to 0 because ++ is used for value-assignment
for (i = _num_aircraft_sort; i != endof(_num_aircraft_sort); i++) {*i = 0;}
FOR_ALL_VEHICLES(v) {
if(v->type == VEH_Aircraft && v->subtype <= 2) {
_aircraft_sort[n].index = v->index;
_aircraft_sort[n++].owner = v->owner;
_num_aircraft_sort[v->owner]++; // add number of aircraft of player
}
}
// create cumulative aircraft-ownership
// aircraft are stored as a cummulative index, eg 25, 41, 43. This means
// Player0: 25; Player1: (41-25) 16; Player2: (43-41) 2
for (i = &_num_aircraft_sort[1]; i != endof(_num_aircraft_sort); i++) {*i += *(i-1);}
qsort(_aircraft_sort, n, sizeof(_aircraft_sort[0]), GeneralOwnerSorter); // sort by owner
// since indexes are messed up after adding/removing a station, mark all lists dirty
memset(_aircraft_sort_dirty, true, sizeof(_aircraft_sort_dirty));
_vehicle_sort_dirty[VEHAIRCRAFT] = false;
DEBUG(misc, 1) ("Resorting global aircraft list...");
}
static void MakeSortedAircraftList(byte owner)
{
SortStruct *firstelement;
uint32 n = 0;
if (owner == 0) { // first element starts at 0th element and has n elements as described above
firstelement = &_aircraft_sort[0];
n = _num_aircraft_sort[0];
} else { // nth element starts at the end of the previous one, and has n elements as described above
firstelement = &_aircraft_sort[_num_aircraft_sort[owner-1]];
n = _num_aircraft_sort[owner] - _num_aircraft_sort[owner-1];
}
_internal_sort_order = _aircraft_sort_order[owner];
_internal_name_sorter_id = STR_SV_AIRCRAFT_NAME;
_last_vehicle_idx = 0; // used for "cache" in namesorting
qsort(firstelement, n, sizeof(_aircraft_sort[0]), _vehicle_sorter[_aircraft_sort_type[owner]]);
_aircraft_sort_dirty[owner] = false;
DEBUG(misc, 1) ("Resorting Aircraft list player %d...", owner+1);
}
static void PlayerAircraftWndProc(Window *w, WindowEvent *e)
{
int station = (int)w->window_number >> 16;
int owner = w->window_number & 0xff;
vehiclelist_d *vl = &WP(w, vehiclelist_d);
switch(e->event) {
case WE_PAINT: {
int x = 2;
int y = PLY_WND_PRC__OFFSET_TOP_WIDGET;
int max;
int i;
uint32 i;
const byte window_number = (byte)w->window_number;
BuildVehicleList(vl, VEH_Aircraft, owner, station);
SortVehicleList(vl);
if (_aircraft_sort_type[window_number] == SORT_BY_UNSORTED) // disable 'Sort By' tooltip on Unsorted sorting criteria
w->disabled_state |= (1 << 2);
SetVScrollCount(w, vl->list_length);
// resort shipps window if roadvehicles have been added/removed
if (_vehicle_sort_dirty[VEHAIRCRAFT])
GlobalSortAircraftList();
// disable 'Sort By' tooltip on Unsorted sorting criteria
if (vl->sort_type == SORT_BY_UNSORTED)
w->disabled_state |= (1 << 3);
if (_aircraft_sort_dirty[window_number]) {
MakeSortedAircraftList(window_number);
/* reset sorting timeout */
w->custom[0] = DAY_TICKS;
w->custom[1] = PERIODIC_RESORT_DAYS;
}
// aircraft are stored as a cummulative index, eg 25, 41, 43. This means
// Player0: 25; Player1: (41-25) 16; Player2: (43-41) 2 aircraft
i = (window_number == 0) ? 0 : _num_aircraft_sort[window_number-1];
SetVScrollCount(w, _num_aircraft_sort[window_number] - i);
/* draw the widgets */
{
const Player *p = DEREF_PLAYER(owner);
/* XXX hack */
if (station == -1) {
/* Company Name -- (###) Aircraft */
SetDParam(0, p->name_1);
SetDParam(1, p->name_2);
SetDParam(2, w->vscroll.count);
_player_aircraft_widgets[1].unkA = STR_A009_AIRCRAFT;
_other_player_aircraft_widgets[1].unkA = STR_A009_AIRCRAFT;
} else {
/* Station Name -- (###) Aircraft */
SetDParam(0, DEREF_STATION(station)->index);
SetDParam(1, w->vscroll.count);
_player_aircraft_widgets[1].unkA = STR_SCHEDULED_AIRCRAFT;
_other_player_aircraft_widgets[1].unkA = STR_SCHEDULED_AIRCRAFT;
}
Player *p = DEREF_PLAYER(window_number);
/* Company Name -- (###) Aircraft */
SET_DPARAM16(0, p->name_1);
SET_DPARAM32(1, p->name_2);
SET_DPARAM16(2, w->vscroll.count);
DrawWindowWidgets(w);
}
/* draw sorting criteria string */
DrawString(85, 15, _vehicle_sort_listing[vl->sort_type], 0x10);
/* draw arrow pointing up/down for ascending/descending sorting */
DoDrawString(
vl->flags & VL_DESC ? "\xAA" : "\xA0", 69, 15, 0x10);
DrawString(85, 15, _vehicle_sort_listing[_aircraft_sort_type[window_number]], 0x10);
/* draw arrow pointing up/down for ascending/descending soring */
DoDrawString(_aircraft_sort_order[window_number] & 1 ? "\xAA" : "\xA0", 69, 15, 0x10);
max = min(w->vscroll.pos + w->vscroll.cap, vl->list_length);
for (i = w->vscroll.pos; i < max; ++i) {
Vehicle *v = DEREF_VEHICLE(vl->sort_list[i].index);
StringID str;
/* draw the aircraft */
{
Vehicle *v;
int n = 0;
const int x = 2; // offset from left side of widget
int y = PLY_WND_PRC__OFFSET_TOP_WIDGET; // offset from top of widget
i += w->vscroll.pos; // offset from sorted aircraft list of current player
assert(v->type == VEH_Aircraft && v->subtype <= 2);
while (i < _num_aircraft_sort[window_number]) {
StringID str;
v = DEREF_VEHICLE(_aircraft_sort[i].index);
DrawAircraftImage(v, x + 19, y + 6, INVALID_VEHICLE);
DrawVehicleProfitButton(v, x, y + 13);
assert(v->type == VEH_Aircraft && v->subtype <= 2 && v->owner == window_number);
SetDParam(0, v->unitnumber);
if (IsAircraftHangarTile(v->tile))
str = STR_021F;
else
str = v->age > v->max_age - 366 ? STR_00E3 : STR_00E2;
DrawString(x, y + 2, str, 0);
DrawAircraftImage(v, x + 19, y + 6, INVALID_VEHICLE);
DrawVehicleProfitButton(v, x, y+13);
SetDParam(0, v->profit_this_year);
SetDParam(1, v->profit_last_year);
DrawString(x + 19, y + 28, STR_0198_PROFIT_THIS_YEAR_LAST_YEAR, 0);
SET_DPARAM16(0, v->unitnumber);
if (IsAircraftHangarTile(v->tile)) {
str = STR_021F;
} else {
str = v->age > v->max_age - 366 ? STR_00E3 : STR_00E2;
}
DrawString(x, y+2, str, 0);
if (v->string_id != STR_SV_AIRCRAFT_NAME) {
SetDParam(0, v->string_id);
DrawString(x + 19, y, STR_01AB, 0);
SET_DPARAM32(0, v->profit_this_year);
SET_DPARAM32(1, v->profit_last_year);
DrawString(x+19, y + 28, STR_0198_PROFIT_THIS_YEAR_LAST_YEAR, 0);
if (v->string_id != STR_SV_AIRCRAFT_NAME) {
SET_DPARAM16(0, v->string_id);
DrawString(x+19, y, STR_01AB, 0);
}
DrawSmallSchedule(v, x+136, y);
y += PLY_WND_PRC__SIZE_OF_ROW_BIG;
i++; // next aircraft
if (++n == w->vscroll.cap) { break;} // max number of aircraft in the window
}
DrawSmallSchedule(v, x + 136, y);
y += PLY_WND_PRC__SIZE_OF_ROW_BIG;
}
} break;
case WE_CLICK: {
switch(e->click.widget) {
case 3: /* Flip sorting method ascending/descending */
vl->flags ^= VL_DESC;
vl->flags |= VL_RESORT;
case 2: /* Flip sorting method ascending/descending */
_aircraft_sort_order[(byte)w->window_number] ^= 1;
_aircraft_sort_dirty[(byte)w->window_number] = true;
SetWindowDirty(w);
break;
case 4: case 5:/* Select sorting criteria dropdown menu */
ShowDropDownMenu(w, _vehicle_sort_listing, vl->sort_type, 5, 0);
case 3: case 4:/* Select sorting criteria dropdown menu */
ShowDropDownMenu(w, _vehicle_sort_listing, _aircraft_sort_type[(byte)w->window_number], 4, 0); // do it for widget 4
return;
case 7: { /* Matrix to show vehicles */
case 6: { /* Matrix to show vehicles */
uint32 id_v = (e->click.pt.y - PLY_WND_PRC__OFFSET_TOP_WIDGET) / PLY_WND_PRC__SIZE_OF_ROW_BIG;
if (id_v >= w->vscroll.cap) { return;} // click out of bounds
@@ -1016,19 +1024,21 @@ static void PlayerAircraftWndProc(Window *w, WindowEvent *e)
id_v += w->vscroll.pos;
{
const byte owner = (byte)w->window_number;
Vehicle *v;
id_v += (owner == 0) ? 0 : _num_aircraft_sort[owner - 1]; // first element in list
if (id_v >= vl->list_length) return; // click out of list bound
if (id_v >= _num_aircraft_sort[owner]) { return;} // click out of vehicle bound
v = DEREF_VEHICLE(vl->sort_list[id_v].index);
v = DEREF_VEHICLE(_aircraft_sort[id_v].index); // add the offset id_x to that
assert(v->type == VEH_Aircraft && v->subtype <= 2);
assert(v->type == VEH_Aircraft && v->subtype <= 2 && v->owner == owner);
ShowAircraftViewWindow(v);
}
} break;
case 9: { /* Build new Vehicle */
case 8: { /* Build new Vehicle */
uint tile;
tile = _last_built_aircraft_depot_tile;
@@ -1048,65 +1058,84 @@ static void PlayerAircraftWndProc(Window *w, WindowEvent *e)
} break;
case WE_DROPDOWN_SELECT: /* we have selected a dropdown item in the list */
if (vl->sort_type != e->dropdown.index) {
// value has changed -> resort
vl->flags |= VL_RESORT;
vl->sort_type = e->dropdown.index;
if (_aircraft_sort_type[(byte)w->window_number] != e->dropdown.index) // if value hasn't changed, dont resort list
_aircraft_sort_dirty[(byte)w->window_number] = true;
_aircraft_sort_type[(byte)w->window_number] = e->dropdown.index;
if (_aircraft_sort_type[(byte)w->window_number] != SORT_BY_UNSORTED) // enable 'Sort By' if a sorter criteria is chosen
w->disabled_state &= ~(1 << 2);
// enable 'Sort By' if a sorter criteria is chosen
if (vl->sort_type != SORT_BY_UNSORTED)
w->disabled_state &= ~(1 << 3);
}
SetWindowDirty(w);
break;
case WE_CREATE: /* set up resort timer */
vl->sort_list = NULL;
vl->flags = VL_REBUILD;
vl->sort_type = SORT_BY_UNSORTED;
vl->resort_timer = DAY_TICKS * PERIODIC_RESORT_DAYS;
w->custom[0] = DAY_TICKS;
w->custom[1] = PERIODIC_RESORT_DAYS;
break;
case WE_DESTROY:
free(vl->sort_list);
break;
case WE_TICK: /* resort the list every 20 seconds orso (10 days) */
if (--vl->resort_timer == 0) {
DEBUG(misc, 1) ("Periodic resort aircraft list player %d station %d",
owner, station);
vl->resort_timer = DAY_TICKS * PERIODIC_RESORT_DAYS;
vl->flags |= VL_RESORT;
SetWindowDirty(w);
if (--w->custom[0] == 0) {
w->custom[0] = DAY_TICKS;
if (--w->custom[1] == 0) {
w->custom[1] = PERIODIC_RESORT_DAYS;
_aircraft_sort_dirty[(byte)w->window_number] = true;
DEBUG(misc, 1) ("Periodic resort Aircraft list player %d...", w->window_number+1);
SetWindowDirty(w);
}
}
break;
}
}
static const Widget _player_aircraft_widgets[] = {
{ WWT_CLOSEBOX, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 259, 0, 13, STR_A009_AIRCRAFT, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PUSHTXTBTN, 14, 0, 80, 14, 25, SRT_SORT_BY, STR_SORT_TIP},
{ WWT_PANEL, 14, 81, 237, 14, 25, 0x0, STR_SORT_TIP},
{ WWT_CLOSEBOX, 14, 238, 248, 14, 25, STR_0225, STR_SORT_TIP},
{ WWT_PANEL, 14, 249, 259, 14, 25, 0x0, STR_NULL},
{ WWT_MATRIX, 14, 0, 248, 26, 169, 0x401, STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT},
{ WWT_SCROLLBAR, 14, 249, 259, 26, 169, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WWT_PUSHTXTBTN, 14, 0, 129, 170, 181, STR_A003_NEW_AIRCRAFT, STR_A020_BUILD_NEW_AIRCRAFT_REQUIRES},
{ WWT_PANEL, 14, 130, 259, 170, 181, 0x0, STR_NULL},
{ WIDGETS_END},
};
static const WindowDesc _player_aircraft_desc = {
-1, -1, 260, 182,
WC_AIRCRAFT_LIST,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS,
_player_aircraft_widgets,
PlayerAircraftWndProc
};
static const Widget _other_player_aircraft_widgets[] = {
{ WWT_CLOSEBOX, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 259, 0, 13, STR_A009_AIRCRAFT, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PUSHTXTBTN, 14, 0, 80, 14, 25, SRT_SORT_BY, STR_SORT_TIP},
{ WWT_PANEL, 14, 81, 237, 14, 25, 0x0, STR_SORT_TIP},
{ WWT_CLOSEBOX, 14, 238, 248, 14, 25, STR_0225, STR_SORT_TIP},
{ WWT_PANEL, 14, 249, 259, 14, 25, 0x0, STR_NULL},
{ WWT_MATRIX, 14, 0, 248, 26, 169, 0x401, STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT},
{ WWT_SCROLLBAR, 14, 249, 259, 26, 169, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WIDGETS_END},
};
static const WindowDesc _other_player_aircraft_desc = {
-1, -1, 260, 170,
WC_AIRCRAFT_LIST,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS,
_other_player_aircraft_widgets,
PlayerAircraftWndProc
};
void ShowPlayerAircraft(int player, int station)
void ShowPlayerAircraft(int player)
{
Window *w;
if (player == _local_player) {
w = AllocateWindowDescFront(&_player_aircraft_desc, (station << 16) | player);
w = AllocateWindowDescFront(&_player_aircraft_desc, player);
} else {
w = AllocateWindowDescFront(&_other_player_aircraft_desc, (station << 16) | player);
w = AllocateWindowDescFront(&_other_player_aircraft_desc, player);
}
if (w) {

View File

@@ -1,6 +1,5 @@
#include "stdafx.h"
#include "ttd.h"
#include "map.h"
#include "airport.h"
AirportFTAClass *CountryAirport;
@@ -14,7 +13,7 @@ static void AirportFTAClass_Constructor(AirportFTAClass *Airport,
const byte nofhelipads, const byte nofhelipadgroups,
const byte entry_point, const byte acc_planes,
const AirportFTAbuildup *FA,
const TileIndex *depots, const byte nof_depots);
const TileIndex *depots);
static void AirportFTAClass_Destructor(AirportFTAClass *Airport);
static uint16 AirportGetNofElements(const AirportFTAbuildup *FA);
@@ -27,23 +26,23 @@ void InitializeAirports()
{
// country airport
CountryAirport = (AirportFTAClass *)malloc(sizeof(AirportFTAClass));
AirportFTAClass_Constructor(CountryAirport, 2, 1, 0, 0, 16, ALL, _airport_fta_country, _airport_depots_country, lengthof(_airport_depots_country));
AirportFTAClass_Constructor(CountryAirport, 2, 1, 0, 0, 16, ALL, _airport_fta_country, _airport_depots_country);
// city airport
CityAirport = (AirportFTAClass *)malloc(sizeof(AirportFTAClass));
AirportFTAClass_Constructor(CityAirport, 3, 1, 0, 0, 19, ALL, _airport_fta_city, _airport_depots_city, lengthof(_airport_depots_city));
AirportFTAClass_Constructor(CityAirport, 3, 1, 0, 0, 19, ALL, _airport_fta_city, _airport_depots_city);
// metropolitan airport
MetropolitanAirport = (AirportFTAClass *)malloc(sizeof(AirportFTAClass));
AirportFTAClass_Constructor(MetropolitanAirport, 3, 1, 0, 0, 20, ALL, _airport_fta_metropolitan, _airport_depots_metropolitan, lengthof(_airport_depots_metropolitan));
AirportFTAClass_Constructor(MetropolitanAirport, 3, 1, 0, 0, 20, ALL, _airport_fta_metropolitan, _airport_depots_metropolitan);
// international airport
InternationalAirport = (AirportFTAClass *)malloc(sizeof(AirportFTAClass));
AirportFTAClass_Constructor(InternationalAirport, 6, 2, 2, 1, 37, ALL, _airport_fta_international, _airport_depots_international, lengthof(_airport_depots_international));
AirportFTAClass_Constructor(InternationalAirport, 6, 2, 2, 1, 37, ALL, _airport_fta_international, _airport_depots_international);
// heliport, oilrig
Heliport = (AirportFTAClass *)malloc(sizeof(AirportFTAClass));
AirportFTAClass_Constructor(Heliport, 0, 0, 1, 1, 7, HELICOPTERS_ONLY, _airport_fta_heliport_oilrig, NULL, 0);
AirportFTAClass_Constructor(Heliport, 0, 0, 1, 1, 7, HELICOPTERS_ONLY, _airport_fta_heliport_oilrig, _airport_depots_heliport_oilrig);
Oilrig = Heliport; // exactly the same structure for heliport/oilrig, so share state machine
}
@@ -61,7 +60,7 @@ static void AirportFTAClass_Constructor(AirportFTAClass *Airport,
const byte nofhelipads, const byte nofhelipadgroups,
const byte entry_point, const byte acc_planes,
const AirportFTAbuildup *FA,
const TileIndex *depots, const byte nof_depots)
const TileIndex *depots)
{
// if there are more terminals than 6, internal variables have to be changed, so don't allow that
// same goes for helipads
@@ -89,8 +88,7 @@ static void AirportFTAClass_Constructor(AirportFTAClass *Airport,
Airport->nofhelipadgroups = nofhelipadgroups;
Airport->acc_planes = acc_planes;
Airport->entry_point = entry_point;
Airport->airport_depots = depots;
Airport->nof_depots = nof_depots;
Airport->airport_depots = (const uint16*)depots;
// build the state machine

View File

@@ -32,8 +32,7 @@ typedef struct AirportFTAClass {
byte nofhelipadgroups; // helipads belong to so many groups (MAX is the nofhelipads)
byte entry_point; // when an airplane arrives at this airport, enter it at position entry_point
byte acc_planes; // accept airplanes or helicopters or both
const TileIndex *airport_depots; // gives the position of the depots on the airports
byte nof_depots; // number of depots this airport has
const uint16 *airport_depots; // gives the position of the depots on the airports
struct AirportFTA *layout; // state machine for airport
} AirportFTAClass;

View File

@@ -1,12 +1,10 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "map.h"
#include "window.h"
#include "gui.h"
#include "viewport.h"
#include "gfx.h"
#include "sound.h"
#include "command.h"
#include "vehicle.h"
#include "station.h"
@@ -17,10 +15,10 @@ static byte _selected_airport_type;
static void ShowBuildAirportPicker();
void CcBuildAirport(bool success, uint tile, uint32 p1, uint32 p2)
static void CcBuildAirport(bool success, uint tile, uint32 p1, uint32 p2)
{
if (success) {
SndPlayTileFx(SND_1F_SPLAT, tile);
SndPlayTileFx(0x1D, tile);
ResetObjectToPlace();
}
}
@@ -38,24 +36,36 @@ static void PlaceAir_DemolishArea(uint tile)
static void BuildAirClick_Airport(Window *w)
{
if (HandlePlacePushButton(w, 3, 0xAA4, 1, PlaceAirport)) ShowBuildAirportPicker();
if (HandlePlacePushButton(w, 2, 0xAA4, 1, PlaceAirport)) ShowBuildAirportPicker();
}
static void BuildAirClick_Demolish(Window *w)
{
HandlePlacePushButton(w, 4, ANIMCURSOR_DEMOLISH, 1, PlaceAir_DemolishArea);
HandlePlacePushButton(w, 3, ANIMCURSOR_DEMOLISH, 1, PlaceAir_DemolishArea);
}
static void BuildAirClick_Landscaping(Window *w)
static void BuildAirClick_Lower(Window *w)
{
ShowTerraformToolbar();
HandlePlacePushButton(w, 4, ANIMCURSOR_LOWERLAND, 2, PlaceProc_LowerLand);
}
static void BuildAirClick_Raise(Window *w)
{
HandlePlacePushButton(w, 5, ANIMCURSOR_RAISELAND, 2, PlaceProc_RaiseLand);
}
static void BuildAirClick_Purchase(Window *w)
{
HandlePlacePushButton(w, 6, 0x12B8, 1, PlaceProc_BuyLand);
}
typedef void OnButtonClick(Window *w);
static OnButtonClick * const _build_air_button_proc[] = {
BuildAirClick_Airport,
BuildAirClick_Demolish,
BuildAirClick_Landscaping,
BuildAirClick_Lower,
BuildAirClick_Raise,
BuildAirClick_Purchase,
};
static void BuildAirToolbWndProc(Window *w, WindowEvent *e)
@@ -66,8 +76,8 @@ static void BuildAirToolbWndProc(Window *w, WindowEvent *e)
break;
case WE_CLICK:
if (e->click.widget - 3 >= 0)
_build_air_button_proc[e->click.widget - 3](w);
if (e->click.widget-2 >= 0)
_build_air_button_proc[e->click.widget - 2](w);
break;
case WE_PLACE_OBJ:
@@ -86,7 +96,7 @@ static void BuildAirToolbWndProc(Window *w, WindowEvent *e)
break;
case WE_ABORT_PLACE_OBJ:
UnclickWindowButtons(w);
w->click_state = 0;
SetWindowDirty(w);
w = FindWindowById(WC_BUILD_STATION, 0);
if (w != 0)
@@ -96,20 +106,21 @@ static void BuildAirToolbWndProc(Window *w, WindowEvent *e)
}
static const Widget _air_toolbar_widgets[] = {
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 7, 11, 73, 0, 13, STR_A000_AIRPORTS, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, 7, 74, 85, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_PANEL, 7, 0, 41, 14, 35, 0x2E8, STR_A01E_BUILD_AIRPORT},
{ WWT_PANEL, 7, 42, 63, 14, 35, 0x2BF, STR_018D_DEMOLISH_BUILDINGS_ETC},
{ WWT_PANEL, 7, 64, 85, 14, 35, SPR_IMG_LANDSCAPING, STR_LANDSCAPING_TOOLBAR_TIP},
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 7, 11, 129, 0, 13, STR_A000_AIRPORT_CONSTRUCT, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, 7, 0, 41, 14, 35, 0x2E8, STR_A01E_BUILD_AIRPORT},
{ WWT_PANEL, 7, 42, 63, 14, 35, 0x2BF, STR_018D_DEMOLISH_BUILDINGS_ETC},
{ WWT_PANEL, 7, 64, 85, 14, 35, 0x2B7, STR_018E_LOWER_A_CORNER_OF_LAND},
{ WWT_PANEL, 7, 86, 107, 14, 35, 0x2B6, STR_018F_RAISE_A_CORNER_OF_LAND},
{ WWT_PANEL, 7, 108, 129, 14, 35, 0x12B7, STR_0329_PURCHASE_LAND_FOR_FUTURE},
{ WIDGETS_END},
};
static const WindowDesc _air_toolbar_desc = {
640-86, 22, 86, 36,
510, 22, 130, 36,
WC_BUILD_TOOLBAR,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
_air_toolbar_widgets,
BuildAirToolbWndProc
};
@@ -125,7 +136,6 @@ static void BuildAirportPickerWndProc(Window *w, WindowEvent *e)
switch(e->event) {
case WE_PAINT: {
int sel;
int rad = 4; // default catchment radious
if (WP(w,def_d).close)
return;
@@ -144,25 +154,13 @@ static void BuildAirportPickerWndProc(Window *w, WindowEvent *e)
// select default the coverage area to 'Off' (8)
w->click_state = ((1<<3) << sel) | ((1<<8) << _station_show_coverage);
SetTileSelectSize(_airport_size_x[sel],_airport_size_y[sel]);
if (_patches.modified_catchment) {
switch (sel) {
case AT_OILRIG: rad = CA_AIR_OILPAD; break;
case AT_HELIPORT: rad = CA_AIR_HELIPORT; break;
case AT_SMALL: rad = CA_AIR_SMALL; break;
case AT_LARGE: rad = CA_AIR_LARGE; break;
case AT_METROPOLITAN: rad = CA_AIR_METRO; break;
case AT_INTERNATIONAL: rad = CA_AIR_INTER; break;
}
}
if (_station_show_coverage) SetTileSelectBigSize(-rad, -rad, 2 * rad, 2 * rad);
if (_station_show_coverage) SetTileSelectBigSize(-4, -4, 8, 8);
DrawWindowWidgets(w);
// strings such as 'Size' and 'Coverage Area'
DrawStringCentered(74, 16, STR_305B_SIZE, 0);
DrawStringCentered(74, 78, STR_3066_COVERAGE_AREA_HIGHLIGHT, 0);
DrawStationCoverageAreaText(2, 104, (uint)-1, rad);
DrawStationCoverageAreaText(2, 104, (uint)-1);
break;
}
@@ -173,12 +171,12 @@ static void BuildAirportPickerWndProc(Window *w, WindowEvent *e)
break;
case 3: case 4: case 5: case 6: case 7:
_selected_airport_type = e->click.widget - 3;
SndPlayFx(SND_15_BEEP);
SndPlayFx(0x13);
SetWindowDirty(w);
break;
case 8: case 9:
_station_show_coverage = e->click.widget - 8;
SndPlayFx(SND_15_BEEP);
SndPlayFx(0x13);
SetWindowDirty(w);
break;
}

View File

@@ -4,6 +4,10 @@
#include "stdafx.h"
#include "macros.h"
// don't forget to change the airport_depots too for larger mapsizes. TILE_X_BITS 16
// won't fit in uint16 for example and overflow will occur in the checking code!
// TrueLight -- So make it a TileIndex..
typedef struct AirportMovingData {
int x,y;
byte flag;
@@ -263,7 +267,7 @@ static const AirportMovingData _airport_moving_data_oilrig[9] = {
/////**********Movement Machine on Airports*********************///////
// first element of depots array tells us how many depots there are (to know size of array)
// this may be changed later when airports are moved to external file
static const TileIndex _airport_depots_country[] = {TILE_XY(3,0)};
static const TileIndex _airport_depots_country[] = {1, TILE_XY(3,0)};
static const AirportFTAbuildup _airport_fta_country[] = {
{ 0,HANGAR,NOTHING_block,1},
{ 1,255,AIRPORT_BUSY_block,0}, {1,HANGAR,0,0}, {1,TERM1,TERM1_block,2}, {1,TERM2,0,4}, {1,HELITAKEOFF,0,19}, {1,0,0,6},
@@ -293,7 +297,7 @@ static const AirportFTAbuildup _airport_fta_country[] = {
{MAX_ELEMENTS,0,0,0} // end marker. DO NOT REMOVE
};
static const TileIndex _airport_depots_city[] = {TILE_XY(5,0)};
static const TileIndex _airport_depots_city[] = {1, TILE_XY(5,0)};
static const AirportFTAbuildup _airport_fta_city[] = {
{ 0,HANGAR,NOTHING_block,1}, {0,TAKEOFF,OUT_WAY_block,1}, {0,0,0,1},
{ 1,255,TAXIWAY_BUSY_block,0}, {1,HANGAR,0,0}, {1,TERM2,0,6}, {1,TERM3,0,6}, {1,0,0,7}, // for all else, go to 7
@@ -327,7 +331,7 @@ static const AirportFTAbuildup _airport_fta_city[] = {
{MAX_ELEMENTS,0,0,0} // end marker. DO NOT REMOVE
};
static const TileIndex _airport_depots_metropolitan[] = {TILE_XY(5,0)};
static const TileIndex _airport_depots_metropolitan[] = {1, TILE_XY(5,0)};
static const AirportFTAbuildup _airport_fta_metropolitan[] = {
{ 0,HANGAR,NOTHING_block,1},
{ 1,255,TAXIWAY_BUSY_block,0}, {1,HANGAR,0,0}, {1,TERM2,0,6}, {1,TERM3,0,6}, {1,0,0,7}, // for all else, go to 7
@@ -363,7 +367,7 @@ static const AirportFTAbuildup _airport_fta_metropolitan[] = {
{MAX_ELEMENTS,0,0,0} // end marker. DO NOT REMOVE
};
static const TileIndex _airport_depots_international[] = {TILE_XY(0,3), TILE_XY(6,1)};
static const TileIndex _airport_depots_international[] = {2, TILE_XY(0,3), TILE_XY(6,1)};
static const AirportFTAbuildup _airport_fta_international[] = {
{ 0,HANGAR,NOTHING_block,2}, {0,255,TERM_GROUP1_block,0}, {0,255,TERM_GROUP2_ENTER1_block,1}, {0,HELITAKEOFF,HELIPAD1_block,2}, {0,0,0,2},
{ 1,HANGAR,NOTHING_block,3}, {1,255,HANGAR2_AREA_block,1}, {1,HELITAKEOFF,HELIPAD2_block,3}, {1,0,0,3},
@@ -425,7 +429,7 @@ static const AirportFTAbuildup _airport_fta_international[] = {
{MAX_ELEMENTS,0,0,0} // end marker. DO NOT REMOVE
};
// heliports, oilrigs don't have depots
static const TileIndex _airport_depots_heliport_oilrig[] = {0};
static const AirportFTAbuildup _airport_fta_heliport_oilrig[] = {
{0,HELIPAD1,HELIPAD1_block,1},
{1,HELITAKEOFF,NOTHING_block,0}, // takeoff

View File

@@ -9,18 +9,15 @@
BMidiSynthFile midiSynthFile;
static char *bemidi_start(char **parm)
{
return NULL;
static char *bemidi_start(char **parm) {
return NULL;
}
static void bemidi_stop(void)
{
midiSynthFile.UnloadFile();
static void bemidi_stop(void) {
midiSynthFile.UnloadFile();
}
static void bemidi_play_song(const char *filename)
{
static void bemidi_play_song(const char *filename) {
bemidi_stop();
entry_ref midiRef;
get_ref_for_path(filename, &midiRef);
@@ -28,19 +25,22 @@ static void bemidi_play_song(const char *filename)
midiSynthFile.Start();
}
static void bemidi_stop_song(void)
{
static void bemidi_stop_song(void) {
midiSynthFile.UnloadFile();
}
static bool bemidi_is_playing(void)
{
return !midiSynthFile.IsFinished();
static bool bemidi_is_playing(void) {
if(midiSynthFile.IsFinished() == true)
{
return 0;
} else {
return 1;
}
}
static void bemidi_set_volume(byte vol)
{
fprintf(stderr, "BeMidi: Set volume not implemented\n");
static void bemidi_set_volume(byte vol) {
fprintf(stderr, "BeMidi: Set volume not implemented\n");
}
const HalMusicDriver _bemidi_music_driver = {

View File

@@ -1,13 +1,11 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "map.h"
#include "window.h"
#include "gui.h"
#include "viewport.h"
#include "gfx.h"
#include "command.h"
#include "sound.h"
static struct BridgeData {
int count;
@@ -24,9 +22,9 @@ extern const PalSpriteID _bridge_sprites[MAX_BRIDGES];
extern const uint16 _bridge_speeds[MAX_BRIDGES];
extern const StringID _bridge_material[MAX_BRIDGES];
void CcBuildBridge(bool success, uint tile, uint32 p1, uint32 p2)
static void CcBuildBridge(bool success, uint tile, uint32 p1, uint32 p2)
{
if (success) SndPlayTileFx(SND_27_BLACKSMITH_ANVIL, tile);
if (success) { SndPlayTileFx(0x25, tile); }
}
static void BuildBridge(Window *w, int i)
@@ -47,9 +45,9 @@ static void BuildBridgeWndProc(Window *w, WindowEvent *e)
for(i=0; i < 4 && i + w->vscroll.pos < _bridge.count; i++) {
int ind = _bridge.indexes[i + w->vscroll.pos];
SetDParam(2, _bridge.costs[i + w->vscroll.pos]);
SetDParam(1, (_bridge_speeds[ind] >> 4) * 10);
SetDParam(0, _bridge_material[ind]);
SET_DPARAM32(2, _bridge.costs[i + w->vscroll.pos]);
SET_DPARAM16(1, (_bridge_speeds[ind] >> 4) * 10);
SET_DPARAM16(0, _bridge_material[ind]);
DrawSprite(_bridge_sprites[ind], 3, 15 + i * 22);
DrawString(44, 15 + i*22 , STR_500D, 0);

View File

@@ -1,74 +0,0 @@
#include "stdafx.h"
#include "ttd.h"
#include "functions.h"
// If you add a callback for DoCommandP, also add the callback in here
// see below for the full list!
// If you don't do it, it won't work across the network!!
/* aircraft_gui.c */
CommandCallback CcBuildAircraft;
/* airport_gui.c */
CommandCallback CcBuildAirport;
/* bridge_gui.c */
CommandCallback CcBuildBridge;
/* dock_gui.c */
CommandCallback CcBuildDocks;
CommandCallback CcBuildCanal;
/* main_gui.c */
CommandCallback CcPlaySound10;
CommandCallback CcPlaceSign;
CommandCallback CcTerraform;
//CommandCallback CcDemolish;
CommandCallback CcBuildTown;
/* rail_gui.c */
CommandCallback CcPlaySound1E;
CommandCallback CcRailDepot;
CommandCallback CcStation;
CommandCallback CcBuildRailTunnel;
/* road_gui.c */
CommandCallback CcPlaySound1D;
CommandCallback CcBuildRoadTunnel;
CommandCallback CcRoadDepot;
/* roadveh_gui.c */
CommandCallback CcBuildRoadVeh;
/* ship_gui.c */
CommandCallback CcBuildShip;
/* train_gui.c */
CommandCallback CcBuildWagon;
CommandCallback CcBuildLoco;
CommandCallback *_callback_table[] = {
/* 0x00 */ NULL,
/* 0x01 */ CcBuildAircraft,
/* 0x02 */ CcBuildAirport,
/* 0x03 */ CcBuildBridge,
/* 0x04 */ CcBuildCanal,
/* 0x05 */ CcBuildDocks,
/* 0x06 */ CcBuildLoco,
/* 0x07 */ CcBuildRoadVeh,
/* 0x08 */ CcBuildShip,
/* 0x09 */ CcBuildTown,
/* 0x0A */ CcBuildRoadTunnel,
/* 0x0B */ CcBuildRailTunnel,
/* 0x0C */ CcBuildWagon,
/* 0x0D */ CcRoadDepot,
/* 0x0E */ CcRailDepot,
/* 0x0F */ CcPlaceSign,
/* 0x10 */ CcPlaySound10,
/* 0x11 */ CcPlaySound1D,
/* 0x12 */ CcPlaySound1E,
/* 0x13 */ CcStation,
/* 0x14 */ CcTerraform
};
const int _callback_table_count = sizeof (_callback_table) / sizeof (*_callback_table);

View File

@@ -1,7 +0,0 @@
#ifndef CALLBACK_TABLE_H
#define CALLBACK_TABLE_H
extern CommandCallback *_callback_table[];
extern const int _callback_table_count;
#endif

View File

@@ -1,92 +1,3 @@
0.3.5 (2004-12-24)
------------------------------------------------------------------------
- Feature: [Network] New network, very stable, a lot of new features
- Feature: [Network] Ingame Serverlist (with online game-servers to join)
- Feature: [Network] Webbased Serverlist: http://servers.openttd.org/
- Feature: [Network] Added dedicated server support
- Feature: [Network] Cheat protection in MultiPlayer
- Feature: [Network] Patch settings are also synced with the server
- Feature: [Network] Chat
- Feature: Custom currency settings
- Feature: Per-station vehicle lists
- Feature: More realistically sized catchment areas
- Feature: Sticky windows
- Feature: Even better support for newgrf-files
- Feature: Implement improved vehicle loading algorithm
- Feature: Even more advanced console
- Feature: Game compiles under BEOS_SERVER
- Feature: Game compiles under OS/2 (no network-support)
- Feature: OpenTTD runs with the grf files of the DOS version
- Feature: [Big Endian computers, which are mac and MorphOS]: are able to load savegames by TTD(Patch)
- Feature: Many more new things...
- Add: 'l' openes the landscaping toolbar globally
- Add: Make the town sometimes build streets on slopes
- Add: Manpage
- Add: New checkpoint grahpics
- Add: SHIFT+DEL now deletes all non-vital windows (only status bar and main bar remain)
- Add: Windows now shows revision, release information in title bar
- Add: Windows snap at each other
- Change: [OSX build] Moved data and lang folders inside OpenTTD. This got rid of the package system too, making installing/updating easier
- Fix: [OSX build] Music is now on by default again
- Fix: [OSX build] Made error opens the console
- Fix: [SDL] Added a confirmation dialog when quitting the game
- Fix: A train can leave and enter the same depot at the same time, then the trai simply got stuck
- Fix: Crash when making png screenshot with odd resolution (Tron)
- Fix: Directories in *nix are now sorted alphabetically in ascending order (Tron).
- Fix: Do not consider a road station as street when growing the town
- Fix: Engines from other climates do not appear any more when never_expire_vehicles is enabled
- Fix: Game options (like drive side) are not taken from the scenario when using 'new game' command
- Fix: Order checker now correctly detects station with invalid facilities
- Fix: Polished GUI in a lot of ways
- Fix: Saving or loading a map doesnt pauses the game anymore
- Fix: Some bridge part isn't displayed transparent in transparent mode
- Fix: Starting with -r option allows all resolutions (Tron)
- Fix: The pathfinder no longer sees rail with an other owner as a possible route.
- Fix: Unable to select other screenshot format in Game Option
- Fix: Unwanted town renaming
- Fix: Vehicles slow down under bridge if the track is on a foundation
- Fix: You can no longer change name of waypoints whom are owned by somebody else
- Fix: [ 1090313 ] Shares are now also sold when a company goes bankrupt
- Fix: [ 1087701 ] It is no longer possible to crash trains of other companies by building a depot close to a station. (even more: trains do no longer enter tiles that do not belong to his owner)
- Fix: [ 1087403 ] Crashed trains aren't reported to have too few orders any more
- Fix: [ 1086375 ] Backup-order-list was not closed with an OT_NOTHING,
- Fix: [ 1085255 ] Docks now have a button to display the catchment area
- Fix: [ 1070274 ] Invisible trains. Weird macros and MSVC optimizing don't always mix. (Tron)
- Fix: [ 1068269 ] Number of passangers and mail in exclusive test offer window is swapped
- Fix: [ 1066504 ] Pause key pauses the game
- Fix: [ 1066121 ] Resetting file name after deleting a file (dannys9)
- Fix: [ 1066114 ] Code error in win32.c Thanks Shai
- Fix: [ 1065247 ] Windows can be placed behind toolbar
- Fix: [ 1064742 ] Editor Map-Menu wrong String
- Fix: [ 1058809 ] Always report a bus/lorry station as unpassable
- Fix: [ 1053397 ] Refit train window stays open
- Fix: [ 1050993 ] Incorrect Tooltip in Road Vehicle List.
- Fix: [ 1048596 ] Monorail and Maglev sounds are swapped
- Fix: [ 1040119 ] Flooded wagons in depots don't keep constantly exploding any more
- Fix: [ 1035303 ] Bug about lowering tracks built on slopes
- Fix: [ 1035066 ] 'Allow goto depot' turned off, no checkpoints in orders
- Fix: [ 1034318 ] Place sign and blue message box
- Fix: [ 1033947 ] Wrong mapping between music titles and songs
- Fix: [ 1030393 ] Some screensizes crashes OTTD. Fix in general bug that only allows resolutions which were multiple of 8 in width and height. Also use closest possible resolution in fullscreen if window size is not a valid resolution (Tron)
- Fix: [ 1030275 ] 'Service at' orders ignored after 2090. After 2090 year is reset to 1. Jan 2090, so most of the time, last service was in the future and no service ensured.
- Fix: [ 1029064 ] Building a station acted weird in some rare situations
- Fix: [ 1022227 ] Ships could unload cargo at stations without docks
- Fix: [ 999669 ] Wrong trees (toyland's) in sub-tropical landscape style
- Fix: [ 993500 ] High bridge rendering error
- Fix: [ 991101 ] Disabled buttons flicker no more
- Fix: [ 985925 ] Start/stop flag in train depots always works, regardless of the horizontal scroll position
- Fix: [ 985439 ] Un-owned rail. Trains could cross competitor's tracks if there was a road-crossing over it.
- Fix: [ 982611 ] Pathfinding bug; train likes the roundabout. If train needs servicing it will now look 16 tiles along the track instead of 12 tiles manhattan style (blathijs)
- Fix: [ 967096 ] Fullscreen. New button 'Fullscreen' in 'Game Options' menu which lets you set fullscreen ingame.
- Fix: [ 958098 ] No longer road/rail crossing signals hang when a train is reversed at the wrong moment (Yeah, our longest open bug finally fixed :) :) :))
- Fix: [ 926105 ] Ctrl + d bug. Longest outstanding bug has been fixed \o/ 2004-03-30 (Tron)
- Language: Added Spanish
- Language: Added Catalan
- Language: Added Icelandic
- Language: Updated most languages
- Fix: Many more things....
0.3.4 (2004-09-14)
------------------------------------------------------------------------
- Add: Dutch translation

View File

@@ -1,7 +1,5 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "map.h"
#include "viewport.h"
#include "command.h"
@@ -94,15 +92,11 @@ static int TerraformProc(TerraformerState *ts, uint tile, int mode)
if ((_map_type_and_height[tile] >> 4) == MP_RAILWAY) {
static const byte _railway_modes[4] = {8, 0x10, 4, 0x20};
static const byte _railway_dangslopes[4] = {0xd, 0xe, 7, 0xb};
static const byte _railway_dangslopes2[4] = {0x2, 0x1, 0x8, 0x4};
// Nothing could be built at the steep slope - this avoids a bug
// when you have a single diagonal track in one corner on a
// basement and then you raise/lower the other corner.
int tileh = GetTileSlope(tile, NULL) & 0xF;
if (tileh == _railway_dangslopes[mode] ||
tileh == _railway_dangslopes2[mode]) {
_terraform_err_tile = tile;
// basement and then you raise the other corner.
if ((GetTileSlope(tile, NULL)&0xF) == _railway_dangslopes[mode]) {
_error_message = STR_1008_MUST_REMOVE_RAILROAD_TRACK;
return -1;
}
@@ -525,7 +519,7 @@ uint GetSlopeTileh_Clear(TileInfo *ti)
return ti->tileh;
}
static void GetAcceptedCargo_Clear(uint tile, AcceptedCargo ac)
static void GetAcceptedCargo_Clear(uint tile, AcceptedCargo *ac)
{
/* unused */
}
@@ -763,7 +757,7 @@ static void ClickTile_Clear(uint tile)
/* not used */
}
static uint32 GetTileTrackStatus_Clear(uint tile, TransportType mode)
uint32 GetTileTrackStatus_Clear(uint tile, TransportType mode)
{
return 0;
}

View File

@@ -1,11 +1,8 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "map.h"
#include "gui.h"
#include "command.h"
#include "player.h"
#include "network.h"
#define DEF_COMMAND(yyyy) int32 yyyy(int x, int y, uint32 flags, uint32 p1, uint32 p2)
@@ -33,9 +30,9 @@ DEF_COMMAND(CmdSellLandArea);
DEF_COMMAND(CmdBuildTunnel);
DEF_COMMAND(CmdBuildTrainDepot);
DEF_COMMAND(CmdBuildTrainWaypoint);
DEF_COMMAND(CmdRenameWaypoint);
DEF_COMMAND(CmdRemoveTrainWaypoint);
DEF_COMMAND(CmdBuildTrainCheckpoint);
DEF_COMMAND(CmdRenameCheckpoint);
DEF_COMMAND(CmdRemoveTrainCheckpoint);
DEF_COMMAND(CmdBuildTruckStation);
@@ -130,7 +127,6 @@ DEF_COMMAND(CmdSetRoadDriveSide);
DEF_COMMAND(CmdSetTownNameType);
DEF_COMMAND(CmdChangeDifficultyLevel);
DEF_COMMAND(CmdChangePatchSetting);
DEF_COMMAND(CmdStartStopShip);
DEF_COMMAND(CmdSellShip);
@@ -152,7 +148,6 @@ DEF_COMMAND(CmdCloneOrder);
DEF_COMMAND(CmdClearArea);
DEF_COMMAND(CmdGiveMoney);
DEF_COMMAND(CmdMoneyCheat);
DEF_COMMAND(CmdBuildCanal);
DEF_COMMAND(CmdBuildLock);
@@ -185,9 +180,9 @@ static CommandProc * const _command_proc_table[] = {
CmdBuildTunnel, /* 13 */
CmdRemoveFromRailroadStation, /* 14 */
CmdConvertRail, /* 15 */
CmdBuildTrainWaypoint, /* 16 */
CmdRenameWaypoint, /* 17 */
CmdRemoveTrainWaypoint, /* 18 */
CmdBuildTrainCheckpoint, /* 16 */
CmdRenameCheckpoint, /* 17 */
CmdRemoveTrainCheckpoint, /* 18 */
CmdBuildTruckStation, /* 19 */
NULL, /* 20 */
CmdBuildBusStation, /* 21 */
@@ -305,8 +300,6 @@ static CommandProc * const _command_proc_table[] = {
CmdBuildManySignals, /* 110 */
//CmdDestroyIndustry, /* 109 */
CmdDestroyCompanyHQ, /* 111 */
CmdGiveMoney, /* 112 */
CmdChangePatchSetting, /* 113 */
};
int32 DoCommandByTile(TileIndex tile, uint32 p1, uint32 p2, uint32 flags, uint procc)
@@ -392,6 +385,15 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
assert(_docommand_recursive == 0);
if (_networking && !(cmd & CMD_NET_INSTANT) && _pause) {
// When the game is paused, and we are in a network game
// we do not allow any commands. This is because
// of some technical reasons
ShowErrorMessage(-1, STR_MULTIPLAYER_PAUSED, x, y);
_docommand_recursive = 0;
return true;
}
_error_message = INVALID_STRING_ID;
_error_message_2 = cmd >> 16;
_additional_cash_required = 0;
@@ -410,25 +412,19 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
assert((cmd & 0xFF) < lengthof(_command_proc_table));
proc = _command_proc_table[cmd & 0xFF];
// Some commands have a different output in dryrun then the realrun
// e.g.: if you demolish a whole town, the dryrun would say okay.
// but by really destroying, your rating drops and at a certain point
// it will fail. so res and res2 are different
// CMD_REMOVE_ROAD: This command has special local authority
// restrictions which may cause the test run to fail (the previous
// road fragments still stay there and the town won't let you
// disconnect the road system), but the exec will succeed and this
// fact will trigger an assertion failure. --pasky
// this command is a notest command?
notest =
(cmd & 0xFF) == CMD_CLEAR_AREA ||
(cmd & 0xFF) == CMD_CONVERT_RAIL ||
(cmd & 0xFF) == CMD_LEVEL_LAND ||
(cmd & 0xFF) == CMD_REMOVE_ROAD;
(cmd & 0xFF) == CMD_TRAIN_GOTO_DEPOT;
if (_networking && (cmd & CMD_ASYNC)) notest = true;
_docommand_recursive = 1;
// cost estimation only?
if (_shift_pressed && _current_player == _local_player && !(cmd & CMD_NETWORK_COMMAND)) {
if (_shift_pressed && _current_player == _local_player && !(cmd & CMD_DONT_NETWORK)) {
// estimate the cost.
res = proc(x, y, flags, p1, p2);
if ((uint32)res >> 16 == 0x8000) {
@@ -443,26 +439,30 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
}
if (!((cmd & CMD_NO_TEST_IF_IN_NETWORK) && _networking)) {
// unless the command is a notest command, check if it can be executed.
if (!notest) {
// first test if the command can be executed.
res = proc(x,y, flags, p1, p2);
if ((uint32)res >> 16 == 0x8000) {
if (res & 0xFFFF) _error_message = res & 0xFFFF;
goto show_error;
}
// no money? Only check if notest is off
if (!notest && res != 0 && !CheckPlayerHasMoney(res)) goto show_error;
// no money?
if (res != 0 && !CheckPlayerHasMoney(res)) goto show_error;
}
#ifdef ENABLE_NETWORK
// If we are in network, and the command is not from the network
// send it to the command-queue and abort execution
if (_networking && !(cmd & CMD_NETWORK_COMMAND)) {
NetworkSend_Command(tile, p1, p2, cmd, callback);
_docommand_recursive = 0;
return true;
// put the command in a network queue and execute it later?
if (_networking && !(cmd & CMD_DONT_NETWORK)) {
if (!(cmd & CMD_NET_INSTANT)) {
NetworkSendCommand(tile, p1, p2, cmd, callback);
_docommand_recursive = 0;
return true;
} else {
// Instant Command ... Relay and Process then
NetworkSendCommand(tile, p1, p2, cmd, callback);
}
}
#endif /* ENABLE_NETWORK */
// update last build coordinate of player.
if ( tile != 0 && _current_player < MAX_PLAYERS) DEREF_PLAYER(_current_player)->last_build_coordinate = tile;
@@ -471,9 +471,7 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
_yearly_expenses_type = 0;
res2 = proc(x,y, flags|DC_EXEC, p1, p2);
// If notest is on, it means the result of the test can be different then
// the real command.. so ignore the test
if (!notest && !((cmd & CMD_NO_TEST_IF_IN_NETWORK) && _networking)) {
if (!notest) {
assert(res == res2); // sanity check
} else {
if ((uint32)res2 >> 16 == 0x8000) {
@@ -488,7 +486,7 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
if (res2 != 0)
ShowCostOrIncomeAnimation(x, y, GetSlopeZ(x, y), res2);
if (_additional_cash_required) {
SetDParam(0, _additional_cash_required);
SET_DPARAM32(0, _additional_cash_required);
ShowErrorMessage(STR_0003_NOT_ENOUGH_CASH_REQUIRES, _error_message_2, x,y);
if (res2 == 0) goto callb_err;
}

View File

@@ -20,9 +20,9 @@ enum {
CMD_REMOVE_FROM_RAILROAD_STATION = 14,
CMD_CONVERT_RAIL = 15,
CMD_BUILD_TRAIN_WAYPOINT = 16,
CMD_RENAME_WAYPOINT = 17,
CMD_REMOVE_TRAIN_WAYPOINT = 18,
CMD_BUILD_TRAIN_CHECKPOINT = 16,
CMD_RENAME_CHECKPOINT = 17,
CMD_REMOVE_TRAIN_CHECKPOINT = 18,
CMD_BUILD_TRUCK_STATION = 19,
CMD_BUILD_BUS_STATION = 21,
@@ -146,8 +146,6 @@ enum {
//CMD_DESTROY_INDUSTRY = 109,
CMD_DESTROY_COMPANY_HQ = 111,
CMD_GIVE_MONEY = 112,
CMD_CHANGE_PATCH_SETTING = 113,
};
enum {
@@ -168,8 +166,9 @@ enum {
enum {
CMD_AUTO = 0x200,
CMD_NO_WATER = 0x400,
CMD_NETWORK_COMMAND = 0x800, // execute the command without sending it on the network
CMD_NO_TEST_IF_IN_NETWORK = 0x1000, // When enabled, the command will bypass the no-DC_EXEC round if in network
CMD_DONT_NETWORK = 0x800, // execute the command without sending it on the network
CMD_ASYNC = 0x1000, // execute the command asynchronously without testing first in networking
CMD_NET_INSTANT = 0x2000,
};
//#define return_cmd_error(errcode) do { _error_message=(errcode); return CMD_ERROR; } while(0)

24
configure vendored Normal file
View File

@@ -0,0 +1,24 @@
#!/bin/sh -
SDLCONFIG=`which sdl-config || which sdl11-config || which sdl12-config || echo `
if [ -n "$SDLCONFIG" ] ; then
echo "SDL config is located at: $SDLCONFIG"
sed -e"s@XX_SDL_CONFIG_PLACEHOLDER_XX@$SDLCONFIG@g" < Jamfile.next > tmp && mv tmp Jamfile
else
echo "********************************"
echo "ERROR! SDL CONFIG WAS NOT FOUND!"
echo "********************************"
exit 1
fi
echo "Configure complete. Now use 'jam' to build"
echo "Add -sWITH_PNG=<dir to png.h> to build with PNG support"
echo "Add -sWITH_ZLIB=1 to enable zlib savegame support"
echo "Add -sRELEASE=1 to build an optimized executable"
echo "Add -sWITH_BONE_NETWORKING=1 to build with BeOS BONE networking support"
echo "Add -sBEOS_MIDI=1 to enable BeOS native MIDI (libmidi.so) music output"
echo ""
echo "For people using make:"
echo "write make (or gmake)"
echo "configure have nothing to do with the makefile"

2037
console.c

File diff suppressed because it is too large Load Diff

162
console.h
View File

@@ -1,13 +1,19 @@
#ifndef CONSOLE_H
#define CONSOLE_H
// ** console ** //
enum {
ICONSOLE_OPENED=0,
ICONSOLE_CLOSED,
} _iconsole_modes;
// ** console parser ** //
typedef enum _iconsole_var_types {
ICONSOLE_VAR_NONE,
enum {
ICONSOLE_VAR_NONE=0,
ICONSOLE_VAR_BOOLEAN,
ICONSOLE_VAR_BYTE,
ICONSOLE_VAR_UINT8,
ICONSOLE_VAR_UINT16,
ICONSOLE_VAR_UINT32,
ICONSOLE_VAR_INT16,
@@ -15,83 +21,47 @@ typedef enum _iconsole_var_types {
ICONSOLE_VAR_STRING,
ICONSOLE_VAR_POINTER,
ICONSOLE_VAR_REFERENCE,
ICONSOLE_VAR_UNKNOWN
ICONSOLE_VAR_UNKNOWN,
} _iconsole_var_types;
typedef enum {
ICONSOLE_FULL,
ICONSOLE_OPENED,
ICONSOLE_CLOSED
} _iconsole_modes;
typedef enum _iconsole_hook_types {
enum {
ICONSOLE_HOOK_ACCESS,
ICONSOLE_HOOK_BEFORE_CHANGE,
ICONSOLE_HOOK_BEFORE_EXEC,
ICONSOLE_HOOK_AFTER_CHANGE,
ICONSOLE_HOOK_AFTER_EXEC
ICONSOLE_HOOK_AFTER_EXEC,
} _iconsole_hook_types;
struct _iconsole_var;
typedef bool (*iconsole_var_hook)(struct _iconsole_var* hook_var);
typedef struct {
// -------------- //
void * addr;
byte * name;
// -------------- //
void * hook_access;
void * hook_before_exec;
void * hook_after_exec;
// -------------- //
void * _next;
} _iconsole_cmd;
typedef struct _iconsole_var {
typedef struct {
// --------------- //
union {
void* addr;
bool* bool_;
byte* byte_;
uint16* uint16_;
uint32* uint32_;
int16* int16_;
int32* int32_;
char* string_;
struct _iconsole_var* reference_;
} data;
char* name;
_iconsole_var_types type;
void * addr;
const byte * name;
byte type;
// -------------- //
iconsole_var_hook hook_access;
iconsole_var_hook hook_before_change;
iconsole_var_hook hook_after_change;
void * hook_access;
void * hook_before_change;
void * hook_after_change;
// -------------- //
struct _iconsole_var* _next;
void * _next;
bool _malloc;
} _iconsole_var;
struct _iconsole_cmd;
typedef bool (*iconsole_cmd_hook)(struct _iconsole_cmd* hook_cmd);
typedef _iconsole_var* (*_iconsole_cmd_addr)(byte argc, char* argv[], byte argt[]);
typedef struct _iconsole_cmd {
// -------------- //
_iconsole_cmd_addr addr;
char* name;
// -------------- //
iconsole_cmd_hook hook_access;
iconsole_cmd_hook hook_before_exec;
iconsole_cmd_hook hook_after_exec;
// -------------- //
void* _next;
} _iconsole_cmd;
void IConsoleAliasRegister(const char* name, const char* cmdline);
typedef struct _iconsole_alias {
// -------------- //
char * cmdline;
char* name;
void* _next;
} _iconsole_alias;
_iconsole_alias* IConsoleAliasGet(const char* name);
} _iconsole_var;
// ** console parser ** //
_iconsole_cmd* _iconsole_cmds; // list of registred commands
_iconsole_var* _iconsole_vars; // list of registred vars
_iconsole_alias* _iconsole_aliases; // list of registred aliases
_iconsole_cmd * _iconsole_cmds; // list of registred commands
_iconsole_var * _iconsole_vars; // list of registred vars
// ** console colors ** //
VARDEF byte _iconsole_color_default;
@@ -99,61 +69,61 @@ VARDEF byte _iconsole_color_error;
VARDEF byte _iconsole_color_warning;
VARDEF byte _iconsole_color_debug;
VARDEF byte _iconsole_color_commands;
VARDEF _iconsole_modes _iconsole_mode;
// ** ttd.c functions ** //
void SetDebugString(const char* s);
void SetDebugString(const char *s);
// ** console functions ** //
void IConsoleInit(void);
void IConsoleClear(void);
void IConsoleFree(void);
void IConsoleResize(void);
void IConsoleSwitch(void);
void IConsoleClose(void);
void IConsoleOpen(void);
void IConsoleClearCommand();
void IConsoleInit();
void IConsoleClear();
void IConsoleFree();
void IConsoleResize();
void IConsoleSwitch();
void IConsoleClose();
void IConsoleOpen();
// ** console cmd buffer ** //
void IConsoleCmdBufferAdd(const char* cmd);
void IConsoleCmdBufferAdd(const byte *cmd);
void IConsoleCmdBufferNavigate(signed char direction);
// ** console output ** //
void IConsolePrint(uint16 color_code, const char* string);
void CDECL IConsolePrintF(uint16 color_code, const char* s, ...);
void IConsoleDebug(const char* string);
void IConsoleError(const char* string);
void IConsoleWarning(const char* string);
void IConsolePrint(byte color_code, const byte* string);
void CDECL IConsolePrintF(byte color_code, const char *s, ...);
void IConsoleDebug(byte* string);
void IConsoleError(const byte* string);
void IConsoleWarning(const byte* string);
// *** Commands *** //
void IConsoleCmdRegister(const char* name, _iconsole_cmd_addr addr);
_iconsole_cmd* IConsoleCmdGet(const char* name);
void IConsoleCmdRegister(const byte * name, void * addr);
_iconsole_cmd * IConsoleCmdGet(const byte * name);
// *** Variables *** //
void IConsoleVarRegister(const char* name, void* addr, _iconsole_var_types type);
void IConsoleVarMemRegister(const char* name, _iconsole_var_types type);
void IConsoleVarInsert(_iconsole_var* item_new, const char* name);
_iconsole_var* IConsoleVarGet(const char* name);
_iconsole_var* IConsoleVarAlloc(_iconsole_var_types type);
void IConsoleVarFree(_iconsole_var* var);
void IConsoleVarSetString(_iconsole_var* var, const char* string);
void IConsoleVarSetValue(_iconsole_var* var, int value);
void IConsoleVarDump(const _iconsole_var* var, const char* dump_desc);
void IConsoleVarRegister(const byte * name, void * addr, byte type);
void IConsoleVarMemRegister(const byte * name, byte type);
void IConsoleVarInsert(_iconsole_var * var, const byte * name);
_iconsole_var * IConsoleVarGet(const byte * name);
_iconsole_var * IConsoleVarAlloc(byte type);
void IConsoleVarFree(_iconsole_var * var);
void IConsoleVarSetString(_iconsole_var * var, const byte * string);
void IConsoleVarSetValue(_iconsole_var * var, int value);
void IConsoleVarDump(_iconsole_var * var, const byte * dump_desc);
// *** Parser *** //
void IConsoleCmdExec(const char* cmdstr);
void IConsoleCmdExec(const byte* cmdstr);
// ** console std lib ** //
void IConsoleStdLibRegister(void);
void IConsoleStdLibRegister();
// ** hook code ** //
void IConsoleVarHook(const char* name, _iconsole_hook_types type, iconsole_var_hook proc);
void IConsoleCmdHook(const char* name, _iconsole_hook_types type, iconsole_cmd_hook proc);
bool IConsoleVarHookHandle(_iconsole_var* hook_var, _iconsole_hook_types type);
bool IConsoleCmdHookHandle(_iconsole_cmd* hook_cmd, _iconsole_hook_types type);
void IConsoleVarHook(const byte * name, byte type, void * proc);
void IConsoleCmdHook(const byte * name, byte type, void * proc);
bool IConsoleVarHookHandle(_iconsole_var * hook_var, byte type);
bool IConsoleCmdHookHandle(_iconsole_cmd * hook_cmd, byte type);
#endif /* CONSOLE_H */

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -1,268 +0,0 @@
#include "stdafx.h"
#include "ttd.h"
#include "network.h"
#include "hal.h"
#ifdef ENABLE_NETWORK
#include "gfx.h"
#include "window.h"
#include "command.h"
#include "console.h"
#ifdef WIN32
# include <windows.h> /* GetTickCount */
# include <conio.h>
#endif
#ifdef __OS2__
# include <sys/time.h> /* gettimeofday */
# include <sys/types.h>
# include <unistd.h>
# include <conio.h>
# define STDIN 0 /* file descriptor for standard input */
#endif
#ifdef UNIX
# include <sys/time.h> /* gettimeofday */
# include <sys/types.h>
# include <unistd.h>
# include <signal.h>
# define STDIN 0 /* file descriptor for standard input */
#endif
#ifdef __MORPHOS__
/* voids the fork, option will be disabled for morphos build anyway, because MorphOS
* doesn't support forking (could only implemented with lots of code changes here).
*/
int morphos_dummy_fork() { return -1; }
#define fork morphos_dummy_fork
#endif
// This file handles all dedicated-server in- and outputs
static void *_dedicated_video_mem;
#ifdef UNIX
/* We want to fork our dedicated server */
void DedicatedFork(void)
{
/* Fork the program */
_dedicated_pid = fork();
switch (_dedicated_pid) {
case -1:
perror("Unable to fork");
exit(1);
case 0:
// We're the child
/* Open the log-file to log all stuff too */
_log_file_fd = fopen(_log_file, "a");
if (!_log_file_fd) {
perror("Unable to open logfile");
exit(1);
}
/* Redirect stdout and stderr to log-file */
if (dup2(fileno(_log_file_fd), fileno(stdout)) == -1) {
perror("Re-routing stdout");
exit(1);
}
if (dup2(fileno(_log_file_fd), fileno(stderr)) == -1) {
perror("Re-routing stderr");
exit(1);
}
break;
default:
// We're the parent
printf("Loading dedicated server...\n");
printf(" - Forked to background with pid %d\n", _dedicated_pid);
exit(0);
}
}
/* Signal handlers */
static void DedicatedSignalHandler(int sig)
{
_exit_game = true;
signal(sig, DedicatedSignalHandler);
}
#endif
static const char *DedicatedVideoStart(char **parm) {
_screen.width = _screen.pitch = _cur_resolution[0];
_screen.height = _cur_resolution[1];
_dedicated_video_mem = malloc(_cur_resolution[0]*_cur_resolution[1]);
_debug_net_level = 6;
_debug_misc_level = 0;
#ifdef WIN32
// For win32 we need to allocate an console (debug mode does the same)
CreateConsole();
SetConsoleTitle("OpenTTD Dedicated Server");
#endif
DEBUG(misc,0)("Loading dedicated server...");
return NULL;
}
static void DedicatedVideoStop() { free(_dedicated_video_mem); }
static void DedicatedVideoMakeDirty(int left, int top, int width, int height) {}
static bool DedicatedVideoChangeRes(int w, int h) { return false; }
#ifdef UNIX
static bool InputWaiting()
{
struct timeval tv;
fd_set readfds;
byte ret;
tv.tv_sec = 0;
tv.tv_usec = 1;
FD_ZERO(&readfds);
FD_SET(STDIN, &readfds);
/* don't care about writefds and exceptfds: */
ret = select(STDIN + 1, &readfds, NULL, NULL, &tv);
if (ret > 0)
return true;
else
return false;
}
#else
static bool InputWaiting()
{
return kbhit();
}
#endif
static void DedicatedHandleKeyInput()
{
#ifdef WIN32
char input;
#endif
static char input_line[200] = "";
#if defined(UNIX) || defined(__OS2__)
if (InputWaiting()) {
if (_exit_game)
return;
fgets(input_line, 200, stdin);
// Forget about the final \n (or \r)
strtok(input_line, "\r\n");
IConsoleCmdExec(input_line);
}
#else
if (InputWaiting()) {
input = getch();
printf("%c", input);
if (input != '\r')
snprintf(input_line, 200, "%s%c", input_line, input);
else {
printf("\n");
IConsoleCmdExec(input_line);
input_line[0] = '\0';
}
}
#endif
}
static int DedicatedVideoMainLoop()
{
#ifndef WIN32
struct timeval tim;
#endif
uint32 next_tick;
uint32 cur_ticks;
#ifdef WIN32
next_tick = GetTickCount() + 30;
#else
gettimeofday(&tim, NULL);
next_tick = (tim.tv_usec / 1000) + 30 + (tim.tv_sec * 1000);
#endif
/* Signal handlers */
#ifdef UNIX
signal(SIGTERM, DedicatedSignalHandler);
signal(SIGINT, DedicatedSignalHandler);
signal(SIGQUIT, DedicatedSignalHandler);
#endif
// Load the dedicated server stuff
_is_network_server = true;
_network_dedicated = true;
_switch_mode = SM_NONE;
_network_playas = OWNER_SPECTATOR;
_local_player = OWNER_SPECTATOR;
DoCommandP(0, Random(), InteractiveRandom(), NULL, CMD_GEN_RANDOM_NEW_GAME);
// Done loading, start game!
if (!_networking) {
DEBUG(net, 1)("Dedicated server could not be launced. Aborting..");
return ML_QUIT;
}
while (true) {
InteractiveRandom(); // randomness
if (_exit_game) return ML_QUIT;
if (!_dedicated_forks)
DedicatedHandleKeyInput();
#ifdef WIN32
cur_ticks = GetTickCount();
#else
gettimeofday(&tim, NULL);
cur_ticks = (tim.tv_usec / 1000) + (tim.tv_sec * 1000);
#endif
if (cur_ticks >= next_tick) {
next_tick += 30;
GameLoop();
_screen.dst_ptr = _dedicated_video_mem;
UpdateWindows();
}
CSleep(1);
}
return ML_QUIT;
}
const HalVideoDriver _dedicated_video_driver = {
DedicatedVideoStart,
DedicatedVideoStop,
DedicatedVideoMakeDirty,
DedicatedVideoMainLoop,
DedicatedVideoChangeRes,
};
#else
static void *_dedicated_video_mem;
static const char *DedicatedVideoStart(char **parm) {
DEBUG(misc,0)("OpenTTD compiled without network-support, quiting...");
return NULL;
}
void DedicatedFork(void) {}
static void DedicatedVideoStop() { free(_dedicated_video_mem); }
static void DedicatedVideoMakeDirty(int left, int top, int width, int height) {}
static bool DedicatedVideoChangeRes(int w, int h) { return false; }
static int DedicatedVideoMainLoop() { return ML_QUIT; }
const HalVideoDriver _dedicated_video_driver = {
DedicatedVideoStart,
DedicatedVideoStop,
DedicatedVideoMakeDirty,
DedicatedVideoMainLoop,
DedicatedVideoChangeRes,
};
#endif /* ENABLE_NETWORK */

View File

@@ -1,7 +1,5 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "map.h"
#include "vehicle.h"
#include "command.h"
#include "news.h"
@@ -11,7 +9,6 @@
#include "industry.h"
#include "player.h"
#include "airport_movement.h"
#include "sound.h"
static void DisasterClearSquare(uint tile)
{
@@ -80,9 +77,7 @@ static void InitializeDisasterVehicle(Vehicle *v, int x, int y, byte z, byte dir
v->owner = OWNER_NONE;
v->vehstatus = VS_UNCLICKABLE;
v->u.disaster.image_override = 0;
v->current_order.type = OT_NOTHING;
v->current_order.flags = 0;
v->current_order.station = 0;
v->next_order = 0;
DisasterVehicleUpdateImage(v);
VehiclePositionChanged(v);
@@ -144,7 +139,7 @@ static void DisasterTick_Zeppeliner(Vehicle *v)
++v->tick_counter;
if (v->current_order.station < 2) {
if (v->next_order < 2) {
if (v->tick_counter&1)
return;
@@ -152,26 +147,26 @@ static void DisasterTick_Zeppeliner(Vehicle *v)
SetDisasterVehiclePos(v, gp.x, gp.y, v->z_pos);
if (v->current_order.station == 1) {
if (v->next_order == 1) {
if (++v->age == 38) {
v->current_order.station = 2;
v->next_order = 2;
v->age = 0;
}
if ((v->tick_counter&7)==0) {
CreateEffectVehicleRel(v, 0, -17, 2, EV_SMOKE_3);
}
} else if (v->current_order.station == 0) {
} else if (v->next_order == 0) {
tile = v->tile; /**/
if (IS_TILETYPE(tile, MP_STATION) &&
IS_BYTE_INSIDE(_map5[tile], 8, 0x43) &&
IS_HUMAN_PLAYER(_map_owner[tile])) {
v->current_order.station = 1;
v->next_order = 1;
v->age = 0;
SetDParam(0, _map2[tile]);
SET_DPARAM16(0, _map2[tile]);
AddNewsItem(STR_B000_ZEPPELIN_DISASTER_AT,
NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_VEHICLE, NT_ACCIDENT, 0),
v->index,
@@ -183,7 +178,7 @@ static void DisasterTick_Zeppeliner(Vehicle *v)
return;
}
if (v->current_order.station > 2) {
if (v->next_order > 2) {
if (++v->age <= 13320)
return;
@@ -211,7 +206,7 @@ static void DisasterTick_Zeppeliner(Vehicle *v)
if (++v->age == 1) {
CreateEffectVehicleRel(v, 0, 7, 8, EV_CRASHED_SMOKE);
SndPlayVehicleFx(SND_12_EXPLOSION, v);
SndPlayVehicleFx(0x10, v);
v->u.disaster.image_override = 0xF42;
} else if (v->age == 70) {
v->u.disaster.image_override = 0xF43;
@@ -226,7 +221,7 @@ static void DisasterTick_Zeppeliner(Vehicle *v)
EV_DEMOLISH);
}
} else if (v->age == 350) {
v->current_order.station = 3;
v->next_order = 3;
v->age = 0;
}
@@ -251,7 +246,7 @@ static void DisasterTick_UFO(Vehicle *v)
v->u.disaster.image_override = (++v->tick_counter & 8) ? 0xF45 : 0xF44;
if (v->current_order.station == 0) {
if (v->next_order == 0) {
// fly around randomly
int x = GET_TILE_X(v->dest_tile)*16;
int y = GET_TILE_Y(v->dest_tile)*16;
@@ -265,7 +260,7 @@ static void DisasterTick_UFO(Vehicle *v)
v->dest_tile = TILE_MASK(Random());
return;
}
v->current_order.station = 1;
v->next_order = 1;
FOR_ALL_VEHICLES(u) {
if (u->type == VEH_Road && IS_HUMAN_PLAYER(u->owner)) {
@@ -314,7 +309,7 @@ static void DisasterTick_UFO(Vehicle *v)
// destroy?
if (v->age > 50) {
CreateEffectVehicleRel(v, 0, 7, 8, EV_CRASHED_SMOKE);
SndPlayVehicleFx(SND_12_EXPLOSION, v);
SndPlayVehicleFx(0x10, v);
DeleteDisasterVeh(v);
}
}
@@ -339,8 +334,7 @@ static void DisasterTick_2(Vehicle *v)
GetNewVehiclePosResult gp;
v->tick_counter++;
v->u.disaster.image_override =
(v->current_order.station == 1 && v->tick_counter&4) ? 0xF4F : 0;
v->u.disaster.image_override = (v->next_order == 1 && v->tick_counter&4) ? 0xF4F : 0;
GetNewVehiclePos(v, &gp);
SetDisasterVehiclePos(v, gp.x, gp.y, v->z_pos);
@@ -350,7 +344,7 @@ static void DisasterTick_2(Vehicle *v)
return;
}
if (v->current_order.station == 2) {
if (v->next_order == 2) {
if (!(v->tick_counter&3)) {
Industry *i = DEREF_INDUSTRY(v->dest_tile);
int x = GET_TILE_X(i->xy)*16;
@@ -364,23 +358,23 @@ static void DisasterTick_2(Vehicle *v)
EV_DEMOLISH);
if (++v->age >= 55)
v->current_order.station = 3;
v->next_order = 3;
}
} else if (v->current_order.station == 1) {
} else if (v->next_order == 1) {
if (++v->age == 112) {
Industry *i;
v->current_order.station = 2;
v->next_order = 2;
v->age = 0;
i = DEREF_INDUSTRY(v->dest_tile);
DestructIndustry(i);
SetDParam(0, i->town->index);
SET_DPARAM16(0, i->town->index);
AddNewsItem(STR_B002_OIL_REFINERY_EXPLOSION, NEWS_FLAGS(NM_THIN,NF_VIEWPORT|NF_TILE,NT_ACCIDENT,0), i->xy, 0);
SndPlayTileFx(SND_12_EXPLOSION, i->xy);
SndPlayTileFx(0x10, i->xy);
}
} else if (v->current_order.station == 0) {
} else if (v->next_order == 0) {
int x,y;
uint tile;
int ind;
@@ -398,7 +392,7 @@ static void DisasterTick_2(Vehicle *v)
v->dest_tile = ind = _map2[tile];
if (DEREF_INDUSTRY(ind)->type == IT_OIL_REFINERY) {
v->current_order.station = 1;
v->next_order = 1;
v->age = 0;
}
}
@@ -410,8 +404,7 @@ static void DisasterTick_3(Vehicle *v)
GetNewVehiclePosResult gp;
v->tick_counter++;
v->u.disaster.image_override =
(v->current_order.station == 1 && v->tick_counter&4) ? 0xF53 : 0;
v->u.disaster.image_override = (v->next_order == 1 && v->tick_counter&4) ? 0xF53 : 0;
GetNewVehiclePos(v, &gp);
SetDisasterVehiclePos(v, gp.x, gp.y, v->z_pos);
@@ -421,7 +414,7 @@ static void DisasterTick_3(Vehicle *v)
return;
}
if (v->current_order.station == 2) {
if (v->next_order == 2) {
if (!(v->tick_counter&3)) {
Industry *i = DEREF_INDUSTRY(v->dest_tile);
int x = GET_TILE_X(i->xy)*16;
@@ -435,23 +428,23 @@ static void DisasterTick_3(Vehicle *v)
EV_DEMOLISH);
if (++v->age >= 55)
v->current_order.station = 3;
v->next_order = 3;
}
} else if (v->current_order.station == 1) {
} else if (v->next_order == 1) {
if (++v->age == 112) {
Industry *i;
v->current_order.station = 2;
v->next_order = 2;
v->age = 0;
i = DEREF_INDUSTRY(v->dest_tile);
DestructIndustry(i);
SetDParam(0, i->town->index);
SET_DPARAM16(0, i->town->index);
AddNewsItem(STR_B003_FACTORY_DESTROYED_IN_SUSPICIOUS, NEWS_FLAGS(NM_THIN,NF_VIEWPORT|NF_TILE,NT_ACCIDENT,0), i->xy, 0);
SndPlayTileFx(SND_12_EXPLOSION, i->xy);
SndPlayTileFx(0x10, i->xy);
}
} else if (v->current_order.station == 0) {
} else if (v->next_order == 0) {
int x,y;
uint tile;
int ind;
@@ -469,7 +462,7 @@ static void DisasterTick_3(Vehicle *v)
v->dest_tile = ind = _map2[tile];
if (DEREF_INDUSTRY(ind)->type == IT_FACTORY) {
v->current_order.station = 1;
v->next_order = 1;
v->age = 0;
}
}
@@ -501,7 +494,7 @@ static void DisasterTick_4(Vehicle *v)
v->tick_counter++;
if (v->current_order.station == 1) {
if (v->next_order == 1) {
int x = GET_TILE_X(v->dest_tile)*16 + 8;
int y = GET_TILE_Y(v->dest_tile)*16 + 8;
if (abs(v->x_pos - x) + abs(v->y_pos - y) >= 8) {
@@ -518,7 +511,7 @@ static void DisasterTick_4(Vehicle *v)
return;
}
v->current_order.station = 2;
v->next_order = 2;
FOR_ALL_VEHICLES(u) {
if (u->type == VEH_Train || u->type == VEH_Road) {
@@ -530,7 +523,7 @@ static void DisasterTick_4(Vehicle *v)
}
t = ClosestTownFromTile(v->dest_tile, (uint)-1);
SetDParam(0, t->index);
SET_DPARAM16(0, t->index);
AddNewsItem(STR_B004_UFO_LANDS_NEAR,
NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_TILE, NT_ACCIDENT, 0),
v->tile,
@@ -552,7 +545,7 @@ static void DisasterTick_4(Vehicle *v)
u->next = w;
InitializeDisasterVehicle(w, -6*16, v->y_pos, 0, 5, 12);
w->vehstatus |= VS_DISASTER;
} else if (v->current_order.station < 1) {
} else if (v->next_order < 1) {
int x = GET_TILE_X(v->dest_tile)*16;
int y = GET_TILE_Y(v->dest_tile)*16;
@@ -567,7 +560,7 @@ static void DisasterTick_4(Vehicle *v)
v->dest_tile = TILE_MASK(Random());
return;
}
v->current_order.station = 1;
v->next_order = 1;
tile_org = tile = TILE_MASK(Random());
do {
@@ -599,14 +592,14 @@ static void DisasterTick_4b(Vehicle *v)
return;
}
if (v->current_order.station == 0) {
if (v->next_order == 0) {
u = &_vehicles[v->u.disaster.unk2];
if (abs(v->x_pos - u->x_pos) > 16)
return;
v->current_order.station = 1;
v->next_order = 1;
CreateEffectVehicleRel(u, 0, 7, 8, EV_CRASHED_SMOKE);
SndPlayVehicleFx(SND_12_EXPLOSION, u);
SndPlayVehicleFx(0x10, u);
DeleteDisasterVeh(u);
@@ -899,7 +892,7 @@ static void Disaster7_Init()
for(i=_industries; i != endof(_industries); i++) {
if (i->xy != 0 && i->type == IT_COAL_MINE && --index < 0) {
SetDParam(0, i->town->index);
SET_DPARAM16(0, i->town->index);
AddNewsItem(STR_B005_COAL_MINE_SUBSIDENCE_LEAVES,
NEWS_FLAGS(NM_THIN,NF_VIEWPORT|NF_TILE,NT_ACCIDENT,0), i->xy + TILE_XY(1,1), 0);
@@ -946,7 +939,7 @@ static const DisasterYears _dis_years[8] = {
};
static void DoDisaster()
void DoDisaster()
{
byte buf[8];
byte year = _cur_year;

View File

@@ -1,13 +1,10 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "map.h"
#include "window.h"
#include "station.h"
#include "gui.h"
#include "viewport.h"
#include "gfx.h"
#include "sound.h"
#include "command.h"
static void ShowBuildDockStationPicker();
@@ -15,17 +12,17 @@ static void ShowBuildDocksDepotPicker();
static byte _ship_depot_direction;
void CcBuildDocks(bool success, uint tile, uint32 p1, uint32 p2)
static void CcBuildDocks(bool success, uint tile, uint32 p1, uint32 p2)
{
if (success) {
SndPlayTileFx(SND_02_SPLAT, tile);
SndPlayTileFx(0, tile);
ResetObjectToPlace();
}
}
void CcBuildCanal(bool success, uint tile, uint32 p1, uint32 p2)
static void CcBuildCanal(bool success, uint tile, uint32 p1, uint32 p2)
{
if (success) SndPlayTileFx(SND_02_SPLAT, tile);
if (success) { SndPlayTileFx(0, tile); }
}
@@ -60,52 +57,63 @@ static void PlaceDocks_BuildLock(uint tile)
}
static void BuildDocksClick_Canal(Window *w)
static void BuildDocksClick_Dock(Window *w)
{
HandlePlacePushButton(w, 3, SPR_OPENTTD_BASE + 11, 1, PlaceDocks_BuildCanal);
}
static void BuildDocksClick_Lock(Window *w)
{
HandlePlacePushButton(w, 4, SPR_OPENTTD_BASE + 64, 1, PlaceDocks_BuildLock);
}
static void BuildDocksClick_Demolish(Window *w)
{
HandlePlacePushButton(w, 6, ANIMCURSOR_DEMOLISH, 1, PlaceDocks_DemolishArea);
if (HandlePlacePushButton(w, 2, 0xE54, 3, PlaceDocks_Dock)) ShowBuildDockStationPicker();
}
static void BuildDocksClick_Depot(Window *w)
{
if (HandlePlacePushButton(w, 7, 0x2D1, 1, PlaceDocks_Depot)) ShowBuildDocksDepotPicker();
}
static void BuildDocksClick_Dock(Window *w)
{
if (HandlePlacePushButton(w, 8, 0xE54, 3, PlaceDocks_Dock)) ShowBuildDockStationPicker();
if (HandlePlacePushButton(w, 3, 0x2D1, 1, PlaceDocks_Depot)) ShowBuildDocksDepotPicker();
}
static void BuildDocksClick_Buoy(Window *w)
{
HandlePlacePushButton(w, 9, 0x2BE, 1, PlaceDocks_Buoy);
HandlePlacePushButton(w, 4, 0x2BE, 1, PlaceDocks_Buoy);
}
static void BuildDocksClick_Landscaping(Window *w)
static void BuildDocksClick_Demolish(Window *w)
{
ShowTerraformToolbar();
HandlePlacePushButton(w, 5, ANIMCURSOR_DEMOLISH, 1, PlaceDocks_DemolishArea);
}
static void BuildDocksClick_Lower(Window *w)
{
HandlePlacePushButton(w, 6, ANIMCURSOR_LOWERLAND, 2, PlaceProc_LowerLand);
}
static void BuildDocksClick_Raise(Window *w)
{
HandlePlacePushButton(w, 7, ANIMCURSOR_RAISELAND, 2, PlaceProc_RaiseLand);
}
static void BuildDocksClick_Purchase(Window *w)
{
HandlePlacePushButton(w, 8, 0x12B8, 1, PlaceProc_BuyLand);
}
static void BuildDocksClick_Canal(Window *w)
{
HandlePlacePushButton(w, 9, SPR_OPENTTD_BASE + 11, 1, PlaceDocks_BuildCanal);
}
static void BuildDocksClick_Lock(Window *w)
{
HandlePlacePushButton(w, 10, SPR_OPENTTD_BASE + 64, 1, PlaceDocks_BuildLock);
}
typedef void OnButtonClick(Window *w);
static OnButtonClick * const _build_docks_button_proc[] = {
BuildDocksClick_Dock,
BuildDocksClick_Depot,
BuildDocksClick_Buoy,
BuildDocksClick_Demolish,
BuildDocksClick_Lower,
BuildDocksClick_Raise,
BuildDocksClick_Purchase,
BuildDocksClick_Canal,
BuildDocksClick_Lock,
0,
BuildDocksClick_Demolish,
BuildDocksClick_Depot,
BuildDocksClick_Dock,
BuildDocksClick_Buoy,
BuildDocksClick_Landscaping,
};
static void BuildDocksToolbWndProc(Window *w, WindowEvent *e)
@@ -116,7 +124,7 @@ static void BuildDocksToolbWndProc(Window *w, WindowEvent *e)
break;
case WE_CLICK: {
if (e->click.widget - 3 >= 0 && e->click.widget != 5) _build_docks_button_proc[e->click.widget - 3](w);
if (e->click.widget - 2 >= 0) _build_docks_button_proc[e->click.widget - 2](w);
} break;
case WE_PLACE_OBJ:
@@ -138,7 +146,7 @@ static void BuildDocksToolbWndProc(Window *w, WindowEvent *e)
break;
case WE_ABORT_PLACE_OBJ:
UnclickWindowButtons(w);
w->click_state = 0;
SetWindowDirty(w);
w = FindWindowById(WC_BUILD_STATION, 0);
@@ -165,25 +173,23 @@ static void BuildDocksToolbWndProc(Window *w, WindowEvent *e)
static const Widget _build_docks_toolb_widgets[] = {
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 7, 11, 145, 0, 13, STR_9801_DOCK_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, 7, 146, 157, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_PANEL, 7, 0, 21, 14, 35, SPR_OPENTTD_BASE+65, STR_BUILD_CANALS_TIP},
{ WWT_PANEL, 7, 22, 43, 14, 35, SPR_CANALS_BASE+69, STR_BUILD_LOCKS_TIP},
{ WWT_PANEL, 7, 44, 47, 14, 35, 0x0, STR_NULL},
{ WWT_PANEL, 7, 48, 69, 14, 35, 703, STR_018D_DEMOLISH_BUILDINGS_ETC},
{ WWT_PANEL, 7, 70, 91, 14, 35, 748, STR_981E_BUILD_SHIP_DEPOT_FOR_BUILDING},
{ WWT_PANEL, 7, 92, 113, 14, 35, 746, STR_981D_BUILD_SHIP_DOCK},
{ WWT_PANEL, 7, 114, 135, 14, 35, 693, STR_9834_POSITION_BUOY_WHICH_CAN},
{ WWT_PANEL, 7, 136, 157, 14, 35, SPR_IMG_LANDSCAPING, STR_LANDSCAPING_TOOLBAR_TIP},
{ WWT_CAPTION, 7, 11, 197, 0, 13, STR_9801_DOCK_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, 7, 0, 21, 14, 35, 746, STR_981D_BUILD_SHIP_DOCK},
{ WWT_PANEL, 7, 22, 43, 14, 35, 748, STR_981E_BUILD_SHIP_DEPOT_FOR_BUILDING},
{ WWT_PANEL, 7, 44, 65, 14, 35, 693, STR_9834_POSITION_BUOY_WHICH_CAN},
{ WWT_PANEL, 7, 66, 87, 14, 35, 703, STR_018D_DEMOLISH_BUILDINGS_ETC},
{ WWT_PANEL, 7, 88, 109, 14, 35, 695, STR_018E_LOWER_A_CORNER_OF_LAND},
{ WWT_PANEL, 7, 110, 131, 14, 35, 694, STR_018F_RAISE_A_CORNER_OF_LAND},
{ WWT_PANEL, 7, 132, 153, 14, 35, 4791, STR_0329_PURCHASE_LAND_FOR_FUTURE},
{ WWT_PANEL, 7, 154, 175, 14, 35, SPR_OPENTTD_BASE+65, STR_BUILD_CANALS_TIP},
{ WWT_PANEL, 7, 176, 197, 14, 35, SPR_CANALS_BASE+69, STR_BUILD_LOCKS_TIP},
{ WIDGETS_END},
};
static const WindowDesc _build_docks_toolbar_desc = {
640-158, 22, 158, 36,
640-197, 22, 198, 36,
WC_BUILD_TOOLBAR,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
_build_docks_toolb_widgets,
BuildDocksToolbWndProc
};
@@ -196,37 +202,17 @@ void ShowBuildDocksToolbar()
static void BuildDockStationWndProc(Window *w, WindowEvent *e)
{
int rad;
switch(e->event) {
case WE_PAINT: {
if (WP(w,def_d).close)
return;
w->click_state = (1<<3) << _station_show_coverage;
DrawWindowWidgets(w);
if (_patches.modified_catchment) {
rad = CA_DOCK;
} else {
rad = 4;
}
if (_station_show_coverage) SetTileSelectBigSize(-rad, -rad, 2 * rad, 2 * rad);
else SetTileSelectBigSize(0, 0, 0, 0);
DrawStringCentered(74, 17, STR_3066_COVERAGE_AREA_HIGHLIGHT, 0);
DrawStationCoverageAreaText(4, 50, (uint)-1, rad);
DrawStationCoverageAreaText(2, 15, (uint)-1);
} break;
case WE_CLICK: {
switch(e->click.widget) {
case 0:
if (e->click.widget == 0) {
ResetObjectToPlace();
break;
case 3: case 4:
_station_show_coverage = e->click.widget - 3;
SndPlayFx(SND_15_BEEP);
SetWindowDirty(w);
break;
}
} break;
@@ -245,14 +231,12 @@ static void BuildDockStationWndProc(Window *w, WindowEvent *e)
static const Widget _build_dock_station_widgets[] = {
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 7, 11, 147, 0, 13, STR_3068_DOCK, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, 7, 0, 147, 14, 74, 0x0, STR_NULL},
{ WWT_CLOSEBOX, 14, 14, 73, 30, 40, STR_02DB_OFF, STR_3065_DON_T_HIGHLIGHT_COVERAGE},
{ WWT_CLOSEBOX, 14, 74, 133, 30, 40, STR_02DA_ON, STR_3064_HIGHLIGHT_COVERAGE_AREA},
{ WWT_PANEL, 7, 0, 147, 14, 45, 0x0, STR_NULL},
{ WIDGETS_END},
};
static const WindowDesc _build_dock_station_desc = {
-1, -1, 148, 75,
-1, -1, 148, 46,
WC_BUILD_STATION,WC_BUILD_TOOLBAR,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
_build_dock_station_widgets,
@@ -294,7 +278,7 @@ static void BuildDocksDepotWndProc(Window *w, WindowEvent *e)
case 3:
case 4:
_ship_depot_direction = e->click.widget - 3;
SndPlayFx(SND_15_BEEP);
SndPlayFx(0x13);
UpdateDocksDirection();
SetWindowDirty(w);
break;

View File

@@ -24,7 +24,6 @@ On BeOS, run ./configure and then use jam. There are a variaty of options you ca
On Windows, insert your "Transport Tycoon Deluxe for Windows 95" disk. You can use a DOS version, but your graphics will be purple. NB: Even if your version of Transport Tycoon Deluxe ran on Windows 95, it may still be the DOS version. Then run the OpenTTD installer.
On UNIX platforms; decompress your OpenTTD archive, or otherwise run the installer. You should be left with an OpenTTD directory on your system. In this directory, make a subdirectory called 'data', and into this place the sample.cat file and all the .grf files from the install CD of 'Transport Tycoon Deluxe for Windows 95".
(Alternatively you can use the TTD GRF files from the DOS version: TRG1.GRF, TRGC.GRF, TRGH.GRF, TRGI.GRF, TRGT.GRF. Those filenames have to be uppercase to be detected correctly. A few minor graphical glitches with the DOS graphics remain. E.g. the autorail button in the rail toolbar doesn't look as nice as with the Windows graphics.)
If you want MIDI music, copy the 'gm' folder from the original game directory/CD to the OpenTTD folder.
@@ -91,7 +90,7 @@ Virtually any settings - train numbers, start date, what vehicles your competito
2.11 Network Play
See multiplayer.txt for more info.
OpenTTD now supports rudimentary TCP/IP based network play. This is not supported on all platforms. To start a server, use the '-n' CLI switch, and start a client with '-n' and the servers IP adress. The OpenTTD network play runs over port 12345, so you may need to open this on your firewall.
2.12 Rail Recycling.

View File

@@ -1,24 +0,0 @@
It's gone
The main goal with the package system was to make it as simple as possible to update. The problem was that some files inside the data folder should be updated and not others. Now the data files have been moved inside OpenTTD itself and to make it even easier, the same goes for the lang dir. There will no longer be an issue where people have different versions of grf files, language files and OpenTTD.
To install simply copy OpenTTD into the folder you want
If it is your current folder with outdated grf files, you should remove
canalsw.grf
openttd.grf
opntitle.dat
signalsw.grf
trkfoundw.grf
THE TTD GRF FILES ARE STILL NEEDED!
They need to be inside a folder called "data" in the same folder as OpenTTD. Create it if you have none. It should contain:
sample.cat
trg1r.grf
trgcr.grf
trghr.grf
trgir.grf
trgtr.grf
(Alternatively you can use the TTD GRF files from the DOS version: TRG1.GRF, TRGC.GRF, TRGH.GRF, TRGI.GRF, TRGT.GRF. Those filenames have to be uppercase to be detected correctly. A few minor graphical glitches with the DOS graphics remain. E.g. the autorail button in the rail toolbar doesn't look as nice as with the Windows graphics.)
You should also use the data folder to add any custom grf files if you like

View File

@@ -2,8 +2,10 @@ Since you are reading this, OpenTTD have crashed. This file tells you how
to fix the most common problems or make to make a bug report, that the
developers can use to track down the problem
If it is an assert, OpenTTD will open the console for you, if it is truly a crash, you have to do it yourself. The Console is located at /Applications/Utilities/Console.
The problem is near the button of the page
The first thing you need to do is to get the error message. You can access OSX's build-in log by double-clicking Crash_Log_Opener. OTTD will do that if that file is present in the same folder as OTTD and is not renamed. However, major crashes can prevent the autoopen feature and you have to do it manually then
If Crash_Log_Opener doesn't work you can view the log by opening Console inside Applications/utilities.
If you use the Console app, you should look at the buttom of the console.log window
The problems are as follows:
NOTE: build from source means to download the source and compile

View File

@@ -31,16 +31,14 @@ You can undo changes to a file with
3.) Required data files:
Copy the following files from Transport Tycoon Deluxe to openttd/data/
Copy the following files from the WINDOWS version of Transport Tycoon Deluxe to openttd/data/
sample.cat
trg1r.grf
trgcr.grf
trghr.grf
trgir.grf
trgtr.grf
(Alternatively you can use the TTD GRF files from the DOS version: TRG1.GRF, TRGC.GRF, TRGH.GRF, TRGI.GRF, TRGT.GRF. Those filenames have to be uppercase to be detected correctly. A few minor graphical glitches with the DOS graphics remain. E.g. the autorail button in the rail toolbar doesn't look as nice as with the Windows graphics.)
4.) Compiling and running:

View File

@@ -1,48 +0,0 @@
OpenTTD: OS/2 version ** CURRENTLY INCOMPLETE **
=====================
OpenTTD has been ported to work on OS/2 4.x or later (including eComStation). At the moment, it does not work properly, but it
can compile and work to an extent.
Compiler
--------
Open Watcom 1.3 was used to build OpenTTD (earlier versions will NOT work). See http://www.openwatcom.org/ to download it.
It may also be possible to build OpenTTD under OS/2: I attempted this before using Open Watcom, but found the tools available
for OS/2 at the time to be a bit more tricky to get working.
Due to complexities in my set-up, I actually used the Win32 version of Open Watcom to initially compile OpenTTD for OS/2. There
should be no reason of course why the OS/2 version cannot be used.
Libraries Required
------------------
The following libraries are required. To build zlib and libpng, I simply added the required files (watch out for sample
programs, etc) to an IDE project file and built a library:
- zlib
http://www.zlib.org/ - contains a makefile for OS/2, but is out of date and uses EMX
- libpng
http://www.libpng.org/ - contains an EMX/gcc makefile
- SDL for OS/2
I used ftp://ftp.netlabs.org/pub/sdl/SDL-1.2.7-src-20040908a.zip - take SDL.dll and SDL.lib from the src/ directory.
Note that to use the compiled program, you also need FSLib.dll (from src/ in the SDL zip) and a version of the Scitech
Display Drivers or its later incarnation (see www.scitech.com).
Compiling
---------
To compile, open the os/os2/openttd.wpj file in the IDE and build the openttd.exe target.
TODO: compilation of language files properly
** THESE DOCS ARE INCOMPLETE FOR THE MOMENT, WILL BE COMPLETED SOON **
If you have any questions, please contact me (owen@owenrudge.net) and I'll try to help you out
- Owen Rudge, 18th December 2004

View File

@@ -58,7 +58,7 @@ b) libraru files (the lib dir, D:\Program Files\Microsoft Visual Studio\VC98\Dir
Step 4
-----------------
Copy the following files from Transport Tycoon Deluxe to the data folder
Copy the following files from the WINDOWS version of Transport Tycoon Deluxe to the data folder
sample.cat
trg1r.grf
trgcr.grf
@@ -66,7 +66,7 @@ Copy the following files from Transport Tycoon Deluxe to the data folder
trgir.grf
trgtr.grf
(Alternatively you can use the TTD GRF files from the DOS version: TRG1.GRF, TRGC.GRF, TRGH.GRF, TRGI.GRF, TRGT.GRF. Those filenames have to be uppercase to be detected correctly. A few minor graphical glitches with the DOS graphics remain. E.g. the autorail button in the rail toolbar doesn't look as nice as with the Windows graphics.)
Step 5
-----------------

View File

@@ -1,12 +1,8 @@
OPENTTD INGAME CONSOLE DOCUMENTATION
====================================
http://wiki.openttd.org/index.php/OpenTTDDevBlackBook
http://openttd.rulez.org/wiki2/index.php/OpenTTDDevBlackBook
for detailed information
*** WARNING **
This document is out of date
*** WARNING **
HOTKEY: BACKQUOTE (aka tilde, the key left to "1")
COMMANDS:
@@ -38,19 +34,19 @@ VARIABLES:
-> 2 = console error and debug output
*cursor_rate
-> 1-12 = defines the cursor blink interval
-> 1-12 = defines the cursor blink interval
VARIABLE HANDLING:
------------------
developer = 0
developer ++
*developer = 0
*developer ++
temp_string = test
temp_string = "my little"
*temp_string = test
*temp_string = "my little"
printf "%s world" temp_string
printf "%s world" *temp_string
---------------------------------------------------

File diff suppressed because it is too large Load Diff

View File

@@ -1,112 +1,70 @@
Multiplayer Manual for OpenTTD (0.3.5)
=======================================
Multiplayer Manual for OpenTTD
----------------------------------------
1. Starting a Server
---------------------
- Click "multiplayer" on the startup screen
- Click "start server"
- Type in a game name
- Select the type of game ('LAN/Internet' or 'Internet (advertise)'. With the last one
other people are able to see you online. Else they need your IP and port to join)
- Click "start game" ,"load game" or "load scenario"
- Start playing
- click "multiplayer" on the startup screen
- click "start server"
- type in a game name
- click "start game" ,"load game" or "load scenario"
2. Connecting to a Server
--------------------------
- Click "multiplayer" on the startup screen
- If you want to connect to any network game in your LAN click on 'LAN', then on
'Find Server'
- If you want to see which servers all online on the Internet, click on 'Internet'
and 'Find Server'
- If there were more then one server
- click "multiplayer" on the startup screen
- if you want to connect to any network game in your LAN click "find server"
- if there were more then one server
- select one in the list below the buttons
- click on 'join game'
- click on "join game".
- If you want to play and you have the ip or hostname of the game server you want connect to.
- click add server
- if you want to play over the internet you should have the ip of the game server you want connect to.
- click direct connect
- type in the ip address or hostname
- if you want to add a port use :<port>
- Now you can select a company and press: "Join company", to help that company
- Or you can press "Spectate game", to spectate the game
- Or you can press "New company", and start your own company (if there are slots free)
- You see a progressbar how far you are with joining the server.
- Happy playing
- if you want to connect as an special player use #<player-no>
3. Connecting to a Server over the Console
-------------------------------------------
- Open the console and type in the following command:
- open the console and type in the following command:
]connect <ip/host>:<port>#<player-no>
4. Playing Internet-Games
--------------------------
- Since OpenTTD 0.3.5 the network protocol has been rewritten and is very stable, even over slow connections.
- Server with a red dot behind it have a different version then you have. You will not be able to join those servers.
- It can happen that a connection is that slow, or you have that many clients connected to your server, that your clients start to loose their connection. Some things you can do about it:
- net_frame_freq:
change it in console with: net_frame_freq = <number>
the number should be between the 0 and 10, not much higher. It indicates the delay between clicking and showing up. The higher, the more you notice it, but the less bandwidth you use.
A good value for Internet-games is 2 or 3.
- net_sync_freq:
change it in console with: net_sync_freq = <number>
the number should be between the 50 and 1000, not much lower, not much higer. It indicates the time between sync-frames. A sync-frame is a frame which checks if all clients are still in sync. When the value it too high, clients can desync in 1960, but the server detects it in 1970. Not really handy. The lower the value, the more bandwidth it uses.
NB: changing net_frame_freq has more effect on the bandwidth then net_sync_freq. You should never change net_sync_freq!
5. Tips for servers
--------------------
- You can launch a dedicated server by adding -D as parameter
- In UNIX like systems, you can fork your dedicated server by adding -f as parameter
- You can automaticly clean companies that do not have a client connected to them, for, let's say,
3 years. You can do this via: 'set autoclean_companies' and 'set autoclean_protected' and
'set autoclean_unprotected'. Unprotected removes a password from a company when it is
not used for more then the defined amount of months.
- You can also do this manually via the console: 'reset_company'.
Both ways, the company will go bankrupt.
- You can let your server automaticly restart a map when, let's say, year 2030 is reached.
See 'set restart_game_date' for detail.
- If you want to be on the server-list, enable Advertising. To do this, select 'Internet (advertise)'
in the Start Server menu, or type in console: 'set server_advertise 1'.
- You can protect your server with a password via the console: 'set server_pw', or via the
Start Server menu.
- When you have many clients connected to your server via Internet, watch your bandwidth (if
you have any limit on it, set by your ISP). 1 client uses +/- 3 kb/s up and down. To decrease
this amount, set 'net_frame_freq' to 1 for example. This will reduce it to 1.5 kb/s per client.
6. Some useful things
----------------------
- You can protect your company so nobody else can join uninvited. To do this, check your Company Screen
- You can give other players some money via the ClientList (under the 'head' in the mainbar).
- You can chat with other players via ENTER or via SHIFT+T or via the ClientList
- Servers can now kick players, so don't make them use it!
- From 0.3.5, desyncs should not happen anymore
- From 0.3.5, patch-settings are also synced. You can now play without deleting openttd.cfg, and with, for example, extra large trains enabled.
- since OpenTTD 0.3.4 you can also play internet games over higher latency connections.
- to do this the gameservers sync frequency should be highered to a decent value.
- open the console [on the server]
- type in the following command:
] *net_sync_freq = <4-80>
default value: 4
- this is lowering the sync frequency of the server and your game should be less laggy.
- this is a server variable: it has nothing to do with the clients
- you can also change when the clients ready packet is sent if you still have lags.
- open the console
- type in the following command:
] *net_ready_ahead = <1-8>
default value: 1
- in that way your client is sending its "i am ready for next sync" a bit earlier
thats quite good for games where some players have higher latencies than the others.
- this is a client variable: it has nothing to do with the server
- to change the client timeout time
- open the console [on the server]
- type in the following command:
] *net_client_timeout = <30-x>
default value: 300
- warning: a too low value will disconnect your clients if they have a short lag

View File

@@ -1,50 +0,0 @@
.\" Hey, EMACS: -*- nroff -*-
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.TH OPENTTD 6 "September 16, 2004"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
.\" .nh disable hyphenation
.\" .hy enable hyphenation
.\" .ad l left justify
.\" .ad b justify to both left and right margins
.\" .nf disable filling
.\" .fi enable filling
.\" .br insert line break
.\" .sp <n> insert n+1 empty lines
.\" for manpage-specific macros, see man(7)
.SH NAME
openttd \- An open source clone of the Microprose game "Transport Tycoon Deluxe"
.SH SYNOPSIS
.B openttd
.RI [ options ]
.br
.SH DESCRIPTION
Unfortanetely, there is no real manpage for openttd yet. Hopefully someone
will write one soon. For now you should use
.B openttd -h
for more information, or check our Wiki manual: http://wiki.openttd.org/
.PP
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
.\" respectively.
.\" \fBopenttd\fP is a program that...
.SH OPTIONS
Wouldn't we like to have something here?
.\" below are commented out, to serve as layout examples for when somebody
.\" does actually fill this page
.\" .TP
.\" .B \-h, \-\-help
.\" Show summary of options.
.\" .TP
.\" .B \-v, \-\-version
.\" Show version of program.
.\" .SH SEE ALSO
.\" .BR bar (1),
.\" .BR baz (1).
.br
.SH AUTHOR
This manual page was written by Matthijs Kooijman <matthijs@katherina.student.utwente.nl>,
for the Debian project (but may be used by others).

View File

@@ -1,6 +1,5 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "viewport.h"
#include "command.h"
@@ -23,7 +22,7 @@ static int32 ClearTile_Dummy(uint tile, byte flags) {
}
static void GetAcceptedCargo_Dummy(uint tile, AcceptedCargo ac)
static void GetAcceptedCargo_Dummy(uint tile, AcceptedCargo *ac)
{
/* not used */
}

366
economy.c
View File

@@ -1,7 +1,5 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "map.h"
#include "news.h"
#include "player.h"
#include "station.h"
@@ -14,34 +12,6 @@
#include "industry.h"
#include "town.h"
#include "network.h"
#include "sound.h"
#include "engine.h"
#include "network_data.h"
// get a mask of the allowed currencies depending on the year
uint GetMaskOfAllowedCurrencies(void)
{
int i;
uint mask = 0;
for (i = 0; i != lengthof(_currency_specs); i++) {
uint16 to_euro = _currency_specs[i].to_euro;
if (i == 23) mask |= (1 << 23); // always allow custom currency
if (to_euro != CF_NOEURO && to_euro != CF_ISEURO && _cur_year >= (to_euro-1920)) continue;
if (_cur_year < (2000-1920) && (to_euro == CF_ISEURO)) continue;
mask |= (1 << i);
}
return mask;
}
void CheckSwitchToEuro(void)
{
if (_currency_specs[_opt.currency].to_euro != CF_NOEURO &&
_currency_specs[_opt.currency].to_euro != CF_ISEURO &&
_cur_year >= (_currency_specs[_opt.currency].to_euro-1920)) {
_opt.currency = 2; // this is the index of euro above.
AddNewsItem(STR_EURO_INTRODUCE, NEWS_FLAGS(NM_NORMAL,0,NT_ECONOMY,0), 0, 0);
}
}
void UpdatePlayerHouse(Player *p, uint score)
{
@@ -166,7 +136,7 @@ int UpdateCompanyRatingAndValue(Player *p, bool update)
PlayerEconomyEntry *pee;
int numec;
int32 min_income;
int32 max_income;
uint32 max_income;
numec = min(p->num_valid_stat_ent, 12);
if (numec != 0) {
@@ -361,24 +331,6 @@ void ChangeOwnershipOfPlayerItems(byte old_player, byte new_player)
}
}
{
Player *p;
uint i;
/* Check for shares */
FOR_ALL_PLAYERS(p) {
for(i = 0; i < 4; i++) {
/* 'Sell' the share if this player has any */
if (p->share_owners[i] == _current_player)
p->share_owners[i] = 0xFF;
}
}
p = DEREF_PLAYER(_current_player);
/* Sell all the shares that people have on this company */
for(i = 0; i < 4; i++)
p->share_owners[i] = 0xFF;
}
_current_player = old;
MarkWholeScreenDirty();
@@ -391,7 +343,6 @@ static void PlayersCheckBankrupt(Player *p)
int owner;
int64 val;
// If the player has money again, it does not go bankrupt
if (p->player_money >= 0) {
p->quarters_of_bankrupcy = 0;
return;
@@ -401,74 +352,43 @@ static void PlayersCheckBankrupt(Player *p)
owner = p->index;
switch (p->quarters_of_bankrupcy) {
case 2:
AddNewsItem( (StringID)(owner + 16),
NEWS_FLAGS(NM_CALLBACK, 0, NT_COMPANY_INFO, DNC_BANKRUPCY),0,0);
break;
case 3: {
/* XXX - In multiplayer, should we ask other players if it wants to take
over when it is a human company? -- TrueLight */
if (IS_HUMAN_PLAYER(owner)) {
AddNewsItem( (StringID)(owner + 16),
NEWS_FLAGS(NM_CALLBACK, 0, NT_COMPANY_INFO, DNC_BANKRUPCY),0,0);
break;
}
if (p->quarters_of_bankrupcy == 2) {
year_2:
AddNewsItem( (StringID)(owner + 16),
NEWS_FLAGS(NM_CALLBACK, 0, NT_COMPANY_INFO, DNC_BANKRUPCY),0,0);
// Check if the company has any value.. if not, declare it bankrupt
// right now
val = CalculateCompanyValue(p);
if (val > 0) {
p->bankrupt_value = val;
p->bankrupt_asked = 1 << owner; // Don't ask the owner
p->bankrupt_timeout = 0;
break;
}
// Else, falltrue to case 4...
} else if (p->quarters_of_bankrupcy == 3) {
if (IS_HUMAN_PLAYER(owner))
goto year_2;
val = CalculateCompanyValue(p);
if (val == 0) goto year_4;
p->bankrupt_value = val;
p->bankrupt_asked = 1 << owner;
p->bankrupt_timeout = 0;
} else if (p->quarters_of_bankrupcy == 4) {
year_4:
DeletePlayerWindows(owner);
if (IS_HUMAN_PLAYER(owner)) {
// what does this code do??
InitNewsItemStructs();
DeleteWindowById(WC_NEWS_WINDOW, 0);
}
case 4: {
// Close everything the owner has open
DeletePlayerWindows(owner);
// Show bankrupt news
SetDParam(0, p->name_1);
SetDParam(1, p->name_2);
AddNewsItem( (StringID)(owner + 16*3), NEWS_FLAGS(NM_CALLBACK, 0, NT_COMPANY_INFO, DNC_BANKRUPCY),0,0);
// Show bankrupt news
SET_DPARAM16(0, p->name_1);
SET_DPARAM32(1, p->name_2);
AddNewsItem( (StringID)(owner + 16*3), NEWS_FLAGS(NM_CALLBACK, 0, NT_COMPANY_INFO, DNC_BANKRUPCY),0,0);
// If the player is human, and it is no network play, leave the player playing
if (IS_HUMAN_PLAYER(owner) && !_networking) {
p->bankrupt_asked = 255;
p->bankrupt_timeout = 0x456;
} else {
#ifdef ENABLE_NETWORK
if (IS_HUMAN_PLAYER(owner) && _network_server) {
// If we are the server, make sure it is clear that his player is no
// longer with us!
NetworkClientInfo *ci;
NetworkClientState *cs;
/* Find all clients that were in control of this company */
FOR_ALL_CLIENTS(cs) {
ci = DEREF_CLIENT_INFO(cs);
if ((ci->client_playas-1) == owner) {
ci->client_playas = OWNER_SPECTATOR;
// Send the new info to all the clients
NetworkUpdateClientInfo(_network_own_client_index);
}
}
}
// Make sure the player no longer controls the company
if (IS_HUMAN_PLAYER(owner) && owner == _local_player) {
// Switch the player to spectator..
_local_player = OWNER_SPECTATOR;
}
#endif /* ENABLE_NETWORK */
// Convert everything the player owns to NO_OWNER
p->money64 = p->player_money = 100000000;
ChangeOwnershipOfPlayerItems(owner, 0xFF); // 255 is no owner
// Register the player as not-active
p->is_active = false;
}
if (IS_HUMAN_PLAYER(owner)) {
p->bankrupt_asked = 255;
p->bankrupt_timeout = 0x456;
} else {
p->money64 = p->player_money = 100000000;
ChangeOwnershipOfPlayerItems(owner, 0xFF); // 255 is no owner
p->is_active = false;
}
}
}
@@ -483,8 +403,8 @@ void DrawNewsBankrupcy(Window *w)
DrawPlayerFace(p->face, p->player_color, 2, 23);
GfxFillRect(3, 23, 3+91, 23+118, 0x4323);
SetDParam(0, p->president_name_1);
SetDParam(1, p->president_name_2);
SET_DPARAM16(0, p->president_name_1);
SET_DPARAM32(1, p->president_name_2);
DrawStringMultiCenter(49, 148, STR_7058_PRESIDENT, 94);
@@ -492,8 +412,8 @@ void DrawNewsBankrupcy(Window *w)
case 1:
DrawStringCentered(w->width>>1, 1, STR_7056_TRANSPORT_COMPANY_IN_TROUBLE, 0);
SetDParam(0, p->name_1);
SetDParam(1, p->name_2);
SET_DPARAM16(0, p->name_1);
SET_DPARAM32(1, p->name_2);
DrawStringMultiCenter(
((w->width - 101) >> 1) + 98,
@@ -507,10 +427,10 @@ void DrawNewsBankrupcy(Window *w)
DrawStringCentered(w->width>>1, 1, STR_7059_TRANSPORT_COMPANY_MERGER, 0);
COPY_IN_DPARAM(0,WP(w,news_d).ni->params, 2);
SetDParam(2, p->name_1);
SetDParam(3, p->name_2);
SET_DPARAM16(2, p->name_1);
SET_DPARAM32(3, p->name_2);
price = WP(w,news_d).ni->params[2];
SetDParam(4, price);
SET_DPARAM32(4, price);
DrawStringMultiCenter(
((w->width - 101) >> 1) + 98,
90,
@@ -531,8 +451,8 @@ void DrawNewsBankrupcy(Window *w)
case 4:
DrawStringCentered(w->width>>1, 1, STR_705E_NEW_TRANSPORT_COMPANY_LAUNCHED, 0);
SetDParam(0, p->name_1);
SetDParam(1, p->name_2);
SET_DPARAM16(0, p->name_1);
SET_DPARAM32(1, p->name_2);
COPY_IN_DPARAM(2,WP(w,news_d).ni->params, 2);
DrawStringMultiCenter(
((w->width - 101) >> 1) + 98,
@@ -552,29 +472,29 @@ StringID GetNewsStringBankrupcy(NewsItem *ni)
switch(ni->string_id >> 4) {
case 1:
SetDParam(0, STR_7056_TRANSPORT_COMPANY_IN_TROUBLE);
SetDParam(1, STR_7057_WILL_BE_SOLD_OFF_OR_DECLARED);
SetDParam(2, p->name_1);
SetDParam(3, p->name_2);
SET_DPARAM16(0, STR_7056_TRANSPORT_COMPANY_IN_TROUBLE);
SET_DPARAM16(1, STR_7057_WILL_BE_SOLD_OFF_OR_DECLARED);
SET_DPARAM16(2, p->name_1);
SET_DPARAM32(3, p->name_2);
return STR_02B6;
case 2:
SetDParam(0, STR_7059_TRANSPORT_COMPANY_MERGER);
SetDParam(1, STR_705A_HAS_BEEN_SOLD_TO_FOR);
SET_DPARAM16(0, STR_7059_TRANSPORT_COMPANY_MERGER);
SET_DPARAM16(1, STR_705A_HAS_BEEN_SOLD_TO_FOR);
COPY_IN_DPARAM(2,ni->params, 2);
SetDParam(4, p->name_1);
SetDParam(5, p->name_2);
SET_DPARAM16(4, p->name_1);
SET_DPARAM32(5, p->name_2);
COPY_IN_DPARAM(6,ni->params + 2, 1);
return STR_02B6;
case 3:
SetDParam(0, STR_705C_BANKRUPT);
SetDParam(1, STR_705D_HAS_BEEN_CLOSED_DOWN_BY);
SET_DPARAM16(0, STR_705C_BANKRUPT);
SET_DPARAM16(1, STR_705D_HAS_BEEN_CLOSED_DOWN_BY);
COPY_IN_DPARAM(2,ni->params, 2);
return STR_02B6;
case 4:
SetDParam(0, STR_705E_NEW_TRANSPORT_COMPANY_LAUNCHED);
SetDParam(1, STR_705F_STARTS_CONSTRUCTION_NEAR);
SetDParam(2, p->name_1);
SetDParam(3, p->name_2);
SET_DPARAM16(0, STR_705E_NEW_TRANSPORT_COMPANY_LAUNCHED);
SET_DPARAM16(1, STR_705F_STARTS_CONSTRUCTION_NEAR);
SET_DPARAM16(2, p->name_1);
SET_DPARAM32(3, p->name_2);
COPY_IN_DPARAM(4,ni->params, 2);
return STR_02B6;
default:
@@ -793,50 +713,50 @@ Pair SetupSubsidyDecodeParam(Subsidy *s, bool mode)
Pair tp;
/* if mode is false, convert into plural */
SetDParam(0, _cargoc.names_s[s->cargo_type] + (mode?0:32));
SET_DPARAM16(0, _cargoc.names_s[s->cargo_type] + (mode?0:32));
if (s->age < 12) {
if (!(s->cargo_type == CT_PASSENGERS || s->cargo_type == CT_MAIL)) {
SetDParam(1, STR_2029);
SET_DPARAM16(1, STR_2029);
i = DEREF_INDUSTRY(s->from);
tile = i->xy;
SetDParam(2, i->town->townnametype);
SetDParam(3, i->town->townnameparts);
SET_DPARAM16(2, i->town->townnametype);
SET_DPARAM32(3, i->town->townnameparts);
SetDParam(4, i->type + STR_4802_COAL_MINE);
SET_DPARAM16(4, i->type + STR_4802_COAL_MINE);
if (s->cargo_type != CT_GOODS && s->cargo_type != CT_FOOD) {
SetDParam(5, STR_2029);
SET_DPARAM16(5, STR_2029);
i = DEREF_INDUSTRY(s->to);
tile2 = i->xy;
SetDParam(8, i->type + STR_4802_COAL_MINE);
SetDParam(6, i->town->townnametype);
SetDParam(7, i->town->townnameparts);
SET_DPARAM16(8, i->type + STR_4802_COAL_MINE);
SET_DPARAM16(6, i->town->townnametype);
SET_DPARAM32(7, i->town->townnameparts);
} else {
t = DEREF_TOWN(s->to);
tile2 = t->xy;
SetDParam(5, t->townnametype);
SetDParam(6, t->townnameparts);
SET_DPARAM16(5, t->townnametype);
SET_DPARAM32(6, t->townnameparts);
}
} else {
t = DEREF_TOWN(s->from);
tile = t->xy;
SetDParam(1, t->townnametype);
SetDParam(2, t->townnameparts);
SET_DPARAM16(1, t->townnametype);
SET_DPARAM32(2, t->townnameparts);
t = DEREF_TOWN(s->to);
tile2 = t->xy;
SetDParam(3, t->townnametype);
SetDParam(4, t->townnameparts);
SET_DPARAM16(3, t->townnametype);
SET_DPARAM32(4, t->townnameparts);
}
} else {
st = DEREF_STATION(s->from);
tile = st->xy;
SetDParam(1, st->index);
SET_DPARAM16(1, st->index);
st = DEREF_STATION(s->to);
tile2 = st->xy;
SetDParam(2, st->index);
SET_DPARAM16(2, st->index);
}
tp.a = tile;
@@ -888,11 +808,11 @@ static void FindSubsidyPassengerRoute(FoundRoute *fr)
fr->distance = (uint)-1;
fr->from = from = DEREF_TOWN(RandomRange(_total_towns));
fr->from = from = DEREF_TOWN(InteractiveRandomRange(_total_towns));
if (from->xy == 0 || from->population < 400)
return;
fr->to = to = DEREF_TOWN(RandomRange(_total_towns));
fr->to = to = DEREF_TOWN(InteractiveRandomRange(_total_towns));
if (from==to || to->xy == 0 || to->population < 400 || to->pct_pass_transported > 42)
return;
@@ -907,12 +827,12 @@ static void FindSubsidyCargoRoute(FoundRoute *fr)
fr->distance = (uint)-1;
fr->from = i = DEREF_INDUSTRY(RandomRange(_total_industries));
fr->from = i = DEREF_INDUSTRY(InteractiveRandomRange(_total_industries));
if (i->xy == 0)
return;
// Randomize cargo type
if (Random()&1 && i->produced_cargo[1] != 0xFF) {
if (InteractiveRandom()&1 && i->produced_cargo[1] != 0xFF) {
cargo = i->produced_cargo[1];
trans = i->pct_transported[1];
total = i->total_production[1];
@@ -932,7 +852,7 @@ static void FindSubsidyCargoRoute(FoundRoute *fr)
if (cargo == CT_GOODS || cargo == CT_FOOD) {
// The destination is a town
Town *t = DEREF_TOWN(RandomRange(_total_towns));
Town *t = DEREF_TOWN(InteractiveRandomRange(_total_towns));
// Only want big towns
if (t->xy == 0 || t->population < 900)
@@ -941,7 +861,7 @@ static void FindSubsidyCargoRoute(FoundRoute *fr)
fr->to = t;
} else {
// The destination is an industry
Industry *i2 = DEREF_INDUSTRY(RandomRange(_total_industries));
Industry *i2 = DEREF_INDUSTRY(InteractiveRandomRange(_total_industries));
// The industry must accept the cargo
if (i == i2 || i2->xy == 0 ||
@@ -1020,8 +940,10 @@ static void SubsidyMonthlyHandler()
}
}
if ((_networking) && (!_networking_server)) return;
// 25% chance to go on
if (CHANCE16(1,4)) {
if (ICHANCE16(1,4)) {
// Find a free slot
s = _subsidies;
while (s->cargo_type != 0xFF) {
@@ -1047,6 +969,7 @@ static void SubsidyMonthlyHandler()
if (!CheckSubsidyDuplicate(s)) {
s->age = 0;
pair = SetupSubsidyDecodeParam(s, 0);
if (_networking_server) NetworkSendEvent(NET_EVENT_SUBSIDY,sizeof(Subsidy),s);
AddNewsItem(STR_2030_SERVICE_SUBSIDY_OFFERED, NEWS_FLAGS(NM_NORMAL, NF_TILE, NT_SUBSIDIES, 0), pair.a, pair.b);
modified = true;
break;
@@ -1192,8 +1115,8 @@ static bool CheckSubsidised(Station *from, Station *to, byte cargo_type)
INJECT_DPARAM(2);
p = DEREF_PLAYER(_current_player);
SetDParam(0, p->name_1);
SetDParam(1, p->name_2);
SET_DPARAM16(0, p->name_1);
SET_DPARAM32(1, p->name_2);
AddNewsItem(
STR_2031_SERVICE_SUBSIDY_AWARDED + _opt.diff.subsidy_multiplier,
NEWS_FLAGS(NM_NORMAL, NF_TILE, NT_SUBSIDIES, 0),
@@ -1274,59 +1197,6 @@ static int32 DeliverGoods(int num_pieces, byte cargo_type, byte source, byte des
return profit;
}
/*
* Returns true if Vehicle v should wait loading because other vehicle is
* already loading the same cargo type
* v = vehicle to load, u = GetFirstInChain(v)
*/
static bool LoadWait(const Vehicle *v, const Vehicle *u) {
const Vehicle *w;
const Vehicle *x;
bool has_any_cargo = false;
if (!(u->current_order.flags & OF_FULL_LOAD)) return false;
for (w = u; w != NULL; w = w->next) {
if (w->cargo_count != 0) {
if (v->cargo_type == w->cargo_type &&
u->last_station_visited == w->cargo_source)
return false;
has_any_cargo = true;
}
}
FOR_ALL_VEHICLES(x) {
if ((x->type != VEH_Train || x->subtype == 0) && // for all locs
u->last_station_visited == x->last_station_visited && // at the same station
!(x->vehstatus & VS_STOPPED) && // not stopped
x->current_order.type == OT_LOADING && // loading
u != x) { // not itself
bool other_has_any_cargo = false;
bool has_space_for_same_type = false;
bool other_has_same_type = false;
for (w = x; w != NULL; w = w->next) {
if (w->cargo_count < w->cargo_cap && v->cargo_type == w->cargo_type)
has_space_for_same_type = true;
if (w->cargo_count != 0) {
if (v->cargo_type == w->cargo_type &&
u->last_station_visited == w->cargo_source)
other_has_same_type = true;
other_has_any_cargo = true;
}
}
if (has_space_for_same_type) {
if (other_has_same_type) return true;
if (other_has_any_cargo && !has_any_cargo) return true;
}
}
}
return false;
}
int LoadUnloadVehicle(Vehicle *v)
{
int profit = 0;
@@ -1338,19 +1208,17 @@ int LoadUnloadVehicle(Vehicle *v)
GoodsEntry *ge;
int t;
uint count, cap;
byte old_player;
bool completely_empty = true;
assert(v->current_order.type == OT_LOADING);
assert((v->next_order&0x1F) == OT_LOADING);
v->cur_speed = 0;
old_player = _current_player;
_current_player = v->owner;
st = DEREF_STATION(last_visited = v->last_station_visited);
for (; v != NULL; v = v->next) {
if (v->cargo_cap == 0) continue;
for(;;) {
if (v->cargo_cap == 0)
goto next_vehicle;
ge = &st->goods[v->cargo_type];
@@ -1362,7 +1230,7 @@ int LoadUnloadVehicle(Vehicle *v)
profit += DeliverGoods(v->cargo_count, v->cargo_type, v->cargo_source, last_visited, v->cargo_days);
result |= 1;
v->cargo_count = 0;
} else if (u->current_order.flags & OF_UNLOAD) {
} else if (u->next_order & OF_UNLOAD) {
/* unload goods and let it wait at the station */
st->time_since_unload = 0;
@@ -1382,13 +1250,11 @@ int LoadUnloadVehicle(Vehicle *v)
result |= 2;
v->cargo_count = 0;
}
if (v->cargo_count != 0)
completely_empty = false;
}
/* don't pick up goods that we unloaded */
if (u->current_order.flags & OF_UNLOAD) continue;
if (u->next_order & OF_UNLOAD)
goto next_vehicle;
/* update stats */
ge->days_since_pickup = 0;
@@ -1403,22 +1269,6 @@ int LoadUnloadVehicle(Vehicle *v)
// has capacity for it, load it on the vehicle.
if ((count=ge->waiting_acceptance & 0xFFF) != 0 &&
(cap = v->cargo_cap - v->cargo_count) != 0) {
if (v->cargo_count == 0)
TriggerVehicle(v, VEHICLE_TRIGGER_NEW_CARGO);
/* Skip loading this vehicle if another train/vehicle is already handling
* the same cargo type at this station */
if (_patches.improved_load && LoadWait(v,u)) continue;
/* TODO: Regarding this, when we do gradual loading, we
* should first unload all vehicles and then start
* loading them. Since this will cause
* VEHICLE_TRIGGER_EMPTY to be called at the time when
* the whole vehicle chain is really totally empty, the
* @completely_empty assignment can then be safely
* removed; that's how TTDPatch behaves too. --pasky */
completely_empty = false;
if (cap > count) cap = count;
v->cargo_count += cap;
ge->waiting_acceptance -= cap;
@@ -1431,6 +1281,10 @@ int LoadUnloadVehicle(Vehicle *v)
result |= 2;
st->last_vehicle = v->index;
}
next_vehicle:;
if (!(v = v->next))
break;
}
v = u;
@@ -1447,10 +1301,6 @@ int LoadUnloadVehicle(Vehicle *v)
v->load_unload_time_rem = unloading_time;
if (completely_empty) {
TriggerVehicle(v, VEHICLE_TRIGGER_EMPTY);
}
if (result != 0) {
InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
@@ -1462,13 +1312,12 @@ int LoadUnloadVehicle(Vehicle *v)
SubtractMoneyFromPlayer(-profit);
if (_current_player == _local_player)
SndPlayVehicleFx(SND_14_CASHTILL, v);
SndPlayVehicleFx(0x12, v);
ShowCostOrIncomeAnimation(v->x_pos, v->y_pos, v->z_pos, -profit);
}
}
_current_player = old_player;
return result;
}
@@ -1490,9 +1339,9 @@ static void DoAcquireCompany(Player *p)
int i,pi;
int64 value;
SetDParam(0, p->name_1);
SetDParam(1, p->name_2);
SetDParam(2, p->bankrupt_value);
SET_DPARAM16(0, p->name_1);
SET_DPARAM32(1, p->name_2);
SET_DPARAM32(2, p->bankrupt_value);
AddNewsItem( (StringID)(_current_player + 16*2), NEWS_FLAGS(NM_CALLBACK, 0, NT_COMPANY_INFO, DNC_BANKRUPCY),0,0);
// original code does this a little bit differently
@@ -1519,8 +1368,6 @@ static void DoAcquireCompany(Player *p)
DeletePlayerWindows(pi);
}
extern int GetAmountOwnedBy(Player *p, byte owner);
int32 CmdBuyShareInCompany(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{
Player *p;
@@ -1531,13 +1378,6 @@ int32 CmdBuyShareInCompany(int x, int y, uint32 flags, uint32 p1, uint32 p2)
SET_EXPENSES_TYPE(EXPENSES_OTHER);
p = DEREF_PLAYER(p1);
/* Those lines are here for network-protection (clients can be slow) */
if (GetAmountOwnedBy(p, OWNER_SPECTATOR) == 0)
return 0;
/* We can not buy out a real player in networking */
if (GetAmountOwnedBy(p, OWNER_SPECTATOR) == 1 && !p->is_ai)
return 0;
cost = CalculateCompanyValue(p) >> 2;
if (flags & DC_EXEC) {
b = p->share_owners;
@@ -1565,10 +1405,6 @@ int32 CmdSellShareInCompany(int x, int y, uint32 flags, uint32 p1, uint32 p2)
SET_EXPENSES_TYPE(EXPENSES_OTHER);
p = DEREF_PLAYER(p1);
/* Those lines are here for network-protection (clients can be slow) */
if (GetAmountOwnedBy(p, _current_player) == 0)
return 0;
/* adjust it a little to make it less profitable to sell and buy */
cost = CalculateCompanyValue(p) >> 2;
cost = -(cost - (cost >> 7));

395
engine.c
View File

@@ -1,6 +1,5 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "engine.h"
#include "table/engines.h"
#include "player.h"
@@ -8,7 +7,6 @@
#include "vehicle.h"
#include "news.h"
#include "saveload.h"
#include "sprite.h"
#define UPDATE_PLAYER_RAILTYPE(e,p) if ((byte)(e->railtype + 1) > p->max_railtype) p->max_railtype = e->railtype + 1;
@@ -107,10 +105,7 @@ static void CalcEngineReliability(Engine *e)
uint max = e->reliability_max;
e->reliability = (int)age * (int)(e->reliability_final - max) / e->duration_phase_3 + max;
} else {
// time's up for this engine
// make it either available to all players (if never_expire_vehicles is enabled and if it was available earlier)
// or disable this engine completely
e->player_avail = (_patches.never_expire_vehicles && e->player_avail)? -1 : 0;
e->player_avail = _patches.never_expire_vehicles ? -1 : 0;
e->reliability = e->reliability_final;
}
}
@@ -177,7 +172,7 @@ uint32 _engine_refit_masks[256];
struct WagonOverride {
byte *train_id;
int trains;
struct SpriteGroup group;
struct SpriteSuperSet superset;
};
static struct WagonOverrides {
@@ -185,7 +180,7 @@ static struct WagonOverrides {
struct WagonOverride *overrides;
} _engine_wagon_overrides[256];
void SetWagonOverrideSprites(byte engine, struct SpriteGroup *group,
void SetWagonOverrideSprites(byte engine, struct SpriteSuperSet *superset,
byte *train_id, int trains)
{
struct WagonOverrides *wos;
@@ -197,24 +192,19 @@ void SetWagonOverrideSprites(byte engine, struct SpriteGroup *group,
wos->overrides_count * sizeof(struct WagonOverride));
wo = &wos->overrides[wos->overrides_count - 1];
/* FIXME: If we are replacing an override, release original SpriteGroup
* to prevent leaks. But first we need to refcount the SpriteGroup.
* --pasky */
wo->group = *group;
wo->superset = *superset;
wo->trains = trains;
wo->train_id = malloc(trains);
memcpy(wo->train_id, train_id, trains);
}
static struct SpriteGroup *GetWagonOverrideSpriteSet(byte engine, byte overriding_engine)
static struct SpriteSuperSet *GetWagonOverrideSpriteSet(byte engine, byte overriding_engine)
{
struct WagonOverrides *wos = &_engine_wagon_overrides[engine];
int i;
// XXX: This could turn out to be a timesink on profiles. We could
// always just dedicate 65535 bytes for an [engine][train] trampoline
// for O(1). Or O(logMlogN) and searching binary tree or smt. like
// that. --pasky
// XXX: This could turn out to be a timesink on profiles. We could always just
// dedicate 65535 bytes for an [engine][train] trampoline.
for (i = 0; i < wos->overrides_count; i++) {
struct WagonOverride *wo = &wos->overrides[i];
@@ -222,7 +212,7 @@ static struct SpriteGroup *GetWagonOverrideSpriteSet(byte engine, byte overridin
for (j = 0; j < wo->trains; j++) {
if (wo->train_id[j] == overriding_engine)
return &wo->group;
return &wo->superset;
}
}
return NULL;
@@ -234,263 +224,44 @@ byte _engine_original_sprites[256];
// (It isn't and shouldn't be like this in the GRF files since new cargo types
// may appear in future - however it's more convenient to store it like this in
// memory. --pasky)
static struct SpriteGroup _engine_custom_sprites[256][NUM_CID];
static struct SpriteSuperSet _engine_custom_sprites[256][NUM_CID];
void SetCustomEngineSprites(byte engine, byte cargo, struct SpriteGroup *group)
void SetCustomEngineSprites(byte engine, byte cargo, struct SpriteSuperSet *superset)
{
/* FIXME: If we are replacing an override, release original SpriteGroup
* to prevent leaks. But first we need to refcount the SpriteGroup.
* --pasky */
_engine_custom_sprites[engine][cargo] = *group;
assert(superset->sprites_per_set == 4 || superset->sprites_per_set == 8);
_engine_custom_sprites[engine][cargo] = *superset;
}
typedef struct RealSpriteGroup *(*resolve_callback)(struct SpriteGroup *spritegroup,
struct Vehicle *veh,
void *callback); /* XXX data pointer used as function pointer */
static struct RealSpriteGroup *
ResolveVehicleSpriteGroup(struct SpriteGroup *spritegroup, struct Vehicle *veh,
resolve_callback callback)
int GetCustomEngineSprite(byte engine, uint16 overriding_engine, byte cargo,
byte loaded, byte in_motion, byte direction)
{
//debug("spgt %d", spritegroup->type);
switch (spritegroup->type) {
case SGT_REAL:
return &spritegroup->g.real;
case SGT_DETERMINISTIC: {
struct DeterministicSpriteGroup *dsg = &spritegroup->g.determ;
struct SpriteGroup *target;
int value = -1;
//debug("[%p] Having fun resolving variable %x", veh, dsg->variable);
if ((dsg->variable >> 6) == 0) {
/* General property */
value = GetDeterministicSpriteValue(dsg->variable);
} else {
/* Vehicle-specific property. */
if (veh == NULL) {
/* We are in a purchase list of something,
* and we are checking for something undefined.
* That means we should get the first target
* (NOT the default one). */
if (dsg->num_ranges > 0) {
target = &dsg->ranges[0].group;
} else {
target = dsg->default_group;
}
return callback(target, NULL, callback);
}
if (dsg->var_scope == VSG_SCOPE_PARENT) {
/* First engine in the vehicle chain */
if (veh->type == VEH_Train)
veh = GetFirstVehicleInChain(veh);
}
if (dsg->variable == 0x40) {
if (veh->type == VEH_Train) {
Vehicle *u = GetFirstVehicleInChain(veh);
byte chain_before = 0, chain_after = 0;
while (u != veh) {
u = u->next;
chain_before++;
}
while (u->next != NULL) {
u = u->next;
chain_after++;
};
value = chain_before << 16 | chain_after << 8
| (chain_before + chain_after + 1);
} else {
value = 1; /* 1 vehicle in the chain */
}
} else {
// TTDPatch runs on little-endian arch;
// Variable is 0x80 + offset in TTD's vehicle structure
switch (dsg->variable - 0x80) {
#define veh_prop(id_, value_) case (id_): value = (value_); break
veh_prop(0x00, veh->type);
veh_prop(0x01, veh->subtype);
veh_prop(0x04, veh->index);
veh_prop(0x05, veh->index & 0xFF);
/* XXX? Is THIS right? */
veh_prop(0x0A, PackOrder(&veh->current_order));
veh_prop(0x0B, PackOrder(&veh->current_order) & 0xff);
veh_prop(0x0C, veh->num_orders);
veh_prop(0x0D, veh->cur_order_index);
veh_prop(0x10, veh->load_unload_time_rem);
veh_prop(0x11, veh->load_unload_time_rem & 0xFF);
veh_prop(0x12, veh->date_of_last_service);
veh_prop(0x13, veh->date_of_last_service & 0xFF);
veh_prop(0x14, veh->service_interval);
veh_prop(0x15, veh->service_interval & 0xFF);
veh_prop(0x16, veh->last_station_visited);
veh_prop(0x17, veh->tick_counter);
veh_prop(0x18, veh->max_speed);
veh_prop(0x19, veh->max_speed & 0xFF);
veh_prop(0x1F, veh->direction);
veh_prop(0x28, veh->cur_image);
veh_prop(0x29, veh->cur_image & 0xFF);
veh_prop(0x32, veh->vehstatus);
veh_prop(0x33, veh->vehstatus);
veh_prop(0x34, veh->cur_speed);
veh_prop(0x35, veh->cur_speed & 0xFF);
veh_prop(0x36, veh->subspeed);
veh_prop(0x37, veh->acceleration);
veh_prop(0x39, veh->cargo_type);
veh_prop(0x3A, veh->cargo_cap);
veh_prop(0x3B, veh->cargo_cap & 0xFF);
veh_prop(0x3C, veh->cargo_count);
veh_prop(0x3D, veh->cargo_count & 0xFF);
veh_prop(0x3E, veh->cargo_source); // Probably useless; so what
veh_prop(0x3F, veh->cargo_days);
veh_prop(0x40, veh->age);
veh_prop(0x41, veh->age & 0xFF);
veh_prop(0x42, veh->max_age);
veh_prop(0x43, veh->max_age & 0xFF);
veh_prop(0x44, veh->build_year);
veh_prop(0x45, veh->unitnumber);
veh_prop(0x46, veh->engine_type);
veh_prop(0x47, veh->engine_type & 0xFF);
veh_prop(0x48, veh->spritenum);
veh_prop(0x49, veh->day_counter);
veh_prop(0x4A, veh->breakdowns_since_last_service);
veh_prop(0x4B, veh->breakdown_ctr);
veh_prop(0x4C, veh->breakdown_delay);
veh_prop(0x4D, veh->breakdown_chance);
veh_prop(0x4E, veh->reliability);
veh_prop(0x4F, veh->reliability & 0xFF);
veh_prop(0x50, veh->reliability_spd_dec);
veh_prop(0x51, veh->reliability_spd_dec & 0xFF);
veh_prop(0x52, veh->profit_this_year);
veh_prop(0x53, veh->profit_this_year & 0xFFFFFF);
veh_prop(0x54, veh->profit_this_year & 0xFFFF);
veh_prop(0x55, veh->profit_this_year & 0xFF);
veh_prop(0x56, veh->profit_last_year);
veh_prop(0x57, veh->profit_last_year & 0xFF);
veh_prop(0x58, veh->profit_last_year);
veh_prop(0x59, veh->profit_last_year & 0xFF);
veh_prop(0x5A, veh->next_in_chain_old);
veh_prop(0x5B, veh->next_in_chain_old & 0xFF);
veh_prop(0x5C, veh->value);
veh_prop(0x5D, veh->value & 0xFFFFFF);
veh_prop(0x5E, veh->value & 0xFFFF);
veh_prop(0x5F, veh->value & 0xFF);
veh_prop(0x60, veh->string_id);
veh_prop(0x61, veh->string_id & 0xFF);
/* 00h..07h=sub image? 40h=in tunnel; actually some kind of status
* aircraft: >=13h when in flight
* train, ship: 80h=in depot
* rv: 0feh=in depot */
/* TODO veh_prop(0x62, veh->???); */
/* TODO: The rest is per-vehicle, I hope no GRF file looks so far.
* But they won't let us have an easy ride so surely *some* GRF
* file does. So someone needs to do this too. --pasky */
#undef veh_prop
}
}
}
target = value != -1 ? EvalDeterministicSpriteGroup(dsg, value) : dsg->default_group;
//debug("Resolved variable %x: %d, %p", dsg->variable, value, callback);
return callback(target, veh, callback);
}
case SGT_RANDOMIZED: {
struct RandomizedSpriteGroup *rsg = &spritegroup->g.random;
if (veh == NULL) {
/* Purchase list of something. Show the first one. */
assert(rsg->num_groups > 0);
//debug("going for %p: %d", rsg->groups[0], rsg->groups[0].type);
return callback(&rsg->groups[0], NULL, callback);
}
if (rsg->var_scope == VSG_SCOPE_PARENT) {
/* First engine in the vehicle chain */
if (veh->type == VEH_Train)
veh = GetFirstVehicleInChain(veh);
}
return callback(EvalRandomizedSpriteGroup(rsg, veh->random_bits), veh, callback);
}
default:
error("I don't know how to handle such a spritegroup %d!", spritegroup->type);
return NULL;
}
}
static struct SpriteGroup *GetVehicleSpriteGroup(byte engine, Vehicle *v)
{
struct SpriteGroup *group;
uint16 overriding_engine = -1;
byte cargo = CID_PURCHASE;
if (v != NULL) {
overriding_engine = v->type == VEH_Train ? v->u.rail.first_engine : -1;
cargo = _global_cargo_id[_opt.landscape][v->cargo_type];
}
group = &_engine_custom_sprites[engine][cargo];
if (overriding_engine != 0xffff) {
struct SpriteGroup *overset;
overset = GetWagonOverrideSpriteSet(engine, overriding_engine);
if (overset) group = overset;
}
return group;
}
int GetCustomEngineSprite(byte engine, Vehicle *v, byte direction)
{
struct SpriteGroup *group;
struct RealSpriteGroup *rsg;
byte cargo = CID_PURCHASE;
byte loaded = 0;
bool in_motion = 0;
struct SpriteSuperSet *superset = &_engine_custom_sprites[engine][cargo];
int totalsets, spriteset;
int r;
if (v != NULL) {
int capacity = v->cargo_cap;
if (overriding_engine != 0xffff) {
struct SpriteSuperSet *overset;
cargo = _global_cargo_id[_opt.landscape][v->cargo_type];
if (capacity == 0) capacity = 1;
loaded = (v->cargo_count * 100) / capacity;
in_motion = (v->cur_speed != 0);
overset = GetWagonOverrideSpriteSet(engine, overriding_engine);
if (overset) superset = overset;
}
group = GetVehicleSpriteGroup(engine, v);
rsg = ResolveVehicleSpriteGroup(group, v, (resolve_callback) ResolveVehicleSpriteGroup);
if (rsg->sprites_per_set == 0 && cargo != 29) { /* XXX magic number */
// This group is empty but perhaps there'll be a default one.
rsg = ResolveVehicleSpriteGroup(&_engine_custom_sprites[engine][29], v,
(resolve_callback) ResolveVehicleSpriteGroup);
if (!superset->sprites_per_set && cargo != 29) {
// This superset is empty but perhaps there'll be a default one.
superset = &_engine_custom_sprites[engine][29];
}
if (!rsg->sprites_per_set) {
// This group is empty. This function users should therefore
if (!superset->sprites_per_set) {
// This superset is empty. This function users should therefore
// look up the sprite number in _engine_original_sprites.
return 0;
}
direction %= 8;
if (rsg->sprites_per_set == 4)
if (superset->sprites_per_set == 4)
direction %= 4;
totalsets = in_motion ? rsg->loaded_count : rsg->loading_count;
totalsets = in_motion ? superset->loaded_count : superset->loading_count;
// My aim here is to make it possible to visually determine absolutely
// empty and totally full vehicles. --pasky
@@ -507,91 +278,11 @@ int GetCustomEngineSprite(byte engine, Vehicle *v, byte direction)
spriteset--;
}
r = (in_motion ? rsg->loaded[spriteset] : rsg->loading[spriteset]) + direction;
r = (in_motion ? superset->loaded[spriteset] : superset->loading[spriteset]) + direction;
return r;
}
// Global variables are evil, yes, but we would end up with horribly overblown
// calling convention otherwise and this should be 100% reentrant.
static byte _vsg_random_triggers;
static byte _vsg_bits_to_reseed;
extern int _custom_sprites_base;
static struct RealSpriteGroup *
TriggerVehicleSpriteGroup(struct SpriteGroup *spritegroup, struct Vehicle *veh,
resolve_callback callback)
{
if (spritegroup->type == SGT_RANDOMIZED)
_vsg_bits_to_reseed |= RandomizedSpriteGroupTriggeredBits(&spritegroup->g.random,
_vsg_random_triggers,
&veh->waiting_triggers);
return ResolveVehicleSpriteGroup(spritegroup, veh, callback);
}
static void DoTriggerVehicle(Vehicle *veh, enum VehicleTrigger trigger, byte base_random_bits, bool first)
{
struct RealSpriteGroup *rsg;
byte new_random_bits;
_vsg_random_triggers = trigger;
_vsg_bits_to_reseed = 0;
rsg = TriggerVehicleSpriteGroup(GetVehicleSpriteGroup(veh->engine_type, veh), veh,
(resolve_callback) TriggerVehicleSpriteGroup);
if (rsg->sprites_per_set == 0 && veh->cargo_type != 29) { /* XXX magic number */
// This group turned out to be empty but perhaps there'll be a default one.
rsg = TriggerVehicleSpriteGroup(&_engine_custom_sprites[veh->engine_type][29], veh,
(resolve_callback) TriggerVehicleSpriteGroup);
}
new_random_bits = Random();
veh->random_bits &= ~_vsg_bits_to_reseed;
veh->random_bits |= (first ? new_random_bits : base_random_bits) & _vsg_bits_to_reseed;
switch (trigger) {
case VEHICLE_TRIGGER_NEW_CARGO:
/* All vehicles in chain get ANY_NEW_CARGO trigger now.
* So we call it for the first one and they will recurse. */
/* Indexing part of vehicle random bits needs to be
* same for all triggered vehicles in the chain (to get
* all the random-cargo wagons carry the same cargo,
* i.e.), so we give them all the NEW_CARGO triggered
* vehicle's portion of random bits. */
assert(first);
DoTriggerVehicle(GetFirstVehicleInChain(veh), VEHICLE_TRIGGER_ANY_NEW_CARGO, new_random_bits, false);
break;
case VEHICLE_TRIGGER_DEPOT:
/* We now trigger the next vehicle in chain recursively.
* The random bits portions may be different for each
* vehicle in chain. */
if (veh->next != NULL)
DoTriggerVehicle(veh->next, trigger, 0, true);
break;
case VEHICLE_TRIGGER_EMPTY:
/* We now trigger the next vehicle in chain
* recursively. The random bits portions must be same
* for each vehicle in chain, so we give them all
* first chained vehicle's portion of random bits. */
if (veh->next != NULL)
DoTriggerVehicle(veh->next, trigger, first ? new_random_bits : base_random_bits, false);
break;
case VEHICLE_TRIGGER_ANY_NEW_CARGO:
/* Now pass the trigger recursively to the next vehicle
* in chain. */
assert(!first);
if (veh->next != NULL)
DoTriggerVehicle(veh->next, VEHICLE_TRIGGER_ANY_NEW_CARGO, base_random_bits, false);
break;
}
}
void TriggerVehicle(Vehicle *veh, enum VehicleTrigger trigger)
{
DoTriggerVehicle(veh, trigger, 0, true);
}
static char *_engine_custom_names[256];
void SetCustomEngineName(int engine, char *name)
@@ -603,8 +294,7 @@ StringID GetCustomEngineName(int engine)
{
if (!_engine_custom_names[engine])
return _engine_name_strings[engine];
strncpy(_userstring, _engine_custom_names[engine], USERSTRING_LEN);
_userstring[USERSTRING_LEN - 1] = '\0';
strcpy(_userstring, _engine_custom_names[engine]);
return STR_SPEC_USERSTRING;
}
@@ -638,7 +328,7 @@ void EnginesDailyLoop()
for(e=_engines,i=0; i!=TOTAL_NUM_ENGINES; e++,i++) {
if (e->flags & ENGINE_INTRODUCING) {
if (e->flags & ENGINE_PREVIEWING) {
if (e->preview_player != 0xFF && !--e->preview_wait) {
if (!--e->preview_wait) {
e->flags &= ~ENGINE_PREVIEWING;
DeleteWindowById(WC_ENGINE_PREVIEW, i);
e->preview_player++;
@@ -687,18 +377,7 @@ int32 CmdWantEnginePreview(int x, int y, uint32 flags, uint32 p1, uint32 p2)
return 0;
}
// Determine if an engine type is a wagon (and not a loco)
bool isWagon(byte index)
{
if (index < NUM_TRAIN_ENGINES) {
const RailVehicleInfo *rvi = &_rail_vehicle_info[index];
if(rvi->flags & RVI_WAGON)
return true;
}
return false;
}
static void NewVehicleAvailable(Engine *e)
void NewVehicleAvailable(Engine *e)
{
Vehicle *v;
Player *p;
@@ -731,8 +410,11 @@ static void NewVehicleAvailable(Engine *e)
e->player_avail = (byte)-1;
// Do not introduce new rail wagons
if(isWagon(index))
return;
if ((byte)index < NUM_TRAIN_ENGINES) {
const RailVehicleInfo *rvi = &_rail_vehicle_info[index];
if(rvi->flags & RVI_WAGON)
return;
}
// make maglev / monorail available
FOR_ALL_PLAYERS(p) {
@@ -769,10 +451,7 @@ void EnginesMonthlyLoop()
} else if (!(e->flags & (ENGINE_AVAILABLE|ENGINE_INTRODUCING)) && _date >= e->intro_date) {
// Introduction date has passed.. show introducing dialog to one player.
e->flags |= ENGINE_INTRODUCING;
// Do not introduce new rail wagons
if(!isWagon(e - _engines))
e->preview_player = 1; // Give to the player with the highest rating.
e->preview_player = 1; // Give to the player with the highest rating.
}
}
}
@@ -783,7 +462,7 @@ int32 CmdRenameEngine(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{
StringID str;
str = AllocateNameUnique((byte*)_decode_parameters, 0);
str = AllocateName((byte*)_decode_parameters, 0);
if (str == 0)
return CMD_ERROR;

View File

@@ -1,8 +1,6 @@
#ifndef ENGINE_H
#define ENGINE_H
#include "sprite.h"
typedef struct RailVehicleInfo {
byte image_index;
byte flags; /* 1=multihead engine, 2=wagon */
@@ -27,27 +25,6 @@ typedef struct ShipVehicleInfo {
byte refittable;
} ShipVehicleInfo;
typedef struct AircraftVehicleInfo {
byte image_index;
byte base_cost;
byte running_cost;
byte subtype;
byte sfx;
byte acceleration;
byte max_speed;
byte mail_capacity;
uint16 passanger_capacity;
} AircraftVehicleInfo;
typedef struct RoadVehicleInfo {
byte image_index;
byte base_cost;
byte running_cost;
byte sfx;
byte max_speed;
byte capacity;
byte cargo_type;
} RoadVehicleInfo;
typedef struct EngineInfo {
uint16 base_intro;
@@ -82,6 +59,18 @@ enum {
void StartupEngines();
struct SpriteSuperSet {
// XXX: Would anyone ever need more than 16 spritesets? Maybe we should
// use even less, now we take whole 8kb for custom sprites table, oh my!
byte sprites_per_set; // means number of directions - 4 or 8
// Loaded = in motion, loading = not moving
// Each superset contains several spritesets, for various loading stages
byte loaded_count;
uint16 loaded[16]; // sprite ids
byte loading_count;
uint16 loading[16]; // sprite ids
};
extern byte _global_cargo_id[NUM_LANDSCAPE][NUM_CARGO];
enum {
CID_DEFAULT = 29,
@@ -94,23 +83,15 @@ extern byte _local_cargo_id_landscape[NUM_CID];
extern uint32 _engine_refit_masks[256];
extern byte _engine_original_sprites[256];
void SetWagonOverrideSprites(byte engine, struct SpriteGroup *group, byte *train_id, int trains);
void SetCustomEngineSprites(byte engine, byte cargo, struct SpriteGroup *group);
void SetWagonOverrideSprites(byte engine, struct SpriteSuperSet *superset, byte *train_id, int trains);
void SetCustomEngineSprites(byte engine, byte cargo, struct SpriteSuperSet *superset);
// loaded is in percents, overriding_engine 0xffff is none
int GetCustomEngineSprite(byte engine, Vehicle *v, byte direction);
#define GetCustomVehicleSprite(v, direction) GetCustomEngineSprite(v->engine_type, v, direction)
#define GetCustomVehicleIcon(et, direction) GetCustomEngineSprite(et, NULL, direction)
enum VehicleTrigger {
VEHICLE_TRIGGER_NEW_CARGO = 1,
// Externally triggered only for the first vehicle in chain
VEHICLE_TRIGGER_DEPOT = 2,
// Externally triggered only for the first vehicle in chain, only if whole chain is empty
VEHICLE_TRIGGER_EMPTY = 4,
// Not triggered externally (called for the whole chain if we got NEW_CARGO)
VEHICLE_TRIGGER_ANY_NEW_CARGO = 8,
};
void TriggerVehicle(Vehicle *veh, enum VehicleTrigger trigger);
int GetCustomEngineSprite(byte engine, uint16 overriding_engine, byte cargo, byte loaded, byte in_motion, byte direction);
#define GetCustomVehicleSprite(v, direction) \
GetCustomEngineSprite(v->engine_type, v->type == VEH_Train ? v->u.rail.first_engine : -1, \
_global_cargo_id[_opt.landscape][v->cargo_type], \
((v->cargo_count + 1) * 100) / (v->cargo_cap + 1), \
!!v->cur_speed, direction);
void SetCustomEngineName(int engine, char *name);
StringID GetCustomEngineName(int engine);
@@ -140,45 +121,17 @@ enum {
NUM_ROAD_ENGINES = 88,
NUM_SHIP_ENGINES = 11,
NUM_AIRCRAFT_ENGINES = 41,
TOTAL_NUM_ENGINES = NUM_TRAIN_ENGINES + NUM_ROAD_ENGINES + NUM_SHIP_ENGINES + NUM_AIRCRAFT_ENGINES,
TOTAL_NUM_ENGINES = NUM_NORMAL_RAIL_ENGINES+NUM_MONORAIL_ENGINES+NUM_MAGLEV_ENGINES+NUM_ROAD_ENGINES+NUM_SHIP_ENGINES+NUM_AIRCRAFT_ENGINES,
AIRCRAFT_ENGINES_INDEX = NUM_TRAIN_ENGINES + NUM_ROAD_ENGINES + NUM_SHIP_ENGINES,
SHIP_ENGINES_INDEX = NUM_TRAIN_ENGINES + NUM_ROAD_ENGINES,
ROAD_ENGINES_INDEX = NUM_TRAIN_ENGINES,
};
VARDEF Engine _engines[TOTAL_NUM_ENGINES];
#define DEREF_ENGINE(i) (&_engines[i])
VARDEF StringID _engine_name_strings[TOTAL_NUM_ENGINES];
/* Access Vehicle Data */
//#include "table/engines.h"
extern EngineInfo _engine_info[TOTAL_NUM_ENGINES];
extern RailVehicleInfo _rail_vehicle_info[NUM_TRAIN_ENGINES];
extern ShipVehicleInfo _ship_vehicle_info[NUM_SHIP_ENGINES];
extern AircraftVehicleInfo _aircraft_vehicle_info[NUM_AIRCRAFT_ENGINES];
extern RoadVehicleInfo _road_vehicle_info[NUM_ROAD_ENGINES];
static inline RailVehicleInfo *RailVehInfo(uint e)
{
assert(e < lengthof(_rail_vehicle_info));
return &_rail_vehicle_info[e];
}
static inline ShipVehicleInfo *ShipVehInfo(uint e)
{
assert(e - SHIP_ENGINES_INDEX < lengthof(_ship_vehicle_info));
return &_ship_vehicle_info[e - SHIP_ENGINES_INDEX];
}
static inline AircraftVehicleInfo *AircraftVehInfo(uint e)
{
assert(e - AIRCRAFT_ENGINES_INDEX < lengthof(_aircraft_vehicle_info));
return &_aircraft_vehicle_info[e - AIRCRAFT_ENGINES_INDEX];
}
static inline RoadVehicleInfo *RoadVehInfo(uint e)
{
assert(e - ROAD_ENGINES_INDEX < lengthof(_road_vehicle_info));
return &_road_vehicle_info[e - ROAD_ENGINES_INDEX];
}
extern RailVehicleInfo _rail_vehicle_info[];
#define ship_vehicle_info(e) _ship_vehicle_info[e - SHIP_ENGINES_INDEX]
extern ShipVehicleInfo _ship_vehicle_info[];
#endif

View File

@@ -1,6 +1,6 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "window.h"
#include "gui.h"
#include "viewport.h"
@@ -15,16 +15,14 @@ void DrawShipEngineInfo(int engine, int x, int y, int maxw);
StringID GetEngineCategoryName(byte engine)
{
if (engine < NUM_TRAIN_ENGINES) {
switch (_engines[engine].railtype) {
case 0:
return STR_8102_RAILROAD_LOCOMOTIVE;
case 1:
return STR_8106_MONORAIL_LOCOMOTIVE;
case 2:
return STR_8107_MAGLEV_LOCOMOTIVE;
}
}
if (engine < NUM_NORMAL_RAIL_ENGINES)
return STR_8102_RAILROAD_LOCOMOTIVE;
if (engine < NUM_NORMAL_RAIL_ENGINES + NUM_MONORAIL_ENGINES)
return STR_8106_MONORAIL_LOCOMOTIVE;
if (engine < NUM_TRAIN_ENGINES)
return STR_8107_MAGLEV_LOCOMOTIVE;
if (engine < NUM_TRAIN_ENGINES + NUM_ROAD_ENGINES)
return STR_8103_ROAD_VEHICLE;
@@ -71,7 +69,7 @@ static void EnginePreviewWndProc(Window *w, WindowEvent *e)
DrawWindowWidgets(w);
engine = w->window_number;
SetDParam(0, GetEngineCategoryName(engine));
SET_DPARAM16(0, GetEngineCategoryName(engine));
DrawStringMultiCenter(150, 44, STR_8101_WE_HAVE_JUST_DESIGNED_A, 296);
DrawStringCentered(w->width >> 1, 80, GetCustomEngineName(engine), 0x10);
@@ -123,12 +121,12 @@ void DrawNewsNewTrainAvail(Window *w)
DrawNewsBorder(w);
engine = WP(w,news_d).ni->string_id;
SetDParam(0, GetEngineCategoryName(engine));
SET_DPARAM16(0, GetEngineCategoryName(engine));
DrawStringMultiCenter(w->width >> 1, 20, STR_8859_NEW_NOW_AVAILABLE, w->width - 2);
GfxFillRect(25, 56, w->width - 25, w->height - 2, 10);
SetDParam(0, GetCustomEngineName(engine));
SET_DPARAM16(0, GetCustomEngineName(engine));
DrawStringMultiCenter(w->width >> 1, 57, STR_885A, w->width - 2);
DrawTrainEngine(w->width >> 1, 88, engine, 0);
@@ -139,9 +137,9 @@ void DrawNewsNewTrainAvail(Window *w)
StringID GetNewsStringNewTrainAvail(NewsItem *ni)
{
int engine = ni->string_id;
SetDParam(0, STR_8859_NEW_NOW_AVAILABLE);
SetDParam(1, GetEngineCategoryName(engine));
SetDParam(2, GetCustomEngineName(engine));
SET_DPARAM16(0, STR_8859_NEW_NOW_AVAILABLE);
SET_DPARAM16(1, GetEngineCategoryName(engine));
SET_DPARAM16(2, GetCustomEngineName(engine));
return STR_02B6;
}
@@ -156,7 +154,7 @@ void DrawNewsNewAircraftAvail(Window *w)
DrawStringMultiCenter(w->width >> 1, 20, STR_A02C_NEW_AIRCRAFT_NOW_AVAILABLE, w->width - 2);
GfxFillRect(25, 56, w->width - 25, w->height - 2, 10);
SetDParam(0, GetCustomEngineName(engine));
SET_DPARAM16(0, GetCustomEngineName(engine));
DrawStringMultiCenter(w->width >> 1, 57, STR_A02D, w->width - 2);
DrawAircraftEngine(w->width >> 1, 93, engine, 0);
@@ -167,8 +165,8 @@ void DrawNewsNewAircraftAvail(Window *w)
StringID GetNewsStringNewAircraftAvail(NewsItem *ni)
{
int engine = ni->string_id;
SetDParam(0, STR_A02C_NEW_AIRCRAFT_NOW_AVAILABLE);
SetDParam(1, GetCustomEngineName(engine));
SET_DPARAM16(0, STR_A02C_NEW_AIRCRAFT_NOW_AVAILABLE);
SET_DPARAM16(1, GetCustomEngineName(engine));
return STR_02B6;
}
@@ -182,7 +180,7 @@ void DrawNewsNewRoadVehAvail(Window *w)
DrawStringMultiCenter(w->width >> 1, 20, STR_9028_NEW_ROAD_VEHICLE_NOW_AVAILABLE, w->width - 2);
GfxFillRect(25, 56, w->width - 25, w->height - 2, 10);
SetDParam(0, GetCustomEngineName(engine));
SET_DPARAM16(0, GetCustomEngineName(engine));
DrawStringMultiCenter(w->width >> 1, 57, STR_9029, w->width - 2);
DrawRoadVehEngine(w->width >> 1, 88, engine, 0);
@@ -193,8 +191,8 @@ void DrawNewsNewRoadVehAvail(Window *w)
StringID GetNewsStringNewRoadVehAvail(NewsItem *ni)
{
int engine = ni->string_id;
SetDParam(0, STR_9028_NEW_ROAD_VEHICLE_NOW_AVAILABLE);
SetDParam(1, GetCustomEngineName(engine));
SET_DPARAM16(0, STR_9028_NEW_ROAD_VEHICLE_NOW_AVAILABLE);
SET_DPARAM16(1, GetCustomEngineName(engine));
return STR_02B6;
}
@@ -209,7 +207,7 @@ void DrawNewsNewShipAvail(Window *w)
DrawStringMultiCenter(w->width >> 1, 20, STR_982C_NEW_SHIP_NOW_AVAILABLE, w->width - 2);
GfxFillRect(25, 56, w->width - 25, w->height - 2, 10);
SetDParam(0, GetCustomEngineName(engine));
SET_DPARAM16(0, GetCustomEngineName(engine));
DrawStringMultiCenter(w->width >> 1, 57, STR_982D, w->width - 2);
DrawShipEngine(w->width >> 1, 93, engine, 0);
@@ -220,7 +218,7 @@ void DrawNewsNewShipAvail(Window *w)
StringID GetNewsStringNewShipAvail(NewsItem *ni)
{
int engine = ni->string_id;
SetDParam(0, STR_982C_NEW_SHIP_NOW_AVAILABLE);
SetDParam(1, GetCustomEngineName(engine));
SET_DPARAM16(0, STR_982C_NEW_SHIP_NOW_AVAILABLE);
SET_DPARAM16(1, GetCustomEngineName(engine));
return STR_02B6;
}

105
extmidi.c
View File

@@ -12,83 +12,83 @@
#include <errno.h>
#ifndef EXTERNAL_PLAYER
#define EXTERNAL_PLAYER "timidity"
#define EXTERNAL_PLAYER "/usr/bin/timidity"
#endif
static pid_t _pid;
static void extmidi_kill(void)
{
if (_pid > 0) {
kill(_pid, SIGKILL);
while (waitpid(_pid, NULL, WNOHANG) != _pid);
}
_pid = 0;
static void extmidi_kill(void) {
if(_pid > 0) {
kill(_pid, SIGKILL);
while(waitpid(_pid, NULL, WNOHANG) != _pid);
}
_pid = 0;
}
static char *extmidi_start(char **parm)
{
_pid = 0;
return NULL;
static char *extmidi_start(char **parm) {
_pid = 0;
return NULL;
}
static void extmidi_stop(void)
{
extmidi_kill();
static void extmidi_stop(void) {
extmidi_kill();
}
static void extmidi_play_song(const char *filename)
{
extmidi_kill();
static void extmidi_play_song(const char *filename) {
extmidi_kill();
_pid = fork();
if (_pid < 0) {
fprintf(stderr, "extmidi: couldn't fork: %s\n", strerror(errno));
_pid = 0;
return;
}
_pid = fork();
if(_pid < 0) {
fprintf(stderr, "extmidi: couldn't fork: %s\n", strerror(errno));
_pid = 0;
return;
}
if (_pid == 0) {
#if defined(MIDI_ARG)
execlp(EXTERNAL_PLAYER, "extmidi", MIDI_ARG, filename, NULL);
if(_pid == 0) {
#if defined(MIDI_ARG)
execl(EXTERNAL_PLAYER, "extmidi", MIDI_ARG, filename, NULL);
#else
execlp(EXTERNAL_PLAYER, "extmidi", filename, NULL);
execl(EXTERNAL_PLAYER, "extmidi", filename, NULL);
#endif
fprintf(stderr, "extmidi: couldn't execl: %s\n", strerror(errno));
exit(0);
}
usleep(500);
fprintf(stderr, "extmidi: couldn't execl: %s\n", strerror(errno));
if (_pid == waitpid(_pid, NULL, WNOHANG)) {
fprintf(stderr, "extmidi: play song failed\n");
_pid = 0;
exit(0);
}
usleep(5000);
}
usleep(500);
if(_pid == waitpid(_pid, NULL, WNOHANG)) {
fprintf(stderr, "extmidi: play song failed\n");
_pid = 0;
usleep(5000);
}
}
static void extmidi_stop_song(void)
{
extmidi_kill();
static void extmidi_stop_song(void) {
extmidi_kill();
}
static bool extmidi_is_playing(void)
{
if (_pid == 0)
return 0;
static bool extmidi_is_playing(void) {
if(_pid == 0)
return 0;
if (waitpid(_pid, NULL, WNOHANG) == _pid) {
_pid = 0;
return 0;
}
if(waitpid(_pid, NULL, WNOHANG) == _pid) {
_pid = 0;
return 0;
}
return 1;
return 1;
}
static void extmidi_set_volume(byte vol)
{
fprintf(stderr, "extmidi: set volume not implemented\n");
static void extmidi_set_volume(byte vol) {
fprintf(stderr, "extmidi: set volume not implemented\n");
}
const HalMusicDriver _extmidi_music_driver = {
@@ -99,6 +99,5 @@ const HalMusicDriver _extmidi_music_driver = {
extmidi_is_playing,
extmidi_set_volume,
};
#endif /* __MORPHOS__ */
#endif /* __BEOS__ */

View File

@@ -110,16 +110,6 @@ void FioOpenFile(int slot, const char *filename)
for(s=buf + strlen(_path.data_dir) - 1; *s != 0; s++)
*s = tolower(*s);
f = fopen(buf, "rb");
#if defined SECOND_DATA_DIR
// tries in the 2nd data directory
if (f == NULL) {
sprintf(buf, "%s%s", _path.second_data_dir, filename);
for(s=buf + strlen(_path.second_data_dir) - 1; *s != 0; s++)
*s = tolower(*s);
f = fopen(buf, "rb");
}
#endif
}
#endif

View File

@@ -1,6 +1,8 @@
#ifndef FUNCTIONS_H
#define FUNCTIONS_H
#include "network.h"
/* vehicle.c */
/* window.c */
@@ -21,7 +23,7 @@ void RunTileLoop();
uint GetPartialZ(int x, int y, int corners);
uint GetSlopeZ(int x, int y);
uint32 GetTileTrackStatus(uint tile, TransportType mode);
void GetAcceptedCargo(uint tile, AcceptedCargo ac);
void GetAcceptedCargo(uint tile, AcceptedCargo *ac);
void ChangeTileOwner(uint tile, byte old_player, byte new_player);
void AnimateTile(uint tile);
void ClickTile(uint tile);
@@ -35,24 +37,13 @@ enum {
bool IsValidTile(uint tile);
static inline Point RemapCoords(int x, int y, int z)
{
#if !defined(NEW_ROTATION)
Point pt;
pt.x = (y - x) * 2;
pt.y = y + x - z;
static Point FORCEINLINE RemapCoords(int x, int y, int z) { Point pt = { (y-x)*2, y + x -z }; return pt; }
#else
Point pt;
pt.x = (x + y) * 2;
pt.y = x - y - z;
static Point FORCEINLINE RemapCoords(int x, int y, int z) { Point pt = { (x + y)*2, x - y -z }; return pt; }
#endif
return pt;
}
static inline Point RemapCoords2(int x, int y)
{
return RemapCoords(x, y, GetSlopeZ(x, y));
}
static Point FORCEINLINE RemapCoords2(int x, int y) { return RemapCoords(x, y, GetSlopeZ(x, y)); }
/* game.c */
byte *GetString(byte *buffr, uint16 string);
@@ -64,6 +55,11 @@ int GetParamInt8();
int GetParamUint16();
/* sound.c */
void SndPlayTileFx(int sound, TileIndex tile);
void SndPlayVehicleFx(int sound, Vehicle *v);
void SndPlayFx(int sound);
/* clear_land.c */
void DrawHillyLandTile(TileInfo *ti);
void DrawClearLandTile(TileInfo *ti, byte set);
@@ -75,7 +71,6 @@ void StationPickerDrawSprite(int x, int y, int railtype, int image);
/* track_land.c */
void DrawTrainDepotSprite(int x, int y, int image, int railtype);
void DrawWaypointSprite(int x, int y, int image, int railtype);
/* road_land.c */
void DrawRoadDepotSprite(int x, int y, int image);
@@ -96,30 +91,11 @@ StringID GetPlayerNameString(byte player, byte index);
void ShowInfo(const char *str);
void CDECL ShowInfoF(const char *str, ...);
void NORETURN CDECL error(const char *str, ...);
void memswap(void *a, void *b, size_t size);
/* ttd.c */
// **************
// * Warning: DO NOT enable this unless you understand what it does
// *
// * If enabled, in a network game all randoms will be dumped to the
// * stdout if the first client joins (or if you are a client). This
// * is to help finding desync problems.
// *
// * Warning: DO NOT enable this unless you understand what it does
// **************
//#define RANDOM_DEBUG
#ifdef RANDOM_DEBUG
#define Random() DoRandom(__LINE__, __FILE__)
uint32 DoRandom(uint line, char *file);
#define RandomRange(max) DoRandomRange(max, __LINE__, __FILE__)
uint DoRandomRange(uint max, uint line, char *file);
#else
uint32 Random();
uint RandomRange(uint max);
#endif
uint32 Random();
uint RandomRange(uint max);
void InitPlayerRandoms();
@@ -136,12 +112,6 @@ void AddTextEffect(StringID msg, int x, int y, uint16 duration);
void InitTextEffects();
void DrawTextEffects(DrawPixelInfo *dpi);
void InitTextMessage();
void DrawTextMessage();
void CDECL AddTextMessage(uint16 color, uint8 duration, const char *message, ...);
void UndrawTextMessage();
void TextMessageDailyLoop();
bool AddAnimatedTile(uint tile);
void DeleteAnimatedTile(uint tile);
void AnimateAnimatedTiles();
@@ -153,20 +123,46 @@ bool CheckBridge_Stuff(byte bridge_type, int bridge_len);
uint32 GetBridgeLength(TileIndex begin, TileIndex end);
int CalcBridgeLenCostFactor(int x);
/* network.c */
typedef void CommandCallback(bool success, uint tile, uint32 p1, uint32 p2);
bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback, uint32 cmd);
/* network.c */
void NetworkUDPClose(void);
void NetworkStartUp();
void NetworkShutDown(void);
void NetworkGameLoop(void);
void NetworkUDPGameLoop(void);
bool NetworkServerStart(void);
bool NetworkClientConnectGame(const byte* host, unsigned short port);
void NetworkReboot();
void NetworkDisconnect();
void NetworkSend_Command(uint32 tile, uint32 p1, uint32 p2, uint32 cmd, CommandCallback *callback);
void NetworkReceive();
void NetworkSend();
void NetworkProcessCommands();
void NetworkListen();
void NetworkInitialize();
void NetworkShutdown();
void NetworkSendCommand(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, CommandCallback *callback);
void NetworkSendEvent(uint16 type, uint16 data_len, void * data);
void NetworkStartSync(bool fcreset);
void NetworkClose(bool client);
void NetworkSendReadyPacket();
void NetworkSendSyncPackets();
void NetworkSendFrameSyncPackets();
bool NetworkCheckClientReady();
void NetworkIPListInit();
void NetworkCoreInit();
void NetworkCoreShutdown();
void NetworkCoreDisconnect();
void NetworkCoreLoop(bool incomming);
bool NetworkCoreConnectGame(const byte* b, unsigned short port);
bool NetworkCoreConnectGameStruct(NetworkGameList * item);
bool NetworkCoreStartGame();
void NetworkLobbyShutdown();
void NetworkLobbyInit();
void NetworkGameListClear();
NetworkGameList * NetworkGameListAdd();
void NetworkGameListFromLAN();
void NetworkGameListFromInternet();
NetworkGameList * NetworkGameListItem(uint16 index);
void NetworkGameFillDefaults();
void NetworkGameChangeDate(uint16 newdate);
/* misc_cmd.c */
void PlaceTreesRandomly();
@@ -182,16 +178,11 @@ void InitializeLandscapeVariables(bool only_constants);
/* misc.c */
void DeleteName(StringID id);
byte *GetName(int id, byte *buff);
// AllocateNameUnique also tests if the name used is not used anywere else
// and if it is used, it returns an error.
#define AllocateNameUnique(name, skip) RealAllocateName(name, skip, true)
#define AllocateName(name, skip) RealAllocateName(name, skip, false)
StringID RealAllocateName(const byte *name, byte skip, bool check_double);
StringID AllocateName(const byte *name, byte skip);
void ConvertDayToYMD(YearMonthDay *ymd, uint16 date);
uint ConvertYMDToDay(uint year, uint month, uint day);
uint ConvertIntDate(uint date);
void CSleep(int milliseconds);
/* misc functions */
@@ -228,12 +219,8 @@ void ChangeTownRating(Town *t, int add, int max);
uint GetRoadBitsByTile(TileIndex tile);
int GetTownRadiusGroup(Town *t, uint tile);
int32 GetTransportedGoodsIncome(uint num_pieces, uint dist, byte transit_days, byte cargo_type);
void ShowNetworkChatQueryWindow(byte desttype, byte dest);
void ShowNetworkGiveMoneyWindow(byte player);
void ShowNetworkNeedGamePassword();
void ShowNetworkNeedCompanyPassword();
void ShowRenameSignWindow(SignStruct *ss);
void ShowRenameWaypointWindow(Waypoint *cp);
void ShowRenameCheckpointWindow(Checkpoint *cp);
int FindFirstBit(uint32 x);
void ShowHighscoreTable(int tbl);
TileIndex AdjustTileCoordRandomly(TileIndex a, byte rng);
@@ -275,12 +262,17 @@ void ttd_strlcpy(char *dst, const char *src, size_t len);
// callback from drivers that is called if the game size changes dynamically
void GameSizeChanged();
bool MakeScreenshot();
bool MakeWorldScreenshot(int left, int top, int width, int height, int zoom);
bool FileExists(const char *filename);
bool ReadLanguagePack(int index);
void InitializeLanguagePacks();
byte *ReadFileToMem(const char *filename, size_t *lenp, size_t maxsize);
int GetLanguageList(char **languages, int max);
const char *GetScreenshotFormatDesc(int i);
void InitializeScreenshotFormats();
void SetScreenshotFormat(int i);
void CheckSwitchToEuro();
void LoadFromConfig();

165
gfx.c
View File

@@ -17,8 +17,7 @@ static byte _string_colorremap[3];
static byte _dirty_blocks[DIRTY_BYTES_PER_LINE * MAX_SCREEN_HEIGHT / 8];
void memcpy_pitch(void *d, void *s, int w, int h, int spitch, int dpitch)
static void memcpy_pitch(void *d, void *s, int w, int h, int spitch, int dpitch)
{
byte *dp = (byte*)d;
byte *sp = (byte*)s;
@@ -42,13 +41,12 @@ void GfxScroll(int left, int top, int width, int height, int xo, int yo) {
if (_cursor.visible)
UndrawMouseCursor();
UndrawTextMessage();
p = _screen.pitch;
if (yo > 0) {
if (yo > 0 || (yo == 0 && xo > 0)) {
// Calculate pointers
dst = _screen.dst_ptr + (top + height - 1) * p + left;
dst = _screen.dst_ptr + (top+height-1) * p + (left+width-1);
src = dst - yo * p;
// Decrease height and increase top
@@ -58,21 +56,31 @@ void GfxScroll(int left, int top, int width, int height, int xo, int yo) {
// Adjust left & width
if (xo >= 0) {
dst += xo;
left += xo;
src -= xo;
width -= xo;
} else {
src -= xo;
dst += xo;
width += xo;
}
for (ht = height; ht > 0; --ht) {
memcpy(dst, src, width);
// Offset pointers to fit into the memmove call
dst += -width + 1;
src += -width + 1;
ht = height;
do {
memmove(dst, src, width);
src -= p;
dst -= p;
}
} while (--ht);
// This part of the screen is now dirty.
_video_driver->make_dirty(left, top, width, height);
} else {
// Calculate pointers
// Calculate pointers to mem.
dst = _screen.dst_ptr + top * p + left;
src = dst - yo * p;
@@ -90,24 +98,23 @@ void GfxScroll(int left, int top, int width, int height, int xo, int yo) {
width += xo;
}
// the y-displacement may be 0 therefore we have to use memmove,
// because source and destination may overlap
for (ht = height; ht > 0; --ht) {
memmove(dst, src, width);
ht = height;
do {
memcpy(dst, src, width);
src += p;
dst += p;
}
} while (--ht);
// This part of the screen is now dirty.
_video_driver->make_dirty(left, top, width, height);
}
// This part of the screen is now dirty.
_video_driver->make_dirty(left, top, width, height);
}
void GfxFillRect(int left, int top, int right, int bottom, int color) {
DrawPixelInfo *dpi = _cur_dpi;
byte *dst,*ctab;
const int otop = top;
const int oleft = left;
if (dpi->zoom != 0)
return;
@@ -152,17 +159,19 @@ void GfxFillRect(int left, int top, int right, int bottom, int color) {
} while (--bottom);
}
} else {
byte bo = (oleft - left + dpi->left + otop - top + dpi->top) & 1;
byte bo = 0;
do {
int i;
for (i = (bo ^= 1); i < right; i += 2)
dst[i] = (byte)color;
byte b = (bo^=1);
for(i=0; i!=right;i++)
if ((b^=1) != 0)
dst[i] = (byte)color;
dst += dpi->pitch;
} while (--bottom > 0);
} while (--bottom);
}
}
static void GfxSetPixel(int x, int y, int color)
void GfxSetPixel(int x, int y, int color)
{
DrawPixelInfo *dpi = _cur_dpi;
if ((x-=dpi->left) < 0 || x>=dpi->width || (y-=dpi->top)<0 || y>=dpi->height)
@@ -256,7 +265,7 @@ enum {
/* returns right coordinate */
int DrawString(int x, int y, uint16 str, uint16 color)
int DrawString(int x, int y, uint16 str, byte color)
{
GetString(str_buffr, str);
assert(strlen(str_buffr) < sizeof(str_buffr) - 1);
@@ -264,7 +273,7 @@ int DrawString(int x, int y, uint16 str, uint16 color)
}
void DrawStringRightAligned(int x, int y, uint16 str, uint16 color)
void DrawStringRightAligned(int x, int y, uint16 str, byte color)
{
GetString(str_buffr, str);
assert(strlen(str_buffr) < sizeof(str_buffr) - 1);
@@ -272,7 +281,7 @@ void DrawStringRightAligned(int x, int y, uint16 str, uint16 color)
}
int DrawStringCentered(int x, int y, uint16 str, uint16 color)
int DrawStringCentered(int x, int y, uint16 str, byte color)
{
int w;
@@ -285,7 +294,7 @@ int DrawStringCentered(int x, int y, uint16 str, uint16 color)
return w;
}
void DrawStringCenterUnderline(int x, int y, uint16 str, uint16 color)
void DrawStringCenterUnderline(int x, int y, uint16 str, byte color)
{
int w = DrawStringCentered(x, y, str, color);
GfxFillRect(x-(w>>1), y+10, x-(w>>1)+w, y+10, _string_colorremap[1]);
@@ -474,15 +483,12 @@ void DrawFrameRect(int left, int top, int right, int bottom, int ctab, int flags
}
}
int DoDrawString(const byte *string, int x, int y, uint16 real_color) {
int DoDrawString(const byte *string, int x, int y, byte color) {
DrawPixelInfo *dpi = _cur_dpi;
int base = _stringwidth_base;
byte c;
byte color;
byte c, *b;
int xo = x, yo = y;
color = real_color & 0xFF;
if (color != 0xFE) {
if (x >= dpi->left + dpi->width ||
x + _screen.width*2 <= dpi->left ||
@@ -492,13 +498,9 @@ int DoDrawString(const byte *string, int x, int y, uint16 real_color) {
if (color != 0xFF) {
switch_color:;
if (real_color & IS_PALETTE_COLOR) {
_string_colorremap[1] = color;
_string_colorremap[2] = 215;
} else {
_string_colorremap[1] = _string_colormap[color].text;
_string_colorremap[2] = _string_colormap[color].shadow;
}
b = GetSpritePtr(674);
_string_colorremap[1] = b[color*2+8];
_string_colorremap[2] = b[color*2+9];
_color_remap_ptr = _string_colorremap;
}
}
@@ -1435,7 +1437,7 @@ static void GfxMainBlitter(byte *sprite, int x, int y, int mode)
byte *src = bp.sprite_org;
signed char b;
bp.sprite = dst + (bp.sprite - bp.sprite_org);
bp.sprite += (dst - src);
while (totpix != 0) {
assert(totpix > 0);
@@ -1463,8 +1465,8 @@ static void GfxMainBlitter(byte *sprite, int x, int y, int mode)
}
}
#if 0
static void GfxScalePalette(int pal, byte scaling)
void GfxScalePalette(int pal, byte scaling)
{
byte *dst, *src;
size_t count;
@@ -1482,20 +1484,15 @@ static void GfxScalePalette(int pal, byte scaling)
src += 3;
} while (--count);
}
#endif
void DoPaletteAnimations();
void GfxInitPalettes()
{
int pal = _use_dos_palette?1:0;
memcpy(_cur_palette, _palettes[pal], 256*3);
memcpy(_cur_palette, _palettes[0], 256*3);
_pal_first_dirty = 0;
_pal_last_dirty = 255;
DoPaletteAnimations();
}
#define EXTR(p,q) (((uint16)(_timer_counter * (p)) * (q)) >> 16)
#define EXTR2(p,q) (((uint16)(~_timer_counter * (p)) * (q)) >> 16)
#define COPY_TRIPLET do {d[0]=s[0+j]; d[1]=s[1+j]; d[2]=s[2+j];d+=3;}while(0)
@@ -1504,17 +1501,13 @@ void DoPaletteAnimations()
{
const byte *s;
byte *d;
/* Amount of colors to be rotated.
* A few more for the DOS palette, because the water colors are
* 245-254 for DOS and 217-226 for Windows. */
int c = _use_dos_palette?38:28;
int j;
int i;
const ExtraPaletteValues *ev = &_extra_palette_values;
byte old_val[114]; // max(c*(38:28)) = 114
byte old_val[28*3];
d = _cur_palette + 217*3;
memcpy(old_val, d, c*3);
memcpy(old_val, d, 28*3);
// Dark blue water
s = ev->a;
@@ -1583,32 +1576,9 @@ void DoPaletteAnimations()
if (j == 3*4) j = 0;
}
// Animate water for old DOS graphics
if(_use_dos_palette) {
// Dark blue water DOS
s = ev->a;
if (_opt.landscape == LT_CANDY) s = ev->ac;
j = EXTR(320,5) * 3;
for(i=0; i!=5; i++) {
COPY_TRIPLET;
j+=3;
if (j == 15) j = 0;
}
// Glittery water DOS
s = ev->b;
if (_opt.landscape == LT_CANDY) s = ev->bc;
j = EXTR(128, 15) * 3;
for(i=0; i!=5; i++) {
COPY_TRIPLET;
j += 9;
if (j >= 45) j -= 45;
}
}
if (memcmp(old_val, _cur_palette + 217*3, c*3)) {
if (memcmp(old_val, _cur_palette + 217*3, 28*3)) {
if (_pal_first_dirty > 217) _pal_first_dirty = 217;
if (_pal_last_dirty < 217+c) _pal_last_dirty = 217+c;
if (_pal_last_dirty < 217+29-1) _pal_last_dirty = 217+29-1;
}
}
@@ -1690,7 +1660,7 @@ void DrawMouseCursor()
memcpy_pitch(
_cursor_backup,
_screen.dst_ptr + _cursor.draw_pos.x + _cursor.draw_pos.y * _screen.pitch,
_cursor.draw_size.x, _cursor.draw_size.y, _screen.pitch, _cursor.draw_size.x);
_cursor.draw_size.x, _cursor.draw_size.y, _screen.width, _cursor.draw_size.x);
// Draw cursor on screen
_cur_dpi = &_screen;
@@ -1702,8 +1672,7 @@ void DrawMouseCursor()
_cursor.dirty = false;
}
#if defined(_DEBUG)
static void DbgScreenRect(int left, int top, int right, int bottom)
void DbgScreenRect(int left, int top, int right, int bottom)
{
DrawPixelInfo dp,*old;
@@ -1713,7 +1682,6 @@ static void DbgScreenRect(int left, int top, int right, int bottom)
GfxFillRect(left, top, right-1, bottom-1, rand() & 255);
_cur_dpi = old;
}
#endif
extern bool _dbg_screen_rect;
@@ -1728,7 +1696,6 @@ void RedrawScreenRect(int left, int top, int right, int bottom)
UndrawMouseCursor();
}
}
UndrawTextMessage();
#if defined(_DEBUG)
if (_dbg_screen_rect)
@@ -1744,8 +1711,8 @@ void DrawDirtyBlocks()
{
byte *b = _dirty_blocks;
int x=0,y=0;
const int w = (_screen.width + 63) & ~63;
const int h = (_screen.height + 7) & ~7;
int w = (_screen.width + 63) & ~63;
int h = _screen.height;
do {
if (*b != 0) {
@@ -1961,23 +1928,3 @@ bool ChangeResInGame(int w, int h)
_cur_resolution[1] = h;
return true;
}
void ToggleFullScreen(const bool full_screen)
{
_fullscreen = full_screen;
/* use preset resolutions, not _screen.height and _screen.width. On windows for example
if Desktop-size is 1280x1024, and gamesize is also 1280x1024, _screen.height will be
only 1000 because of possible start-bar. For this reason you cannot switch to
fullscreen mode from this resolution. Use of preset resolution will fix this */
if (!_video_driver->change_resolution(_cur_resolution[0], _cur_resolution[1]))
_fullscreen ^= true; // switching resolution failed, put back full_screen to original status
}
uint16 GetDrawStringPlayerColor(byte player)
{
// Get the color for DrawString-subroutines which matches the color
// of the player
if (player == OWNER_SPECTATOR || player == OWNER_SPECTATOR - 1)
return 1;
return (_color_list[_player_colors[player]].window_color_1b) | IS_PALETTE_COLOR;
}

19
gfx.h
View File

@@ -42,15 +42,14 @@ typedef struct CursorVars {
void RedrawScreenRect(int left, int top, int right, int bottom);
void GfxScroll(int left, int top, int width, int height, int xo, int yo);
int DrawStringCentered(int x, int y, uint16 str, uint16 color);
int DrawString(int x, int y, uint16 str, uint16 color);
void DrawStringCenterUnderline(int x, int y, uint16 str, uint16 color);
int DoDrawString(const byte *string, int x, int y, uint16 color);
void DrawStringRightAligned(int x, int y, uint16 str, uint16 color);
int DrawStringCentered(int x, int y, uint16 str, byte color);
int DrawString(int x, int y, uint16 str, byte color);
void DrawStringCenterUnderline(int x, int y, uint16 str, byte color);
int DoDrawString(const byte *string, int x, int y, byte color);
void DrawStringRightAligned(int x, int y, uint16 str, byte color);
void GfxFillRect(int left, int top, int right, int bottom, int color);
void GfxDrawLine(int left, int top, int right, int bottom, int color);
void DrawFrameRect(int left, int top, int right, int bottom, int color, int flags);
uint16 GetDrawStringPlayerColor(byte player);
int GetStringWidth(const byte *str);
void LoadStringWidthTable();
@@ -79,7 +78,6 @@ void DrawMouseCursor();
void ScreenSizeChanged();
void UndrawMouseCursor();
bool ChangeResInGame(int w, int h);
void ToggleFullScreen(const bool full_screen);
typedef struct {
int xoffs, yoffs;
@@ -100,8 +98,6 @@ VARDEF CursorVars _cursor;
VARDEF int _pal_first_dirty;
VARDEF int _pal_last_dirty;
VARDEF bool _use_dos_palette;
/* spritecache.c */
//enum { NUM_SPRITES = 0x1320 };
//enum { NUM_SPRITES = 0x1500 };
@@ -111,9 +107,4 @@ enum { NUM_SPRITES = 0x3500 }; // 1500 + space for custom GRF sets
extern byte _palettes[4][256 * 3];
VARDEF byte _cur_palette[768];
typedef enum StringColorFlags {
IS_PALETTE_COLOR = 0x100, // color value is already a real palette color index, not an index of a StringColor
} StringColorFlags;
#endif

View File

@@ -1,6 +1,5 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "window.h"
#include "gui.h"
#include "gfx.h"
@@ -36,7 +35,7 @@ typedef struct GraphDrawer {
#define INVALID_VALUE 0x80000000
static void DrawGraph(GraphDrawer *gw)
void DrawGraph(GraphDrawer *gw)
{
int i,j,k;
@@ -130,8 +129,8 @@ static void DrawGraph(GraphDrawer *gw)
y = gw->top - 3;
i = 9;
do {
SetDParam(0, gw->format_str_y_axis);
SetDParam64(1, (int64)tmp);
SET_DPARAM16(0, gw->format_str_y_axis);
SET_DPARAM64(1, (int64)tmp);
tmp -= (value >> 3);
DrawStringRightAligned(x, y, STR_0170, gw->color_3);
y += gw->height >> 3;
@@ -145,9 +144,9 @@ static void DrawGraph(GraphDrawer *gw)
k = gw->year + 1920;
i = gw->num_on_x_axis;assert(i>0);
do {
SetDParam(2, k);
SetDParam(0, j + STR_0162_JAN);
SetDParam(1, j + STR_0162_JAN + 2);
SET_DPARAM16(2, k);
SET_DPARAM16(0, j + STR_0162_JAN);
SET_DPARAM16(1, j + STR_0162_JAN + 2);
DrawString(x, y, j == 0 ? STR_016F : STR_016E, gw->color_3);
j += 3;
@@ -163,7 +162,7 @@ static void DrawGraph(GraphDrawer *gw)
j = gw->unk61A;
i = gw->num_on_x_axis;assert(i>0);
do {
SetDParam(0, j);
SET_DPARAM16(0, j);
DrawString(x, y, STR_01CB, gw->color_3);
j += gw->unk61C;
x += 22;
@@ -228,9 +227,9 @@ static void GraphLegendWndProc(Window *w, WindowEvent *e)
DrawPlayerIcon(p->index, 4, 18+p->index*12);
SetDParam(0, p->name_1);
SetDParam(1, p->name_2);
SetDParam(2, GetPlayerNameString(p->index, 3));
SET_DPARAM16(0, p->name_1);
SET_DPARAM32(1, p->name_2);
SET_DPARAM16(2, GetPlayerNameString(p->index, 3));
DrawString(21,17+p->index*12,STR_7021,HASBIT(_legend_showbits, p->index) ? 0x10 : 0xC);
}
break;
@@ -575,7 +574,7 @@ static void PerformanceRatingDetailWndProc(Window *w, WindowEvent *e)
}
if (i == owner) x = 1; else x = 0;
DrawPlayerIcon(i, i * 37 + 13 + x, 16 + x);
DrawPlayerIcon(i, i*33+11+x, 16+x);
}
// The colors used to show how the progress is going
@@ -598,7 +597,7 @@ static void PerformanceRatingDetailWndProc(Window *w, WindowEvent *e)
DrawString(7, y, STR_PERFORMANCE_DETAIL_VEHICLES + i, 0);
// Draw the score
SetDParam(0, score);
SET_DPARAM32(0, score);
DrawStringRightAligned(107, y, SET_PERFORMANCE_DETAIL_INT, 0);
// Calculate the %-bar
@@ -625,7 +624,7 @@ static void PerformanceRatingDetailWndProc(Window *w, WindowEvent *e)
x = 0;
// Draw it
SetDParam(0, x);
SET_DPARAM32(0, x);
DrawStringCentered(137, y, STR_PERFORMANCE_DETAIL_PERCENT, 0);
// SCORE_LOAN is inversed
@@ -634,8 +633,8 @@ static void PerformanceRatingDetailWndProc(Window *w, WindowEvent *e)
// Draw the amount we have against what is needed
// For some of them it is in currency format
SetDParam(0, val);
SetDParam(1, needed);
SET_DPARAM32(0, val);
SET_DPARAM32(1, needed);
switch (i) {
case SCORE_MIN_PROFIT:
case SCORE_MIN_INCOME:
@@ -712,33 +711,33 @@ static void PerformanceRatingDetailWndProc(Window *w, WindowEvent *e)
static const Widget _performance_rating_detail_widgets[] = {
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 298, 0, 13, STR_PERFORMANCE_DETAIL, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_IMGBTN, 14, 0, 298, 14, 27, 0x0, STR_NULL},
{ WWT_CAPTION, 14, 11, 266, 0, 13, STR_PERFORMANCE_DETAIL, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_IMGBTN, 14, 0, 266, 14, 27, 0x0, STR_NULL},
{ WWT_IMGBTN, 14, 0, 298, 28, 47, 0x0,STR_PERFORMANCE_DETAIL_VEHICLES_TIP},
{ WWT_IMGBTN, 14, 0, 298, 48, 67, 0x0,STR_PERFORMANCE_DETAIL_STATIONS_TIP},
{ WWT_IMGBTN, 14, 0, 298, 68, 87, 0x0,STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP},
{ WWT_IMGBTN, 14, 0, 298, 88, 107, 0x0,STR_PERFORMANCE_DETAIL_MIN_INCOME_TIP},
{ WWT_IMGBTN, 14, 0, 298, 108, 127, 0x0,STR_PERFORMANCE_DETAIL_MAX_INCOME_TIP},
{ WWT_IMGBTN, 14, 0, 298, 128, 147, 0x0,STR_PERFORMANCE_DETAIL_DELIVERED_TIP},
{ WWT_IMGBTN, 14, 0, 298, 148, 167, 0x0,STR_PERFORMANCE_DETAIL_CARGO_TIP},
{ WWT_IMGBTN, 14, 0, 298, 168, 187, 0x0,STR_PERFORMANCE_DETAIL_MONEY_TIP},
{ WWT_IMGBTN, 14, 0, 298, 188, 207, 0x0,STR_PERFORMANCE_DETAIL_LOAN_TIP},
{ WWT_IMGBTN, 14, 0, 298, 208, 227, 0x0,STR_PERFORMANCE_DETAIL_TOTAL_TIP},
{ WWT_IMGBTN, 14, 0, 266, 28, 47, 0x0,STR_PERFORMANCE_DETAIL_VEHICLES_TIP},
{ WWT_IMGBTN, 14, 0, 266, 48, 67, 0x0,STR_PERFORMANCE_DETAIL_STATIONS_TIP},
{ WWT_IMGBTN, 14, 0, 266, 68, 87, 0x0,STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP},
{ WWT_IMGBTN, 14, 0, 266, 88, 107, 0x0,STR_PERFORMANCE_DETAIL_MIN_INCOME_TIP},
{ WWT_IMGBTN, 14, 0, 266, 108, 127, 0x0,STR_PERFORMANCE_DETAIL_MAX_INCOME_TIP},
{ WWT_IMGBTN, 14, 0, 266, 128, 147, 0x0,STR_PERFORMANCE_DETAIL_DELIVERED_TIP},
{ WWT_IMGBTN, 14, 0, 266, 148, 167, 0x0,STR_PERFORMANCE_DETAIL_CARGO_TIP},
{ WWT_IMGBTN, 14, 0, 266, 168, 187, 0x0,STR_PERFORMANCE_DETAIL_MONEY_TIP},
{ WWT_IMGBTN, 14, 0, 266, 188, 207, 0x0,STR_PERFORMANCE_DETAIL_LOAN_TIP},
{ WWT_IMGBTN, 14, 0, 266, 208, 227, 0x0,STR_PERFORMANCE_DETAIL_TOTAL_TIP},
{ WWT_IMGBTN, 14, 2, 38, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 39, 75, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 76, 112, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 113, 149, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 150, 186, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 187, 223, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 224, 260, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 261, 297, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 2, 34, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 35, 67, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 68, 100, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 101, 133, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 134, 166, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 167, 199, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 200, 232, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 233, 265, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WIDGETS_END},
};
static const WindowDesc _performance_rating_detail_desc = {
-1, -1, 299, 228,
-1, -1, 267, 228,
WC_PERFORMANCE_DETAIL,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
_performance_rating_detail_widgets,
@@ -924,7 +923,7 @@ static void CargoPaymentRatesWndProc(Window *w, WindowEvent *e)
for(i=0; i!=NUM_CARGO; i++) {
GfxFillRect(x, y, x+8, y+5, 0);
GfxFillRect(x+1, y+1, x+7, y+4, _cargo_legend_colors[i]);
SetDParam(0, _cargoc.names_s[i]);
SET_DPARAM16(0, _cargoc.names_s[i]);
DrawString(x+14, y, STR_7065, 0);
y += 8;
}
@@ -1059,19 +1058,19 @@ static void CompanyLeagueWndProc(Window *w, WindowEvent *e)
i = 0;
do {
SetDParam(0, i + 1 + STR_01AB);
SET_DPARAM16(0, i + 1 + STR_01AB);
p = plist[i];
SetDParam(1, p->name_1);
SetDParam(2, p->name_2);
SET_DPARAM16(1, p->name_1);
SET_DPARAM32(2, p->name_2);
SetDParam(3, GetPlayerNameString(p->index, 4));
SET_DPARAM16(3, GetPlayerNameString(p->index, 4));
/* WARNING ugly hack!
GetPlayerNameString sets up (Player #) if the player is human in an extra DPARAM16
It seems that if player is non-human, nothing is set up, so param is 0. GetString doesn't like
that because there is another param after it.
So we'll just shift the rating one back if player is AI and all is fine
*/
SetDParam((IS_HUMAN_PLAYER(p->index) ? 5 : 4), GetPerformanceTitleFromValue(p->old_economy[1].performance_history));
SET_DPARAM16((IS_HUMAN_PLAYER(p->index) ? 5 : 4), GetPerformanceTitleFromValue(p->old_economy[1].performance_history));
DrawString(2, 15 + i * 10, i == 0 ? STR_7054 : STR_7055, 0);
DrawPlayerIcon(p->index, 27, 16 + i * 10);

1072
grfspecial.c Normal file

File diff suppressed because it is too large Load Diff

20
gui.h
View File

@@ -12,8 +12,6 @@ void PlaceProc_Sign(uint tile);
void ShowGameOptions();
void ShowGameDifficulty();
void ShowPatchesSelection();
void ShowNewgrf();
void ShowCustCurrency();
/* graph_gui.c */
void ShowOperatingProfitGraph();
@@ -35,7 +33,7 @@ void ShowBuildRailToolbar(int index, int button);
void PlaceProc_BuyLand(uint tile);
/* train_gui.c */
void ShowPlayerTrains(int player, int station);
void ShowPlayerTrains(int player);
void ShowTrainViewWindow(Vehicle *v);
void ShowTrainDetailsWindow(Vehicle *v);
void ShowOrdersWindow(Vehicle *v);
@@ -45,17 +43,17 @@ void ShowRoadVehViewWindow(Vehicle *v);
/* road_gui.c */
void ShowBuildRoadToolbar();
void ShowBuildRoadScenToolbar();
void ShowPlayerRoadVehicles(int player, int station);
void ShowPlayerRoadVehicles(int player);
/* dock_gui.c */
void ShowBuildDocksToolbar();
void ShowPlayerShips(int player, int station);
void ShowPlayerShips(int player);
void ShowShipViewWindow(Vehicle *v);
/* aircraft_gui.c */
void ShowBuildAirToolbar();
void ShowPlayerAircraft(int player, int station);
void ShowPlayerAircraft(int player);
/* terraform_gui.c */
void PlaceProc_DemolishArea(uint tile);
@@ -79,7 +77,7 @@ void ShowPlayerCompany(int player);
void ShowEstimatedCostOrIncome(int32 cost, int x, int y);
void ShowErrorMessage(StringID msg_1, StringID msg_2, int x, int y);
void DrawStationCoverageAreaText(int sx, int sy, uint mask,int rad);
void DrawStationCoverageAreaText(int sx, int sy, uint mask);
void CheckRedrawStationCoverage(Window *w);
void ShowSmallMap();
@@ -94,16 +92,10 @@ void AskForNewGameToStart();
void DrawEditBox(Window *w, int wid);
void HandleEditBox(Window *w, int wid);
void BuildFileList();
void SetFiosType(const byte fiostype);
/* FIOS_TYPE_FILE, FIOS_TYPE_OLDFILE etc. different colours */
static const byte _fios_colors[] = {13, 9, 9, 6, 5, 6, 5};
/* network gui */
void ShowNetworkGameWindow();
void ShowChatWindow(StringID str, StringID caption, int maxlen, int maxwidth, byte window_class, uint16 window_number);
/* bridge_gui.c */
void ShowBuildBridgeWindow(uint start, uint end, byte type);

8
hal.h
View File

@@ -71,8 +71,6 @@ extern const HalMusicDriver _extmidi_music_driver;
extern const HalMusicDriver _bemidi_music_driver;
#endif
extern const HalVideoDriver _dedicated_video_driver;
enum DriverType {
VIDEO_DRIVER = 0,
SOUND_DRIVER = 1,
@@ -121,12 +119,6 @@ enum {
FIOS_TYPE_OLD_SCENARIO = 6,
};
// Variables to display file lists
FiosItem *_fios_list;
int _fios_num;
int _saveload_mode;
// get the name of an oldstyle savegame
void GetOldSaveGameName(char *title, const char *file);
// get the name of an oldstyle scenario

View File

@@ -1,7 +1,5 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "map.h"
#include "viewport.h"
#include "command.h"
#include "industry.h"
@@ -10,7 +8,6 @@
#include "news.h"
#include "saveload.h"
#include "economy.h"
#include "sound.h"
byte _industry_sound_ctr;
TileIndex _industry_sound_tile;
@@ -230,7 +227,7 @@ static void IndustryDrawTileProc3(TileInfo *ti)
AddChildSpriteScreen(0x128B, 5,
_industry_anim_offs_2[_map3_lo[ti->tile]]);
}
AddChildSpriteScreen(4746, 3, 67);
AddChildSpriteScreen(0x30B928A, 3, 67);
}
static void IndustryDrawTileProc4(TileInfo *ti)
@@ -309,7 +306,7 @@ static void DrawTile_Industry(TileInfo *ti)
if (image&0x8000 && (image & 0xFFFF0000) == 0)
image |= ormod;
if (_display_opt & DO_TRANS_BUILDINGS)
if (!(_display_opt & DO_TRANS_BUILDINGS))
image = (image & 0x3FFF) | 0x3224000;
AddSortableSpriteToDraw(image,
@@ -320,7 +317,7 @@ static void DrawTile_Industry(TileInfo *ti)
dits->dz,
z);
if (_display_opt & DO_TRANS_BUILDINGS)
if (!(_display_opt & DO_TRANS_BUILDINGS))
return;
}
@@ -341,19 +338,28 @@ static uint GetSlopeTileh_Industry(TileInfo *ti) {
return 0;
}
static void GetAcceptedCargo_Industry(uint tile, AcceptedCargo ac)
static void GetAcceptedCargo_Industry(uint tile, AcceptedCargo *ac)
{
int m5 = _map5[tile];
int a;
a = _industry_map5_accepts_1[m5];
if (a >= 0) ac[a] = (a == 0) ? 1 : 8;
if (a >= 0) {
ac->type_1 = a;
ac->amount_1 = (a == 0) ? 1 : 8;
}
a = _industry_map5_accepts_2[m5];
if (a >= 0) ac[a] = 8;
if (a >= 0) {
ac->type_2 = a;
ac->amount_2 = 8;
}
a = _industry_map5_accepts_3[m5];
if (a >= 0) ac[a] = 8;
if (a >= 0) {
ac->type_3 = a;
ac->amount_3 = 8;
}
}
static void GetTileDesc_Industry(uint tile, TileDesc *td)
@@ -363,7 +369,7 @@ static void GetTileDesc_Industry(uint tile, TileDesc *td)
td->owner = i->owner;
td->str = STR_4802_COAL_MINE + i->type;
if ((_map_owner[tile] & 0x80) == 0) {
SetDParamX(td->dparam, 0, td->str);
SET_DPARAMX16(td->dparam, 0, td->str);
td->str = STR_2058_UNDER_CONSTRUCTION;
}
}
@@ -380,7 +386,7 @@ static int32 ClearTile_Industry(uint tile, byte flags)
if ((_current_player != OWNER_WATER && _game_mode != GM_EDITOR &&
!_cheats.magic_bulldozer.value) ||
(_current_player == OWNER_WATER && i->type == IT_OIL_RIG) ) {
SetDParam(0, STR_4802_COAL_MINE + i->type);
SET_DPARAM16(0, STR_4802_COAL_MINE + i->type);
return_cmd_error(STR_4800_IN_THE_WAY);
}
@@ -421,7 +427,7 @@ static const byte _industry_min_cargo[] = {
5, 5, 5, 5, 5,
};
static void TransportIndustryGoods(uint tile)
void TransportIndustryGoods(uint tile)
{
Industry *i;
int type;
@@ -474,8 +480,8 @@ static void AnimateTile_Industry(uint tile)
m = _map3_lo[tile] + 1;
switch(m & 7) {
case 2: SndPlayTileFx(SND_2D_RIP_2, tile); break;
case 6: SndPlayTileFx(SND_29_RIP, tile); break;
case 2: SndPlayTileFx(45, tile); break;
case 6: SndPlayTileFx(41, tile); break;
}
if (m >= 96) {
@@ -493,7 +499,7 @@ static void AnimateTile_Industry(uint tile)
m = _map3_lo[tile];
if (_industry_anim_offs[m] == 0xFF) {
SndPlayTileFx(SND_30_CARTOON_SOUND, tile);
SndPlayTileFx(48, tile);
}
if (++m >= 70) {
@@ -539,11 +545,11 @@ static void AnimateTile_Industry(uint tile)
m = _map3_lo[tile] + 1;
if (m == 1) {
SndPlayTileFx(SND_2C_MACHINERY, tile);
SndPlayTileFx(44, tile);
} else if (m == 23) {
SndPlayTileFx(SND_2B_COMEDY_HIT, tile);
SndPlayTileFx(43, tile);
} else if (m == 28) {
SndPlayTileFx(SND_2A_EXTRACT_AND_POP, tile);
SndPlayTileFx(42, tile);
}
if (m >= 50 && (m=0,++_map3_hi[tile] >= 8)) {
@@ -596,7 +602,7 @@ static void AnimateTile_Industry(uint tile)
if (state < 0x20 || state >= 0x180) {
if (! (_map_owner[tile] & 0x40)) {
_map_owner[tile] |= 0x40;
SndPlayTileFx(SND_0B_MINING_MACHINERY, tile);
SndPlayTileFx(9, tile);
}
if (state & 7)
return;
@@ -685,7 +691,7 @@ static void TileLoopIndustryCase161(uint tile)
49, 59, 60, 65,
};
SndPlayTileFx(SND_2E_EXTRACT_AND_POP, tile);
SndPlayTileFx(46, tile);
dir = Random() & 3;
@@ -771,7 +777,7 @@ static void TileLoop_Industry(uint tile)
case 10:
if (CHANCE16(1,3)) {
SndPlayTileFx(SND_0C_ELECTRIC_SPARK, tile);
SndPlayTileFx(10, tile);
AddAnimatedTile(tile);
}
break;
@@ -970,9 +976,7 @@ static void MaybePlantFarmField(Industry *i)
{
uint tile;
if (CHANCE16(1,8)) {
int x = (i->width>>1) + Random() % 31 - 16;
int y = (i->height>>1) + Random() % 31 - 16;
tile = TileAddWrap(i->xy, x, y);
tile = TileAddWrap(i->xy, ((i->width>>1) + Random() % 31 - 16), ((i->height>>1) + Random() % 31 - 16));
if (tile != TILE_WRAPPED)
PlantFarmField(tile);
}
@@ -995,20 +999,17 @@ static void ChopLumberMillTrees(Industry *i)
do {
tile = TILE_MASK(tile);
if (IS_TILETYPE(tile, MP_TREES)) {
uint old_player = _current_player;
/* found a tree */
_current_player = OWNER_NONE;
_industry_sound_ctr = 1;
_industry_sound_tile = tile;
SndPlayTileFx(SND_38_CHAINSAW, tile);
SndPlayTileFx(56, tile);
DoCommandByTile(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
SetMapExtraBits(tile, 0);
i->cargo_waiting[0] = min(0xffff, i->cargo_waiting[0] + 45);
_current_player = old_player;
return;
}
tile += _chop_dir[dir];
@@ -1021,19 +1022,19 @@ static void ChopLumberMillTrees(Industry *i)
static const byte _industry_sounds[37][2] = {
{0},
{0},
{1, SND_28_SAWMILL},
{1,38},
{0},
{0},
{0},
{1, SND_03_FACTORY_WHISTLE},
{1, SND_03_FACTORY_WHISTLE},
{1,1},
{1,1},
{0},
{3, SND_24_SHEEP},
{3,34},
{0},
{0},
{0},
{0},
{1, SND_28_SAWMILL},
{1,38},
{0},
{0},
{0},
@@ -1042,7 +1043,7 @@ static const byte _industry_sounds[37][2] = {
{0},
{0},
{0},
{1, SND_03_FACTORY_WHISTLE},
{1,1},
{0},
{0},
{0},
@@ -1051,7 +1052,7 @@ static const byte _industry_sounds[37][2] = {
{0},
{0},
{0},
{1, SND_33_PLASTIC_MINE},
{1,51},
{0},
{0},
{0},
@@ -1095,10 +1096,10 @@ void OnTick_Industry()
_industry_sound_ctr++;
if (_industry_sound_ctr == 75) {
SndPlayTileFx(SND_37_BALLOON_SQUEAK, _industry_sound_tile);
SndPlayTileFx(55, _industry_sound_tile);
} else if (_industry_sound_ctr == 160) {
_industry_sound_ctr = 0;
SndPlayTileFx(SND_36_CARTOON_CRASH, _industry_sound_tile);
SndPlayTileFx(54, _industry_sound_tile);
}
}
@@ -1394,7 +1395,7 @@ static Industry *AllocateIndustry()
for(i=_industries; i != endof(_industries); i++) {
if (i->xy == 0) {
int index = i - _industries;
if (index > _total_industries) _total_industries = index;
if (index > _total_industries) _total_industries++;
return i;
}
}
@@ -1479,9 +1480,7 @@ static void DoCreateNewIndustry(Industry *i, uint tile, int type, const Industry
if (i->type == IT_FARM || i->type == IT_FARM_2) {
tile = i->xy + TILE_XY((i->width >> 1), (i->height >> 1));
for(j=0; j!=50; j++) {
int x = Random() % 31 - 16;
int y = Random() % 31 - 16;
uint new_tile = TileAddWrap(tile, x, y);
uint new_tile = TileAddWrap(tile, Random() % 31 - 16, Random() % 31 - 16);
if (new_tile != TILE_WRAPPED)
PlantFarmField(new_tile);
}
@@ -1585,8 +1584,6 @@ static void PlaceInitialIndustry(byte type, int amount)
if (_opt.diff.number_industries != 0)
{
byte old_player = _current_player;
_current_player = OWNER_NONE;
assert(num > 0);
do {
@@ -1596,8 +1593,6 @@ static void PlaceInitialIndustry(byte type, int amount)
break;
} while (--i != 0);
} while (--num);
_current_player = old_player;
}
}
@@ -1648,10 +1643,10 @@ static void ExtChangeIndustryProduction(Industry *i)
mag = abs(percent);
if (mag >= 10) {
SetDParam(3, mag);
SetDParam(0,_cargoc.names_s[i->produced_cargo[j]]);
SetDParam(1, i->town->index);
SetDParam(2, i->type + STR_4802_COAL_MINE);
SET_DPARAM16(3, mag);
SET_DPARAM16(0,_cargoc.names_s[i->produced_cargo[j]]);
SET_DPARAM16(1, i->town->index);
SET_DPARAM16(2, i->type + STR_4802_COAL_MINE);
AddNewsItem(percent>=0 ? STR_INDUSTRY_PROD_GOUP : STR_INDUSTRY_PROD_GODOWN,
NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_TILE, NT_ECONOMY, 0),
i->xy + TILE_XY(1,1), 0);
@@ -1661,8 +1656,8 @@ static void ExtChangeIndustryProduction(Industry *i)
if (closeit) {
i->prod_level = 0;
SetDParam(1, i->type + STR_4802_COAL_MINE);
SetDParam(0, i->town->index);
SET_DPARAM16(1, i->type + STR_4802_COAL_MINE);
SET_DPARAM16(0, i->town->index);
AddNewsItem(_industry_close_strings[i->type], NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_TILE, NT_ECONOMY, 0), i->xy + TILE_XY(1,1), 0);
}
}
@@ -1733,6 +1728,7 @@ static void MaybeNewIndustry(uint32 r)
return;
j = 2000;
_current_player = OWNER_NONE;
for(;;) {
i = CreateNewIndustry(TILE_MASK(Random()), type);
if (i != NULL)
@@ -1741,8 +1737,8 @@ static void MaybeNewIndustry(uint32 r)
return;
}
SetDParam(0, type + STR_4802_COAL_MINE);
SetDParam(1, i->town->index);
SET_DPARAM16(0, type + STR_4802_COAL_MINE);
SET_DPARAM16(1, i->town->index);
AddNewsItem( STR_482D_NEW_UNDER_CONSTRUCTION + (type == IT_FOREST), NEWS_FLAGS(NM_THIN,NF_VIEWPORT|NF_TILE,NT_ECONOMY,0), i->xy, 0);
}
@@ -1794,8 +1790,8 @@ close_industry:
i->prod_level = 0;
str = _industry_close_strings[type];
add_news:
SetDParam(1, type + STR_4802_COAL_MINE);
SetDParam(0, i->town->index);
SET_DPARAM16(1, type + STR_4802_COAL_MINE);
SET_DPARAM16(0, i->town->index);
AddNewsItem(str, NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_TILE, NT_ECONOMY, 0), i->xy + TILE_XY(1,1), 0);
}
}
@@ -1804,8 +1800,6 @@ add_news:
void IndustryMonthlyLoop()
{
Industry *i;
byte old_player = _current_player;
_current_player = OWNER_NONE;
for(i=_industries; i != endof(_industries); i++) {
if (i->xy != 0)
@@ -1821,9 +1815,6 @@ void IndustryMonthlyLoop()
} else if (!_patches.smooth_economy) {
MaybeCloseIndustry(i);
}
_current_player = old_player;
// production-change
_industry_sort_dirty = true;
InvalidateWindow(WC_INDUSTRY_DIRECTORY, 0);
@@ -1903,7 +1894,8 @@ static void Load_INDY()
_total_industries = 0;
while ((index = SlIterateArray()) != -1) {
SlObject(DEREF_INDUSTRY(index), _industry_desc);
if (index > _total_industries) _total_industries = index;
if (index + 1 > _total_industries)
_total_industries = index + 1;
}
}

View File

@@ -1,7 +1,5 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "map.h"
//#include "gui.h"
#include "window.h"
#include "gfx.h"
@@ -27,7 +25,7 @@ static void BuildIndustryWndProc(Window *w, WindowEvent *e)
if (_thd.place_mode == 1 && _thd.window_class == WC_BUILD_INDUSTRY) {
int ind_type = _build_industry_types[_opt.landscape][WP(w,def_d).data_1];
SetDParam(0, (_price.build_industry >> 5) * _industry_type_costs[ind_type]);
SET_DPARAM32(0, (_price.build_industry >> 5) * _industry_type_costs[ind_type]);
DrawStringCentered(85, w->height - 21, STR_482F_COST, 0);
}
break;
@@ -276,18 +274,18 @@ static void IndustryViewWndProc(Window *w, WindowEvent *e)
// Destroy Industry button costing money removed per request of dominik
//w->disabled_state = (_patches.extra_dynamite && !_networking && _game_mode != GM_EDITOR) ? 0 : (1 << 6);
i = DEREF_INDUSTRY(w->window_number);
SetDParam(0, i->town->index);
SetDParam(1, i->type + STR_4802_COAL_MINE);
SET_DPARAM16(0, i->town->index);
SET_DPARAM16(1, i->type + STR_4802_COAL_MINE);
DrawWindowWidgets(w);
if (i->accepts_cargo[0] != 0xFF) {
SetDParam(0, _cargoc.names_s[i->accepts_cargo[0]]);
SET_DPARAM16(0, _cargoc.names_s[i->accepts_cargo[0]]);
str = STR_4827_REQUIRES;
if (i->accepts_cargo[1] != 0xFF) {
SetDParam(1, _cargoc.names_s[i->accepts_cargo[1]]);
SET_DPARAM16(1, _cargoc.names_s[i->accepts_cargo[1]]);
str++;
if (i->accepts_cargo[2] != 0xFF) {
SetDParam(2, _cargoc.names_s[i->accepts_cargo[2]]);
SET_DPARAM16(2, _cargoc.names_s[i->accepts_cargo[2]]);
str++;
}
}
@@ -297,15 +295,15 @@ static void IndustryViewWndProc(Window *w, WindowEvent *e)
if (i->produced_cargo[0] != 0xFF) {
DrawString(2, 117, STR_482A_PRODUCTION_LAST_MONTH, 0);
SetDParam(1, i->total_production[0]);
SetDParam(0, _cargoc.names_long_s[i->produced_cargo[0]] + ((i->total_production[0]!=1)<<5));
SetDParam(2, i->pct_transported[0] * 100 >> 8);
SET_DPARAM16(1, i->total_production[0]);
SET_DPARAM16(0, _cargoc.names_long_s[i->produced_cargo[0]] + ((i->total_production[0]!=1)<<5));
SET_DPARAM16(2, i->pct_transported[0] * 100 >> 8);
DrawString(4, 127, STR_482B_TRANSPORTED, 0);
if (i->produced_cargo[1] != 0xFF) {
SetDParam(1, i->total_production[1]);
SetDParam(0, _cargoc.names_long_s[i->produced_cargo[1]] + ((i->total_production[1]!=1)<<5));
SetDParam(2, i->pct_transported[1] * 100 >> 8);
SET_DPARAM16(1, i->total_production[1]);
SET_DPARAM16(0, _cargoc.names_long_s[i->produced_cargo[1]] + ((i->total_production[1]!=1)<<5));
SET_DPARAM16(2, i->pct_transported[1] * 100 >> 8);
DrawString(4, 137, STR_482B_TRANSPORTED, 0);
}
}
@@ -315,11 +313,11 @@ static void IndustryViewWndProc(Window *w, WindowEvent *e)
case WE_CLICK:
switch(e->click.widget) {
case 6:
case 5:
i = DEREF_INDUSTRY(w->window_number);
ScrollMainWindowToTile(i->xy + TILE_XY(1,1));
break;
case 7:
case 6:
// Destroy Industry button costing money removed per request of dominik
//i = DEREF_INDUSTRY(w->window_number);
/* passing only i->xy is not safe if industry has a weird shape like:
@@ -337,8 +335,7 @@ static void IndustryViewWndProc(Window *w, WindowEvent *e)
static const Widget _industry_view_widgets[] = {
{ WWT_TEXTBTN, 9, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 9, 11, 247, 0, 13, STR_4801, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, 9, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_CAPTION, 9, 11, 259, 0, 13, STR_4801, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_IMGBTN, 9, 0, 259, 14, 105, 0x0, STR_NULL},
{ WWT_6, 9, 2, 257, 16, 103, 0x0, STR_NULL},
{ WWT_IMGBTN, 9, 0, 259, 106, 147, 0x0, STR_NULL},
@@ -352,7 +349,7 @@ static const Widget _industry_view_widgets[] = {
static const WindowDesc _industry_view_desc = {
-1, -1, 260, 160,
WC_INDUSTRY_VIEW,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS,
_industry_view_widgets,
IndustryViewWndProc
};
@@ -372,12 +369,11 @@ void ShowIndustryViewWindow(int industry)
static const Widget _industry_directory_widgets[] = {
{ WWT_TEXTBTN, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 13, 11, 495, 0, 13, STR_INDUSTRYDIR_CAPTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, 13, 496, 507, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_PUSHTXTBTN, 13, 0, 100, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, 13, 101, 200, 14, 25, STR_SORT_BY_TYPE, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, 13, 201, 300, 14, 25, STR_SORT_BY_PRODUCTION, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, 13, 301, 400, 14, 25, STR_SORT_BY_TRANSPORTED, STR_SORT_ORDER_TIP},
{ WWT_CAPTION, 13, 11, 507, 0, 13, STR_INDUSTRYDIR_CAPTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PUSHTXTBTN, 13, 0, 100, 14, 25, STR_SORT_BY_NAME, STR_SORT_TIP},
{ WWT_PUSHTXTBTN, 13, 101, 200, 14, 25, STR_SORT_BY_TYPE, STR_SORT_TIP},
{ WWT_PUSHTXTBTN, 13, 201, 300, 14, 25, STR_SORT_BY_PRODUCTION, STR_SORT_TIP},
{ WWT_PUSHTXTBTN, 13, 301, 400, 14, 25, STR_SORT_BY_TRANSPORTED, STR_SORT_TIP},
{ WWT_PANEL, 13, 401, 496, 14, 25, 0x0, STR_NULL},
{ WWT_IMGBTN, 13, 0, 496, 26, 189, 0x0, STR_200A_TOWN_NAMES_CLICK_ON_NAME},
{ WWT_SCROLLBAR, 13, 497, 507, 14, 189, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
@@ -438,12 +434,12 @@ static int CDECL GeneralIndustrySorter(const void *a, const void *b)
// default to string sorting if they are otherwise equal
if (r == 0) {
SetDParam(0, i->town->townnameparts);
SET_DPARAM32(0, i->town->townnameparts);
GetString(buf1, i->town->townnametype);
if ( (val=*(const byte*)b) != _last_industry_idx) {
_last_industry_idx = val;
SetDParam(0, j->town->townnameparts);
SET_DPARAM32(0, j->town->townnameparts);
GetString(_bufcache, j->town->townnametype);
}
r = strcmp(buf1, _bufcache);
@@ -495,20 +491,20 @@ static void IndustryDirectoryWndProc(Window *w, WindowEvent *e)
while (p < _num_industry_sort) {
i = DEREF_INDUSTRY(_industry_sort[p]);
SetDParam(0, i->town->index);
SetDParam(1, i->type + STR_4802_COAL_MINE);
SET_DPARAM16(0, i->town->index);
SET_DPARAM16(1, i->type + STR_4802_COAL_MINE);
if (i->produced_cargo[0] != 0xFF) {
SetDParam(3, i->total_production[0]);
SetDParam(2, _cargoc.names_long_s[i->produced_cargo[0]] + ((i->total_production[0]!=1)<<5));
SET_DPARAM16(3, i->total_production[0]);
SET_DPARAM16(2, _cargoc.names_long_s[i->produced_cargo[0]] + ((i->total_production[0]!=1)<<5));
if (i->produced_cargo[1] != 0xFF) {
SetDParam(5, i->total_production[1]);
SetDParam(4, _cargoc.names_long_s[i->produced_cargo[1]] + ((i->total_production[1]!=1)<<5));
SetDParam(6, i->pct_transported[0] * 100 >> 8);
SetDParam(7, i->pct_transported[1] * 100 >> 8);
SET_DPARAM16(5, i->total_production[1]);
SET_DPARAM16(4, _cargoc.names_long_s[i->produced_cargo[1]] + ((i->total_production[1]!=1)<<5));
SET_DPARAM16(6, i->pct_transported[0] * 100 >> 8);
SET_DPARAM16(7, i->pct_transported[1] * 100 >> 8);
DrawString(4, 28+n*10, STR_INDUSTRYDIR_ITEM_TWO, 0);
} else {
SetDParam(4, i->pct_transported[0] * 100 >> 8);
SET_DPARAM16(4, i->pct_transported[0] * 100 >> 8);
DrawString(4, 28+n*10, STR_INDUSTRYDIR_ITEM, 0);
}
} else {
@@ -522,31 +518,31 @@ static void IndustryDirectoryWndProc(Window *w, WindowEvent *e)
case WE_CLICK:
switch(e->click.widget) {
case 3: {
case 2: {
_industry_sort_order = _industry_sort_order==0 ? 1 : 0;
_industry_sort_dirty = true;
SetWindowDirty(w);
} break;
case 4: {
case 3: {
_industry_sort_order = _industry_sort_order==2 ? 3 : 2;
_industry_sort_dirty = true;
SetWindowDirty(w);
} break;
case 5: {
case 4: {
_industry_sort_order = _industry_sort_order==4 ? 5 : 4;
_industry_sort_dirty = true;
SetWindowDirty(w);
} break;
case 6: {
case 5: {
_industry_sort_order = _industry_sort_order==6 ? 7 : 6;
_industry_sort_dirty = true;
SetWindowDirty(w);
} break;
case 8: {
case 7: {
int y = (e->click.pt.y - 28) / 10;
byte p;
Industry *c;
@@ -573,7 +569,7 @@ static void IndustryDirectoryWndProc(Window *w, WindowEvent *e)
static const WindowDesc _industry_directory_desc = {
-1, -1, 508, 190,
WC_INDUSTRY_DIRECTORY,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS,
_industry_directory_widgets,
IndustryDirectoryWndProc
};

View File

@@ -1,6 +1,6 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "window.h"
#include "gui.h"
#include "viewport.h"
@@ -8,9 +8,9 @@
#include "player.h"
#include "command.h"
#include "console.h"
#include "network.h"
extern void SwitchMode(int new_mode);
extern void MakeNewGame();
extern void StartScenario();
/*
static void ShowSelectTutorialWindow()
@@ -22,16 +22,16 @@ static const Widget _select_game_widgets[] = {
{ WWT_CAPTION, 13, 0, 335, 0, 13, STR_0307_OPENTTD, STR_NULL},
{ WWT_IMGBTN, 13, 0, 335, 14, 196, 0x0, STR_NULL},
{ WWT_PUSHTXTBTN, 12, 10, 167, 22, 33, STR_0140_NEW_GAME, STR_02FB_START_A_NEW_GAME},
{ WWT_PUSHTXTBTN, 12, 168, 325, 22, 33, STR_0141_LOAD_GAME, STR_02FC_LOAD_A_SAVED_GAME},
{ WWT_PUSHTXTBTN, 12, 168, 325, 22, 33, STR_0141_LOAD_GAME, STR_02FC_LOAD_A_SAVED_GAME_FROM},
//{ WWT_PUSHTXTBTN, 12, 10, 167, 177, 188, STR_0142_TUTORIAL_DEMONSTRATION, STR_02FD_VIEW_DEMONSTRATIONS_TUTORIALS},
{ WWT_PUSHTXTBTN, 12, 10, 167, 177, 188, STR_CONFIG_PATCHES, STR_CONFIG_PATCHES_TIP},
{ WWT_PUSHTXTBTN, 12, 10, 167, 40, 51, STR_0220_CREATE_SCENARIO,STR_02FE_CREATE_A_CUSTOMIZED_GAME},
{ WWT_PUSHTXTBTN, 12, 10, 167, 136, 147, STR_SINGLE_PLAYER, STR_02FF_SELECT_SINGLE_PLAYER_GAME},
{ WWT_PUSHTXTBTN, 12, 168, 325, 136, 147, STR_MULTIPLAYER, STR_0300_SELECT_MULTIPLAYER_GAME},
{ WWT_PUSHTXTBTN, 12, 168, 325, 136, 147, STR_MULTIPLAYER, STR_0300_SELECT_TWO_PLAYER_GAME},
{ WWT_PUSHTXTBTN, 12, 10, 167, 159, 170, STR_0148_GAME_OPTIONS, STR_0301_DISPLAY_GAME_OPTIONS},
{ WWT_PUSHTXTBTN, 12, 168, 325, 159, 170, STR_01FE_DIFFICULTY, STR_0302_DISPLAY_DIFFICULTY_OPTIONS},
{ WWT_PUSHTXTBTN, 12, 168, 325, 40, 51, STR_029A_PLAY_SCENARIO, STR_0303_START_A_NEW_GAME_USING},
{ WWT_PUSHTXTBTN, 12, 168, 325, 177, 188, STR_0304_QUIT, STR_0305_QUIT_OPENTTD},
{ WWT_PUSHTXTBTN, 12, 168, 325, 177, 188, STR_0304_QUIT, STR_0305_LEAVE_OPENTTD},
{ WWT_PANEL_2, 12, 10, 85, 69, 122, 0x1312, STR_030E_SELECT_TEMPERATE_LANDSCAPE},
{ WWT_PANEL_2, 12, 90, 165, 69, 122, 0x1314, STR_030F_SELECT_SUB_ARCTIC_LANDSCAPE},
{ WWT_PANEL_2, 12, 170, 245, 69, 122, 0x1316, STR_0310_SELECT_SUB_TROPICAL_LANDSCAPE},
@@ -39,14 +39,12 @@ static const Widget _select_game_widgets[] = {
{ WIDGETS_END},
};
extern void HandleOnEditText(WindowEvent *e);
extern void HandleOnEditTextCancel();
static void SelectGameWndProc(Window *w, WindowEvent *e) {
switch(e->event) {
case WE_PAINT:
w->click_state = (w->click_state & ~(0xC0) & ~(0xF << 12)) | (1 << (_new_opt.landscape+12)) | (1<<6);
SetDParam(0, STR_6801_EASY + _new_opt.diff_level);
w->click_state = (w->click_state & ~(0xC0) & ~(0xF << 12)) | (1 << (_new_opt.landscape+12)) | (!_networking?(1<<6):(1<<7));
w->disabled_state = _networking ? 0x30 : 0;
SET_DPARAM16(0, STR_6801_EASY + _new_opt.diff_level);
DrawWindowWidgets(w);
break;
@@ -56,15 +54,17 @@ static void SelectGameWndProc(Window *w, WindowEvent *e) {
case 3: ShowSaveLoadDialog(SLD_LOAD_GAME); break;
case 4: ShowPatchesSelection(); break;
case 5: DoCommandP(0, InteractiveRandom(), 0, NULL, CMD_CREATE_SCENARIO); break;
case 6:
if (_networking)
DoCommandP(0, 0, 0, NULL, CMD_SET_SINGLE_PLAYER);
break;
case 7:
#ifdef ENABLE_NETWORK
if (!_network_available) {
ShowErrorMessage(-1, STR_NETWORK_ERR_NOTAVAILABLE, 0, 0);
} else
ShowErrorMessage(-1,STR_NETWORK_ERR_NOTAVAILABLE, 0, 0);
} else {
ShowNetworkGameWindow();
#else
ShowErrorMessage(-1 ,STR_NETWORK_ERR_NOTAVAILABLE, 0, 0);
#endif /* ENABLE_NETWORK */
ShowErrorMessage(-1, TEMP_STRING_NO_NETWORK, 0, 0);
}
break;
case 8: ShowGameOptions(); break;
case 9: ShowGameDifficulty(); break;
@@ -79,11 +79,7 @@ static void SelectGameWndProc(Window *w, WindowEvent *e) {
case WKC_BACKQUOTE: IConsoleSwitch(); break;
}
break;
case WE_ON_EDIT_TEXT: HandleOnEditText(e); break;
case WE_ON_EDIT_TEXT_CANCEL: HandleOnEditTextCancel(); break;
}
}
static const WindowDesc _select_game_desc = {
@@ -132,7 +128,9 @@ int32 CmdGenRandomNewGame(int x, int y, uint32 flags, uint32 p1, uint32 p2)
_random_seeds[0][0] = p1;
_random_seeds[0][1] = p2;
SwitchMode(SM_NEWGAME);
if (_networking) { NetworkStartSync(true); }
MakeNewGame();
return 0;
}
@@ -171,7 +169,9 @@ int32 CmdStartScenario(int x, int y, uint32 flags, uint32 p1, uint32 p2)
_random_seeds[0][0] = p1;
_random_seeds[0][1] = p2;
SwitchMode(SM_START_SCENARIO);
if (_networking) { NetworkStartSync(true); }
StartScenario();
return 0;
}
@@ -190,17 +190,15 @@ static void AskAbandonGameWndProc(Window *w, WindowEvent *e) {
case WE_PAINT:
DrawWindowWidgets(w);
#if defined(_WIN32)
SetDParam(0, STR_0133_WINDOWS);
SET_DPARAM16(0, STR_0133_WINDOWS);
#elif defined(__APPLE__)
SetDParam(0, STR_0135_OSX);
SET_DPARAM16(0, STR_0135_OSX);
#elif defined(__BEOS__)
SetDParam(0, STR_OSNAME_BEOS);
SET_DPARAM16(0, STR_OSNAME_BEOS);
#elif defined(__MORPHOS__)
SetDParam(0, STR_OSNAME_MORPHOS);
#elif defined(__AMIGA__)
SetDParam(0, STR_OSNAME_AMIGAOS);
SET_DPARAM16(0, STR_OSNAME_MORPHOS);
#else
SetDParam(0, STR_0134_UNIX);
SET_DPARAM16(0, STR_0134_UNIX);
#endif
DrawStringMultiCenter(0x5A, 0x26, STR_00CA_ARE_YOU_SURE_YOU_WANT_TO, 178);
return;
@@ -265,12 +263,6 @@ static void AskQuitGameWndProc(Window *w, WindowEvent *e) {
break;
}
break;
case WE_KEYPRESS: /* Return to main menu on pressing 'Enter' */
if (e->keypress.keycode == WKC_RETURN)
_switch_mode = SM_MENU;
break;
}
}

View File

@@ -1,68 +0,0 @@
README
------------------------------------------------------------------------
All bugs listed below are marked as known. Please do not submit any bugs
that are the same as these. If you do, don't act surprised, because
we WILL flame you!!
There is an experimental AI included in the game which you can enable
from the "Configure Patches" window. All bugs related to this AI should
go to: http://www.tt-forums.net/viewtopic.php?t=9576
Of course if you have more knowledge about any of these bugs, have more
specifics, we welcome you to report them. React to the given bug indicated
by the number below on http://sourceforge.net/tracker/?group_id=103924&atid=636365
If the the bug-report is closed, it has been fixed, which then can be verified
in the latest SVN version.
Bugs for 0.3.5
------------------------------------------------------------------------
URL: http://sourceforge.net/tracker/?atid=636365&group_id=103924&func=browse
-1085486 Subsidies: Only count when station is in right suburb
-1084797 building stretch leaves gap
-1084789 delivered cargo bug
-1083941 Train gui crash assertion error
-1083717 graphical glitch
-1083710 Reverse train in depot crashes OpenTTD
-1074623 bus pathfinding inadequacies
-1074610 overtaking at signals bug
-1065168 accept iron ore doesn't produce steel
-1060686 changing (load) order doesn't take effect immediately
-1053339 depot/station looping
-1050990 Buying trains sometimes accounted for incorrectly
-1040119 Flood and wagons in depot
-1034778 train breaksdown, when breaks set to none
-1033300 signal bug
-1030918 Negative city population
-1030502 Buying up a company isn't complete
-1024703 Infinite access of A: when saving and no disk in drive
-997251 Realistic acceleration: Trains don't slow down in curves
-996503 Sound volume bug
-992677 BeOS MIDI does not initialise on newer BeOS releases
-985475 Different kinds of signals in same tile? [Bug]
-980271 Realistic acceleration bug / Lev4 Chimaera becomes useless
-978372 Inconsistent stopping.
-968036 Ship blocked at the edge
Minor Bugs for 0.3.5
------------------------------------------------------------------------
URL: http://sourceforge.net/tracker/?atid=669662&group_id=103924&func=browse
-1090495 Bridges and straight lakesides
-1087407 wrong message in history
-1084620 Minor bug considering buses/trucks
-1034310 color mauve in diagrams
-1031451 Catchment area shows when buying sign.
-1031184 Smoke visible through tunnel
-1030661 It's possible to build a tunnel under oil wells
-1009171 Canals and locks at sea level cause flooding
-998902 Annoying out-of-date message
-993516 Canal + bouy -> wrong graphics.
-987891 Large UFO destruction bug
-987884 farm fences
-987883 Aircraft landing/taking off
-987880 company league table updating
-985927 many carriages in depot
-985924 aircraft taxi speed
-980276 Overflow in factory directory
-976824 transmitter base
-941694 Clipping problems stations/vehicles on slopes
-936997 Stationname too long to fit in trainwindow bug

View File

@@ -1,12 +1,19 @@
#include "stdafx.h"
#include "ttd.h"
#include "map.h"
#include <stdarg.h>
#include "gfx.h"
#include "viewport.h"
#include "command.h"
#include "vehicle.h"
byte _map_type_and_height[TILES_X * TILES_Y];
byte _map5[TILES_X * TILES_Y];
byte _map3_lo[TILES_X * TILES_Y];
byte _map3_hi[TILES_X * TILES_Y];
byte _map_owner[TILES_X * TILES_Y];
byte _map2[TILES_X * TILES_Y];
byte _map_extra_bits[TILES_X * TILES_Y/4];
extern const TileTypeProcs
_tile_type_clear_procs,
_tile_type_rail_procs,
@@ -304,7 +311,7 @@ void ChangeTileOwner(uint tile, byte old_player, byte new_player)
_tile_type_procs[GET_TILETYPE(tile)]->change_tile_owner_proc(tile, old_player, new_player);
}
void GetAcceptedCargo(uint tile, AcceptedCargo ac)
void GetAcceptedCargo(uint tile, AcceptedCargo *ac)
{
memset(ac, 0, sizeof(AcceptedCargo));
_tile_type_procs[GET_TILETYPE(tile)]->get_accepted_cargo_proc(tile, ac);
@@ -480,20 +487,19 @@ void RunTileLoop()
void InitializeLandscape()
{
uint map_size = MapSize();
int i;
memset(_map_owner, OWNER_NONE, map_size);
memset(_map2, 0, map_size);
memset(_map3_lo, 0, map_size);
memset(_map3_hi, 0, map_size);
memset(_map_extra_bits, 0, map_size / 4);
memset(_map_type_and_height, MP_WATER << 4, map_size);
memset(_map_owner, OWNER_NONE, sizeof(_map_owner));
memset(_map2, 0, sizeof(_map2));
memset(_map3_lo, 0, sizeof(_map3_lo));
memset(_map3_hi, 0, sizeof(_map3_hi));
memset(_map_extra_bits, 0, sizeof(_map_extra_bits));
memset(_map_type_and_height, MP_WATER << 4, sizeof(_map_type_and_height));
for(i=0; i!=TILES_Y-1; i++)
memset(_map_type_and_height + i*TILES_X, 0, TILES_X-1);
memset(_map5, 3, map_size);
memset(_map5, 3, sizeof(_map5));
}
void ConvertGroundTilesIntoWaterTiles()

View File

@@ -310,7 +310,6 @@ STR_0134_UNIX :Unix
STR_0135_OSX :OSX
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_0139_IMPERIAL_MILES :Imperial (miles)
STR_013A_METRIC_KILOMETERS :Metric (kilometers)
@@ -353,8 +352,7 @@ STR_015E_QUIT_GAME :Quit game
STR_015F_QUIT :Quit
STR_0160_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Are you sure you want to quit this game ?
STR_0161_QUIT_GAME :{WHITE}Quit Game
STR_SORT_ORDER_TIP :{BLACK}Select sorting order descending/ascending
STR_SORT_CRITERIA_TIP :{BLACK}Select sorting criteria
STR_SORT_TIP :{BLACK}Select sorting order
SRT_SORT_BY :{BLACK}Sort by
STR_SORT_BY_POPULATION :{BLACK}Population
@@ -392,7 +390,7 @@ STR_016E :{TINYFONT}{STRING}{} {STRING}
STR_016F :{TINYFONT}{STRING}{} {STRING}{}{NUMU16}
STR_0170 :{TINYFONT}{STRING}-
STR_0171_PAUSE_GAME :{BLACK}Pause game
STR_0172_SAVE_GAME_ABANDON_GAME :{BLACK}Save game, quit game, quit
STR_0172_SAVE_GAME_ABANDON_GAME :{BLACK}Save game, abandon game, quit
STR_0173_DISPLAY_LIST_OF_COMPANY :{BLACK}Display list of company's stations
STR_0174_DISPLAY_MAP :{BLACK}Display map
STR_0175_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Display map, town directory
@@ -419,7 +417,6 @@ STR_0189 :{BLACK}{SMALLDOWNARROW}
STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Can't change servicing interval...
STR_018B_CLOSE_WINDOW :{BLACK}Close window
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Window title - drag this to move window
STR_STICKY_BUTTON :{BLACK}Mark this window as undeletable for the 'Close All Windows' key
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolish buildings etc. on a square of land
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Lower a corner of land
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Raise a corner of land
@@ -498,8 +495,6 @@ STR_01CD_SELECT_TUTORIAL_DEMONSTRATION :{WHITE}Select Tutorial/Demonstration
STR_01CE_CARGO_ACCEPTED :{BLACK}Cargo accepted: {LTBLUE}{STRING}
STR_01CF_CARGO_ACCEPTED :{BLACK}Cargo accepted: {LTBLUE}{STRING}, {STRING}
STR_01D0_CARGO_ACCEPTED :{BLACK}Cargo accepted: {LTBLUE}{STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_4 :{BLACK}Cargo accepted: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_5 :{BLACK}Cargo accepted: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}, {STRING}
############ range for cargo acecpted ends
STR_01D1_8 :({COMMA8}/8 {STRING})
@@ -542,7 +537,7 @@ STR_01F5_SELECT_NEW_STYLE_MUSIC :{BLACK}Select 'new style music' program
STR_01F6_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Select 'Custom 1' (user-defined) program
STR_01F7_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Select 'Custom 2' (user-defined) program
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Clear current program (Custom1 or Custom2 only)
STR_01F9_SAVE_MUSIC_SETTINGS :{BLACK}Save music settings
STR_01F9_SAVE_MUSIC_SETTINGS_TO :{BLACK}Save music settings to disk
STR_01FA_CLICK_ON_MUSIC_TRACK_TO :{BLACK}Click on music track to add to current program (Custom1 or Custom2 only)
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Toggle program shuffle on/off
STR_01FC_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Show music track selection window
@@ -727,7 +722,7 @@ STR_02BC_VEHICLE_DESIGN_NAMES :{BLACK}Vehicle design names
STR_02BD :{BLACK}{STRING}
STR_02BE_DEFAULT :Default
STR_02BF_CUSTOM :Custom
STR_02C0_SAVE_CUSTOM_NAMES :{BLACK}Save custom names
STR_02C0_SAVE_CUSTOM_NAMES_TO_DISK :{BLACK}Save custom names to disk
STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION :{BLACK}Vehicle design names selection
STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Save customized vehicle design names to disk
@@ -738,20 +733,16 @@ STR_02C5_DIFFICULTY_SETTINGS :Difficulty settings
STR_02C6_DIFFICULTY_SETTINGS :Difficulty settings
STR_02C7_CONFIG_PATCHES :Configure patches
STR_02C8_CONFIG_PATCHES :Configure patches
STR_NEWGRF_SETTINGS :Newgrf settings
STR_NEWGRF_SETTINGS2 :Newgrf settings
STR_GAMEOPTMENU_0A :
STR_GAMEOPTMENU_0B :
STR_CLOSE_ALL_WINDOWS :Close ALL windows
STR_CLOSE_ALL_WINDOWS2 :Close ALL windows
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Town names displayed
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Town names displayed
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Station names displayed
STR_02CC_STATION_NAMES_DISPLAYED :{SETX 12}Station names displayed
STR_02CD_SIGNS_DISPLAYED :{CHECKMARK}{SETX 12}Signs displayed
STR_02CE_SIGNS_DISPLAYED :{SETX 12}Signs displayed
STR_WAYPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Waypoints displayed
STR_WAYPOINTS_DISPLAYED2 :{SETX 12}Waypoints displayed
STR_CHECKPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Checkpoints displayed
STR_CHECKPOINTS_DISPLAYED2 :{SETX 12}Checkpoints displayed
STR_02CF_FULL_ANIMATION :{CHECKMARK}{SETX 12}Full animation
STR_02D0_FULL_ANIMATION :{SETX 12}Full animation
STR_02D1_FULL_DETAIL :{CHECKMARK}{SETX 12}Full detail
@@ -774,13 +765,13 @@ STR_02DC_DISPLAY_SUBSIDIES :{BLACK}Display subsidies
STR_02DD_SUBSIDIES :Subsidies
STR_02DE_MAP_OF_WORLD :Map of world
STR_EXTRA_VIEW_PORT :Extra viewport
STR_02DF_TOWN_DIRECTORY :Town directory
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Viewport {COMMA16}
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Copy to viewport
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Copy the location of the global view to this viewport
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Paste from viewport
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Paste the location of this viewport to the global view
STR_02DF_TOWN_DIRECTORY :Town directory
STR_02E0_CURRENCY_UNITS :{BLACK}Currency units
STR_02E1 :{BLACK}{SKIP}{STRING}
STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}Currency units selection
@@ -804,16 +795,16 @@ STR_02F8_EVERY_3_MONTHS :Every 3 months
STR_02F9_EVERY_6_MONTHS :Every 6 months
STR_02FA_EVERY_12_MONTHS :Every 12 months
STR_02FB_START_A_NEW_GAME :{BLACK}Start a new game
STR_02FC_LOAD_A_SAVED_GAME :{BLACK}Load a saved game
STR_02FC_LOAD_A_SAVED_GAME_FROM :{BLACK}Load a saved game from disk
STR_02FD_VIEW_DEMONSTRATIONS_TUTORIALS :{BLACK}View demonstrations/tutorials
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}Create a customized game world/scenario
STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}Select single-player game
STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}Select multiplayer game of 2-8 players
STR_0300_SELECT_TWO_PLAYER_GAME :{BLACK}Select two-player game
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Display game options
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Display difficulty options
STR_0303_START_A_NEW_GAME_USING :{BLACK}Start a new game, using a customized scenario
STR_0304_QUIT :{BLACK}Quit
STR_0305_QUIT_OPENTTD :{BLACK}Quit 'OpenTTD'
STR_0305_LEAVE_OPENTTD :{BLACK}Leave 'OpenTTD', and quit
STR_0306_VIEW_DEMONSTRATION_TUTORIAL :{BLACK}View demonstration/tutorial
STR_0307_OPENTTD :{WHITE}OpenTTD {REV}
STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...can only be built in towns
@@ -861,46 +852,41 @@ STR_TOWNNAME_SWEDISH :Swedish
STR_TOWNNAME_DUTCH :Dutch
STR_TOWNNAME_FINNISH :Finnish
STR_TOWNNAME_POLISH :Polish
STR_TOWNNAME_CZECH :Czech
STR_TOWNNAME_SLOVAKISH :Slovakish
STR_TOWNNAME_HUNGARIAN :Hungarian
STR_TOWNNAME_AUSTRIAN :Austrian
STR_TOWNNAME_ROMANIAN :Romanian
STR_TOWNNAME_CZECH :Czech
############ end of townname region
STR_CURR_GBP :Pounds ({POUNDSIGN})
STR_CURR_USD :Dollars ($)
STR_CURR_EUR :Euro (<28>)
STR_CURR_POUNDS :Pounds ({POUNDSIGN})
STR_CURR_DOLLARS :Dollars ($)
STR_CURR_FF :Franc (FF)
STR_CURR_DM :Deutschmark (DM)
STR_CURR_YEN :Yen ({YENSIGN})
STR_CURR_PT :Peseta (Pt)
STR_CURR_FT :Hungarian Forint (Ft)
STR_CURR_ZL :Polish Zloty (zl)
STR_CURR_ATS :Austrian Shilling (ATS)
STR_CURR_BEF :Belgian Franc (BEF)
STR_CURR_CHF :Swiss Franc (CHF)
STR_CURR_CZK :Czech Koruna (CZK)
STR_CURR_DEM :Deutschmark (DEM)
STR_CURR_DKK :Danish Krone (DKK)
STR_CURR_ESP :Peseta (ESP)
STR_CURR_FIM :Finnish Markka (FIM)
STR_CURR_FRF :Franc (FRF)
STR_CURR_GRD :Greek Drachma (GRD)
STR_CURR_HUF :Hungarian Forint (HUF)
STR_CURR_ISK :Icelandic Krona (ISK)
STR_CURR_ITL :Italian Lira (ITL)
STR_CURR_CHF :Swiss Franc (CHF)
STR_CURR_NLG :Dutch Guilder (NLG)
STR_CURR_NOK :Norwegian Krone (NOK)
STR_CURR_PLN :Polish Zloty (PLN)
STR_CURR_ROL :Romanian Leu (Lei)
STR_CURR_RUR :Russian Rubel (rur)
STR_CURR_ITL :Italian Lira (ITL)
STR_CURR_SEK :Swedish Krona (SEK)
STR_CURR_CUSTOM :Custom...
STR_CURR_RUR :Russian Rubel (rur)
STR_CURR_CZK :Czech Koruna (CZK)
STR_CURR_ISK :Icelandic Krona (ISK)
STR_CURR_NOK :Norwegian Krone (NOK)
STR_CURR_ROL :Romanian Leu (Lei)
STR_CURR_EUR :Euro (<28>)
STR_OPTIONS_LANG :{BLACK}Language
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_LANG_TIP :{BLACK}Select the interface language to use
STR_OPTIONS_FULLSCREEN :{BLACK}Fullscreen
STR_OPTIONS_FULLSCREEN_TIP :{BLACK}Check this box to play OpenTTD fullscreen mode
STR_OPTIONS_RES :{BLACK}Screen resolution
STR_OPTIONS_RES_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_RES_TIP :{BLACK}Select the screen resolution to use
@@ -980,13 +966,11 @@ STR_CONFIG_PATCHES_OFF :Off
STR_CONFIG_PATCHES_ON :On
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Show vehicle speed in status bar: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Allow building on slopes and coasts: {ORANGE}{STRING}
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Allow more realistically sized catchment areas: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Allow removal of more town-owned roads, bridges, tunnels, etc: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Enable building very long trains: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Enable realistic acceleration for trains: {ORANGE}{STRING}
STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Join train stations built next to each other: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FULLLOADANY :{LTBLUE}Leave station when any cargo is full, if 'full load': {ORANGE}{STRING}
STR_CONFIG_PATCHES_IMPROVEDLOAD :{LTBLUE}Use improved loading algorithm: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INFLATION :{LTBLUE}Inflation: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Deliver cargo to a station only when there is a demand: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Allow building very long bridges: {ORANGE}{STRING}
@@ -1053,8 +1037,6 @@ STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Position of main toolbar: {ORANGE}{S
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Left
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :Centre
STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT :Right
STR_CONFIG_PATCHES_SNAP_RADIUS :{LTBLUE}Window snap radius: {ORANGE}{STRING} px
STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED :{LTBLUE}Window snap radius: {ORANGE}disabled
STR_CONFIG_PATCHES_GUI :{BLACK}Interface
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Construction
@@ -1087,28 +1069,24 @@ STR_CHEAT_NO_JETCRASH :{LTBLUE}Jetplanes will not crash (frequently) on sma
STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}Switch climate: {ORANGE} {STRING}
STR_CHEAT_CHANGE_DATE :{LTBLUE}Change date: {ORANGE} {DATE_SHORT}
STR_HEADING_FOR_WAYPOINT :{LTBLUE}Heading for {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Heading for {WAYPOINT}, {VELOCITY}
STR_HEADING_FOR_CHECKPOINT :{LTBLUE}Heading for {CHECKPOINT}
STR_HEADING_FOR_CHECKPOINT_VEL :{LTBLUE}Heading for {CHECKPOINT}, {VELOCITY}
STR_GO_TO_WAYPOINT :Go via {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT :Go non-stop via {WAYPOINT}
STR_GO_TO_CHECKPOINT :Go via {CHECKPOINT}
STR_WAYPOINTNAME_CITY :Waypoint {TOWN}
STR_WAYPOINTNAME_CITY_SERIAL :Waypoint {TOWN} #{COMMA16}
STR_LANDINFO_WAYPOINT :Waypoint
STR_CHECKPOINTNAME_CITY :Checkpoint {TOWN}
STR_CHECKPOINTNAME_CITY_SERIAL :Checkpoint {TOWN} #{COMMA16}
STR_LANDINFO_CHECKPOINT :Checkpoint
STR_WAYPOINT :{WHITE}Waypoint
STR_WAYPOINT_GRAPHICS_TIP :{BLACK}Select waypoint type
STR_CHECKPOINT_VIEWPORT :{WHITE}{CHECKPOINT}
STR_CHECKPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{CHECKPOINT}
STR_CHECKPOINT_RAW :{CHECKPOINT}
STR_EDIT_CHECKPOINT_NAME :{WHITE}Edit checkpoint name
STR_WAYPOINT_VIEWPORT :{WHITE}{WAYPOINT}
STR_WAYPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{WAYPOINT}
STR_WAYPOINT_RAW :{WAYPOINT}
STR_EDIT_WAYPOINT_NAME :{WHITE}Edit waypoint name
STR_CANT_CHANGE_WAYPOINT_NAME :{WHITE}Can't change waypoint name...
STR_CONVERT_RAIL_TO_WAYPOINT_TIP :{BLACK}Convert rail to waypoint
STR_CANT_BUILD_TRAIN_WAYPOINT :{WHITE}Can't build train waypoint here...
STR_CANT_REMOVE_TRAIN_WAYPOINT :{WHITE}Can't remove train waypoint here...
STR_CANT_CHANGE_CHECKPOINT_NAME :{WHITE}Can't change checkpoint name...
STR_CONVERT_RAIL_TO_CHECKPOINT_TIP :{BLACK}Convert rail to checkpoint
STR_CANT_BUILD_TRAIN_CHECKPOINT :{WHITE}Can't build train checkpoint here...
STR_CANT_REMOVE_TRAIN_CHECKPOINT :{WHITE}Can't remove train checkpoint here...
STR_BUILD_AUTORAIL_TIP :{BLACK}Build railroad track using the Autorail mode
@@ -1121,7 +1099,6 @@ STR_MANY_RANDOM_INDUSTRIES :{BLACK}Many random industries
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Cover the map with randomly placed industries
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Can't generate industries...
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}Open the landscaping toolbar to raise/lower land, plant trees, etc.
STR_LANDSCAPING_TOOLBAR :{WHITE}Landscaping
STR_LEVEL_LAND_TOOLTIP :{BLACK}Level land
@@ -1194,44 +1171,37 @@ TEMP_AI_ACTIVATED :{WHITE}Warning: this new AI is still alpha! Currently, o
############ network gui strings
TEMP_STRING_NO_NETWORK :{WHITE}Network interface is not fully working yet!{}Some options work, but others like lobby, etc. don't. Just so you know.
STR_NETWORK_MULTIPLAYER :{WHITE}Multiplayer
STR_NETWORK_PLAYER_NAME :{BLACK}Player name:
STR_NETWORK_ENTER_NAME_TIP :{BLACK}This is the name other players will identify you by
STR_NETWORK_CONNECTION :{BLACK}Connection:
STR_NETWORK_CONNECTION_TIP :{BLACK}Choose between an internet game or a local area nework game
STR_NETWORK_START_SERVER :{BLACK}Start server
STR_NETWORK_START_SERVER_TIP :{BLACK}Start an own server
STR_NETWORK_GAME_NAME :{BLACK}Name
STR_NETWORK_GAME_NAME_TIP :{BLACK}Name of the game
STR_NETWORK_INFO_ICONS_TIP :{BLACK}Language, server version, etc.
STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Click a game from the list to select it
STR_NETWORK_FIND_SERVER :{BLACK}Find server
STR_NETWORK_FIND_SERVER_TIP :{BLACK}Search network for a server
STR_NETWORK_ADD_SERVER :{BLACK}Add server
STR_NETWORK_ADD_SERVER_TIP :{BLACK}Adds a server to the list which will always be checked for running games.
STR_NETWORK_DIRECT_CONNECT :{BLACK}Direct connect
STR_NETWORK_ENTER_IP :{BLACK}Enter the IP address of the server
STR_NETWORK_DIRECT_CONNECT_TIP :{BLACK}Connect to a known IP
STR_NETWORK_START_SERVER :{BLACK}Start server
STR_NETWORK_START_SERVER_TIP :{BLACK}Start an own server
STR_NETWORK_CLIENTS_ONLINE :{BLACK}{COMMA16}/{COMMA16}
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Clients
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Clients online / clients max
STR_NETWORK_GAME_INFO :{SILVER}GAME INFO
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Clients: {WHITE}{COMMA8} / {COMMA8}
STR_NETWORK_LANGUAGE :{SILVER}Language: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Tileset: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}Map size: {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_SERVER_VERSION :{SILVER}Server version: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Server address: {WHITE}{STRING}
STR_NETWORK_START_DATE :{SILVER}Start date: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Current date: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Password protected!
STR_NETWORK_SERVER_OFFLINE :{SILVER}SERVER OFFLINE
STR_NETWORK_SERVER_FULL :{SILVER}SERVER FULL
STR_NETWORK_VERSION_MISMATCH :{SILVER}VERSION MISMATCH
STR_NETWORK_PLAYER_NAME :{BLACK}Player name:
STR_NETWORK_ENTER_NAME_TIP :{BLACK}This is the name other players will identify you by
STR_NETWORK_SELECT_CONNECTION :{BLACK}Select connection type:
STR_NETWORK_CONNECTION_TYPE_TIP :{BLACK}Chose between an internet game or a local area nework game
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :LAN
STR_NETWORK_INTERNET :Internet
STR_NETWORK_GAME_NAME :{BLACK}Name
STR_NETWORK_GAME_NAME_TIP :{BLACK}Name of the game
STR_NETWORK_PLAYERS :{BLACK}#/#
STR_NETWORK_PLAYERS_TIP :{BLACK}Players currently in this game / Maximum number of players
STR_NETWORK_MAP_SIZE :{BLACK}Size
STR_NETWORK_MAP_SIZE_TIP :{BLACK}Size of the map
STR_NETWORK_INFO_ICONS_TIP :{BLACK}Language, server version, etc.
STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Click a game from the list to select it
STR_NETWORK_PLAYERS_VAL :{BLACK}{COMMA8}/{COMMA8}
STR_NETWORK_JOIN_GAME :{BLACK}Join game
@@ -1240,30 +1210,20 @@ STR_NETWORK_START_GAME_WINDOW :{WHITE}Start new game
STR_NETWORK_NEW_GAME_NAME :{BLACK}Game name:
STR_NETWORK_NEW_GAME_NAME_TIP :{BLACK}The game name will be displayed to other players in the multiplayer game selection menu
STR_NETWORK_SET_PASSWORD :{BLACK}Set password
STR_NETWORK_PASSWORD :{BLACK}Password:
STR_NETWORK_PASSWORD_TIP :{BLACK}Protect your game with a password if you don't want other people to join it
STR_NETWORK_SELECT_MAP :{BLACK}Select a map:
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Which map do you want to play?
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Maximum allowed clients:
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Choose a maximum number of clients. Not all slots need to be filled.
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :LAN
STR_NETWORK_INTERNET :Internet
STR_NETWORK_LAN_INTERNET :LAN / Internet
STR_NETWORK_INTERNET_ADVERTISE :Internet (advertise)
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_CLIENTS :2 clients
STR_NETWORK_3_CLIENTS :3 clients
STR_NETWORK_4_CLIENTS :4 clients
STR_NETWORK_5_CLIENTS :5 clients
STR_NETWORK_6_CLIENTS :6 clients
STR_NETWORK_7_CLIENTS :7 clients
STR_NETWORK_8_CLIENTS :8 clients
STR_NETWORK_9_CLIENTS :9 clients
STR_NETWORK_10_CLIENTS :10 clients
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Language spoken:
STR_NETWORK_LANGUAGE_TIP :{BLACK}Other players will know which language is spoken on the server.
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_NUMBER_OF_PLAYERS :{BLACK}Number of players:
STR_NETWORK_NUMBER_OF_PLAYERS_TIP :{BLACK}Chose a maximum number of players. Not all slots need to be filled.
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_PLAYERS :2 players
STR_NETWORK_3_PLAYERS :3 players
STR_NETWORK_4_PLAYERS :4 players
STR_NETWORK_5_PLAYERS :5 players
STR_NETWORK_6_PLAYERS :6 players
STR_NETWORK_7_PLAYERS :7 players
STR_NETWORK_8_PLAYERS :8 players
STR_NETWORK_START_GAME :{BLACK}Start Game
STR_NETWORK_START_GAME_TIP :{BLACK}Start a new network game from a random map, or scenario
STR_NETWORK_LOAD_GAME :{BLACK}Load Game
@@ -1271,62 +1231,17 @@ STR_NETWORK_LOAD_GAME_TIP :{BLACK}Resume an earlier saved multiplayer game (
STR_NETWORK_LOAD_SCENARIO :{BLACK}Load Scenario
STR_NETWORK_LOAD_SCENARIO_TIP :{BLACK}Start a new network game from a scenario
############ Leave those lines in this order!!
STR_NETWORK_LANG_ANY :Any
STR_NETWORK_LANG_ENGLISH :English
STR_NETWORK_LANG_GERMAN :German
STR_NETWORK_LANG_FRENCH :French
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Multiplayer game lobby
STR_NETWORK_PREPARE_TO_JOIN :{BLACK}Preparing to join: {ORANGE}{STRING}
STR_NETWORK_COMPANY_LIST_TIP :{BLACK}A list of all companies currently in this game. You can either join one or start a
STR_NETWORK_SEND :{BLACK}Send
STR_NETWORK_SEND_TIP :{BLACK}Send a message to the other players
STR_NETWORK_COMPANY_NAME :{BLACK}Company name:
STR_NETWORK_COMPANY_NAME_TIP :{BLACK}Change the name of your company. Hit enter to apply changes
STR_NETWORK_SPECTATE_GAME :{BLACK}Spectate game
STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Watch the game as a spectator
STR_NETWORK_NEW_COMPANY :{BLACK}New company
STR_NETWORK_NEW_COMPANY_TIP :{BLACK}Open a new company
STR_NETWORK_SPECTATE_GAME :{BLACK}Watch game
STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Watch the game as a spectator
STR_NETWORK_JOIN_COMPANY :{BLACK}Join company
STR_NETWORK_JOIN_COMPANY_TIP :{BLACK}Help managing this company
STR_NETWORK_REFRESH :{BLACK}Refresh server
STR_NETWORK_REFRESH_TIP :{BLACK}Refresh the server info
STR_NETWORK_COMPANY_INFO :{SILVER}COMPANY INFO
STR_NETWORK_COMPANY_NAME :{SILVER}Company name: {WHITE}{STRING}
STR_NETWORK_INAUGURATION_YEAR :{SILVER}Inauguration: {WHITE}{NUMU16}
STR_NETWORK_VALUE :{SILVER}Company value: {WHITE}{CURRENCY64}
STR_NETWORK_CURRENT_BALANCE :{SILVER}Current balance: {WHITE}{CURRENCY64}
STR_NETWORK_LAST_YEARS_INCOME :{SILVER}Last year's income: {WHITE}{CURRENCY64}
STR_NETWORK_PERFORMANCE :{SILVER}Performance: {WHITE}{NUMU16}
STR_NETWORK_VEHICLES :{SILVER}Vehicles: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_STATIONS :{SILVER}Stations: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_PLAYERS :{SILVER}Players: {WHITE}{STRING}
STR_NETWORK_CONNECTING :{WHITE}Connecting...
############ Leave those lines in this order!!
STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Connecting..
STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Authorizing..
STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Waiting..
STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Downloading map..
STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Processing data..
STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registering..
STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Fetching game info..
STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Fetching company info..
############ End of leave-in-this-order
STR_NETWORK_CONNECTING_WAITING :{BLACK}{INT32} client(s) in front of us
STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{INT32} / {INT32} kbytes downloaded so far
STR_NETWORK_DISCONNECT :{BLACK}Disconnect
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Enter your text message to send
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Enter the amount of money you want to give
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server is protected. Enter password
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Company is protected. Enter password
STR_NETWORK_CLIENT_LIST :{WHITE}Client List
STR_NETWORK_READY :{BLACK}Ready
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} No network devices found or compiled without ENABLE_NETWORK
STR_NETWORK_ERR_NOSERVER :{WHITE} Could not find any network games
@@ -1334,56 +1249,7 @@ STR_NETWORK_ERR_NOCONNECTION :{WHITE} The server didn't answer the request
STR_NETWORK_ERR_DESYNC :{WHITE} Network-Game synchronization failed.
STR_NETWORK_ERR_LOSTCONNECTION :{WHITE} Network-Game connection lost.
STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE} Could not load server-savegame.
STR_NETWORK_ERR_SERVER_START :{WHITE} Could not start the server.
STR_NETWORK_ERR_CLIENT_START :{WHITE} Could not connect.
STR_NETWORK_ERR_TIMEOUT :{WHITE} Connection #{NUMU16} timed out.
STR_NETWORK_ERR_SERVER_ERROR :{WHITE} We made a protocol-error and our connection is closed.
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} The revision of this client does not match the revision of the server.
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Wrong password.
STR_NETWORK_ERR_SERVER_FULL :{WHITE} The server is full
STR_NETWORK_ERR_KICKED :{WHITE} You are kicked out of the server
STR_NETWORK_ERR_CHEATER :{WHITE} Cheating is not allowed on this server
STR_NETWORK_ERR_LEFT :has left the game
############ Leave those lines in this order!!
STR_NETWORK_ERR_CLIENT_GENERAL :general error
STR_NETWORK_ERR_CLIENT_DESYNC :desync error
STR_NETWORK_ERR_CLIENT_SAVEGAME :could not load map
STR_NETWORK_ERR_CLIENT_CONNECTION_LOST :connection lost
STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR :protocol error
STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED :not authorized
STR_NETWORK_ERR_CLIENT_NOT_EXPECTED :received strange packet
STR_NETWORK_ERR_CLIENT_WRONG_REVISION :wrong revision
STR_NETWORK_ERR_CLIENT_NAME_IN_USE :name already in use
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :wrong game-password
STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH :wrong player-id in DoCommand
STR_NETWORK_ERR_CLIENT_KICKED :kicked by server
STR_NETWORK_ERR_CLIENT_CHEATER :was trying to use a cheat
############ End of leave-in-this-order
STR_NETWORK_CLIENT_JOINED :has joined the game
STR_NETWORK_GIVE_MONEY :gave you some money ({CURRENCY})
STR_NETWORK_GAVE_MONEY_AWAY :you gave {STRING} some money ({CURRENCY})
STR_NETWORK_CHAT_COMPANY :[Team] {STRING}:
STR_NETWORK_CHAT_TO_COMPANY :[Team] To {STRING}:
STR_NETWORK_CHAT_CLIENT :[Private] {STRING}:
STR_NETWORK_CHAT_TO_CLIENT :[Private] To {STRING}:
STR_NETWORK_CHAT_ALL :[All] {STRING}:
STR_NETWORK_NAME_CHANGE :has changed his name to
STR_NETWORK_SERVER_SHUTDOWN :{WHITE} The server closed the session
STR_NETWORK_SERVER_REBOOT :{WHITE} The server is restarting...{}Please wait...
STR_NETWORK_SERVER :Server
STR_NETWORK_CLIENT :Client
STR_NETWORK_CLIENTLIST_NONE :(none)
STR_NETWORK_CLIENTLIST_KICK :Kick
STR_NETWORK_CLIENTLIST_GIVE_MONEY :Give money
STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Speak to all
STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Speak to company
STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Private message
STR_NETWORK_SEND :{BLACK}Send
############ end network gui strings
@@ -1497,7 +1363,7 @@ STR_200D_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passengers last month: {ORANGE}{CO
STR_200E_MAIL_LAST_MONTH_MAX :{BLACK}Mail last month: {ORANGE}{COMMA16}{BLACK} max: {ORANGE}{COMMA16}
STR_200F_TALL_OFFICE_BLOCK :Tall office block
STR_2010_OFFICE_BLOCK :Office block
STR_2011_SMALL_BLOCK_OF_FLATS :Small block of apartments
STR_2011_SMALL_BLOCK_OF_FLATS :Small block of flats
STR_2012_CHURCH :Church
STR_2013_LARGE_OFFICE_BLOCK :Large office block
STR_2014_TOWN_HOUSES :Town houses
@@ -1536,7 +1402,7 @@ STR_2034_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Service subsidy awarded to
STR_2035_LOCAL_AUTHORITY_REFUSES :{WHITE}{TOWN} local authority refuses to allow another airport to be built in this town
STR_2036_COTTAGES :Cottages
STR_2037_HOUSES :Houses
STR_2038_FLATS :Apartments
STR_2038_FLATS :Flats
STR_2039_TALL_OFFICE_BLOCK :Tall office block
STR_203A_SHOPS_AND_OFFICES :Shops and offices
STR_203B_SHOPS_AND_OFFICES :Shops and offices
@@ -1594,7 +1460,7 @@ STR_280C_CAN_T_CHANGE_SIGN_NAME :{WHITE}Can't change sign name...
STR_280D_SELECT_TREE_TYPE_TO_PLANT :{BLACK}Select tree type to plant
STR_280E_TREES :Trees
STR_280F_RAINFOREST :Rainforest
STR_2810_CACTUS_PLANTS :Cactuses
STR_2810_CACTUS_PLANTS :Cactus Plants
##id 0x3000
STR_3000_RAIL_STATION_SELECTION :{WHITE}Rail Station Selection
@@ -1954,7 +1820,7 @@ STR_683B_HOSTILE :Hostile
##id 0x7000
STR_7000 :
STR_7001 :{WHITE}{STRING} {BLACK}{STRING}
STR_7001 :{WHITE}{STRING}{BLACK}{STRING}
STR_7002_PLAYER :(Player {COMMA16})
STR_7004_NEW_FACE :{BLACK}New Face
STR_7005_COLOR_SCHEME :{BLACK}Color Scheme
@@ -1966,7 +1832,7 @@ STR_700A_COMPANY_NAME :Company Name
STR_700B_PRESIDENT_S_NAME :President's Name
STR_700C_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Can't change company name...
STR_700D_CAN_T_CHANGE_PRESIDENT :{WHITE}Can't change president's name...
STR_700E_FINANCES :{WHITE}{STRING} Finances {BLACK}{STRING}
STR_700E_FINANCES :{WHITE}{STRING} Finances{BLACK}{STRING}
STR_700F_EXPENDITURE_INCOME :{WHITE}Expenditure/Income
STR_7010 :{WHITE}{NUMU16}
STR_7011_CONSTRUCTION :{GOLD}Construction
@@ -2071,9 +1937,6 @@ STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Rebuild company headquarters elsewh
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Can't build company headquarters...
STR_7072_VIEW_HQ :{BLACK}View HQ
STR_RELOCATE_HQ :{BLACK}Relocate HQ
STR_COMPANY_PASSWORD :{BLACK}Password
STR_COMPANY_PASSWORD_TOOLTIP :{BLACK}Password-protect your company to prevent unauthorised users from joining.
STR_SET_COMPANY_PASSWORD :Set company password
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}World Recession!{}{}Financial experts fear worst as economy slumps!
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}Recession Over!{}{}Upturn in trade gives confidence to industries as economy strengthens!
STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Toggle large/small window size
@@ -2612,7 +2475,7 @@ STR_GO_TO_SHIP_DEPOT :Go to {TOWN} Ship Depot
SERVICE_AT_SHIP_DEPOT :Service at {TOWN} Ship Depot
##id 0xA000
STR_A000_AIRPORTS :{WHITE}Airports
STR_A000_AIRPORT_CONSTRUCT :{WHITE}Airport Construct.
STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Can't build airport here...
STR_A002_AIRCRAFT_HANGAR :{WHITE}{STATION} Aircraft Hangar
STR_A003_NEW_AIRCRAFT :{BLACK}New Aircraft
@@ -2700,8 +2563,8 @@ STR_MULTIPLAYER_PAUSED :{WHITE}Game is paused.{}Command cannot be executed
STR_PERFORMANCE_DETAIL :{WHITE}Detail performance rating
STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detail
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA32}/{COMMA32})
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}{TINYFONT}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}{TINYFONT}({INT32}/{INT32})
STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{INT32}%
SET_PERFORMANCE_DETAIL_INT :{BLACK}{INT32}
############ Those following lines need to be in this order!!
@@ -2727,35 +2590,3 @@ STR_PERFORMANCE_DETAIL_MONEY_TIP :{BLACK}Amount of cash on hand
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Do you have a high loan?
STR_PERFORMANCE_DETAIL_TOTAL_TIP :{BLACK}Total points out of possible points
STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Newgrf settings
STR_NEWGRF_APPLY_CHANGES :{BLACK}Apply changes
STR_NEWGRF_SET_PARAMETERS :{BLACK}Set parameters
STR_NEWGRF_TIP :{BLACK}A list of all the Newgrf sets that you have installed. Click a set to change the settings.
STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}There are currently no newgrf files installed! Please refer to the manual for instructions to install new graphics.
STR_NEWGRF_FILENAME :{BLACK}Filename:
STR_NEWGRF_GRF_ID :{BLACK}GRF ID:
STR_CURRENCY_WINDOW :{WHITE}Custom currency
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Exchange rate: {ORANGE}{CURRENCY} = {POUNDSIGN} {COMMA16}
STR_CURRENCY_SEPARATOR :{LTBLUE}Separator:
STR_CURRENCY_PREFIX :{LTBLUE}Prefix:
STR_CURRENCY_SUFFIX :{LTBLUE}Suffix:
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Switch to Euro: {ORANGE}{INT32}
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Switch to Euro: {ORANGE}never
STR_CURRENCY_PREVIEW :{LTBLUE}Preview: {ORANGE}{CURRENCY}
STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Change custom currency parameter
STR_TRAIN :{BLACK}{TRAIN}
STR_LORRY :{BLACK}{LORRY}
STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_SCHEDULED_TRAINS :{WHITE}{STATION} - {COMMA16} Trains
STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA16} Road Vehicles
STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA16} Aircraft
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA16} Ships
STR_SCHEDULED_TRAINS_TIP :{BLACK}Show all trains which have this station on their schedule
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Show all road vehicles which have this station on their schedule
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Show all aircraft which have this station on their schedule
STR_SCHEDULED_SHIPS_TIP :{BLACK}Show all ships which have this station on their schedule

File diff suppressed because it is too large Load Diff

View File

@@ -98,7 +98,7 @@ STR_005C_TON_OF_FRUIT :{COMMA16} tuna ovoce
STR_005D_BAG_OF_DIAMONDS :{COMMA16} pytel diamantu
STR_005E_TON_OF_FOOD :{COMMA16} tuna j<>dla
STR_005F_TON_OF_PAPER :{COMMA16} tuna pap<61>ru
STR_0060_BAG_OF_GOLD :{COMMA16} bal<61>k zlata
STR_0060_BAG_OF_GOLD :{COMMA16} bal<61>k posty
STR_0061_OF_WATER :{VOLUME} vody
STR_0062_TON_OF_WHEAT :{COMMA16} tuna kukurice
STR_0063_OF_RUBBER :{VOLUME} kaucuku
@@ -256,7 +256,7 @@ STR_00FF_FARM :{BLACK}{TINYFONT}Farma
STR_0100_FACTORY :{BLACK}{TINYFONT}Tovarna
STR_0101_PRINTING_WORKS :{BLACK}{TINYFONT}Tiskarna
STR_0102_OIL_WELLS :{BLACK}{TINYFONT}Ropn<70> vrt
STR_0103_IRON_ORE_MINE :{BLACK}{TINYFONT}Dul na zeleznou rudu
STR_0103_IRON_ORE_MINE :{BLACK}{TINYFONT}Dul na medenou rudu
STR_0104_STEEL_MILL :{BLACK}{TINYFONT}Ocelarna
STR_0105_BANK :{BLACK}{TINYFONT}Banka
STR_0106_PAPER_MILL :{BLACK}{TINYFONT}Papirna
@@ -277,17 +277,17 @@ STR_0114_TOY_SHOP :{BLACK}{TINYFONT}Hrackarstvi
STR_0115_TOY_FACTORY :{BLACK}{TINYFONT}Tovarna na hracky
STR_0116_PLASTIC_FOUNTAINS :{BLACK}{TINYFONT}Plastove fontany
STR_0117_FIZZY_DRINK_FACTORY :{BLACK}{TINYFONT}Stacirna limonad
STR_0118_BUBBLE_GENERATOR :{BLACK}{TINYFONT}Gener<EFBFBD>tor bublin
STR_0118_BUBBLE_GENERATOR :{BLACK}{TINYFONT}Generator bublin
STR_0119_TOFFEE_QUARRY :{BLACK}{TINYFONT}Karamelolom
STR_011A_SUGAR_MINE :{BLACK}{TINYFONT}Cukern<EFBFBD> dul
STR_011A_SUGAR_MINE :{BLACK}{TINYFONT}Cukerny dul
STR_011B_RAILROAD_STATION :{BLACK}{TINYFONT}Nadrazi
STR_011C_TRUCK_LOADING_BAY :{BLACK}{TINYFONT}Nakl<EFBFBD>dac<EFBFBD> rampa
STR_011D_BUS_STATION :{BLACK}{TINYFONT}Autobusov<EFBFBD> zast<EFBFBD>vka
STR_011C_TRUCK_LOADING_BAY :{BLACK}{TINYFONT}Nakladaci plosina
STR_011D_BUS_STATION :{BLACK}{TINYFONT}Autobusova zastavka
STR_011E_AIRPORT_HELIPORT :{BLACK}{TINYFONT}Letiste/Heliport
STR_011F_DOCK :{BLACK}{TINYFONT}Pristavy
STR_0120_ROUGH_LAND :{BLACK}{TINYFONT}Hrbolat<EFBFBD> zem
STR_0121_GRASS_LAND :{BLACK}{TINYFONT}Travnat<EFBFBD> zem
STR_0122_BARE_LAND :{BLACK}{TINYFONT}Hol<EFBFBD> zem
STR_0120_ROUGH_LAND :{BLACK}{TINYFONT}Hrbolata zem
STR_0121_GRASS_LAND :{BLACK}{TINYFONT}Travnata zem
STR_0122_BARE_LAND :{BLACK}{TINYFONT}Prazdna zem
STR_0123_FIELDS :{BLACK}{TINYFONT}Pole
STR_0124_TREES :{BLACK}{TINYFONT}Stromy
STR_0125_ROCKS :{BLACK}{TINYFONT}Kameny
@@ -302,15 +302,14 @@ STR_012D :{WHITE}{STRING}
STR_012E_CANCEL :{BLACK}Zrusit
STR_012F_OK :{BLACK}OK
STR_0130_RENAME :{BLACK}Prejmenovat
STR_0131_TOO_MANY_NAMES_DEFINED :{WHITE}Definov<EFBFBD>no prilis mnoho jmen
STR_0131_TOO_MANY_NAMES_DEFINED :{WHITE}Definovano prilis mnoho jmen
STR_0132_CHOSEN_NAME_IN_USE_ALREADY :{WHITE}Zvolen<65> jm<6A>no se jiz pouziva
STR_0133_WINDOWS :Windows
STR_0134_UNIX :Unixu
STR_0134_UNIX :Unix
STR_0135_OSX :OSX
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_0139_IMPERIAL_MILES :Imperi<72>ln<6C> (m<>le)
STR_013A_METRIC_KILOMETERS :Metrick<63> (kilometry)
@@ -353,21 +352,20 @@ STR_015E_QUIT_GAME :Ukoncit hru
STR_015F_QUIT :Ukoncit program
STR_0160_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Opravdu chces ukoncit tuto hru?
STR_0161_QUIT_GAME :{WHITE}Konec hry
STR_SORT_ORDER_TIP :{BLACK}Vyber zpusob razeni (sestupne/vzestupne)
STR_SORT_CRITERIA_TIP :{BLACK}Vyber, podle ceho se m<> tridit
STR_SORT_TIP :{BLACK}Vyberte zpusob razeni ulozeni
SRT_SORT_BY :{BLACK}Radit podle
STR_SORT_BY_POPULATION :{BLACK}Populace
STR_SORT_BY_PRODUCTION :{BLACK}Prudukce
STR_SORT_BY_TYPE :{BLACK}Typ
STR_SORT_BY_TRANSPORTED :{BLACK}Prepraveno
STR_SORT_BY_NAME :{BLACK}Podle jm<EFBFBD>na
STR_SORT_BY_NAME :{BLACK}Jm<EFBFBD>no
STR_SORT_BY_DROPDOWN_NAME :jm<6A>na
STR_SORT_BY_DATE :{BLACK}Podle data
STR_SORT_BY_DATE :{BLACK}Datum
STR_SORT_BY_UNSORTED :(neradit)
STR_SORT_BY_NUMBER :cisla
STR_SORT_BY_PROFIT_LAST_YEAR :hrub<75>ho zisku vloni
STR_SORT_BY_PROFIT_THIS_YEAR :hrub<75>ho zisku letos
STR_SORT_BY_PROFIT_LAST_YEAR :hrub<75>ho zisku letos
STR_SORT_BY_PROFIT_THIS_YEAR :hrub<75>ho zisku vloni
STR_SORT_BY_AGE :stari
STR_SORT_BY_RELIABILITY :spolehlivosti
STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :celkov<6F> kapacity podle druhu n<>kladu
@@ -398,15 +396,15 @@ STR_0174_DISPLAY_MAP :{BLACK}Zobrazit mapu
STR_0175_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Zobrazit mapu a seznam mest
STR_0176_DISPLAY_TOWN_DIRECTORY :{BLACK}Zobrazit seznam mest
STR_0177_DISPLAY_COMPANY_FINANCES :{BLACK}Zobrazit financni informace o spolecnosti
STR_0178_DISPLAY_COMPANY_GENERAL :{BLACK}Zobrazit obecn<EFBFBD> informace o spolecnosti
STR_0178_DISPLAY_COMPANY_GENERAL :{BLACK}Zobrazit obecne informace o spolecnosti
STR_0179_DISPLAY_GRAPHS :{BLACK}Zobrazit grafy
STR_017A_DISPLAY_COMPANY_LEAGUE :{BLACK}Zobrazit tabulku spolecnosti
STR_017B_DISPLAY_LIST_OF_COMPANY :{BLACK}Zobrazit seznam vlaku spolecnosti
STR_017C_DISPLAY_LIST_OF_COMPANY :{BLACK}Zobrazit seznam silnicnich vozidel spolecnosti
STR_017D_DISPLAY_LIST_OF_COMPANY :{BLACK}Zobrazit seznam lod<EFBFBD> spolecnosti
STR_017C_DISPLAY_LIST_OF_COMPANY :{BLACK}Zobrazit seznam silnicni vozidlou spolecnosti
STR_017D_DISPLAY_LIST_OF_COMPANY :{BLACK}Zobrazit seznam lodi spolecnosti
STR_017E_DISPLAY_LIST_OF_COMPANY :{BLACK}Zobrazit seznam letadel spolecnosti
STR_017F_ZOOM_THE_VIEW_IN :{BLACK}Priblizit pohled
STR_0180_ZOOM_THE_VIEW_OUT :{BLACK}Odd<EFBFBD>lit pohled
STR_0180_ZOOM_THE_VIEW_OUT :{BLACK}Oddalit pohled
STR_0181_BUILD_RAILROAD_TRACK :{BLACK}Stavet koleje
STR_0182_BUILD_ROADS :{BLACK}Stavet silnice
STR_0183_BUILD_SHIP_DOCKS :{BLACK}Stavet doky
@@ -419,11 +417,10 @@ STR_0189 :{BLACK}{SMALLDOWNARROW}
STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Nelze zmenit interval oprav...
STR_018B_CLOSE_WINDOW :{BLACK}Zavrit okno
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Titulek okna - tahej pro posun okna
STR_STICKY_BUTTON :{BLACK}Oznacit toto okno, aby se nedalo zavrit kl<6B>vesou 'Zavrit vsechna okna'
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolice budov, atd.
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Snizit roh zeme
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Zvysit roh zeme
STR_0190_SCROLL_BAR_SCROLLS_LIST :{BLACK}Posuvn<EFBFBD>k - posouv<EFBFBD> v<EFBFBD>pisem nahoru nebo dolu ci doleva nebo doprava
STR_0190_SCROLL_BAR_SCROLLS_LIST :{BLACK}Posuvnik - posouva vypisem nahoru a dolu
STR_0191_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Zobrazit na mape relief krajiny
STR_0192_SHOW_VEHICLES_ON_MAP :{BLACK}Zobrazit na mape dopravn<76> prostredky
STR_0193_SHOW_INDUSTRIES_ON_MAP :{BLACK}Zobrazit na mape prumysl
@@ -498,8 +495,6 @@ STR_01CD_SELECT_TUTORIAL_DEMONSTRATION :{WHITE}Zvolit Tutorial/Ukazka
STR_01CE_CARGO_ACCEPTED :{BLACK}Prijimane zbozi: {LTBLUE}{STRING}
STR_01CF_CARGO_ACCEPTED :{BLACK}Prijimane zbozi: {LTBLUE}{STRING}, {STRING}
STR_01D0_CARGO_ACCEPTED :{BLACK}Prijimane zbozi: {LTBLUE}{STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_4 :{BLACK}Prijimane zbozi: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_5 :{BLACK}Prijimane zbozi: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}, {STRING}
############ range for cargo acecpted ends
STR_01D1_8 :({COMMA8}/8 {STRING})
@@ -542,7 +537,7 @@ STR_01F5_SELECT_NEW_STYLE_MUSIC :{BLACK}Zvolit program 'nov
STR_01F6_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Zvolit program 'Volba 1' (uzivatelsky nastaveny)
STR_01F7_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Zvolit program 'Volba 2' (uzivatelsky nastaveny)
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Vymaz aktualni program ( Jen Volba 1 a Volba 2 )
STR_01F9_SAVE_MUSIC_SETTINGS :{BLACK}Ulozit nastaven<EFBFBD> hudby
STR_01F9_SAVE_MUSIC_SETTINGS_TO :{BLACK}Ulozit nastaveni hudby na disk
STR_01FA_CLICK_ON_MUSIC_TRACK_TO :{BLACK}Stiskni n<>zev skladby pro pridani do momentalniho programu ( Volba 1 nebo Volba 2 )
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Zapnout/vypnout nahodne opakovani skladeb
STR_01FC_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Ukaz skladbu ve vyberovem okne
@@ -727,7 +722,7 @@ STR_02BC_VEHICLE_DESIGN_NAMES :{BLACK}N
STR_02BD :{BLACK}{STRING}
STR_02BE_DEFAULT :Z<>kladn<64>
STR_02BF_CUSTOM :Uzivatelske
STR_02C0_SAVE_CUSTOM_NAMES :{BLACK}Ulozit vlastn<EFBFBD> jm<6A>na
STR_02C0_SAVE_CUSTOM_NAMES_TO_DISK :{BLACK}Ulozit uzivatelske n<>zvy na disk
STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION :{BLACK}Vyber nazvu dopravnich prostredku
STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Ulozit uzivatelske n<>zvy dopravn<76>ch prostredku na disk
@@ -738,20 +733,16 @@ STR_02C5_DIFFICULTY_SETTINGS :Nastaveni obtiznosti
STR_02C6_DIFFICULTY_SETTINGS :Nastaveni obtiznosti
STR_02C7_CONFIG_PATCHES :Nastaven<65> patchu
STR_02C8_CONFIG_PATCHES :Nastaven<65> patchu
STR_NEWGRF_SETTINGS :Nastaven<65> newgrf
STR_NEWGRF_SETTINGS2 :Nastaven<65> newgrf
STR_GAMEOPTMENU_0A :
STR_GAMEOPTMENU_0B :
STR_CLOSE_ALL_WINDOWS :Zavrit VSECHNA okna
STR_CLOSE_ALL_WINDOWS2 :Zavrit VSECHNA okna
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Zobrazen<65> jmen mest
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Zobrazen<65> jmen mest
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Zobrazen<65> jmen stanic
STR_02CC_STATION_NAMES_DISPLAYED :{SETX 12}Zobrazen<65> jmen stanic
STR_02CD_SIGNS_DISPLAYED :{CHECKMARK}{SETX 12}Zobrazen<65> napisu
STR_02CE_SIGNS_DISPLAYED :{SETX 12}Zobrazen<65> napisu
STR_WAYPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Zobrazen<65> kontroln<6C>ch bodu
STR_WAYPOINTS_DISPLAYED2 :{SETX 12}Zobrazen<65> kontroln<6C>ch bodu
STR_CHECKPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Zobrazen<65> kontroln<6C>ch bodu
STR_CHECKPOINTS_DISPLAYED2 :{SETX 12}Zobrazen<65> kontroln<6C>ch bodu
STR_02CF_FULL_ANIMATION :{CHECKMARK}{SETX 12}Pln<6C> animace
STR_02D0_FULL_ANIMATION :{SETX 12}Pln<6C> animace
STR_02D1_FULL_DETAIL :{CHECKMARK}{SETX 12}Pln<6C> detaily
@@ -774,13 +765,13 @@ STR_02DC_DISPLAY_SUBSIDIES :{BLACK}Zobrazit nabidky dotaci
STR_02DD_SUBSIDIES :Dotace
STR_02DE_MAP_OF_WORLD :Mapa sveta
STR_EXTRA_VIEW_PORT :Dalsi pohled
STR_02DF_TOWN_DIRECTORY :Seznam mest
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Pohled {COMMA16}
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Nastavit jako pohled
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Nastavit soucasne zorn<72> pole jako pohled
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Prejit na pohled
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Nastavit pohled do zorn<72>ho pole
STR_02DF_TOWN_DIRECTORY :Seznam mest
STR_02E0_CURRENCY_UNITS :{BLACK}Jednotky meny
STR_02E1 :{BLACK}{SKIP}{STRING}
STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}Vyber jednotek meny
@@ -804,16 +795,16 @@ STR_02F8_EVERY_3_MONTHS :Kazde 3 mesice
STR_02F9_EVERY_6_MONTHS :Kazdych 6 mesicu
STR_02FA_EVERY_12_MONTHS :Kazdych 12 mesicu
STR_02FB_START_A_NEW_GAME :{BLACK}Zalozit novou hru
STR_02FC_LOAD_A_SAVED_GAME :{BLACK}Nahr<EFBFBD>t hru
STR_02FC_LOAD_A_SAVED_GAME_FROM :{BLACK}Otevrit ulozenou hru z disku
STR_02FD_VIEW_DEMONSTRATIONS_TUTORIALS :{BLACK}Prohl<68>dnout uk<75>zky / tutorialy
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}Vytvorit uzivatelsky svet (scenario)
STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}Vybrat hru pro jednoho hrace
STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}Vyberte hru pro 2-8 hracu
STR_0300_SELECT_TWO_PLAYER_GAME :{BLACK}Vybrat hru pro v<EFBFBD>ce hracu
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Zobrazit moznosti hry
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Zobrazit nastaven<65> obtiznosti
STR_0303_START_A_NEW_GAME_USING :{BLACK}Zalozit novou hru, pouzit uzivatelske scenario
STR_0304_QUIT :{BLACK}Ukoncit
STR_0305_QUIT_OPENTTD :{BLACK}Ukoncit 'OpenTTD'
STR_0305_LEAVE_OPENTTD :{BLACK}Opustit 'OpenTTD' a skoncit
STR_0306_VIEW_DEMONSTRATION_TUTORIAL :{BLACK}Prohl<68>dnout uk<75>zku (tutorial)
STR_0307_OPENTTD :{WHITE}OpenTTD {REV}
STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...muze b<>t budov<6F>no jen ve mestech
@@ -821,7 +812,7 @@ STR_030E_SELECT_TEMPERATE_LANDSCAPE :{BLACK}Krajina m
STR_030F_SELECT_SUB_ARCTIC_LANDSCAPE :{BLACK}Subarktick<63> krajina
STR_0310_SELECT_SUB_TROPICAL_LANDSCAPE :{BLACK}Subtropick<63> krajina
STR_0311_SELECT_TOYLAND_LANDSCAPE :{BLACK}Zeme hracek
STR_0312_FUND_CONSTRUCTION_OF_NEW :{BLACK}Prumysl
STR_0312_FUND_CONSTRUCTION_OF_NEW :{BLACK}Investovat do nov<6F>ho prumyslu
############ range for menu starts
STR_INDUSTRY_DIR :Seznam prumyslu
@@ -861,46 +852,41 @@ STR_TOWNNAME_SWEDISH :Svedska
STR_TOWNNAME_DUTCH :Holandsk<73>
STR_TOWNNAME_FINNISH :Finsk<73>
STR_TOWNNAME_POLISH :Polsk<73>
STR_TOWNNAME_CZECH :Ceska
STR_TOWNNAME_SLOVAKISH :Slovensk<73>
STR_TOWNNAME_HUNGARIAN :Madarska
STR_TOWNNAME_AUSTRIAN :Rakousk<73>
STR_TOWNNAME_ROMANIAN :Rumunsk<73>
STR_TOWNNAME_CZECH :Ceska
############ end of townname region
STR_CURR_GBP :Libry ({POUNDSIGN})
STR_CURR_USD :Dolary ($)
STR_CURR_EUR :Eura (<28>)
STR_CURR_POUNDS :Anglick<EFBFBD> libry ({POUNDSIGN})
STR_CURR_DOLLARS :Americk<63> dolary ($)
STR_CURR_FF :Francouzsk<EFBFBD> franky (FF)
STR_CURR_DM :Nemecke marky (DM)
STR_CURR_YEN :Japonsk<73> jeny ({YENSIGN})
STR_CURR_PT :Spanelske pesety (Pt)
STR_CURR_FT :Madarske forinty (Ft)
STR_CURR_ZL :Polsk<73> zlote (zl)
STR_CURR_ATS :Rakousk<73> silinky (ATS)
STR_CURR_BEF :Belgick<63> franky (BEF)
STR_CURR_CHF :Svycarske franky (CHF)
STR_CURR_CZK :Ceske koruny (CZK)
STR_CURR_DEM :Nemecke marky (DEM)
STR_CURR_DKK :D<>nsk<73> koruny (DKK)
STR_CURR_ESP :Pesety (ESP)
STR_CURR_FIM :Finsk<73> marky (FIM)
STR_CURR_FRF :Franky (FRF)
STR_CURR_GRD :Recke drachmy (GRD)
STR_CURR_HUF :Madarske forinty (HUF)
STR_CURR_ISK :Islandsk<73> koruny (ISK)
STR_CURR_ITL :Italsk<73> liry (ITL)
STR_CURR_CHF :Svycarske franky (CHF)
STR_CURR_NLG :Holandsk<73> guldeny (NLG)
STR_CURR_NOK :Norsk<EFBFBD> koruny (NOK)
STR_CURR_PLN :Polsk<73> zlot<6F> (PLN)
STR_CURR_ROL :Rumunsk<73> Lei (ROL)
STR_CURR_RUR :Rusk<73> rubly (RUR)
STR_CURR_ITL :Italsk<EFBFBD> liry (ITL)
STR_CURR_SEK :Svedske koruny (SEK)
STR_CURR_CUSTOM :Vlastn<EFBFBD>...
STR_CURR_RUR :Rusk<73> rubly (RUR)
STR_CURR_CZK :Ceske koruny (CZK)
STR_CURR_ISK :Islandsk<73> koruny (ISK)
STR_CURR_NOK :Norsk<73> koruny (NOK)
STR_CURR_ROL :Rumunsk<73> Lei
STR_CURR_EUR :Eura (<28>)
STR_OPTIONS_LANG :{BLACK}Jazyk
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_LANG_TIP :{BLACK}Zvolit jazyk uzivatelskeho rozhran<61>
STR_OPTIONS_FULLSCREEN :{BLACK}Na celou obrazovku
STR_OPTIONS_FULLSCREEN_TIP :{BLACK}Kdyz chcete hr<68>t OpenTTD na cel<65> obrazovce, zaskrtnete tuto volbu
STR_OPTIONS_RES :{BLACK}Rozliseni obrazovky
STR_OPTIONS_RES_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_RES_TIP :{BLACK}Zvolit rozliseni obrazovky
@@ -925,8 +911,8 @@ STR_MONTH_OCT :Rijen
STR_MONTH_NOV :Listopad
STR_MONTH_DEC :Prosinec
STR_HEADING_FOR_STATION :{LTBLUE}Mirim do {STATION}
STR_HEADING_FOR_STATION_VEL :{LTBLUE}Mirim do {STATION}, {VELOCITY}
STR_HEADING_FOR_STATION :{LTBLUE}Jedu do {STATION}
STR_HEADING_FOR_STATION_VEL :{LTBLUE}Jedu do {STATION}, {VELOCITY}
STR_NO_ORDERS :{LTBLUE}Bez prikazu
STR_NO_ORDERS_VEL :{LTBLUE}Bez prikazu, {VELOCITY}
@@ -980,13 +966,11 @@ STR_CONFIG_PATCHES_OFF :Vypnuto
STR_CONFIG_PATCHES_ON :Zapnuto
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Ukazovat rychlost vozidla ve stavov<6F> liste: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Povolit v<>stavbu na svaz<61>ch kopcu a na pobrezich: {ORANGE}{STRING}
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Povolit u oblasti pokryt<79> realistictejsi velikost: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Povolit bour<75>n<EFBFBD> v<>ce mestskych silnic, mostu, tunelu, atp.: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Povolit stavbu dlouh<75>ch vlaku: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Zapnout realistick<63> zrychlov<6F>n<EFBFBD> vlaku: {ORANGE}{STRING}
STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Spojovat stanice postaven<65> vedle sebe: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FULLLOADANY :{LTBLUE}Odjet, kdyz je plne nalozen jak<61>koli n<>klad pri 'nalozit': {ORANGE}{STRING}
STR_CONFIG_PATCHES_IMPROVEDLOAD :{LTBLUE}Pouzij vylepseny algoritmus nakl<6B>d<EFBFBD>n<EFBFBD>: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INFLATION :{LTBLUE}Inflace: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Vozit zbozi do stanice jen pokud je popt<70>vka: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Povolit stavbu velmi dlouh<75>ch mostu: {ORANGE}{STRING}
@@ -1053,8 +1037,6 @@ STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Umisteni hlavn
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Vlevo
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :Uprostred
STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT :Vpravo
STR_CONFIG_PATCHES_SNAP_RADIUS :{LTBLUE}Okno se prichyti k druh<75>mu, kdyz je bliz, nez: {ORANGE}{STRING} px
STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED :{LTBLUE}Okno se prichyti k druh<75>mu, kdyz je bliz, nez: {ORANGE}vypnuto
STR_CONFIG_PATCHES_GUI :{BLACK}Ovl<76>dan<61>
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Konstrukce
@@ -1087,28 +1069,24 @@ STR_CHEAT_NO_JETCRASH :{LTBLUE}Letadla nebudou na mal
STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}Zmenit podneb<65>: {ORANGE} {STRING}
STR_CHEAT_CHANGE_DATE :{LTBLUE}Zmenit datum: {ORANGE} {DATE_SHORT}
STR_HEADING_FOR_WAYPOINT :{LTBLUE}Mirim do {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Mirim do {WAYPOINT}, {VELOCITY}
STR_HEADING_FOR_CHECKPOINT :{LTBLUE}Mirim do {CHECKPOINT}
STR_HEADING_FOR_CHECKPOINT_VEL :{LTBLUE}Mirim do {CHECKPOINT}, {VELOCITY}
STR_GO_TO_WAYPOINT :Jet pres {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT :Jet bez zast<73>vky pres {WAYPOINT}
STR_GO_TO_CHECKPOINT :Jet pres {CHECKPOINT}
STR_WAYPOINTNAME_CITY :Kontroln<EFBFBD> bod {TOWN}
STR_WAYPOINTNAME_CITY_SERIAL :Kontroln<EFBFBD> bod {TOWN} #{COMMA16}
STR_LANDINFO_WAYPOINT :Kontroln<EFBFBD> bod
STR_CHECKPOINTNAME_CITY :Kontrolni bod {TOWN}
STR_CHECKPOINTNAME_CITY_SERIAL :Kontrolni bod {TOWN} #{COMMA16}
STR_LANDINFO_CHECKPOINT :Kontrolni bod
STR_WAYPOINT :{WHITE}Kontroln<EFBFBD> bod
STR_WAYPOINT_GRAPHICS_TIP :{BLACK}Vyber typ kontroln<6C>ho bodu
STR_CHECKPOINT_VIEWPORT :{WHITE}{CHECKPOINT}
STR_CHECKPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{CHECKPOINT}
STR_CHECKPOINT_RAW :{CHECKPOINT}
STR_EDIT_CHECKPOINT_NAME :{WHITE}Zmenit jm<6A>no kontrolniho bodu
STR_WAYPOINT_VIEWPORT :{WHITE}{WAYPOINT}
STR_WAYPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{WAYPOINT}
STR_WAYPOINT_RAW :{WAYPOINT}
STR_EDIT_WAYPOINT_NAME :{WHITE}Zmenit jm<6A>no kontroln<EFBFBD>ho bodu
STR_CANT_CHANGE_WAYPOINT_NAME :{WHITE}Nemohu zmenit jm<6A>no kontroln<6C>ho bodu...
STR_CONVERT_RAIL_TO_WAYPOINT_TIP :{BLACK}Zmenit koleje v kontroln<6C> bod
STR_CANT_BUILD_TRAIN_WAYPOINT :{WHITE}Nemohu zde vybudovat zeleznicni kontroln<6C> bod...
STR_CANT_REMOVE_TRAIN_WAYPOINT :{WHITE}Nemohu zde zrusit zeleznicni kontroln<6C> bod...
STR_CANT_CHANGE_CHECKPOINT_NAME :{WHITE}Nemohu zmenit jm<6A>no kontrolniho bodu...
STR_CONVERT_RAIL_TO_CHECKPOINT_TIP :{BLACK}Zmenit koleje v kontrolni bod
STR_CANT_BUILD_TRAIN_CHECKPOINT :{WHITE}Nemohu zde vybudovat zeleznicni kontrolni bod...
STR_CANT_REMOVE_TRAIN_CHECKPOINT :{WHITE}Nemohu zde zrusit zeleznicni kontrolni bod...
STR_BUILD_AUTORAIL_TIP :{BLACK}Budovat koleje pouzitim rezimu Autokoleje
@@ -1121,7 +1099,6 @@ STR_MANY_RANDOM_INDUSTRIES :{BLACK}Hodne n
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Pokryje krajinu n<>hodn<64>m prumyslem
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Nemuzu generovat prumysl...
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}Otevrit n<>strojovou listu na snizeni / zvyseni ter<65>nu, v<>sadbu stromu, atd.
STR_LANDSCAPING_TOOLBAR :{WHITE}<7D>pravy krajiny
STR_LEVEL_LAND_TOOLTIP :{BLACK}Srovnat ter<65>n
@@ -1194,44 +1171,37 @@ TEMP_AI_ACTIVATED :{WHITE}Pozor: tato nov
############ network gui strings
TEMP_STRING_NO_NETWORK :{WHITE}Sitove rozhran<61> jeste nen<65> plne funkcni!{}Nektera nastaven<65> funguj<75>, ale napr. vstupn<70> m<>stnost atd. ne. Jen abyste vedeli.
STR_NETWORK_MULTIPLAYER :{WHITE}Multiplayer
STR_NETWORK_PLAYER_NAME :{BLACK}Jm<4A>no hrace:
STR_NETWORK_ENTER_NAME_TIP :{BLACK}Podle tohoto jm<6A>na te ostatn<74> hraci poznaj<61>
STR_NETWORK_CONNECTION :{BLACK}Pripojeni:
STR_NETWORK_CONNECTION_TIP :{BLACK}Vyber si mezi hrou internetovou nebo v m<>stn<74> s<>ti
STR_NETWORK_START_SERVER :{BLACK}Spustit server
STR_NETWORK_START_SERVER_TIP :{BLACK}Spusti tvuj vlastni server
STR_NETWORK_GAME_NAME :{BLACK}N<>zev
STR_NETWORK_GAME_NAME_TIP :{BLACK}N<>zev hry
STR_NETWORK_INFO_ICONS_TIP :{BLACK}Jazyk, verze serveru, atd.
STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Hru vyberes kliknutim do seznamu
STR_NETWORK_FIND_SERVER :{BLACK}Naj<61>t server
STR_NETWORK_FIND_SERVER_TIP :{BLACK}Hledat server v s<>ti
STR_NETWORK_ADD_SERVER :{BLACK}Pridat server
STR_NETWORK_ADD_SERVER_TIP :{BLACK}Prida server do seznamu, ve kter<65>m se budou hledat bezici hry.
STR_NETWORK_DIRECT_CONNECT :{BLACK}Pripojit se primo
STR_NETWORK_ENTER_IP :{BLACK}Vloz IP adresu serveru
STR_NETWORK_DIRECT_CONNECT_TIP :{BLACK}Pripojit se na urcitou IP adresu
STR_NETWORK_START_SERVER :{BLACK}Spustit server
STR_NETWORK_START_SERVER_TIP :{BLACK}Spusti tvuj vlastni server
STR_NETWORK_CLIENTS_ONLINE :{BLACK}{COMMA16}/{COMMA16}
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Hracu
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Hracu online / maximalne
STR_NETWORK_GAME_INFO :{SILVER}INFO O HRE
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Klientu: {WHITE}{COMMA8} / {COMMA8}
STR_NETWORK_LANGUAGE :{SILVER}Jazyk: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Prostredi: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}Velikost mapy: {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_SERVER_VERSION :{SILVER}Verze hry na serveru: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Adresa serveru: {WHITE}{STRING}
STR_NETWORK_START_DATE :{SILVER}Pocatecni datum: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Moment<6E>ln<6C> datum: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Chraneno heslem!
STR_NETWORK_SERVER_OFFLINE :{SILVER}SERVER JE OFFLINE
STR_NETWORK_SERVER_FULL :{SILVER}SERVER JE PLN<4C>
STR_NETWORK_VERSION_MISMATCH :{SILVER}NESOUHLAS<41> VERZE
STR_NETWORK_PLAYER_NAME :{BLACK}Jm<4A>no hrace:
STR_NETWORK_ENTER_NAME_TIP :{BLACK}Podle tohoto jm<6A>na te ostatn<74> hraci poznaj<61>
STR_NETWORK_SELECT_CONNECTION :{BLACK}Vyber typ pripojeni:
STR_NETWORK_CONNECTION_TYPE_TIP :{BLACK}Vyber si hru na internetu nebo v m<>stn<74> s<>ti
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :LAN
STR_NETWORK_INTERNET :Internet
STR_NETWORK_GAME_NAME :{BLACK}N<>zev
STR_NETWORK_GAME_NAME_TIP :{BLACK}N<>zev hry
STR_NETWORK_PLAYERS :{BLACK}#/#
STR_NETWORK_PLAYERS_TIP :{BLACK}Kolik je ted ve hre hracu / Maximum hracu ve hre
STR_NETWORK_MAP_SIZE :{BLACK}Velikost
STR_NETWORK_MAP_SIZE_TIP :{BLACK}Velikost mapy
STR_NETWORK_INFO_ICONS_TIP :{BLACK}Jazyk, verze serveru, atd.
STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Hru vyberes kliknutim do seznamu
STR_NETWORK_PLAYERS_VAL :{BLACK}{COMMA8}/{COMMA8}
STR_NETWORK_JOIN_GAME :{BLACK}Pridat se
@@ -1240,30 +1210,20 @@ STR_NETWORK_START_GAME_WINDOW :{WHITE}Zacit novou hru
STR_NETWORK_NEW_GAME_NAME :{BLACK}Jm<4A>no hry:
STR_NETWORK_NEW_GAME_NAME_TIP :{BLACK}Jm<4A>no hry se zobrazi ostatnim hracum v menu, kde si vybiraji sitovou hru
STR_NETWORK_SET_PASSWORD :{BLACK}Nastavit heslo
STR_NETWORK_PASSWORD :{BLACK}Heslo:
STR_NETWORK_PASSWORD_TIP :{BLACK}Svoji hru si muzes ochranit heslem, kdyz nechces, aby se ti do ni hlasili jini lide
STR_NETWORK_SELECT_MAP :{BLACK}Vyber mapu:
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Ve kter<EFBFBD> mape si chces zahr<EFBFBD>t?
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Maxim<EFBFBD>ln<EFBFBD> pocet hracu:
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Zvol maxim<EFBFBD>ln<EFBFBD> pocet hracu. Muze se jich pripojit i mene.
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :LAN
STR_NETWORK_INTERNET :Internet
STR_NETWORK_LAN_INTERNET :LAN / Internet
STR_NETWORK_INTERNET_ADVERTISE :Internet (ozn<7A>mit)
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_CLIENTS :2 hraci
STR_NETWORK_3_CLIENTS :3 hraci
STR_NETWORK_4_CLIENTS :4 hraci
STR_NETWORK_5_CLIENTS :5 hracu
STR_NETWORK_6_CLIENTS :6 hracu
STR_NETWORK_7_CLIENTS :7 hracu
STR_NETWORK_8_CLIENTS :8 hracu
STR_NETWORK_9_CLIENTS :9 hracu
STR_NETWORK_10_CLIENTS :10 hracu
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Jazyk ve hre:
STR_NETWORK_LANGUAGE_TIP :{BLACK}Aby ostatn<74> hraci vedeli, jak<61>m jazykem se bude ve hre mluvit.
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Ve ktere mape si chces zahrat?
STR_NETWORK_NUMBER_OF_PLAYERS :{BLACK}Pocet hracu:
STR_NETWORK_NUMBER_OF_PLAYERS_TIP :{BLACK}Zvol maximalni pocet hracu. Nemusis vybirat maximalni pocet.
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_PLAYERS :2 hraci
STR_NETWORK_3_PLAYERS :3 hraci
STR_NETWORK_4_PLAYERS :4 hraci
STR_NETWORK_5_PLAYERS :5 hracu
STR_NETWORK_6_PLAYERS :6 hracu
STR_NETWORK_7_PLAYERS :7 hracu
STR_NETWORK_8_PLAYERS :8 hracu
STR_NETWORK_START_GAME :{BLACK}Zacit hru
STR_NETWORK_START_GAME_TIP :{BLACK}Hru po s<>ti zacit s n<>hodnou mapou nebo se scenariem
STR_NETWORK_LOAD_GAME :{BLACK}Nahr<68>t hru
@@ -1271,119 +1231,25 @@ STR_NETWORK_LOAD_GAME_TIP :{BLACK}Pokracovat ve drive ulozene hre pro v
STR_NETWORK_LOAD_SCENARIO :{BLACK}Hr<48>t mapu
STR_NETWORK_LOAD_SCENARIO_TIP :{BLACK}Zacit sitovou hru ze scenaria
############ Leave those lines in this order!!
STR_NETWORK_LANG_ANY :Jak<61>koli
STR_NETWORK_LANG_ENGLISH :Anglictina
STR_NETWORK_LANG_GERMAN :Nemcina
STR_NETWORK_LANG_FRENCH :Francouzstina
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Vstupni mistnost do multiplayerove hry
STR_NETWORK_GAME_LOBBY :{WHITE}Vstupn<70> m<>stnost do multiplayerov<6F> hry
STR_NETWORK_PREPARE_TO_JOIN :{BLACK}Pripravuji se na vstoupen<65>: {ORANGE}{STRING}
STR_NETWORK_COMPANY_LIST_TIP :{BLACK}Soucasny seznam vsech spolecnosti v t<>to hre. Bud muzes do jedn<64> vstoupit, nebo muzes zalozit novou.
STR_NETWORK_SEND :{BLACK}Poslat
STR_NETWORK_SEND_TIP :{BLACK}Polat zpravu ostatnim hracum
STR_NETWORK_COMPANY_NAME :{BLACK}Jm<4A>no spolecnosti:
STR_NETWORK_COMPANY_NAME_TIP :{BLACK}Muzes zmenit jm<6A>no tve spolecnosti. Enterem potvrdis zmeny
STR_NETWORK_SPECTATE_GAME :{BLACK}Navstivit hru
STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Koukat na hru jako divak
STR_NETWORK_NEW_COMPANY :{BLACK}Nov<6F> spolecnost
STR_NETWORK_NEW_COMPANY_TIP :{BLACK}Zalozit novou spolecnost
STR_NETWORK_SPECTATE_GAME :{BLACK}Navstivit hru
STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Pripojit se do hry jako div<69>k
STR_NETWORK_JOIN_COMPANY :{BLACK}Vstoupit do spolecnosti
STR_NETWORK_JOIN_COMPANY_TIP :{BLACK}Pomoz v<>st tuto spolecnost
STR_NETWORK_REFRESH :{BLACK}Obnovit info
STR_NETWORK_REFRESH_TIP :{BLACK}Znovu nacte informace o serveru
STR_NETWORK_READY :{BLACK}Pripraven
STR_NETWORK_COMPANY_INFO :{SILVER}INFO O SPOLECNOSTI
STR_NETWORK_COMPANY_NAME :{SILVER}Jm<4A>no spolecnosti: {WHITE}{STRING}
STR_NETWORK_INAUGURATION_YEAR :{SILVER}Zalozeno: {WHITE}{NUMU16}
STR_NETWORK_VALUE :{SILVER}Hodnota spolecnosti: {WHITE}{CURRENCY64}
STR_NETWORK_CURRENT_BALANCE :{SILVER}Stav na uctu: {WHITE}{CURRENCY64}
STR_NETWORK_LAST_YEARS_INCOME :{SILVER}Lonsky hrub<75> zisk: {WHITE}{CURRENCY64}
STR_NETWORK_PERFORMANCE :{SILVER}V<>kon: {WHITE}{NUMU16}
STR_NETWORK_VEHICLES :{SILVER}Vozidla: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_STATIONS :{SILVER}Stanice: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_PLAYERS :{SILVER}Hraci: {WHITE}{STRING}
STR_NETWORK_CONNECTING :{WHITE}Pripojovani...
############ Leave those lines in this order!!
STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Pripojovani..
STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Overovani..
STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Cekani..
STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Stahov<6F>n<EFBFBD> mapy..
STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Zpracov<6F>v<EFBFBD>n<EFBFBD> dat..
STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registov<6F>n<EFBFBD>..
STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Prijimani informac<61> o hre..
STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Prijimani informac<61> o spolecnosti..
############ End of leave-in-this-order
STR_NETWORK_CONNECTING_WAITING :{BLACK}{INT32} klient(u) pred n<>mi
STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{INT32} / {INT32} kB stazeno
STR_NETWORK_DISCONNECT :{BLACK}Odpojit se
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Napis zpr<70>vu, kterou chces poslat
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Napis castku, kterou chces poskytnout
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server je chraneny. Napis heslo
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Spolecnost je chranena. Napis heslo
STR_NETWORK_CLIENT_LIST :{WHITE}Seznam hracu
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} Zadna sitova zarizeni nebyla nalezena (nebo je hra zkompilov<6F>na bez ENABLE_NETWORK)
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} Zadna sitova zarizeni nebyla nalezena (nebo nejsou zkompilov<6F>na s/bez ENABLE_NETWORK)
STR_NETWORK_ERR_NOSERVER :{WHITE} Nenalezena zadna sitova hra
STR_NETWORK_ERR_NOCONNECTION :{WHITE} Server neodpovedel na pozadavek
STR_NETWORK_ERR_DESYNC :{WHITE} Sit - synchronizace hry selhala
STR_NETWORK_ERR_LOSTCONNECTION :{WHITE} Sit - spojen<65> ztraceno
STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE} Nemohu nahr<68>t ulozenou hru ze serveru
STR_NETWORK_ERR_SERVER_START :{WHITE} Nemohu spustit server.
STR_NETWORK_ERR_CLIENT_START :{WHITE} Nemohu se pripojit.
STR_NETWORK_ERR_TIMEOUT :{WHITE} U spojen<65> c. {NUMU16} byl prekrocen cekaci limit.
STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Vznikla chyba v protokolu a nase spojen<65> je preruseno.
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Revize hry tohoto klienta neodpov<6F>d<EFBFBD> revizi hry na serveru.
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Spatne heslo.
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Server je pln<6C>
STR_NETWORK_ERR_KICKED :{WHITE} Byl jsi vyhozen ze hry
STR_NETWORK_ERR_CHEATER :{WHITE} Pouzivani cheatu nen<65> na tomto serveru povoleno
STR_NETWORK_ERR_LEFT :opustil hru
############ Leave those lines in this order!!
STR_NETWORK_ERR_CLIENT_GENERAL :vseobecna (gener<65>ln<6C>) chyba
STR_NETWORK_ERR_CLIENT_DESYNC :chyba v synchronizaci
STR_NETWORK_ERR_CLIENT_SAVEGAME :nemohu nahr<68>t hru
STR_NETWORK_ERR_CLIENT_CONNECTION_LOST :spojen<65> ztraceno
STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR :chyba v protokolu
STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED :nevyd<79>no povolen<65>
STR_NETWORK_ERR_CLIENT_NOT_EXPECTED :prisel neplatn<74> paket
STR_NETWORK_ERR_CLIENT_WRONG_REVISION :spatna revize hry
STR_NETWORK_ERR_CLIENT_NAME_IN_USE :jm<6A>no se uz pouziva
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :spatne heslo
STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH :spatne id hrace v DoCommand
STR_NETWORK_ERR_CLIENT_KICKED :vyhozen serverem
STR_NETWORK_ERR_CLIENT_CHEATER :se pokousel podvadet
############ End of leave-in-this-order
STR_NETWORK_CLIENT_JOINED :vstoupil do hry
STR_NETWORK_GIVE_MONEY :ti dal nejake penize ({CURRENCY})
STR_NETWORK_GAVE_MONEY_AWAY :dal jsi {STRING} trochu penez ({CURRENCY})
STR_NETWORK_CHAT_COMPANY :[T<>m] {STRING}:
STR_NETWORK_CHAT_TO_COMPANY :[T<>m] pro {STRING}:
STR_NETWORK_CHAT_CLIENT :[Osobn<62>] {STRING}:
STR_NETWORK_CHAT_TO_CLIENT :[Osobn<62>] pro {STRING}:
STR_NETWORK_CHAT_ALL :[Vsichni] {STRING}:
STR_NETWORK_NAME_CHANGE :si zmenil jm<6A>no na
STR_NETWORK_SERVER_SHUTDOWN :{WHITE} Server ukoncil relaci
STR_NETWORK_SERVER_REBOOT :{WHITE} Server se restartuje...{}Vyckejte pros<6F>m...
STR_NETWORK_SERVER :Server
STR_NETWORK_CLIENT :Klient
STR_NETWORK_CLIENTLIST_NONE :(nikdo)
STR_NETWORK_CLIENTLIST_KICK :Vyhodit
STR_NETWORK_CLIENTLIST_GIVE_MONEY :Darovat pen<65>ze
STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Napsat vsem
STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Napsat spolecnosti
STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Soukrom<6F> zpr<70>va
STR_NETWORK_SEND :{BLACK}Poslat
############ end network gui strings
@@ -1393,34 +1259,34 @@ STR_0800_COST :{TINYFONT}{RED}Cena: {CURRENCY}
STR_0801_COST :{RED}Cena: {CURRENCY}
STR_0802_INCOME :{TINYFONT}{GREEN}Prijem: {CURRENCY}
STR_0803_INCOME :{GREEN}Prijem: {CURRENCY}
STR_0804_ESTIMATED_COST :{TINYFONT}{WHITE}Odhadovan<EFBFBD> cena: {CURRENCY}
STR_0805_ESTIMATED_COST :{WHITE}Odhadovan<EFBFBD> cena: {CURRENCY}
STR_0806_ESTIMATED_INCOME :{TINYFONT}{WHITE}Odhadovan<EFBFBD> prijem: {CURRENCY}
STR_0807_ESTIMATED_INCOME :{WHITE}Odhadovan<EFBFBD> prijem: {CURRENCY}
STR_0808_CAN_T_RAISE_LAND_HERE :{WHITE}Zde nemohu zvednout zemi...
STR_0809_CAN_T_LOWER_LAND_HERE :{WHITE}Zde nemohu snizit zemi...
STR_080A_ROCKS :Kamen<EFBFBD>
STR_080B_ROUGH_LAND :Hrbolat<EFBFBD> zeme
STR_080C_BARE_LAND :Pr<EFBFBD>zdn<EFBFBD> zeme
STR_080D_GRASS :Travnat<EFBFBD> zeme
STR_0804_ESTIMATED_COST :{TINYFONT}{WHITE}Odhadovana cena: {CURRENCY}
STR_0805_ESTIMATED_COST :{WHITE}Odhadovana cena: {CURRENCY}
STR_0806_ESTIMATED_INCOME :{TINYFONT}{WHITE}Odhadovany prijem: {CURRENCY}
STR_0807_ESTIMATED_INCOME :{WHITE}Odhadovany prijem: {CURRENCY}
STR_0808_CAN_T_RAISE_LAND_HERE :{WHITE}Nemohu zde zvednout zemi...
STR_0809_CAN_T_LOWER_LAND_HERE :{WHITE}Nemohu zde snizit zemi...
STR_080A_ROCKS :Kameni
STR_080B_ROUGH_LAND :Hrbolata zeme
STR_080C_BARE_LAND :Prazdna zeme
STR_080D_GRASS :Travnata zeme
STR_080E_FIELDS :Pole
STR_080F_SNOW_COVERED_LAND :Zasnezena zeme
STR_0810_DESERT :Poust
##id 0x1000
STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Zeme sklonena nespr<EFBFBD>vn<EFBFBD>m smerem
STR_1001_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Nemozna kombinace kolej<EFBFBD>
STR_1002_EXCAVATION_WOULD_DAMAGE :{WHITE}<EFBFBD>prava ter<EFBFBD>nu by poskodila tunel
STR_1003_ALREADY_AT_SEA_LEVEL :{WHITE}Jiz na <EFBFBD>rovni more
STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Zeme sklonena nespravnym smerem
STR_1001_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Nemozna kombinace koleji
STR_1002_EXCAVATION_WOULD_DAMAGE :{WHITE}Uprava terenu by poskodila tunel
STR_1003_ALREADY_AT_SEA_LEVEL :{WHITE}Jiz na urovni more
STR_1004_TOO_HIGH :{WHITE}Prilis vysoko
STR_1005_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Zadne pouzitelne koleje
STR_1006_TRAIN_INSIDE_DEPOT :{WHITE}Vlak v depu
STR_1007_ALREADY_BUILT :{WHITE}...jiz vystaveno
STR_1008_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Musis nejprve odstranit koleje
STR_1009_TOO_MANY_DEPOTS :{WHITE}Prilis mnoho dep
STR_100A_RAILROAD_CONSTRUCTION :{WHITE}V<EFBFBD>stavba kolej<EFBFBD>
STR_100B_MONORAIL_CONSTRUCTION :{WHITE}V<EFBFBD>stavba monorailu
STR_100C_MAGLEV_CONSTRUCTION :{WHITE}V<EFBFBD>stavba maglevu
STR_100A_RAILROAD_CONSTRUCTION :{WHITE}Vystavba koleji
STR_100B_MONORAIL_CONSTRUCTION :{WHITE}Vystavba monorailu
STR_100C_MAGLEV_CONSTRUCTION :{WHITE}Vystavba maglevu
STR_100D_SELECT_RAIL_BRIDGE :{WHITE}Zvolit zeleznicni most
STR_100E_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Zde nemohu postavit depo...
STR_100F_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Zde nemohu postavit nadrazi...
@@ -1429,9 +1295,9 @@ STR_1011_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Zde nemohu postavit koleje...
STR_1012_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Nemohu odsud odstranit koleje...
STR_1013_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Nemohu odsud odstranit semafory...
STR_1014_TRAIN_DEPOT_ORIENTATION :{WHITE}Orientace vlakoveho depa
STR_1015_RAILROAD_CONSTRUCTION :V<EFBFBD>stavba kolej<EFBFBD>
STR_1016_MONORAIL_CONSTRUCTION :V<EFBFBD>stavba monorailu
STR_1017_MAGLEV_CONSTRUCTION :V<EFBFBD>stavba maglevu
STR_1015_RAILROAD_CONSTRUCTION :Vystavba koleji
STR_1016_MONORAIL_CONSTRUCTION :Vystavba monorailu
STR_1017_MAGLEV_CONSTRUCTION :Vystavba maglevu
STR_1018_BUILD_RAILROAD_TRACK :{BLACK}Polozit koleje
STR_1019_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Postavit zeleznicni depo ( pro nakup a servis vlaku )
STR_101A_BUILD_RAILROAD_STATION :{BLACK}Postavit nadrazi
@@ -1455,7 +1321,7 @@ STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Zeleznicni trat s kombinovanymi signaly
##id 0x1800
STR_1800_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Nespravny sklon zeme pro silnici
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Musis nejprve odstranit silnici
STR_1802_ROAD_CONSTRUCTION :{WHITE}V<EFBFBD>stavba silnic
STR_1802_ROAD_CONSTRUCTION :{WHITE}Vystavba silnic
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Zvolit silnicni most
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Zde nemohu postavit silnici...
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Nemohu odsud odstranit silnici
@@ -1463,7 +1329,7 @@ STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Orientace garaze
STR_1807_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Tady nejde postavit garaz
STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}Nemohu postavit autobusovou stanici...
STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}Nemohu postavit nakladovou rampu...
STR_180A_ROAD_CONSTRUCTION :V<EFBFBD>stavba silnic
STR_180A_ROAD_CONSTRUCTION :Vystavba silnic
STR_180B_BUILD_ROAD_SECTION :{BLACK}Postavit silnici
STR_180C_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Postavit garaz (pro nakup a servis vozidel)
STR_180D_BUILD_BUS_STATION :{BLACK}Postavit autobusovou stanici
@@ -1781,51 +1647,51 @@ STR_INDUSTRY_PROD_GODOWN :{BLACK}{BIGFONT}Produkce {STRING} v {TOWN} {STRING
STR_5000_TRAIN_IN_TUNNEL :{WHITE}Vlak v tunelu
STR_5001_ROAD_VEHICLE_IN_TUNNEL :{WHITE}Silnicni vozidlo v tunelu
STR_5002 :
STR_5003_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}V ceste je jin<EFBFBD> tunel
STR_5003_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}V ceste je jiny tunel
STR_5004 :
STR_5005_UNABLE_TO_EXCAVATE_LAND :{WHITE}Nemohu vyrovnat zemi na druh<EFBFBD>m konci tunelu
STR_5005_UNABLE_TO_EXCAVATE_LAND :{WHITE}Nemohu vyrovnat zemi na druhem konci tunelu
STR_5006_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Nutno nejprve znicit tunel
STR_5007_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Nutno nejprve znicit most
STR_5008_CANNOT_START_AND_END_ON :{WHITE}Nelze zacit a skoncit na stejn<EFBFBD>m miste
STR_5009_LEVEL_LAND_OR_WATER_REQUIRED :{WHITE}Pod mostem je nutn<EFBFBD> rovn<EFBFBD> zeme nebo voda
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Zacatek a konec mus<EFBFBD> b<EFBFBD>t ve stejn<6A> vysce
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}M<EFBFBD>sto nevhodn<EFBFBD> pro vjezd do tunelu
STR_5008_CANNOT_START_AND_END_ON :{WHITE}Nelze zacit a skoncit na stejnem miste
STR_5009_LEVEL_LAND_OR_WATER_REQUIRED :{WHITE}Pod mostem je nutna rovna zeme nebo voda
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Zacatek a konec musi byt v jedne vysce
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Misto nevhodne pro vjezd do tunelu
STR_500C :
STR_500D :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
STR_500E_SUSPENSION_STEEL :Zaveseny, ocelov<EFBFBD>
STR_500F_GIRDER_STEEL :Tr<EFBFBD>mov<EFBFBD>, ocelov<EFBFBD>
STR_5010_CANTILEVER_STEEL :Konzolov<EFBFBD>, ocelov<EFBFBD>
STR_5011_SUSPENSION_CONCRETE :Zaveseny, betonov<EFBFBD>
STR_500E_SUSPENSION_STEEL :Zaveseny, Ocelovy
STR_500F_GIRDER_STEEL :Tramovy, Ocelovy
STR_5010_CANTILEVER_STEEL :Konzolovy, Ocelovy
STR_5011_SUSPENSION_CONCRETE :Zaveseny, Betonovy
STR_5012_WOODEN :Dreveny
STR_5013_CONCRETE :Betonov<EFBFBD>
STR_5014_TUBULAR_STEEL :Potrubn<EFBFBD>, ocelov<EFBFBD>
STR_BRIDGE_TUBULAR_SILICON :Potrubn<EFBFBD>, kremikovy
STR_5013_CONCRETE :Betonovy
STR_5014_TUBULAR_STEEL :Potrubni, Ocelovy
STR_BRIDGE_TUBULAR_SILICON :Potrubni, Kremikovy
STR_5015_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Zde nelze postavit most...
STR_5016_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Zde nelze postavit tunel...
STR_5016_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Zde nelze postavit most...
STR_5017_RAILROAD_TUNNEL :Zeleznicni tunel
STR_5018_ROAD_TUNNEL :Silnicni tunel
STR_5019 :
STR_501A :
STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE :Ocelov<EFBFBD> zaveseny zeleznicni most
STR_501C_STEEL_GIRDER_RAIL_BRIDGE :Ocelov<EFBFBD> tr<EFBFBD>mov<EFBFBD> zeleznicni most
STR_501D_STEEL_CANTILEVER_RAIL_BRIDGE :Ocelov<EFBFBD> konzolov<EFBFBD> zeleznicni most
STR_501E_REINFORCED_CONCRETE_SUSPENSION :Zpevneny betonov<EFBFBD> zaveseny zeleznicni most
STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE :Ocelovy zaveseny zeleznicni most
STR_501C_STEEL_GIRDER_RAIL_BRIDGE :Ocelovy tramovy zeleznicni most
STR_501D_STEEL_CANTILEVER_RAIL_BRIDGE :Ocelovy konzolovy zeleznicni most
STR_501E_REINFORCED_CONCRETE_SUSPENSION :Zpevneny betonovy zaveseny zeleznicni most
STR_501F_WOODEN_RAIL_BRIDGE :Dreveny zeleznicni most
STR_5020_CONCRETE_RAIL_BRIDGE :Betonov<EFBFBD> zeleznicni most
STR_5021_STEEL_SUSPENSION_ROAD_BRIDGE :Ocelov<EFBFBD> zaveseny silnicni most
STR_5022_STEEL_GIRDER_ROAD_BRIDGE :Ocelov<EFBFBD> tr<EFBFBD>mov<EFBFBD> silnicni most
STR_5023_STEEL_CANTILEVER_ROAD_BRIDGE :Ocelov<EFBFBD> konzolov<EFBFBD> silnicni most
STR_5024_REINFORCED_CONCRETE_SUSPENSION :Zpevneny betonov<EFBFBD> zaveseny silnicni most
STR_5020_CONCRETE_RAIL_BRIDGE :Betonovy zeleznicni most
STR_5021_STEEL_SUSPENSION_ROAD_BRIDGE :Ocelovy zaveseny silnicni most
STR_5022_STEEL_GIRDER_ROAD_BRIDGE :Ocelovy tramovy silnicni most
STR_5023_STEEL_CANTILEVER_ROAD_BRIDGE :Ocelovy konzolovy silnicni most
STR_5024_REINFORCED_CONCRETE_SUSPENSION :Zpevneny betonovy zaveseny silnicni most
STR_5025_WOODEN_ROAD_BRIDGE :Dreveny silnicni most
STR_5026_CONCRETE_ROAD_BRIDGE :Betonov<EFBFBD> silnicni most
STR_5027_TUBULAR_RAIL_BRIDGE :Potrubn<EFBFBD> zeleznicni most
STR_5028_TUBULAR_ROAD_BRIDGE :Potrubn<EFBFBD> silnicni most
STR_5029_STEEL :Ocelov<EFBFBD>
STR_5026_CONCRETE_ROAD_BRIDGE :Betonovy silnicni most
STR_5027_TUBULAR_RAIL_BRIDGE :Potrubni zeleznicni most
STR_5028_TUBULAR_ROAD_BRIDGE :Potrubni silnicni most
STR_5029_STEEL :Ocelovy
##id 0x5800
STR_5800_OBJECT_IN_THE_WAY :{WHITE}V ceste je objekt
STR_5801_TRANSMITTER :Vysilac
STR_5802_LIGHTHOUSE :Maj<EFBFBD>k
STR_5802_LIGHTHOUSE :Majak
STR_5803_COMPANY_HEADQUARTERS :Reditelstvi spolecnosti
STR_5804_COMPANY_HEADQUARTERS_IN :{WHITE}...v ceste je reditelstvi spolecnosti
STR_5805_COMPANY_OWNED_LAND :Puda vlastnena spolecnosti
@@ -1846,18 +1712,18 @@ STR_SV_AIRCRAFT_NAME :Letadlo {COMMA16}
STR_SV_STNAME :{STRING}
STR_SV_STNAME_NORTH :{STRING} sever
STR_SV_STNAME_SOUTH :{STRING} jih
STR_SV_STNAME_EAST :{STRING} v<EFBFBD>chod
STR_SV_STNAME_WEST :{STRING} z<EFBFBD>pad
STR_SV_STNAME_EAST :{STRING} vychod
STR_SV_STNAME_WEST :{STRING} zapad
STR_SV_STNAME_CENTRAL :{STRING} stred
STR_SV_STNAME_TRANSFER :{STRING} prestupni
STR_SV_STNAME_HALT :{STRING} zast<EFBFBD>vka
STR_SV_STNAME_VALLEY :{STRING} <EFBFBD>dol<EFBFBD>
STR_SV_STNAME_HALT :{STRING} zastavka
STR_SV_STNAME_VALLEY :{STRING} udoli
STR_SV_STNAME_HEIGHTS :{STRING} vysina
STR_SV_STNAME_WOODS :{STRING} poles<EFBFBD>
STR_SV_STNAME_WOODS :{STRING} polesi
STR_SV_STNAME_LAKESIDE :{STRING} jezero
STR_SV_STNAME_EXCHANGE :{STRING} centr<EFBFBD>la
STR_SV_STNAME_EXCHANGE :{STRING} centrala
STR_SV_STNAME_AIRPORT :{STRING} letiste
STR_SV_STNAME_OILFIELD :{STRING} ropn<EFBFBD> plosina
STR_SV_STNAME_OILFIELD :{STRING} ropna plosina
STR_SV_STNAME_MINES :{STRING} doly
STR_SV_STNAME_DOCKS :{STRING} pristav
STR_SV_STNAME_BUOY_1 :{STRING} bojka 1
@@ -1870,7 +1736,7 @@ STR_SV_STNAME_BUOY_7 :{STRING} bojka 7
STR_SV_STNAME_BUOY_8 :{STRING} bojka 8
STR_SV_STNAME_BUOY_9 :{STRING} bojka 9
STR_SV_STNAME_ANNEXE :{STRING} pripojne
STR_SV_STNAME_SIDINGS :{STRING} odstavn<EFBFBD>
STR_SV_STNAME_SIDINGS :{STRING} odstavne
STR_SV_STNAME_BRANCH :{STRING} odbocka
STR_SV_STNAME_UPPER :horni {STRING}
STR_SV_STNAME_LOWER :dolni {STRING}
@@ -1898,7 +1764,7 @@ STR_6808_NO_OF_INDUSTRIES :{LTBLUE}Mnozstvi prumyslu: {ORANGE}{STRING}
STR_6809_MAXIMUM_INITIAL_LOAN_000 :{LTBLUE}Maximalni pocatecni dluh: {ORANGE}{CURRENCY}
STR_680A_INITIAL_INTEREST_RATE :{LTBLUE}Pocatecni urokova sazba: {ORANGE}{COMMA16}%
STR_680B_VEHICLE_RUNNING_COSTS :{LTBLUE}Cena provozu vozidel: {ORANGE}{STRING}
STR_680C_CONSTRUCTION_SPEED_OF_COMPETITOR :{LTBLUE}Rychlost v<EFBFBD>stavby protivniku: {ORANGE}{STRING}
STR_680C_CONSTRUCTION_SPEED_OF_COMPETITOR :{LTBLUE}Rychlost stavby protivnika: {ORANGE}{STRING}
STR_680D_INTELLIGENCE_OF_COMPETITORS :{LTBLUE}Inteligence protivniku: {ORANGE}{STRING}
STR_680E_VEHICLE_BREAKDOWNS :{LTBLUE}Poruchy vozidel: {ORANGE}{STRING}
STR_680F_SUBSIDY_MULTIPLIER :{LTBLUE}Cinitel dotaci: {ORANGE}{STRING}
@@ -1954,7 +1820,7 @@ STR_683B_HOSTILE :zaujat
##id 0x7000
STR_7000 :
STR_7001 :{WHITE}{STRING} {BLACK}{STRING}
STR_7001 :{WHITE}{STRING}{BLACK}{STRING}
STR_7002_PLAYER :(hrac {COMMA16})
STR_7004_NEW_FACE :{BLACK}Nov<6F> oblicej
STR_7005_COLOR_SCHEME :{BLACK}Barva
@@ -1966,7 +1832,7 @@ STR_700A_COMPANY_NAME :Jm
STR_700B_PRESIDENT_S_NAME :Jm<4A>no prezidenta
STR_700C_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Nemohu zmenit jm<6A>no spolecnosti...
STR_700D_CAN_T_CHANGE_PRESIDENT :{WHITE}Nemohu zmenit jm<6A>no prezidenta...
STR_700E_FINANCES :{WHITE}{STRING} Finance {BLACK}{STRING}
STR_700E_FINANCES :{WHITE}{STRING} Finance{BLACK}{STRING}
STR_700F_EXPENDITURE_INCOME :{WHITE}Prijmy / v<>daje
STR_7010 :{WHITE}{NUMU16}
STR_7011_CONSTRUCTION :{GOLD}V<>stavba
@@ -2022,8 +1888,8 @@ STR_7040_SHIP :{WHITE}{COMMA16} lod
STR_7041_SHIPS :{WHITE}{COMMA16} lod<6F>
STR_7042_NONE :{WHITE}Nic
STR_7043_FACE_SELECTION :{WHITE}Volba tvare
STR_7044_MALE :{BLACK}Muzske
STR_7045_FEMALE :{BLACK}Zenske
STR_7044_MALE :{BLACK}Muz
STR_7045_FEMALE :{BLACK}Zena
STR_7046_NEW_FACE :{BLACK}Nov<6F> oblicej
STR_7047_CANCEL_NEW_FACE_SELECTION :{BLACK}Zrusit volbu noveho obliceje
STR_7048_ACCEPT_NEW_FACE_SELECTION :{BLACK}Potvrdit vyber obliceje
@@ -2067,13 +1933,10 @@ STR_706D_PRESIDENT :Prezident
STR_706E_TYCOON :Magn<67>t
STR_706F_BUILD_HQ :{BLACK}Reditelstvi
STR_7070_BUILD_COMPANY_HEADQUARTERS :{BLACK}Vybudovat reditelstvi spolecnosti / uk<75>zat reditelstvi spolecnosti
STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}S<>dlo spolecnosti muzes vystavit jinde za 1% jej<65> hodnoty
STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}S<>dlo spolecnosti se vystav<EFBFBD> jinde za 1% jej<65> hodnoty
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Nemohu postavit reditelstvi spolecnosti
STR_7072_VIEW_HQ :{BLACK}Reditelstvi
STR_RELOCATE_HQ :{BLACK}Presidlit
STR_COMPANY_PASSWORD :{BLACK}Heslo
STR_COMPANY_PASSWORD_TOOLTIP :{BLACK}Heslo - zabrante neautorizovanym uzivatelum v pripojeni se k vasi spolecnosti.
STR_SET_COMPANY_PASSWORD :Nastavte heslo spolecnosti.
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}Celosvetovy hospodarsky <20>padek!{}{}Financni experti se kvuli prudk<64>mu poklesu ekonomiky ob<6F>vaj<61> nejhorsiho!
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}Konec hospodarskeho <20>padku!{}{}Pos<6F>len<65> trhu zvysilo u prumyslu duveru!
STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Prepnout velke/male okno
@@ -2383,7 +2246,7 @@ STR_UNKNOWN_DESTINATION :nezn
STR_8812_EMPTY :{LTBLUE}Pr<50>zdn<64>
STR_8813_FROM :{LTBLUE}{CARGO} z {STATION}
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Vlak {COMMA16} ceka v depu
STR_8815_NEW_VEHICLES :{BLACK}Nov<6F> vozidla
STR_8815_NEW_VEHICLES :{BLACK}Nov<6F> vlaky
STR_8816 :{BLACK}-
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Cena: {GOLD}{CURRENCY}{BLACK} Hmotnost: {GOLD}{COMMA16}t{}{BLACK}Rychlost: {GOLD}{VELOCITY}{BLACK} V<>kon: {GOLD}{COMMA16} kon<6F>{}{BLACK}Provoz stoj<6F>: {GOLD}{CURRENCY} rocne{}{BLACK}Kapacita: {GOLD}{STRING}{}{BLACK}Vyvinuto: {GOLD}{NUMU16}{BLACK} Zivotnost: {GOLD}{COMMA16} let{}{BLACK}Max. spolehlivost: {GOLD}{COMMA8}%
STR_8818_INFORMATION :{BLACK}Informace
@@ -2410,7 +2273,7 @@ STR_882B_CAN_T_BUILD_RAILROAD_VEHICLE :{WHITE}Nemohu koupit vagon/lokomotivu.
STR_882C_BUILT_VALUE :{LTBLUE}{STRING}{BLACK} Koupeno: {LTBLUE}{NUMU16}{BLACK} Hodnota: {LTBLUE}{CURRENCY}
STR_882D_VALUE :{LTBLUE}{STRING}{BLACK} Hodnota: {LTBLUE}{CURRENCY}
STR_882E :{WHITE}{STRING}
STR_882F_LOADING_UNLOADING :{LTBLUE}Nakl<EFBFBD>d<EFBFBD>n<EFBFBD> / Vykl<6B>d<EFBFBD>n<EFBFBD>
STR_882F_LOADING_UNLOADING :{LTBLUE}N<EFBFBD>kl<EFBFBD>dan<EFBFBD> / Vykl<6B>d<EFBFBD>n<EFBFBD>
STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Nelze poslat vlak do depa...
STR_8831_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Nedostatek prostoru na prikazy
STR_8832_TOO_MANY_ORDERS :{WHITE}Prilis mnoho prikazu
@@ -2612,7 +2475,7 @@ STR_GO_TO_SHIP_DEPOT :Zajet do lodn
SERVICE_AT_SHIP_DEPOT :Udrzba v lodn<64>m depu {TOWN}
##id 0xA000
STR_A000_AIRPORTS :{WHITE}Letiste
STR_A000_AIRPORT_CONSTRUCT :{WHITE}Stavba letiste.
STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Zde nelze postavit letiste...
STR_A002_AIRCRAFT_HANGAR :{WHITE}{STATION} Letistni hang<6E>r
STR_A003_NEW_AIRCRAFT :{BLACK}Nov<6F> letadla
@@ -2631,8 +2494,8 @@ STR_A00F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Prijem tento rok: {LTBLUE}{CURREN
STR_A010_RELIABILITY_BREAKDOWNS :{BLACK}Spolehlivost: {LTBLUE}{COMMA8}% {BLACK}Poruch od posledn<64>ho servisu: {LTBLUE}{COMMA16}
STR_A011_BUILT_VALUE :{LTBLUE}{STRING}{BLACK} Koupeno: {LTBLUE}{NUMU16}{BLACK} Cena: {LTBLUE}{CURRENCY}
STR_A012_CAN_T_SEND_AIRCRAFT_TO :{WHITE}Nelze poslat letadlo do hang<6E>ru...
STR_HEADING_FOR_HANGAR :{LTBLUE}Jedu do hang<6E>ru {STATION}
STR_HEADING_FOR_HANGAR_VEL :{LTBLUE}Jedu do hang<6E>ru {STATION}, {VELOCITY}
STR_HEADING_FOR_HANGAR :{LTBLUE}Mirim do hang<6E>ru {STATION}
STR_HEADING_FOR_HANGAR_VEL :{LTBLUE}Mirim do hang<6E>ru {STATION}, {VELOCITY}
STR_A014_AIRCRAFT_IS_WAITING_IN :{WHITE}Letadlo {COMMA16} ceka v hang<6E>ru
STR_A015_AIRCRAFT_IN_THE_WAY :{WHITE}Letadlo v ceste
STR_A016_CAN_T_STOP_START_AIRCRAFT :{WHITE}Nemohu rozjet/zastavit letadlo...
@@ -2700,8 +2563,8 @@ STR_MULTIPLAYER_PAUSED :{WHITE}Hra je v pauze.{}Prikaz nemuze b
STR_PERFORMANCE_DETAIL :{WHITE}Podrobn<62> hodnocen<65> v<>konu
STR_PERFORMANCE_DETAIL_KEY :{BLACK}Podrobne
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA32}/{COMMA32})
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}{TINYFONT}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}{TINYFONT}({INT32}/{INT32})
STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{INT32}%
SET_PERFORMANCE_DETAIL_INT :{BLACK}{INT32}
############ Those following lines need to be in this order!!
@@ -2716,46 +2579,14 @@ STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Hotovost:
STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Dluh:
STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Celkem:
############ End of order list
STR_PERFORMANCE_DETAIL_VEHICLES_TIP :{BLACK}Pocet dopravn<76>ch prostredku, tzn. silnicnich vozidel, vlaku, lod<6F> a letadel
STR_PERFORMANCE_DETAIL_STATIONS_TIP :{BLACK}Pocet soucasti stanic. Kazda soucast stanice (napr. nadrazi, autobusov<6F> zast<73>vka, letiste) se zapocitava, i kdyz patri jedin<69> stanici
STR_PERFORMANCE_DETAIL_VEHICLES_TIP :{BLACK}Pocet dopravn<76>ch prostredku, tzn. silnicnich vozidel, vlaku, lod<6F> a letadel.
STR_PERFORMANCE_DETAIL_STATIONS_TIP :{BLACK}Pocet soucasti stanic. Kazda soucast stanice (napr. nadrazi, autobusov<6F> zast<73>vky, letiste) se zapocitava, i kdyz patri jedin<69> stanici.
STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP :{BLACK}Minim<69>ln<6C> hrub<75> zisk (= s provoz. n<>klady) vozidla s nejnizsim prijmem (starsiho 2 let)
STR_PERFORMANCE_DETAIL_MIN_INCOME_TIP :{BLACK}Cisty zisk (= bez provoz. nakladu) v nejslabsim mesici za posledn<64>ch 12 ctvrtleti
STR_PERFORMANCE_DETAIL_MAX_INCOME_TIP :{BLACK}Cisty zisk v mesici s nejvetsim prijmem za posledn<64>ch 12 ctvrtleti
STR_PERFORMANCE_DETAIL_DELIVERED_TIP :{BLACK}Pocet dorucenych jednotek n<>kladu za posledn<64> rok (4Q)
STR_PERFORMANCE_DETAIL_CARGO_TIP :{BLACK}Pocet dorucenych druhu n<>kladu za posledn<64> 3 mesice (1Q)
STR_PERFORMANCE_DETAIL_MONEY_TIP :{BLACK}Soucasna hotovost spolecnosti
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}M<EFBFBD> spolecnost velk<6C> dluh?
STR_PERFORMANCE_DETAIL_MAX_INCOME_TIP :{BLACK}Cisty zisk v mesici s nejvetsim prijmem za posledn<64>ch 12 ctvrtleti.
STR_PERFORMANCE_DETAIL_DELIVERED_TIP :{BLACK}Pocet dorucenych jednotek n<>kladu za posledn<64> rok (4Q).
STR_PERFORMANCE_DETAIL_CARGO_TIP :{BLACK}Pocet dorucenych druhu n<>kladu za posledn<64> 3 mesice (1Q).
STR_PERFORMANCE_DETAIL_MONEY_TIP :{BLACK}Tvoje soucasna hotovost
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Mas velk<6C> dluh?
STR_PERFORMANCE_DETAIL_TOTAL_TIP :{BLACK}Celkov<6F> pocet bodu z 1000 moznych
STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Nastaven<65> nov<6F>ch grafick<63>ch souboru
STR_NEWGRF_APPLY_CHANGES :{BLACK}Potvrdit zmeny
STR_NEWGRF_SET_PARAMETERS :{BLACK}Nastavit parametry
STR_NEWGRF_TIP :{BLACK}Tady je seznam vsech nainstalovan<61>ch grafick<63>ch setu. Nastaven<65> zmenite kliknut<75>m na set.
STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}Zadne soubory s novou grafikou nejsou nainstalov<6F>ny! Pro instrukce, jak nainstalovat nov<6F> grafick<63> soubory, se pod<6F>vejte se do manu<6E>lu.
STR_NEWGRF_FILENAME :{BLACK}Jm<4A>no souboru:
STR_NEWGRF_GRF_ID :{BLACK}ID GRF:
STR_CURRENCY_WINDOW :{WHITE}Vlastn<74> mena
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Kurz meny: {ORANGE}{CURRENCY} = {POUNDSIGN} {COMMA16}
STR_CURRENCY_SEPARATOR :{LTBLUE}Oddelovac:
STR_CURRENCY_PREFIX :{LTBLUE}Predpona:
STR_CURRENCY_SUFFIX :{LTBLUE}Pripona:
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Prechod k Euru: {ORANGE}{INT32}
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Prechod k Euru: {ORANGE}nikdy
STR_CURRENCY_PREVIEW :{LTBLUE}N<>hled: {ORANGE}{CURRENCY}
STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Zmenit parametry vlastn<74> meny
STR_TRAIN :{BLACK}{TRAIN}
STR_LORRY :{BLACK}{LORRY}
STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_SCHEDULED_TRAINS :{WHITE}{STATION} - {COMMA16} vlaku
STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA16} silnicnich vozidel
STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA16} letadel
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA16} lodi
STR_SCHEDULED_TRAINS_TIP :{BLACK}Zobrazit vsechny vlaky, kter<65> maj<61> tuto stanici v j<>zdn<64>m radu
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Zobrazit vsechna silnicni vozidla, kter<65> maj<61> tuto stanici v j<>zdn<64>m radu
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Zobrazit vsechna letadla, kter<65> maj<61> tuto stanici v j<>zdn<64>m radu
STR_SCHEDULED_SHIPS_TIP :{BLACK}Zobrazit vsechny lode, kter<65> maj<61> tuto stanici v j<>zdn<64>m radu

View File

@@ -25,13 +25,13 @@ STR_0013_LIVESTOCK :Kv
STR_0014_GOODS :Stykgods
STR_0015_GRAIN :Korn
STR_0016_WOOD :Tr<54>
STR_0017_IRON_ORE :Jernmalm
STR_0017_IRON_ORE :Jern Malm
STR_0018_STEEL :St<53>l
STR_0019_VALUABLES :V<>rdigenstande
STR_001A_COPPER_ORE :Kobbermalm
STR_0019_VALUABLES :V<>rdigendstande
STR_001A_COPPER_ORE :Kobber Malm
STR_001B_MAIZE :Majs
STR_001C_FRUIT :Frugt
STR_001D_DIAMONDS :Diamander
STR_001D_DIAMONDS :Diamands
STR_001E_FOOD :Mad
STR_001F_PAPER :Papir
STR_0020_GOLD :Guld
@@ -57,10 +57,10 @@ STR_0033_LIVESTOCK :Kv
STR_0034_GOODS :Stykgods
STR_0035_GRAIN :Korn
STR_0036_WOOD :Tr<54>
STR_0037_IRON_ORE :Jernmalm
STR_0037_IRON_ORE :Jern Malm
STR_0038_STEEL :St<53>l
STR_0039_VALUABLES :V<>rdigendstand
STR_003A_COPPER_ORE :Kobbermalm
STR_003A_COPPER_ORE :Kobber Malm
STR_003B_MAIZE :Majs
STR_003C_FRUIT :Frugt
STR_003D_DIAMOND :Diamand
@@ -89,10 +89,10 @@ STR_0053_ITEM_OF_LIVESTOCK :{COMMA16} stk. kv
STR_0054_CRATE_OF_GOODS :{COMMA16} kasse gods
STR_0055_TON_OF_GRAIN :{COMMA16} ton korn
STR_0056_TON_OF_WOOD :{COMMA16} ton tr<74>
STR_0057_TON_OF_IRON_ORE :{COMMA16} ton jernmalm
STR_0057_TON_OF_IRON_ORE :{COMMA16} ton jern malm
STR_0058_TON_OF_STEEL :{COMMA16} ton st<73>l
STR_0059_BAG_OF_VALUABLES :{COMMA16} s<>k v<>rdigendstande
STR_005A_TON_OF_COPPER_ORE :{COMMA16} tons kobbermalm
STR_005A_TON_OF_COPPER_ORE :{COMMA16} tons kobber malm
STR_005B_TON_OF_MAIZE :{COMMA16} ton majs
STR_005C_TON_OF_FRUIT :{COMMA16} ton frugt
STR_005D_BAG_OF_DIAMONDS :{COMMA16} s<>k diamanter
@@ -121,10 +121,10 @@ STR_0073_ITEMS_OF_LIVESTOCK :{COMMA16} stk. kv
STR_0074_CRATES_OF_GOODS :{COMMA16} kasser gods
STR_0075_TONS_OF_GRAIN :{COMMA16} tons korn
STR_0076_TONS_OF_WOOD :{COMMA16} tons tr<74>
STR_0077_TONS_OF_IRON_ORE :{COMMA16} tons jernmalm
STR_0077_TONS_OF_IRON_ORE :{COMMA16} tons jern malm
STR_0078_TONS_OF_STEEL :{COMMA16} tons st<73>l
STR_0079_BAGS_OF_VALUABLES :{COMMA16} s<>kke v<>rdigendstande
STR_007A_TONS_OF_COPPER_ORE :{COMMA16} tons kobbermalm
STR_007A_TONS_OF_COPPER_ORE :{COMMA16} tons kobber malm
STR_007B_TONS_OF_MAIZE :{COMMA16} tons majs
STR_007C_TONS_OF_FRUIT :{COMMA16} tons frugt
STR_007D_BAGS_OF_DIAMONDS :{COMMA16} s<>kke diamanter
@@ -145,7 +145,36 @@ STR_008B_BATTERIES :{COMMA16} batterier
STR_008C_OF_PLASTIC :{VOLUME} plastik
STR_008D_FIZZY_DRINKS :{COMMA16} sodavand
STR_008E :
STR_008F_PS :{TINYFONT}PS
STR_0090_CL :{TINYFONT}CL
STR_0091_ML :{TINYFONT}ML
STR_0092_OL :{TINYFONT}OL
STR_0093_LV :{TINYFONT}LV
STR_0094_GD :{TINYFONT}GD
STR_0095_GR :{TINYFONT}GR
STR_0096_WD :{TINYFONT}WD
STR_0097_OR :{TINYFONT}OR
STR_0098_ST :{TINYFONT}ST
STR_0099_VL :{TINYFONT}VL
STR_009A_CO :{TINYFONT}CO
STR_009B_MZ :{TINYFONT}MZ
STR_009C_FT :{TINYFONT}FT
STR_009D_DM :{TINYFONT}DM
STR_009E_FD :{TINYFONT}FD
STR_009F_PR :{TINYFONT}PR
STR_00A0_GD :{TINYFONT}GD
STR_00A1_WR :{TINYFONT}WR
STR_00A2_WH :{TINYFONT}WH
STR_00A3_RB :{TINYFONT}RB
STR_00A4_SG :{TINYFONT}SG
STR_00A5_TY :{TINYFONT}TY
STR_00A6_SW :{TINYFONT}SW
STR_00A7_CL :{TINYFONT}CL
STR_00A8_CF :{TINYFONT}CF
STR_00A9_BU :{TINYFONT}BU
STR_00AA_TF :{TINYFONT}TF
STR_00AB_BA :{TINYFONT}BA
STR_00AC_PL :{TINYFONT}PL
STR_00AD_FZ :{TINYFONT}FZ
STR_00AE :{WHITE}{DATE_SHORT}
STR_00AF :{WHITE}{DATE_LONG}
@@ -200,7 +229,7 @@ STR_00E4_LOCATION :{BLACK}Placering
STR_00E5_CONTOURS :Konturer
STR_00E6_VEHICLES :K<>ret<65>jer
STR_00E7_INDUSTRIES :Industrier
STR_00E8_ROUTES :Ruter
STR_00E8_ROUTES :Router
STR_00E9_VEGETATION :Vegetation
STR_00EA_OWNERS :Ejere
STR_00EB_ROADS :{BLACK}{TINYFONT}Veje
@@ -217,7 +246,7 @@ STR_00F5_TRAINS :{BLACK}{TINYFONT}Toge
STR_00F6_ROAD_VEHICLES :{BLACK}{TINYFONT}Lastbiler
STR_00F7_SHIPS :{BLACK}{TINYFONT}Skibe
STR_00F8_AIRCRAFT :{BLACK}{TINYFONT}Fly
STR_00F9_TRANSPORT_ROUTES :{BLACK}{TINYFONT}Transport Ruter
STR_00F9_TRANSPORT_ROUTES :{BLACK}{TINYFONT}Transport Router
STR_00FA_COAL_MINE :{BLACK}{TINYFONT}Kulmine
STR_00FB_POWER_STATION :{BLACK}{TINYFONT}Kraftv<74>rk
STR_00FC_FOREST :{BLACK}{TINYFONT}Skov
@@ -281,7 +310,6 @@ STR_0134_UNIX :Unix
STR_0135_OSX :OSX
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_0139_IMPERIAL_MILES :Imperial (miles)
STR_013A_METRIC_KILOMETERS :Meter (kilometer)
@@ -314,7 +342,6 @@ STR_0157_PERFORMANCE_HISTORY_GRAPH :Graf over pr
STR_0158_COMPANY_VALUE_GRAPH :Graf over selskabsv<73>rdi
STR_0159_CARGO_PAYMENT_RATES :Graf over last udbetalingsrater
STR_015A_COMPANY_LEAGUE_TABLE :Selskabsoversigt
STR_PERFORMANCE_DETAIL_MENU :Pr<50>stations oversigt
############ range for menu ends
STR_015B_OPENTTD :{WHITE}OpenTTD
@@ -324,14 +351,9 @@ STR_015E_QUIT_GAME :Afslut Spil
STR_015F_QUIT :Afslut
STR_0160_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Er du sikker p<> du vil afslutte dette spil ?
STR_0161_QUIT_GAME :{WHITE}Afslut Spil
STR_SORT_ORDER_TIP :{BLACK}V<>lg sorteringsorden (faldende/stigende)
STR_SORT_CRITERIA_TIP :{BLACK}V<>lg sortering kriterie
STR_SORT_TIP :{BLACK}V<>lg sorteringsorden
SRT_SORT_BY :{BLACK}Sorter efter
STR_SORT_BY_POPULATION :{BLACK}Indbyggertal
STR_SORT_BY_PRODUCTION :{BLACK}Produktion
STR_SORT_BY_TYPE :{BLACK}Type
STR_SORT_BY_TRANSPORTED :{BLACK}Transporteret
STR_SORT_BY_NAME :{BLACK}Navn
STR_SORT_BY_DROPDOWN_NAME :Navn
STR_SORT_BY_DATE :{BLACK}Dato
@@ -390,7 +412,6 @@ STR_0189 :{BLACK}{SMALLDOWNARROW}
STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Kan ikke <20>ndre service interval...
STR_018B_CLOSE_WINDOW :{BLACK}Luk vindue
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Vindue title - tr<74>k her for at flytte vindue
STR_STICKY_BUTTON :{BLACK}Marker dette vindue som ulukkeligt af 'Luk ALLE vinduer' tasten
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}nedriver bygning osv. p<> et stykke land
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}S<>nk et hj<68>rne af landet
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}H<>v et hj<68>rne af landet
@@ -410,7 +431,7 @@ STR_019A_YEARS :{COMMA16}
STR_019B_YEARS :{RED}{COMMA16} <20>r ({COMMA16})
############ range for service numbers ends
STR_019C_ROAD_VEHICLE :Vejk<EFBFBD>ret<EFBFBD>j
STR_019C_ROAD_VEHICLE :Lastbil
STR_019D_AIRCRAFT :Fly
STR_019E_SHIP :Skibe
STR_019F_TRAIN :Tog
@@ -469,8 +490,6 @@ STR_01CD_SELECT_TUTORIAL_DEMONSTRATION :{WHITE}V
STR_01CE_CARGO_ACCEPTED :{BLACK}Accepteret last: {LTBLUE}{STRING}
STR_01CF_CARGO_ACCEPTED :{BLACK}Accepteret last: {LTBLUE}{STRING}, {STRING}
STR_01D0_CARGO_ACCEPTED :{BLACK}Accepteret last: {LTBLUE}{STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_4 :{BLACK}Accepteret last: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_5 :{BLACK}Accepteret last: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}, {STRING}
############ range for cargo acecpted ends
STR_01D1_8 :({COMMA8}/8 {STRING})
@@ -513,7 +532,7 @@ STR_01F5_SELECT_NEW_STYLE_MUSIC :{BLACK}V
STR_01F6_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}V<>lg 'Custom 1' (brugerdefineret) programmet
STR_01F7_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Select 'Custom 2' (brugerdefineret) programmet
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Ryd det valgte program (G<>lder kun Custom1/Custom2)
STR_01F9_SAVE_MUSIC_SETTINGS :{BLACK}Gem ops<EFBFBD>tning for musik
STR_01F9_SAVE_MUSIC_SETTINGS_TO :{BLACK}Gem musik indstillinger til disken
STR_01FA_CLICK_ON_MUSIC_TRACK_TO :{BLACK}Klik p<> et musiknummer for at tilf<6C>je det til programlisten (Kun for Custom1/Custom2)
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Skift mellem tilf<6C>ldig afspilning af/p<>
STR_01FC_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Vis musiknummer valg vinduet
@@ -698,7 +717,7 @@ STR_02BC_VEHICLE_DESIGN_NAMES :{BLACK}K
STR_02BD :{BLACK}{STRING}
STR_02BE_DEFAULT :Standard
STR_02BF_CUSTOM :Brugerdefineret
STR_02C0_SAVE_CUSTOM_NAMES :{BLACK}Gem ikke standard navne
STR_02C0_SAVE_CUSTOM_NAMES_TO_DISK :{BLACK}Gem brugerdefinerede navne til disken
STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION :{BLACK}K<>ret<65>jsdesignnavne valg
STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Gem brugerdefinerede k<>ret<65>jsdesignnavne til disken
@@ -709,20 +728,16 @@ STR_02C5_DIFFICULTY_SETTINGS :Sv
STR_02C6_DIFFICULTY_SETTINGS :Sv<53>rhedsgrad
STR_02C7_CONFIG_PATCHES :Indstil patches
STR_02C8_CONFIG_PATCHES :Indstil patches
STR_NEWGRF_SETTINGS :Newgrf indstillinger
STR_NEWGRF_SETTINGS2 :Newgrf indstillinger
STR_GAMEOPTMENU_0A :
STR_GAMEOPTMENU_0B :
STR_CLOSE_ALL_WINDOWS :Luk ALLE vinduer
STR_CLOSE_ALL_WINDOWS2 :Luk ALLE vinduer
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Bynavne vist
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Bynavne vist
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Stationsnavne vist
STR_02CC_STATION_NAMES_DISPLAYED :{SETX 12}Stationsnavne vist
STR_02CD_SIGNS_DISPLAYED :{CHECKMARK}{SETX 12}Skilte vist
STR_02CE_SIGNS_DISPLAYED :{SETX 12}Skilte vist
STR_WAYPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Kontrolsteder vist
STR_WAYPOINTS_DISPLAYED2 :{SETX 12}Kontrolsteder vist
STR_CHECKPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Checkpoints vist
STR_CHECKPOINTS_DISPLAYED2 :{SETX 12}Checkpoints vist
STR_02CF_FULL_ANIMATION :{CHECKMARK}{SETX 12}Fuld animation
STR_02D0_FULL_ANIMATION :{SETX 12}Fuld animation
STR_02D1_FULL_DETAIL :{CHECKMARK}{SETX 12}Fuld detalje
@@ -745,13 +760,12 @@ STR_02DC_DISPLAY_SUBSIDIES :{BLACK}Vis specialaftaler
STR_02DD_SUBSIDIES :Specialaftaler
STR_02DE_MAP_OF_WORLD :Kort over verden
STR_EXTRA_VIEW_PORT :Flere lokalitetsvinduer
STR_02DF_TOWN_DIRECTORY :Byoversigt
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Lokalitetsvinduer {COMMA16}
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}G<> til lokalitetsvindue
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Hent lokalitet fra global visning
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Hent fra lokalitetsvindue
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Kopier lokaliteten af dette vindue til det globale vindue
STR_02DF_TOWN_DIRECTORY :Byoversigt
STR_02E0_CURRENCY_UNITS :{BLACK}Valutaenhed
STR_02E1 :{BLACK}{SKIP}{STRING}
STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}Valutaenhed selection
@@ -775,16 +789,16 @@ STR_02F8_EVERY_3_MONTHS :Hver 3. m
STR_02F9_EVERY_6_MONTHS :Hver 6. m<>ned
STR_02FA_EVERY_12_MONTHS :Hver 12. m<>ned
STR_02FB_START_A_NEW_GAME :{BLACK}Start et nyt spil
STR_02FC_LOAD_A_SAVED_GAME :{BLACK}Hent et gemt spil
STR_02FC_LOAD_A_SAVED_GAME_FROM :{BLACK}Hent et gemt spil fra disken
STR_02FD_VIEW_DEMONSTRATIONS_TUTORIALS :{BLACK}Se demonstrationer/tutorials
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}Lav en brugerdefineret verden/scenarie
STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}V<>lg singleplayer spil
STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}V<>lg flerspiller spil med 2-8 spillere
STR_0300_SELECT_TWO_PLAYER_GAME :{BLACK}V<>lg tospiller spil
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Vis spilindstillinger
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Vis sv<73>rhedsgrad indstillinger
STR_0303_START_A_NEW_GAME_USING :{BLACK}Start et nyt spil, med et brugerdefineret scenarie
STR_0304_QUIT :{BLACK}Afslut
STR_0305_QUIT_OPENTTD :{BLACK}Afslut 'OpenTTD'
STR_0305_LEAVE_OPENTTD :{BLACK}Forlad 'OpenTTD', og aflsut
STR_0306_VIEW_DEMONSTRATION_TUTORIAL :{BLACK}Se demonstration/tutorial
STR_0307_OPENTTD :{WHITE}OpenTTD {REV}
STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...kan kun bygges i byer
@@ -835,43 +849,35 @@ STR_TOWNNAME_POLISH :Polske
STR_TOWNNAME_SLOVAKISH :Slovakiske
STR_TOWNNAME_HUNGARIAN :Ungarske
STR_TOWNNAME_AUSTRIAN :<3A>strigske
STR_TOWNNAME_ROMANIAN :Rum<75>nske
STR_TOWNNAME_CZECH :Tjekkiske
############ end of townname region
STR_CURR_GBP :Pund ({POUNDSIGN})
STR_CURR_USD :Dollar ($)
STR_CURR_EUR :Euro (<28>)
STR_CURR_POUNDS :Pund ({POUNDSIGN})
STR_CURR_DOLLARS :Dollar ($)
STR_CURR_FF :Franc (FF)
STR_CURR_DM :Deutschmark (DM)
STR_CURR_YEN :Yen ({YENSIGN})
STR_CURR_PT :Peseta (Pt)
STR_CURR_FT :Ungarsk Forint (Ft)
STR_CURR_ZL :Polsk Zloty (zl)
STR_CURR_ATS :<3A>strisk Shilling (ATS)
STR_CURR_BEF :Belgisk Franc (BEF)
STR_CURR_CHF :Sweiziske Franc (CHF)
STR_CURR_CZK :Tjekkiske Koruna (CZK)
STR_CURR_DEM :Deutschmark (DEM)
STR_CURR_DKK :Danske Kroner (DKK)
STR_CURR_ESP :Peseta (ESP)
STR_CURR_FIM :Finske Markka (FIM)
STR_CURR_FRF :Franc (FRF)
STR_CURR_GRD :Gr<47>ske Drachmer (GRD)
STR_CURR_HUF :Ungarnske Forint (HUF)
STR_CURR_ISK :Islandske Kroner (ISK)
STR_CURR_ITL :Italienske Lire (ITL)
STR_CURR_CHF :Sweiziske Franc (CHF)
STR_CURR_NLG :Hollandske Guilder (NLG)
STR_CURR_NOK :Norske Kroner (NOK)
STR_CURR_PLN :Polske Zloty (PLN)
STR_CURR_ROL :Rum<75>nske Lei
STR_CURR_RUR :Russiske Rubel (rur)
STR_CURR_ITL :Italienske Lire (ITL)
STR_CURR_SEK :Svenske Kroner (SEK)
STR_CURR_CUSTOM :Brugerdefineret...
STR_CURR_RUR :Russiske Rubel (rur)
STR_CURR_CZK :Tjekkiske Koruna (CZK)
STR_CURR_ISK :Islandske Kroner (ISK)
STR_CURR_NOK :Norske Kroner (NOK)
STR_CURR_EUR :Euro (<28>)
STR_OPTIONS_LANG :{BLACK}Sprog
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_LANG_TIP :{BLACK}V<>lg sprog til brugerfladen
STR_OPTIONS_FULLSCREEN :{BLACK}Fuld sk<73>rm
STR_OPTIONS_FULLSCREEN_TIP :{BLACK}Afkryds for at spille OpenTTD i fuld sk<73>rm
STR_OPTIONS_RES :{BLACK}Sk<53>rmopl<70>sning
STR_OPTIONS_RES_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_RES_TIP :{BLACK}V<>lg sk<73>rmopl<70>sning
@@ -935,13 +941,8 @@ STR_SHIP_HAS_INVALID_ENTRY :{WHITE}Skib {COMMA16} har en ugyldig havn i sin
STR_AIRCRAFT_HAS_TOO_FEW_ORDERS :{WHITE}Fly {COMMA16} har for f<> ordre i sin flyveplan
STR_AIRCRAFT_HAS_VOID_ORDER :{WHITE}Fly {COMMA16} har en ugyldig ordre
STR_AIRCRAFT_HAS_DUPLICATE_ENTRY :{WHITE}Fly {COMMA16} har dobbelt ordre
STR_AIRCRAFT_HAS_INVALID_ENTRY :{WHITE}Fly {COMMA16} har en ugyldig station i sin flyveplan
# end of order system
STR_TRAIN_AUTORENEW_FAILED :{WHITE}Automatisk fornyelse mislykkedes p<> tog {COMMA16} (ikke penge nok)
STR_ROADVEHICLE_AUTORENEW_FAILED :{WHITE}Automatisk fornyelse mislykkedes p<> lastbil {COMMA16} (ikke penge nok)
STR_SHIP_AUTORENEW_FAILED :{WHITE}Automatisk fornyelse mislykkedes p<> skib {COMMA16} (ikke penge nok)
STR_AIRCRAFT_AUTORENEW_FAILED :{WHITE}Automatisk fornyelse mislykkedes p<> fly {COMMA16} (ikke penge nok)
STR_CONFIG_PATCHES :{BLACK}Indstil Patches
STR_CONFIG_PATCHES_TIP :{BLACK}Indstil Patchesne
@@ -951,14 +952,11 @@ STR_CONFIG_PATCHES_OFF :Fra
STR_CONFIG_PATCHES_ON :Til
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Vis k<>ret<65>jets fart i statusbaren: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Tillad bygning p<> skr<6B>ninger og kyster: {ORANGE}{STRING}
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Tillad mere realistisk st<73>rrelse p<> stationernes opland: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Tillad nedriving af industribygninger, flere veje, osv: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Aktiver bygning af meget lange tog: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Aktiver realistisk acceleration af tog: {ORANGE}{STRING}
STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Foren togstationer der bygges ved siden af hinanden: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FULLLOADANY :{LTBLUE}Forlad stationen hvis en slags last bliver fyldt, hvis 'fuld last': {ORANGE}{STRING}
STR_CONFIG_PATCHES_IMPROVEDLOAD :{LTBLUE}Brug forbedret indl<64>snings algoritme: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INFLATION :{LTBLUE}Inflation: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Aflever kun last til en station hvis der er en foresp<73>rgsel: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Tillad bygning af meget lange broer: {ORANGE}{STRING}
STR_CONFIG_PATCHES_GOTODEPOT :{LTBLUE}Tillad go til depot ordrer: {ORANGE}{STRING}
@@ -978,19 +976,9 @@ STR_CONFIG_PATCHES_NEW_TRAIN_PATHFIND :{LTBLUE}Ny stifindingsalgoritme til to
STR_CONFIG_PATCHES_SMALL_AIRPORTS :{LTBLUE}Tillad altid sm<73> lufthavne: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LOST_TRAIN_DAYS :{LTBLUE}Et tog er faret vild hvis der ikke er sket fremskridt i: {ORANGE}{STRING} dage
STR_CONFIG_PATCHES_LOST_TRAIN_DAYS_DISABLED :{LTBLUE}Et tog er faret vild hvis der ikke er sket fremskridt i: {ORANGE}deaktiveret
STR_CONFIG_PATCHES_ORDER_REVIEW :{LTBLUE}Kontroller k<>ret<65>jers ordreliste: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ORDER_REVIEW_OFF :Nej
STR_CONFIG_PATCHES_ORDER_REVIEW_EXDEPOT :Ja, p<> n<>r ved stoppet k<>ret<65>jer
STR_CONFIG_PATCHES_ORDER_REVIEW_ON :Ja, p<> alle k<>ret<65>jer
STR_CONFIG_PATCHES_LOST_TRAIN_DAYS :{LTBLUE}Et tog er v<EFBFBD>k hvis der ikke forekommer fremskridt inden for: {ORANGE}{STRING} dage
STR_CONFIG_PATCHES_WARN_INCOME_LESS :{LTBLUE}Advar hvis et tog har underskud: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEVER_EXPIRE_VEHICLES :{LTBLUE}K<>ret<65>jernes levealder udl<64>ber aldrig: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Automatisk fornyelse af k<>ret<65>jer n<>r de bliver gamle
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Automatisk fornyelse n<>r k<>ret<65>j er {ORANGE}{STRING}{LTBLUE} m<>neder under/over max alder
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Antal penge i banken f<>r automatisk fornyelse af k<>ret<65>jer: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Levetid for fejlmeddelser: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Usynlige tr<74>er (med gennemsigtige bygninger): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Snelinjeh<65>jden: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Max station udbreddelse: {ORANGE}{STRING} {RED}Advarsel: H<>j v<>rdi g<>r spillet langsomt
STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Automatisk service p<> helikopterlandingspladser: {ORANGE}{STRING}
@@ -1005,46 +993,28 @@ STR_CONFIG_PATCHES_AI_BUILDS_ROADVEH :{LTBLUE}Deaktiver lastbiler for compute
STR_CONFIG_PATCHES_AI_BUILDS_AIRCRAFT :{LTBLUE}Deaktiver fly for computeren: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AI_BUILDS_SHIPS :{LTBLUE}Deaktiver skibe for computeren: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AINEW_ACTIVE :{LTBLUE}Sl<53> den nye kunstige intelligents til (alpha): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SERVINT_TRAINS :{LTBLUE}Standard service interval for tog: {ORANGE}{STRING} dage/%
STR_CONFIG_PATCHES_SERVINT_TRAINS_DISABLED :{LTBLUE}Standard service interval for tog: {ORANGE}sl<EFBFBD>et fra
STR_CONFIG_PATCHES_SERVINT_ROADVEH :{LTBLUE}Standard service interval for vejk<EFBFBD>ret<EFBFBD>jer: {ORANGE}{STRING} dage/%
STR_CONFIG_PATCHES_SERVINT_ROADVEH_DISABLED :{LTBLUE}Standard service interval for vejk<EFBFBD>ret<EFBFBD>jer: {ORANGE}sl<73>et fra
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Standard service interval for fly: {ORANGE}{STRING} dage/%
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Standard service interval for fly: {ORANGE}sl<73>et fra
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Standard service interval for skibe: {ORANGE}{STRING} dage/%
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Standard service interval for skibe: {ORANGE}sl<73>et fra
STR_CONFIG_PATCHES_SERVINT_TRAINS :{LTBLUE}Standard serviceinterval for tog: {ORANGE}{STRING} dage
STR_CONFIG_PATCHES_SERVINT_ROADVEH :{LTBLUE}Standard serviceinterval for lastbiler: {ORANGE}{STRING} dage
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Standard serviceinterval for fly: {ORANGE}{STRING} dage
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Standard serviceinterval for skibe: {ORANGE}{STRING} dage
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Farvede nyheder dukker op i: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Start dato: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Aktiver rolig <20>konomi (flere sm<73> <20>ndringer)
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}When dragging place signals every: {ORANGE}{STRING} tile(s)
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Placering af v<>rkt<6B>jslinie: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Venstre
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :Center
STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT :H<>jre
STR_CONFIG_PATCHES_SNAP_RADIUS :{LTBLUE}Vinduernes sammenkoblings afstand: {ORANGE}{STRING} px
STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED :{LTBLUE}Vinduernes sammenkoblings afstand: {ORANGE}sl<73>et fra
STR_CONFIG_PATCHES_GUI :{BLACK}Brugerflade
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Konstruktion
STR_CONFIG_PATCHES_VEHICLES :{BLACK}K<>ret<65>jer
STR_CONFIG_PATCHES_STATIONS :{BLACK}Stationer
STR_CONFIG_PATCHES_ECONOMY :{BLACK}<7D>konomi
STR_CONFIG_PATCHES_AI :{BLACK}Modstandere
STR_CONFIG_PATCHES_DISABLED :deaktiveret
STR_CONFIG_PATCHES_INT32 :{INT32}
STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Skift indstillingsv<73>rdi
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Nogle eller alle standard service intervaller nedenunder er uforenelige med den valgte ops<70>tning! 5-90% og 30-800 dage er gyldige
STR_TEMPERATE_LANDSCAPE :Tempereret klima
STR_SUB_ARCTIC_LANDSCAPE :Arktisk klima
STR_SUB_TROPICAL_LANDSCAPE :Tropisk klima
STR_TOYLAND_LANDSCAPE :Leget<65>jsland
STR_CHEATS :{WHITE}Snydefunktioner
STR_CHEATS_TIP :{BLACK}Checkboxes viser om du bruger denne snydefunktion before
@@ -1054,47 +1024,30 @@ STR_CHEAT_CHANGE_PLAYER :{LTBLUE}Spil som spiller: {ORANGE}{COMMA16}
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magisk bulldozer (nedriv ting, som normalt ikke kan fjernes): {ORANGE}{STRING}
STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunneler kan krydse hinanden: {ORANGE}{STRING}
STR_CHEAT_BUILD_IN_PAUSE :{LTBLUE}Tillad at bygge mens pause er aktiveret: {ORANGE}{STRING}
STR_CHEAT_NO_JETCRASH :{LTBLUE}Jetfly vil ikke styrte (ofte) i sm<73> lufthavne: {ORANGE} {STRING}
STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}Skift klima: {ORANGE} {STRING}
STR_CHEAT_CHANGE_DATE :{LTBLUE}<7D>ndre dato: {ORANGE} {DATE_SHORT}
STR_HEADING_FOR_WAYPOINT :{LTBLUE}Retning mod {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Retning mod {WAYPOINT}, {VELOCITY}
STR_HEADING_FOR_CHECKPOINT :{LTBLUE}Retning mod {CHECKPOINT}
STR_HEADING_FOR_CHECKPOINT_VEL :{LTBLUE}Retning mod {CHECKPOINT}, {VELOCITY}
STR_GO_TO_WAYPOINT :Via {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT :K<>r uden stop via {WAYPOINT}
STR_GO_TO_CHECKPOINT :Via {CHECKPOINT}
STR_WAYPOINTNAME_CITY :Kontrolsted {TOWN}
STR_WAYPOINTNAME_CITY_SERIAL :Kontrolsted {TOWN} #{COMMA16}
STR_LANDINFO_WAYPOINT :Kontrolsted
STR_CHECKPOINTNAME_CITY :Checkpoint {TOWN}
STR_CHECKPOINTNAME_CITY_SERIAL :Checkpoint {TOWN} #{COMMA16}
STR_LANDINFO_CHECKPOINT :Checkpoint
STR_WAYPOINT :{WHITE}Kontrolsted
STR_WAYPOINT_GRAPHICS_TIP :{BLACK}V<>lg udsendene p<> kontrolsteder
STR_CHECKPOINT_VIEWPORT :{WHITE}{CHECKPOINT}
STR_CHECKPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{CHECKPOINT}
STR_CHECKPOINT_RAW :{CHECKPOINT}
STR_EDIT_CHECKPOINT_NAME :{WHITE}<7D>ndrer checkpointets navn
STR_WAYPOINT_VIEWPORT :{WHITE}{WAYPOINT}
STR_WAYPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{WAYPOINT}
STR_WAYPOINT_RAW :{WAYPOINT}
STR_EDIT_WAYPOINT_NAME :{WHITE}Omd<6D>b kontrolsted
STR_CANT_CHANGE_WAYPOINT_NAME :{WHITE}Kan ikke omd<6D>be kontrolsted...
STR_CONVERT_RAIL_TO_WAYPOINT_TIP :{BLACK}<7D>ndre jernbane til kontrolsted
STR_CANT_BUILD_TRAIN_WAYPOINT :{WHITE}Kan ikke bygge kontrolsted for tog her...
STR_CANT_REMOVE_TRAIN_WAYPOINT :{WHITE}Kan ikke fjerne kontrolsted for tog her...
STR_CANT_CHANGE_CHECKPOINT_NAME :{WHITE}Kan ikke <20>ndre checkpointets navn...
STR_CONVERT_RAIL_TO_CHECKPOINT_TIP :{BLACK}Konverter togskinner til checkpoint
STR_CANT_BUILD_TRAIN_CHECKPOINT :{WHITE}Kan ikke bygge et togcheckpoint her...
STR_CANT_REMOVE_TRAIN_CHECKPOINT :{WHITE}Kan ikke fjerne et togcheckpoint her...
STR_BUILD_AUTORAIL_TIP :{BLACK}Byg togskinner ved hj<68>lp af autotogskinner mode
STR_NO_TOWN_IN_SCENARIO :{WHITE}...der er ingen byer i dette scenarie
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Er du sikker p<>, at ud vil have lavet et tilf<6C>ldigt landskab?
STR_MANY_RANDOM_TOWNS :{BLACK}Mange tilf<6C>ldige byer
STR_RANDOM_TOWNS_TIP :{BLACK}D<>k kortet med tilf<6C>ldigt placeret byer
STR_MANY_RANDOM_INDUSTRIES :{BLACK}Mange tilf<6C>ldige industrier
STR_RANDOM_INDUSTRIES_TIP :{BLACK}D<>k kortet med tilf<6C>ldigt placeret industrier
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Kan ikke lave industrier...
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}<7D>ben landskabsarkitektursv<73>rkt<6B>jslinien for at h<>ve/s<>nke land, plante tr<74>er, osv.
STR_LANDSCAPING_TOOLBAR :{WHITE}Landskabsv<73>rkt<6B>jer
STR_LEVEL_LAND_TOOLTIP :{BLACK}Udj<64>vn land
STR_TREES_RANDOM_TYPE :{BLACK}Tr<54>er af tilf<6C>ldig type
@@ -1121,9 +1074,6 @@ STR_STATION_DRAG_DROP :{BLACK}Byg en station via tr
STR_FAST_FORWARD :{BLACK}K<>r spillet hurtigere
STR_MESSAGE_HISTORY :{WHITE}Tidligere beskeder
STR_MESSAGE_HISTORY_TIP :{BLACK}En liste of seneste nyheder
STR_MESSAGES_DISABLE_ALL :{BLACK}Sl<53> alle fra
STR_MESSAGES_ENABLE_ALL :{BLACK}Sl<53> alle til
STR_CONSTRUCT_COAL_MINE_TIP :{BLACK}Byg Kulmine
STR_CONSTRUCT_FOREST_TIP :{BLACK}Plant Skov
@@ -1147,7 +1097,6 @@ STR_CONSTRUCT_SUGAR_MINE_TIP :{BLACK}Byg Sukkermine
STR_INDUSTRYDIR_CAPTION :{WHITE}Industrier
STR_INDUSTRYDIR_ITEM :{ORANGE}{TOWN} {STRING}{BLACK} ({STRING}){YELLOW} ({COMMA16}% transporteret)
STR_INDUSTRYDIR_ITEM_TWO :{ORANGE}{TOWN} {STRING}{BLACK} ({STRING}/{STRING}){YELLOW} ({COMMA16}%/{COMMA16}% transported)
STR_INDUSTRYDIR_ITEM_NOPROD :{ORANGE}{TOWN} {STRING}
STR_INDUSTRY_TOO_CLOSE :{WHITE}...for t<>t p<> en anden industribygning
@@ -1160,201 +1109,22 @@ STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Ombyg toget til at k
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Kan ikke ombygge toget...
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Service intervaller er i procent: {ORANGE}{STRING}
TEMP_AI_IN_PROGRESS :{WHITE}Velkommen til den nye kunstige intelligents, der er under udarbejdelse. Du kan forvente problemer. N<>r det sker, s<> lav et screenshot og s<>t det p<> forummet
TEMP_AI_ACTIVATED :{WHITE}Advarsel: den nye kunstige intelligents er i et tidligt stadie! Lige nu virker den kun med busser og lastbiler!
############ network gui strings
STR_NETWORK_MULTIPLAYER :{WHITE}Netv<74>rksspil
STR_NETWORK_PLAYER_NAME :{BLACK}Spiller navn:
STR_NETWORK_ENTER_NAME_TIP :{BLACK}Dette er det navn, som andre spillere vil kende dig ved
STR_NETWORK_CONNECTION :{BLACK}Forbindelse:
STR_NETWORK_CONNECTION_TIP :{BLACK}V<>lg mellem et internet baseret eller et lokalnet baseret spil
STR_NETWORK_START_SERVER :{BLACK}Start server
STR_NETWORK_START_SERVER_TIP :{BLACK}Start en ny server
STR_NETWORK_GAME_NAME :{BLACK}Navn
STR_NETWORK_GAME_NAME_TIP :{BLACK}Spillets navn
STR_NETWORK_INFO_ICONS_TIP :{BLACK}Sprog, server version, osv.
STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Klik p<> et spil fra listen for at v<>lge det
STR_NETWORK_FIND_SERVER :{BLACK}Find server
STR_NETWORK_FIND_SERVER_TIP :{BLACK}S<>g netv<74>rket for en server
STR_NETWORK_ADD_SERVER :{BLACK}Tilf<6C>j server
STR_NETWORK_ADD_SERVER_TIP :{BLACK}Tilf<6C>j en server til listen, som altid vil blive checket for om den k<>rer et spil
STR_NETWORK_ENTER_IP :{BLACK}Skriv adressen p<> en server
STR_NETWORK_CLIENTS_ONLINE :{BLACK}{COMMA16}/{COMMA16}
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Klienter
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Klienter online / max klienter
STR_NETWORK_GAME_INFO :{SILVER}SPIL INFO
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Klienter: {WHITE}{COMMA8} / {COMMA8}
STR_NETWORK_LANGUAGE :{SILVER}Sprog: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Klima: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}St<53>rrelse: {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_SERVER_VERSION :{SILVER}Server version: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Server adresse: {WHITE}{STRING}
STR_NETWORK_START_DATE :{SILVER}Start dato: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Nuv<75>rende dato: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Beskyttet af kodeord!
STR_NETWORK_SERVER_OFFLINE :{SILVER}SERVEREN ER OFFLINE
STR_NETWORK_SERVER_FULL :{SILVER}SERVEREN ER FULD
STR_NETWORK_VERSION_MISMATCH :{SILVER}Din og serverens version passer ikke sammen
STR_NETWORK_JOIN_GAME :{BLACK}Tilslut dig et spil
STR_NETWORK_START_GAME_WINDOW :{WHITE}Start et nyt netv<74>rksspil
STR_NETWORK_NEW_GAME_NAME :{BLACK}Spillets navn:
STR_NETWORK_NEW_GAME_NAME_TIP :{BLACK}Navnet vil blive vist til andre spillere i menuen, hvor man v<>lger netv<74>rksspil
STR_NETWORK_SET_PASSWORD :{BLACK}Set kodeord
STR_NETWORK_PASSWORD_TIP :{BLACK}Beskyt dit spil med et kodeord hvis du ikke vil have fremmede med
STR_NETWORK_SELECT_MAP :{BLACK}V<>lg et kort:
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Hvilket kort vil du spille?
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Maksimalt antal tilladte klienter:
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}V<>lg det maksimale antal klienter. Det er ikke n<>dvendigt at fylde dem alle
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :LAN
STR_NETWORK_INTERNET :Internet
STR_NETWORK_LAN_INTERNET :LAN / Internet
STR_NETWORK_INTERNET_ADVERTISE :Internet (bekendtg<74>r spillet)
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_CLIENTS :2 klienter
STR_NETWORK_3_CLIENTS :3 klienter
STR_NETWORK_4_CLIENTS :4 klienter
STR_NETWORK_5_CLIENTS :5 klienter
STR_NETWORK_6_CLIENTS :6 klienter
STR_NETWORK_7_CLIENTS :7 klienter
STR_NETWORK_8_CLIENTS :8 klienter
STR_NETWORK_9_CLIENTS :9 klienter
STR_NETWORK_10_CLIENTS :10 klienter
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Talt sprog:
STR_NETWORK_LANGUAGE_TIP :{BLACK}Andre spillere vil vide hvilket sprog, der bliver talt p<> serveren
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_START_GAME :{BLACK}Start spillet
STR_NETWORK_START_GAME_TIP :{BLACK}Start et nyt netv<74>rksspil med et tilf<6C>ldigt kort eller et scenarie
STR_NETWORK_LOAD_GAME :{BLACK}Hent et spil
STR_NETWORK_LOAD_GAME_TIP :{BLACK}Fortsyt et tidligere gemt spil med flere spillere (s<>r for at f<> den rigtige virksomhed)
STR_NETWORK_LOAD_SCENARIO :{BLACK}Hent et scenarie
STR_NETWORK_LOAD_SCENARIO_TIP :{BLACK}Start et netv<74>rksspil fra et scenarie
############ Leave those lines in this order!!
STR_NETWORK_LANG_ANY :Hvilketsomhelst
STR_NETWORK_LANG_ENGLISH :Engelsk
STR_NETWORK_LANG_GERMAN :Tysk
STR_NETWORK_LANG_FRENCH :Fransk
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Netv<74>rksspils lobby
STR_NETWORK_PREPARE_TO_JOIN :{BLACK}Forbereder tilslutning: {ORANGE}{STRING}
STR_NETWORK_COMPANY_LIST_TIP :{BLACK}En liste over alle selskaber i spillet lige nu. Du kan enten tilslutte dig et eller starte et nyt, hvis der er plads til flere selskaber
STR_NETWORK_NEW_COMPANY :{BLACK}Ny virksomhed
STR_NETWORK_NEW_COMPANY_TIP :{BLACK}Lav en ny virksomhed
STR_NETWORK_SPECTATE_GAME :{BLACK}Tilskuer spil
STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Se et spil som tilskuer
STR_NETWORK_JOIN_COMPANY :{BLACK}Tilslut dig selskab
STR_NETWORK_JOIN_COMPANY_TIP :{BLACK}Help manage this company
STR_NETWORK_REFRESH :{BLACK}Genopfrisk serveren
STR_NETWORK_REFRESH_TIP :{BLACK}Genopfrisk server info
STR_NETWORK_COMPANY_INFO :{SILVER}VIRKSOMHEDSINFO
STR_NETWORK_COMPANY_NAME :{SILVER}Virksomhedens navn: {WHITE}{STRING}
STR_NETWORK_INAUGURATION_YEAR :{SILVER}Grundlagt: {WHITE}{NUMU16}
STR_NETWORK_VALUE :{SILVER}Virksomhedens v<>rdi: {WHITE}{CURRENCY64}
STR_NETWORK_CURRENT_BALANCE :{SILVER}Nuv<75>rende beholdning: {WHITE}{CURRENCY64}
STR_NETWORK_LAST_YEARS_INCOME :{SILVER}Sidste <20>rs indt<64>gt: {WHITE}{CURRENCY64}
STR_NETWORK_PERFORMANCE :{SILVER}Pr<50>station: {WHITE}{NUMU16}
STR_NETWORK_VEHICLES :{SILVER}K<>ret<65>jer: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_STATIONS :{SILVER}Stationer: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_PLAYERS :{SILVER}Spillere: {WHITE}{STRING}
STR_NETWORK_CONNECTING :{WHITE}Forbinder...
############ Leave those lines in this order!!
STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Forbinder..
STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Gdokender..
STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Venter..
STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Henter kort..
STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Behandler data..
STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registere..
STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Fetching game info..
STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Fetching company info..
############ End of leave-in-this-order
STR_NETWORK_CONNECTING_WAITING :{BLACK}{INT32} klient(er) foran dig
STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{INT32} / {INT32} kbytes hentet indtil videre
STR_NETWORK_DISCONNECT :{BLACK}Afbryd forbindelse
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Skrive den tekst, som du vil sende
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Skriv det bel<65>b, som du <20>nsker at give
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Serveren er beskyttet. Skriv kodeordet
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Virksomheden er beskyttet. Skriv kodeordet
STR_NETWORK_CLIENT_LIST :{WHITE}Klient Liste
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} Ingen netv<74>rksheder fundet eller kompilet uden ENABLE_NETWORK
STR_NETWORK_ERR_NOSERVER :{WHITE} Kunne ikke finde nogen netv<74>rksspil
STR_NETWORK_ERR_NOCONNECTION :{WHITE} Serveren besvarede ikke denne forsp<73>rgsel
STR_NETWORK_ERR_DESYNC :{WHITE} Netv<74>rks synkroniseringsfejl
STR_NETWORK_ERR_LOSTCONNECTION :{WHITE} Netv<74>rksforbindelse mistet
STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE} Kunne ikke hente gemt spil
STR_NETWORK_ERR_SERVER_START :{WHITE} Kunne ikke starte serveren
STR_NETWORK_ERR_CLIENT_START :{WHITE} Kunne ikke forbinde
STR_NETWORK_ERR_TIMEOUT :{WHITE} Forbindelsen #{NUMU16} svare ikke
STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Der opstod en protokol-fejl og forbindelse blev lukket
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Revisionen af denne klient passer ikke sammen med serverens revision
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Forkert kodeord
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Serveren er fuld
STR_NETWORK_ERR_KICKED :{WHITE} Du blev smidt ud af spillet
STR_NETWORK_ERR_CHEATER :{WHITE} Snyderi er ikke tilladt p<> denne server
STR_NETWORK_ERR_LEFT :har forladt spillet
############ Leave those lines in this order!!
STR_NETWORK_ERR_CLIENT_GENERAL :generel fejl
STR_NETWORK_ERR_CLIENT_DESYNC :synkroniseringsfejl
STR_NETWORK_ERR_CLIENT_SAVEGAME :kunne ikke hente kortet
STR_NETWORK_ERR_CLIENT_CONNECTION_LOST :forbindelsen blev afbrudt
STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR :protokol fejl
STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED :Not Authorised
STR_NETWORK_ERR_CLIENT_NOT_EXPECTED :modtog en underlig pakke
STR_NETWORK_ERR_CLIENT_WRONG_REVISION :forkert revision
STR_NETWORK_ERR_CLIENT_NAME_IN_USE :navnet er allerede i brug
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :wrong game-password
STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH :forkert player-id i DoCommand
STR_NETWORK_ERR_CLIENT_KICKED :smidt ud af serveren
STR_NETWORK_ERR_CLIENT_CHEATER :pr<70>vede at snyde
############ End of leave-in-this-order
STR_NETWORK_CLIENT_JOINED :har tilsluttet sig spillet
STR_NETWORK_GIVE_MONEY :gav din virksomhed nogle penge ({CURRENCY})
STR_NETWORK_GAVE_MONEY_AWAY :du gav {STRING} nogle penge ({CURRENCY})
STR_NETWORK_CHAT_COMPANY :[Team] {STRING}:
STR_NETWORK_CHAT_TO_COMPANY :[Team] Til {STRING}:
STR_NETWORK_CHAT_CLIENT :[Private] {STRING}:
STR_NETWORK_CHAT_TO_CLIENT :[Private] Til {STRING}:
STR_NETWORK_CHAT_ALL :[All] {STRING}:
STR_NETWORK_NAME_CHANGE :har skiftet navn til
STR_NETWORK_SERVER_SHUTDOWN :{WHITE} Serveren har lukket ned for dette spil
STR_NETWORK_SERVER_REBOOT :{WHITE} Serveren genstarter...{}Vent venligst...
STR_NETWORK_SERVER :Server
STR_NETWORK_CLIENT :Klient
STR_NETWORK_CLIENTLIST_NONE :(ingen)
STR_NETWORK_CLIENTLIST_KICK :Smid ud
STR_NETWORK_CLIENTLIST_GIVE_MONEY :Giv penge
STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Tal til alle
STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Tal til virksomhed
STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privat besked
STR_NETWORK_SEND :{BLACK}Send
############ end network gui strings
@@ -1385,7 +1155,7 @@ STR_1002_EXCAVATION_WOULD_DAMAGE :{WHITE}Udgravning ville skade en tunnel
STR_1003_ALREADY_AT_SEA_LEVEL :{WHITE}Allerede ved havoverfladen
STR_1004_TOO_HIGH :{WHITE}For h<>jt
STR_1005_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Ingen brugbare togskinner
STR_1006_TRAIN_INSIDE_DEPOT :{WHITE}Der er et tog i depotet
STR_1006_TRAIN_INSIDE_DEPOT :{WHITE}Der er et tog i remisen
STR_1007_ALREADY_BUILT :{WHITE}...allerede bygget
STR_1008_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Det er n<>dvendigt at fjerne togskinnerne f<>rst
STR_1009_TOO_MANY_DEPOTS :{WHITE}For mange depoter
@@ -1393,28 +1163,28 @@ STR_100A_RAILROAD_CONSTRUCTION :{WHITE}Togskinne Konstruktion
STR_100B_MONORAIL_CONSTRUCTION :{WHITE}Monorail Konstruktion
STR_100C_MAGLEV_CONSTRUCTION :{WHITE}Magnetskinnetog Konstruktion
STR_100D_SELECT_RAIL_BRIDGE :{WHITE}V<>lg togbro
STR_100E_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Kan ikke bygge et depot her...
STR_100E_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Kan ikke bygge en remise her...
STR_100F_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Kan ikke bygge en togstation her...
STR_1010_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Kan ikke bygge signaler her...
STR_1011_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Kan ikke bygge togskinner her...
STR_1012_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Kan ikke fjerne togksinner herfra...
STR_1013_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Kan ikke fjerne signaler herfra...
STR_1014_TRAIN_DEPOT_ORIENTATION :{WHITE}Retning for depot
STR_1014_TRAIN_DEPOT_ORIENTATION :{WHITE}Retning for remise
STR_1015_RAILROAD_CONSTRUCTION :Togskinne konstruktion
STR_1016_MONORAIL_CONSTRUCTION :Monorail Konstruktion
STR_1017_MAGLEV_CONSTRUCTION :Magnetskinnetog konstruktion
STR_1018_BUILD_RAILROAD_TRACK :{BLACK}Byg togskinner
STR_1019_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Byg et depot (til at bygge og servicere tog)
STR_1019_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Byg en remise (til at bygge og servicere tog)
STR_101A_BUILD_RAILROAD_STATION :{BLACK}Byg togstation
STR_101B_BUILD_RAILROAD_SIGNALS :{BLACK}Byg signaler
STR_101C_BUILD_RAILROAD_BRIDGE :{BLACK}Byg bro
STR_101D_BUILD_RAILROAD_TUNNEL :{BLACK}Byg tunnel
STR_101E_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Skift mellem bygning/fjerning af togskinner og signaler
STR_101F_BRIDGE_SELECTION_CLICK :{BLACK}Valg af bro - klik p<> den valgte bro for at bygge den
STR_1020_SELECT_RAILROAD_DEPOT_ORIENTATIO :{BLACK}V<>lg orientering af depot
STR_1020_SELECT_RAILROAD_DEPOT_ORIENTATIO :{BLACK}V<>lg orientering af remise
STR_1021_RAILROAD_TRACK :Togskinner
STR_1022_RAILROAD_TRACK_WITH_SIGNALS :Togskinner med signaler
STR_1023_RAILROAD_TRAIN_DEPOT :Depot
STR_1023_RAILROAD_TRAIN_DEPOT :Remise
STR_1024_AREA_IS_OWNED_BY_ANOTHER :{WHITE}...omr<6D>det ejes af et andet firma
STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS :Togskinner med almindelige signaler
STR_RAILROAD_TRACK_WITH_PRESIGNALS :Togskinner med indk<64>rselssignaler
@@ -1430,7 +1200,7 @@ STR_1802_ROAD_CONSTRUCTION :{WHITE}Vej Konstruktion
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}V<>lg vejbro
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Kan ikke bygge vej her...
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Kan ikke fjerne vej herfra...
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Retning for garage
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Orientering af lastbilsdepot
STR_1807_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Kan ikke bygge lastbilsdepot her...
STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}Kan ikke bygge rutebilsstation...
STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}Kan ikke bygge lasteplads...
@@ -1548,7 +1318,6 @@ STR_205B_TEAPOT_HOUSE :Tepottehus
STR_205C_PIGGY_BANK :Sparegris
##id 0x2800
STR_LANDSCAPING :Landskabsv<73>rkt<6B>jer
STR_2800_PLANT_TREES :Plant tr<74>er
STR_2801_PLACE_SIGN :Placer skilt
STR_2802_TREES :{WHITE}Tr<54>er
@@ -1852,7 +1621,6 @@ STR_SV_STNAME_FOREST :{STRING} Skov
##id 0x6800
STR_6800_DIFFICULTY_LEVEL :{WHITE}Sv<53>rhedsgrad
STR_OPTIONS_SAVE_CHANGES :{BLACK}Gem
############ range for difficulty levels starts
STR_6801_EASY :{BLACK}Nem
@@ -1879,10 +1647,8 @@ STR_6812_QUANTITY_OF_SEA_LAKES :{LTBLUE}Antal s
STR_6813_ECONOMY :{LTBLUE}<7D>konomi: {ORANGE}{STRING}
STR_6814_TRAIN_REVERSING :{LTBLUE}Tog vender: {ORANGE}{STRING}
STR_6815_DISASTERS :{LTBLUE}Katastrofer: {ORANGE}{STRING}
STR_16816_CITY_APPROVAL :{LTBLUE}Byr<79>ds holdning overfor <20>ndring i landskabet: {ORANGE}{STRING}
############ range for difficulty settings ends
STR_26816_NONE :Ingen
STR_6816_LOW :Lav
STR_6817_NORMAL :Normal
STR_6818_HIGH :H<>j
@@ -1919,14 +1685,10 @@ STR_6835_AT_END_OF_LINE_ONLY :Kun ved slutningen af jernbanespor
STR_6836_OFF :Fra
STR_6837_ON :Til
STR_6838_SHOW_HI_SCORE_CHART :{BLACK}Vis higscoreliste
STR_6839_PERMISSIVE :Passiv
STR_683A_TOLERANT :Tolerant
STR_683B_HOSTILE :Fjendtlig
##id 0x7000
STR_7000 :
STR_7001 :{WHITE}{STRING} {BLACK}{STRING}
STR_7002_PLAYER :(Spiller {COMMA16})
STR_7001 :{WHITE}{STRING}{BLACK}{STRING}
STR_7004_NEW_FACE :{BLACK}Nyt Ansigt
STR_7005_COLOR_SCHEME :{BLACK}Farvetema
STR_7006_COLOR_SCHEME :{GOLD}Farvetema:
@@ -1937,7 +1699,7 @@ STR_700A_COMPANY_NAME :Firmanavn
STR_700B_PRESIDENT_S_NAME :Direkt<6B>rens Navn
STR_700C_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Kan ikke <20>ndre firmaets navn...
STR_700D_CAN_T_CHANGE_PRESIDENT :{WHITE}Kan ikke <20>ndre direkt<6B>rens navn...
STR_700E_FINANCES :{WHITE}{STRING} Finanser {BLACK}{STRING}
STR_700E_FINANCES :{WHITE}{STRING} Finanser{BLACK}{STRING}
STR_700F_EXPENDITURE_INCOME :{WHITE}Udgifter/Indkomst
STR_7010 :{WHITE}{NUMU16}
STR_7011_CONSTRUCTION :{GOLD}Konstruktion
@@ -1964,12 +1726,11 @@ STR_7024 :{COMMA32}
STR_7025_OPERATING_PROFIT_GRAPH :{WHITE}Profit Garf
STR_7026_BANK_BALANCE :{WHITE}Bank Balance
STR_7027_LOAN :{WHITE}L<>n
STR_MAX_LOAN :{WHITE}Max L<>n: {BLACK}{CURRENCY64}
STR_7028 :{BLACK}{CURRENCY64}
STR_7029_BORROW :{BLACK}L<>n {SKIP}{SKIP}{SKIP}{SKIP}{CURRENCY}
STR_702A_REPAY :{BLACK}Tilbagebetal {SKIP}{SKIP}{SKIP}{SKIP}{CURRENCY}
STR_702B_MAXIMUM_PERMITTED_LOAN :{WHITE}...maksimale st<73>rrelse af l<>n er {CURRENCY}
STR_702C_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Kan ikke l<>ne flere penge...
STR_702C_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Kan ikke l<>ne felere penge...
STR_702D_LOAN_ALREADY_REPAYED :{WHITE}...ingen l<>n at tilbagebetale
STR_702E_REQUIRED :{WHITE}...{CURRENCY} kr<6B>vet
STR_702F_CAN_T_REPAY_LOAN :{WHITE}Kan ikke tilbagebetale l<>n...
@@ -2042,9 +1803,6 @@ STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Flyt firmaets hovedkvarter for 1% a
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Kan ikke bygge firmaets hovedkvarter...
STR_7072_VIEW_HQ :{BLACK}Vis HK
STR_RELOCATE_HQ :{BLACK}Flyt hovedkvarter
STR_COMPANY_PASSWORD :{BLACK}Kodeord
STR_COMPANY_PASSWORD_TOOLTIP :{BLACK}Beskydt din virksomhed med et kodeord for at undg<64> at fremmede slutter sig til dig
STR_SET_COMPANY_PASSWORD :Set virksomhedens kodeord
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}Lavkonjuktur over hele verden!{}{}Vism<73>ndende frygter det v<>rste, <20>konomien skrumper!
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}<7D>konomisk krise overvundet!{}{}Stigning i forbrug giver industrien selvtilliden tilbage, produktionen <20>ges!
STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Skift mellem stort/lille vindue
@@ -2326,7 +2084,7 @@ STR_8106_MONORAIL_LOCOMOTIVE :monoraillokomotiv
STR_8107_MAGLEV_LOCOMOTIVE :magnetskinnelokomotiv
##id 0x8800
STR_8800_TRAIN_DEPOT :{WHITE}{TOWN} depot
STR_8800_TRAIN_DEPOT :{WHITE}{TOWN} remise
STR_8801_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Indbyggerene fester . . .{}F<>rste tog ankommer til {STATION}!
STR_8802_DETAILS :{WHITE}{STRING} (Detaljer)
STR_8803_TRAIN_IN_THE_WAY :{WHITE}Tog i vejen
@@ -2340,17 +2098,15 @@ STR_880A_GO_NON_STOP_TO :G
STR_880B_GO_NON_STOP_TO_UNLOAD :G<> uden stop til {STATION} (Afl<66>sse)
STR_880C_GO_NON_STOP_TO_LOAD :G<> uden stop til {STATION} (L<>sse)
STR_880D :
STR_880E_GO_TO_TRAIN_DEPOT :G<> til {TOWN} depot
STR_SERVICE_AT_TRAIN_DEPOT :Service i {TOWN} depot
STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT :G<> uden stop til {TOWN} depot
STR_SERVICE_NON_STOP_AT_TRAIN_DEPOT :Service non-stop i {TOWN} depot
STR_880E_GO_TO_TRAIN_DEPOT :G<> til {TOWN} remise
STR_SERVICE_AT_TRAIN_DEPOT :Service i {TOWN} remise
STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT :G<> uden stop til {TOWN} remise
STR_SERVICE_NON_STOP_AT_TRAIN_DEPOT :Service non-stop i {TOWN} remise
STR_HEADING_FOR_TRAIN_DEPOT :{LTBLUE}K<EFBFBD>rer imod {TOWN} depot
STR_HEADING_FOR_TRAIN_DEPOT_VEL :{LTBLUE}K<EFBFBD>rer imod {TOWN} depot, {VELOCITY}
STR_HEADING_FOR_TRAIN_DEPOT :{LTBLUE}Retning mod {TOWN} remise
STR_HEADING_FOR_TRAIN_DEPOT_VEL :{LTBLUE}Retning mod {TOWN} remise, {VELOCITY}
STR_INVALID_ORDER :{RED} (Ugyldig Order)
STR_UNKNOWN_DESTINATION :ukendt destination
STR_8812_EMPTY :{LTBLUE}Tom
STR_8813_FROM :{LTBLUE}{CARGO} fra {STATION}
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Tog {COMMA16} Venter i depot
@@ -2359,7 +2115,7 @@ STR_8816 :{BLACK}-
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Pris: {GOLD}{CURRENCY}{BLACK} V<>gt: {GOLD}{COMMA16}t{}{BLACK}Hastighed: {GOLD}{VELOCITY}{BLACK} Styrke: {GOLD}{COMMA16}hp{}{BLACK}K<>rselsomkostninger: {GOLD}{CURRENCY}/<2F>r{}{BLACK}Kapacitet: {GOLD}{STRING}{}{BLACK}Designet: {GOLD}{NUMU16}{BLACK} Levetid: {GOLD}{COMMA16} <20>r{}{BLACK}Maks p<>lidelighed: {GOLD}{COMMA8}%
STR_8818_INFORMATION :{BLACK}Information
STR_8819_TRAIN_TOO_LONG :{WHITE}Toget er for langt
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Tog kan kun <20>ndres n<>r de er stoppet i et depot
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Tog kan kun <20>ndres n<>r de er stoppet i en remise
STR_881B_TRAINS :{WHITE}{STRING} - {COMMA16} Tog
STR_881C_NEW_RAIL_VEHICLES :{WHITE}Nye Jernbanek<65>ret<65>jer
STR_881D_NEW_MONORAIL_VEHICLES :{WHITE}Nye Monorailk<6C>ret<65>jer
@@ -2382,26 +2138,25 @@ STR_882C_BUILT_VALUE :{LTBLUE}{STRING}{BLACK} Bygget: {LTBLUE}{NUMU16}{BL
STR_882D_VALUE :{LTBLUE}{STRING}{BLACK} V<>rdi: {LTBLUE}{CURRENCY}
STR_882E :{WHITE}{STRING}
STR_882F_LOADING_UNLOADING :{LTBLUE}L<>sser / Afl<66>sser
STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Kan ikke sende toget til depot...
STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Kan ikke sende toget til remise...
STR_8831_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Ikke mere plads til flere ordre
STR_8832_TOO_MANY_ORDERS :{WHITE}For mange ordre
STR_8833_CAN_T_INSERT_NEW_ORDER :{WHITE}Kan ikke inds<64>tte ny ordre...
STR_8834_CAN_T_DELETE_THIS_ORDER :{WHITE}Kan ikke slette denne ordre...
STR_8835_CAN_T_MODIFY_THIS_ORDER :{WHITE}Kan ikke <20>ndre denne ordre...
STR_8836_MUST_BUILD_TRAIN_DEPOT :{WHITE}Det er n<>dvendigt at bygge et depot f<>rst
STR_8836_MUST_BUILD_TRAIN_DEPOT :{WHITE}Det er n<>dvendigt at bygge en remise f<>rst
STR_8837_CAN_T_MOVE_VEHICLE :{WHITE}Kan ikke flytte k<>ret<65>jet...
STR_8838_N_A :N/A{SKIP}
STR_8839_CAN_T_SELL_RAILROAD_VEHICLE :{WHITE}Kan ikke s<>lge jernbanek<65>ret<65>jet...
STR_883A_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Kan ikke finde en route til et lokalt depot
STR_883A_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Kan ikke finde en route til en lokal remise
STR_883B_CAN_T_STOP_START_TRAIN :{WHITE}Kan ikke stoppe/starte toget...
STR_883C_SERVICING_INTERVAL_DAYS :{BLACK}Serviceinterval: {LTBLUE}{COMMA16}dage{BLACK} Sidste Service: {LTBLUE}{DATE_LONG}
STR_SERVICING_INTERVAL_PERCENT :{BLACK}Serviceinterval: {LTBLUE}{COMMA16}%{BLACK} Sidste Service: {LTBLUE}{DATE_LONG}
STR_883D_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Tog - klik p<> et tog for information
STR_883E_BUILD_NEW_TRAINS_REQUIRES :{BLACK}Byg nye tog (kr<6B>ver et depot)
STR_883E_BUILD_NEW_TRAINS_REQUIRES :{BLACK}Byg nye tog (kr<6B>ver en remise)
STR_883F_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Tog - klik p<> et tog for information., tr<74>k vogn/lokomotiv for at fjerne/tilf<6C>je det til toget
STR_8840_BUILD_NEW_TRAIN_VEHICLE :{BLACK}Byg nyt tog/togvogn
STR_8841_DRAG_TRAIN_VEHICLE_TO_HERE :{BLACK}Tr<54>k tog/togvogn her hend for at s<>lge
STR_8842_CENTER_MAIN_VIEW_ON_TRAIN :{BLACK}Centrer sk<73>rmen over placeringen af depot
STR_8842_CENTER_MAIN_VIEW_ON_TRAIN :{BLACK}Centrer sk<73>rmen over placeringen af remisen
STR_8843_TRAIN_VEHICLE_SELECTION :{BLACK}Tog valgsliste - klik p<> et k<>ret<65>j for mere information
STR_8844_BUILD_THE_HIGHLIGHTED_TRAIN :{BLACK}Byg det markerede lokomotiv/togvogn
STR_8845_RENAME_TRAIN_VEHICLE_TYPE :{BLACK}Omd<6D>b tog-/togvognstypen
@@ -2583,7 +2338,7 @@ STR_GO_TO_SHIP_DEPOT :Sejl til {TOWN} Skip Depot
SERVICE_AT_SHIP_DEPOT :Service i {TOWN} Skip Depot
##id 0xA000
STR_A000_AIRPORTS :{WHITE}Lufthavne
STR_A000_AIRPORT_CONSTRUCT :{WHITE}Lufthavnskonstruktion.
STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Kan ikke bygge en lufthavn her...
STR_A002_AIRCRAFT_HANGAR :{WHITE}{STATION} Flyhangar
STR_A003_NEW_AIRCRAFT :{BLACK}Nyt fly
@@ -2662,71 +2417,10 @@ STR_B002_OIL_REFINERY_EXPLOSION :{BLACK}{BIGFONT}Eksplosion af olieraffinade
STR_B003_FACTORY_DESTROYED_IN_SUSPICIOUS :{BLACK}{BIGFONT}Fabrik <20>delagt under mystiske omst<73>ndigheder ved {TOWN}!
STR_B004_UFO_LANDS_NEAR :{BLACK}{BIGFONT}En UFO lander t<>t p<> {TOWN}!
STR_B005_COAL_MINE_SUBSIDENCE_LEAVES :{BLACK}{BIGFONT}Sammenstyrtning af kulmine efterlader et spor af katastrofe ved {TOWN}!
STR_B006_FLOOD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}Oversv<73>mmelse!{}Mindst {COMMA16} antaget savnet eller omkommet efter pludslig oversv<73>mmelse!
STR_BRIBE_FAILED :{WHITE}Dit fors<72>g p<> bestikkelse er blevet
STR_BRIBE_FAILED_2 :{WHITE}opdaget af en inspekt<6B>r.
STR_BUILD_DATE :{BLACK}Produceret: {LTBLUE}{DATE_LONG}
STR_MULTIPLAYER_PAUSED :{WHITE}Spillet er i pause.{}Kommandoen kan ikke k<>res
STR_PERFORMANCE_DETAIL :{WHITE}Pr<50>stations oversigt
STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detailer
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA32}/{COMMA32})
STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{INT32}%
SET_PERFORMANCE_DETAIL_INT :{BLACK}{INT32}
############ Those following lines need to be in this order!!
STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}K<>ret<65>jer:
STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Stationer:
STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Minimum profit:
STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Minimum indkomst:
STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Max. indt<64>gt:
STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Afleveret:
STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Last:
STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Penge:
STR_PERFORMANCE_DETAIL_LOAN :{BLACK}L<>n:
STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Total:
############ End of order list
STR_PERFORMANCE_DETAIL_VEHICLES_TIP :{BLACK}Antal af k<>ret<65>jer; dette inkludere vejk<6A>ret<65>jer, tog, skibe og fly
STR_PERFORMANCE_DETAIL_STATIONS_TIP :{BLACK}Antallet af stationer. Alle dele af en station (f.eks. tog station, bus station, lufthavn) t<>ller med, ogs<67> selvom de er sat sammen til en station
STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP :{BLACK}Profit for det k<>ret<65>j med lavest indkomst (af alle k<>ret<65>jer <20>ndre end 2 <20>r)
STR_PERFORMANCE_DETAIL_MIN_INCOME_TIP :{BLACK}Indkomst i den m<>ned med lavest profit i de sidste 12 kvartaler
STR_PERFORMANCE_DETAIL_MAX_INCOME_TIP :{BLACK}Indkomst i den m<>ned med h<>jest profit i de sidste 12 kvartaler
STR_PERFORMANCE_DETAIL_DELIVERED_TIP :{BLACK}Antal enheder fragtet i de sidste 4 kvartaler
STR_PERFORMANCE_DETAIL_CARGO_TIP :{BLACK}Antallet af lasttyper fragtet i sidste kvartal
STR_PERFORMANCE_DETAIL_MONEY_TIP :{BLACK}Kapital denne virksomhed har i banken
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Har du et stort l<>n?
STR_PERFORMANCE_DETAIL_TOTAL_TIP :{BLACK}Samlet point af max point
STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Newgrf indstillinger
STR_NEWGRF_APPLY_CHANGES :{BLACK}Anvend <20>ndringer
STR_NEWGRF_SET_PARAMETERS :{BLACK}Indstil parametre
STR_NEWGRF_TIP :{BLACK}Liste med alle Newgrf s<>t du har installeret. Marker et s<>t for at <20>ndre indstilliger.
STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}Der er ingen newgrf filer installeret! Du kan l<>se i manualen hvordan man installerer newgrf s<>t.
STR_NEWGRF_FILENAME :{BLACK}Filnavn:
STR_NEWGRF_GRF_ID :{BLACK}GRF ID:
STR_CURRENCY_WINDOW :{WHITE}Brugerdefineret m<>ntfod
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Kurs: {ORANGE}{CURRENCY} = {POUNDSIGN} {COMMA16}
STR_CURRENCY_SEPARATOR :{LTBLUE}Tilskuer:
STR_CURRENCY_PREFIX :{LTBLUE}Pr<50>fiks:
STR_CURRENCY_SUFFIX :{LTBLUE}Endetill<6C>g:
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Skift til Euro: {ORANGE}{INT32}
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Skift til Euro: {ORANGE}aldrig
STR_CURRENCY_PREVIEW :{LTBLUE}Eksempel: {ORANGE}{CURRENCY}
STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Skift brugerdefineret m<>ntfods parametre
STR_TRAIN :{BLACK}{TRAIN}
STR_LORRY :{BLACK}{LORRY}
STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_SCHEDULED_TRAINS :{WHITE}{STATION} - {COMMA16} Tog
STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA16} K<>ret<65>jer
STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA16} Fly
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA16} Skibe
STR_SCHEDULED_TRAINS_TIP :{BLACK}Vis alle tog, som har denne station i deres k<>replan
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Vis alle k<>ret<65>jer, som har denne station i deres k<>replan
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Vis alle fly, som har denne lufthavn i deres ruteplan
STR_SCHEDULED_SHIPS_TIP :{BLACK}Vis alle skibe, som har denne station i deres ruteplan

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -310,7 +310,6 @@ STR_0134_UNIX :Unix
STR_0135_OSX :OSX
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_0139_IMPERIAL_MILES :Imp<6D>rial (miles)
STR_013A_METRIC_KILOMETERS :M<>trique (kilom<6F>tres)
@@ -343,7 +342,7 @@ STR_0157_PERFORMANCE_HISTORY_GRAPH :Historique de performance
STR_0158_COMPANY_VALUE_GRAPH :Valeur de la compagnie
STR_0159_CARGO_PAYMENT_RATES :Valeur des cargaisons
STR_015A_COMPANY_LEAGUE_TABLE :Classement des compagnies
STR_PERFORMANCE_DETAIL_MENU :D<>tail des performances
STR_PERFORMANCE_DETAIL_MENU :D<>tail de l'<27>valuation de la performance
############ range for menu ends
STR_015B_OPENTTD :{WHITE}OpenTTD
@@ -353,8 +352,7 @@ STR_015E_QUIT_GAME :Abandonner la partie
STR_015F_QUIT :Quitter le jeu
STR_0160_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}<7D>tes vous sur de vouloir abandonner cette partie?
STR_0161_QUIT_GAME :{WHITE}Abandonner
STR_SORT_ORDER_TIP :{BLACK}Choisir l'ordre de tri croissant/d<>croissant
STR_SORT_CRITERIA_TIP :{BLACK}Choisir le crit<69>re de tri
STR_SORT_TIP :{BLACK}S<EFBFBD>lectionne l'ordre de tri
SRT_SORT_BY :{BLACK}Trier par
STR_SORT_BY_POPULATION :{BLACK}Population
@@ -370,7 +368,7 @@ STR_SORT_BY_PROFIT_LAST_YEAR :Profit l'an dernier
STR_SORT_BY_PROFIT_THIS_YEAR :Profit cette ann<6E>e
STR_SORT_BY_AGE :Age
STR_SORT_BY_RELIABILITY :Fiabilit<69>
STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Capacit<69> totale par cargo
STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Capacit<69> totale par type de cargo
STR_SORT_BY_MAX_SPEED :Vitesse maximum
############ range for months starts
@@ -419,7 +417,6 @@ STR_0189 :{BLACK}{SMALLDOWNARROW}
STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Impossible de modifier l'intervalle de service...
STR_018B_CLOSE_WINDOW :{BLACK}Fermer la fen<65>tre
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Titre de fen<65>tre - Glissez ceci pour d<>placer la fen<65>tre
STR_STICKY_BUTTON :{BLACK}Marquer cette fen<65>tre comme ineffa<66>able pour la touche 'Fermer toutes les fen<65>tres'
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}D<>molir les constructions sur un carr<72> de terrain
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Abaisser le terrain
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}<7D>lever le terrain
@@ -498,8 +495,6 @@ STR_01CD_SELECT_TUTORIAL_DEMONSTRATION :{WHITE}Choisir Didacticiel/D
STR_01CE_CARGO_ACCEPTED :{BLACK}Cargaison accept<70>e: {LTBLUE}{STRING}
STR_01CF_CARGO_ACCEPTED :{BLACK}Cargaison accept<70>e: {LTBLUE}{STRING}, {STRING}
STR_01D0_CARGO_ACCEPTED :{BLACK}Cargaison accept<70>e: {LTBLUE}{STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_4 :{BLACK}Cargaison accept<70>e: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_5 :{BLACK}Cargaison accept<70>e: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}, {STRING}
############ range for cargo acecpted ends
STR_01D1_8 :({COMMA8}/8 {STRING})
@@ -542,7 +537,7 @@ STR_01F5_SELECT_NEW_STYLE_MUSIC :{BLACK}Choisir le programme 'nouveau style
STR_01F6_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Choisir le programme personnalis<69> 'Personnalis<69> 1'
STR_01F7_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Choisir le programme personnalis<69> 'Personnalis<69> 2'
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Balayer le programme courrant (Personnalis<69> 1 ou Personnalis<69> 2 seulement)
STR_01F9_SAVE_MUSIC_SETTINGS :{BLACK}Sauver les param<EFBFBD>tres musicaux
STR_01F9_SAVE_MUSIC_SETTINGS_TO :{BLACK}Sauvegarder les pr<EFBFBD>f<EFBFBD>rences musicales
STR_01FA_CLICK_ON_MUSIC_TRACK_TO :{BLACK}Cliquez sur une piste pour l'ajouter au pragramme courrant (Custom1 ou Custom2 seulement)
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Active/D<>sactive le mode al<61>atoire
STR_01FC_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Afficher la fen<65>tre de s<>lection de pistes
@@ -727,7 +722,7 @@ STR_02BC_VEHICLE_DESIGN_NAMES :{BLACK}Noms de conception des Vehicule
STR_02BD :{BLACK}{STRING}
STR_02BE_DEFAULT :Par D<>faut
STR_02BF_CUSTOM :Personnalis<69>
STR_02C0_SAVE_CUSTOM_NAMES :{BLACK}Sauver les noms personnalis<69>s
STR_02C0_SAVE_CUSTOM_NAMES_TO_DISK :{BLACK}Sauvegarder les noms personnalis<69>s
STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION :{BLACK}S<>lection des noms de conception de v<>hicule
STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Sauvegarder noms personnalis<69>s de conception de v<>hicule
@@ -738,20 +733,16 @@ STR_02C5_DIFFICULTY_SETTINGS :Niveau de Difficult
STR_02C6_DIFFICULTY_SETTINGS :Niveau de Difficult<6C>
STR_02C7_CONFIG_PATCHES :Configuration Avanc<6E>e
STR_02C8_CONFIG_PATCHES :Configuration Avanc<6E>e
STR_NEWGRF_SETTINGS :Param<61>tres Newgrf
STR_NEWGRF_SETTINGS2 :Param<61>tres Newgrf
STR_GAMEOPTMENU_0A :
STR_GAMEOPTMENU_0B :
STR_CLOSE_ALL_WINDOWS :Fermer TOUTES les fen<65>tres
STR_CLOSE_ALL_WINDOWS2 :Fermer TOUTES les fen<65>tres
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Afficher le nom des villes
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Afficher le nom des villes
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Afficher le nom des stations
STR_02CC_STATION_NAMES_DISPLAYED :{SETX 12}Afficher le nom des stations
STR_02CD_SIGNS_DISPLAYED :{CHECKMARK}{SETX 12}Afficher les panneaux
STR_02CE_SIGNS_DISPLAYED :{SETX 12}Afficher les panneaux
STR_WAYPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Afficher les pts de contr<74>le
STR_WAYPOINTS_DISPLAYED2 :{SETX 12}Afficher les pts de contr<74>le
STR_CHECKPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Afficher les points de contr<74>le
STR_CHECKPOINTS_DISPLAYED2 :{SETX 12}Afficher les points de contr<74>le
STR_02CF_FULL_ANIMATION :{CHECKMARK}{SETX 12}Animation compl<70>te
STR_02D0_FULL_ANIMATION :{SETX 12}Animation compl<70>te
STR_02D1_FULL_DETAIL :{CHECKMARK}{SETX 12}D<>tail Maximal
@@ -774,13 +765,13 @@ STR_02DC_DISPLAY_SUBSIDIES :{BLACK}Afficher les subventions
STR_02DD_SUBSIDIES :Subventions
STR_02DE_MAP_OF_WORLD :Carte du monde
STR_EXTRA_VIEW_PORT :Vue suppl<70>mentaire
STR_02DF_TOWN_DIRECTORY :Annuaire des villes
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Vue {COMMA16}
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Copier vers la vue
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Copie l'emplacement de la vue globale vers cette vue
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Coller depuis la vue
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Colle l'emplacement de cette vue vers la vue globale
STR_02DF_TOWN_DIRECTORY :Annuaire des villes
STR_02E0_CURRENCY_UNITS :{BLACK}Unit<69> mon<6F>taire
STR_02E1 :{BLACK}{SKIP}{STRING}
STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}S<>lection d'unit<69> mon<6F>taire
@@ -804,16 +795,16 @@ STR_02F8_EVERY_3_MONTHS :Tous les 3 mois
STR_02F9_EVERY_6_MONTHS :Tous les 6 mois
STR_02FA_EVERY_12_MONTHS :Tous les 12 mois
STR_02FB_START_A_NEW_GAME :{BLACK}Commencer une nouvelle partie
STR_02FC_LOAD_A_SAVED_GAME :{BLACK}Charger une partie sauv<EFBFBD>e
STR_02FC_LOAD_A_SAVED_GAME_FROM :{BLACK}Charger une partie du disque
STR_02FD_VIEW_DEMONSTRATIONS_TUTORIALS :{BLACK}Visionner d<>monstrations/didacticiels
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}Cr<43>er un monde/sc<73>nario de jeu personnalis<69>
STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}Selectionner mode joueur simple
STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}S<EFBFBD>lectionnner une partie multi-joueurs de 2 <20> 8 joueurs
STR_0300_SELECT_TWO_PLAYER_GAME :{BLACK}Selectionner mode deux joueurs
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Afficher les options du jeu
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Afficher les options de niveau de difficult<6C>
STR_0303_START_A_NEW_GAME_USING :{BLACK}D<>buter une nouvelle partie <20> partir d'un sc<73>nario
STR_0304_QUIT :{BLACK}Quitter
STR_0305_QUIT_OPENTTD :{BLACK}Quitter 'OpenTTD'
STR_0305_LEAVE_OPENTTD :{BLACK}Quitter OpenTTD
STR_0306_VIEW_DEMONSTRATION_TUTORIAL :{BLACK}Visionner d<>monstration/didacticiel
STR_0307_OPENTTD :{WHITE}OpenTTD {REV}
STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...peut seulement <20>tre construit en ville
@@ -861,46 +852,41 @@ STR_TOWNNAME_SWEDISH :Su
STR_TOWNNAME_DUTCH :Hollandais
STR_TOWNNAME_FINNISH :Finnish
STR_TOWNNAME_POLISH :Polonais
STR_TOWNNAME_CZECH :Tch<63>ques
STR_TOWNNAME_SLOVAKISH :Slovaques
STR_TOWNNAME_HUNGARIAN :Hongrois
STR_TOWNNAME_AUSTRIAN :Autrichiens
STR_TOWNNAME_ROMANIAN :Roumain
STR_TOWNNAME_CZECH :Tch<63>ques
############ end of townname region
STR_CURR_GBP :Livres ({POUNDSIGN})
STR_CURR_USD :Dollars ($)
STR_CURR_EUR :Euros (<EFBFBD>)
STR_CURR_POUNDS :Livres ({POUNDSIGN})
STR_CURR_DOLLARS :Dollars ($)
STR_CURR_FF :Francs (FF)
STR_CURR_DM :Marks Allemands (DM)
STR_CURR_YEN :Yens ({YENSIGN})
STR_CURR_PT :Pesetas Espagnols (PT)
STR_CURR_FT :Florins Hongrois (FT)
STR_CURR_ZL :Zloty Polonais (ZL)
STR_CURR_ATS :Shilings Australiens (ATS)
STR_CURR_BEF :Francs Belges (BEF)
STR_CURR_CHF :Franc Suisse (CHF)
STR_CURR_CZK :Couronnes Tch<63>ques (CZK)
STR_CURR_DEM :Deutschmark (DEM)
STR_CURR_DKK :Couronnes Danoise (DKK)
STR_CURR_ESP :Peseta (ESP)
STR_CURR_FIM :Marks Finlandais (FIM)
STR_CURR_FRF :Franc (FRF)
STR_CURR_GRD :Drachmes Grec (GRD)
STR_CURR_HUF :Hungarian Forint (HUF)
STR_CURR_ISK :Couronnes Islandaises (ISK)
STR_CURR_ITL :Lires Italiennes (ITL)
STR_CURR_CHF :Franc Suisse (CHF)
STR_CURR_NLG :Florins Hollandais (NLG)
STR_CURR_NOK :Cour. Norv<72>giennes (NOK)
STR_CURR_PLN :Polish Zloty (PLN)
STR_CURR_ROL :Leu Roumain (Lei)
STR_CURR_RUR :Roubles Russes (RUR)
STR_CURR_ITL :Lires Italiennes (ITL)
STR_CURR_SEK :Couronnes Su<53>doises (SEK)
STR_CURR_CUSTOM :Personnalis<EFBFBD>...
STR_CURR_RUR :Roubles Russes (RUR)
STR_CURR_CZK :Couronnes Tch<63>ques (CZK)
STR_CURR_ISK :Couronnes Islandaises (ISK)
STR_CURR_NOK :Cour. Norv<72>giennes (NOK)
STR_CURR_ROL :Leu Roumain (Lei)
STR_CURR_EUR :Euros (EUR)
STR_OPTIONS_LANG :{BLACK}Langue
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_LANG_TIP :{BLACK}Selectionner la langue d'interface <20> utiliser
STR_OPTIONS_FULLSCREEN :{BLACK}Plein <20>cran
STR_OPTIONS_FULLSCREEN_TIP :{BLACK}Cochez cette case pour jouer <20> OpenTTD en plein <20>cran
STR_OPTIONS_RES :{BLACK}R<>solution
STR_OPTIONS_RES_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_RES_TIP :{BLACK}Selectionner la r<>solution d'<27>cran <20> utiliser
@@ -980,13 +966,11 @@ STR_CONFIG_PATCHES_OFF :D
STR_CONFIG_PATCHES_ON :Activ<69>
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Afficher vitesse du v<>hicule dans la barre d'<27>tat: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Construction c<>ti<74>re et sur plans inclin<69>s: {ORANGE}{STRING}
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Autorise des zones de d<>sserte plus r<>alistes : {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Permettre la suppression de plus d'<27>l<EFBFBD>ments poss<73>d<EFBFBD>s par une ville: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Permettre la suppression de plus de routes, ponts, tunnels, etc poss<73>d<EFBFBD>s par une ville: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Permettre les trains plus longs: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Permettre les acc<63>l<EFBFBD>rations r<>alistes pour les trains: {ORANGE}{STRING}
STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Joindre les gares juxtapos<6F>es: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FULLLOADANY :{LTBLUE}Pleine cargaison par un seul type, si 'chargement complet': {ORANGE}{STRING}
STR_CONFIG_PATCHES_IMPROVEDLOAD :{LTBLUE}Utiliser l'algorithme am<61>lior<6F> de chargement : {ORANGE}{STRING}
STR_CONFIG_PATCHES_INFLATION :{LTBLUE}Inflation: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Livrer cargaison seulement lorsqu'il y a une demande: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Permettre la construction de ponts longs: {ORANGE}{STRING}
@@ -1015,13 +999,13 @@ STR_CONFIG_PATCHES_ORDER_REVIEW_EXDEPOT :oui, mais exclut les v
STR_CONFIG_PATCHES_ORDER_REVIEW_ON :de tous les v<>hicules
STR_CONFIG_PATCHES_WARN_INCOME_LESS :{LTBLUE}Alerte en cas de profit n<>gatif pour un train: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEVER_EXPIRE_VEHICLES :{LTBLUE}Les v<>hicules n'expirent jamais: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Renouveller automatiquement les v<>hicules quand ils sont vieux
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Auto-renouveller les v<>hicules {ORANGE}{STRING}{LTBLUE} mois avant/apr<70>s l'<27>ge maximum
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Argent n<>cessaire pour l'auto-renouvellement : {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Renouveller automatiquement les v<>hicules quand ils deviennent vieux
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Renouveller automatiquement le v<>hicule {ORANGE}{STRING}{LTBLUE} mois avant/apr<70>s l'<27>ge maximum
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Argent n<>cessaire pour le renouvellement automatique : {ORANGE}{STRING}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Temps d'affichage des messages d'erreur: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Arbres invisibles (quand les b<>timents sont transparents) : {ORANGE}{STRING}
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Altitude d'enneigement: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Etendue max. des stations: {ORANGE}{STRING} {RED}Attention: Valeur <20>lev<65>e = jeu lent
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Etendue maximum des stations: {ORANGE}{STRING} {RED}Attention: Une valeur trop <EFBFBD>lev<EFBFBD>e ralentit le jeu
STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Entretenir automatiquement les h<>licopt<70>res <20> l'heliport: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Nombre de trains max. par joueur: {ORANGE}{STRING}
@@ -1053,8 +1037,6 @@ STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Position de la barre d'outils princi
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Gauche
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :Centr<74>e
STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT :Droite
STR_CONFIG_PATCHES_SNAP_RADIUS :{LTBLUE}Rayon d'attraction des fen<65>tres : {ORANGE}{STRING} px
STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED :{LTBLUE}Rayon d'attraction des fen<65>tres : {ORANGE}disabled
STR_CONFIG_PATCHES_GUI :{BLACK}Interface
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Construction
@@ -1087,28 +1069,24 @@ STR_CHEAT_NO_JETCRASH :{LTBLUE}Les jets ne se crashent plus (fr
STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}Changer de climat : {ORANGE} {STRING}
STR_CHEAT_CHANGE_DATE :{LTBLUE}Changer la date: {ORANGE} {DATE_SHORT}
STR_HEADING_FOR_WAYPOINT :{LTBLUE}En route pour {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}En route pour {WAYPOINT}, {VELOCITY}
STR_HEADING_FOR_CHECKPOINT :{LTBLUE}En route pour {CHECKPOINT}
STR_HEADING_FOR_CHECKPOINT_VEL :{LTBLUE}En route pour {CHECKPOINT}, {VELOCITY}
STR_GO_TO_WAYPOINT :Passant par {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT :Aller sans-arr<72>t via {WAYPOINT}
STR_GO_TO_CHECKPOINT :Passant par {CHECKPOINT}
STR_WAYPOINTNAME_CITY :Point de contr<74>le {TOWN}
STR_WAYPOINTNAME_CITY_SERIAL :Point de contr<74>le {TOWN} #{COMMA16}
STR_LANDINFO_WAYPOINT :Point de contr<74>le
STR_CHECKPOINTNAME_CITY :Point de contr<74>le {TOWN}
STR_CHECKPOINTNAME_CITY_SERIAL :Point de contr<74>le {TOWN} #{COMMA16}
STR_LANDINFO_CHECKPOINT :Point de contr<74>le
STR_WAYPOINT :{WHITE}Point de passage
STR_WAYPOINT_GRAPHICS_TIP :{BLACK}Choisir le type de point de passage
STR_CHECKPOINT_VIEWPORT :{WHITE}{CHECKPOINT}
STR_CHECKPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{CHECKPOINT}
STR_CHECKPOINT_RAW :{CHECKPOINT}
STR_EDIT_CHECKPOINT_NAME :{WHITE}Modifier nom du point de contr<74>le
STR_WAYPOINT_VIEWPORT :{WHITE}{WAYPOINT}
STR_WAYPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{WAYPOINT}
STR_WAYPOINT_RAW :{WAYPOINT}
STR_EDIT_WAYPOINT_NAME :{WHITE}Modifier nom du point de contr<74>le
STR_CANT_CHANGE_WAYPOINT_NAME :{WHITE}Impossible de modifier le nom du point de contr<74>le...
STR_CONVERT_RAIL_TO_WAYPOINT_TIP :{BLACK}Convertir rail en point de contr<74>le
STR_CANT_BUILD_TRAIN_WAYPOINT :{WHITE}Impossible de construire point de contr<74>le ici...
STR_CANT_REMOVE_TRAIN_WAYPOINT :{WHITE}Impossible de retirer point de contr<74>le ici...
STR_CANT_CHANGE_CHECKPOINT_NAME :{WHITE}Impossible de modifier le nom du point de contr<74>le...
STR_CONVERT_RAIL_TO_CHECKPOINT_TIP :{BLACK}Convertir rail en point de contr<74>le
STR_CANT_BUILD_TRAIN_CHECKPOINT :{WHITE}Impossible de construire point de contr<74>le ici...
STR_CANT_REMOVE_TRAIN_CHECKPOINT :{WHITE}Impossible de retirer point de contr<74>le ici...
STR_BUILD_AUTORAIL_TIP :{BLACK}Construire les rails avec le mode AutoRail
@@ -1121,7 +1099,6 @@ STR_MANY_RANDOM_INDUSTRIES :{BLACK}Beaucoup d'industries au hasard
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Couvrir la carte avec des industries plac<61>es au hasard
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Ne peut pas g<>n<EFBFBD>rer les industries...
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}Ouvre la barre d'outils du paysagiste pour monter/descendre du terrain, planter des arbres, etc.
STR_LANDSCAPING_TOOLBAR :{WHITE}Manipulation du paysage
STR_LEVEL_LAND_TOOLTIP :{BLACK}Niveler le terrain
@@ -1194,44 +1171,37 @@ TEMP_AI_ACTIVATED :{WHITE}Attention: cette nouvelle IA est en version alpha
############ network gui strings
TEMP_STRING_NO_NETWORK :{WHITE}L'interface r<>seau ne fonctionne pas pour le moment!
STR_NETWORK_MULTIPLAYER :{WHITE}Multijoueur
STR_NETWORK_PLAYER_NAME :{BLACK}Nom du joueur:
STR_NETWORK_ENTER_NAME_TIP :{BLACK}Ceci est le nom avec lequel les autres joueurs pourront vous identifier
STR_NETWORK_CONNECTION :{BLACK}Connection :
STR_NETWORK_CONNECTION_TIP :{BLACK}Choisissez entre un jeu Internet et un jeu sur r<>seau local
STR_NETWORK_START_SERVER :{BLACK}D<>marrer le serveur
STR_NETWORK_START_SERVER_TIP :{BLACK}D<>marre son propre serveur
STR_NETWORK_GAME_NAME :{BLACK}Nom
STR_NETWORK_GAME_NAME_TIP :{BLACK}Nom de la partie
STR_NETWORK_INFO_ICONS_TIP :{BLACK}Langage, version du serveur, etc.
STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Cliquez une partie de la liste pour la s<>lectionner
STR_NETWORK_FIND_SERVER :{BLACK}Trouver un serveur
STR_NETWORK_FIND_SERVER_TIP :{BLACK}Cherche sur le r<>seau un serveur
STR_NETWORK_ADD_SERVER :{BLACK}Ajouter un serveur
STR_NETWORK_ADD_SERVER_TIP :{BLACK}Ajouter <20> la liste un serveur o<> le jeu cherchera toujours des parties en cours.
STR_NETWORK_DIRECT_CONNECT :{BLACK}Connection directe
STR_NETWORK_ENTER_IP :{BLACK}Entrez l'adresse IP du serveur
STR_NETWORK_DIRECT_CONNECT_TIP :{BLACK}Permet la connection directe <20> une IP connue
STR_NETWORK_START_SERVER :{BLACK}D<>marrer le serveur
STR_NETWORK_START_SERVER_TIP :{BLACK}D<>marre son propre serveur
STR_NETWORK_CLIENTS_ONLINE :{BLACK}{COMMA16}/{COMMA16}
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Clients
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Clients en ligne / clients max
STR_NETWORK_GAME_INFO :{SILVER}INFO DE LA PARTIE
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Clients: {WHITE}{COMMA8} / {COMMA8}
STR_NETWORK_LANGUAGE :{SILVER}Langue: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Terrain: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}Taille de la carte : {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_SERVER_VERSION :{SILVER}Version du serveur : {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Adresse du serveur : {WHITE}{STRING}
STR_NETWORK_START_DATE :{SILVER}Date de d<>but : {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Date courante : {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Prot<6F>g<EFBFBD>e par mot de passe !
STR_NETWORK_SERVER_OFFLINE :{SILVER}SERVEUR HORS-LIGNE
STR_NETWORK_SERVER_FULL :{SILVER}SERVEUR PLEIN
STR_NETWORK_VERSION_MISMATCH :{SILVER}VERSION NON CORRESPONDANTE
STR_NETWORK_PLAYER_NAME :{BLACK}Nom du joueur:
STR_NETWORK_ENTER_NAME_TIP :{BLACK}Ceci est le nom avec lequel les autres joueurs pourront vous identifier
STR_NETWORK_SELECT_CONNECTION :{BLACK}Choisissez le type de connection:
STR_NETWORK_CONNECTION_TYPE_TIP :{BLACK}Permet de choisir entre une partie sur sur internet ou sur un lan
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :LAN
STR_NETWORK_INTERNET :Internet
STR_NETWORK_GAME_NAME :{BLACK}Nom
STR_NETWORK_GAME_NAME_TIP :{BLACK}Nom de la partie
STR_NETWORK_PLAYERS :{BLACK}#/#
STR_NETWORK_PLAYERS_TIP :{BLACK}Joueurs pr<70>sents dans la partie / Nombre maximum de joueurs
STR_NETWORK_MAP_SIZE :{BLACK}Taille
STR_NETWORK_MAP_SIZE_TIP :{BLACK}Taille de la carte
STR_NETWORK_INFO_ICONS_TIP :{BLACK}Langage, version du serveur, etc.
STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Cliquez une partie de la liste pour la s<>lectionner
STR_NETWORK_PLAYERS_VAL :{BLACK}{COMMA8}/{COMMA8}
STR_NETWORK_JOIN_GAME :{BLACK}Rejoindre la partie
@@ -1240,30 +1210,20 @@ STR_NETWORK_START_GAME_WINDOW :{WHITE}Commencer une nouvelle partie
STR_NETWORK_NEW_GAME_NAME :{BLACK}Nom de la partie:
STR_NETWORK_NEW_GAME_NAME_TIP :{BLACK}Le nom de la partie sera affich<63> aux autres joueurs dans le menu de s<>lection de partie multijoueur
STR_NETWORK_SET_PASSWORD :{BLACK}Choisir le mot de passe
STR_NETWORK_PASSWORD :{BLACK}Mot de passe:
STR_NETWORK_PASSWORD_TIP :{BLACK}Prot<6F>ger votre partie avec un mot de passe si vous ne souhaitez pas que d'autres joueurs la rejoignent
STR_NETWORK_SELECT_MAP :{BLACK}Choisissez une carte:
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Sur quelle carte voulez-vous jouer?
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Nombre de clients max. :
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Choisir un nombre maximum de clients. Tous les emplacements n'auront pas besoin d'<27>tre remplis.
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :LAN
STR_NETWORK_INTERNET :Internet
STR_NETWORK_LAN_INTERNET :LAN / Internet
STR_NETWORK_INTERNET_ADVERTISE :Internet (publier)
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_CLIENTS :2 clients
STR_NETWORK_3_CLIENTS :3 clients
STR_NETWORK_4_CLIENTS :4 clients
STR_NETWORK_5_CLIENTS :5 clients
STR_NETWORK_6_CLIENTS :6 clients
STR_NETWORK_7_CLIENTS :7 clients
STR_NETWORK_8_CLIENTS :8 clients
STR_NETWORK_9_CLIENTS :9 clients
STR_NETWORK_10_CLIENTS :10 clients
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Langue parl<72>e :
STR_NETWORK_LANGUAGE_TIP :{BLACK}Les autres joueurs sauront quelle langue est parl<72>e sur ce serveur.
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_NUMBER_OF_PLAYERS :{BLACK}Nombre de joueurs:
STR_NETWORK_NUMBER_OF_PLAYERS_TIP :{BLACK}Choisissez le nombre maximum de joueurs. Vous n'<27>tes pas oblig<69> de remplir tous les emplacements.
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_PLAYERS :2 joueurs
STR_NETWORK_3_PLAYERS :3 joueurs
STR_NETWORK_4_PLAYERS :4 joueurs
STR_NETWORK_5_PLAYERS :5 joueurs
STR_NETWORK_6_PLAYERS :6 joueurs
STR_NETWORK_7_PLAYERS :7 joueurs
STR_NETWORK_8_PLAYERS :8 joueurs
STR_NETWORK_START_GAME :{BLACK}D<>marrer la partie
STR_NETWORK_START_GAME_TIP :{BLACK}D<>marrer une nouvelle partie r<>seau <20> partir d'une carte al<61>atoire ou d'un sc<73>nario
STR_NETWORK_LOAD_GAME :{BLACK}Charger une partie
@@ -1271,62 +1231,17 @@ STR_NETWORK_LOAD_GAME_TIP :{BLACK}Continuer une partie multijoueur sauv
STR_NETWORK_LOAD_SCENARIO :{BLACK}Charger un sc<73>nario
STR_NETWORK_LOAD_SCENARIO_TIP :{BLACK}D<>marrer une nouvelle partie r<>seau <20> partir d'un sc<73>nario
############ Leave those lines in this order!!
STR_NETWORK_LANG_ANY :Peu importe
STR_NETWORK_LANG_ENGLISH :Anglais
STR_NETWORK_LANG_GERMAN :Allemand
STR_NETWORK_LANG_FRENCH :Fran<61>ais
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Chat d'avant jeu
STR_NETWORK_PREPARE_TO_JOIN :{BLACK}Se pr<70>pare <20> rejoindre : {ORANGE}{STRING}
STR_NETWORK_COMPANY_LIST_TIP :{BLACK}Une liste des compagnies pr<70>sentes dans le jeu. Vous pouvez soit en rejoindre une, soit en cr<63>er une.
STR_NETWORK_NEW_COMPANY :{BLACK}Nouvelle compagnie
STR_NETWORK_NEW_COMPANY_TIP :{BLACK}Cr<43>e une nouvelle compagnie
STR_NETWORK_SEND :{BLACK}Envoyer
STR_NETWORK_SEND_TIP :{BLACK}Envoie un message aux autres joueurs
STR_NETWORK_COMPANY_NAME :{BLACK}Nom de la compagnie:
STR_NETWORK_COMPANY_NAME_TIP :{BLACK}Change le nom de votre compagnie. Appuyer sur Entr<EFBFBD>e pour valider les changements
STR_NETWORK_SPECTATE_GAME :{BLACK}Observer une partie
STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Permet d'observer une partie en tant que spectateur
STR_NETWORK_JOIN_COMPANY :{BLACK}Rejoindre la compagnie
STR_NETWORK_JOIN_COMPANY_TIP :{BLACK}Aider <20> g<>rer cette compagnie
STR_NETWORK_REFRESH :{BLACK}Rafra<EFBFBD>chir
STR_NETWORK_REFRESH_TIP :{BLACK}Rafra<72>chir les infos <20> propos du serveur
STR_NETWORK_COMPANY_INFO :{SILVER}INFO DE LA COMPAGNIE
STR_NETWORK_COMPANY_NAME :{SILVER}Nom de la compagnie : {WHITE}{STRING}
STR_NETWORK_INAUGURATION_YEAR :{SILVER}Inauguration : {WHITE}{NUMU16}
STR_NETWORK_VALUE :{SILVER}Valeur de la compagnie : {WHITE}{CURRENCY64}
STR_NETWORK_CURRENT_BALANCE :{SILVER}Argent courant : {WHITE}{CURRENCY64}
STR_NETWORK_LAST_YEARS_INCOME :{SILVER}Revenus de l'ann<6E>e derni<6E>re : {WHITE}{CURRENCY64}
STR_NETWORK_PERFORMANCE :{SILVER}Performance : {WHITE}{NUMU16}
STR_NETWORK_VEHICLES :{SILVER}V<>hicules : {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_STATIONS :{SILVER}Stations : {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_PLAYERS :{SILVER}Joueurs : {WHITE}{STRING}
STR_NETWORK_CONNECTING :{WHITE}Connection en cours...
############ Leave those lines in this order!!
STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Connection en cours..
STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Autorisation en cours..
STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Attente..
STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) T<>l<EFBFBD>chargement de la carte..
STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Traitement des donn<6E>es..
STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Enregistrement..
STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Rapatriement des infos sur le jeu..
STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Rapatriement des infos sur la compagnie..
############ End of leave-in-this-order
STR_NETWORK_CONNECTING_WAITING :{BLACK}{INT32} client(s) avant nous
STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{INT32} / {INT32} ko d<>j<EFBFBD> t<>l<EFBFBD>charg<72>s
STR_NETWORK_DISCONNECT :{BLACK}D<>connecter
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Entrez votre message <20> envoyer
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Enter the amount of money you want to give
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Le serveur est prot<6F>g<EFBFBD>. Entrez le mot de passe
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}La compagnie est prot<6F>g<EFBFBD>e. Entrez le mot de passe
STR_NETWORK_CLIENT_LIST :{WHITE}Liste des clients
STR_NETWORK_NEW_COMPANY :{BLACK}Nouvelle compagnie
STR_NETWORK_NEW_COMPANY_TIP :{BLACK}Cr<EFBFBD>e une nouvelle compagnie
STR_NETWORK_READY :{BLACK}Pr<EFBFBD>t
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} Aucun p<>riph<70>rique r<>seau trouv<75> ou programme compil<69> sans ENABLE_NETWORK
STR_NETWORK_ERR_NOSERVER :{WHITE} Aucune partie r<>seau n'a <20>t<EFBFBD> trouv<75>e
@@ -1334,56 +1249,7 @@ STR_NETWORK_ERR_NOCONNECTION :{WHITE} Le serveur n'a pas r
STR_NETWORK_ERR_DESYNC :{WHITE} La synchronisation de la partie r<>seau a <20>chou<6F>e.
STR_NETWORK_ERR_LOSTCONNECTION :{WHITE} La connection de la partie r<>seau a <20>t<EFBFBD> perdue.
STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE} La sauvegarde serveur n'a pas pu <20>tre charg<72>e.
STR_NETWORK_ERR_SERVER_START :{WHITE} Le serveur n'a pas pu <20>tre d<>marr<72>.
STR_NETWORK_ERR_CLIENT_START :{WHITE} Connection <20>chou<6F>e.
STR_NETWORK_ERR_TIMEOUT :{WHITE} La connection #{NUMU16} a d<>pass<73> le temps d'attente.
STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Il y a eu une erreur de protocole et la connection est donc ferm<72>e.
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} La r<>vision de ce client ne correspond pas <20> celle du serveur.
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Mot de passe incorrect.
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Le serveur est plein
STR_NETWORK_ERR_KICKED :{WHITE} Vous avez <20>t<EFBFBD> jet<65> du serveur
STR_NETWORK_ERR_CHEATER :{WHITE} Tricher n'est pas autoris<69> sur ce serveur
STR_NETWORK_ERR_LEFT :a quitt<74> la partie
############ Leave those lines in this order!!
STR_NETWORK_ERR_CLIENT_GENERAL :erreur g<>n<EFBFBD>rale
STR_NETWORK_ERR_CLIENT_DESYNC :erreur de d<>synchronisation
STR_NETWORK_ERR_CLIENT_SAVEGAME :chargement de la carte impossible
STR_NETWORK_ERR_CLIENT_CONNECTION_LOST :connection perdue
STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR :erreur de protocole
STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED :non autoris<69>
STR_NETWORK_ERR_CLIENT_NOT_EXPECTED :paquet <20>trange re<72>u
STR_NETWORK_ERR_CLIENT_WRONG_REVISION :r<>vision incorrecte
STR_NETWORK_ERR_CLIENT_NAME_IN_USE :nom d<>j<EFBFBD> utilis<69>
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :mot de passe de partie incorrect
STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH :mauvais player-id dans DoCommand
STR_NETWORK_ERR_CLIENT_KICKED :jet<65> par le serveur
STR_NETWORK_ERR_CLIENT_CHEATER :a tent<6E> de tricher
############ End of leave-in-this-order
STR_NETWORK_CLIENT_JOINED :a rejoint la partie
STR_NETWORK_GIVE_MONEY :vous a donn<6E> un peu d'argent ({CURRENCY})
STR_NETWORK_GAVE_MONEY_AWAY :vous avez donn<6E> <20> {STRING} de l'argent ({CURRENCY})
STR_NETWORK_CHAT_COMPANY :[Equipe] {STRING}:
STR_NETWORK_CHAT_TO_COMPANY :[Equipe] A {STRING}:
STR_NETWORK_CHAT_CLIENT :[Priv<69>] {STRING}:
STR_NETWORK_CHAT_TO_CLIENT :[Priv<69>] A {STRING}:
STR_NETWORK_CHAT_ALL :[Tous] {STRING}:
STR_NETWORK_NAME_CHANGE :a chang<6E> son nom pour
STR_NETWORK_SERVER_SHUTDOWN :{WHITE} Le serveur a ferm<72> la session
STR_NETWORK_SERVER_REBOOT :{WHITE} Le serveur red<65>marre...{}Veuillez patienter...
STR_NETWORK_SERVER :Serveur
STR_NETWORK_CLIENT :Client
STR_NETWORK_CLIENTLIST_NONE :(aucun)
STR_NETWORK_CLIENTLIST_KICK :Jeter
STR_NETWORK_CLIENTLIST_GIVE_MONEY :Donner de l'argent
STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Parler <20> tous
STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Parler <20> la compagnie
STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Message priv<69>
STR_NETWORK_SEND :{BLACK}Envoyer
############ end network gui strings
@@ -1459,7 +1325,7 @@ STR_1802_ROAD_CONSTRUCTION :{WHITE}Construction routi
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Choisir Pont Routier
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Impossible de construire la route ici...
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Impossible de retirer la route ici...
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Orientation du d<>p<EFBFBD>t
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Orientation du d<>p<EFBFBD>t routier
STR_1807_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Impossible de construire un d<>p<EFBFBD>t routier ici...
STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}Impossible de construire un arr<72>t d'autobus...
STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}Impossible de construire une station de camions...
@@ -1672,7 +1538,7 @@ STR_3062_BUS_STATION :Arr
STR_3063_SHIP_DOCK :Port
STR_3064_HIGHLIGHT_COVERAGE_AREA :{BLACK}Afficher la zone couverte
STR_3065_DON_T_HIGHLIGHT_COVERAGE :{BLACK}Ne pas afficher la zone couverte
STR_3066_COVERAGE_AREA_HIGHLIGHT :{BLACK}Afficher la zone couverte
STR_3066_COVERAGE_AREA_HIGHLIGHT :{BLACK}Affichage de la zone couverte
STR_3067_MONORAIL_STATION_SELECT :{WHITE}Choix de la gare monorail
STR_3068_DOCK :{WHITE}Port
STR_3069_BUOY :Bou<6F>e
@@ -1954,7 +1820,7 @@ STR_683B_HOSTILE :Hostile
##id 0x7000
STR_7000 :
STR_7001 :{WHITE}{STRING} {BLACK}{STRING}
STR_7001 :{WHITE}{STRING}{BLACK}{STRING}
STR_7002_PLAYER :(Joueur {COMMA16})
STR_7004_NEW_FACE :{BLACK}Nouveau visage
STR_7005_COLOR_SCHEME :{BLACK}Couleur
@@ -1966,7 +1832,7 @@ STR_700A_COMPANY_NAME :Nom de la soci
STR_700B_PRESIDENT_S_NAME :Nom du P.D.G.
STR_700C_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Impossible de changer le nom de compagnie...
STR_700D_CAN_T_CHANGE_PRESIDENT :{WHITE}Impossible de changer le nom du P.D.G. ...
STR_700E_FINANCES :{WHITE}Finances: {STRING} {BLACK}{STRING}
STR_700E_FINANCES :{WHITE}Finances: {STRING}{BLACK}{STRING}
STR_700F_EXPENDITURE_INCOME :{WHITE}D<>penses/Revenus
STR_7010 :{WHITE}{NUMU16}
STR_7011_CONSTRUCTION :{GOLD}Construction
@@ -2071,9 +1937,6 @@ STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Reconstruit le quartier g
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Impossible de construire le si<73>ge...
STR_7072_VIEW_HQ :{BLACK}Voir le si<73>ge
STR_RELOCATE_HQ :{BLACK}D<>m<EFBFBD>nager le QG
STR_COMPANY_PASSWORD :{BLACK}Mot de passe
STR_COMPANY_PASSWORD_TOOLTIP :{BLACK}Permet de prot<6F>ger par mot de passe votre compagnie pour emp<6D>cher des utilisateurs non-autoris<69>s de rejoindre. Utilisez '*' pour vider le mot de passe.
STR_SET_COMPANY_PASSWORD :Choisir le mot de passe de la compagnie
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}R<>cession mondiale!{}{}Les experts financiers craignent le pire!
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}Fin de la r<>cession!{}{}La reprise redonne confiance aux industries!
STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Bascule entre une grande/petite fen<65>tre
@@ -2423,8 +2286,8 @@ STR_8838_N_A :N/D{SKIP}
STR_8839_CAN_T_SELL_RAILROAD_VEHICLE :{WHITE}Impossible de vendre le v<>hicule ferroviaire...
STR_883A_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Impossible de trouver la route jusqu'au d<>p<EFBFBD>t
STR_883B_CAN_T_STOP_START_TRAIN :{WHITE}Impossible de d<>marrer/stopper le train...
STR_883C_SERVICING_INTERVAL_DAYS :{BLACK}Intervalle de maintenance: {LTBLUE}{COMMA16}jours{BLACK} , derni<EFBFBD>re le : {LTBLUE}{DATE_LONG}
STR_SERVICING_INTERVAL_PERCENT :{BLACK}Intervalle de maintenance: {LTBLUE}{COMMA16}%{BLACK} , derni<EFBFBD>re le : {LTBLUE}{DATE_LONG}
STR_883C_SERVICING_INTERVAL_DAYS :{BLACK}Intervalle de maintenance: {LTBLUE}{COMMA16}jours{BLACK} Derni<EFBFBD>re maintenance: {LTBLUE}{DATE_LONG}
STR_SERVICING_INTERVAL_PERCENT :{BLACK}Intervalle de maintenance: {LTBLUE}{COMMA16}%{BLACK} Derni<EFBFBD>re maintenance: {LTBLUE}{DATE_LONG}
STR_883D_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Trains - Cliquez sur un train pour obtenir des informations
STR_883E_BUILD_NEW_TRAINS_REQUIRES :{BLACK}Contruire de nouveaux trains (n<>cessite un d<>p<EFBFBD>t ferroviaire)
STR_883F_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Trains - Cliquez sur un train pour obtenir des informations, glissez le wagon pour l'ajouter/le supprimer du train
@@ -2612,7 +2475,7 @@ STR_GO_TO_SHIP_DEPOT :Aller au d
SERVICE_AT_SHIP_DEPOT :Maintenance au d<>p<EFBFBD>t de {TOWN}
##id 0xA000
STR_A000_AIRPORTS :{WHITE}A<>roports
STR_A000_AIRPORT_CONSTRUCT :{WHITE}Construction d'A<EFBFBD>roport
STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Impossible de construire un a<>roport ici...
STR_A002_AIRCRAFT_HANGAR :{WHITE}Hangar <20> {STATION}
STR_A003_NEW_AIRCRAFT :{BLACK}Nouvel a<>ronef
@@ -2700,8 +2563,8 @@ STR_MULTIPLAYER_PAUSED :{WHITE}Le jeu est en pause.{}La commande ne peut pa
STR_PERFORMANCE_DETAIL :{WHITE}D<>tail de l'<27>valuation de la performance
STR_PERFORMANCE_DETAIL_KEY :{BLACK}D<>tail
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA32}/{COMMA32})
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}{TINYFONT}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}{TINYFONT}({INT32}/{INT32})
STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{INT32}%
SET_PERFORMANCE_DETAIL_INT :{BLACK}{INT32}
############ Those following lines need to be in this order!!
@@ -2727,35 +2590,3 @@ STR_PERFORMANCE_DETAIL_MONEY_TIP :{BLACK}Quantit
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Avez-vous un emprunt <20>lev<65> ?
STR_PERFORMANCE_DETAIL_TOTAL_TIP :{BLACK}Total des points par rapport aux points possibles.
STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Param<61>tres Newgrf
STR_NEWGRF_APPLY_CHANGES :{BLACK}Appliquer les changements
STR_NEWGRF_SET_PARAMETERS :{BLACK}Changer les param<61>tres
STR_NEWGRF_TIP :{BLACK}Une liste de tous les sets Newgrf que vous avez install<6C>. Cliquez un set pour changer les param<61>tres.
STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}Il n'y a actuellement aucun fichier Newgrf install<6C> ! Veuillez vous r<>f<EFBFBD>rer au manuel pour des instructions sur l'installation de nouveaux graphiques.
STR_NEWGRF_FILENAME :{BLACK}Nom de fichier:
STR_NEWGRF_GRF_ID :{BLACK}GRF ID:
STR_CURRENCY_WINDOW :{WHITE}Devise personnalis<69>e
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Taux de change : {ORANGE}{CURRENCY} = {POUNDSIGN} {COMMA16}
STR_CURRENCY_SEPARATOR :{LTBLUE}Separateur :
STR_CURRENCY_PREFIX :{LTBLUE}Pr<50>fixe :
STR_CURRENCY_SUFFIX :{LTBLUE}Suffixe :
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Passer <20> l'Euro : {ORANGE}{INT32}
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Passer <20> l'Euro : {ORANGE}jamais
STR_CURRENCY_PREVIEW :{LTBLUE}Pr<50>visualisation : {ORANGE}{CURRENCY}
STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Changer les param<61>tres de devises personnalis<69>es
STR_TRAIN :{BLACK}{TRAIN}
STR_LORRY :{BLACK}{LORRY}
STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_SCHEDULED_TRAINS :{WHITE}{STATION} - {COMMA16} Trains
STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA16} V<>hicules routiers
STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA16} A<>ronefs
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA16} Navires
STR_SCHEDULED_TRAINS_TIP :{BLACK}Montre tous les trains qui ont cette station dans leur itin<69>raire
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Montre tous les v<>hicules routiers qui ont cette station dans leur itin<69>raire
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Montre tous les a<>ronefs qui ont cette station dans leur itin<69>raire
STR_SCHEDULED_SHIPS_TIP :{BLACK}Montre tous les navires qui ont cette station dans leur itin<69>raire

File diff suppressed because it is too large Load Diff

View File

@@ -310,7 +310,6 @@ STR_0134_UNIX :Unix
STR_0135_OSX :OSX
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_0139_IMPERIAL_MILES :Imperial (Meilen)
STR_013A_METRIC_KILOMETERS :Metrisch (Kilometer)
@@ -353,8 +352,7 @@ STR_015E_QUIT_GAME :Spiel beenden
STR_015F_QUIT :Beenden
STR_0160_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Bist du sicher, dass du das Spiel beenden willst?
STR_0161_QUIT_GAME :{WHITE}Spiel beenden
STR_SORT_ORDER_TIP :{BLACK}Sortierreihenfolge ausw<73>hlen absteigend/aufsteigend
STR_SORT_CRITERIA_TIP :{BLACK}Sortierkriterium ausw<73>hlen
STR_SORT_TIP :{BLACK}Sortierreihenfolge ausw<73>hlen
SRT_SORT_BY :{BLACK}Sortieren nach
STR_SORT_BY_POPULATION :{BLACK}Bev<65>lkerung
@@ -419,7 +417,6 @@ STR_0189 :{BLACK}{SMALLDOWNARROW}
STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Das Wartungsintervall kann nicht ge<67>ndert werden...
STR_018B_CLOSE_WINDOW :{BLACK}Fenster schlie<69>en
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Titelleiste verschieben um das Fenster zu bewegen
STR_STICKY_BUTTON :{BLACK}Diese Fenster markieren, damit es nicht durch die
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Geb<65>ude usw. auf einem Planquadrat abrei<65>en
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Land absenken
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Land anheben
@@ -498,8 +495,6 @@ STR_01CD_SELECT_TUTORIAL_DEMONSTRATION :{WHITE}Einf
STR_01CE_CARGO_ACCEPTED :{BLACK}Akzeptierte Fracht: {LTBLUE}{STRING}
STR_01CF_CARGO_ACCEPTED :{BLACK}Akzeptierte Fracht: {LTBLUE}{STRING}, {STRING}
STR_01D0_CARGO_ACCEPTED :{BLACK}Akzeptierte Fracht: {LTBLUE}{STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_4 :{BLACK}Akzeptierte Fracht: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_5 :{BLACK}Akzeptierte Fracht: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}, {STRING}
############ range for cargo acecpted ends
STR_01D1_8 :({COMMA8}/8 {STRING})
@@ -542,7 +537,7 @@ STR_01F5_SELECT_NEW_STYLE_MUSIC :{BLACK}Programm 'Modern' w
STR_01F6_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Programm 'Individuell 1' (benutzerdefiniert) w<>hlen
STR_01F7_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Programm 'Individuell 2' (benutzerdefiniert) w<>hlen
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}L<>sche laufendes Programm (nur f<>r Individuell 2 und Individuell 2)
STR_01F9_SAVE_MUSIC_SETTINGS :{BLACK}Musikeinstellungen speichern
STR_01F9_SAVE_MUSIC_SETTINGS_TO :{BLACK}Sichere Musikeinstellungen
STR_01FA_CLICK_ON_MUSIC_TRACK_TO :{BLACK}Klicke auf den Musiktitel, um ihn in das laufende Programm zu <20>bernehmen (nur f<>r Individuell 1 und Individuell 2)
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Schalte Programmauswahl an/aus
STR_01FC_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Zeige Musiktitelauswahl
@@ -727,7 +722,7 @@ STR_02BC_VEHICLE_DESIGN_NAMES :{BLACK}Fahrzeugnamen
STR_02BD :{BLACK}{STRING}
STR_02BE_DEFAULT :Standard
STR_02BF_CUSTOM :Eigene
STR_02C0_SAVE_CUSTOM_NAMES :{BLACK}Angepasste Namen speichern
STR_02C0_SAVE_CUSTOM_NAMES_TO_DISK :{BLACK}Eigene Namen abspeichern
STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION :{BLACK}Auswahl der Fahrzeugnamen
STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Eigene Namen abspeichern
@@ -738,20 +733,16 @@ STR_02C5_DIFFICULTY_SETTINGS :Schwierigkeitsgrad
STR_02C6_DIFFICULTY_SETTINGS :Schwierigkeitsgrad
STR_02C7_CONFIG_PATCHES :Einstellungen der Patches
STR_02C8_CONFIG_PATCHES :Einstellungen der Patches
STR_NEWGRF_SETTINGS :Newgrf-Einstellungen
STR_NEWGRF_SETTINGS2 :Newgrf-Einstellungen
STR_GAMEOPTMENU_0A :
STR_GAMEOPTMENU_0B :
STR_CLOSE_ALL_WINDOWS :ALLE Fenster schlie<69>en
STR_CLOSE_ALL_WINDOWS2 :ALLE Fenster schlie<69>en
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}St<53>dtenamen anzeigen
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}St<53>dtenamen anzeigen
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Stationsnamen anzeigen
STR_02CC_STATION_NAMES_DISPLAYED :{SETX 12}Stationsnamen anzeigen
STR_02CD_SIGNS_DISPLAYED :{CHECKMARK}{SETX 12}Schilder anzeigen
STR_02CE_SIGNS_DISPLAYED :{SETX 12}Schilder anzeigen
STR_WAYPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Wegpunkte anzeigen
STR_WAYPOINTS_DISPLAYED2 :{SETX 12}Wegpunkte anzeigen
STR_CHECKPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Wegpunkte anzeigen
STR_CHECKPOINTS_DISPLAYED2 :{SETX 12}Wegpunkte anzeigen
STR_02CF_FULL_ANIMATION :{CHECKMARK}{SETX 12}Vollst<73>ndige Animation
STR_02D0_FULL_ANIMATION :{SETX 12}Vollst<73>ndige Animation
STR_02D1_FULL_DETAIL :{CHECKMARK}{SETX 12}Vollst<73>ndige Detailansicht
@@ -774,13 +765,13 @@ STR_02DC_DISPLAY_SUBSIDIES :{BLACK}Subventionen anzeigen
STR_02DD_SUBSIDIES :Subventionen
STR_02DE_MAP_OF_WORLD :Weltkarte
STR_EXTRA_VIEW_PORT :Zusatzansicht
STR_02DF_TOWN_DIRECTORY :St<53>dteverzeichnis
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Ansicht {COMMA16}
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}In Zusatzansicht
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Kopieren der Position im Hauptfenster in diese Zusatzansicht
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Aus Zusatzansicht
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Kopieren der Position dieser Zusatzansicht ins Hauptfenster
STR_02DF_TOWN_DIRECTORY :St<53>dteverzeichnis
STR_02E0_CURRENCY_UNITS :{BLACK}W<>hrung
STR_02E1 :{BLACK}{SKIP}{STRING}
STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}W<>hrung ausw<73>hlen
@@ -804,16 +795,16 @@ STR_02F8_EVERY_3_MONTHS :Alle 3 Monate
STR_02F9_EVERY_6_MONTHS :Alle 6 Monate
STR_02FA_EVERY_12_MONTHS :Alle 12 Monate
STR_02FB_START_A_NEW_GAME :{BLACK}Ein neues Spiel beginnen
STR_02FC_LOAD_A_SAVED_GAME :{BLACK}Ein gespeichertes Spiel laden
STR_02FC_LOAD_A_SAVED_GAME_FROM :{BLACK}Einen Spielstand laden
STR_02FD_VIEW_DEMONSTRATIONS_TUTORIALS :{BLACK}<7D>bung / Einf<6E>hrung
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}Eine eigene Spielwelt / Szenario kreieren
STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}Einspielermodus w<>hlen
STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}Mehrspielerspiel mit 2-8 Spielern w<>hlen
STR_0300_SELECT_TWO_PLAYER_GAME :{BLACK}Mehrspielermodus w<>hlen
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Spieleinstellungen anzeigen
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Schwierigkeitsgrad anzeigen
STR_0303_START_A_NEW_GAME_USING :{BLACK}Starte ein neues Spiel in einem eigenen Szenario
STR_0304_QUIT :{BLACK}Beenden
STR_0305_QUIT_OPENTTD :{BLACK}'OpenTTD' beenden
STR_0305_LEAVE_OPENTTD :{BLACK}'OpenTTD' verlassen und beenden
STR_0306_VIEW_DEMONSTRATION_TUTORIAL :{BLACK}<7D>bung / Einf<6E>hrung anzeigen
STR_0307_OPENTTD :{WHITE}OpenTTD {REV}
STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...kann nur in St<53>dten gebaut werden
@@ -836,7 +827,7 @@ STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...kann nur im W
STR_0319_PAUSED :{YELLOW}* * ANGEHALTEN * *
STR_031B_SCREENSHOT_SUCCESSFULLY :{WHITE}Screenshot ist gespeichert als '{STRING}'
STR_031C_SCREENSHOT_FAILED :{WHITE}Screenshot misslungen!
STR_031C_SCREENSHOT_FAILED :{WHITE}Screenshot misslungen !
STR_0329_PURCHASE_LAND_FOR_FUTURE :{BLACK}Land f<>r k<>nftige Nutzung kaufen
STR_032A_1_ROAD_VEHICLE_SERVICE :{BLACK}1: Fahrzeugreparatur
@@ -861,46 +852,41 @@ STR_TOWNNAME_SWEDISH :Schwedisch
STR_TOWNNAME_DUTCH :Niederl<72>ndisch
STR_TOWNNAME_FINNISH :Finnisch
STR_TOWNNAME_POLISH :Polnisch
STR_TOWNNAME_CZECH :Tschechisch
STR_TOWNNAME_SLOVAKISH :Slovakisch
STR_TOWNNAME_HUNGARIAN :Ungarisch
STR_TOWNNAME_AUSTRIAN :<3A>sterreichisch
STR_TOWNNAME_ROMANIAN :Rum<75>nisch
STR_TOWNNAME_CZECH :Tschechisch
############ end of townname region
STR_CURR_GBP :Pfund ({POUNDSIGN})
STR_CURR_USD :Dollar ($)
STR_CURR_EUR :Euro (<28>)
STR_CURR_POUNDS :Pfund ({POUNDSIGN})
STR_CURR_DOLLARS :Dollar ($)
STR_CURR_FF :Frz. Franc (FF)
STR_CURR_DM :Deutsche Mark (DM)
STR_CURR_YEN :Yen ({YENSIGN})
STR_CURR_PT :Peseten (Pt)
STR_CURR_FT :Ungarische Forint (Ft)
STR_CURR_ZL :Polnische Zloty (zl)
STR_CURR_ATS :<3A>sterreich. Schilling (ATS)
STR_CURR_BEF :Belgische Franc (BEF)
STR_CURR_CHF :Schweizer Franken (CHF)
STR_CURR_CZK :Tschechische Koruna (CZK)
STR_CURR_DEM :Deutsche Mark (DEM)
STR_CURR_DKK :D<>nische Kronen (DKK)
STR_CURR_ESP :Peseta (ESP)
STR_CURR_FIM :Finnmark (FIM)
STR_CURR_FRF :Franc (FRF)
STR_CURR_GRD :Griech. Drachmen (GRD)
STR_CURR_HUF :Ungarische Forint (HUF)
STR_CURR_ISK :Isl<73>ndische Krona (ISK)
STR_CURR_ITL :Italienische Lira (ITL)
STR_CURR_CHF :Schweizer Franken (CHF)
STR_CURR_NLG :Niederl<72>nd. Gulden (NLG)
STR_CURR_NOK :Norwegische Kronen (NOK)
STR_CURR_PLN :Polnische Zloty (PLN)
STR_CURR_ROL :Rum<75>nische Lei (Lei)
STR_CURR_RUR :Russische Rubel (rur)
STR_CURR_ITL :Italienische Lira (ITL)
STR_CURR_SEK :Swedische Kronen (SEK)
STR_CURR_CUSTOM :Eigene...
STR_CURR_RUR :Russische Rubel (rur)
STR_CURR_CZK :Tschechische Koruna (CZK)
STR_CURR_ISK :Isl<73>ndische Krona (ISK)
STR_CURR_NOK :Norwegische Kronen (NOK)
STR_CURR_ROL :Rum<75>nische Lei (Lei)
STR_CURR_EUR :Euro (<28>)
STR_OPTIONS_LANG :{BLACK}Sprache
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_LANG_TIP :{BLACK}Sprache f<>r die Oberfl<66>che aussuchen
STR_OPTIONS_FULLSCREEN :{BLACK}Vollbild
STR_OPTIONS_FULLSCREEN_TIP :{BLACK}Diese Checkbox aktivieren, um OpenTTD im Vollbildmodus zu spielen
STR_OPTIONS_RES :{BLACK}Bildschirmgr<67><72>e
STR_OPTIONS_RES_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_RES_TIP :{BLACK}Bildschirmgr<67><72>e ausw<73>hlen
@@ -980,13 +966,11 @@ STR_CONFIG_PATCHES_OFF :Aus
STR_CONFIG_PATCHES_ON :An
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Zeige Fahrzeuggeschwindigkeit in der Statusleiste: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Erlaube das Bauen an H<>ngen und K<>sten: {ORANGE}{STRING}
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Aktiviere realistische Einzugsgebiete: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Erlaube die Entfernung von Industrien, weiteren Stra<72>en usw.: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Erlaube das Bauen von sehr langen Z<>gen: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Realistische Zugbeschleunigung aktivieren: {ORANGE}{STRING}
STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Bahnh<6E>fe vereinigen, die nebeneinander gebaut werden: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FULLLOADANY :{LTBLUE}Verlasse die Station, wenn eine Fracht vollgeladen ist: {ORANGE}{STRING}
STR_CONFIG_PATCHES_IMPROVEDLOAD :{LTBLUE}Verbessertes Beladeverfahren nutzen: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INFLATION :{LTBLUE}Inflation: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Liefere Fracht nur, wenn die Station diese annimmt: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Erlaube das Bauen von sehr langen Br<42>cken: {ORANGE}{STRING}
@@ -1053,8 +1037,6 @@ STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Position der Haupttoolbar: {ORANGE}{
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Links
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :Mitte
STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT :Rechts
STR_CONFIG_PATCHES_SNAP_RADIUS :{LTBLUE}Fenster schnappen aneinander, wenn n<>her als: {ORANGE}{STRING} px
STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED :{LTBLUE}Fenster schnappen aneinander, wenn n<>her als: {ORANGE}ausgeschaltet
STR_CONFIG_PATCHES_GUI :{BLACK}Oberfl<66>che
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Konstruktion
@@ -1087,28 +1069,24 @@ STR_CHEAT_NO_JETCRASH :{LTBLUE}Flugzeuge st
STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}Wechsle Klima: {ORANGE} {STRING}
STR_CHEAT_CHANGE_DATE :{LTBLUE}<7D>ndere Datum: {ORANGE} {DATE_SHORT}
STR_HEADING_FOR_WAYPOINT :{LTBLUE}Fahre zu {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Fahre zu {WAYPOINT}, {VELOCITY}
STR_HEADING_FOR_CHECKPOINT :{LTBLUE}Fahre zu {CHECKPOINT}
STR_HEADING_FOR_CHECKPOINT_VEL :{LTBLUE}Fahre zu {CHECKPOINT}, {VELOCITY}
STR_GO_TO_WAYPOINT :Fahre <20>ber {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT :Fahre ohne Halt <20>ber {WAYPOINT}
STR_GO_TO_CHECKPOINT :Fahre <20>ber {CHECKPOINT}
STR_WAYPOINTNAME_CITY :Wegpunkt {TOWN}
STR_WAYPOINTNAME_CITY_SERIAL :Wegpunkt {TOWN} #{COMMA16}
STR_LANDINFO_WAYPOINT :Wegpunkt
STR_CHECKPOINTNAME_CITY :Wegpunkt {TOWN}
STR_CHECKPOINTNAME_CITY_SERIAL :Wegpunkt {TOWN} #{COMMA16}
STR_LANDINFO_CHECKPOINT :Wegpunkt
STR_WAYPOINT :{WHITE}Wegpunkt
STR_WAYPOINT_GRAPHICS_TIP :{BLACK}Wegpunkttyp ausw<73>hlen
STR_CHECKPOINT_VIEWPORT :{WHITE}{CHECKPOINT}
STR_CHECKPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{CHECKPOINT}
STR_CHECKPOINT_RAW :{CHECKPOINT}
STR_EDIT_CHECKPOINT_NAME :{WHITE}Wegpunktename <20>ndern
STR_WAYPOINT_VIEWPORT :{WHITE}{WAYPOINT}
STR_WAYPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{WAYPOINT}
STR_WAYPOINT_RAW :{WAYPOINT}
STR_EDIT_WAYPOINT_NAME :{WHITE}Wegpunktename <20>ndern
STR_CANT_CHANGE_WAYPOINT_NAME :{WHITE}Kann Wegpunktname nicht <20>ndern...
STR_CONVERT_RAIL_TO_WAYPOINT_TIP :{BLACK}<7D>ndere Schiene in einen Wegpunkt
STR_CANT_BUILD_TRAIN_WAYPOINT :{WHITE}Kann Wegpunkt hier nicht bauen...
STR_CANT_REMOVE_TRAIN_WAYPOINT :{WHITE}Kann Wegpunkt hier nicht entfernen...
STR_CANT_CHANGE_CHECKPOINT_NAME :{WHITE}Kann Wegpunktname nicht <20>ndern...
STR_CONVERT_RAIL_TO_CHECKPOINT_TIP :{BLACK}<7D>ndere Schiene in einen Wegpunkt
STR_CANT_BUILD_TRAIN_CHECKPOINT :{WHITE}Kann Wegpunkt hier nicht bauen...
STR_CANT_REMOVE_TRAIN_CHECKPOINT :{WHITE}Kann Wegpunkt hier nicht entfernen...
STR_BUILD_AUTORAIL_TIP :{BLACK}Bauen von Schienen unter Verwendung des Autoschienenmodus
@@ -1121,8 +1099,7 @@ STR_MANY_RANDOM_INDUSTRIES :{BLACK}Viele zuf
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Bedecke die Karte mit zuf<75>llig platzierten Industrien
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Kann keine Industrie erzeugen...
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}<7D>ffne die Landschaftsbau-Toolbar, um Land zu senken/heben, B<>ume zu pflanzen, etc.
STR_LANDSCAPING_TOOLBAR :{WHITE}Landschaftsbau
STR_LANDSCAPING_TOOLBAR :{WHITE}Landschaft bearbeiten
STR_LEVEL_LAND_TOOLTIP :{BLACK}Land ausgleichen
@@ -1194,76 +1171,59 @@ TEMP_AI_ACTIVATED :{WHITE}Achtung: Die neue KI ist noch im Alpha-Stadium. D
############ network gui strings
TEMP_STRING_NO_NETWORK :{WHITE}Der Netzwerkdialog funktioniert noch{}nicht vollst<73>ndig!
STR_NETWORK_MULTIPLAYER :{WHITE}Mehrspieler
STR_NETWORK_PLAYER_NAME :{BLACK}Spielername:
STR_NETWORK_ENTER_NAME_TIP :{BLACK}Mit diesem Namen identifizieren dich andere Spieler
STR_NETWORK_CONNECTION :{BLACK}Verbindung:
STR_NETWORK_CONNECTION_TIP :{BLACK}W<>hle zwischen Internet oder LAN-Verbindung aus
STR_NETWORK_START_SERVER :{BLACK}Server Starten
STR_NETWORK_START_SERVER_TIP :{BLACK}Einen eigenen Server starten
STR_NETWORK_GAME_NAME :{BLACK}Name
STR_NETWORK_GAME_NAME_TIP :{BLACK}Name des Spiels
STR_NETWORK_INFO_ICONS_TIP :{BLACK}Sprache, Server version, etc.
STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Ein Spiel der Liste durch Anklicken w<>hlen
STR_NETWORK_FIND_SERVER :{BLACK}Server suchen
STR_NETWORK_FIND_SERVER_TIP :{BLACK}Netzwerk nach einem Server durchsuchen
STR_NETWORK_ADD_SERVER :{BLACK}Server hinzuf<75>gen
STR_NETWORK_ADD_SERVER_TIP :{BLACK}F<>gt einen Server zu der Liste von Servern hinzu, die immer nach laufenden Spielen kontrolliert werden.
STR_NETWORK_DIRECT_CONNECT :{BLACK}Direkt verbinden
STR_NETWORK_ENTER_IP :{BLACK}IP Adresse des Servers eingeben
STR_NETWORK_DIRECT_CONNECT_TIP :{BLACK}Zu einer bekannten IP verbinden
STR_NETWORK_START_SERVER :{BLACK}Server Starten
STR_NETWORK_START_SERVER_TIP :{BLACK}Einen eigenen Server starten
STR_NETWORK_CLIENTS_ONLINE :{BLACK}{COMMA16}/{COMMA16}
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Clients
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Clients online / Clients max.
STR_NETWORK_GAME_INFO :{SILVER}GAME INFO
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Clients: {WHITE}{COMMA8} / {COMMA8}
STR_NETWORK_LANGUAGE :{SILVER}Sprache: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Tileset: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}Mapgr<67><72>e: {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_SERVER_VERSION :{SILVER}Serverversion: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Serveradresse: {WHITE}{STRING}
STR_NETWORK_START_DATE :{SILVER}Startdatum: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Aktuelles Datum: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Passwort gesch<63>tzt!
STR_NETWORK_SERVER_OFFLINE :{SILVER}SERVER OFFLINE
STR_NETWORK_SERVER_FULL :{SILVER}SERVER VOLL
STR_NETWORK_VERSION_MISMATCH :{SILVER}Versionskonflikt festgestellt
STR_NETWORK_PLAYER_NAME :{BLACK}Spielername:
STR_NETWORK_ENTER_NAME_TIP :{BLACK}Mit diesem Namen identifizieren dich andere Spieler
STR_NETWORK_JOIN_GAME :{BLACK}Spiel betreten
STR_NETWORK_SELECT_CONNECTION :{BLACK}Verbindungstyp w<>hlen:
STR_NETWORK_CONNECTION_TYPE_TIP :{BLACK}Zwischen Internetspiel und Spiel im lokalen Netz w<>hlen
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :LAN
STR_NETWORK_INTERNET :Internet
STR_NETWORK_GAME_NAME :{BLACK}Name
STR_NETWORK_GAME_NAME_TIP :{BLACK}Name des Spiels
STR_NETWORK_PLAYERS :{BLACK}#/#
STR_NETWORK_PLAYERS_TIP :{BLACK}Spieler im Spiel/Maximale Anzahl Spieler
STR_NETWORK_MAP_SIZE :{BLACK}Gr<47><72>e
STR_NETWORK_MAP_SIZE_TIP :{BLACK}Gr<47><72>e der Karte
STR_NETWORK_INFO_ICONS_TIP :{BLACK}Sprache, Server version, etc.
STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Ein Spiel der Liste durch Anklicken w<>hlen
STR_NETWORK_PLAYERS_VAL :{BLACK}{COMMA8}/{COMMA8}
STR_NETWORK_JOIN_GAME :{BLACK}Dem Spiel beitreten
STR_NETWORK_START_GAME_WINDOW :{WHITE}Neues Spiel beginnen
STR_NETWORK_NEW_GAME_NAME :{BLACK}Spielname:
STR_NETWORK_NEW_GAME_NAME_TIP :{BLACK}Der Name des Spieles wird anderen Spielern im Mehrspielerdialog angezeigt
STR_NETWORK_SET_PASSWORD :{BLACK}Passwort setzen
STR_NETWORK_PASSWORD :{BLACK}Passwort:
STR_NETWORK_PASSWORD_TIP :{BLACK}Vergebe ein Passwort, um zu verhindern, dass unbefugte Leute beitreten k<>nnen
STR_NETWORK_SELECT_MAP :{BLACK}Karte ausw<73>hlen:
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Welche Karte m<>chtest du spielen?
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Max. Anzahl an Clients:
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}W<>hlt die max. Anzahl an Clienten aus. Nicht alle Slots m<>ssen belegt werden.
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :LAN
STR_NETWORK_INTERNET :Internet
STR_NETWORK_LAN_INTERNET :LAN / Internet
STR_NETWORK_INTERNET_ADVERTISE :Internet (ank<6E>ndigen)
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_CLIENTS :2 Clienten
STR_NETWORK_3_CLIENTS :3 Clienten
STR_NETWORK_4_CLIENTS :4 Clienten
STR_NETWORK_5_CLIENTS :5 Clienten
STR_NETWORK_6_CLIENTS :6 Clienten
STR_NETWORK_7_CLIENTS :7 Clienten
STR_NETWORK_8_CLIENTS :8 Clienten
STR_NETWORK_9_CLIENTS :9 Clienten
STR_NETWORK_10_CLIENTS :10 Clienten
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Gesprochene Sprachen:
STR_NETWORK_LANGUAGE_TIP :{BLACK}Damit andere Spieler wissen, welche Sprache auf diesem Server gesprochen wird.
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_NUMBER_OF_PLAYERS :{BLACK}Anzahl der Spieler:
STR_NETWORK_NUMBER_OF_PLAYERS_TIP :{BLACK}W<>hle eine maximale Spielerzahl. Es k<>nnen auch weniger mitspielen.
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_PLAYERS :2 Spieler
STR_NETWORK_3_PLAYERS :3 Spieler
STR_NETWORK_4_PLAYERS :4 Spieler
STR_NETWORK_5_PLAYERS :5 Spieler
STR_NETWORK_6_PLAYERS :6 Spieler
STR_NETWORK_7_PLAYERS :7 Spieler
STR_NETWORK_8_PLAYERS :8 Spieler
STR_NETWORK_START_GAME :{BLACK}Spiel beginnen
STR_NETWORK_START_GAME_TIP :{BLACK}Startet ein neues Mehrspielerspiel auf einer Zufallskarte oder einem Szenario
STR_NETWORK_LOAD_GAME :{BLACK}Spiel Laden
@@ -1271,62 +1231,17 @@ STR_NETWORK_LOAD_GAME_TIP :{BLACK}L
STR_NETWORK_LOAD_SCENARIO :{BLACK}Szenario Laden
STR_NETWORK_LOAD_SCENARIO_TIP :{BLACK}Startet ein Mehrspielerspiel in einem Szenario
############ Leave those lines in this order!!
STR_NETWORK_LANG_ANY :Egal
STR_NETWORK_LANG_ENGLISH :Englisch
STR_NETWORK_LANG_GERMAN :Deutsch
STR_NETWORK_LANG_FRENCH :Franz<6E>sisch
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Mehrspielerlobby
STR_NETWORK_PREPARE_TO_JOIN :{BLACK}Spieleintritt vorbereiten: {ORANGE}{STRING}
STR_NETWORK_COMPANY_LIST_TIP :{BLACK}Eine Liste aller Firmen, die sich im Spiel befinden.
STR_NETWORK_NEW_COMPANY :{BLACK}Neues Unternehmen
STR_NETWORK_NEW_COMPANY_TIP :{BLACK}Ein neues Unternehmen gr<67>nden
STR_NETWORK_SEND :{BLACK}Absenden
STR_NETWORK_SEND_TIP :{BLACK}Schicke eine Nachricht an die anderen Spieler
STR_NETWORK_COMPANY_NAME :{BLACK}Firmenname:
STR_NETWORK_COMPANY_NAME_TIP :{BLACK}<EFBFBD>ndere den Namen des Unternehmens. Mit Eingabetaste best<73>tigen.
STR_NETWORK_SPECTATE_GAME :{BLACK}Beim Spiel zusehen
STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Als Zuschauer dem Spiel zusehen
STR_NETWORK_JOIN_COMPANY :{BLACK}Firma beitreten
STR_NETWORK_JOIN_COMPANY_TIP :{BLACK}Beim Verwalten der Firma helfen
STR_NETWORK_REFRESH :{BLACK}Aktualisieren
STR_NETWORK_REFRESH_TIP :{BLACK}Aktuallisiert die Serverinformationen
STR_NETWORK_COMPANY_INFO :{SILVER}Firmenprofil
STR_NETWORK_COMPANY_NAME :{SILVER}Firmenname: {WHITE}{STRING}
STR_NETWORK_INAUGURATION_YEAR :{SILVER}Gr<47>ndung: {WHITE}{NUMU16}
STR_NETWORK_VALUE :{SILVER}Firmenwert: {WHITE}{CURRENCY64}
STR_NETWORK_CURRENT_BALANCE :{SILVER}Kontostand: {WHITE}{CURRENCY64}
STR_NETWORK_LAST_YEARS_INCOME :{SILVER}Einkommen (letzes Jahr): {WHITE}{CURRENCY64}
STR_NETWORK_PERFORMANCE :{SILVER}Leistung: {WHITE}{NUMU16}
STR_NETWORK_VEHICLES :{SILVER}Fahrzeuge: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_STATIONS :{SILVER}Stationen: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_PLAYERS :{SILVER}Spieler: {WHITE}{STRING}
STR_NETWORK_CONNECTING :{WHITE}Verbinde...
############ Leave those lines in this order!!
STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Verbinde..
STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Authorisierung..
STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Warten..
STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Herunterladen der Karte..
STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Verarbeite Spieldaten..
STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registrieren...
STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Hole Spielinformationen..
STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Hole Firmeninformationen..
############ End of leave-in-this-order
STR_NETWORK_CONNECTING_WAITING :{BLACK}{INT32} Client(en) vor uns
STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{INT32} / {INT32} KB bisher heruntergeladen
STR_NETWORK_DISCONNECT :{BLACK}Trennen
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Gib deine Nachricht ein
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Gib an wieviel Geld du geben m<>chtest
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server ist gesch<63>tzt. Gib das Passwort ein
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Firma ist gesch<63>tzt! Passwort eingeben
STR_NETWORK_CLIENT_LIST :{WHITE}Clientenliste
STR_NETWORK_NEW_COMPANY :{BLACK}Neues Unternehmen
STR_NETWORK_NEW_COMPANY_TIP :{BLACK}Ein neues Unternehmen gr<67>nden
STR_NETWORK_READY :{BLACK}Fertig
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE}Keine Netzwerkschnittstellen gefunden oder ohne ENABLE_NETWORK kompiliert
STR_NETWORK_ERR_NOSERVER :{WHITE}Keine Netzwerkspiele gefunden
@@ -1334,56 +1249,7 @@ STR_NETWORK_ERR_NOCONNECTION :{WHITE}Der Server antwortete nicht auf die Anf
STR_NETWORK_ERR_DESYNC :{WHITE}Synchronisation des Netzwerkspiels fehlgeschlagen.
STR_NETWORK_ERR_LOSTCONNECTION :{WHITE}Verbindung zum Netzwerkspiel verloren.
STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE}Spielstand konnte nicht vom Server geladen werden.
STR_NETWORK_ERR_SERVER_START :{WHITE} Server konnte nicht gestartet werden.
STR_NETWORK_ERR_CLIENT_START :{WHITE} Verbindung konnte nicht hergestellt werden.
STR_NETWORK_ERR_TIMEOUT :{WHITE}Verbindung #{NUMU16} abgelaufen.
STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Protokollfehler: Die Verbindung musste getrennt werden.
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Ihre Version entspricht nicht der Serverversion.
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Falsches Passwort.
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Der Server ist voll.
STR_NETWORK_ERR_KICKED :{WHITE} Sie wurden vom Server gekickt.
STR_NETWORK_ERR_CHEATER :{WHITE} Cheating ist auf diesem Server nicht erlaubt
STR_NETWORK_ERR_LEFT :hat das Spiel verlassen.
############ Leave those lines in this order!!
STR_NETWORK_ERR_CLIENT_GENERAL :Allgemeiner Fehler
STR_NETWORK_ERR_CLIENT_DESYNC :Synchronisationsfehler
STR_NETWORK_ERR_CLIENT_SAVEGAME :Map konnte nicht geladen werden.
STR_NETWORK_ERR_CLIENT_CONNECTION_LOST :Verbindung verloren
STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR :Protokollfehler
STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED :nicht authorisiert
STR_NETWORK_ERR_CLIENT_NOT_EXPECTED :Unerwartetes Paket empfangen
STR_NETWORK_ERR_CLIENT_WRONG_REVISION :Falsche Version
STR_NETWORK_ERR_CLIENT_NAME_IN_USE :Name wird bereits verwendet
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :Falsches Spiel-Passwort
STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH :Falsche-SpielerID in DoCommand (Verarbeitungsfehler)
STR_NETWORK_ERR_CLIENT_KICKED :gekickt
STR_NETWORK_ERR_CLIENT_CHEATER :versuchte einen Cheat zu nutzen
############ End of leave-in-this-order
STR_NETWORK_CLIENT_JOINED :hat das Spiel betreten
STR_NETWORK_GIVE_MONEY :gab dir etwas Geld ({CURRENCY})
STR_NETWORK_GAVE_MONEY_AWAY :Du hast {STRING} etwas Geld gegeben ({CURRENCY})
STR_NETWORK_CHAT_COMPANY :[Team] {STRING}:
STR_NETWORK_CHAT_TO_COMPANY :[Team] An {STRING}:
STR_NETWORK_CHAT_CLIENT :[Privat] {STRING}:
STR_NETWORK_CHAT_TO_CLIENT :[Privat] An {STRING}:
STR_NETWORK_CHAT_ALL :[Alle] {STRING}:
STR_NETWORK_NAME_CHANGE :hat seinen Namen ge<67>ndert zu
STR_NETWORK_SERVER_SHUTDOWN :{WHITE} Der Server hat das Spiel beendet.
STR_NETWORK_SERVER_REBOOT :{WHITE} Der Server startet neu...{}Bitte warten...
STR_NETWORK_SERVER :Server
STR_NETWORK_CLIENT :Client
STR_NETWORK_CLIENTLIST_NONE :(keiner)
STR_NETWORK_CLIENTLIST_KICK :Kicken
STR_NETWORK_CLIENTLIST_GIVE_MONEY :Geld geben
STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Mit allen sprechen
STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Mit eigener Firma sprechen
STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Private Nachricht
STR_NETWORK_SEND :{BLACK}Senden
############ end network gui strings
@@ -1459,7 +1325,7 @@ STR_1802_ROAD_CONSTRUCTION :{WHITE}Stra
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Br<42>cke w<>hlen
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Kann hier keine Stra<72>e bauen...
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Kann diese Stra<72>e nicht entfernen...
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Fahrzeugdepot-Ausr.
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Fahrzeugdepotausrichtung
STR_1807_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Kann Fahrzeugdepot hier nicht bauen...
STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}Kann Busbahnhof nicht bauen...
STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}Kann Lkw-Ladeplatz nicht bauen...
@@ -1583,7 +1449,7 @@ STR_2801_PLACE_SIGN :Schild aufstellen
STR_2802_TREES :{WHITE}B<>ume
STR_2803_TREE_ALREADY_HERE :{WHITE}...hier sind bereits B<>ume
STR_2804_SITE_UNSUITABLE :{WHITE}...ungeeignetes Gel<65>nde
STR_2805_CAN_T_PLANT_TREE_HERE :{WHITE}Baum kann hier nicht gepflanzt werden...
STR_2805_CAN_T_PLANT_TREE_HERE :{WHITE}Schild kann hier nicht aufgestellt werden...
STR_2806 :{WHITE}{STRING}
STR_2807 :{TINYFONT}{WHITE}{STRING}
STR_2808_TOO_MANY_SIGNS :{WHITE}...zu viele Schilder
@@ -1634,8 +1500,8 @@ STR_303E_NO_LONGER_ACCEPTS :{WHITE}{STATION} akzeptiert keine {STRING} mehr
STR_303F_NO_LONGER_ACCEPTS_OR :{WHITE}{STATION} akzeptiert keine {STRING} oder {STRING} mehr
STR_3040_NOW_ACCEPTS :{WHITE}{STATION} akzeptiert jetzt {STRING}
STR_3041_NOW_ACCEPTS_AND :{WHITE}{STATION} akzeptiert jetzt {STRING} und {STRING}
STR_3042_BUS_STATION_ORIENTATION :{WHITE}Busbahnhof-Ausr.
STR_3043_TRUCK_STATION_ORIENT :{WHITE}Lkw-Ladeplatzes-Ausr.
STR_3042_BUS_STATION_ORIENTATION :{WHITE}Ausrichtung des Busbahnhofes
STR_3043_TRUCK_STATION_ORIENT :{WHITE}Ausrichtung des Lkw-Ladeplatzes
STR_3044_TOO_CLOSE_TO_ANOTHER_BUS :{WHITE}Zu dicht an einem anderen Busbahnhof
STR_3045_TOO_CLOSE_TO_ANOTHER_TRUCK :{WHITE}Zu dicht an einer anderen Lkw-Ladestation
STR_3046_MUST_DEMOLISH_BUS_STATION :{WHITE}Der Busbahnhof muss erst abgerissen werden
@@ -1767,7 +1633,7 @@ STR_4831_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}...Wald kann nur oberhalb der Sch
STR_4832_ANNOUNCES_IMMINENT_CLOSURE :{BLACK}{BIGFONT}{TOWN} {STRING} gibt bevorstehende Schlie<69>ung bekannt!
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO :{BLACK}{BIGFONT}Wegen fehlender Rohstoffe k<>ndigt {TOWN} {STRING} die drohende Schlie<69>ung an!
STR_4834_LACK_OF_NEARBY_TREES_CAUSES :{BLACK}{BIGFONT}Wegen Holzmangel gibt {TOWN} {STRING} die bevorstehende Schlie<69>ung bekannt!
STR_4835_INCREASES_PRODUCTION :{BLACK}{BIGFONT}{TOWN} {STRING} erh<72>ht die Produktion!
STR_4835_INCREASES_PRODUCTION :{BLACK}{BIGFONT}{TOWN} {STRING} erh<72>ht die Produktion !
STR_4836_NEW_COAL_SEAM_FOUND_AT :{BLACK}{BIGFONT}Neue Kohlevorkommen bei {TOWN} {STRING} gefunden!{}F<>rderung verdoppelt!
STR_4837_NEW_OIL_RESERVES_FOUND :{BLACK}{BIGFONT}Neue <20>lfunde bei {TOWN} {STRING}!{}F<>rderung wird vermutlich verdoppelt!
STR_4838_IMPROVED_FARMING_METHODS :{BLACK}{BIGFONT}Neue Getreideanbaumethoden bei {TOWN} {STRING} werden Ertr<74>ge verdoppeln!
@@ -1954,7 +1820,7 @@ STR_683B_HOSTILE :Feindlich
##id 0x7000
STR_7000 :
STR_7001 :{WHITE}{STRING} {BLACK}{STRING}
STR_7001 :{WHITE}{STRING}{BLACK}{STRING}
STR_7002_PLAYER :(Spieler {COMMA16})
STR_7004_NEW_FACE :{BLACK}Neues Gesicht
STR_7005_COLOR_SCHEME :{BLACK}Farbauswahl
@@ -2047,7 +1913,7 @@ STR_7059_TRANSPORT_COMPANY_MERGER :{BLACK}{BIGFONT}Transportfirmen fusioniere
STR_705A_HAS_BEEN_SOLD_TO_FOR :{BLACK}{BIGFONT}{STRING} ist verkauft worden an {STRING} f<>r {CURRENCY}!
STR_705B_WE_ARE_LOOKING_FOR_A_TRANSPORT :{WHITE}Wir suchen jemanden, der die Firma <20>bernimmt.{}{}Nehmen Sie das Angebot an und kaufen {STRING} f<>r {CURRENCY}?
STR_705C_BANKRUPT :{BLACK}{BIGFONT}Insolvenz!
STR_705D_HAS_BEEN_CLOSED_DOWN_BY :{BLACK}{BIGFONT}{STRING} ist von den Gl<47>ubigern geschlossen worden, alles Verm<72>gen wurde ver<65>ussert!
STR_705D_HAS_BEEN_CLOSED_DOWN_BY :{BLACK}{BIGFONT}{STRING} ist von den Gl<47>ubigern geschlossen worden, alles Verm<72>gen wurde ver<65>ussert !
STR_705E_NEW_TRANSPORT_COMPANY_LAUNCHED :{BLACK}{BIGFONT}Neue Transportfirma gegr<67>ndet!
STR_705F_STARTS_CONSTRUCTION_NEAR :{BLACK}{BIGFONT}{STRING} startet bei {TOWN}!
STR_7060_CAN_T_BUY_COMPANY :{WHITE}Kann die Firma nicht kaufen...
@@ -2071,9 +1937,6 @@ STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Errichte Firmensitz f
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Kann keinen Firmensitz bauen ...
STR_7072_VIEW_HQ :{BLACK}Zeige Firmensitz
STR_RELOCATE_HQ :{BLACK}HQ verlegen
STR_COMPANY_PASSWORD :{BLACK}Passwort
STR_COMPANY_PASSWORD_TOOLTIP :{BLACK}Sch<63>tze deine Firma mit einem Passwort, um unautorisierten Spielern den Beitritt zu verwehren.
STR_SET_COMPANY_PASSWORD :Firmen-Passwort setzen
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}Weltwirtschaftskrise!{}{}Finanzexperten bef<65>rchten schlimmsten Zusammenbruch der Wirtschaft!
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}Wirtschaftskrise beendet!{}{}Aufschwung des Handels gibt Vertrauen in die Industrie und st<73>rkt die Wirtschaft!
STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Schalter f<>r gro<72>es/kleines Fenster
@@ -2612,7 +2475,7 @@ STR_GO_TO_SHIP_DEPOT :Fahre zu {TOWN} Schiffswerft
SERVICE_AT_SHIP_DEPOT :Wartung bei {TOWN} Schiffswerft
##id 0xA000
STR_A000_AIRPORTS :{WHITE}Flugh<EFBFBD>fen
STR_A000_AIRPORT_CONSTRUCT :{WHITE}Flughafenbau
STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Flughafen kann hier nicht gebaut werden...
STR_A002_AIRCRAFT_HANGAR :{WHITE}{STATION} Flugzeughangar
STR_A003_NEW_AIRCRAFT :{BLACK}Neues Flugzeug
@@ -2691,7 +2554,7 @@ STR_B002_OIL_REFINERY_EXPLOSION :{BLACK}{BIGFONT}Explosion einer
STR_B003_FACTORY_DESTROYED_IN_SUSPICIOUS :{BLACK}{BIGFONT}Fabrik nahe {TOWN} durch mysteri<72>se Umst<73>nde zerst<73>rt!
STR_B004_UFO_LANDS_NEAR :{BLACK}{BIGFONT}'UFO' landet bei {TOWN}!
STR_B005_COAL_MINE_SUBSIDENCE_LEAVES :{BLACK}{BIGFONT}Stolleneinbruch hinterl<72><6C>t einen Pfad der Zerst<73>rung bei {TOWN}!
STR_B006_FLOOD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}Hochwasser!{}Mindestens {COMMA16} Menschen vermisst oder tot nach schwerer Flut!
STR_B006_FLOOD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}Hochwasser!{}Mindesten {COMMA16} Menschen vermisst oder tot nach schwerer Flut!
STR_BRIBE_FAILED :{WHITE}Ihr Bestechungsversuch wurde
STR_BRIBE_FAILED_2 :{WHITE}von einem regionalen Untersuchungsbeamten aufgedeckt.
@@ -2700,8 +2563,8 @@ STR_MULTIPLAYER_PAUSED :{WHITE}Spiel ist pausiert.{}Befehle k
STR_PERFORMANCE_DETAIL :{WHITE}Leistungsaufschl<68>sselung
STR_PERFORMANCE_DETAIL_KEY :{BLACK}Details
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA32}/{COMMA32})
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}{TINYFONT}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}{TINYFONT}({INT32}/{INT32})
STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{INT32}%
SET_PERFORMANCE_DETAIL_INT :{BLACK}{INT32}
############ Those following lines need to be in this order!!
@@ -2727,35 +2590,3 @@ STR_PERFORMANCE_DETAIL_MONEY_TIP :{BLACK}Bargeld
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Schuldenfalle?
STR_PERFORMANCE_DETAIL_TOTAL_TIP :{BLACK}Erreichte Punkte von der maximal erreichbaren Anzahl
STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Newgrf Einstellungen
STR_NEWGRF_APPLY_CHANGES :{BLACK}<7D>nderungen anwenden
STR_NEWGRF_SET_PARAMETERS :{BLACK}Parameter setzen
STR_NEWGRF_TIP :{BLACK}Eine Liste aller Newgrf-Sets, die installiert sind. Per Klick ausw<73>hlen.
STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}Keine Newgrf-Dateien installiert. Bitte Installationsanleitung im Handbuch nachschlagen.
STR_NEWGRF_FILENAME :{BLACK}Dateiname:
STR_NEWGRF_GRF_ID :{BLACK}GRF ID:
STR_CURRENCY_WINDOW :{WHITE}Eigene W<>hrung
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Wechselkurs: {ORANGE}{CURRENCY} = {POUNDSIGN} {COMMA16}
STR_CURRENCY_SEPARATOR :{LTBLUE}Trennsymbol:
STR_CURRENCY_PREFIX :{LTBLUE}Pr<50>fix:
STR_CURRENCY_SUFFIX :{LTBLUE}Suffix:
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Umstellung auf Euro: {ORANGE}{INT32}
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Umstellung auf Euro: {ORANGE}nie
STR_CURRENCY_PREVIEW :{LTBLUE}Vorschau: {ORANGE}{CURRENCY}
STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Parameter f<>r eigene W<>hrung <20>ndern
STR_TRAIN :{BLACK}{TRAIN}
STR_LORRY :{BLACK}{LORRY}
STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_SCHEDULED_TRAINS :{WHITE}{STATION} - {COMMA16} Z<>ge
STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA16} Stra<72>enfahrzeuge
STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA16} Flugzeuge
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA16} Schiffe
STR_SCHEDULED_TRAINS_TIP :{BLACK}Zeige alle Z<>ge, die diesen Bahnhof anfahren
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Zeige alle Fahrzeuge, die diese Station anfahren
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Zeige alle Flugzeuge, die diesen Flughafen anfliegen
STR_SCHEDULED_SHIPS_TIP :{BLACK}Zeige alle Schiffe, die diesen Hafen ansteuern

View File

@@ -310,7 +310,6 @@ STR_0134_UNIX :Unix
STR_0135_OSX :OSX
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_0139_IMPERIAL_MILES :M<>rf<72>ld
STR_013A_METRIC_KILOMETERS :Kilom<6F>ter
@@ -353,8 +352,7 @@ STR_015E_QUIT_GAME :Kil
STR_015F_QUIT :Kil<69>p<EFBFBD>s
STR_0160_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Biztosan kil<69>psz ebb<62>l a j<>t<EFBFBD>kb<6B>l ?
STR_0161_QUIT_GAME :{WHITE}Kil<69>p<EFBFBD>s a j<>t<EFBFBD>kb<6B>l
STR_SORT_ORDER_TIP :{BLACK}Cs<EFBFBD>kken<EFBFBD>/n<>vekv<6B> sorbarendez<EFBFBD>s
STR_SORT_CRITERIA_TIP :{BLACK}Sorbarendez<65>si krit<69>rium
STR_SORT_TIP :{BLACK}V<EFBFBD>lassz rendez<65>si sorrendet
SRT_SORT_BY :{BLACK}Rendez<65>s
STR_SORT_BY_POPULATION :{BLACK}Lakoss<73>g
@@ -419,7 +417,6 @@ STR_0189 :{BLACK}{SMALLDOWNARROW}
STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Nem v<>ltoztathatod meg a jav<61>t<EFBFBD>si id<69>k<EFBFBD>zt...
STR_018B_CLOSE_WINDOW :{BLACK}Az ablak bez<65>r<EFBFBD>sa
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Az ablak c<>msora - h<>zd ezt a mozgat<61>shoz
STR_STICKY_BUTTON :{BLACK}Ez az ablak akkor se legyen becsukhat<61> ha az <20>sszes ablakot bez<65>rjuk (Delete gomb)
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}T<>rgyak lerombol<6F>sa egy mez<65>r<EFBFBD>l
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Egy pont les<65>llyeszt<7A>se
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Egy pont megemel<65>se
@@ -498,8 +495,6 @@ STR_01CD_SELECT_TUTORIAL_DEMONSTRATION :{WHITE}V
STR_01CE_CARGO_ACCEPTED :{BLACK}Elfogad: {LTBLUE}{STRING}
STR_01CF_CARGO_ACCEPTED :{BLACK}Elfogad: {LTBLUE}{STRING}, {STRING}
STR_01D0_CARGO_ACCEPTED :{BLACK}Elfogad: {LTBLUE}{STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_4 :{BLACK}Elfogad: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_5 :{BLACK}Elfogad: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}, {STRING}
############ range for cargo acecpted ends
STR_01D1_8 :({COMMA8}/8 {STRING})
@@ -542,7 +537,7 @@ STR_01F5_SELECT_NEW_STYLE_MUSIC :{BLACK}Az '
STR_01F6_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}A 'Saj<61>t 1' (felhaszn<7A>l<EFBFBD>i) zenei m<>sor kiv<69>laszt<7A>sa
STR_01F7_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}A 'Saj<61>t 2' (felhaszn<7A>l<EFBFBD>i) zenei m<>sor kiv<69>laszt<7A>sa
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Az aktu<74>lis m<>sor ki<6B>r<EFBFBD>t<EFBFBD>se (csak Saj<61>t 1 <20>s Saj<61>t 2)
STR_01F9_SAVE_MUSIC_SETTINGS :{BLACK}Zenei be<62>ll<6C>t<EFBFBD>sok elment<EFBFBD>se
STR_01F9_SAVE_MUSIC_SETTINGS_TO :{BLACK}Zenei be<62>ll<6C>t<EFBFBD>sok ment<6E>se a lemezre
STR_01FA_CLICK_ON_MUSIC_TRACK_TO :{BLACK}Egy sz<73>mra kattintva hozz<7A>adod azt a kiv<69>lasztott zenei m<>sorhoz (csak Saj<61>t 1 <20>s Saj<61>t 2)
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}A m<>sor megkever<65>se be/ki
STR_01FC_SHOW_MUSIC_TRACK_SELECTION :{BLACK}A zenekiv<69>laszt<7A> ablak megjelen<65>t<EFBFBD>se
@@ -727,7 +722,7 @@ STR_02BC_VEHICLE_DESIGN_NAMES :{BLACK}J
STR_02BD :{BLACK}{STRING}
STR_02BE_DEFAULT :Alap
STR_02BF_CUSTOM :Saj<61>t
STR_02C0_SAVE_CUSTOM_NAMES :{BLACK}Saj<61>t nevek ment<6E>se
STR_02C0_SAVE_CUSTOM_NAMES_TO_DISK :{BLACK}Saj<61>t nevek ment<6E>se
STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION :{BLACK}A j<>rm<72>vek m<>rkanev<65>nek kiv<69>laszt<7A>sa
STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}A saj<61>t j<>rm<72>-m<>rkanevek elment<6E>se lemezre
@@ -738,20 +733,16 @@ STR_02C5_DIFFICULTY_SETTINGS :Neh
STR_02C6_DIFFICULTY_SETTINGS :Neh<65>zs<7A>gi be<62>ll<6C>t<EFBFBD>sok
STR_02C7_CONFIG_PATCHES :Foltok be<62>ll<6C>t<EFBFBD>sa
STR_02C8_CONFIG_PATCHES :Foltok be<62>ll<6C>t<EFBFBD>sa
STR_NEWGRF_SETTINGS :Newgrf be<62>ll<6C>t<EFBFBD>sok
STR_NEWGRF_SETTINGS2 :Newgrf be<62>ll<6C>t<EFBFBD>sok
STR_GAMEOPTMENU_0A :
STR_GAMEOPTMENU_0B :
STR_CLOSE_ALL_WINDOWS :<3A>sszes ablak bez<65>r<EFBFBD>sa
STR_CLOSE_ALL_WINDOWS2 :<3A>sszes ablak bez<65>r<EFBFBD>sa
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}V<>rosnevek mutat<61>sa
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}V<>rosnevek mutat<61>sa
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}<7D>llom<6F>snevek mutat<61>sa
STR_02CC_STATION_NAMES_DISPLAYED :{SETX 12}<7D>llom<6F>snevek mutat<61>sa
STR_02CD_SIGNS_DISPLAYED :{CHECKMARK}{SETX 12}Feliratok mutat<61>sa
STR_02CE_SIGNS_DISPLAYED :{SETX 12}Feliratok mutat<61>sa
STR_WAYPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Ellen<65>rz<72> pontok mutat<61>sa
STR_WAYPOINTS_DISPLAYED2 :{SETX 12}Ellen<65>rz<72> pontok mutat<61>sa
STR_CHECKPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Ellen<65>rz<72> pontok mutat<61>sa
STR_CHECKPOINTS_DISPLAYED2 :{SETX 12}Ellen<65>rz<72> pontok mutat<61>sa
STR_02CF_FULL_ANIMATION :{CHECKMARK}{SETX 12}Teljes anim<69>ci<63>
STR_02D0_FULL_ANIMATION :{SETX 12}Teljes anim<69>ci<63>
STR_02D1_FULL_DETAIL :{CHECKMARK}{SETX 12}Minden r<>szlet
@@ -774,13 +765,13 @@ STR_02DC_DISPLAY_SUBSIDIES :{BLACK}
STR_02DD_SUBSIDIES :T<>mogat<61>sok
STR_02DE_MAP_OF_WORLD :Vil<69>gt<67>rk<72>p
STR_EXTRA_VIEW_PORT :Extra l<>tk<74>p
STR_02DF_TOWN_DIRECTORY :V<>roslista
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}{COMMA16}. l<>tk<74>p
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}L<>tk<74>p aktualiz<69>l<EFBFBD>sa
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Be<42>ll<6C>tja a glob<6F>lis l<>tk<74>p pozici<63>j<EFBFBD>t erre a l<>tk<74>pre
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}L<>tk<74>p visszat<61>lt<6C>se
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}A l<>tk<74>p pozici<63>j<EFBFBD>t be<62>ll<6C>tja a glob<6F>lis l<>tk<74>pre
STR_02DF_TOWN_DIRECTORY :V<>roslista
STR_02E0_CURRENCY_UNITS :{BLACK}P<>nznem
STR_02E1 :{BLACK}{SKIP}{STRING}
STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}A haszn<7A>lt p<>nznem kiv<69>laszt<7A>sa
@@ -804,16 +795,16 @@ STR_02F8_EVERY_3_MONTHS :3 havonta
STR_02F9_EVERY_6_MONTHS :6 havonta
STR_02FA_EVERY_12_MONTHS :12 havonta
STR_02FB_START_A_NEW_GAME :{BLACK}<7D>j j<>t<EFBFBD>k kezd<7A>se
STR_02FC_LOAD_A_SAVED_GAME :{BLACK}Mentett j<>t<EFBFBD>k bet<65>lt<6C>se
STR_02FC_LOAD_A_SAVED_GAME_FROM :{BLACK}Egy mentett j<>t<EFBFBD>k bet<65>lt<6C>se lemezr<7A>l
STR_02FD_VIEW_DEMONSTRATIONS_TUTORIALS :{BLACK}Demonstr<74>ci<63>k/tan<61>t<EFBFBD>sok megn<67>z<EFBFBD>se
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}Testreszabott p<>lya k<>sz<73>t<EFBFBD>se
STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}Egy j<>t<EFBFBD>kos j<>t<EFBFBD>k kiv<69>laszt<7A>sa
STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}T<EFBFBD>bbj<EFBFBD>t<EFBFBD>kos m<EFBFBD>d kiv<69>laszt<7A>sa 2-8 j<>t<EFBFBD>kosig
STR_0300_SELECT_TWO_PLAYER_GAME :{BLACK}K<EFBFBD>t j<EFBFBD>t<EFBFBD>kos j<EFBFBD>t<EFBFBD>k kiv<69>laszt<7A>sa
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}A j<>t<EFBFBD>k be<62>ll<6C>t<EFBFBD>sainak megmutat<61>sa
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}A neh<65>zs<7A>gi be<62>ll<6C>t<EFBFBD>sok megmutat<61>sa
STR_0303_START_A_NEW_GAME_USING :{BLACK}<7D>j j<>t<EFBFBD>k kezd<7A>se saj<61>t p<>ly<6C>n
STR_0304_QUIT :{BLACK}Kil<69>p<EFBFBD>s
STR_0305_QUIT_OPENTTD :{BLACK}Kil<69>p<EFBFBD>s az OpenTTD-b<>l
STR_0305_LEAVE_OPENTTD :{BLACK}Kil<69>p<EFBFBD>s az OpenTTD-b<>l
STR_0306_VIEW_DEMONSTRATION_TUTORIAL :{BLACK}Demonstr<74>ci<63>/tan<61>t<EFBFBD>s megn<67>z<EFBFBD>se
STR_0307_OPENTTD :{WHITE}OpenTTD {REV}
STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...csak v<>rosban <20>p<EFBFBD>thet<65>
@@ -861,46 +852,41 @@ STR_TOWNNAME_SWEDISH :Sv
STR_TOWNNAME_DUTCH :Holland
STR_TOWNNAME_FINNISH :Finn
STR_TOWNNAME_POLISH :Lengyel
STR_TOWNNAME_CZECH :Cseh
STR_TOWNNAME_SLOVAKISH :Szlov<6F>k
STR_TOWNNAME_HUNGARIAN :Magyar
STR_TOWNNAME_AUSTRIAN :Osztr<74>k
STR_TOWNNAME_ROMANIAN :Rom<6F>niai
STR_TOWNNAME_CZECH :Cseh
############ end of townname region
STR_CURR_GBP :Font ({POUNDSIGN})
STR_CURR_USD :Doll<6C>r ($)
STR_CURR_EUR :Eur<EFBFBD> (<28>)
STR_CURR_POUNDS :Font ({POUNDSIGN})
STR_CURR_DOLLARS :Doll<6C>r ($)
STR_CURR_FF :Frank (FF)
STR_CURR_DM :N<>met M<>rka (DM)
STR_CURR_YEN :Ken ({YENSIGN})
STR_CURR_PT :Pezeta (Pt)
STR_CURR_FT :Magyar Forint (Ft)
STR_CURR_ZL :Lengyel Zloty (zl)
STR_CURR_ATS :Osztr<74>k Shilling (ATS)
STR_CURR_BEF :Belga Frank (BEF)
STR_CURR_CHF :Sv<53>jci Frank (CHF)
STR_CURR_CZK :Cseh Korona (CZK)
STR_CURR_DEM :N<>met m<>rka (DEM)
STR_CURR_DKK :D<>n Korona (DKK)
STR_CURR_ESP :Pezeta (ESP)
STR_CURR_FIM :Finn M<>rka (FIM)
STR_CURR_FRF :Franc (FRF)
STR_CURR_GRD :G<>r<EFBFBD>g Drachma (GRD)
STR_CURR_HUF :Magyar Forint (HUF)
STR_CURR_ISK :Izlandi Korona (ISK)
STR_CURR_ITL :Olasz L<>ra (ITL)
STR_CURR_CHF :Sv<EFBFBD>jci Frank (CHF)
STR_CURR_NLG :Holland Guilder (NLG)
STR_CURR_NOK :Norv<EFBFBD>g Korona (NOK)
STR_CURR_PLN :Legyel Zlotyi (PLN)
STR_CURR_ROL :Rom<6F>n Lej (Lej)
STR_CURR_RUR :Orosz Rubel (rur)
STR_CURR_ITL :Olasz L<>ra (ITL)
STR_CURR_SEK :Sv<53>d Korona (SEK)
STR_CURR_CUSTOM :Saj<EFBFBD>t...
STR_CURR_RUR :Orosz Rubel (rur)
STR_CURR_CZK :Cseh Korona (CZK)
STR_CURR_ISK :Izlandi Korona (ISK)
STR_CURR_NOK :Norv<72>g Korona (NOK)
STR_CURR_ROL :Rom<6F>n Lej (Lej)
STR_CURR_EUR :Eur<75> (<28>)
STR_OPTIONS_LANG :{BLACK}Nyelv
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_LANG_TIP :{BLACK}V<>lassz nyelvet
STR_OPTIONS_FULLSCREEN :{BLACK}Teljes k<>perny<6E>
STR_OPTIONS_FULLSCREEN_TIP :{BLACK}Jel<65>ld be ezt, ha teljes k<>perny<6E>s m<>dban szeretn<74>l OpenTTD-zni
STR_OPTIONS_RES :{BLACK}A k<>perny<6E> felbont<6E>sa
STR_OPTIONS_RES_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_RES_TIP :{BLACK}V<>laszd ki, milyen felbont<6E>st szeretn<74>l a j<>t<EFBFBD>khoz
@@ -980,13 +966,11 @@ STR_CONFIG_PATCHES_OFF :Ki
STR_CONFIG_PATCHES_ON :Be
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}J<>rm<72>vek sebess<73>g<EFBFBD>nek kijelz<6C>se: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Lejt<6A>re es partokra <20>p<EFBFBD>t<EFBFBD>s: {ORANGE}{STRING}
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}<7D>leth<74>bben m<>retezett befogad<61>k<EFBFBD>rzetek bekapcsol<6F>sa: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Enged<65>lyezi az ipari l<>tes<65>tm<74>nyek <20>s utak rombol<6F>s<EFBFBD>t, stb: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}<7D>ri<72>svonatok enged<65>lyez<65>se: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Vonatok val<61>s<EFBFBD>gh<67> gyorsul<75>sa: {ORANGE}{STRING}
STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Egym<79>s mell<6C> <20>p<EFBFBD>thet<65> vonat<61>llom<6F>sok: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FULLLOADANY :{LTBLUE}B<>rmelyik rakom<6F>ny telipakol<6F>sa eset<65>n induljon a j<>rm<72>: {ORANGE}{STRING}
STR_CONFIG_PATCHES_IMPROVEDLOAD :{LTBLUE}A tov<6F>bbfejlesztett bet<65>lt<6C>s haszn<7A>lata: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INFLATION :{LTBLUE}Infl<66>ci<63>: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Csak akkor sz<73>ll<6C>tson <20>rut az <20>llom<6F>sra, ha ott van r<> kereslet: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Nagyon hossz<73> hidak enged<65>lyez<65>se: {ORANGE}{STRING}
@@ -1053,8 +1037,6 @@ STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}A f
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Balra
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :K<>z<EFBFBD>pen
STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT :Jobbra
STR_CONFIG_PATCHES_SNAP_RADIUS :{LTBLUE}Ablakigaz<61>t<EFBFBD>s kiterjed<65>se: {ORANGE}{STRING} k<>ppont
STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED :{LTBLUE}Ablakigaz<61>t<EFBFBD>s kiterjed<65>se: {ORANGE}letiltva
STR_CONFIG_PATCHES_GUI :{BLACK}Megjelen<65>t<EFBFBD>s
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}<7D>p<EFBFBD>tkez<65>s
@@ -1087,28 +1069,24 @@ STR_CHEAT_NO_JETCRASH :{LTBLUE}Jet-rep
STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}Kl<4B>ma v<>ltoztat<61>s: {ORANGE} {STRING}
STR_CHEAT_CHANGE_DATE :{LTBLUE}D<>tum m<>dos<6F>t<EFBFBD>s: {ORANGE} {DATE_SHORT}
STR_HEADING_FOR_WAYPOINT :{LTBLUE}<7D>ton {WAYPOINT} fel<65>
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}<7D>ton {WAYPOINT} fel<65>, {VELOCITY}
STR_HEADING_FOR_CHECKPOINT :{LTBLUE}<7D>ton {CHECKPOINT} fel<65>
STR_HEADING_FOR_CHECKPOINT_VEL :{LTBLUE}<7D>ton {CHECKPOINT} fel<65>, {VELOCITY}
STR_GO_TO_WAYPOINT :{WAYPOINT}on <20>t
STR_GO_NON_STOP_TO_WAYPOINT :<3A>ton {WAYPOINT} ellen<65>rz<72> ponton <20>t
STR_GO_TO_CHECKPOINT :{CHECKPOINT}on <20>t
STR_WAYPOINTNAME_CITY :{TOWN}i ellen<65>rz<72> pont
STR_WAYPOINTNAME_CITY_SERIAL :{TOWN}i {COMMA16}. ellen<65>rz<72> pont
STR_LANDINFO_WAYPOINT :Ellen<65>rz<72> pont
STR_CHECKPOINTNAME_CITY :{TOWN}i ellen<65>rz<72> pont
STR_CHECKPOINTNAME_CITY_SERIAL :{TOWN}i {COMMA16}. ellen<65>rz<72> pont
STR_LANDINFO_CHECKPOINT :Ellen<65>rz<72> pont
STR_WAYPOINT :{WHITE}Ellen<65>rz<72> pont
STR_WAYPOINT_GRAPHICS_TIP :{BLACK}V<>lassz ellen<65>rz<72>-pont tipust
STR_CHECKPOINT_VIEWPORT :{WHITE}{CHECKPOINT}
STR_CHECKPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{CHECKPOINT}
STR_CHECKPOINT_RAW :{CHECKPOINT}
STR_EDIT_CHECKPOINT_NAME :{WHITE}M<>dos<6F>td az ellen<65>rz<72> pont nev<65>t
STR_WAYPOINT_VIEWPORT :{WHITE}{WAYPOINT}
STR_WAYPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{WAYPOINT}
STR_WAYPOINT_RAW :{WAYPOINT}
STR_EDIT_WAYPOINT_NAME :{WHITE}M<>dos<6F>td az ellen<65>rz<72> pont nev<65>t
STR_CANT_CHANGE_WAYPOINT_NAME :{WHITE}Nem lehet megv<67>ltoztatni az ellen<65>rz<72> pont nev<65>t...
STR_CONVERT_RAIL_TO_WAYPOINT_TIP :{BLACK}S<>n <20>talak<61>t<EFBFBD>sa ellen<65>rz<72> pontt<74>
STR_CANT_BUILD_TRAIN_WAYPOINT :{WHITE}Nem lehet vonat ellen<65>rz<72> pontot <20>p<EFBFBD>teni ide...
STR_CANT_REMOVE_TRAIN_WAYPOINT :{WHITE}Nem lehet elt<6C>vol<6F>tani az ellen<65>rz<72> pontot...
STR_CANT_CHANGE_CHECKPOINT_NAME :{WHITE}Nem lehet megv<67>ltoztatni az ellen<65>rz<72> pont nev<65>t...
STR_CONVERT_RAIL_TO_CHECKPOINT_TIP :{BLACK}S<>n <20>talak<61>t<EFBFBD>sa ellen<65>rz<72> pontt<74>
STR_CANT_BUILD_TRAIN_CHECKPOINT :{WHITE}Nem lehet vonat ellen<65>rz<72> pontot <20>p<EFBFBD>teni ide...
STR_CANT_REMOVE_TRAIN_CHECKPOINT :{WHITE}Nem lehet elt<6C>vol<6F>tani az ellen<65>rz<72> pontot...
STR_BUILD_AUTORAIL_TIP :{BLACK}S<>n <20>p<EFBFBD>t<EFBFBD>se egyszer<65>s<EFBFBD>tett m<>d<EFBFBD>n
@@ -1121,7 +1099,6 @@ STR_MANY_RANDOM_INDUSTRIES :{BLACK}Sok v
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Elhelyez a t<>rk<72>pen v<>letlenszer<65>en sok gazdas<61>gi <20>p<EFBFBD>letet
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Nem tudok gazdas<61>gi <20>p<EFBFBD>letet gener<65>lni...
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}Nyisd meg a t<>jrendez<65> ablakot a talaj n<>vel<65>shez/cs<63>kkent<6E>shez, fa<66>ltet<65>shez, stb.
STR_LANDSCAPING_TOOLBAR :{WHITE}T<>jrendez<65>s
STR_LEVEL_LAND_TOOLTIP :{BLACK}Talajszint
@@ -1194,44 +1171,37 @@ TEMP_AI_ACTIVATED :{WHITE}Figyelem: az
############ network gui strings
TEMP_STRING_NO_NETWORK :{WHITE}H<>l<EFBFBD>zati fel<65>let nem m<>k<EFBFBD>dik teljesen!{}Egyes opci<63>k m<>k<EFBFBD>dnek, de masok, mint a lobby, etc. nem. Csak inform<72>ci<63>k<EFBFBD>nt.
STR_NETWORK_MULTIPLAYER :{WHITE}T<>bbj<62>t<EFBFBD>kos
STR_NETWORK_PLAYER_NAME :{BLACK}J<>t<EFBFBD>kos neve:
STR_NETWORK_ENTER_NAME_TIP :{BLACK}A t<>bbi j<>t<EFBFBD>kos ilyen n<>vel fog ismerni T<>ged.
STR_NETWORK_CONNECTION :{BLACK}Kapcsolat:
STR_NETWORK_CONNECTION_TIP :{BLACK}V<>lassz az internetes vagy helyi h<>l<EFBFBD>zati j<>t<EFBFBD>k k<>z<EFBFBD>l
STR_NETWORK_START_SERVER :{BLACK}Szerver ind<6E>t<EFBFBD>sa
STR_NETWORK_START_SERVER_TIP :{BLACK}Saj<61>t szervert ind<6E>t
STR_NETWORK_GAME_NAME :{BLACK}N<>v
STR_NETWORK_GAME_NAME_TIP :{BLACK}J<>t<EFBFBD>k neve
STR_NETWORK_INFO_ICONS_TIP :{BLACK}Nyelv, szerver verzi<7A>, stb.
STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Kattints a list<73>ban a jat<61>kra hogy kiv<69>laszd
STR_NETWORK_FIND_SERVER :{BLACK}Szerver keres<65>se
STR_NETWORK_FIND_SERVER_TIP :{BLACK}Szerver keres<65>se a h<>l<EFBFBD>zaton
STR_NETWORK_ADD_SERVER :{BLACK}Szerver hozz<7A>ad<61>sa
STR_NETWORK_ADD_SERVER_TIP :{BLACK}Hozz<7A>adja a szervert a list<73>hoz, <20>gy k<>s<EFBFBD>bb gyorsabban tudsz hozz<7A> csatlakozni
STR_NETWORK_DIRECT_CONNECT :{BLACK}K<>zvetlen kapcsolat
STR_NETWORK_ENTER_IP :{BLACK}<7D>rd be a szerver IP c<>m<EFBFBD>t
STR_NETWORK_DIRECT_CONNECT_TIP :{BLACK}Ismert IP c<>mhez kapcsol<6F>d<EFBFBD>s
STR_NETWORK_START_SERVER :{BLACK}Szerver ind<6E>t<EFBFBD>sa
STR_NETWORK_START_SERVER_TIP :{BLACK}Saj<61>t szervert ind<6E>t
STR_NETWORK_CLIENTS_ONLINE :{BLACK}{COMMA16}/{COMMA16}
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Kliens
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Kliens online / kliens max
STR_NETWORK_GAME_INFO :{SILVER}J<>T<EFBFBD>K INF<4E>
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Kliens: {WHITE}{COMMA8} / {COMMA8}
STR_NETWORK_LANGUAGE :{SILVER}Nyelv: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}T<>jt<6A>pus: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}A p<>lya nagys<79>ga: {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_SERVER_VERSION :{SILVER}Szerver verzi<7A>: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}A szerver c<>me: {WHITE}{STRING}
STR_NETWORK_START_DATE :{SILVER}Kezd<7A>si d<>tum: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Jelenlegi d<EFBFBD>tum: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Jelsz<73>val v<>dve!
STR_NETWORK_SERVER_OFFLINE :{SILVER}SZERVER OFFLINE
STR_NETWORK_SERVER_FULL :{SILVER}SZERVER TELE
STR_NETWORK_VERSION_MISMATCH :{SILVER}VERZI<5A> ELT<4C>R<EFBFBD>S
STR_NETWORK_PLAYER_NAME :{BLACK}J<>t<EFBFBD>kos neve:
STR_NETWORK_ENTER_NAME_TIP :{BLACK}A t<>bbi j<>t<EFBFBD>kos ilyen n<>vel fog ismerni T<>ged.
STR_NETWORK_SELECT_CONNECTION :{BLACK}V<>lassz kapcsolat t<>pust:
STR_NETWORK_CONNECTION_TYPE_TIP :{BLACK}V<>lassz az internetes j<>t<EFBFBD>k <20>s a helyi h<>l<EFBFBD>zatban t<>rt<72>n<EFBFBD> j<>t<EFBFBD>k k<>z<EFBFBD>tt
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :Helyi h<>l<EFBFBD>zat
STR_NETWORK_INTERNET :Internet
STR_NETWORK_GAME_NAME :{BLACK}N<>v
STR_NETWORK_GAME_NAME_TIP :{BLACK}J<>t<EFBFBD>k neve
STR_NETWORK_PLAYERS :{BLACK}#/#
STR_NETWORK_PLAYERS_TIP :{BLACK}Jelenlegi j<EFBFBD>t<EFBFBD>kossz<EFBFBD>m / Maximum j<>t<EFBFBD>kossz<73>m
STR_NETWORK_MAP_SIZE :{BLACK}M<>ret
STR_NETWORK_MAP_SIZE_TIP :{BLACK}A t<>rk<72>p m<>rete
STR_NETWORK_INFO_ICONS_TIP :{BLACK}Nyelv, szerver verzi<7A>, stb.
STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Kattints a list<73>ban a jat<61>kra hogy kiv<69>laszd
STR_NETWORK_PLAYERS_VAL :{BLACK}{COMMA8}/{COMMA8}
STR_NETWORK_JOIN_GAME :{BLACK}Csatlakoz<6F>s a j<>t<EFBFBD>khoz
@@ -1240,30 +1210,20 @@ STR_NETWORK_START_GAME_WINDOW :{WHITE}
STR_NETWORK_NEW_GAME_NAME :{BLACK}J<>t<EFBFBD>k neve:
STR_NETWORK_NEW_GAME_NAME_TIP :{BLACK}A j<>t<EFBFBD>k neve fog megjelenni a t<>bbi j<>t<EFBFBD>kosnak a t<>bbj<62>t<EFBFBD>kos men<65>ben
STR_NETWORK_SET_PASSWORD :{BLACK}Jelsz<73> be<62>ll<6C>t<EFBFBD>sa
STR_NETWORK_PASSWORD :{BLACK}Jelsz<73>:
STR_NETWORK_PASSWORD_TIP :{BLACK}V<>dd le a j<>t<EFBFBD>kodat jelsz<73>val ha nem akarod hogy m<>sok csatlakozzanak
STR_NETWORK_SELECT_MAP :{BLACK}V<>lassz egy t<>rk<72>pet:
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Melyik terk<72>pen akarsz j<>tszani?
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Maximum h<>ny j<>t<EFBFBD>kos lehet:
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}V<>laszd ki h<EFBFBD>ny j<>t<EFBFBD>kos kapcsol<6F>dhat maximum. Nem sz<73>ks<6B>ges pont ennyi embernek <20>ppen kapcsol<6F>dva lennie.
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :Helyi h<>l<EFBFBD>zat
STR_NETWORK_INTERNET :Internet
STR_NETWORK_LAN_INTERNET :H<>l<EFBFBD>zat / Internet
STR_NETWORK_INTERNET_ADVERTISE :Internet (rekl<6B>moz)
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_CLIENTS :2 kliens
STR_NETWORK_3_CLIENTS :3 kliens
STR_NETWORK_4_CLIENTS :4 kliens
STR_NETWORK_5_CLIENTS :5 kliens
STR_NETWORK_6_CLIENTS :6 kliens
STR_NETWORK_7_CLIENTS :7 kliens
STR_NETWORK_8_CLIENTS :8 kliens
STR_NETWORK_9_CLIENTS :9 kliens
STR_NETWORK_10_CLIENTS :10 kliens
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Besz<73>lt nyelv:
STR_NETWORK_LANGUAGE_TIP :{BLACK}A t<>bbi j<>t<EFBFBD>kos megtudhatja milyen nyelven besz<73>lnek a szerveren.
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_NUMBER_OF_PLAYERS :{BLACK}J<EFBFBD>t<EFBFBD>kosok sz<73>ma:
STR_NETWORK_NUMBER_OF_PLAYERS_TIP :{BLACK}V<>laszd ki a maxim<69>lis j<>t<EFBFBD>kos-sz<73>mot. Nem k<>telez<65> mindet kihaszn<7A>lni.
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_PLAYERS :2 j<>t<EFBFBD>kos
STR_NETWORK_3_PLAYERS :3 j<>t<EFBFBD>kos
STR_NETWORK_4_PLAYERS :4 j<>t<EFBFBD>kos
STR_NETWORK_5_PLAYERS :5 j<>t<EFBFBD>kos
STR_NETWORK_6_PLAYERS :6 j<>t<EFBFBD>kos
STR_NETWORK_7_PLAYERS :7 j<>t<EFBFBD>kos
STR_NETWORK_8_PLAYERS :8 j<>t<EFBFBD>kos
STR_NETWORK_START_GAME :{BLACK}J<>t<EFBFBD>k elind<6E>t<EFBFBD>sa
STR_NETWORK_START_GAME_TIP :{BLACK}<7D>j h<>l<EFBFBD>zati j<>t<EFBFBD>k kezd<7A>se v<>letlen t<>rk<72>ppel vagy misszi<7A>val
STR_NETWORK_LOAD_GAME :{BLACK}J<>t<EFBFBD>k bet<65>lt<6C>se
@@ -1271,62 +1231,17 @@ STR_NETWORK_LOAD_GAME_TIP :{BLACK}Kor
STR_NETWORK_LOAD_SCENARIO :{BLACK}P<>lya bet<65>lt<6C>se
STR_NETWORK_LOAD_SCENARIO_TIP :{BLACK}<7D>j h<>l<EFBFBD>zati j<>t<EFBFBD>k kezd<7A>se misszi<7A>s alapon
############ Leave those lines in this order!!
STR_NETWORK_LANG_ANY :B<>rmilyen
STR_NETWORK_LANG_ENGLISH :Angol
STR_NETWORK_LANG_GERMAN :N<>met
STR_NETWORK_LANG_FRENCH :Francia
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}T<>bbj<62>t<EFBFBD>kos j<>t<EFBFBD>k-lobby
STR_NETWORK_PREPARE_TO_JOIN :{BLACK}K<>sz<EFBFBD>l<EFBFBD>d<EFBFBD>s a kapcsol<6F>d<EFBFBD>shoz: {ORANGE}{STRING}
STR_NETWORK_COMPANY_LIST_TIP :{BLACK}Egy lista az <20>sszes c<>gr<67>l aki j<>t<EFBFBD>kban van. Bel<65>phetsz egybe, vagy kezdhetsz egy
STR_NETWORK_NEW_COMPANY :{BLACK}<EFBFBD>j v<EFBFBD>llalat
STR_NETWORK_NEW_COMPANY_TIP :{BLACK}<EFBFBD>j v<>llalatot nyit
STR_NETWORK_SEND :{BLACK}K<>ld
STR_NETWORK_SEND_TIP :{BLACK}A t<>bbi j<>t<EFBFBD>kosnak <20>zenetet k<>ld
STR_NETWORK_COMPANY_NAME :{BLACK}V<EFBFBD>llalat neve:
STR_NETWORK_COMPANY_NAME_TIP :{BLACK}Megv<EFBFBD>ltoztatja a v<>llalatod nev<65>t. <20>ss entert a m<>dos<6F>t<EFBFBD>sok <20>letbel<65>ptet<65>s<EFBFBD>hez
STR_NETWORK_SPECTATE_GAME :{BLACK}J<>t<EFBFBD>k megvizsg<73>l<EFBFBD>sa
STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Megtekinted a j<>t<EFBFBD>kot mint vizsg<73>l<EFBFBD>biztos
STR_NETWORK_JOIN_COMPANY :{BLACK}Bel<EFBFBD>p<EFBFBD>s a c<>gbe
STR_NETWORK_JOIN_COMPANY_TIP :{BLACK}Seg<EFBFBD>tesz valakinek egy c<>g<EFBFBD>n<EFBFBD>l (t<>bben 1 c<>get)
STR_NETWORK_REFRESH :{BLACK}Szerver friss<73>t<EFBFBD>se
STR_NETWORK_REFRESH_TIP :{BLACK}Szerver inf<6E> friss<73>t<EFBFBD>se
STR_NETWORK_COMPANY_INFO :{SILVER}C<>G INF<4E>
STR_NETWORK_COMPANY_NAME :{SILVER}A c<>g neve: {WHITE}{STRING}
STR_NETWORK_INAUGURATION_YEAR :{SILVER}Beiktat<61>s: {WHITE}{NUMU16}
STR_NETWORK_VALUE :{SILVER}A c<>g <20>rt<72>ke: {WHITE}{CURRENCY64}
STR_NETWORK_CURRENT_BALANCE :{SILVER}Jelelegi <20>sszeg: {WHITE}{CURRENCY64}
STR_NETWORK_LAST_YEARS_INCOME :{SILVER}El<45>z<EFBFBD> <20>vi bev<65>tel: {WHITE}{CURRENCY64}
STR_NETWORK_PERFORMANCE :{SILVER}Teljes<65>tm<74>ny: {WHITE}{NUMU16}
STR_NETWORK_VEHICLES :{SILVER}J<>rm<72>vek: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_STATIONS :{SILVER}<7D>llom<6F>sok: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_PLAYERS :{SILVER}J<>t<EFBFBD>kosok: {WHITE}{STRING}
STR_NETWORK_CONNECTING :{WHITE}Kapcsol<6F>d<EFBFBD>s...
############ Leave those lines in this order!!
STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Kapcsol<6F>d<EFBFBD>s..
STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Enged<65>lyez<65>s..
STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) V<>rakoz<6F>s..
STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) T<>rk<72>p let<65>lt<6C>se..
STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Adatfeldolgoz<6F>s..
STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Regisztr<74>l<EFBFBD>s..
STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}J<>t<EFBFBD>kinf<6E> lek<65>r<EFBFBD>se..
STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}C<>ginf<6E> lek<65>r<EFBFBD>se..
############ End of leave-in-this-order
STR_NETWORK_CONNECTING_WAITING :{BLACK}{INT32} kliens vel<65>nk szemben
STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{INT32} / {INT32} kilob<6F>jt lett eddig let<65>ltve
STR_NETWORK_DISCONNECT :{BLACK}Lebont<6E>s
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}<7D>rd be az elk<6C>ldend<6E> <20>zenetet
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}<7D>rd be mennyi p<>nzt akarsz adom<6F>nyozni
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}A szerver jelsz<73>val van v<>dve. <20>rd be
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}A c<>g jelsz<73>val van v<>dve. <20>rd be
STR_NETWORK_CLIENT_LIST :{WHITE}Kliens lista
STR_NETWORK_NEW_COMPANY :{BLACK}<EFBFBD>j v<>llalat
STR_NETWORK_NEW_COMPANY_TIP :{BLACK}<EFBFBD>j v<>llalatot nyit
STR_NETWORK_READY :{BLACK}K<EFBFBD>sz
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} Nem tal<61>lhat<61> a h<>l<EFBFBD>zati csatol<6F>, vagy nincs h<>l<EFBFBD>zati t<>mogat<61>s (ENABLE_NETWORK)
STR_NETWORK_ERR_NOSERVER :{WHITE} Nem tal<61>lhat<61> semmilyen h<>l<EFBFBD>zati j<>t<EFBFBD>k
@@ -1334,56 +1249,7 @@ STR_NETWORK_ERR_NOCONNECTION :{WHITE} A szerver nem reag
STR_NETWORK_ERR_DESYNC :{WHITE} H<>l<EFBFBD>zat - J<>t<EFBFBD>k szinkroniz<69>ci<63> sikertelen.
STR_NETWORK_ERR_LOSTCONNECTION :{WHITE} H<>l<EFBFBD>zat - J<>t<EFBFBD>k kapcsolat elveszett.
STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE} Nem siker<65>lt a szerver j<>t<EFBFBD>kment<6E>s bet<65>lt<6C>se.
STR_NETWORK_ERR_SERVER_START :{WHITE} Nem tudtam elind<6E>tani a szervert.
STR_NETWORK_ERR_CLIENT_START :{WHITE} Nem tudtam kapcsol<6F>dni.
STR_NETWORK_ERR_TIMEOUT :{WHITE} A(z) {NUMU16}. j<>t<EFBFBD>kos kapcsolata elveszett.
STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Protokoll-hib<69>t csin<69>ltunk, <20>s megszakadt a kapcsolat.
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} A te g<>peden l<>v<EFBFBD> <20>s a szerveren l<>v<EFBFBD> programnak nem egyezik meg a verzi<7A>ja.
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Rossz jelsz<73>.
STR_NETWORK_ERR_SERVER_FULL :{WHITE} A szerver tele van
STR_NETWORK_ERR_KICKED :{WHITE} Ki lett<74>l r<>gva a szerverr<72>l
STR_NETWORK_ERR_CHEATER :{WHITE} Ez a szerver nem engedi a csal<61>st
STR_NETWORK_ERR_LEFT :elhagyta a j<>t<EFBFBD>kot
############ Leave those lines in this order!!
STR_NETWORK_ERR_CLIENT_GENERAL :<3A>ltal<61>nos hiba
STR_NETWORK_ERR_CLIENT_DESYNC :szinkroniz<69>l<EFBFBD>si hiba
STR_NETWORK_ERR_CLIENT_SAVEGAME :t<>rk<72>p bet<65>lt<6C>si hiba
STR_NETWORK_ERR_CLIENT_CONNECTION_LOST :elveszett a kapcsolat
STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR :protokoll hiba
STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED :nem enged<65>lyezett
STR_NETWORK_ERR_CLIENT_NOT_EXPECTED :ismeretlen csomag <20>rkezett
STR_NETWORK_ERR_CLIENT_WRONG_REVISION :rossz verzi<7A>
STR_NETWORK_ERR_CLIENT_NAME_IN_USE :a n<>v m<>r haszn<7A>lva van
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :rossz j<>t<EFBFBD>k-jelsz<73>
STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH :rossz j<>t<EFBFBD>kos-id a DoCommand-ban
STR_NETWORK_ERR_CLIENT_KICKED :a szerver kir<69>gott
STR_NETWORK_ERR_CLIENT_CHEATER :csalni pr<70>b<EFBFBD>lt
############ End of leave-in-this-order
STR_NETWORK_CLIENT_JOINED :bel<65>pett a j<>t<EFBFBD>kba
STR_NETWORK_GIVE_MONEY :adott egy kis p<>nzt ({CURRENCY})
STR_NETWORK_GAVE_MONEY_AWAY :{STRING} j<>t<EFBFBD>kosnak adom<6F>nyozt<7A>l ({CURRENCY}) <20>sszeget
STR_NETWORK_CHAT_COMPANY :[Csapat] {STRING}:
STR_NETWORK_CHAT_TO_COMPANY :[Csapat] {STRING} sz<73>m<EFBFBD>ra:
STR_NETWORK_CHAT_CLIENT :[Priv<69>t] {STRING}:
STR_NETWORK_CHAT_TO_CLIENT :[Priv<69>t] {STRING} sz<73>m<EFBFBD>ra:
STR_NETWORK_CHAT_ALL :[Mindenkinek] {STRING}:
STR_NETWORK_NAME_CHANGE :megv<67>ltoztatta a nev<65>t erre:
STR_NETWORK_SERVER_SHUTDOWN :{WHITE} A szerver le<6C>ll<6C>totta a j<>t<EFBFBD>kot
STR_NETWORK_SERVER_REBOOT :{WHITE} A szerver <20>jraindul...{}T<>relem...
STR_NETWORK_SERVER :Szerver
STR_NETWORK_CLIENT :Kliens
STR_NETWORK_CLIENTLIST_NONE :(nincs)
STR_NETWORK_CLIENTLIST_KICK :Kir<69>g<EFBFBD>s
STR_NETWORK_CLIENTLIST_GIVE_MONEY :P<>nz adom<6F>nyoz<6F>sa
STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :<3A>zenet mindenkinek
STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :<3A>zenet a c<>gnek
STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Priv<69>t <20>zenet
STR_NETWORK_SEND :{BLACK}Elk<6C>ld
############ end network gui strings
@@ -1954,7 +1820,7 @@ STR_683B_HOSTILE :Ellens
##id 0x7000
STR_7000 :
STR_7001 :{WHITE}{STRING} {BLACK}{STRING}
STR_7001 :{WHITE}{STRING}{BLACK}{STRING}
STR_7002_PLAYER :({COMMA16}. j<>t<EFBFBD>kos)
STR_7004_NEW_FACE :{BLACK}<7D>j arc
STR_7005_COLOR_SCHEME :{BLACK}Sz<53>n v<>lt<6C>sa
@@ -1966,7 +1832,7 @@ STR_700A_COMPANY_NAME :A v
STR_700B_PRESIDENT_S_NAME :Az eln<6C>k neve
STR_700C_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Nem v<>ltoztathatod meg a c<>g nev<65>t...
STR_700D_CAN_T_CHANGE_PRESIDENT :{WHITE}Nem v<>ltoztathatod meg az eln<6C>k nev<65>t...
STR_700E_FINANCES :{WHITE}{STRING} p<>nz<6E>gyei {BLACK}{STRING}
STR_700E_FINANCES :{WHITE}{STRING} p<>nz<6E>gyei{BLACK}{STRING}
STR_700F_EXPENDITURE_INCOME :{WHITE}Kiad<61>s/Bev<65>tel
STR_7010 :{WHITE}{NUMU16}
STR_7011_CONSTRUCTION :{GOLD}<7D>p<EFBFBD>tkez<65>s
@@ -2071,9 +1937,6 @@ STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}A c
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Nem <20>p<EFBFBD>theted ide a sz<73>kh<6B>zadat...
STR_7072_VIEW_HQ :{BLACK}Sz<53>kh<6B>z
STR_RELOCATE_HQ :{BLACK}FH <20>thelyez<65>se
STR_COMPANY_PASSWORD :{BLACK}Jelsz<73>
STR_COMPANY_PASSWORD_TOOLTIP :{BLACK}V<>dd le a v<>llalatodat jelsz<73>val ha nem akarod hogy m<>sok csatlakozzanak hozz<7A>.
STR_SET_COMPANY_PASSWORD :V<>llalati jelsz<73> be<62>ll<6C>t<EFBFBD>sa
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}Gazdas<61>gi visszaes<65>s!{}{}A k<>zgazd<7A>szok gazdas<61>gi v<>ls<6C>gt<67>l tartanak!
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}V<>ge a visszaes<65>snek!{}{}A kereskedelem fellend<6E>l, ami <20>nbizalmat ad az iparnak, <20>s er<65>s<EFBFBD>dik a gazdas<61>g!
STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Kicsi/nagy ablakm<6B>ret k<>z<EFBFBD>tti v<>lt<6C>s
@@ -2612,7 +2475,7 @@ STR_GO_TO_SHIP_DEPOT :Menj a {TOWN}i kik
SERVICE_AT_SHIP_DEPOT :Service at {TOWN} Ship Depot
##id 0xA000
STR_A000_AIRPORTS :{WHITE}Repterek
STR_A000_AIRPORT_CONSTRUCT :{WHITE}Rept<EFBFBD>r <20>p<EFBFBD>t<EFBFBD>se
STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Nem <20>p<EFBFBD>thetsz ide rep<65>l<EFBFBD>teret...
STR_A002_AIRCRAFT_HANGAR :{WHITE}{STATION} hang<6E>rja
STR_A003_NEW_AIRCRAFT :{BLACK}<7D>j rep<65>l<EFBFBD>g<EFBFBD>pek
@@ -2700,8 +2563,8 @@ STR_MULTIPLAYER_PAUSED :{WHITE}J
STR_PERFORMANCE_DETAIL :{WHITE}Teljes<65>tm<74>ny<6E>rt<72>kel<65>sek r<>szletez<65>se
STR_PERFORMANCE_DETAIL_KEY :{BLACK}R<>szletek
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA32}/{COMMA32})
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}{TINYFONT}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}{TINYFONT}({INT32}/{INT32})
STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{INT32}%
SET_PERFORMANCE_DETAIL_INT :{BLACK}{INT32}
############ Those following lines need to be in this order!!
@@ -2727,35 +2590,3 @@ STR_PERFORMANCE_DETAIL_MONEY_TIP :{BLACK}El
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Magas k<>lcs<63>n<EFBFBD>d van?
STR_PERFORMANCE_DETAIL_TOTAL_TIP :{BLACK}Megszerzett pontok az el<65>rhet<65> pontokb<6B>l
STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Newgrf be<62>ll<6C>t<EFBFBD>sok
STR_NEWGRF_APPLY_CHANGES :{BLACK}Alkalmaz<61>s
STR_NEWGRF_SET_PARAMETERS :{BLACK}Param<61>terek be<62>ll<6C>t<EFBFBD>sa
STR_NEWGRF_TIP :{BLACK}Az <20>ltalad felinstall<6C>lt newgrf csomagok list<73>ja. Kattints a csomagra a be<62>ll<6C>t<EFBFBD>sok m<>dos<6F>t<EFBFBD>s<EFBFBD>hoz.
STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}Jelenleg nincsennek newgrf csomagok felinstall<6C>lva. Olvasd el a manu<6E>lban, hogyan kell install<6C>lni az <20>j grafik<69>kat.
STR_NEWGRF_FILENAME :{BLACK}F<>jln<6C>v:
STR_NEWGRF_GRF_ID :{BLACK}GRF ID:
STR_CURRENCY_WINDOW :{WHITE}Saj<61>t p<>nznem
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}<7D>rt<72>kar<61>ny: {ORANGE}{CURRENCY} = {POUNDSIGN} {COMMA16}
STR_CURRENCY_SEPARATOR :{LTBLUE}Elv<6C>laszt<7A>:
STR_CURRENCY_PREFIX :{LTBLUE}El<45>tag:
STR_CURRENCY_SUFFIX :{LTBLUE}El<45>tag:
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Eur<75>ra v<>lt<6C>s: {ORANGE}{INT32}
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Eur<75>ra v<>lt<6C>s: {ORANGE}soha
STR_CURRENCY_PREVIEW :{LTBLUE}El<45>n<EFBFBD>zet: {ORANGE}{CURRENCY}
STR_CURRENCY_CHANGE_PARAMETER :{BLACK}A saj<61>t p<>nznem param<61>tereinek megv<67>ltoztat<61>sa
STR_TRAIN :{BLACK}{TRAIN}
STR_LORRY :{BLACK}{LORRY}
STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_SCHEDULED_TRAINS :{WHITE}{STATION} - {COMMA16} Vonatok
STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA16} K<>z<EFBFBD>ti j<>rm<72>vek
STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA16} Rep<65>l<EFBFBD>g<EFBFBD>pek
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA16} Haj<61>k
STR_SCHEDULED_TRAINS_TIP :{BLACK}Kilist<73>zza az <20>sszes vonatot, aminek a menetrendj<64>ben szerepel ez az <20>llom<6F>s
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Kilist<73>zza az <20>sszes k<>z<EFBFBD>ti j<>rm<72>vet, aminek a menetrendj<64>ben szerepel ez az <20>llom<6F>s
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Kilist<73>zza az <20>sszes rep<65>l<EFBFBD>t, aminek a menetrendj<64>ben szerepel ez az <20>llom<6F>s
STR_SCHEDULED_SHIPS_TIP :{BLACK}Kilist<73>zza az <20>sszes haj<61>t, aminek a menetrendj<64>ben szerepel ez az <20>llom<6F>s

File diff suppressed because it is too large Load Diff

View File

@@ -342,7 +342,7 @@ STR_0157_PERFORMANCE_HISTORY_GRAPH :Grafico prestazioni
STR_0158_COMPANY_VALUE_GRAPH :Grafico valore societ<65>
STR_0159_CARGO_PAYMENT_RATES :Grafico % pagamento merce
STR_015A_COMPANY_LEAGUE_TABLE :Classifica societ<65>
STR_PERFORMANCE_DETAIL_MENU :Dettagli prestazionali
STR_PERFORMANCE_DETAIL_MENU :Dettagli valutazione delle prestazioni
############ range for menu ends
STR_015B_OPENTTD :{WHITE}OpenTTD
@@ -352,6 +352,7 @@ STR_015E_QUIT_GAME :Abbandona partita
STR_015F_QUIT :Esci
STR_0160_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Sei sicuro di voler abbandonare la partita in corso?
STR_0161_QUIT_GAME :{WHITE}Abbandona partita
STR_SORT_TIP :{BLACK}Seleziona criterio di ordinamento
SRT_SORT_BY :{BLACK}Ordina per
STR_SORT_BY_POPULATION :{BLACK}Popolazione
@@ -367,7 +368,7 @@ STR_SORT_BY_PROFIT_LAST_YEAR :Profitto dell'anno scorso
STR_SORT_BY_PROFIT_THIS_YEAR :Profitto di quest'anno
STR_SORT_BY_AGE :Et<45>
STR_SORT_BY_RELIABILITY :Affidabilit<69>
STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Tot. capacit<EFBFBD> per tipo di carico
STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Capacit<EFBFBD> totale per tipo di carico
STR_SORT_BY_MAX_SPEED :Velocit<69> massima
############ range for months starts
@@ -494,8 +495,6 @@ STR_01CD_SELECT_TUTORIAL_DEMONSTRATION :{WHITE}Seleziona Tutorial/Demonstrazi
STR_01CE_CARGO_ACCEPTED :{BLACK}Merci accettate: {LTBLUE}{STRING}
STR_01CF_CARGO_ACCEPTED :{BLACK}Merci accettate: {LTBLUE}{STRING}, {STRING}
STR_01D0_CARGO_ACCEPTED :{BLACK}Merci accettate: {LTBLUE}{STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_4 :{BLACK}Merci accettate: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_5 :{BLACK}Merci accettate: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}, {STRING}
############ range for cargo acecpted ends
STR_01D1_8 :({COMMA8}/8 {STRING})
@@ -538,6 +537,7 @@ STR_01F5_SELECT_NEW_STYLE_MUSIC :{BLACK}Seleziona programma 'nuovo style'
STR_01F6_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Seleziona programma 'Personaliz. 1' (definito dall'utente)
STR_01F7_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Seleziona programma 'Personaliz. 2' (definito dall'utente)
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Elimina programmazioni attuali (solo personalizzato 1 o personalizzato 2)
STR_01F9_SAVE_MUSIC_SETTINGS_TO :{BLACK}Salva le impostazioni
STR_01FA_CLICK_ON_MUSIC_TRACK_TO :{BLACK}Clicca sul brano per aggiungerlo al programma corrente (solamente personallizzato 1 o personalizzato 2)
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Seleziona programmazione casuale on/off
STR_01FC_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Mostra finestra 'selezione brani'
@@ -722,6 +722,7 @@ STR_02BC_VEHICLE_DESIGN_NAMES :{BLACK}Nomi veicoli
STR_02BD :{BLACK}{STRING}
STR_02BE_DEFAULT :Predefiniti
STR_02BF_CUSTOM :Personalizzati
STR_02C0_SAVE_CUSTOM_NAMES_TO_DISK :{BLACK}Salva nomi personalizzati
STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION :{BLACK}Selezione nomi personalizzati
STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Salva nomi personalizzati dei veicoli
@@ -740,6 +741,8 @@ STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Mostra nomi stazioni
STR_02CC_STATION_NAMES_DISPLAYED :{SETX 12}Mostra nomi stazioni
STR_02CD_SIGNS_DISPLAYED :{CHECKMARK}{SETX 12}Mostra cartelli
STR_02CE_SIGNS_DISPLAYED :{SETX 12}Mostra cartelli
STR_CHECKPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Mostra Checkpoint
STR_CHECKPOINTS_DISPLAYED2 :{SETX 12}Mostra Checkpoints
STR_02CF_FULL_ANIMATION :{CHECKMARK}{SETX 12}Animazione completa
STR_02D0_FULL_ANIMATION :{SETX 12}Animazione completa
STR_02D1_FULL_DETAIL :{CHECKMARK}{SETX 12}Massimo dettaglio
@@ -762,13 +765,13 @@ STR_02DC_DISPLAY_SUBSIDIES :{BLACK}Mostra sussidi
STR_02DD_SUBSIDIES :Sussidi
STR_02DE_MAP_OF_WORLD :Mappa del mondo
STR_EXTRA_VIEW_PORT :Mini visuale extra
STR_02DF_TOWN_DIRECTORY :Elenco Citt<74>
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Mini visuale {COMMA16}
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Copia nella mini visuale
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Copia la posizione dalla finestra principale alla mini visuale
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Copia dalla mini visuale
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Copia la posizione dalla mini visuale alla finestra principale
STR_02DF_TOWN_DIRECTORY :Elenco Citt<74>
STR_02E0_CURRENCY_UNITS :{BLACK}Valuta
STR_02E1 :{BLACK}{SKIP}{STRING}
STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}Selezione valuta
@@ -792,13 +795,16 @@ STR_02F8_EVERY_3_MONTHS :Ogni 3 mesi
STR_02F9_EVERY_6_MONTHS :Ogni 6 mesi
STR_02FA_EVERY_12_MONTHS :Ogni 12 mesi
STR_02FB_START_A_NEW_GAME :{BLACK}Inizia nuovo gioco
STR_02FC_LOAD_A_SAVED_GAME_FROM :{BLACK}Carica partita salvata
STR_02FD_VIEW_DEMONSTRATIONS_TUTORIALS :{BLACK}Guarda dimostrazione/tutorial
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}Crea uno scenario personalizzato
STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}Seleziona giocatore singolo
STR_0300_SELECT_TWO_PLAYER_GAME :{BLACK}Seleziona due giocatori
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Mostra opzioni di gioco
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Mostra opzioni difficolt<6C>
STR_0303_START_A_NEW_GAME_USING :{BLACK}Inizia una partita con uno scenario personalizzato
STR_0304_QUIT :{BLACK}Esci
STR_0305_LEAVE_OPENTTD :{BLACK}Esci da 'OpenTTD'
STR_0306_VIEW_DEMONSTRATION_TUTORIAL :{BLACK}Guarda dimostrazione/tutorial
STR_0307_OPENTTD :{WHITE}OpenTTD {REV}
STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...pu<70> essere costruito solo in citt<74>
@@ -846,38 +852,41 @@ STR_TOWNNAME_SWEDISH :Svedese
STR_TOWNNAME_DUTCH :Olandese
STR_TOWNNAME_FINNISH :Finlandese
STR_TOWNNAME_POLISH :Polacco
STR_TOWNNAME_CZECH :Cechi
STR_TOWNNAME_SLOVAKISH :Slovacco
STR_TOWNNAME_HUNGARIAN :Ungherese
STR_TOWNNAME_AUSTRIAN :Austriaci
STR_TOWNNAME_ROMANIAN :Rumeni
STR_TOWNNAME_CZECH :Cechi
############ end of townname region
STR_CURR_EUR :Euro (<28>)
STR_CURR_POUNDS :Sterline ({POUNDSIGN})
STR_CURR_DOLLARS :Dollari ($)
STR_CURR_FF :Franchi (FF)
STR_CURR_DM :Marco Tedesco (DM)
STR_CURR_YEN :Yen ({YENSIGN})
STR_CURR_PT :Peseta (Pt)
STR_CURR_FT :Fiorino Ungherese (Ft)
STR_CURR_ZL :Zloty Polacca (zl)
STR_CURR_ATS :Scellino Austriano (ATS)
STR_CURR_BEF :Franco Belga (BEF)
STR_CURR_CHF :Franco Svizzero (CHF)
STR_CURR_CZK :Corona Ceca (CZK)
STR_CURR_DKK :Corona Danese (DKK)
STR_CURR_FIM :Marco Finlandese(FIM)
STR_CURR_GRD :Drachma Greca (GRD)
STR_CURR_ISK :Corona Islandese (ISK)
STR_CURR_ITL :Lira Italiana (ITL)
STR_CURR_CHF :Franco Svizzero (CHF)
STR_CURR_NLG :Fiorino olandese (NLG)
STR_CURR_ITL :Lira Italiana (ITL)
STR_CURR_SEK :Corona Svedese (SEK)
STR_CURR_RUR :Rupie Russe (RUR)
STR_CURR_CZK :Corona Ceca (CZK)
STR_CURR_ISK :Corona Islandese (ISK)
STR_CURR_NOK :Corona Norvegese (NOK)
STR_CURR_ROL :Leu rumeno (Lei)
STR_CURR_RUR :Rupie Russe (RUR)
STR_CURR_SEK :Corona Svedese (SEK)
STR_CURR_EUR :Euro (<28>)
STR_OPTIONS_LANG :{BLACK}Lingua
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_LANG_TIP :{BLACK}Seleziona la lingua da utilizzare
STR_OPTIONS_FULLSCREEN :{BLACK}Schermo intero
STR_OPTIONS_FULLSCREEN_TIP :{BLACK}Barra questa casella per giocare a OpenTTD a schermo intero
STR_OPTIONS_RES :{BLACK}Risoluzione video
STR_OPTIONS_RES_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_RES_TIP :{BLACK}Seleziona la risoluzione video da utilizzare
@@ -996,7 +1005,7 @@ STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Rinnova solo se disponibile il fo
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Durata visualizzazione messaggio di errore: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Alberi invisibili (se edifici trasparenti): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Dimensione limite delle nevi: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Copertura max. stazione: {ORANGE}{STRING} {RED}Attenzione: Valori alti rallentano il gioco
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Copertura massima di una stazione: {ORANGE}{STRING} {RED}Attenzione: Valori elevati rallentano il gioco
STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Manutenzione elicotteri direttamente all<6C>eliporto: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Max treni per giocatore: {ORANGE}{STRING}
@@ -1056,24 +1065,28 @@ STR_CHEAT_CHANGE_PLAYER :{LTBLUE}Gioca come giocatore: {ORANGE}{COMMA16}
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Bulldozer magico (rimuove industrie e altri): {ORANGE}{STRING}
STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}I tunnel possono incrociarsi tra loro: {ORANGE}{STRING}
STR_CHEAT_BUILD_IN_PAUSE :{LTBLUE}Consenti costruzione quando in pausa: {ORANGE}{STRING}
STR_CHEAT_NO_JETCRASH :{LTBLUE}I jet non si schiantano troppo di frequente nei piccoli aeroporti: {ORANGE} {STRING}
STR_CHEAT_NO_JETCRASH :{LTBLUE}I jet non si schiantano troppo frequentemente nei piccolo aeroporti: {ORANGE} {STRING}
STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}Cambia paesaggio: {ORANGE} {STRING}
STR_CHEAT_CHANGE_DATE :{LTBLUE}Cambia data: {ORANGE} {DATE_SHORT}
STR_HEADING_FOR_WAYPOINT :{LTBLUE}Direzione {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Direzione {WAYPOINT}, {VELOCITY}
STR_HEADING_FOR_CHECKPOINT :{LTBLUE}Direzione {CHECKPOINT}
STR_HEADING_FOR_CHECKPOINT_VEL :{LTBLUE}Direzione {CHECKPOINT}, {VELOCITY}
STR_GO_TO_WAYPOINT :Vai al {WAYPOINT}
STR_GO_TO_CHECKPOINT :Vai al {CHECKPOINT}
STR_WAYPOINTNAME_CITY :Waypoint {TOWN}
STR_WAYPOINTNAME_CITY_SERIAL :Waypoint {TOWN} #{COMMA16}
STR_LANDINFO_WAYPOINT :Waypoint
STR_CHECKPOINTNAME_CITY :Checkpoint {TOWN}
STR_CHECKPOINTNAME_CITY_SERIAL :Checkpoint {TOWN} #{COMMA16}
STR_LANDINFO_CHECKPOINT :Checkpoint
STR_CHECKPOINT_VIEWPORT :{WHITE}{CHECKPOINT}
STR_CHECKPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{CHECKPOINT}
STR_CHECKPOINT_RAW :{CHECKPOINT}
STR_EDIT_CHECKPOINT_NAME :{WHITE}Modifica nome checkpoint
STR_WAYPOINT_VIEWPORT :{WHITE}{WAYPOINT}
STR_WAYPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{WAYPOINT}
STR_WAYPOINT_RAW :{WAYPOINT}
STR_CANT_CHANGE_CHECKPOINT_NAME :{WHITE}Non puoi cambiare il nome del checkpoint...
STR_CONVERT_RAIL_TO_CHECKPOINT_TIP :{BLACK}Converti binario in checkpoint
STR_CANT_BUILD_TRAIN_CHECKPOINT :{WHITE}Non puoi costruire checkpoint qui...
STR_CANT_REMOVE_TRAIN_CHECKPOINT :{WHITE}Non puoi rimuovere checkpoint...
STR_BUILD_AUTORAIL_TIP :{BLACK}Costruisci binario usando la modalit<69> automatica
@@ -1158,25 +1171,37 @@ TEMP_AI_ACTIVATED :{WHITE}Attenzione: la nuova IA
############ network gui strings
TEMP_STRING_NO_NETWORK :{WHITE}Interfaccia di rete attualmente non completamente funzionante!{}Gli elementi non funzionanti sono stati disabilitati.
STR_NETWORK_MULTIPLAYER :{WHITE}Multiplayer
STR_NETWORK_FIND_SERVER :{BLACK}Trova server
STR_NETWORK_FIND_SERVER_TIP :{BLACK}Cerca nella rete un server
STR_NETWORK_DIRECT_CONNECT :{BLACK}Connessione diretta
STR_NETWORK_ENTER_IP :{BLACK}Digita indirizzo IP del server
STR_NETWORK_DIRECT_CONNECT_TIP :{BLACK}Connetti ad un IP conosciuto
STR_NETWORK_START_SERVER :{BLACK}Avvia server
STR_NETWORK_START_SERVER_TIP :{BLACK}Avvia il tuo server
STR_NETWORK_PLAYER_NAME :{BLACK}Nome giocatore:
STR_NETWORK_ENTER_NAME_TIP :{BLACK}Questo <20> il nome con cui gli altri giocatori ti identificheranno
STR_NETWORK_START_SERVER :{BLACK}Avvia server
STR_NETWORK_START_SERVER_TIP :{BLACK}Avvia il tuo server
STR_NETWORK_SELECT_CONNECTION :{BLACK}Seleziona tipo di connessione:
STR_NETWORK_CONNECTION_TYPE_TIP :{BLACK}Seleziona tra una partita via Internet o un gioco nella rete locale
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :LAN
STR_NETWORK_INTERNET :Internet
STR_NETWORK_GAME_NAME :{BLACK}Nome
STR_NETWORK_GAME_NAME_TIP :{BLACK}Nome del gioco
STR_NETWORK_PLAYERS :{BLACK}#/#
STR_NETWORK_PLAYERS_TIP :{BLACK}Giocatori attualmente in questo gioco / Numero massimo di giocatori
STR_NETWORK_MAP_SIZE :{BLACK}Dimens.
STR_NETWORK_MAP_SIZE_TIP :{BLACK}Dimensione della mappa
STR_NETWORK_INFO_ICONS_TIP :{BLACK}Lingua, versione server, ecc.
STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Clicca su un nome della lista per selezionarlo
STR_NETWORK_FIND_SERVER :{BLACK}Trova server
STR_NETWORK_FIND_SERVER_TIP :{BLACK}Cerca nella rete un server
STR_NETWORK_ENTER_IP :{BLACK}Digita indirizzo IP del server
STR_NETWORK_MAP_SIZE :{SILVER}Dimens: {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_PASSWORD :{BLACK}Password:
STR_NETWORK_PLAYERS_VAL :{BLACK}{COMMA8}/{COMMA8}
STR_NETWORK_JOIN_GAME :{BLACK}Entra nel gioco
@@ -1185,11 +1210,20 @@ STR_NETWORK_START_GAME_WINDOW :{WHITE}Avvia nuovo gioco
STR_NETWORK_NEW_GAME_NAME :{BLACK}Nome gioco:
STR_NETWORK_NEW_GAME_NAME_TIP :{BLACK}Il nome della partita verr<72> visualizzato dagli altri giocatori nel menu di selezione del gioco
STR_NETWORK_PASSWORD :{BLACK}Password:
STR_NETWORK_PASSWORD_TIP :{BLACK}Proteggi il tuo gioco con una password se non vuoi che altre persone vi entrino
STR_NETWORK_SELECT_MAP :{BLACK}Seleziona una mappa:
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Con quale mappa vuoi giocare?
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{STRING}
STR_NETWORK_NUMBER_OF_PLAYERS :{BLACK}Numero di giocatori:
STR_NETWORK_NUMBER_OF_PLAYERS_TIP :{BLACK}Seleziona il numero Massimo di giocatori. Non <20> necessario che tutti gli spazi vengano occupati.
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_PLAYERS :2 giocatori
STR_NETWORK_3_PLAYERS :3 giocatori
STR_NETWORK_4_PLAYERS :4 giocatori
STR_NETWORK_5_PLAYERS :5 giocatori
STR_NETWORK_6_PLAYERS :6 giocatori
STR_NETWORK_7_PLAYERS :7 giocatori
STR_NETWORK_8_PLAYERS :8 giocatori
STR_NETWORK_START_GAME :{BLACK}Avvia gioco
STR_NETWORK_START_GAME_TIP :{BLACK}Inizia una nuova partita in rete partendo da una mappa random o da uno scenario
STR_NETWORK_LOAD_GAME :{BLACK}Carica Gioco
@@ -1197,27 +1231,17 @@ STR_NETWORK_LOAD_GAME_TIP :{BLACK}Riprendi una partita salvata in precedenza
STR_NETWORK_LOAD_SCENARIO :{BLACK}Carica Scenario
STR_NETWORK_LOAD_SCENARIO_TIP :{BLACK}Inizia una nuova partita in rete partendo da uno scenario
############ Leave those lines in this order!!
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Stanza di gioco multiplayer
STR_NETWORK_NEW_COMPANY :{BLACK}Nuova compagnia
STR_NETWORK_NEW_COMPANY_TIP :{BLACK}Apri una nuova compagnia
STR_NETWORK_SEND :{BLACK}Invia
STR_NETWORK_SEND_TIP :{BLACK}Invia un messaggio agli altri giocatori
STR_NETWORK_COMPANY_NAME :{BLACK}Nome compagnia:
STR_NETWORK_COMPANY_NAME_TIP :{BLACK}Cambia il nome della tua compagnia. Premi Invio per confermare le modifiche
STR_NETWORK_SPECTATE_GAME :{BLACK}Assisti alla partita
STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Assisti al gioco come spettatore
STR_NETWORK_COMPANY_NAME :{SILVER}Nome compagnia: {WHITE}{STRING}
STR_NETWORK_PLAYERS :{BLACK}#/#
############ Leave those lines in this order!!
############ End of leave-in-this-order
STR_NETWORK_NEW_COMPANY :{BLACK}Nuova compagnia
STR_NETWORK_NEW_COMPANY_TIP :{BLACK}Apri una nuova compagnia
STR_NETWORK_READY :{BLACK}Pronto
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} Nessun dispositivo di rete trovato o compilato senza ENABLE_NETWORK
STR_NETWORK_ERR_NOSERVER :{WHITE} Impossibile trovare partite in rete
@@ -1227,13 +1251,6 @@ STR_NETWORK_ERR_LOSTCONNECTION :{WHITE} Connessione alla partita in rete per
STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE} Impossibile caricare il savegame dal server.
STR_NETWORK_ERR_TIMEOUT :{WHITE} Connessione #{NUMU16} time-out.
############ Leave those lines in this order!!
############ End of leave-in-this-order
############ end network gui strings
@@ -1757,7 +1774,6 @@ STR_6812_QUANTITY_OF_SEA_LAKES :{LTBLUE}Quantit
STR_6813_ECONOMY :{LTBLUE}Economia: {ORANGE}{STRING}
STR_6814_TRAIN_REVERSING :{LTBLUE}Inversione treni: {ORANGE}{STRING}
STR_6815_DISASTERS :{LTBLUE}Disastri: {ORANGE}{STRING}
STR_16816_CITY_APPROVAL :{LTBLUE}Atteggiamento delle citt<74> verso i cambiamenti nel territorio: {ORANGE}{STRING}
############ range for difficulty settings ends
STR_26816_NONE :Nessuno
@@ -1803,7 +1819,7 @@ STR_683B_HOSTILE :Ostile
##id 0x7000
STR_7000 :
STR_7001 :{WHITE}{STRING} {BLACK}{STRING}
STR_7001 :{WHITE}{STRING}{BLACK}{STRING}
STR_7002_PLAYER :(Giocatore {COMMA16})
STR_7004_NEW_FACE :{BLACK}Nuova Faccia
STR_7005_COLOR_SCHEME :{BLACK}Colore Societ<65>
@@ -1815,7 +1831,7 @@ STR_700A_COMPANY_NAME :Nome della societ
STR_700B_PRESIDENT_S_NAME :Nome del presidente
STR_700C_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Non puoi cambiare il nome della societ<65>...
STR_700D_CAN_T_CHANGE_PRESIDENT :{WHITE}Non puoi cambiare in nome del presidente...
STR_700E_FINANCES :{WHITE}{STRING} Finanze {BLACK}{STRING}
STR_700E_FINANCES :{WHITE}{STRING} Finanze{BLACK}{STRING}
STR_700F_EXPENDITURE_INCOME :{WHITE}Spese/Ricavi
STR_7010 :{WHITE}{NUMU16}
STR_7011_CONSTRUCTION :{GOLD}Costruzioni
@@ -1842,7 +1858,6 @@ STR_7024 :{COMMA32}
STR_7025_OPERATING_PROFIT_GRAPH :{WHITE}Grafico Profitti Operazionali
STR_7026_BANK_BALANCE :{WHITE}Bilancio Bancario
STR_7027_LOAN :{WHITE}Prestito
STR_MAX_LOAN :{WHITE}Prestito Massimo: {BLACK}{CURRENCY64}
STR_7028 :{BLACK}{CURRENCY64}
STR_7029_BORROW :<CHECK>{BLACK}Richiedi {SKIP}{SKIP}{SKIP}{SKIP}{CURRENCY}
STR_702A_REPAY :<CHECK>{BLACK}Ripaga {SKIP}{SKIP}{SKIP}{SKIP}{CURRENCY}
@@ -1916,10 +1931,8 @@ STR_706D_PRESIDENT :Presidente
STR_706E_TYCOON :magnate
STR_706F_BUILD_HQ :{BLACK}Costr. Sede
STR_7070_BUILD_COMPANY_HEADQUARTERS :{BLACK}Costruisci/guarda la sede della societ<65>
STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Sposta la sede della compagnia pagando 1% del valore societario
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Non puoi costruire la sede della compagnia...
STR_7072_VIEW_HQ :{BLACK}Guarda Sede
STR_RELOCATE_HQ :{BLACK}Sposta Sede
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}Recessione Mondiale!{}{}Gli esperti finanziari temono la peggior crisi economica!
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}Recessione Finita!{}{}Rialzo negli scambi d<> fiducia alle industrie per un rafforzamento economico!
STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Seleziona dimensione grande/piccola della finestra
@@ -2223,7 +2236,6 @@ STR_SERVICE_NON_STOP_AT_TRAIN_DEPOT :Manutenzione non-stop a {TOWN} Deposito
STR_HEADING_FOR_TRAIN_DEPOT :{LTBLUE}Direzione {TOWN} Deposito
STR_HEADING_FOR_TRAIN_DEPOT_VEL :{LTBLUE}Direzione {TOWN} Deposito, {VELOCITY}
STR_INVALID_ORDER :{RED} (Ordine non Valido)
STR_UNKNOWN_DESTINATION :destinazione sconosciuta
STR_8812_EMPTY :{LTBLUE}Vuoto
@@ -2270,7 +2282,6 @@ STR_8839_CAN_T_SELL_RAILROAD_VEHICLE :{WHITE}Non puoi vendere veicolo ferrovi
STR_883A_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Non riesce a trovare il deposito locale
STR_883B_CAN_T_STOP_START_TRAIN :{WHITE}Non puoi far fermare/ripartire il treno...
STR_883C_SERVICING_INTERVAL_DAYS :{BLACK}Intervallo Manutenz.: {LTBLUE}{COMMA16}giorni{BLACK} Ultima Manut.: {LTBLUE}{DATE_LONG}
STR_SERVICING_INTERVAL_PERCENT :{BLACK}Intervallo Manutenz.: {LTBLUE}{COMMA16}%{BLACK} Ultima Manut.: {LTBLUE}{DATE_LONG}
STR_883D_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Treni - fai clic sul treno per le informazioni
STR_883E_BUILD_NEW_TRAINS_REQUIRES :{BLACK}Costruisci nuovi treni (Necessario deposito)
STR_883F_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Treni - fai clic sul treno per le informazioni, trascina i veicoli per aggiungerli/rimuoverli dal treno
@@ -2458,6 +2469,7 @@ STR_GO_TO_SHIP_DEPOT :Vai a {TOWN} Deposito Navale
SERVICE_AT_SHIP_DEPOT :Manutenzione a {TOWN} Deposito Navale
##id 0xA000
STR_A000_AIRPORT_CONSTRUCT :{WHITE}Costruz. areoportuali
STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Non puoi costruire aeroporto qui...
STR_A002_AIRCRAFT_HANGAR :{WHITE}{STATION} Hangar
STR_A003_NEW_AIRCRAFT :{BLACK}Nuovo Aereo
@@ -2536,58 +2548,11 @@ STR_B002_OIL_REFINERY_EXPLOSION :{BLACK}{BIGFONT}Raffineria esplosa vicino a
STR_B003_FACTORY_DESTROYED_IN_SUSPICIOUS :{BLACK}{BIGFONT}Fabbrica distrutta in circostanze sospette vicino a {TOWN}!
STR_B004_UFO_LANDS_NEAR :{BLACK}{BIGFONT}'UFO' atterra vicino a {TOWN}!
STR_B005_COAL_MINE_SUBSIDENCE_LEAVES :{BLACK}{BIGFONT}Cedimento in una miniera di carbone lascia tracce di distruzione vicino a {TOWN}!
STR_B006_FLOOD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}Alluvione!{}{COMMA16} distrutto o disperso a seguito di una mortale alluvione!
STR_BRIBE_FAILED :{WHITE}Il tentativo di corruzione <20> stato
STR_BRIBE_FAILED_2 :{WHITE}scoperto dagli ispettori regionali.
STR_BUILD_DATE :{BLACK}Realizzato il: {LTBLUE}{DATE_LONG}
STR_MULTIPLAYER_PAUSED :{WHITE}Gioco in pausa.{}Il comando non pu<70> essere eseguito
STR_PERFORMANCE_DETAIL :{WHITE}Dettagli valutazione delle prestazioni
STR_PERFORMANCE_DETAIL_KEY :{BLACK}Dettagli
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA32}/{COMMA32})
STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{INT32}%
SET_PERFORMANCE_DETAIL_INT :{BLACK}{INT32}
############ Those following lines need to be in this order!!
STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Veicoli:
STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Stazioni:
STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Profitto Min.:
STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Incasso Min.:
STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Incasso Max.:
STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Trasportati:
STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Cargo:
STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Denaro:
STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Prestito:
STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Totale:
############ End of order list
STR_PERFORMANCE_DETAIL_VEHICLES_TIP :{BLACK}Numero di veicoli. Include Veicoli Stradali, Treni, Navi e Aerei.
STR_PERFORMANCE_DETAIL_STATIONS_TIP :{BLACK}Numero di blocchi stazione. Ogni parte di una stazione (e.g. stazione ferroviaria, fermata dell'autobus, aereoporti) viene contata, anche se insieme formano un'unica stazione.
STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP :{BLACK}Profitto del veicolo con l'incasso minore (tra tutti i veicoli pi<70> vecchi di 2 anni)
STR_PERFORMANCE_DETAIL_MIN_INCOME_TIP :{BLACK}Ammontare di denaro guadagnato nel mese con il minimo profitto degli ultimi 12 quarti
STR_PERFORMANCE_DETAIL_MAX_INCOME_TIP :{BLACK}Ammontare di denaro guadagnato nel mese con il massimo profitto degli ultimi 12 quarti
STR_PERFORMANCE_DETAIL_DELIVERED_TIP :{BLACK}Unit<69> di merce trasportata nell'ultimo quarto.
STR_PERFORMANCE_DETAIL_CARGO_TIP :{BLACK}Tipi di merci trasportate nell'ultimo quarto.
STR_PERFORMANCE_DETAIL_MONEY_TIP :{BLACK}Ammontare di denaro in tasca
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Hai preso un prestito troppo elevato?
STR_PERFORMANCE_DETAIL_TOTAL_TIP :{BLACK}Totale dei punti rispetto ad un massimo di punti possibili
STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}Non ci sono attualmente file newgrf installati! Fare riferimento al manuale per installarne di nuovi
STR_NEWGRF_FILENAME :{BLACK}Nome file:
STR_NEWGRF_GRF_ID :{BLACK}GRF ID:
STR_TRAIN :{BLACK}{TRAIN}
STR_LORRY :{BLACK}{LORRY}
STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_SCHEDULED_TRAINS :{WHITE}{STATION} - {COMMA16} Treni
STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA16} Veicoli
STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA16} Aerei
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA16} Navi
STR_SCHEDULED_TRAINS_TIP :{BLACK}Mostra tutti i treni che hanno questa stazione tra gli ordini
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Mostra tutti i veicoli che hanno questa stazione tra gli ordini
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Mostra tutti gli aerei che hanno questa stazione tra gli ordini
STR_SCHEDULED_SHIPS_TIP :{BLACK}Mostra tutte le navi che hanno questo porto tra gli ordini

View File

@@ -1,424 +0,0 @@
##name Latvian
##ownname Latvie<69>u valoda
##id 0x0000
STR_NULL :
STR_0001_OFF_EDGE_OF_MAP :{WHITE}&#256;rpus kartes robe<62>as
STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}P&#257;r&#257;k tuvu kartes malai
STR_0003_NOT_ENOUGH_CASH_REQUIRES :{WHITE}Nav diezgan naudas - vajag {CURRENCY}
STR_0004 :{WHITE}{CURRENCY64}
STR_0005 :{RED}{CURRENCY64}
STR_EMPTY :
STR_0007_FLAT_LAND_REQUIRED :{WHITE}Zemei j&#257;b&#363;t plakanai
STR_0008_WAITING :{BLACK}Gaidam: {WHITE}{STRING}
STR_0009 :{WHITE}{STRING}
STR_000A_EN_ROUTE_FROM :{WHITE}{STRING}{YELLOW} (ce&#316;&#257; no
STR_000B :{YELLOW}{STATION})
STR_000C_ACCEPTS :{BLACK}Pie&#326;em: {WHITE}
STR_000D_ACCEPTS :{BLACK}Pie&#326;em: {GOLD}
STR_000E :
STR_000F_PASSENGERS :Pasa<73>ierus
STR_0010_COAL :Ogles
STR_0011_MAIL :Pastu
STR_0012_OIL :Naftu
STR_0013_LIVESTOCK :Liellopus
STR_0014_GOODS :Preces
STR_0015_GRAIN :Graudus
STR_0016_WOOD :Kokmatere&#257;lus
STR_0017_IRON_ORE :Dzelzs r&#363;du
STR_0018_STEEL :T&#275;raudu
STR_0019_VALUABLES :V&#275;rtspap&#299;ri
STR_001A_COPPER_ORE :Vara r&#363;da
STR_001B_MAIZE :Kukur&#363;za
STR_001C_FRUIT :Aug&#316;i
STR_001D_DIAMONDS :Dimanti
STR_001E_FOOD :P&#257;rtika
STR_001F_PAPER :Pap&#299;rs
STR_0020_GOLD :Zelts
STR_0021_WATER :&#362;dens
STR_0022_WHEAT :Kvie<69>i
STR_0023_RUBBER :Gumija
STR_0024_SUGAR :Cukurs
STR_0025_TOYS :Rota&#316;lietas
STR_0026_CANDY :Saldumi
STR_0027_COLA :Kola
STR_0028_COTTON_CANDY :Cukurvate
STR_0029_BUBBLES :Burbu&#316;i
STR_002A_TOFFEE :Cukurpl&#257;ksnes
STR_002B_BATTERIES :Baterijas
STR_002C_PLASTIC :Plastmasa
STR_002D_FIZZY_DRINKS :Burbu&#316;&#363;de&#326;i
STR_002E :
STR_002F_PASSENGER :Pasa<73>ieris
STR_0030_COAL :Ogle
STR_0031_MAIL :Pasts
STR_0032_OIL :Nafta
STR_0033_LIVESTOCK :Liellopi
STR_0034_GOODS :Preces
STR_0035_GRAIN :Graudi
STR_0036_WOOD :Kokmatere&#257;li
STR_0037_IRON_ORE :Dzelzs r&#363;da
STR_0038_STEEL :T&#275;rauds
STR_0039_VALUABLES :V&#275;rtspap&#299;ri
STR_003A_COPPER_ORE :Vara r&#363;da
STR_003B_MAIZE :Kukur&#363;za
STR_003C_FRUIT :Aug&#316;i
STR_003D_DIAMOND :Dimanti
STR_003E_FOOD :P&#257;rtika
STR_003F_PAPER :pap&#299;rs
STR_0040_GOLD :Zelts
STR_0041_WATER :&#362;dens
STR_0042_WHEAT :Kvie<69>i
STR_0043_RUBBER :Gumija
STR_0044_SUGAR :Cukurs
STR_0045_TOY :Rota&#316;lieta
STR_0046_CANDY :Saldumi
STR_0047_COLA :Kola
STR_0048_COTTON_CANDY :Cukurvate
STR_0049_BUBBLE :Burbulis
STR_004A_TOFFEE :Cukurpl&#257;ksn&#299;te
STR_004B_BATTERY :Baterijas
STR_004C_PLASTIC :Plastmasas
STR_004D_FIZZY_DRINK :Burbu&#316;&#363;de&#326;u
STR_004E :
STR_004F_PASSENGER :{COMMA16} pasa<73>ieris
STR_0050_TON_OF_COAL :{COMMA16} tonna og&#316;u
STR_0051_BAG_OF_MAIL :{COMMA16} pasta maiss
STR_0052_OF_OIL :{VOLUME} naftas
STR_0053_ITEM_OF_LIVESTOCK :{COMMA16} liellops
STR_0054_CRATE_OF_GOODS :{COMMA16} pre&#269;u kaste
STR_0055_TON_OF_GRAIN :{COMMA16} tonna graudu
STR_0056_TON_OF_WOOD :{COMMA16} tonna kokmatere&#257;lu
STR_0057_TON_OF_IRON_ORE :{COMMA16} tonna dzelzs r&#363;das
STR_0058_TON_OF_STEEL :{COMMA16} tonna t&#275;rauda
STR_0059_BAG_OF_VALUABLES :{COMMA16} maiss ar v&#275;rtspap&#299;riem
STR_005A_TON_OF_COPPER_ORE :{COMMA16} tonna vara r&#363;das
STR_005B_TON_OF_MAIZE :{COMMA16} tonna kukur&#363;zas
STR_005C_TON_OF_FRUIT :{COMMA16} tonna aug&#316;u
STR_005D_BAG_OF_DIAMONDS :{COMMA16} maiss ar dimantiem
STR_005E_TON_OF_FOOD :{COMMA16} tonna p&#257;rtikas pre&#269;u
STR_005F_TON_OF_PAPER :{COMMA16} tonna pap&#299;ra
STR_0060_BAG_OF_GOLD :{COMMA16} zelta maiss
STR_0061_OF_WATER :{VOLUME} &#363;dens
STR_0062_TON_OF_WHEAT :{COMMA16} tonna kvie<69>u
STR_0063_OF_RUBBER :{VOLUME} tonna gumijas
STR_0064_TON_OF_SUGAR :{COMMA16} tonna cukura
STR_0065_TOY :{COMMA16} rota&#316;lieta
STR_0066_BAG_OF_CANDY :{COMMA16} saldumu maiss
STR_0067_OF_COLA :{VOLUME} kolas
STR_0068_TON_OF_COTTON_CANDY :{COMMA16} tonna cukurvates
STR_0069_BUBBLE :{COMMA16} burbulis
STR_006A_TON_OF_TOFFEE :{COMMA16} tonna cukurpl&#257;ksn&#299;<3B>u
STR_006B_BATTERY :{COMMA16} baterija
STR_006C_OF_PLASTIC :{VOLUME} plastmasas
STR_006D_FIZZY_DRINK :{COMMA16} burbu&#316;&#363;denis
STR_006E :
STR_006F_PASSENGERS :{COMMA16} pasa<73>ieri
STR_0070_TONS_OF_COAL :{COMMA16} tonnas og&#316;u
STR_0071_BAGS_OF_MAIL :{COMMA16} pasta maisi
STR_0072_OF_OIL :{VOLUME} naftas
STR_0073_ITEMS_OF_LIVESTOCK :{COMMA16} liellopi
STR_0074_CRATES_OF_GOODS :{COMMA16} kastes ar prec&#275;m
STR_0075_TONS_OF_GRAIN :{COMMA16} tonnas graudu
STR_0076_TONS_OF_WOOD :{COMMA16} tonnas kokmatere&#257;lu
STR_0077_TONS_OF_IRON_ORE :{COMMA16} tonnas dzelzs r&#363;das
STR_0078_TONS_OF_STEEL :{COMMA16} tonnas t&#275;rauda
STR_0079_BAGS_OF_VALUABLES :{COMMA16} maisi ar v&#275;rtsliet&#257;m
STR_007A_TONS_OF_COPPER_ORE :{COMMA16} tonnas vara r&#363;das
STR_007B_TONS_OF_MAIZE :{COMMA16} tonnas kukur&#363;zas
STR_007C_TONS_OF_FRUIT :{COMMA16} tonnas aug&#316;u
STR_007D_BAGS_OF_DIAMONDS :{COMMA16} maisi ar dimantiem
STR_007E_TONS_OF_FOOD :{COMMA16} tonnas p&#257;rtikas pre&#269;u
STR_007F_TONS_OF_PAPER :{COMMA16} tonnas pap&#299;ra
STR_0080_BAGS_OF_GOLD :{COMMA16} zelta maisi
STR_0081_OF_WATER :{VOLUME} &#363;dens
STR_0082_TONS_OF_WHEAT :{COMMA16} tonnas kvie<69>u
STR_0083_OF_RUBBER :{VOLUME} gumijas
STR_0084_TONS_OF_SUGAR :{COMMA16} tonnas cukura
STR_0085_TOYS :{COMMA16} rota&#316;lietas
STR_0086_BAGS_OF_CANDY :{COMMA16} saldumu maisi
STR_0087_OF_COLA :{VOLUME} kolas
STR_0088_TONS_OF_COTTON_CANDY :{COMMA16} tonnas cukurvates
STR_0089_BUBBLES :{COMMA16} burbu&#316;i
STR_008A_TONS_OF_TOFFEE :{COMMA16} tonnas cukurpl&#257;ksn&#299;<3B>u
STR_008B_BATTERIES :{COMMA16} baterijas
STR_008C_OF_PLASTIC :{VOLUME} plastmasas
STR_008D_FIZZY_DRINKS :{COMMA16} burbu&#316;&#363;de&#326;u
STR_008E :
STR_008F_PS :{TINYFONT}PA
STR_0090_CL :{TINYFONT}OG
STR_0091_ML :{TINYFONT}PT
STR_0092_OL :{TINYFONT}NF
STR_0093_LV :{TINYFONT}LL
STR_0094_GD :{TINYFONT}PR
STR_0095_GR :{TINYFONT}GR
STR_0096_WD :{TINYFONT}KM
STR_0097_OR :{TINYFONT}DZ
STR_0098_ST :{TINYFONT}TR
STR_0099_VL :{TINYFONT}VP
STR_009A_CO :{TINYFONT}VR
STR_009B_MZ :{TINYFONT}KU
STR_009C_FT :{TINYFONT}AU
STR_009D_DM :{TINYFONT}DM
STR_009E_FD :{TINYFONT}PP
STR_009F_PR :{TINYFONT}PS
STR_00A0_GD :{TINYFONT}ZE
STR_00A1_WR :{TINYFONT}UD
STR_00A2_WH :{TINYFONT}KV
STR_00A3_RB :{TINYFONT}GU
STR_00A4_SG :{TINYFONT}CU
STR_00A5_TY :{TINYFONT}RT
STR_00A6_SW :{TINYFONT}SA
STR_00A7_CL :{TINYFONT}KO
STR_00A8_CF :{TINYFONT}CV
STR_00A9_BU :{TINYFONT}BB
STR_00AA_TF :{TINYFONT}CP
STR_00AB_BA :{TINYFONT}BT
STR_00AC_PL :{TINYFONT}PL
STR_00AD_FZ :{TINYFONT}BU
STR_00AE :{WHITE}{DATE_SHORT}
STR_00AF :{WHITE}{DATE_LONG}
STR_00B0_MAP :{WHITE}Karte - {STRING}
STR_00B1_GAME_OPTIONS :{WHITE}Sp<53>les parametri
STR_00B2_MESSAGE :{YELLOW}Zi<5A>ojums
STR_00B3_MESSAGE_FROM :{YELLOW}Zi<5A>ojums no {STRING}
STR_00B4_CAN_T_DO_THIS :{WHITE}T<> nevar dar<61>t....
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}<7D>o laukumu nevar nol<6F>dzin<69>t....
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Ori<72>in<69>l<EFBFBD>s autorties<65>bas {COPYRIGHT} 1995 Chris Sawyer, Visas ties<65>bas rezerv<72>tas
STR_00B7_VERSION :{BLACK}OpenTTD versija {REV}
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Ori<72>in<69>lais dizains: Chris Sawyer
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Ori<72>in<69>l<EFBFBD> grafika: Simon Foster
STR_SPECIAL_THANKS :{BLACK}<7D>pa<70>a pateic<69>ba sekojo<6A><6F>m person<6F>m:
STR_SPECIAL_THANKS_SIGNALS :{BLACK}<7D> Pirms-sign<67>li un semafori {COPYRIGHT} 2003 Michael Blunck
STR_SPECIAL_THANKS_CANALS :{BLACK}<7D> Pamati slied<65>m un ce<63>u nog<6F>z<EFBFBD>m {COPYRIGHT} Marcin Grzegorczyk
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}<7D> Kan<61>lu/dambju grafika {COPYRIGHT} 2003-2004 George
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 OpenTTD grupa
STR_00C5 :{BLACK}{CROSS}
STR_00C6 :{SILVER}{CROSS}
STR_00C7_QUIT :{WHITE}Beigt
STR_00C8_YES :{BLACK}J<>
STR_00C9_NO :{BLACK}N<>
STR_00CA_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Vai Tu tie<69><65>m gribi pamest <20>o sp<73>li un iet uz {STRING}?
STR_00CB_1 :{BLACK}1
STR_00CC_2 :{BLACK}2
STR_00CD_3 :{BLACK}3
############ range for menu starts
############ range for menu ends
############ range for months starts
############ range for months ends
############ range for service numbers starts
############ range for service numbers ends
############ range for days starts
############ range for days ends
############ range for cargo acecpted starts
############ range for cargo acecpted ends
############ range for menu starts
############ range ends here
############ range for menu starts
############ range ends here
############ range for menu starts
############ range ends here
############ start of townname region
############ end of townname region
# Start of order review system.
# DON'T ADD OR REMOVE LINES HERE
# end of order system
############ network gui strings
############ Leave those lines in this order!!
############ End of leave-in-this-order
############ Leave those lines in this order!!
############ End of leave-in-this-order
############ Leave those lines in this order!!
############ End of leave-in-this-order
############ end network gui strings
##id 0x0800
##id 0x1000
##id 0x1800
##id 0x2000
##id 0x2800
##id 0x3000
############ range for rating starts
############ range for rating ends
##id 0x3800
##id 0x4000
##id 0x4800
############ range for requires starts
############ range for requires ends
##id 0x5000
##id 0x5800
############ WARNING, using range 0x6000 for strings that are stored in the savegame
############ These strings may never get a new id, or savegames will break!
##id 0x6000
############ end of savegame specific region!
##id 0x6800
############ range for difficulty levels starts
############ range for difficulty levels ends
############ range for difficulty settings starts
############ range for difficulty settings ends
##id 0x7000
##id 0x8000
##id 0x8800
##id 0x9000
##id 0x9800
##id 0xA000
##id 0xB000
############ Those following lines need to be in this order!!
############ End of order list

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -310,7 +310,6 @@ STR_0134_UNIX :Unix
STR_0135_OSX :OS X
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_0139_IMPERIAL_MILES :Anglo-americane (Mile)
STR_013A_METRIC_KILOMETERS :Metrice (Kilometri)
@@ -353,8 +352,7 @@ STR_015E_QUIT_GAME :Iesire
STR_015F_QUIT :Iesire din joc
STR_0160_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Esti sigur c<> vrei s<> renunti la acest joc?
STR_0161_QUIT_GAME :{WHITE}Iesire din joc
STR_SORT_ORDER_TIP :{BLACK}Alegeti ordinea de sortare ascendenta/descendenta
STR_SORT_CRITERIA_TIP :{BLACK}Alegeti criteriul de sortare
STR_SORT_TIP :{BLACK}Alege criteriul de sortare
SRT_SORT_BY :{BLACK}Ordoneaza dupa
STR_SORT_BY_POPULATION :{BLACK}Populatia
@@ -419,7 +417,6 @@ STR_0189 :{BLACK}{SMALLDOWNARROW}
STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Nu pot schimba intervalul de service...
STR_018B_CLOSE_WINDOW :{BLACK}<7D>nchide fereastra
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Titlul ferestrei - trage de aici pentru a muta fereastra
STR_STICKY_BUTTON :{BLACK}Mark this window as undeletable for the 'Close All Windows' key
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Demoleaz<61> cl<63>diri, str<74>zi, etc. pe un p<>trat de teren
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Scade altitudinea unui v<>rf de teren
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}M<>reste altitudinea unui v<>rf de teren
@@ -498,8 +495,6 @@ STR_01CD_SELECT_TUTORIAL_DEMONSTRATION :{WHITE}Alege vizionarea unui tutorial
STR_01CE_CARGO_ACCEPTED :{BLACK}<7D>nc<6E>rc<72>turi acceptate: {LTBLUE}{STRING}
STR_01CF_CARGO_ACCEPTED :{BLACK}<7D>nc<6E>rc<72>turi acceptate: {LTBLUE}{STRING}, {STRING}
STR_01D0_CARGO_ACCEPTED :{BLACK}<7D>nc<6E>rc<72>turi acceptate: {LTBLUE}{STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_4 :{BLACK}<7D>nc<6E>rc<72>turi acceptate: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_5 :{BLACK}<7D>nc<6E>rc<72>turi acceptate: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}, {STRING}
############ range for cargo acecpted ends
STR_01D1_8 :({COMMA8}/8 {STRING})
@@ -542,7 +537,7 @@ STR_01F5_SELECT_NEW_STYLE_MUSIC :{BLACK}Selecteaz
STR_01F6_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Selecteaz<61> programul personal 1
STR_01F7_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Selecteaz<61> programul personal 2
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Sterge programul curent (doar pentru cele personale)
STR_01F9_SAVE_MUSIC_SETTINGS :{BLACK}Salveaza setarile pentru muzica
STR_01F9_SAVE_MUSIC_SETTINGS_TO :{BLACK}Salveaz<EFBFBD> setarile musicale pe disc
STR_01FA_CLICK_ON_MUSIC_TRACK_TO :{BLACK}Click pe o melodie pentru a ad<61>uga-o in programul personal curent
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Comutator pentru amestecarea melodiilor (da/nu)
STR_01FC_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Afiseaza fereastra pentru selectia melodiilor
@@ -727,7 +722,7 @@ STR_02BC_VEHICLE_DESIGN_NAMES :{BLACK}Numele vehiculelor si modelelor
STR_02BD :{BLACK}{STRING}
STR_02BE_DEFAULT :Prestabilit
STR_02BF_CUSTOM :Propriu
STR_02C0_SAVE_CUSTOM_NAMES :{BLACK}Salveaza numele proprii
STR_02C0_SAVE_CUSTOM_NAMES_TO_DISK :{BLACK}Salveaz<EFBFBD> numele proprii pe disc
STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION :{BLACK}Selecteaz<61> numele modelelor
STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Salveaz<61> pe disc numele personalizate de m<>rci si modele
@@ -738,20 +733,16 @@ STR_02C5_DIFFICULTY_SETTINGS :Set
STR_02C6_DIFFICULTY_SETTINGS :Set<65>ri dificultate
STR_02C7_CONFIG_PATCHES :Configurare patch
STR_02C8_CONFIG_PATCHES :Configurare patch
STR_NEWGRF_SETTINGS :Setari Newgrf
STR_NEWGRF_SETTINGS2 :Setari Newgrf
STR_GAMEOPTMENU_0A :
STR_GAMEOPTMENU_0B :
STR_CLOSE_ALL_WINDOWS :Inchide TOATE ferestrele
STR_CLOSE_ALL_WINDOWS2 :Inchide TOATE ferestrele
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Afiseaz<61> numele oraselor
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Afiseaz<61> numele oraselor
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Afiseaz<61> numele statiilor
STR_02CC_STATION_NAMES_DISPLAYED :{SETX 12}Afiseaz<61> numele statiilor
STR_02CD_SIGNS_DISPLAYED :{CHECKMARK}{SETX 12}Afiseaz<61> semnele de pe hart<72>
STR_02CE_SIGNS_DISPLAYED :{SETX 12}Afiseaz<61> semnele de pe hart<72>
STR_WAYPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Afisare puncte de tranzit
STR_WAYPOINTS_DISPLAYED2 :{SETX 12}Afisare puncte de tranzit
STR_CHECKPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Afiseaz<EFBFBD> checkpoint-urile
STR_CHECKPOINTS_DISPLAYED2 :{SETX 12}Afiseaz<EFBFBD> checkpoint-urile
STR_02CF_FULL_ANIMATION :{CHECKMARK}{SETX 12}Animatie complet<65>
STR_02D0_FULL_ANIMATION :{SETX 12}Animatie complet<65>
STR_02D1_FULL_DETAIL :{CHECKMARK}{SETX 12}Detalii grafice complete
@@ -774,13 +765,13 @@ STR_02DC_DISPLAY_SUBSIDIES :{BLACK}Afiseaz
STR_02DD_SUBSIDIES :Subventii (F6)
STR_02DE_MAP_OF_WORLD :Harta lumii (F4)
STR_EXTRA_VIEW_PORT :Extra ecran
STR_02DF_TOWN_DIRECTORY :Lista oraselor
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Ecran{COMMA16}
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Copiaza pe ecranul principal
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Copiaza locatia ecranului principal in acest ecran
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Importa din ecran
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Importa locatia acestui ecran in ecranul principal
STR_02DF_TOWN_DIRECTORY :Lista oraselor
STR_02E0_CURRENCY_UNITS :{BLACK}Unit<69>ti monetare
STR_02E1 :{BLACK}{SKIP}{STRING}
STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}Alege unitatea monetar<61>
@@ -804,16 +795,16 @@ STR_02F8_EVERY_3_MONTHS :La fiecare 3 luni
STR_02F9_EVERY_6_MONTHS :La fiecare 6 luni
STR_02FA_EVERY_12_MONTHS :La fiecare 12 luni
STR_02FB_START_A_NEW_GAME :{BLACK}<7D>ncepere joc nou
STR_02FC_LOAD_A_SAVED_GAME :{BLACK}Incarca un joc salvat
STR_02FC_LOAD_A_SAVED_GAME_FROM :{BLACK}<EFBFBD>ncarc<EFBFBD> un joc
STR_02FD_VIEW_DEMONSTRATIONS_TUTORIALS :{BLACK}Vizionare demo-uri/tutoriale
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}Creeaz<61> un joc/scenariu propriu
STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}Alege un joc cu un singur juc<75>tor
STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}Alege un joc multiplayer cu 2-8 jucatori
STR_0300_SELECT_TWO_PLAYER_GAME :{BLACK}Alege un joc multiplayer
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Afiseaz<61> optiunile jocului
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Afiseaza optiunile pentru alegerea dificult<6C>tii
STR_0303_START_A_NEW_GAME_USING :{BLACK}<7D>nceperea unui joc nou folosind un scenariu deja existent
STR_0304_QUIT :{BLACK}Iesire
STR_0305_QUIT_OPENTTD :{BLACK}Iesi din 'OpenTTD'
STR_0305_LEAVE_OPENTTD :{BLACK}Iesire din OpenTTD
STR_0306_VIEW_DEMONSTRATION_TUTORIAL :{BLACK}Vizionare demonstratie/tutorial
STR_0307_OPENTTD :{WHITE}OpenTTD {REV}
STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...se poate construi doar <20>n orase
@@ -861,38 +852,41 @@ STR_TOWNNAME_SWEDISH :Suedeze
STR_TOWNNAME_DUTCH :Olandeze
STR_TOWNNAME_FINNISH :Finlandeze
STR_TOWNNAME_POLISH :Poloneze
STR_TOWNNAME_CZECH :Cehe
STR_TOWNNAME_SLOVAKISH :Slovace
STR_TOWNNAME_HUNGARIAN :Unguresti
STR_TOWNNAME_AUSTRIAN :Austriece
STR_TOWNNAME_ROMANIAN :Romanesti
STR_TOWNNAME_CZECH :Cehe
############ end of townname region
STR_CURR_EUR :Euro (<28>)
STR_CURR_POUNDS :Lir<EFBFBD> sterlin<69> ({POUNDSIGN})
STR_CURR_DOLLARS :Dolar ($)
STR_CURR_FF :Franc francez (FF)
STR_CURR_DM :Marc<72> german<61> (DM)
STR_CURR_YEN :Yen japonez ({YENSIGN})
STR_CURR_PT :Peseta spaniol<6F> (Pt)
STR_CURR_FT :Forint unguresc (Ft)
STR_CURR_ZL :Zlot polonez (zl)
STR_CURR_ATS :Siling austriac (ATS)
STR_CURR_BEF :Franc belgian (BEF)
STR_CURR_CHF :Franc elvetian (CHF)
STR_CURR_CZK :Coroan<61> ceh<65> (CZK)
STR_CURR_DKK :Coroan<61> danez<65> (DKK)
STR_CURR_FIM :Marc<72> finlandez<65> (FIM)
STR_CURR_GRD :Drahm<68> greceasc<73> (GRD)
STR_CURR_ISK :Coroan<EFBFBD> islandez<65> (ISK)
STR_CURR_ITL :Lir<69> italian<61> (ITL)
STR_CURR_CHF :Franc elvetian (CHF)
STR_CURR_NLG :Gulden olandez (NLG)
STR_CURR_ITL :Lir<69> italian<61> (ITL)
STR_CURR_SEK :Coroan<61> suedez<65> (SEK)
STR_CURR_RUR :Rubl<62> ruseasc<73> (RUR)
STR_CURR_CZK :Coroan<61> ceh<65> (CZK)
STR_CURR_ISK :Coroan<61> islandez<65> (ISK)
STR_CURR_NOK :Coroan<61> norvegian<61> (NOK)
STR_CURR_ROL :Leul Greu Romanesc (Lei)
STR_CURR_RUR :Rubl<EFBFBD> ruseasc<73> (RUR)
STR_CURR_SEK :Coroan<61> suedez<65> (SEK)
STR_CURR_EUR :Euro (<28>)
STR_OPTIONS_LANG :{BLACK}Limba
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_LANG_TIP :{BLACK}Alege limba <20>n care doresti afisat<61> interfata
STR_OPTIONS_FULLSCREEN :{BLACK}Mod
STR_OPTIONS_FULLSCREEN_TIP :{BLACK}Bifeaza aceasta casuta pentru a juca in modul
STR_OPTIONS_RES :{BLACK}Rezolutia ecranului
STR_OPTIONS_RES_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_RES_TIP :{BLACK}Alege rezolutia dorit<69> pentru joc
@@ -972,13 +966,11 @@ STR_CONFIG_PATCHES_OFF :inactiv
STR_CONFIG_PATCHES_ON :activ
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Afiseaz<61> viteza vehiculelor in bara de jos: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Permite construirea pe coast<73> si in pant<6E>: {ORANGE}{STRING}
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Permite arii de cuprindere mai realistice: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Permite demolarea unui nr. mai mare constructii: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Permite constructia de trenuri foarte lungi: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Permite acceleratie realistic<69> pentru trenuri: {ORANGE}{STRING}
STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Uneste g<>rile al<61>turate: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FULLLOADANY :{LTBLUE}P<>r<EFBFBD>seste statia c<>nd orice tip de marf<72> este 'full load': {ORANGE}{STRING}
STR_CONFIG_PATCHES_IMPROVEDLOAD :{LTBLUE}Foloseste algoritmul de LOAD imbunatatit: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INFLATION :{LTBLUE}Inflatia: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Livreaz<61> marfa doar in statiile unde aceasta este ceruta: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Permite constructia de poduri foarte lungi: {ORANGE}{STRING}
@@ -1045,8 +1037,6 @@ STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Pozitia listei cu instrumente: {ORAN
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :st<73>nga
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :centru
STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT :dreapta
STR_CONFIG_PATCHES_SNAP_RADIUS :{LTBLUE}Distanta de 'snap' pentru ferestre: {ORANGE}{STRING} px
STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED :{LTBLUE}Distanta de 'snap' pentru ferestre: {ORANGE}dezactivata
STR_CONFIG_PATCHES_GUI :{BLACK}Interfat<61>
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Constructie
@@ -1079,28 +1069,24 @@ STR_CHEAT_NO_JETCRASH :{LTBLUE}Avioanele cu reactie nu se vor pr
STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}Schimb<6D> peisajul: {ORANGE} {STRING}
STR_CHEAT_CHANGE_DATE :{LTBLUE}Schimb<6D> data: {ORANGE} {DATE_SHORT}
STR_HEADING_FOR_WAYPOINT :{LTBLUE}Merge spre {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Merge spre {WAYPOINT}, {VELOCITY}
STR_HEADING_FOR_CHECKPOINT :{LTBLUE}Merge spre {CHECKPOINT}
STR_HEADING_FOR_CHECKPOINT_VEL :{LTBLUE}Merge spre {CHECKPOINT}, {VELOCITY}
STR_GO_TO_WAYPOINT :Mergi via {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT :Mergi non-stop via {WAYPOINT}
STR_GO_TO_CHECKPOINT :Mergi via {CHECKPOINT}
STR_WAYPOINTNAME_CITY :Halta {TOWN}
STR_WAYPOINTNAME_CITY_SERIAL :Halta {TOWN} #{COMMA16}
STR_LANDINFO_WAYPOINT :Halt<6C> de miscare
STR_CHECKPOINTNAME_CITY :Halta {TOWN}
STR_CHECKPOINTNAME_CITY_SERIAL :Halta {TOWN} #{COMMA16}
STR_LANDINFO_CHECKPOINT :Halt<6C> de miscare
STR_WAYPOINT :{WHITE}Punct de tranzit
STR_WAYPOINT_GRAPHICS_TIP :{BLACK}Alege tipul de punct de tranzit
STR_CHECKPOINT_VIEWPORT :{WHITE}{CHECKPOINT}
STR_CHECKPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{CHECKPOINT}
STR_CHECKPOINT_RAW :{CHECKPOINT}
STR_EDIT_CHECKPOINT_NAME :{WHITE}Editeaz<61> numele haltei
STR_WAYPOINT_VIEWPORT :{WHITE}{WAYPOINT}
STR_WAYPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{WAYPOINT}
STR_WAYPOINT_RAW :{WAYPOINT}
STR_EDIT_WAYPOINT_NAME :{WHITE}Editeaz<EFBFBD> numele haltei
STR_CANT_CHANGE_WAYPOINT_NAME :{WHITE}Nu pot schimba numele haltei...
STR_CONVERT_RAIL_TO_WAYPOINT_TIP :{BLACK}Converteste linia <20>n halt<6C> de miscare (waypoint)
STR_CANT_BUILD_TRAIN_WAYPOINT :{WHITE}Nu pot plasa o halt<6C> aici...
STR_CANT_REMOVE_TRAIN_WAYPOINT :{WHITE}Nu pot sterge halta de aici...
STR_CANT_CHANGE_CHECKPOINT_NAME :{WHITE}Nu pot schimba numele haltei...
STR_CONVERT_RAIL_TO_CHECKPOINT_TIP :{BLACK}Converteste linia <20>n halt<6C> de miscare (checkpoint)
STR_CANT_BUILD_TRAIN_CHECKPOINT :{WHITE}Nu pot plasa o halt<6C> aici...
STR_CANT_REMOVE_TRAIN_CHECKPOINT :{WHITE}Nu pot sterge halta de aici...
STR_BUILD_AUTORAIL_TIP :{BLACK}Construieste cale ferat<61> <20>n modul automat
@@ -1113,7 +1099,6 @@ STR_MANY_RANDOM_INDUSTRIES :{BLACK}Multe industrii aleatoare
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Umple harta cu industrii generate aleator
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Nu pot genera industrii...
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}Afiseaza instrumentele pentru modelarea terenului, plantarea copacilor, etc.
STR_LANDSCAPING_TOOLBAR :{WHITE}Modificare peisaj
STR_LEVEL_LAND_TOOLTIP :{BLACK}Niveleaz<61> terenul
@@ -1186,44 +1171,37 @@ TEMP_AI_ACTIVATED :{WHITE}Atentie: algoritmul AI este
############ network gui strings
TEMP_STRING_NO_NETWORK :{WHITE}Interfata de retea nu este <20>nc<6E> functional<61>!
STR_NETWORK_MULTIPLAYER :{WHITE}Multiplayer
STR_NETWORK_PLAYER_NAME :{BLACK}Numele juc<75>torului:
STR_NETWORK_ENTER_NAME_TIP :{BLACK}Acesta este numele prin care te vor identifica ceilalti
STR_NETWORK_CONNECTION :{BLACK}Conexiune:
STR_NETWORK_CONNECTION_TIP :{BLACK}Alege intre un joc pe internet si unul pe LAN
STR_NETWORK_START_SERVER :{BLACK}Porneste serverul
STR_NETWORK_START_SERVER_TIP :{BLACK}Porneste un server propriu
STR_NETWORK_GAME_NAME :{BLACK}Nume
STR_NETWORK_GAME_NAME_TIP :{BLACK}Numele jocului
STR_NETWORK_INFO_ICONS_TIP :{BLACK}Limba, versiunea serverului, etc.
STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Click pe un joc din list<73> pentru a-l selecta
STR_NETWORK_FIND_SERVER :{BLACK}Caut<75> server
STR_NETWORK_FIND_SERVER_TIP :{BLACK}Caut<75> un server <20>n retea
STR_NETWORK_ADD_SERVER :{BLACK}Adauga un server
STR_NETWORK_ADD_SERVER_TIP :{BLACK}Adauga un server pe lista care va fi verificata pentru jocuri active
STR_NETWORK_DIRECT_CONNECT :{BLACK}Conectare direct<63>
STR_NETWORK_ENTER_IP :{BLACK}Introdu IP-ul serverului
STR_NETWORK_DIRECT_CONNECT_TIP :{BLACK}Conectare la un IP cunoscut
STR_NETWORK_START_SERVER :{BLACK}Porneste serverul
STR_NETWORK_START_SERVER_TIP :{BLACK}Porneste un server propriu
STR_NETWORK_CLIENTS_ONLINE :{BLACK}{COMMA16}/{COMMA16}
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Clienti
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Clienti online / Nr. max. clienti
STR_NETWORK_GAME_INFO :{SILVER}INFO JOC
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Clienti: {WHITE}{COMMA8} / {COMMA8}
STR_NETWORK_LANGUAGE :{SILVER}Limba: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Tileset: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}Marimea hartii: {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_SERVER_VERSION :{SILVER}Versiune server: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Adresa server: {WHITE}{STRING}
STR_NETWORK_START_DATE :{SILVER}Data de inceput: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Data curenta: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Protejat cu parola!
STR_NETWORK_SERVER_OFFLINE :{SILVER}SERVER OFFLINE
STR_NETWORK_SERVER_FULL :{SILVER}SERVER PLIN
STR_NETWORK_VERSION_MISMATCH :{SILVER}VERSIUNE DIFERITA
STR_NETWORK_PLAYER_NAME :{BLACK}Numele juc<75>torului:
STR_NETWORK_ENTER_NAME_TIP :{BLACK}Acesta este numele prin care te vor identifica ceilalti
STR_NETWORK_SELECT_CONNECTION :{BLACK}Alege tipul de conectare:
STR_NETWORK_CONNECTION_TYPE_TIP :{BLACK}Alege <20>ntre un joc pe Internet si unul <20>n reteaua local<61>
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :LAN
STR_NETWORK_INTERNET :Internet
STR_NETWORK_GAME_NAME :{BLACK}Nume
STR_NETWORK_GAME_NAME_TIP :{BLACK}Numele jocului
STR_NETWORK_PLAYERS :{BLACK}#/#
STR_NETWORK_PLAYERS_TIP :{BLACK}Juc<75>tori prezenti <20>n joc / Num<75>rul maxim de juc<75>tori
STR_NETWORK_MAP_SIZE :{BLACK}M<>rime
STR_NETWORK_MAP_SIZE_TIP :{BLACK}M<>rimea h<>rtii
STR_NETWORK_INFO_ICONS_TIP :{BLACK}Limba, versiunea serverului, etc.
STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Click pe un joc din list<73> pentru a-l selecta
STR_NETWORK_PLAYERS_VAL :{BLACK}{COMMA8}/{COMMA8}
STR_NETWORK_JOIN_GAME :{BLACK}Intr<74> <20>n joc
@@ -1232,28 +1210,20 @@ STR_NETWORK_START_GAME_WINDOW :{WHITE}
STR_NETWORK_NEW_GAME_NAME :{BLACK}Nume joc:
STR_NETWORK_NEW_GAME_NAME_TIP :{BLACK}Numele jocului va fi afisat celorlalti <20>n meniul de selectare al jocurilor multiplayer
STR_NETWORK_SET_PASSWORD :{BLACK}Pune parola
STR_NETWORK_PASSWORD :{BLACK}Parola:
STR_NETWORK_PASSWORD_TIP :{BLACK}Protejeaz<61>-ti jocul cu o parol<6F> dac<61> nu vrei s<> intre juc<75>tori neautorizati
STR_NETWORK_SELECT_MAP :{BLACK}Alege o hart<72>:
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Ce hart<72> doresti sa joci?
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Numar maxim de clienti
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Alege un numar maxim de clienti. Nu trebuie ocupate toate locurile.
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN_INTERNET :LAN / Internet
STR_NETWORK_INTERNET_ADVERTISE :Internet (fa reclama)
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_CLIENTS :2 clienti
STR_NETWORK_3_CLIENTS :3 clienti
STR_NETWORK_4_CLIENTS :4 clienti
STR_NETWORK_5_CLIENTS :5 clienti
STR_NETWORK_6_CLIENTS :6 clienti
STR_NETWORK_7_CLIENTS :7 clienti
STR_NETWORK_8_CLIENTS :8 clienti
STR_NETWORK_9_CLIENTS :9 clienti
STR_NETWORK_10_CLIENTS :10 clienti
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Limba vorbita:
STR_NETWORK_LANGUAGE_TIP :{BLACK}Ceilalti jucatori vor sti in ce limba se discuta per server.
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_NUMBER_OF_PLAYERS :{BLACK}Num<EFBFBD>r de juc<75>tori:
STR_NETWORK_NUMBER_OF_PLAYERS_TIP :{BLACK}Alege num<EFBFBD>rul maxim de juc<EFBFBD>tori. Nu toate locurile trebuie ocupate.
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_PLAYERS :2 jucatori
STR_NETWORK_3_PLAYERS :3 jucatori
STR_NETWORK_4_PLAYERS :4 jucatori
STR_NETWORK_5_PLAYERS :5 jucatori
STR_NETWORK_6_PLAYERS :6 jucatori
STR_NETWORK_7_PLAYERS :7 jucatori
STR_NETWORK_8_PLAYERS :8 jucatori
STR_NETWORK_START_GAME :{BLACK}<7D>ncepe jocul
STR_NETWORK_START_GAME_TIP :{BLACK}Incepe un joc nou in retea cu o harta aleatoare sau intr-un scenariu
STR_NETWORK_LOAD_GAME :{BLACK}Incarca joc
@@ -1261,62 +1231,17 @@ STR_NETWORK_LOAD_GAME_TIP :{BLACK}Reia un joc multiplayer salvat anterior (a
STR_NETWORK_LOAD_SCENARIO :{BLACK}Incarca scenariu
STR_NETWORK_LOAD_SCENARIO_TIP :{BLACK}Incepe un joc nou intr-un scenariu
############ Leave those lines in this order!!
STR_NETWORK_LANG_ANY :Oricare
STR_NETWORK_LANG_ENGLISH :Engleza
STR_NETWORK_LANG_GERMAN :Germana
STR_NETWORK_LANG_FRENCH :Franceza
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Chatul jocului multiplayer
STR_NETWORK_PREPARE_TO_JOIN :{BLACK}In pregatire pentru joc: {ORANGE}{STRING}
STR_NETWORK_COMPANY_LIST_TIP :{BLACK}Lista companiilor din jocul curent. Poti colabora cu o companie sau sa infiintezi una
STR_NETWORK_NEW_COMPANY :{BLACK}Companie nou<6F>
STR_NETWORK_NEW_COMPANY_TIP :{BLACK}Fondeaz<EFBFBD> o nou<6F> companie
STR_NETWORK_SEND :{BLACK}Trimite
STR_NETWORK_SEND_TIP :{BLACK}Trimite un mesaj celorlalti juc<75>tori
STR_NETWORK_COMPANY_NAME :{BLACK}Numele companiei:
STR_NETWORK_COMPANY_NAME_TIP :{BLACK}Schimb<EFBFBD> numele companiei. Apas<61> Enter pentru a aplica schimbarea.
STR_NETWORK_SPECTATE_GAME :{BLACK}Modul spectator
STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Vizioneaz<61> un joc din pozitia unui spectator
STR_NETWORK_JOIN_COMPANY :{BLACK}Alatura-te companiei
STR_NETWORK_JOIN_COMPANY_TIP :{BLACK}Ajuta la conducerea acestei companii
STR_NETWORK_REFRESH :{BLACK}Actualizeaza serverul
STR_NETWORK_REFRESH_TIP :{BLACK}Actualizeaza informatiile despre server
STR_NETWORK_COMPANY_INFO :{SILVER}INFO COMPANIE
STR_NETWORK_COMPANY_NAME :{SILVER}Numele companiei: {WHITE}{STRING}
STR_NETWORK_INAUGURATION_YEAR :{SILVER}Inaugurarea: {WHITE}{NUMU16}
STR_NETWORK_VALUE :{SILVER}Valoarea companiei: {WHITE}{CURRENCY64}
STR_NETWORK_CURRENT_BALANCE :{SILVER}Balanta curenta: {WHITE}{CURRENCY64}
STR_NETWORK_LAST_YEARS_INCOME :{SILVER}Venituri anul trecut: {WHITE}{CURRENCY64}
STR_NETWORK_PERFORMANCE :{SILVER}Performanta: {WHITE}{NUMU16}
STR_NETWORK_VEHICLES :{SILVER}Vehicule: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_STATIONS :{SILVER}Statii: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_PLAYERS :{SILVER}Jucatori: {WHITE}{STRING}
STR_NETWORK_CONNECTING :{WHITE}Conectare...
############ Leave those lines in this order!!
STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Conectare..
STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Authorizare..
STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Asteptati..
STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Descarcare harta..
STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Prelucrare date..
STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Inregistrare...
STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Preluare info joc..
STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Preluare info companie..
############ End of leave-in-this-order
STR_NETWORK_CONNECTING_WAITING :{BLACK}{INT32} client(i) inaintea noastra
STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{INT32} / {INT32} kbytes descarcati pana acum
STR_NETWORK_DISCONNECT :{BLACK}Deconectare
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Introdu textul de trimis
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Introdu suma de bani pe care vrei sa o cedezi
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server protejat. Introdu parola
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Companie protejata. Introdu parola
STR_NETWORK_CLIENT_LIST :{WHITE}Lista de clienti
STR_NETWORK_NEW_COMPANY :{BLACK}Companie nou<6F>
STR_NETWORK_NEW_COMPANY_TIP :{BLACK}Fondeaz<EFBFBD> o nou<6F> companie
STR_NETWORK_READY :{BLACK}Preg<EFBFBD>tit
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE}Nu a fost detectat<61> o plac<61> de retea valabil<69>
STR_NETWORK_ERR_NOSERVER :{WHITE}Nu a fost g<>sit nici un joc <20>n retea
@@ -1324,56 +1249,7 @@ STR_NETWORK_ERR_NOCONNECTION :{WHITE}Serverul nu a r
STR_NETWORK_ERR_DESYNC :{WHITE} Sincronizarea jocului in retea a esuat.
STR_NETWORK_ERR_LOSTCONNECTION :{WHITE} Conexiunea jocului in reatea a fost intrerupta.
STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE} Nu am reusit sa incarc jocul-server salvat.
STR_NETWORK_ERR_SERVER_START :{WHITE}Nu pot porni serverul.
STR_NETWORK_ERR_CLIENT_START :{WHITE}Nu pot efectua conectarea.
STR_NETWORK_ERR_TIMEOUT :{WHITE} Conexiunea #{NUMU16} a expirat.
STR_NETWORK_ERR_SERVER_ERROR :{WHITE}Eroare de protocol. Conexiunea a fost inchisa.
STR_NETWORK_ERR_WRONG_REVISION :{WHITE}Versiunea acestui client este diferita de cea a serverului.
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE}Parola gresita.
STR_NETWORK_ERR_SERVER_FULL :{WHITE}Serverul este plin
STR_NETWORK_ERR_KICKED :{WHITE}Ai fost dat afara de pe server
STR_NETWORK_ERR_CHEATER :{WHITE} Cheat-urile nu sunt permise pe acest server
STR_NETWORK_ERR_LEFT :a parasit jocul
############ Leave those lines in this order!!
STR_NETWORK_ERR_CLIENT_GENERAL :eroare generala
STR_NETWORK_ERR_CLIENT_DESYNC :eroare de desincronizare
STR_NETWORK_ERR_CLIENT_SAVEGAME :nu pot incarca harta
STR_NETWORK_ERR_CLIENT_CONNECTION_LOST :conexiune pierduta
STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR :eroare de protocol
STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED :neautorizat
STR_NETWORK_ERR_CLIENT_NOT_EXPECTED :primit pachet ciudat
STR_NETWORK_ERR_CLIENT_WRONG_REVISION :versiune incorecta
STR_NETWORK_ERR_CLIENT_NAME_IN_USE :nume folosit deja
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :parola gresita
STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH :player-id in DoCommand gresit
STR_NETWORK_ERR_CLIENT_KICKED :dat afara de pe server
STR_NETWORK_ERR_CLIENT_CHEATER :a incercat sa foloseasca un cheat
############ End of leave-in-this-order
STR_NETWORK_CLIENT_JOINED :a intrat in joc
STR_NETWORK_GIVE_MONEY :ti-a dat o suma de bani ({CURRENCY})
STR_NETWORK_GAVE_MONEY_AWAY :ai donat o suma de bani companiei {STRING} ({CURRENCY})
STR_NETWORK_CHAT_COMPANY :[Team] {STRING}:
STR_NETWORK_CHAT_TO_COMPANY :[Team] To {STRING}:
STR_NETWORK_CHAT_CLIENT :[Private] {STRING}:
STR_NETWORK_CHAT_TO_CLIENT :[Private] pentru {STRING}:
STR_NETWORK_CHAT_ALL :[All] {STRING}:
STR_NETWORK_NAME_CHANGE :si-a schimbat numele in
STR_NETWORK_SERVER_SHUTDOWN :{WHITE}Serverul a inchis conexiunea
STR_NETWORK_SERVER_REBOOT :{WHITE}Serverul este repornit...{}Va rugam asteptati...
STR_NETWORK_SERVER :Server
STR_NETWORK_CLIENT :Client
STR_NETWORK_CLIENTLIST_NONE :(none)
STR_NETWORK_CLIENTLIST_KICK :Kick
STR_NETWORK_CLIENTLIST_GIVE_MONEY :Doneaza bani
STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Vorbeste catre toti
STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Vorbeste catre companie
STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Mesaj privat
STR_NETWORK_SEND :{BLACK}Trimite
############ end network gui strings
@@ -1944,7 +1820,7 @@ STR_683B_HOSTILE :ostil
##id 0x7000
STR_7000 :
STR_7001 :{WHITE}{STRING} {BLACK}{STRING}
STR_7001 :{WHITE}{STRING}{BLACK}{STRING}
STR_7002_PLAYER :(Juc<75>torul {COMMA16})
STR_7004_NEW_FACE :{BLACK}Schimb<6D> foto
STR_7005_COLOR_SCHEME :{BLACK}Culoare
@@ -2599,7 +2475,7 @@ STR_GO_TO_SHIP_DEPOT :Mergi la Santierul Naval {TOWN}
SERVICE_AT_SHIP_DEPOT :Service la Santierul Naval {TOWN}
##id 0xA000
STR_A000_AIRPORTS :{WHITE}Airoporturi
STR_A000_AIRPORT_CONSTRUCT :{WHITE}Construieste aeroport
STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Nu pot construi un aeroport aici...
STR_A002_AIRCRAFT_HANGAR :{WHITE}{STATION} Hangar
STR_A003_NEW_AIRCRAFT :{BLACK}Aeronav<61> nou<6F>
@@ -2687,8 +2563,8 @@ STR_MULTIPLAYER_PAUSED :{WHITE}Jocul este in pauza.{}Comanda nu s-a putut e
STR_PERFORMANCE_DETAIL :{WHITE}Ratingul de performant<6E> detaliat
STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detalii
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA32}/{COMMA32})
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}{TINYFONT}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}{TINYFONT}({INT32}/{INT32})
STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{INT32}%
SET_PERFORMANCE_DETAIL_INT :{BLACK}{INT32}
############ Those following lines need to be in this order!!
@@ -2714,26 +2590,3 @@ STR_PERFORMANCE_DETAIL_MONEY_TIP :{BLACK}Balanta curent
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Ponderea creditelor
STR_PERFORMANCE_DETAIL_TOTAL_TIP :{BLACK}Punctajul total din num<75>rul maxim posibil
STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Setari Newgrf
STR_NEWGRF_APPLY_CHANGES :{BLACK}Aplica schimbarile
STR_NEWGRF_SET_PARAMETERS :{BLACK}Seteaza parametri
STR_NEWGRF_TIP :{BLACK}Lista tuturor setarilor Newgrf pe care le-ai instalat. Click pentru a schimba setarile.
STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}Nu exista fisiere newgrf instalate! Citeste manualul pentru instructiunile de instalare a fisierelor grafice noi.
STR_NEWGRF_FILENAME :{BLACK}Nume fisier:
STR_NEWGRF_GRF_ID :{BLACK}ID GRF:
STR_TRAIN :{BLACK}{TRAIN}
STR_LORRY :{BLACK}{LORRY}
STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_SCHEDULED_TRAINS :{WHITE}{STATION} - {COMMA16} Trenuri
STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA16} Autovehicule
STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA16} Aeronave
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA16} Nave
STR_SCHEDULED_TRAINS_TIP :{BLACK}Afiseaza toate trenurile care opresc in aceasta statie
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Afiseaza toate autovehiculele care opresc in aceasta statie
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Afiseaza toate aeronavele care opresc in aceasta statie
STR_SCHEDULED_SHIPS_TIP :{BLACK}Afiseaza toate navele care opresc in aceasta statie

View File

@@ -1,2 +0,0 @@
##name Russian_latin_char
##ownname Russkiy

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -5,7 +5,7 @@
STR_NULL :
STR_0001_OFF_EDGE_OF_MAP :{WHITE}Utanf<6E>r kanten
STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}F<>r n<>ra kanten
STR_0003_NOT_ENOUGH_CASH_REQUIRES :{WHITE}Inte tillr<6C>ckligt med pengar - kr<6B>vs {CURRENCY}
STR_0003_NOT_ENOUGH_CASH_REQUIRES :{WHITE}Inte tillr<6C>ckligt med pengar - kr<6B>ver {CURRENCY}
STR_0004 :{WHITE}{CURRENCY64}
STR_0005 :{RED}{CURRENCY64}
STR_EMPTY :
@@ -188,10 +188,6 @@ STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Ursprunglig
STR_00B7_VERSION :{BLACK}OpenTTD version {REV}
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Ursprungligen designat av Chris Sawyer
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Grafik av Simon Foster
STR_SPECIAL_THANKS :{BLACK}Speciella tack till:
STR_SPECIAL_THANKS_SIGNALS :{BLACK}<7D> F<>rsignaler och Semaforer {COPYRIGHT} 2003 Michael Blunck
STR_SPECIAL_THANKS_CANALS :{BLACK}<7D> Grunden f<>r j<>rnv<6E>g p<> sluttningar {COPYRIGHT} Marcin Grzegorczyk
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}<7D> Kanal- och slussgrafik {COPYRIGHT} 2003-2004 George
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 OpenTTD-teamet
STR_00C5 :{BLACK}{CROSS}
@@ -206,7 +202,7 @@ STR_00CD_3 :{BLACK}3
STR_00CE_4 :{BLACK}4
STR_00CF_5 :{BLACK}5
STR_00D0_NOTHING :Inget
STR_00D1_DARK_BLUE :M<>rkbl<EFBFBD>
STR_00D1_DARK_BLUE :M<>rkgr<EFBFBD>n
STR_00D2_PALE_GREEN :Mattgr<67>n
STR_00D3_PINK :Rosa
STR_00D4_YELLOW :Gul
@@ -310,7 +306,6 @@ STR_0134_UNIX :Unix
STR_0135_OSX :OSX
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_0139_IMPERIAL_MILES :Engelsk mil (miles)
STR_013A_METRIC_KILOMETERS :Metrisk (kilometer)
@@ -343,7 +338,6 @@ STR_0157_PERFORMANCE_HISTORY_GRAPH :Graf
STR_0158_COMPANY_VALUE_GRAPH :Graf <20>ver f<>retagets v<>rde
STR_0159_CARGO_PAYMENT_RATES :Fraktf<74>rtj<74>nster
STR_015A_COMPANY_LEAGUE_TABLE :Tabell <20>ver ledande f<>retag
STR_PERFORMANCE_DETAIL_MENU :Detaljerade prestandabetyg
############ range for menu ends
STR_015B_OPENTTD :{WHITE}OpenTTD
@@ -353,25 +347,7 @@ STR_015E_QUIT_GAME :Avsluta spelet
STR_015F_QUIT :Avsluta
STR_0160_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Vill du verkligen avsluta spelet?
STR_0161_QUIT_GAME :{WHITE}Avsluta spelet
STR_SORT_ORDER_TIP :{BLACK}V<>lj sorteringsordning (fallande/stigande)
STR_SORT_CRITERIA_TIP :{BLACK}V<>lj sortering
SRT_SORT_BY :{BLACK}Sortera efter
STR_SORT_BY_POPULATION :{BLACK}Befolkning
STR_SORT_BY_PRODUCTION :{BLACK}Produktion
STR_SORT_BY_TYPE :{BLACK}Typ
STR_SORT_BY_TRANSPORTED :{BLACK}Transporterat
STR_SORT_BY_NAME :{BLACK}Namn
STR_SORT_BY_DROPDOWN_NAME :Namn
STR_SORT_BY_DATE :{BLACK}Datum
STR_SORT_BY_UNSORTED :Osorterat
STR_SORT_BY_NUMBER :Nummer
STR_SORT_BY_PROFIT_LAST_YEAR :Vinst f<>rra <20>ret
STR_SORT_BY_PROFIT_THIS_YEAR :Vinst i <20>r
STR_SORT_BY_AGE :<3A>lder
STR_SORT_BY_RELIABILITY :P<>litlighet
STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Total kapacitet per godstyp
STR_SORT_BY_MAX_SPEED :Maximal hastighet
############ range for months starts
STR_0162_JAN :jan
@@ -419,7 +395,6 @@ STR_0189 :{BLACK}{SMALLDOWNARROW}
STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Kan inte <20>ndra service-intervall...
STR_018B_CLOSE_WINDOW :{BLACK}St<53>ng f<>nster
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}F<>nstertitel - dra f<>r att flytta f<>nstret
STR_STICKY_BUTTON :{BLACK}Markera detta f<>nster s<> att det finns kvar <20>ven fast man anv<6E>nder 'St<53>ng alla f<>nster' knappen
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Riv ned byggnader etc. p<> en ruta mark
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}S<>nk ett h<>rn av marken
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}H<>j upp ett h<>rn av marken
@@ -498,8 +473,6 @@ STR_01CD_SELECT_TUTORIAL_DEMONSTRATION :{WHITE}V
STR_01CE_CARGO_ACCEPTED :{BLACK}Accepterat gods: {LTBLUE}{STRING}
STR_01CF_CARGO_ACCEPTED :{BLACK}Accepterat gods: {LTBLUE}{STRING}, {STRING}
STR_01D0_CARGO_ACCEPTED :{BLACK}Accepterat gods: {LTBLUE}{STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_4 :{BLACK}Accepterat gods: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_5 :{BLACK}Accepterat gods: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}, {STRING}
############ range for cargo acecpted ends
STR_01D1_8 :({COMMA8}/8 {STRING})
@@ -542,7 +515,7 @@ STR_01F5_SELECT_NEW_STYLE_MUSIC :{BLACK}V
STR_01F6_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}V<>lj spellistan 'Egen 1' (anv<6E>ndardefinerad)
STR_01F7_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}V<>lj spellistan 'Egen 2' (anv<6E>ndardefinerad)
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}T<>m aktuellt program (Enbart Egen1 eller Egen2)
STR_01F9_SAVE_MUSIC_SETTINGS :{BLACK}Spara ljudinst<EFBFBD>llningar
STR_01F9_SAVE_MUSIC_SETTINGS_TO :{BLACK}Spara musikinst<EFBFBD>llningarna
STR_01FA_CLICK_ON_MUSIC_TRACK_TO :{BLACK}Klicka p<> ett sp<73>r f<>r att l<>gga till den till spellistan (Enbart Egen1 eller Egen2)
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}V<>xla slumpning av/p<>
STR_01FC_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Visa f<>nstret f<>r val av musiksp<73>r
@@ -727,7 +700,7 @@ STR_02BC_VEHICLE_DESIGN_NAMES :{BLACK}Fordonens modellnamn
STR_02BD :{BLACK}{STRING}
STR_02BE_DEFAULT :Original
STR_02BF_CUSTOM :Egna
STR_02C0_SAVE_CUSTOM_NAMES :{BLACK}Spara egna namn
STR_02C0_SAVE_CUSTOM_NAMES_TO_DISK :{BLACK}Spara egna namn till disk
STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION :{BLACK}Fordonens modellnamnssortiment
STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Spara egna modellnamn f<>r fordon till disk
@@ -738,26 +711,22 @@ STR_02C5_DIFFICULTY_SETTINGS :Sv
STR_02C6_DIFFICULTY_SETTINGS :Sv<53>righetsgrad
STR_02C7_CONFIG_PATCHES :Konfigurera patchar
STR_02C8_CONFIG_PATCHES :Konfigurera patchar
STR_NEWGRF_SETTINGS :Newgrf inst<73>llningar
STR_NEWGRF_SETTINGS2 :Newgrf inst<73>llningar
STR_GAMEOPTMENU_0A :
STR_GAMEOPTMENU_0B :
STR_CLOSE_ALL_WINDOWS :St<53>nga alla f<>nster
STR_CLOSE_ALL_WINDOWS2 :St<53>ng alla f<>nster
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Stadsnamn visas
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Stadsnamn visas
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Stationsnamn visas
STR_02CC_STATION_NAMES_DISPLAYED :{SETX 12}Stationsnamn visas
STR_02CD_SIGNS_DISPLAYED :{CHECKMARK}{SETX 12}Skyltar visas
STR_02CE_SIGNS_DISPLAYED :{SETX 12}Skyltar visas
STR_WAYPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Kontrollstationer visas
STR_WAYPOINTS_DISPLAYED2 :{SETX 12}Kontrollstationer visas
STR_CHECKPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Kontrollstationer visas
STR_CHECKPOINTS_DISPLAYED2 :{SETX 12}Kontrollstationer visas
STR_02CF_FULL_ANIMATION :{CHECKMARK}{SETX 12}Full animation
STR_02D0_FULL_ANIMATION :{SETX 12}Full animation
STR_02D1_FULL_DETAIL :{CHECKMARK}{SETX 12}Full detaljniv<69>
STR_02D2_FULL_DETAIL :{SETX 12}Full detaljniv<69>
STR_02D3_TRANSPARENT_BUILDINGS :{CHECKMARK}{SETX 12}Genomskinliga byggnader
STR_02D4_TRANSPARENT_BUILDINGS :{SETX 12}Genomskinliga byggnader
STR_02D3_TRANSPARENT_BUILDINGS :{CHECKMARK}{SETX 12}Transparenta byggnader
STR_02D4_TRANSPARENT_BUILDINGS :{SETX 12}Transparenta byggnader
############ range ends here
############ range for menu starts
@@ -773,14 +742,8 @@ STR_02DB_OFF :{BLACK}Av
STR_02DC_DISPLAY_SUBSIDIES :{BLACK}Visa subventioner
STR_02DD_SUBSIDIES :Subventioner
STR_02DE_MAP_OF_WORLD :V<>rldskarta
STR_EXTRA_VIEW_PORT :Nytt vy f<>nster
STR_02DF_TOWN_DIRECTORY :Lista av st<73>der
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Vy f<>nster {COMMA16}
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Kopiera till vy
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Kopiera kartans position till detta Vyf<79>nster
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Klistra in vyn
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Flytta kartans position till den h<>r vyn
STR_02DF_TOWN_DIRECTORY :Lista av st<73>der
STR_02E0_CURRENCY_UNITS :{BLACK}Valutaenheter
STR_02E1 :{BLACK}{SKIP}{STRING}
STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}V<>lj valutaenhet
@@ -804,16 +767,16 @@ STR_02F8_EVERY_3_MONTHS :Var 3:e m
STR_02F9_EVERY_6_MONTHS :Var 6:e m<>nad
STR_02FA_EVERY_12_MONTHS :Var 12:e m<>nad
STR_02FB_START_A_NEW_GAME :{BLACK}B<>rja ett nytt spel
STR_02FC_LOAD_A_SAVED_GAME :{BLACK}Ladda sparat spel
STR_02FC_LOAD_A_SAVED_GAME_FROM :{BLACK}<EFBFBD>ppna ett sparat spel
STR_02FD_VIEW_DEMONSTRATIONS_TUTORIALS :{BLACK}View demonstrationer/tutorials
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}Skapa egen ny spel v<>rld/scenario
STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}V<>lj en spelare
STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}V<>lj n<EFBFBD>tverksspel med 2-8 spelare
STR_0300_SELECT_TWO_PLAYER_GAME :{BLACK}V<>lj tv<EFBFBD> spelare
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Visa spelinst<73>llningar
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Visa inst<73>llningar f<>r sv<73>righetsgrad
STR_0303_START_A_NEW_GAME_USING :{BLACK}Starta nytt spel, som anv<6E>nder ett eget scenario
STR_0304_QUIT :{BLACK}Avsluta
STR_0305_QUIT_OPENTTD :{BLACK}Avsluta 'OpenTTD'
STR_0305_LEAVE_OPENTTD :{BLACK}Avsluta 'OpenTTD'
STR_0306_VIEW_DEMONSTRATION_TUTORIAL :{BLACK}Visa demonstration/tutorial
STR_0307_OPENTTD :{WHITE}OpenTTD {REV}
STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...kan bara byggas i st<73>der
@@ -864,43 +827,35 @@ STR_TOWNNAME_POLISH :Polska
STR_TOWNNAME_SLOVAKISH :Slovakiska
STR_TOWNNAME_HUNGARIAN :Hungarianska
STR_TOWNNAME_AUSTRIAN :Australienska
STR_TOWNNAME_ROMANIAN :Rum<75>nska
STR_TOWNNAME_CZECH :Tjeckiska
############ end of townname region
STR_CURR_GBP :Pund ({POUNDSIGN})
STR_CURR_USD :Dollar ($)
STR_CURR_EUR :Euro (<28>)
STR_CURR_POUNDS :Pund ({POUNDSIGN})
STR_CURR_DOLLARS :Dollar ($)
STR_CURR_FF :Franska franc (FF)
STR_CURR_DM :Tyska mark (DM)
STR_CURR_YEN :Yen ({YENSIGN})
STR_CURR_PT :Pesetas (Pt)
STR_CURR_FT :Ungerska forint (Ft)
STR_CURR_ZL :Polska zloty (zl)
STR_CURR_ATS :<3A>sterrikiska shilling (ATS)
STR_CURR_BEF :Belgiska franc (BEF)
STR_CURR_CHF :Schweiziska franc (CHF)
STR_CURR_CZK :Tjeckiska kronor (CZK)
STR_CURR_DEM :Tyska mark (DEM)
STR_CURR_DKK :Danska kronor (DKK)
STR_CURR_ESP :Peseta (ESP)
STR_CURR_FIM :Finska mark (FIM)
STR_CURR_FRF :Franc (FRF)
STR_CURR_GRD :Grekiska drachmer (GRD)
STR_CURR_HUF :Ungerska Forint (HUF)
STR_CURR_ISK :Isl<73>ndska kronor (ISK)
STR_CURR_ITL :Italienska lire (ITL)
STR_CURR_CHF :Schweiziska franc (CHF)
STR_CURR_NLG :Holl<6C>ndska guilder (NLG)
STR_CURR_NOK :Norska kronor (NOK)
STR_CURR_PLN :Polska Zloty (PLN)
STR_CURR_ROL :Rum<75>nsk Leu
STR_CURR_RUR :Ryska rubel (rur)
STR_CURR_ITL :Italienska lire (ITL)
STR_CURR_SEK :Svenska kronor (SEK)
STR_CURR_CUSTOM :Egen...
STR_CURR_RUR :Ryska rubel (rur)
STR_CURR_CZK :Tjeckiska kronor (CZK)
STR_CURR_ISK :Isl<73>ndska kronor (ISK)
STR_CURR_NOK :Norska kronor (NOK)
STR_CURR_EUR :Euro (<28>)
STR_OPTIONS_LANG :{BLACK}Spr<70>k
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_LANG_TIP :{BLACK}V<>lj spr<70>k att anv<6E>nda
STR_OPTIONS_FULLSCREEN :{BLACK}Helsk<73>rm
STR_OPTIONS_FULLSCREEN_TIP :{BLACK}Kryssa i den h<>r rutan f<>r att spela OpenTTD i helsk<73>rmsl<73>ge
STR_OPTIONS_RES :{BLACK}Sk<53>rmuppl<70>sning
STR_OPTIONS_RES_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_RES_TIP :{BLACK}V<>lj sk<73>rmuppl<70>sning att anv<6E>nda
@@ -945,32 +900,11 @@ STR_END_OF_SHARED_ORDERS :{SETX 10}- - Slut p
STR_TRAIN_IS_LOST :{WHITE}T<>g {COMMA16} har tappat bort sig.
STR_TRAIN_IS_UNPROFITABLE :{WHITE}T<>g {COMMA16}s vinst f<>rra <20>ret var {CURRENCY}
STR_EURO_INTRODUCE :{BLACK}{BIGFONT}Europeiska Valutasystemet!{}{}Euron introduceras och ditt land g<>r <20>ver till den som dess enda valuta!
# Start of order review system.
# DON'T ADD OR REMOVE LINES HERE
STR_TRAIN_HAS_TOO_FEW_ORDERS :{WHITE}T<>g {COMMA16} har f<>r f<> destinationer
STR_TRAIN_HAS_VOID_ORDER :{WHITE}T<>g {COMMA16} har en bruten destination
STR_TRAIN_HAS_DUPLICATE_ENTRY :{WHITE}T<>g {COMMA16} har dubblerade destinationer
STR_TRAIN_HAS_INVALID_ENTRY :{WHITE}T<>g {COMMA16} har en felaktig station ibland destinationerna
STR_ROADVEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}V<>gfordon {COMMA16} har f<>r f<> destinationer
STR_ROADVEHICLE_HAS_VOID_ORDER :{WHITE}V<>gfordon {COMMA16} har en bruten destination
STR_ROADVEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}V<>gfordon {COMMA16} har dubblerade destinationer
STR_ROADVEHICLE_HAS_INVALID_ENTRY :{WHITE}V<>gfordon {COMMA16} har en felaktig station ibland destinationerna
STR_SHIP_HAS_TOO_FEW_ORDERS :{WHITE}Skepp {COMMA16} har f<>r f<> destinationer
STR_SHIP_HAS_VOID_ORDER :{WHITE}Skepp {COMMA16} har en bruten destination
STR_SHIP_HAS_DUPLICATE_ENTRY :{WHITE}Skepp {COMMA16} har dubblerade destinationer
STR_SHIP_HAS_INVALID_ENTRY :{WHITE}Skepp {COMMA16} har en felaktig station ibland destinationerna
STR_AIRCRAFT_HAS_TOO_FEW_ORDERS :{WHITE}Flygplan {COMMA16} har f<>r f<> destinationer
STR_AIRCRAFT_HAS_VOID_ORDER :{WHITE}Flygplan {COMMA16} har en bruten destination
STR_AIRCRAFT_HAS_DUPLICATE_ENTRY :{WHITE}Flygplan {COMMA16} har dubblerade destinationer
STR_AIRCRAFT_HAS_INVALID_ENTRY :{WHITE}Flygplan {COMMA16} har en felaktig station ibland destinationerna
# end of order system
STR_TRAIN_AUTORENEW_FAILED :{WHITE}Automatiska f<>rnyandet av t<>g {COMMA16} misslyckades (inte tillr<6C>ckligt med pengar)
STR_ROADVEHICLE_AUTORENEW_FAILED :{WHITE}Automatiska f<>rnyandet av v<>gfordon {COMMA16} misslyckades (inte tillr<6C>ckligt med pengar)
STR_SHIP_AUTORENEW_FAILED :{WHITE}Automatiska f<>rnyandet av skepp {COMMA16} misslyckades (inte tillr<6C>ckligt med pengar)
STR_AIRCRAFT_AUTORENEW_FAILED :{WHITE}Automatiska f<>rnyandet av flygplan {COMMA16} misslyckades (inte tillr<6C>ckligt med pengar)
STR_CONFIG_PATCHES :{BLACK}Konfigurera patchar
STR_CONFIG_PATCHES_TIP :{BLACK}Konfigurera patcharna
@@ -980,13 +914,11 @@ STR_CONFIG_PATCHES_OFF :Av
STR_CONFIG_PATCHES_ON :P<>
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Visa fordonshastighet i statusf<73>ltet: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Till<6C>t byggnation p<> sluttningar och kuster: {ORANGE}{STRING}
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Till<6C>t mer realistiska uppsamlingsomr<6D>den f<>r stationer: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Till<6C>t borttagning av mera stads<64>gda v<>gar etc.: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Till<6C>t v<>ldigt l<>nga t<>g: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Aktivera realistisk acceleration f<>r t<>g: {ORANGE}{STRING}
STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Kombinera t<>gstationer som byggs bredvid varandra: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FULLLOADANY :{LTBLUE}L<>mna stationen n<>r n<>got gods <20>r fullt, om 'full load': {ORANGE}{STRING}
STR_CONFIG_PATCHES_IMPROVEDLOAD :{LTBLUE}Anv<6E>nd f<>rb<72>ttrad algoritm: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INFLATION :{LTBLUE}Inflation: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Leverera gods till en station enbart om n<>gon fr<66>gar efter det: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Till<6C>t v<>ldigt l<>nga broar: {ORANGE}{STRING}
@@ -1008,20 +940,11 @@ STR_CONFIG_PATCHES_NEW_TRAIN_PATHFIND :{LTBLUE}Ny algoritm f
STR_CONFIG_PATCHES_SMALL_AIRPORTS :{LTBLUE}Till<6C>t alltid sm<73> flygplatser: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LOST_TRAIN_DAYS :{LTBLUE}Ett t<>g <20>r vilse om ingen vidare framg<6D>ng <20>r n<>dd under: {ORANGE}{STRING} dagar
STR_CONFIG_PATCHES_LOST_TRAIN_DAYS_DISABLED :{LTBLUE}Ett t<>g <20>r vilse om ingen vidare framg<6D>ng <20>r n<>dd under: {ORANGE}disabled
STR_CONFIG_PATCHES_ORDER_REVIEW :{LTBLUE}Granska fordonens destinationer: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ORDER_REVIEW_OFF :nej
STR_CONFIG_PATCHES_ORDER_REVIEW_EXDEPOT :ja, f<>rutom stannade fordon
STR_CONFIG_PATCHES_ORDER_REVIEW_ON :ja, p<> alla fordon
STR_CONFIG_PATCHES_WARN_INCOME_LESS :{LTBLUE}Varna om ett t<>gs inkomst <20>r negativ: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEVER_EXPIRE_VEHICLES :{LTBLUE}Fordon blir aldrig gamla: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}F<>rnya fordon automatiskt n<>r dom blir gamla
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}F<>rnya automatiskt fordon {ORANGE}{STRING}{LTBLUE} m<>nader f<>re/efter maximal <20>lder
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Minst m<>ngd pengar i kassan f<>r automatisk f<>rnyelse av fordon: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Hur l<>nge felmeddelanden visas: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Osynliga tr<74>d (n<>r genomskinliga byggnader <20>r valt): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Sn<53>linjesh<73>jd: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Maximal spridning av en station: {ORANGE}{STRING} {RED}Varning: H<>g inst<73>llning sl<73>ar ner spelet
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Max stationsspridning: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Serva helikoptrar vid landningplattor automatiskt: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Max antal t<>g per spelare: {ORANGE}{STRING}
@@ -1034,46 +957,27 @@ STR_CONFIG_PATCHES_AI_BUILDS_ROADVEH :{LTBLUE}F
STR_CONFIG_PATCHES_AI_BUILDS_AIRCRAFT :{LTBLUE}F<>rbjud flygplan f<>r datorn: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AI_BUILDS_SHIPS :{LTBLUE}F<>rbjud skepp f<>r datorn: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AINEW_ACTIVE :{LTBLUE}Dator med ny AI (alpha): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SERVINT_TRAINS :{LTBLUE}Standard serviceintervall f<>r t<>g: {ORANGE}{STRING} dagar
STR_CONFIG_PATCHES_SERVINT_TRAINS_DISABLED :{LTBLUE}Standard serviceintervall f<>r t<EFBFBD>g: {ORANGE}av
STR_CONFIG_PATCHES_SERVINT_ROADVEH :{LTBLUE}Standard serviceintervall f<>r v<EFBFBD>gfordon: {ORANGE}{STRING} dagar
STR_CONFIG_PATCHES_SERVINT_ROADVEH_DISABLED :{LTBLUE}Standard serviceintervall f<>r v<EFBFBD>gfordon: {ORANGE}av
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Standard serviceintervall f<>r flygplan: {ORANGE}{STRING} dagar
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Standard serviceintervall f<>r flygplan: {ORANGE}av
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Standard serviceintervall f<>r skepp: {ORANGE}{STRING} dagar
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Default service interval for ships: {ORANGE}av
STR_CONFIG_PATCHES_SERVINT_TRAINS :{LTBLUE}Standard-serviceintervall f<>r t<>g: {ORANGE}{STRING} days
STR_CONFIG_PATCHES_SERVINT_ROADVEH :{LTBLUE}Standard-serviceintervall f<>r v<EFBFBD>gfordon: {ORANGE}{STRING} days
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Standard-serviceintervall f<>r flygplan: {ORANGE}{STRING} days
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Standard-serviceintervall f<>r skepp: {ORANGE}{STRING} days
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}F<>rgade nyheter visas i: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Startdatum: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Lugn ekonomi (flera sm<73> <20>ndringar)
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Vid utdragning av signaler, placera en signal var: {ORANGE}{STRING} ruta
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Position av verktygsraden: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :V<>nster
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :Centrerad
STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT :H<>ger
STR_CONFIG_PATCHES_SNAP_RADIUS :{LTBLUE}F<>nstersn<73>ppsradie: {ORANGE}{STRING} px
STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED :{LTBLUE}F<>nstersn<73>ppsradie: {ORANGE}avaktiverad
STR_CONFIG_PATCHES_GUI :{BLACK}Gr<47>nssnitt
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Konstruktion
STR_CONFIG_PATCHES_VEHICLES :{BLACK}Fordon
STR_CONFIG_PATCHES_STATIONS :{BLACK}Stationer
STR_CONFIG_PATCHES_ECONOMY :{BLACK}Ekonomi
STR_CONFIG_PATCHES_AI :{BLACK}Motst<73>ndare
STR_CONFIG_PATCHES_DISABLED :Avaktiverat
STR_CONFIG_PATCHES_INT32 :{INT32}
STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}<7D>ndra inst<73>llningsv<73>rde
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}N<>gra eller alla av standard serviceintervalls-inst<73>llningarna <20>r felaktiga! (5-90% och 30-800 dagar <20>r giltiga inst<73>llningar)
STR_TEMPERATE_LANDSCAPE :tempererat landskap
STR_SUB_ARCTIC_LANDSCAPE :sub-arktiskt landskap
STR_SUB_TROPICAL_LANDSCAPE :sub-tropiskt landskap
STR_TOYLAND_LANDSCAPE :leksakslandskap
STR_CHEATS :{WHITE}Fusk
STR_CHEATS_TIP :{BLACK}Checkboxar indikerar om du anv<6E>nt det h<>r fusket f<>rut
@@ -1083,32 +987,25 @@ STR_CHEAT_CHANGE_PLAYER :{LTBLUE}Spelar som: {ORANGE}{COMMA16}
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}trimmad bulldozer (ta bort industrier, fyrar etc.): {ORANGE}{STRING}
STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunnlar kan korsa varandra: {ORANGE}{STRING}
STR_CHEAT_BUILD_IN_PAUSE :{LTBLUE}Byggnation i pause-l<>ge: {ORANGE}{STRING}
STR_CHEAT_NO_JETCRASH :{LTBLUE}Jetplan kommer inte att st<73>rta (frekvent) p<> sm<73> flygplatser: {ORANGE} {STRING}
STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}Byt klimat: {ORANGE} {STRING}
STR_CHEAT_CHANGE_DATE :{LTBLUE}Byt datum: {ORANGE} {DATE_SHORT}
STR_HEADING_FOR_WAYPOINT :{LTBLUE}P<> v<>g mot {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}P<> v<>g mot {WAYPOINT}, {VELOCITY}
STR_HEADING_FOR_CHECKPOINT :{LTBLUE}P<> v<>g mot {CHECKPOINT}
STR_HEADING_FOR_CHECKPOINT_VEL :{LTBLUE}P<> v<>g mot {CHECKPOINT}, {VELOCITY}
STR_GO_TO_WAYPOINT :G<> via {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT :G<> via {WAYPOINT} utan att stanna
STR_GO_TO_CHECKPOINT :G<> via {CHECKPOINT}
STR_WAYPOINTNAME_CITY :Kontrollstation {TOWN}
STR_WAYPOINTNAME_CITY_SERIAL :Kontrollstation {TOWN} #{COMMA16}
STR_LANDINFO_WAYPOINT :Kontrollpunkt
STR_CHECKPOINTNAME_CITY :Kontrollstation {TOWN}
STR_CHECKPOINTNAME_CITY_SERIAL :Kontrollstation {TOWN} #{COMMA16}
STR_LANDINFO_CHECKPOINT :Kontrollpunkt
STR_WAYPOINT :{WHITE}V<EFBFBD>gpunkt
STR_WAYPOINT_GRAPHICS_TIP :{BLACK}V<>lj v<>gpunkts typ
STR_CHECKPOINT_VIEWPORT :{WHITE}{CHECKPOINT}
STR_CHECKPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{CHECKPOINT}
STR_CHECKPOINT_RAW :{CHECKPOINT}
STR_EDIT_CHECKPOINT_NAME :{WHITE}<7D>ndra namn p<> kontrollstation
STR_WAYPOINT_VIEWPORT :{WHITE}{WAYPOINT}
STR_WAYPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{WAYPOINT}
STR_WAYPOINT_RAW :{WAYPOINT}
STR_EDIT_WAYPOINT_NAME :{WHITE}<EFBFBD>ndra namn p<> kontrollstation
STR_CANT_CHANGE_WAYPOINT_NAME :{WHITE}Kan inte <20>ndra kontrollstationens namn...
STR_CONVERT_RAIL_TO_WAYPOINT_TIP :{BLACK}<7D>ndra r<>ls till kontrollstation
STR_CANT_BUILD_TRAIN_WAYPOINT :{WHITE}Kan inte bygga t<>gkontrollstation h<>r...
STR_CANT_REMOVE_TRAIN_WAYPOINT :{WHITE}Kan inte ta bort t<>gkontrollstation h<>r...
STR_CANT_CHANGE_CHECKPOINT_NAME :{WHITE}Kan inte <20>ndra kontrollstationens namn...
STR_CONVERT_RAIL_TO_CHECKPOINT_TIP :{BLACK}<7D>ndra r<>ls till kontrollstation
STR_CANT_BUILD_TRAIN_CHECKPOINT :{WHITE}Kan inte bygga t<>gkontrollstation h<>r...
STR_CANT_REMOVE_TRAIN_CHECKPOINT :{WHITE}Kan inte ta bort t<>gkontrollstation h<>r...
STR_BUILD_AUTORAIL_TIP :{BLACK}Bygg j<>rnv<6E>gsp<73>r genom att anv<6E>nda Autorail-funktionen
@@ -1121,8 +1018,7 @@ STR_MANY_RANDOM_INDUSTRIES :{BLACK}M
STR_RANDOM_INDUSTRIES_TIP :{BLACK}T<>ck kartan med slumpm<70>ssigt placerade industrier
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Kan inte generera industrier...
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}<7D>ppna landskapsarkitektursverktygen f<>r att bla h<>ja/s<>nka land, plantera tr<74>d, osv
STR_LANDSCAPING_TOOLBAR :{WHITE}Landskapsarkitektur
STR_LANDSCAPING_TOOLBAR :{WHITE}Landskapsverktygen
STR_LEVEL_LAND_TOOLTIP :{BLACK}Utj<74>mna land
@@ -1175,8 +1071,8 @@ STR_CONSTRUCT_TOFFEE_QUARRY_TIP :{BLACK}Bygg kn
STR_CONSTRUCT_SUGAR_MINE_TIP :{BLACK}Bygg sockergruva
STR_INDUSTRYDIR_CAPTION :{WHITE}Industrier
STR_INDUSTRYDIR_ITEM :{ORANGE}{TOWN} {STRING}{BLACK} ({STRING}){YELLOW} ({COMMA16}% transporterat)
STR_INDUSTRYDIR_ITEM_TWO :{ORANGE}{TOWN} {STRING}{BLACK} ({STRING}/{STRING}){YELLOW} ({COMMA16}%/{COMMA16}% transporterat)
STR_INDUSTRYDIR_ITEM :{ORANGE}{CITY} {STRING}{BLACK} ({STRING}){YELLOW} ({COMMA16}% transporterat)
STR_INDUSTRYDIR_ITEM_TWO :{ORANGE}{CITY} {STRING}{BLACK} ({STRING}/{STRING}){YELLOW} ({COMMA16}%/{COMMA16}% transporterat)
STR_INDUSTRYDIR_ITEM_NOPROD :{ORANGE}{TOWN} {STRING}
STR_INDUSTRY_TOO_CLOSE :{WHITE}... f<>r n<>ra annan industri
@@ -1187,51 +1083,41 @@ STR_RAIL_REFIT_VEHICLE :{BLACK}Anpassa t
STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}V<>lj godstyp f<>r t<>get att b<>ra
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Anpassa t<>g f<>r att b<>ra vald godstyp
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Kan ej anpassa t<>g...
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Visa serviceintervall i procent: {ORANGE}{STRING}
TEMP_AI_IN_PROGRESS :{WHITE}V<>lkommen till denna nya AI, under uppbyggnad. Du kan r<>kna med att det finns problem med den. N<>r n<>got s<>dant h<>nder, ta en sk<73>rmdump och l<>gg ut den p<> forumet. Mycket n<>je!
TEMP_AI_ACTIVATED :{WHITE}Varning: den nya AI:n <20>r fortfarande i alpha-stadiet! Just nu funkar bara v<>gfordon!
############ network gui strings
TEMP_STRING_NO_NETWORK :{WHITE}St<53>d f<>r n<>tverksspel fungerar inte <20>n!
STR_NETWORK_MULTIPLAYER :{WHITE}Flera spelare
STR_NETWORK_PLAYER_NAME :{BLACK}Spelarnamn:
STR_NETWORK_ENTER_NAME_TIP :{BLACK}Namnet som andra spelare kommer att identifiera dig av
STR_NETWORK_CONNECTION :{BLACK}Anslutning:
STR_NETWORK_CONNECTION_TIP :{BLACK}V<>lj mellan att spela <20>ver internet eller det lokala n<>tverket
STR_NETWORK_START_SERVER :{BLACK}Starta server
STR_NETWORK_START_SERVER_TIP :{BLACK}Starta en server f<>r andra att ansluta till
STR_NETWORK_GAME_NAME :{BLACK}Namn
STR_NETWORK_GAME_NAME_TIP :{BLACK}Namn p<> n<>tverksspelet
STR_NETWORK_INFO_ICONS_TIP :{BLACK}Spr<70>k, server version, mm
STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Klicka p<> ett spel fr<66>n listan f<>r att v<>lja det
STR_NETWORK_FIND_SERVER :{BLACK}Leta server
STR_NETWORK_FIND_SERVER_TIP :{BLACK}Leta p<> n<>tverket efter en server
STR_NETWORK_ADD_SERVER :{BLACK}L<>gg till server
STR_NETWORK_ADD_SERVER_TIP :{BLACK}L<>gg till en server till listan som alltid kommer kontrolleras f<>r aktiva spel.
STR_NETWORK_DIRECT_CONNECT :{BLACK}Anslut direkt
STR_NETWORK_ENTER_IP :{BLACK}IP-adressen till servern
STR_NETWORK_DIRECT_CONNECT_TIP :{BLACK}Ansluta till en server med k<>nd IP-adress
STR_NETWORK_START_SERVER :{BLACK}Starta server
STR_NETWORK_START_SERVER_TIP :{BLACK}Starta en server f<>r andra att ansluta till
STR_NETWORK_CLIENTS_ONLINE :{BLACK}{COMMA16}/{COMMA16}
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Klienter
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Klienter online / Klienter max
STR_NETWORK_GAME_INFO :{SILVER}SPELINFO
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Klienter: {WHITE}{COMMA8} / {COMMA8}
STR_NETWORK_LANGUAGE :{SILVER}Spr<70>k: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Klimat: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}Kartstorlek: {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_SERVER_VERSION :{SILVER}Serverversion: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Serveradress: {WHITE}{STRING}
STR_NETWORK_START_DATE :{SILVER}Startdatum: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Nuvarande datum: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}L<>senordsskyddad!
STR_NETWORK_SERVER_OFFLINE :{SILVER}SERVER AVST<53>NGD
STR_NETWORK_SERVER_FULL :{SILVER}SERVER FULL
STR_NETWORK_VERSION_MISMATCH :{SILVER}VERSIONER FUNKAR INTE IHOP
STR_NETWORK_PLAYER_NAME :{BLACK}Namn p<> spelare:
STR_NETWORK_ENTER_NAME_TIP :{BLACK}Namnet som andra spelare kommer att identifiera dig av
STR_NETWORK_SELECT_CONNECTION :{BLACK}V<>lj typ av n<>tverksspel:
STR_NETWORK_CONNECTION_TYPE_TIP :{BLACK}V<>lj mellan att spela p<> internet eller <20>ver det lokala n<>tverket
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :LAN
STR_NETWORK_INTERNET :Internet
STR_NETWORK_GAME_NAME :{BLACK}Namn
STR_NETWORK_GAME_NAME_TIP :{BLACK}Namn p<> n<>tverksspelet
STR_NETWORK_PLAYERS :{BLACK}#/#
STR_NETWORK_PLAYERS_TIP :{BLACK}Antalet spelare i spelet nu / maximalt antal spelare
STR_NETWORK_MAP_SIZE :{BLACK}Storlek
STR_NETWORK_MAP_SIZE_TIP :{BLACK}Storlek p<> kartan
STR_NETWORK_INFO_ICONS_TIP :{BLACK}Spr<70>k, server version, mm
STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Klicka p<> ett spel fr<66>n listan f<>r att v<>lja det
STR_NETWORK_PLAYERS_VAL :{BLACK}{COMMA8}/{COMMA8}
STR_NETWORK_JOIN_GAME :{BLACK}G<> med i spelet
@@ -1240,150 +1126,34 @@ STR_NETWORK_START_GAME_WINDOW :{WHITE}Starta ett nytt spel
STR_NETWORK_NEW_GAME_NAME :{BLACK}Namn:
STR_NETWORK_NEW_GAME_NAME_TIP :{BLACK}Namnet p<> n<>tverksspelet som kommer att synas f<>r dom andra spelarna
STR_NETWORK_SET_PASSWORD :{BLACK}Ange l<EFBFBD>senord
STR_NETWORK_PASSWORD :{BLACK}L<EFBFBD>senord:
STR_NETWORK_PASSWORD_TIP :{BLACK}Skydda spelet med ett l<>senord s<> att inte andra <20>n dom som har l<>senordet kan g<> med i spelet
STR_NETWORK_SELECT_MAP :{BLACK}V<>lj karta:
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Vilken karta vill du spela?
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Max antal till<6C>tna klienter:
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}V<EFBFBD>lj max antal till<6C>tna klienter. Alla platser m<>ste inte fyllas.
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :LAN
STR_NETWORK_INTERNET :Internet
STR_NETWORK_LAN_INTERNET :LAN / Internet
STR_NETWORK_INTERNET_ADVERTISE :Internet (publik)
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_CLIENTS :2 klienter
STR_NETWORK_3_CLIENTS :3 klienter
STR_NETWORK_4_CLIENTS :4 klienter
STR_NETWORK_5_CLIENTS :5 klienter
STR_NETWORK_6_CLIENTS :6 klienter
STR_NETWORK_7_CLIENTS :7 klienter
STR_NETWORK_8_CLIENTS :8 klienter
STR_NETWORK_9_CLIENTS :9 klienter
STR_NETWORK_10_CLIENTS :10 klienter
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Spr<70>k som talas:
STR_NETWORK_LANGUAGE_TIP :{BLACK}Andra spelare kommer vara medvetna vilket spr<70>k som talas p<> servern.
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_NUMBER_OF_PLAYERS :{BLACK}Nummer av spelare:
STR_NETWORK_NUMBER_OF_PLAYERS_TIP :{BLACK}Maximalt antal spelare som kan vara med <20> spela
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_PLAYERS :2 spelare
STR_NETWORK_3_PLAYERS :3 spelare
STR_NETWORK_4_PLAYERS :4 spelare
STR_NETWORK_5_PLAYERS :5 spelare
STR_NETWORK_6_PLAYERS :6 spelare
STR_NETWORK_7_PLAYERS :7 spelare
STR_NETWORK_8_PLAYERS :8 spelare
STR_NETWORK_START_GAME :{BLACK}Starta spelet
STR_NETWORK_START_GAME_TIP :{BLACK}Starta ett nytt spel med en slumpm<70>ssig karta eller fr<66>n ett scenario
STR_NETWORK_LOAD_GAME :{BLACK}Ladda spel
STR_NETWORK_LOAD_GAME_TIP :{BLACK}<7D>teruppta ett tidigare sparat spel f<>r flera spelare (t<>nk p<> att v<>lja r<>tt spelare vid start)
STR_NETWORK_LOAD_SCENARIO :{BLACK}Ladda scenario
STR_NETWORK_LOAD_SCENARIO_TIP :{BLACK}Starta ett n<>tverksspel fr<66>n ett scenario
############ Leave those lines in this order!!
STR_NETWORK_LANG_ANY :Valfritt
STR_NETWORK_LANG_ENGLISH :Engelska
STR_NETWORK_LANG_GERMAN :Tyska
STR_NETWORK_LANG_FRENCH :Franska
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}N<>tverksspel
STR_NETWORK_PREPARE_TO_JOIN :{BLACK}F<>rbereder att ansluta: {ORANGE}{STRING}
STR_NETWORK_COMPANY_LIST_TIP :{BLACK}En lista p<> alla nuvarande f<>retag som <20>r i spelet. Du kan antingen ansluta till ett eller starta ett
STR_NETWORK_NEW_COMPANY :{BLACK}Nytt f<>retag
STR_NETWORK_NEW_COMPANY_TIP :{BLACK}Starta ett nytt f<>retag
STR_NETWORK_SEND :{BLACK}Skicka
STR_NETWORK_SEND_TIP :{BLACK}Skicka ett meddelande till dom andra spelarna
STR_NETWORK_COMPANY_NAME :{BLACK}F<EFBFBD>retagsnamn:
STR_NETWORK_COMPANY_NAME_TIP :{BLACK}<EFBFBD>ndra namnet p<> ditt f<>retag (enter f<>r att spara <20>ndring)
STR_NETWORK_SPECTATE_GAME :{BLACK}Titta p<> spelet
STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Titta p<> spelet som en <20>sk<73>dare
STR_NETWORK_JOIN_COMPANY :{BLACK}Anslut till f<>retag
STR_NETWORK_JOIN_COMPANY_TIP :{BLACK}Hj<EFBFBD>lp till att styra detta f<>retag
STR_NETWORK_REFRESH :{BLACK}Uppdatera server
STR_NETWORK_REFRESH_TIP :{BLACK}Uppdatera server info
STR_NETWORK_NEW_COMPANY :{BLACK}Nytt f<>retag
STR_NETWORK_NEW_COMPANY_TIP :{BLACK}Starta ett nytt f<>retag
STR_NETWORK_READY :{BLACK}Klar
STR_NETWORK_COMPANY_INFO :{SILVER}F<>RETAGSINFO
STR_NETWORK_COMPANY_NAME :{SILVER}F<>retagsnamn: {WHITE}{STRING}
STR_NETWORK_INAUGURATION_YEAR :{SILVER}Etablerings<67>r: {WHITE}{NUMU16}
STR_NETWORK_VALUE :{SILVER}F<>retagsv<73>rde: {WHITE}{CURRENCY64}
STR_NETWORK_CURRENT_BALANCE :{SILVER}Nuvarande saldo: {WHITE}{CURRENCY64}
STR_NETWORK_LAST_YEARS_INCOME :{SILVER}F<>rra <20>rets inkomst: {WHITE}{CURRENCY64}
STR_NETWORK_PERFORMANCE :{SILVER}Prestandabetyg: {WHITE}{NUMU16}
STR_NETWORK_VEHICLES :{SILVER}Fordon: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_STATIONS :{SILVER}Stationer: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_PLAYERS :{SILVER}Spelare: {WHITE}{STRING}
STR_NETWORK_CONNECTING :{WHITE}Ansluter...
############ Leave those lines in this order!!
STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Ansluter..
STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Godk<64>nner..
STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) V<>ntar..
STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Laddar hem karta..
STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Behandlar data..
STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registrerar..
STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}H<>mtar spelinfo..
STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}H<>mtar f<>retagsinfo..
############ End of leave-in-this-order
STR_NETWORK_CONNECTING_WAITING :{BLACK}{INT32} klient(er) f<>re oss
STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{INT32} / {INT32} kbyte nerladdat hittills
STR_NETWORK_DISCONNECT :{BLACK}Fr<46>nkopplad
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Ange meddelandet du vill skicka
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Ange beloppet du vill ge
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servern <20>r skyddad. Ange l<>senord
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}F<>retaget <20>r skyddat. Ange l<>senord
STR_NETWORK_CLIENT_LIST :{WHITE}Klientlista
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE}Inget n<>tverkskort funnet eller s<> <20>r spelet kompilerat utan ENABLE_NETWORK
STR_NETWORK_ERR_NOSERVER :{WHITE}Kunde inte hitta n<>gra n<>tverksspel
STR_NETWORK_ERR_NOCONNECTION :{WHITE}Servern svarade inte p<> f<>rfr<66>gan
STR_NETWORK_ERR_DESYNC :{WHITE}N<>tverk, Spelsynkronisering misslyckades
STR_NETWORK_ERR_LOSTCONNECTION :{WHITE}N<>tverk, koppling f<>rlorad
STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE}Kunde inte ladda det sparade spelet fr<66>n servern
STR_NETWORK_ERR_SERVER_START :{WHITE} Kunde inte starta servern.
STR_NETWORK_ERR_CLIENT_START :{WHITE} Kunde inte ansluta.
STR_NETWORK_ERR_TIMEOUT :{WHITE}N<>tverkskoppling #{NUMU16} f<>rlorad (klient slutade svara)
STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Vi gjorde ett protokollfel och v<>r anslutningen <20>r st<73>ngd.
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Servern har en annan version <20>n denna klient.
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Fel l<>senord.
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Servern <20>r full
STR_NETWORK_ERR_KICKED :{WHITE} Du <20>r utkastad fr<66>n servern
STR_NETWORK_ERR_CHEATER :{WHITE} Fusk <20>r inte till<6C>tet p<> denna server
STR_NETWORK_ERR_LEFT :har l<>mnat spelet
############ Leave those lines in this order!!
STR_NETWORK_ERR_CLIENT_GENERAL :allm<6C>nt fel
STR_NETWORK_ERR_CLIENT_DESYNC :synkroniseringsfel
STR_NETWORK_ERR_CLIENT_SAVEGAME :kunde inte ladda kartan
STR_NETWORK_ERR_CLIENT_CONNECTION_LOST :anslutning f<>rlorad
STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR :protokollfel
STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED :inte godk<64>nd
STR_NETWORK_ERR_CLIENT_NOT_EXPECTED :mottog konstigt paket
STR_NETWORK_ERR_CLIENT_WRONG_REVISION :fel version
STR_NETWORK_ERR_CLIENT_NAME_IN_USE :namnet anv<6E>nds redan
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :fel spell<6C>senord
STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH :fel spelar-id i DoCommand
STR_NETWORK_ERR_CLIENT_KICKED :utkastad av servern
STR_NETWORK_ERR_CLIENT_CHEATER :f<>rs<72>kte fuska
############ End of leave-in-this-order
STR_NETWORK_CLIENT_JOINED :har anslutit till spelet
STR_NETWORK_GIVE_MONEY :gav dig en del pengar ({CURRENCY})
STR_NETWORK_GAVE_MONEY_AWAY :Du gav {STRING} en del pengar ({CURRENCY})
STR_NETWORK_CHAT_COMPANY :[F<>retaget] {STRING}:
STR_NETWORK_CHAT_TO_COMPANY :[F<>retaget] Till {STRING}:
STR_NETWORK_CHAT_CLIENT :[Privat] {STRING}:
STR_NETWORK_CHAT_TO_CLIENT :[Privat] Till {STRING}:
STR_NETWORK_CHAT_ALL :[Alla] {STRING}:
STR_NETWORK_NAME_CHANGE :har <20>ndrat namn till
STR_NETWORK_SERVER_SHUTDOWN :{WHITE} Servern avslutade sessionen
STR_NETWORK_SERVER_REBOOT :{WHITE} Servern startar om...{}Var v<>nlig v<>nta...
STR_NETWORK_SERVER :Server
STR_NETWORK_CLIENT :Klient
STR_NETWORK_CLIENTLIST_NONE :(ingen)
STR_NETWORK_CLIENTLIST_KICK :Kasta ut
STR_NETWORK_CLIENTLIST_GIVE_MONEY :Ge pengar
STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Prata med alla
STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Prata med alla i f<>retaget
STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privat meddelande
STR_NETWORK_SEND :{BLACK}Skicka
############ end network gui strings
@@ -1459,7 +1229,7 @@ STR_1802_ROAD_CONSTRUCTION :{WHITE}Bygg v
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}V<>lj v<>gbro
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Kan inte bygga v<>g h<>r...
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Kan inte ta bort v<>g h<>r...
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Riktning f<>r bussgarage
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}V<EFBFBD>g riktning f<>r bussgarage
STR_1807_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Kan inte bygga bussgarage h<>r...
STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}Kan inte bygga bussh<73>llplats...
STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}Kan inte bygga lastbilsbrygga...
@@ -1486,7 +1256,7 @@ STR_2002 :{TINYFONT}{BLACK}{STRING}
STR_2003 :{TINYFONT}{WHITE}{STRING}
STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Byggnad m<>ste rivas f<>rst
STR_2005 :{WHITE}{TOWN}
STR_2006_POPULATION :{BLACK}Inv<6E>nare: {ORANGE}{COMMA32}{BLACK} Hus: {ORANGE}{COMMA32}
STR_2006_POPULATION :<CHECK>{BLACK}Inv<6E>nare: {ORANGE}{COMMA32}{BLACK} Huse: {ORANGE}{COMMA32}
STR_2007_RENAME_TOWN :Byt namn p<> stad
STR_2008_CAN_T_RENAME_TOWN :{WHITE}Kan inte byta namn p<> stad...
STR_2009_LOCAL_AUTHORITY_REFUSES :{WHITE}{TOWN} kommunen till<6C>ter inte detta
@@ -1528,7 +1298,7 @@ STR_202C_FROM_TO :{ORANGE}{STRING} fr
STR_202D_UNTIL :{YELLOW}, tills {DATE_SHORT})
STR_202E_OFFER_OF_SUBSIDY_EXPIRED :{BLACK}{BIGFONT}Subventionen har g<>tt ut:{}{}{STRING} fr<66>n {STRING} till {STRING} <20>r inte l<>ngre subventionerad
STR_202F_SUBSIDY_WITHDRAWN_SERVICE :{BLACK}{BIGFONT}Subventionen g<>ller inte mer:{}{}{STRING} fr<66>n {STATION} till {STATION} <20>r inte l<>ngre subventionerad
STR_2030_SERVICE_SUBSIDY_OFFERED :{BLACK}{BIGFONT}Ny subvention:{}{}F<>rsta transporten av {STRING} fr<66>n {STRING} till {STRING} f<>r ett <20>rs subvention fr<66>n kommunen!
STR_2030_SERVICE_SUBSIDY_OFFERED :{BLACK}{BIGFONT}Ny subvention:{}{}F<>rsta {STRING}transporten fr<66>n {STRING} till {STRING} f<>r ett <20>rs subvention fr<66>n kommunen!
STR_2031_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Subvention tilldelad {STRING}!{}{}{STRING} fr<66>n {STATION} till {STATION} ger 50% extra n<>sta <20>r!
STR_2032_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Subvention tilldelad {STRING}!{}{}{STRING} fr<66>n {STATION} till {STATION} ger dubbelt s<> mycket n<>sta <20>r!
STR_2033_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Subvention tilldelad {STRING}!{}{}{STRING} fr<66>n {STATION} till {STATION} ger tre g<>nger s<> mycket n<>sta <20>r!
@@ -1577,7 +1347,7 @@ STR_205B_TEAPOT_HOUSE :Tekanne-Hus
STR_205C_PIGGY_BANK :Spargris
##id 0x2800
STR_LANDSCAPING :Landskapsarkitektur
STR_LANDSCAPING :
STR_2800_PLANT_TREES :Plantera tr<74>d
STR_2801_PLACE_SIGN :Placera skylt
STR_2802_TREES :{WHITE}Tr<54>d
@@ -1634,8 +1404,8 @@ STR_303E_NO_LONGER_ACCEPTS :{WHITE}{STATION} tar inte l
STR_303F_NO_LONGER_ACCEPTS_OR :{WHITE}{STATION} tar inte l<>ngre emot {STRING} och {STRING}
STR_3040_NOW_ACCEPTS :{WHITE}{STATION} tar nu emot {STRING}
STR_3041_NOW_ACCEPTS_AND :{WHITE}{STATION} tar nu emot {STRING} och {STRING}
STR_3042_BUS_STATION_ORIENTATION :{WHITE}Bussh<EFBFBD>llplatsriktning
STR_3043_TRUCK_STATION_ORIENT :{WHITE}Lastbilsbryggsriktning
STR_3042_BUS_STATION_ORIENTATION :{WHITE}Riktning f<>r bussh<EFBFBD>llplats
STR_3043_TRUCK_STATION_ORIENT :{WHITE}Riktning f<>r lastbilsbrygga
STR_3044_TOO_CLOSE_TO_ANOTHER_BUS :{WHITE}F<>r n<>ra en annan bussh<73>llplats
STR_3045_TOO_CLOSE_TO_ANOTHER_TRUCK :{WHITE}F<>r n<>ra en annan lastbilsbrygga
STR_3046_MUST_DEMOLISH_BUS_STATION :{WHITE}M<>ste riva bussh<73>llplats f<>rst
@@ -1774,8 +1544,8 @@ STR_4838_IMPROVED_FARMING_METHODS :{BLACK}{BIGFONT}Nya jordbruksmetoder vid {
STR_4839_PRODUCTION_DOWN_BY_50 :{BLACK}{BIGFONT}Produktionen vid {TOWN} {STRING} g<>r ned med 50%
STR_483A_INSECT_INFESTATION_CAUSES :{BLACK}{BIGFONT}Problem med insekter orsakar kris vid {TOWN} {STRING}!{}Produktionen ned med 50%
STR_483B_CAN_ONLY_BE_POSITIONED :{WHITE}...kan bara placeras n<>ra kartans kant
STR_INDUSTRY_PROD_GOUP :{BLACK}{BIGFONT}Produktionen av {STRING} vid {TOWN} {STRING} upp med {COMMA16}%!
STR_INDUSTRY_PROD_GODOWN :{BLACK}{BIGFONT}Produktionen av {STRING} vid {TOWN} {STRING} ned med {COMMA16}%!
STR_INDUSTRY_PROD_GOUP :{BLACK}{BIGFONT}{STRING} produktionen vid {TOWN} {STRING} upp med {COMMA16}%!
STR_INDUSTRY_PROD_GODOWN :{BLACK}{BIGFONT}{STRING} produktionen vid {TOWN} {STRING} ner med {COMMA16}%!
##id 0x5000
STR_5000_TRAIN_IN_TUNNEL :{WHITE}T<>g i tunnel
@@ -1826,8 +1596,8 @@ STR_5029_STEEL :St
STR_5800_OBJECT_IN_THE_WAY :{WHITE}Objekt i v<>gen
STR_5801_TRANSMITTER :Radios<6F>ndare
STR_5802_LIGHTHOUSE :Fyrtorn
STR_5803_COMPANY_HEADQUARTERS :F<>retagets huvudkontor
STR_5804_COMPANY_HEADQUARTERS_IN :{WHITE}...f<>retagets huvudkontor i v<>gen
STR_5803_COMPANY_HEADQUARTERS :F<>retags h<EFBFBD>gkvarter
STR_5804_COMPANY_HEADQUARTERS_IN :{WHITE}...f<>retags h<EFBFBD>gkvarter i v<>gen
STR_5805_COMPANY_OWNED_LAND :Mark som <20>gs av f<>retag
STR_5806_CAN_T_PURCHASE_THIS_LAND :{WHITE}Kan inte k<>pa denna mark...
STR_5807_YOU_ALREADY_OWN_IT :{WHITE}...du <20>ger den redan!
@@ -1859,7 +1629,7 @@ STR_SV_STNAME_EXCHANGE :{STRING} v
STR_SV_STNAME_AIRPORT :{STRING} flygplats
STR_SV_STNAME_OILFIELD :{STRING} oljef<65>lt
STR_SV_STNAME_MINES :{STRING} gruva
STR_SV_STNAME_DOCKS :{STRING} Hamnar
STR_SV_STNAME_DOCKS :{STRING} hamnar
STR_SV_STNAME_BUOY_1 :{STRING} boj 1
STR_SV_STNAME_BUOY_2 :{STRING} boj 2
STR_SV_STNAME_BUOY_3 :{STRING} boj 3
@@ -1881,7 +1651,6 @@ STR_SV_STNAME_FOREST :{STRING} Skog
##id 0x6800
STR_6800_DIFFICULTY_LEVEL :{WHITE}Sv<53>righetsgrad
STR_OPTIONS_SAVE_CHANGES :{BLACK}Spara
############ range for difficulty levels starts
STR_6801_EASY :{BLACK}L<>tt
@@ -1908,10 +1677,8 @@ STR_6812_QUANTITY_OF_SEA_LAKES :{LTBLUE}M
STR_6813_ECONOMY :{LTBLUE}Ekonomi: {ORANGE}{STRING}
STR_6814_TRAIN_REVERSING :{LTBLUE}T<>g kan v<>nda: {ORANGE}{STRING}
STR_6815_DISASTERS :{LTBLUE}Katastrofer: {ORANGE}{STRING}
STR_16816_CITY_APPROVAL :{LTBLUE}Stadens attityd mot omr<6D>desombyggnad: {ORANGE}{STRING}
############ range for difficulty settings ends
STR_26816_NONE :Ingen
STR_6816_LOW :L<>g
STR_6817_NORMAL :Normal
STR_6818_HIGH :H<>g
@@ -1948,14 +1715,10 @@ STR_6835_AT_END_OF_LINE_ONLY :Enbart vid slut p
STR_6836_OFF :Av
STR_6837_ON :P<>
STR_6838_SHOW_HI_SCORE_CHART :{BLACK}Visa highscore-lista
STR_6839_PERMISSIVE :Eftergiven
STR_683A_TOLERANT :Tolerant
STR_683B_HOSTILE :Fientlig
##id 0x7000
STR_7000 :
STR_7001 :{WHITE}{STRING} {BLACK}{STRING}
STR_7002_PLAYER :(Spelare {COMMA16})
STR_7001 :{WHITE}{STRING}{BLACK}{STRING}
STR_7004_NEW_FACE :{BLACK}Nytt ansikte
STR_7005_COLOR_SCHEME :{BLACK}F<>rgval
STR_7006_COLOR_SCHEME :{GOLD}F<>rgval:
@@ -1966,7 +1729,7 @@ STR_700A_COMPANY_NAME :F
STR_700B_PRESIDENT_S_NAME :Namn p<> VD
STR_700C_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Kan inte <20>ndra f<>retagsnamn...
STR_700D_CAN_T_CHANGE_PRESIDENT :{WHITE}Kan inte <20>ndra namnet p<> VD:n...
STR_700E_FINANCES :{WHITE}{STRING} Budget {BLACK}{STRING}
STR_700E_FINANCES :{WHITE}{STRING} Budget{BLACK}{STRING}
STR_700F_EXPENDITURE_INCOME :{WHITE}Utgifter/inkomster
STR_7010 :{WHITE}{NUMU16}
STR_7011_CONSTRUCTION :{GOLD}Konstruktioner
@@ -1993,7 +1756,6 @@ STR_7024 :{COMMA32}
STR_7025_OPERATING_PROFIT_GRAPH :{WHITE}Graf <20>ver vinst
STR_7026_BANK_BALANCE :{WHITE}Banksaldo
STR_7027_LOAN :{WHITE}L<>n
STR_MAX_LOAN :{WHITE}Maxl<78>n: {BLACK}{CURRENCY64}
STR_7028 :{BLACK}{CURRENCY64}
STR_7029_BORROW :{BLACK}L<>na {SKIP}{SKIP}{SKIP}{SKIP}{CURRENCY}
STR_702A_REPAY :{BLACK}<7D>terbetala {SKIP}{SKIP}{SKIP}{SKIP}{CURRENCY}
@@ -2010,7 +1772,7 @@ STR_7034_CLICK_ON_SELECTED_NEW_COLOR :{BLACK}F
STR_7035_INCREASE_SIZE_OF_LOAN :{BLACK}<7D>ka l<>nets storlek
STR_7036_REPAY_PART_OF_LOAN :{BLACK}<7D>terbetala en del av l<>net
STR_7037_PRESIDENT :{WHITE}{STRING}{}{GOLD}(President)
STR_7038_INAUGURATED :{GOLD}Etablerades: {WHITE}{NUMU16}
STR_7038_INAUGURATED :{GOLD}B<EFBFBD>rjade: {WHITE}{NUMU16}
STR_7039_VEHICLES :{GOLD}Fordon:
STR_703A_TRAIN :{WHITE}{COMMA16} t<>g
STR_703B_TRAINS :{WHITE}{COMMA16} t<>g
@@ -2066,14 +1828,9 @@ STR_706C_CHAIRMAN :Ordf
STR_706D_PRESIDENT :President
STR_706E_TYCOON :Tycoon
STR_706F_BUILD_HQ :{BLACK}Bygg H<>gkvarter
STR_7070_BUILD_COMPANY_HEADQUARTERS :{BLACK}Bygg huvudkontor / visa f<>retagets huvudkontor
STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Bygg om huvudkontor p<> annan plats (kostar 1% av f<>retagets v<>rde)
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Kan inte bygga huvudkontor h<>r...
STR_7070_BUILD_COMPANY_HEADQUARTERS :{BLACK}Bygg h<EFBFBD>gkvarter / visa f<>retagets h<EFBFBD>gkvarter
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Kan inte bygga h<>gkvarter...
STR_7072_VIEW_HQ :{BLACK}Visa h<>gkvarter
STR_RELOCATE_HQ :{BLACK}Omlokalisera huvudkontor
STR_COMPANY_PASSWORD :{BLACK}L<>senord
STR_COMPANY_PASSWORD_TOOLTIP :{BLACK}L<>senordsskydda ditt f<>retag f<>r att f<>rhindra att obeh<65>riga spelare ansluter.
STR_SET_COMPANY_PASSWORD :Ange f<>retagets l<>senord
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}L<>gkonjuktur!{}{}Finansexperter befarar det v<>rsta n<>r ekonomin sjunker!
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}L<>gkonjuktur <20>ver!{}{}Uppsving i byteshandeln ger tillf<6C>rsikt till industrier n<>r ekonomin st<73>rks!
STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}V<>xla stor/liten f<>nsterstorlek
@@ -2377,9 +2134,7 @@ STR_SERVICE_NON_STOP_AT_TRAIN_DEPOT :Servning non-stop {TOWN} T
STR_HEADING_FOR_TRAIN_DEPOT :{LTBLUE}P<> v<>g mot {TOWN} dep<65>
STR_HEADING_FOR_TRAIN_DEPOT_VEL :{LTBLUE}P<> v<>g mot {TOWN} dep<65>, {VELOCITY}
STR_INVALID_ORDER :{RED} (Ogiltig order)
STR_UNKNOWN_DESTINATION :ok<6F>nd destination
STR_8812_EMPTY :{LTBLUE}Tom
STR_8813_FROM :{LTBLUE}{CARGO} fr<66>n {STATION}
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}T<>g {COMMA16} v<>ntar i dep<65>
@@ -2424,7 +2179,6 @@ STR_8839_CAN_T_SELL_RAILROAD_VEHICLE :{WHITE}Kan inte s
STR_883A_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Kan inte hitta rutt till n<>rmaste dep<65>
STR_883B_CAN_T_STOP_START_TRAIN :{WHITE}Kan inte stoppa/starta t<>g...
STR_883C_SERVICING_INTERVAL_DAYS :{BLACK}Serviceintervall: {LTBLUE}{COMMA16}dagar{BLACK} Senaste service: {LTBLUE}{DATE_LONG}
STR_SERVICING_INTERVAL_PERCENT :{BLACK}Serviceintervall: {LTBLUE}{COMMA16}%{BLACK} Senaste service: {LTBLUE}{DATE_LONG}
STR_883D_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}T<>g - klicka p<> t<>g f<>r information
STR_883E_BUILD_NEW_TRAINS_REQUIRES :{BLACK}Bygg nytt t<>g (kr<6B>ver dep<65>)
STR_883F_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}T<>g - klicka p<> t<>g f<>r info, drag vagn f<>r att l<>gga till/ta bort fr<66>n t<>g
@@ -2570,7 +2324,7 @@ STR_981A_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Kan inte finna lokal dep
STR_HEADING_FOR_SHIP_DEPOT :{LTBLUE}P<> v<>g mot {TOWN} Skeppsdep<65>
STR_HEADING_FOR_SHIP_DEPOT_VEL :{LTBLUE}P<> v<>g mot {TOWN} Skeppsdep<65>, {VELOCITY}
STR_981C_SHIP_IS_WAITING_IN_DEPOT :{WHITE}Skepp {COMMA16} v<>ntar i dep<65>
STR_981D_BUILD_SHIP_DOCK :{BLACK}Bygg hamn
STR_981D_BUILD_SHIP_DOCK :{BLACK}Bygg skeppsdep<EFBFBD>
STR_981E_BUILD_SHIP_DEPOT_FOR_BUILDING :{BLACK}Bygg skeppsdep<65> (f<>r byggnad och lagning av skepp)
STR_981F_SHIPS_CLICK_ON_SHIP_FOR :{BLACK}Skepp - klicka p<> skepp f<>r information
STR_9820_BUILD_NEW_SHIP :{BLACK}Bygg nytt skepp
@@ -2587,7 +2341,7 @@ STR_982A_SEND_SHIP_TO_DEPOT :{BLACK}Skicka skepp till dep
STR_982B_SHOW_SHIP_DETAILS :{BLACK}Visa skeppdetaljer
STR_982C_NEW_SHIP_NOW_AVAILABLE :{BLACK}{BIGFONT}Nytt skepp tillg<6C>ngligt!
STR_982D :{BLACK}{BIGFONT}{STRING}
STR_982E_COST_MAX_SPEED_CAPACITY :{BLACK}Kostnad: {CURRENCY} Max hastighet: {VELOCITY}{}Kapacitet: {STRING}{}L<>pande kostnad: {CURRENCY}/<EFBFBD>r
STR_982E_COST_MAX_SPEED_CAPACITY :{BLACK}Kostnad: {CURRENCY} Max. Hastighet: {VELOCITY}{}Kapacitet: {STRING}{}L<>pande kostnad: {CURRENCY}/yr
STR_982F_NAME_SHIP :{BLACK}Byt namn p<> skepp
STR_9831_NAME_SHIP :{WHITE}Byt namn p<> skepp
@@ -2612,7 +2366,7 @@ STR_GO_TO_SHIP_DEPOT :G
SERVICE_AT_SHIP_DEPOT :Servning vid {TOWN} B<>tdep<65>
##id 0xA000
STR_A000_AIRPORTS :{WHITE}Flygplatser
STR_A000_AIRPORT_CONSTRUCT :{WHITE}Flygplats Bygg.
STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Kan inte bygga flygplats h<>r...
STR_A002_AIRCRAFT_HANGAR :{WHITE}{STATION} Flygplanshangar
STR_A003_NEW_AIRCRAFT :{BLACK}Nytt Flygplan
@@ -2659,7 +2413,7 @@ STR_A02A_SEND_AIRCRAFT_TO_HANGAR :{BLACK}Skicka flygplan till hangar
STR_A02B_SHOW_AIRCRAFT_DETAILS :{BLACK}Visa flygplan detaljer
STR_A02C_NEW_AIRCRAFT_NOW_AVAILABLE :{BLACK}{BIGFONT}Nytt flygplan tillg<6C>ngligt!
STR_A02D :{BLACK}{BIGFONT}{STRING}
STR_A02E_COST_MAX_SPEED_CAPACITY :{BLACK}Kostnad: {CURRENCY} Max hastighet: {VELOCITY}{}Kapacitet: {COMMA16} passagerare, {COMMA16} posts<74>ckar{}L<>pande kostnad: {CURRENCY}/<EFBFBD>r
STR_A02E_COST_MAX_SPEED_CAPACITY :{BLACK}Kostnad: {CURRENCY} Max. Hastighet: {VELOCITY}{}Kapacitet: {COMMA16} passagerare, {COMMA16} posts<74>ckar{}L<>pande kostnad: {CURRENCY}/yr
STR_A030_NAME_AIRCRAFT :{WHITE}Byt namn p<> flygplan
STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Kan inte byta namn p<> flygplan...
@@ -2691,71 +2445,10 @@ STR_B002_OIL_REFINERY_EXPLOSION :{BLACK}{BIGFONT}Oljeraffinaderi exploderade
STR_B003_FACTORY_DESTROYED_IN_SUSPICIOUS :{BLACK}{BIGFONT}Fabrik f<>rst<73>rd i misst<73>nkta omst<73>ndigheter n<>ra {TOWN}!
STR_B004_UFO_LANDS_NEAR :{BLACK}{BIGFONT}'UFO' landar n<>ra {TOWN}!
STR_B005_COAL_MINE_SUBSIDENCE_LEAVES :{BLACK}{BIGFONT}Kolgruva sjunker - l<>mnar sp<73>r av katastrof n<>ra {TOWN}!
STR_B006_FLOOD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}<7D>versv<73>mning!{}Minst {COMMA16} f<>rmodas saknade eller d<>da efter d<>dlig <20>versv<73>mning!
STR_BRIBE_FAILED :{WHITE}Ditt mutningsf<73>rs<72>k har blivit
STR_BRIBE_FAILED_2 :{WHITE}uppdagat av en regional utredare.
STR_BUILD_DATE :{BLACK}Byggt: {LTBLUE}{DATE_LONG}
STR_MULTIPLAYER_PAUSED :{WHITE}Spelet <20>r pausat.{}G<>r ej att g<>ra
STR_PERFORMANCE_DETAIL :{WHITE}Detaljerade prestandabetyg
STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detaljer
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA32}/{COMMA32})
STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{INT32}%
SET_PERFORMANCE_DETAIL_INT :{BLACK}{INT32}
############ Those following lines need to be in this order!!
STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}V<>gfordon:
STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Stationer:
STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Min. vinst:
STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Min. inkomst:
STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Max. inkomst:
STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Levererat:
STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Gods:
STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Pengar:
STR_PERFORMANCE_DETAIL_LOAN :{BLACK}L<>n:
STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Totalt:
############ End of order list
STR_PERFORMANCE_DETAIL_VEHICLES_TIP :{BLACK}Totalt antal fordon. Inkluderar v<>gfordon, t<>g, skepp och flygplan.
STR_PERFORMANCE_DETAIL_STATIONS_TIP :{BLACK}Antalet stationsdelar. Varje del av en station (ex: t<>gstation, bush<73>llplats, flygplats) <20>r r<>knad, <20>ven om dom <20>r ihopkopplade till en station.
STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP :{BLACK}Vinsten f<>r det fordon med l<>gst inkomst (av alla fordon <20>ldre <20>n 2 <20>r).
STR_PERFORMANCE_DETAIL_MIN_INCOME_TIP :{BLACK}M<>ngden tj<74>nade pengar den m<>nad med l<>gst vinst de senaste 12 kvartalen.
STR_PERFORMANCE_DETAIL_MAX_INCOME_TIP :{BLACK}M<>ngden tj<74>nade pengar den m<>nad med h<>gsta vinsten de senaste 12 kvartalen.
STR_PERFORMANCE_DETAIL_DELIVERED_TIP :{BLACK}Enheter av gods levererat de senaste fyra kvartalen.
STR_PERFORMANCE_DETAIL_CARGO_TIP :{BLACK}Typer av gods levererat det senaste kvartalet.
STR_PERFORMANCE_DETAIL_MONEY_TIP :{BLACK}M<>ngden pengar p<> hand
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Har du ett stort l<>n?
STR_PERFORMANCE_DETAIL_TOTAL_TIP :{BLACK}Totalt antal po<70>ng utav m<>jligt antal po<70>ng
STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Newgrf inst<73>llningar
STR_NEWGRF_APPLY_CHANGES :{BLACK}Spara <20>ndringar
STR_NEWGRF_SET_PARAMETERS :{BLACK}Parametrar
STR_NEWGRF_TIP :{BLACK}En lista av alla Newgrf som du har installerade. Clicka p<> en f<>r att <20>ndra inst<73>llningar.
STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}Det finns f<>r n<>rvarande inga newgrf filer installerade! V<>nligen kolla manualen hur man installerar ny grafik.
STR_NEWGRF_FILENAME :{BLACK}Filnamn:
STR_NEWGRF_GRF_ID :{BLACK}GRF ID:
STR_CURRENCY_WINDOW :{WHITE}Egen valuta
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}V<>xlingskurs: {ORANGE}{CURRENCY} = {POUNDSIGN} {COMMA16}
STR_CURRENCY_SEPARATOR :{LTBLUE}Avskiljare:
STR_CURRENCY_PREFIX :{LTBLUE}Prefix:
STR_CURRENCY_SUFFIX :{LTBLUE}Suffix:
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}G<>r <20>ver till Euro: {ORANGE}{INT32}
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}G<>r <20>ver till Euro: {ORANGE}aldrig
STR_CURRENCY_PREVIEW :{LTBLUE}F<>rhandsgranska: {ORANGE}{CURRENCY}
STR_CURRENCY_CHANGE_PARAMETER :{BLACK}<7D>ndra valutaparametrar
STR_TRAIN :{BLACK}{TRAIN}
STR_LORRY :{BLACK}{LORRY}
STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_SCHEDULED_TRAINS :{WHITE}{STATION} - {COMMA16} T<>g
STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA16} V<>gfordon
STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA16} Flygplan
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA16} Skepp
STR_SCHEDULED_TRAINS_TIP :{BLACK}Visa alla t<>g d<>r denna station finns med i rutten
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Visa alla v<>gfordon d<>r denna station finns med i rutten
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Visa alla flygplan d<>r denna station finns med i rutten
STR_SCHEDULED_SHIPS_TIP :{BLACK}Visa alla skepp d<>r denna station finns med i rutten

View File

@@ -1,473 +0,0 @@
##name Turkish
##ownname T<>rk<72>e
##id 0x0000
STR_NULL :
STR_0001_OFF_EDGE_OF_MAP :{WHITE}Harita Siniri
STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Harita sinirina <20>ok yakin
STR_0003_NOT_ENOUGH_CASH_REQUIRES :{WHITE}Yetersiz Nakit- Gereken {CURRENCY}
STR_0004 :{WHITE}{CURRENCY64}
STR_0005 :{RED}{CURRENCY64}
STR_EMPTY :
STR_0007_FLAT_LAND_REQUIRED :{WHITE}Zeminin d<>z olmasi gerekiyor
STR_0008_WAITING :{BLACK}Bekliyor: {WHITE}{STRING}
STR_0009 :{WHITE}{STRING}
STR_000A_EN_ROUTE_FROM :{WHITE}{STRING}{YELLOW} (Tasindigi Istasyon:
STR_000B :{YELLOW}{STATION})
STR_000C_ACCEPTS :{BLACK}Kabul: {WHITE}
STR_000D_ACCEPTS :{BLACK}Kabul: {GOLD}
STR_000E :
STR_000F_PASSENGERS :Yolcu
STR_0010_COAL :K<>m<EFBFBD>r
STR_0011_MAIL :Posta
STR_0012_OIL :Petrol
STR_0013_LIVESTOCK :Hayvansal <20>r<EFBFBD>nler
STR_0014_GOODS :Mam<61>l Madde
STR_0015_GRAIN :Hububat
STR_0016_WOOD :Aga<67>
STR_0017_IRON_ORE :Demir
STR_0018_STEEL :<3A>elik
STR_0019_VALUABLES :M<>cevherat
STR_001A_COPPER_ORE :Bakir
STR_001B_MAIZE :Maize
STR_001C_FRUIT :Meyve
STR_001D_DIAMONDS :Elmas
STR_001E_FOOD :Gida
STR_001F_PAPER :Kagit
STR_0020_GOLD :Altin
STR_0021_WATER :Su
STR_0022_WHEAT :Bugday
STR_0023_RUBBER :Kau<61>uk
STR_0024_SUGAR :Seker
STR_0025_TOYS :Oyuncak
STR_0026_CANDY :Sekerleme
STR_0027_COLA :Kola
STR_0028_COTTON_CANDY :Pamuk Helva
STR_0029_BUBBLES :K<>p<EFBFBD>k<EFBFBD><6B>k
STR_002A_TOFFEE :Tofita
STR_002B_BATTERIES :Pil
STR_002C_PLASTIC :Plastik
STR_002D_FIZZY_DRINKS :Fizzy Gazozu
STR_002E :
STR_002F_PASSENGER :Yolcu
STR_0030_COAL :K<>m<EFBFBD>r
STR_0031_MAIL :Posta
STR_0032_OIL :Petrol
STR_0033_LIVESTOCK :Hayvansal <20>r<EFBFBD>n
STR_0034_GOODS :Mam<61>l Madde
STR_0035_GRAIN :Hububat
STR_0036_WOOD :Aga<67>
STR_0037_IRON_ORE :Demir
STR_0038_STEEL :<3A>elik
STR_0039_VALUABLES :M<>cevherat
STR_003A_COPPER_ORE :Bakir
STR_003B_MAIZE :Maize
STR_003C_FRUIT :Meyve
STR_003D_DIAMOND :Elmas
STR_003E_FOOD :Gida
STR_003F_PAPER :Kagit
STR_0040_GOLD :Altin
STR_0041_WATER :Su
STR_0042_WHEAT :Bugday
STR_0043_RUBBER :Kau<61>uk
STR_0044_SUGAR :Seker
STR_0045_TOY :Oyuncak
STR_0046_CANDY :Tatli
STR_0047_COLA :Kola
STR_0048_COTTON_CANDY :Pamuk Helva
STR_0049_BUBBLE :K<>p<EFBFBD>k<EFBFBD><6B>k
STR_004A_TOFFEE :Tofita
STR_004B_BATTERY :Pil
STR_004C_PLASTIC :Plastik
STR_004D_FIZZY_DRINK :Fizzy Gazozu
STR_004E :
STR_004F_PASSENGER :{COMMA16} yolcu
STR_0050_TON_OF_COAL :{COMMA16} ton k<>m<EFBFBD>r
STR_0051_BAG_OF_MAIL :{COMMA16} <20>anta posta
STR_0052_OF_OIL :{VOLUME} petrol
STR_0053_ITEM_OF_LIVESTOCK :{COMMA16} adet hayvansal <20>r<EFBFBD>n
STR_0054_CRATE_OF_GOODS :{COMMA16} kasa mam<61>l madde
STR_0055_TON_OF_GRAIN :{COMMA16} ton hububat
STR_0056_TON_OF_WOOD :{COMMA16} ton aga<67>
STR_0057_TON_OF_IRON_ORE :{COMMA16} ton demir
STR_0058_TON_OF_STEEL :{COMMA16} ton <20>elik
STR_0059_BAG_OF_VALUABLES :{COMMA16} <20>anta m<>cevherat
STR_005A_TON_OF_COPPER_ORE :{COMMA16} ton bakir
STR_005B_TON_OF_MAIZE :{COMMA16} ton misir
STR_005C_TON_OF_FRUIT :{COMMA16} ton meyve
STR_005D_BAG_OF_DIAMONDS :{COMMA16} <20>anta elmas
STR_005E_TON_OF_FOOD :{COMMA16} ton gida
STR_005F_TON_OF_PAPER :{COMMA16} ton kagit
STR_0060_BAG_OF_GOLD :{COMMA16} <20>anta altin
STR_0061_OF_WATER :{VOLUME} su
STR_0062_TON_OF_WHEAT :{COMMA16} ton bugday
STR_0063_OF_RUBBER :{VOLUME} of rubber
STR_0064_TON_OF_SUGAR :{COMMA16} ton seker
STR_0065_TOY :{COMMA16} oyuncak
STR_0066_BAG_OF_CANDY :{COMMA16} <20>anta sekerleme
STR_0067_OF_COLA :{VOLUME} kola
STR_0068_TON_OF_COTTON_CANDY :{COMMA16} ton pamuk helva
STR_0069_BUBBLE :{COMMA16} k<>p<EFBFBD>k<EFBFBD><6B>k
STR_006A_TON_OF_TOFFEE :{COMMA16} ton tofita
STR_006B_BATTERY :{COMMA16} pil
STR_006C_OF_PLASTIC :{VOLUME} plastik
STR_006D_FIZZY_DRINK :{COMMA16} fizzy gazozu
STR_006E :
STR_006F_PASSENGERS :{COMMA16} yolcu
STR_0070_TONS_OF_COAL :{COMMA16} ton k<>m<EFBFBD>r
STR_0071_BAGS_OF_MAIL :{COMMA16} <20>anta posta
STR_0072_OF_OIL :{VOLUME} petrol
STR_0073_ITEMS_OF_LIVESTOCK :{COMMA16} adet hayvansal <20>r<EFBFBD>n
STR_0074_CRATES_OF_GOODS :{COMMA16} kasa mam<61>l madde
STR_0075_TONS_OF_GRAIN :{COMMA16} ton hububat
STR_0076_TONS_OF_WOOD :{COMMA16} ton aga<67>
STR_0077_TONS_OF_IRON_ORE :{COMMA16} ton demir
STR_0078_TONS_OF_STEEL :{COMMA16} ton <20>elik
STR_0079_BAGS_OF_VALUABLES :{COMMA16} <20>anta m<>cevherat
STR_007A_TONS_OF_COPPER_ORE :{COMMA16} ton bakir
STR_007B_TONS_OF_MAIZE :{COMMA16} ton misir
STR_007C_TONS_OF_FRUIT :{COMMA16} ton meyve
STR_007D_BAGS_OF_DIAMONDS :{COMMA16} <20>anta elmas
STR_007E_TONS_OF_FOOD :{COMMA16} ton gida
STR_007F_TONS_OF_PAPER :{COMMA16} ton kagit
STR_0080_BAGS_OF_GOLD :{COMMA16} <20>anta altin
STR_0081_OF_WATER :{VOLUME} su
STR_0082_TONS_OF_WHEAT :{COMMA16} ton bugday
STR_0083_OF_RUBBER :{VOLUME} kau<61>uk
STR_0084_TONS_OF_SUGAR :{COMMA16} ton seker
STR_0085_TOYS :{COMMA16} oyuncak
STR_0086_BAGS_OF_CANDY :{COMMA16} <20>anta sekerleme
STR_0087_OF_COLA :{VOLUME} kola
STR_0088_TONS_OF_COTTON_CANDY :{COMMA16} ton pamuk helva
STR_0089_BUBBLES :{COMMA16} k<>p<EFBFBD>k<EFBFBD><6B>k
STR_008A_TONS_OF_TOFFEE :{COMMA16} ton tofita
STR_008B_BATTERIES :{COMMA16} pil
STR_008C_OF_PLASTIC :{VOLUME} plastik
STR_008D_FIZZY_DRINKS :{COMMA16} fizzy gazozu
STR_008E :
STR_008F_PS :{TINYFONT}YL
STR_0090_CL :{TINYFONT}K<>
STR_0091_ML :{TINYFONT}PO
STR_0092_OL :{TINYFONT}PE
STR_0093_LV :{TINYFONT}H<>
STR_0094_GD :{TINYFONT}MM
STR_0095_GR :{TINYFONT}HB
STR_0096_WD :{TINYFONT}AG
STR_0097_OR :{TINYFONT}OR
STR_0098_ST :{TINYFONT}<7D>E
STR_0099_VL :{TINYFONT}M<>
STR_009A_CO :{TINYFONT}KO
STR_009B_MZ :{TINYFONT}MI
STR_009C_FT :{TINYFONT}FT
STR_009D_DM :{TINYFONT}DM
STR_009E_FD :{TINYFONT}GI
STR_009F_PR :{TINYFONT}KA
STR_00A0_GD :{TINYFONT}MM
STR_00A1_WR :{TINYFONT}WR
STR_00A2_WH :{TINYFONT}BU
STR_00A3_RB :{TINYFONT}KU
STR_00A4_SG :{TINYFONT}SG
STR_00A5_TY :{TINYFONT}OY
STR_00A6_SW :{TINYFONT}TA
STR_00A7_CL :{TINYFONT}K<>
STR_00A8_CF :{TINYFONT}PH
STR_00A9_BU :{TINYFONT}KP
STR_00AA_TF :{TINYFONT}TF
STR_00AB_BA :{TINYFONT}PI
STR_00AC_PL :{TINYFONT}PL
STR_00AD_FZ :{TINYFONT}FG
STR_00AE :{WHITE}{DATE_SHORT}
STR_00AF :{WHITE}{DATE_LONG}
STR_00B0_MAP :{WHITE}Map - {STRING}
STR_00B1_GAME_OPTIONS :{WHITE}Oyun Se<53>enekleri
STR_00B2_MESSAGE :{YELLOW}Mesaj
STR_00B3_MESSAGE_FROM :{YELLOW}Mesaj {STRING}
STR_00B4_CAN_T_DO_THIS :{WHITE}Bunu yapamazsiniz..
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Bu b<>lgeyi temizleyemezsiniz...
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Orjinal telif hakki {COPYRIGHT} 1995 Chris Sawyer, T<>m haklari saklidir
STR_00B7_VERSION :{BLACK}OpenTTD versiyon {REV}
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Orjinal tasarim: Chris Sawyer
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Orjinal grafikler: Simon Foster
STR_SPECIAL_THANKS :{BLACK}<7D>zel Tesekk<6B>rler:
STR_SPECIAL_THANKS_SIGNALS :{BLACK}<7D> <20>n-Sinyaller ve Semaforlar {COPYRIGHT} 2003 Michael Blunck
STR_SPECIAL_THANKS_CANALS :{BLACK}<7D> Egimlerdeki Yollarin Temelleri {COPYRIGHT} Marcin Grzegorczyk
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}<7D> Kanal/Kilit grafikleri {COPYRIGHT} 2003-2004 George
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 OpenTTD ekibi
STR_00C5 :{BLACK}{CROSS}
STR_00C6 :{SILVER}{CROSS}
STR_00C7_QUIT :{WHITE}<7D>ik
STR_00C8_YES :{BLACK}Evet
STR_00C9_NO :{BLACK}Hayir
STR_00CA_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Oyunu sonlandirip {STRING}'a d<>nmek istediginizden emin misiniz?
STR_00CB_1 :{BLACK}1
STR_00CC_2 :{BLACK}2
STR_00CD_3 :{BLACK}3
STR_00CE_4 :{BLACK}4
STR_00CF_5 :{BLACK}5
STR_00D0_NOTHING :Hi<48>
STR_00D1_DARK_BLUE :Koyu Mavi
STR_00D2_PALE_GREEN :A<>ik Yesil
STR_00D3_PINK :Pembe
STR_00D4_YELLOW :Sari
STR_00D5_RED :Kirmizi
STR_00D6_LIGHT_BLUE :A<>ik Mavi
STR_00D7_GREEN :Yesil
STR_00D8_DARK_GREEN :Koyu Yesil
STR_00D9_BLUE :Mavi
STR_00DA_CREAM :Krem
STR_00DB_MAUVE :Leylak
STR_00DC_PURPLE :Mor
STR_00DD_ORANGE :Turuncu
STR_00DE_BROWN :Kahverengi
STR_00DF_GREY :Gri
STR_00E0_WHITE :Beyaz
STR_00E1_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Oyunda <20>ok fazla vasita var
STR_00E2 :{BLACK}{COMMA16}
STR_00E3 :{RED}{COMMA16}
STR_00E4_LOCATION :{BLACK}Konum
STR_00E5_CONTOURS :Dis Hatlar
STR_00E6_VEHICLES :Vasitalar
STR_00E7_INDUSTRIES :End<6E>striler
STR_00E8_ROUTES :Yollar
STR_00E9_VEGETATION :Bitkiler
STR_00EA_OWNERS :Sahipler
STR_00EB_ROADS :{BLACK}{TINYFONT}Yollar
STR_00EC_RAILROADS :{BLACK}{TINYFONT}Demiryollari
STR_00ED_STATIONS_AIRPORTS_DOCKS :{BLACK}{TINYFONT}Istasyon/Havaalani/Liman
STR_00EE_BUILDINGS_INDUSTRIES :{BLACK}{TINYFONT}Binalar/End<6E>striler
STR_00EF_VEHICLES :{BLACK}{TINYFONT}Vasitalar
STR_00F0_100M :{BLACK}{TINYFONT}100m
STR_00F1_200M :{BLACK}{TINYFONT}200m
STR_00F2_300M :{BLACK}{TINYFONT}300m
STR_00F3_400M :{BLACK}{TINYFONT}400m
STR_00F4_500M :{BLACK}{TINYFONT}500m
STR_00F5_TRAINS :{BLACK}{TINYFONT}Trenler
STR_00F6_ROAD_VEHICLES :{BLACK}{TINYFONT}Yol Tasitlari
STR_00F7_SHIPS :{BLACK}{TINYFONT}Gemiler
STR_00F8_AIRCRAFT :{BLACK}{TINYFONT}Hava Tasitlari
STR_00F9_TRANSPORT_ROUTES :{BLACK}{TINYFONT}Nakil Rotalari
STR_00FA_COAL_MINE :{BLACK}{TINYFONT}K<>m<EFBFBD>r Madeni
STR_00FB_POWER_STATION :{BLACK}{TINYFONT}Enerji Santrali
STR_00FC_FOREST :{BLACK}{TINYFONT}Orman
STR_00FD_SAWMILL :{BLACK}{TINYFONT}Bi<42>ki Fabrikasi
STR_00FE_OIL_REFINERY :{BLACK}{TINYFONT}Petrol Rafinerisi
############ range for menu starts
############ range for menu ends
############ range for months starts
############ range for months ends
############ range for service numbers starts
############ range for service numbers ends
############ range for days starts
############ range for days ends
############ range for cargo acecpted starts
############ range for cargo acecpted ends
############ range for menu starts
############ range ends here
############ range for menu starts
############ range ends here
############ range for menu starts
############ range ends here
############ start of townname region
############ end of townname region
# Start of order review system.
# DON'T ADD OR REMOVE LINES HERE
# end of order system
############ network gui strings
############ Leave those lines in this order!!
############ End of leave-in-this-order
############ Leave those lines in this order!!
############ End of leave-in-this-order
############ Leave those lines in this order!!
############ End of leave-in-this-order
############ end network gui strings
##id 0x0800
##id 0x1000
##id 0x1800
##id 0x2000
##id 0x2800
##id 0x3000
############ range for rating starts
############ range for rating ends
##id 0x3800
##id 0x4000
##id 0x4800
############ range for requires starts
############ range for requires ends
##id 0x5000
##id 0x5800
############ WARNING, using range 0x6000 for strings that are stored in the savegame
############ These strings may never get a new id, or savegames will break!
##id 0x6000
############ end of savegame specific region!
##id 0x6800
############ range for difficulty levels starts
############ range for difficulty levels ends
############ range for difficulty settings starts
############ range for difficulty settings ends
##id 0x7000
##id 0x8000
##id 0x8800
##id 0x9000
##id 0x9800
##id 0xA000
##id 0xB000
############ Those following lines need to be in this order!!
############ End of order list

View File

@@ -1,424 +0,0 @@
##name Latvian
##ownname Latvie<69>u valoda
##id 0x0000
STR_NULL :
STR_0001_OFF_EDGE_OF_MAP :{WHITE}&#256;rpus kartes robe<62>as
STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}P&#257;r&#257;k tuvu kartes malai
STR_0003_NOT_ENOUGH_CASH_REQUIRES :{WHITE}Nav diezgan naudas - vajag {CURRENCY}
STR_0004 :{WHITE}{CURRENCY64}
STR_0005 :{RED}{CURRENCY64}
STR_EMPTY :
STR_0007_FLAT_LAND_REQUIRED :{WHITE}Zemei j&#257;b&#363;t plakanai
STR_0008_WAITING :{BLACK}Gaidam: {WHITE}{STRING}
STR_0009 :{WHITE}{STRING}
STR_000A_EN_ROUTE_FROM :{WHITE}{STRING}{YELLOW} (ce&#316;&#257; no
STR_000B :{YELLOW}{STATION})
STR_000C_ACCEPTS :{BLACK}Pie&#326;em: {WHITE}
STR_000D_ACCEPTS :{BLACK}Pie&#326;em: {GOLD}
STR_000E :
STR_000F_PASSENGERS :Pasa<73>ierus
STR_0010_COAL :Ogles
STR_0011_MAIL :Pastu
STR_0012_OIL :Naftu
STR_0013_LIVESTOCK :Liellopus
STR_0014_GOODS :Preces
STR_0015_GRAIN :Graudus
STR_0016_WOOD :Kokmatere&#257;lus
STR_0017_IRON_ORE :Dzelzs r&#363;du
STR_0018_STEEL :T&#275;raudu
STR_0019_VALUABLES :V&#275;rtspap&#299;ri
STR_001A_COPPER_ORE :Vara r&#363;da
STR_001B_MAIZE :Kukur&#363;za
STR_001C_FRUIT :Aug&#316;i
STR_001D_DIAMONDS :Dimanti
STR_001E_FOOD :P&#257;rtika
STR_001F_PAPER :Pap&#299;rs
STR_0020_GOLD :Zelts
STR_0021_WATER :&#362;dens
STR_0022_WHEAT :Kvie<69>i
STR_0023_RUBBER :Gumija
STR_0024_SUGAR :Cukurs
STR_0025_TOYS :Rota&#316;lietas
STR_0026_CANDY :Saldumi
STR_0027_COLA :Kola
STR_0028_COTTON_CANDY :Cukurvate
STR_0029_BUBBLES :Burbu&#316;i
STR_002A_TOFFEE :Cukurpl&#257;ksnes
STR_002B_BATTERIES :Baterijas
STR_002C_PLASTIC :Plastmasa
STR_002D_FIZZY_DRINKS :Burbu&#316;&#363;de&#326;i
STR_002E :
STR_002F_PASSENGER :Pasa<73>ieris
STR_0030_COAL :Ogle
STR_0031_MAIL :Pasts
STR_0032_OIL :Nafta
STR_0033_LIVESTOCK :Liellopi
STR_0034_GOODS :Preces
STR_0035_GRAIN :Graudi
STR_0036_WOOD :Kokmatere&#257;li
STR_0037_IRON_ORE :Dzelzs r&#363;da
STR_0038_STEEL :T&#275;rauds
STR_0039_VALUABLES :V&#275;rtspap&#299;ri
STR_003A_COPPER_ORE :Vara r&#363;da
STR_003B_MAIZE :Kukur&#363;za
STR_003C_FRUIT :Aug&#316;i
STR_003D_DIAMOND :Dimanti
STR_003E_FOOD :P&#257;rtika
STR_003F_PAPER :pap&#299;rs
STR_0040_GOLD :Zelts
STR_0041_WATER :&#362;dens
STR_0042_WHEAT :Kvie<69>i
STR_0043_RUBBER :Gumija
STR_0044_SUGAR :Cukurs
STR_0045_TOY :Rota&#316;lieta
STR_0046_CANDY :Saldumi
STR_0047_COLA :Kola
STR_0048_COTTON_CANDY :Cukurvate
STR_0049_BUBBLE :Burbulis
STR_004A_TOFFEE :Cukurpl&#257;ksn&#299;te
STR_004B_BATTERY :Baterijas
STR_004C_PLASTIC :Plastmasas
STR_004D_FIZZY_DRINK :Burbu&#316;&#363;de&#326;u
STR_004E :
STR_004F_PASSENGER :{COMMA16} pasa<73>ieris
STR_0050_TON_OF_COAL :{COMMA16} tonna og&#316;u
STR_0051_BAG_OF_MAIL :{COMMA16} pasta maiss
STR_0052_OF_OIL :{VOLUME} naftas
STR_0053_ITEM_OF_LIVESTOCK :{COMMA16} liellops
STR_0054_CRATE_OF_GOODS :{COMMA16} pre&#269;u kaste
STR_0055_TON_OF_GRAIN :{COMMA16} tonna graudu
STR_0056_TON_OF_WOOD :{COMMA16} tonna kokmatere&#257;lu
STR_0057_TON_OF_IRON_ORE :{COMMA16} tonna dzelzs r&#363;das
STR_0058_TON_OF_STEEL :{COMMA16} tonna t&#275;rauda
STR_0059_BAG_OF_VALUABLES :{COMMA16} maiss ar v&#275;rtspap&#299;riem
STR_005A_TON_OF_COPPER_ORE :{COMMA16} tonna vara r&#363;das
STR_005B_TON_OF_MAIZE :{COMMA16} tonna kukur&#363;zas
STR_005C_TON_OF_FRUIT :{COMMA16} tonna aug&#316;u
STR_005D_BAG_OF_DIAMONDS :{COMMA16} maiss ar dimantiem
STR_005E_TON_OF_FOOD :{COMMA16} tonna p&#257;rtikas pre&#269;u
STR_005F_TON_OF_PAPER :{COMMA16} tonna pap&#299;ra
STR_0060_BAG_OF_GOLD :{COMMA16} zelta maiss
STR_0061_OF_WATER :{VOLUME} &#363;dens
STR_0062_TON_OF_WHEAT :{COMMA16} tonna kvie<69>u
STR_0063_OF_RUBBER :{VOLUME} tonna gumijas
STR_0064_TON_OF_SUGAR :{COMMA16} tonna cukura
STR_0065_TOY :{COMMA16} rota&#316;lieta
STR_0066_BAG_OF_CANDY :{COMMA16} saldumu maiss
STR_0067_OF_COLA :{VOLUME} kolas
STR_0068_TON_OF_COTTON_CANDY :{COMMA16} tonna cukurvates
STR_0069_BUBBLE :{COMMA16} burbulis
STR_006A_TON_OF_TOFFEE :{COMMA16} tonna cukurpl&#257;ksn&#299;<3B>u
STR_006B_BATTERY :{COMMA16} baterija
STR_006C_OF_PLASTIC :{VOLUME} plastmasas
STR_006D_FIZZY_DRINK :{COMMA16} burbu&#316;&#363;denis
STR_006E :
STR_006F_PASSENGERS :{COMMA16} pasa<73>ieri
STR_0070_TONS_OF_COAL :{COMMA16} tonnas og&#316;u
STR_0071_BAGS_OF_MAIL :{COMMA16} pasta maisi
STR_0072_OF_OIL :{VOLUME} naftas
STR_0073_ITEMS_OF_LIVESTOCK :{COMMA16} liellopi
STR_0074_CRATES_OF_GOODS :{COMMA16} kastes ar prec&#275;m
STR_0075_TONS_OF_GRAIN :{COMMA16} tonnas graudu
STR_0076_TONS_OF_WOOD :{COMMA16} tonnas kokmatere&#257;lu
STR_0077_TONS_OF_IRON_ORE :{COMMA16} tonnas dzelzs r&#363;das
STR_0078_TONS_OF_STEEL :{COMMA16} tonnas t&#275;rauda
STR_0079_BAGS_OF_VALUABLES :{COMMA16} maisi ar v&#275;rtsliet&#257;m
STR_007A_TONS_OF_COPPER_ORE :{COMMA16} tonnas vara r&#363;das
STR_007B_TONS_OF_MAIZE :{COMMA16} tonnas kukur&#363;zas
STR_007C_TONS_OF_FRUIT :{COMMA16} tonnas aug&#316;u
STR_007D_BAGS_OF_DIAMONDS :{COMMA16} maisi ar dimantiem
STR_007E_TONS_OF_FOOD :{COMMA16} tonnas p&#257;rtikas pre&#269;u
STR_007F_TONS_OF_PAPER :{COMMA16} tonnas pap&#299;ra
STR_0080_BAGS_OF_GOLD :{COMMA16} zelta maisi
STR_0081_OF_WATER :{VOLUME} &#363;dens
STR_0082_TONS_OF_WHEAT :{COMMA16} tonnas kvie<69>u
STR_0083_OF_RUBBER :{VOLUME} gumijas
STR_0084_TONS_OF_SUGAR :{COMMA16} tonnas cukura
STR_0085_TOYS :{COMMA16} rota&#316;lietas
STR_0086_BAGS_OF_CANDY :{COMMA16} saldumu maisi
STR_0087_OF_COLA :{VOLUME} kolas
STR_0088_TONS_OF_COTTON_CANDY :{COMMA16} tonnas cukurvates
STR_0089_BUBBLES :{COMMA16} burbu&#316;i
STR_008A_TONS_OF_TOFFEE :{COMMA16} tonnas cukurpl&#257;ksn&#299;<3B>u
STR_008B_BATTERIES :{COMMA16} baterijas
STR_008C_OF_PLASTIC :{VOLUME} plastmasas
STR_008D_FIZZY_DRINKS :{COMMA16} burbu&#316;&#363;de&#326;u
STR_008E :
STR_008F_PS :{TINYFONT}PA
STR_0090_CL :{TINYFONT}OG
STR_0091_ML :{TINYFONT}PT
STR_0092_OL :{TINYFONT}NF
STR_0093_LV :{TINYFONT}LL
STR_0094_GD :{TINYFONT}PR
STR_0095_GR :{TINYFONT}GR
STR_0096_WD :{TINYFONT}KM
STR_0097_OR :{TINYFONT}DZ
STR_0098_ST :{TINYFONT}TR
STR_0099_VL :{TINYFONT}VP
STR_009A_CO :{TINYFONT}VR
STR_009B_MZ :{TINYFONT}KU
STR_009C_FT :{TINYFONT}AU
STR_009D_DM :{TINYFONT}DM
STR_009E_FD :{TINYFONT}PP
STR_009F_PR :{TINYFONT}PS
STR_00A0_GD :{TINYFONT}ZE
STR_00A1_WR :{TINYFONT}UD
STR_00A2_WH :{TINYFONT}KV
STR_00A3_RB :{TINYFONT}GU
STR_00A4_SG :{TINYFONT}CU
STR_00A5_TY :{TINYFONT}RT
STR_00A6_SW :{TINYFONT}SA
STR_00A7_CL :{TINYFONT}KO
STR_00A8_CF :{TINYFONT}CV
STR_00A9_BU :{TINYFONT}BB
STR_00AA_TF :{TINYFONT}CP
STR_00AB_BA :{TINYFONT}BT
STR_00AC_PL :{TINYFONT}PL
STR_00AD_FZ :{TINYFONT}BU
STR_00AE :{WHITE}{DATE_SHORT}
STR_00AF :{WHITE}{DATE_LONG}
STR_00B0_MAP :{WHITE}Karte - {STRING}
STR_00B1_GAME_OPTIONS :{WHITE}Sp<53>les parametri
STR_00B2_MESSAGE :{YELLOW}Zi<5A>ojums
STR_00B3_MESSAGE_FROM :{YELLOW}Zi<5A>ojums no {STRING}
STR_00B4_CAN_T_DO_THIS :{WHITE}T<> nevar dar<61>t....
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}<7D>o laukumu nevar nol<6F>dzin<69>t....
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Ori<72>in<69>l<EFBFBD>s autorties<65>bas {COPYRIGHT} 1995 Chris Sawyer, Visas ties<65>bas rezerv<72>tas
STR_00B7_VERSION :{BLACK}OpenTTD versija {REV}
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Ori<72>in<69>lais dizains: Chris Sawyer
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Ori<72>in<69>l<EFBFBD> grafika: Simon Foster
STR_SPECIAL_THANKS :{BLACK}<7D>pa<70>a pateic<69>ba sekojo<6A><6F>m person<6F>m:
STR_SPECIAL_THANKS_SIGNALS :{BLACK}<7D> Pirms-sign<67>li un semafori {COPYRIGHT} 2003 Michael Blunck
STR_SPECIAL_THANKS_CANALS :{BLACK}<7D> Pamati slied<65>m un ce<63>u nog<6F>z<EFBFBD>m {COPYRIGHT} Marcin Grzegorczyk
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}<7D> Kan<61>lu/dambju grafika {COPYRIGHT} 2003-2004 George
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 OpenTTD grupa
STR_00C5 :{BLACK}{CROSS}
STR_00C6 :{SILVER}{CROSS}
STR_00C7_QUIT :{WHITE}Beigt
STR_00C8_YES :{BLACK}J<>
STR_00C9_NO :{BLACK}N<>
STR_00CA_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Vai Tu tie<69><65>m gribi pamest <20>o sp<73>li un iet uz {STRING}?
STR_00CB_1 :{BLACK}1
STR_00CC_2 :{BLACK}2
STR_00CD_3 :{BLACK}3
############ range for menu starts
############ range for menu ends
############ range for months starts
############ range for months ends
############ range for service numbers starts
############ range for service numbers ends
############ range for days starts
############ range for days ends
############ range for cargo acecpted starts
############ range for cargo acecpted ends
############ range for menu starts
############ range ends here
############ range for menu starts
############ range ends here
############ range for menu starts
############ range ends here
############ start of townname region
############ end of townname region
# Start of order review system.
# DON'T ADD OR REMOVE LINES HERE
# end of order system
############ network gui strings
############ Leave those lines in this order!!
############ End of leave-in-this-order
############ Leave those lines in this order!!
############ End of leave-in-this-order
############ Leave those lines in this order!!
############ End of leave-in-this-order
############ end network gui strings
##id 0x0800
##id 0x1000
##id 0x1800
##id 0x2000
##id 0x2800
##id 0x3000
############ range for rating starts
############ range for rating ends
##id 0x3800
##id 0x4000
##id 0x4800
############ range for requires starts
############ range for requires ends
##id 0x5000
##id 0x5800
############ WARNING, using range 0x6000 for strings that are stored in the savegame
############ These strings may never get a new id, or savegames will break!
##id 0x6000
############ end of savegame specific region!
##id 0x6800
############ range for difficulty levels starts
############ range for difficulty levels ends
############ range for difficulty settings starts
############ range for difficulty settings ends
##id 0x7000
##id 0x8000
##id 0x8800
##id 0x9000
##id 0x9800
##id 0xA000
##id 0xB000
############ Those following lines need to be in this order!!
############ End of order list

View File

@@ -1,2 +0,0 @@
##name Russian_latin_char
##ownname Russkiy

View File

@@ -1,473 +0,0 @@
##name Turkish
##ownname T<>rk<72>e
##id 0x0000
STR_NULL :
STR_0001_OFF_EDGE_OF_MAP :{WHITE}Harita Siniri
STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Harita sinirina <20>ok yakin
STR_0003_NOT_ENOUGH_CASH_REQUIRES :{WHITE}Yetersiz Nakit- Gereken {CURRENCY}
STR_0004 :{WHITE}{CURRENCY64}
STR_0005 :{RED}{CURRENCY64}
STR_EMPTY :
STR_0007_FLAT_LAND_REQUIRED :{WHITE}Zeminin d<>z olmasi gerekiyor
STR_0008_WAITING :{BLACK}Bekliyor: {WHITE}{STRING}
STR_0009 :{WHITE}{STRING}
STR_000A_EN_ROUTE_FROM :{WHITE}{STRING}{YELLOW} (Tasindigi Istasyon:
STR_000B :{YELLOW}{STATION})
STR_000C_ACCEPTS :{BLACK}Kabul: {WHITE}
STR_000D_ACCEPTS :{BLACK}Kabul: {GOLD}
STR_000E :
STR_000F_PASSENGERS :Yolcu
STR_0010_COAL :K<>m<EFBFBD>r
STR_0011_MAIL :Posta
STR_0012_OIL :Petrol
STR_0013_LIVESTOCK :Hayvansal <20>r<EFBFBD>nler
STR_0014_GOODS :Mam<61>l Madde
STR_0015_GRAIN :Hububat
STR_0016_WOOD :Aga<67>
STR_0017_IRON_ORE :Demir
STR_0018_STEEL :<3A>elik
STR_0019_VALUABLES :M<>cevherat
STR_001A_COPPER_ORE :Bakir
STR_001B_MAIZE :Maize
STR_001C_FRUIT :Meyve
STR_001D_DIAMONDS :Elmas
STR_001E_FOOD :Gida
STR_001F_PAPER :Kagit
STR_0020_GOLD :Altin
STR_0021_WATER :Su
STR_0022_WHEAT :Bugday
STR_0023_RUBBER :Kau<61>uk
STR_0024_SUGAR :Seker
STR_0025_TOYS :Oyuncak
STR_0026_CANDY :Sekerleme
STR_0027_COLA :Kola
STR_0028_COTTON_CANDY :Pamuk Helva
STR_0029_BUBBLES :K<>p<EFBFBD>k<EFBFBD><6B>k
STR_002A_TOFFEE :Tofita
STR_002B_BATTERIES :Pil
STR_002C_PLASTIC :Plastik
STR_002D_FIZZY_DRINKS :Fizzy Gazozu
STR_002E :
STR_002F_PASSENGER :Yolcu
STR_0030_COAL :K<>m<EFBFBD>r
STR_0031_MAIL :Posta
STR_0032_OIL :Petrol
STR_0033_LIVESTOCK :Hayvansal <20>r<EFBFBD>n
STR_0034_GOODS :Mam<61>l Madde
STR_0035_GRAIN :Hububat
STR_0036_WOOD :Aga<67>
STR_0037_IRON_ORE :Demir
STR_0038_STEEL :<3A>elik
STR_0039_VALUABLES :M<>cevherat
STR_003A_COPPER_ORE :Bakir
STR_003B_MAIZE :Maize
STR_003C_FRUIT :Meyve
STR_003D_DIAMOND :Elmas
STR_003E_FOOD :Gida
STR_003F_PAPER :Kagit
STR_0040_GOLD :Altin
STR_0041_WATER :Su
STR_0042_WHEAT :Bugday
STR_0043_RUBBER :Kau<61>uk
STR_0044_SUGAR :Seker
STR_0045_TOY :Oyuncak
STR_0046_CANDY :Tatli
STR_0047_COLA :Kola
STR_0048_COTTON_CANDY :Pamuk Helva
STR_0049_BUBBLE :K<>p<EFBFBD>k<EFBFBD><6B>k
STR_004A_TOFFEE :Tofita
STR_004B_BATTERY :Pil
STR_004C_PLASTIC :Plastik
STR_004D_FIZZY_DRINK :Fizzy Gazozu
STR_004E :
STR_004F_PASSENGER :{COMMA16} yolcu
STR_0050_TON_OF_COAL :{COMMA16} ton k<>m<EFBFBD>r
STR_0051_BAG_OF_MAIL :{COMMA16} <20>anta posta
STR_0052_OF_OIL :{VOLUME} petrol
STR_0053_ITEM_OF_LIVESTOCK :{COMMA16} adet hayvansal <20>r<EFBFBD>n
STR_0054_CRATE_OF_GOODS :{COMMA16} kasa mam<61>l madde
STR_0055_TON_OF_GRAIN :{COMMA16} ton hububat
STR_0056_TON_OF_WOOD :{COMMA16} ton aga<67>
STR_0057_TON_OF_IRON_ORE :{COMMA16} ton demir
STR_0058_TON_OF_STEEL :{COMMA16} ton <20>elik
STR_0059_BAG_OF_VALUABLES :{COMMA16} <20>anta m<>cevherat
STR_005A_TON_OF_COPPER_ORE :{COMMA16} ton bakir
STR_005B_TON_OF_MAIZE :{COMMA16} ton misir
STR_005C_TON_OF_FRUIT :{COMMA16} ton meyve
STR_005D_BAG_OF_DIAMONDS :{COMMA16} <20>anta elmas
STR_005E_TON_OF_FOOD :{COMMA16} ton gida
STR_005F_TON_OF_PAPER :{COMMA16} ton kagit
STR_0060_BAG_OF_GOLD :{COMMA16} <20>anta altin
STR_0061_OF_WATER :{VOLUME} su
STR_0062_TON_OF_WHEAT :{COMMA16} ton bugday
STR_0063_OF_RUBBER :{VOLUME} of rubber
STR_0064_TON_OF_SUGAR :{COMMA16} ton seker
STR_0065_TOY :{COMMA16} oyuncak
STR_0066_BAG_OF_CANDY :{COMMA16} <20>anta sekerleme
STR_0067_OF_COLA :{VOLUME} kola
STR_0068_TON_OF_COTTON_CANDY :{COMMA16} ton pamuk helva
STR_0069_BUBBLE :{COMMA16} k<>p<EFBFBD>k<EFBFBD><6B>k
STR_006A_TON_OF_TOFFEE :{COMMA16} ton tofita
STR_006B_BATTERY :{COMMA16} pil
STR_006C_OF_PLASTIC :{VOLUME} plastik
STR_006D_FIZZY_DRINK :{COMMA16} fizzy gazozu
STR_006E :
STR_006F_PASSENGERS :{COMMA16} yolcu
STR_0070_TONS_OF_COAL :{COMMA16} ton k<>m<EFBFBD>r
STR_0071_BAGS_OF_MAIL :{COMMA16} <20>anta posta
STR_0072_OF_OIL :{VOLUME} petrol
STR_0073_ITEMS_OF_LIVESTOCK :{COMMA16} adet hayvansal <20>r<EFBFBD>n
STR_0074_CRATES_OF_GOODS :{COMMA16} kasa mam<61>l madde
STR_0075_TONS_OF_GRAIN :{COMMA16} ton hububat
STR_0076_TONS_OF_WOOD :{COMMA16} ton aga<67>
STR_0077_TONS_OF_IRON_ORE :{COMMA16} ton demir
STR_0078_TONS_OF_STEEL :{COMMA16} ton <20>elik
STR_0079_BAGS_OF_VALUABLES :{COMMA16} <20>anta m<>cevherat
STR_007A_TONS_OF_COPPER_ORE :{COMMA16} ton bakir
STR_007B_TONS_OF_MAIZE :{COMMA16} ton misir
STR_007C_TONS_OF_FRUIT :{COMMA16} ton meyve
STR_007D_BAGS_OF_DIAMONDS :{COMMA16} <20>anta elmas
STR_007E_TONS_OF_FOOD :{COMMA16} ton gida
STR_007F_TONS_OF_PAPER :{COMMA16} ton kagit
STR_0080_BAGS_OF_GOLD :{COMMA16} <20>anta altin
STR_0081_OF_WATER :{VOLUME} su
STR_0082_TONS_OF_WHEAT :{COMMA16} ton bugday
STR_0083_OF_RUBBER :{VOLUME} kau<61>uk
STR_0084_TONS_OF_SUGAR :{COMMA16} ton seker
STR_0085_TOYS :{COMMA16} oyuncak
STR_0086_BAGS_OF_CANDY :{COMMA16} <20>anta sekerleme
STR_0087_OF_COLA :{VOLUME} kola
STR_0088_TONS_OF_COTTON_CANDY :{COMMA16} ton pamuk helva
STR_0089_BUBBLES :{COMMA16} k<>p<EFBFBD>k<EFBFBD><6B>k
STR_008A_TONS_OF_TOFFEE :{COMMA16} ton tofita
STR_008B_BATTERIES :{COMMA16} pil
STR_008C_OF_PLASTIC :{VOLUME} plastik
STR_008D_FIZZY_DRINKS :{COMMA16} fizzy gazozu
STR_008E :
STR_008F_PS :{TINYFONT}YL
STR_0090_CL :{TINYFONT}K<>
STR_0091_ML :{TINYFONT}PO
STR_0092_OL :{TINYFONT}PE
STR_0093_LV :{TINYFONT}H<>
STR_0094_GD :{TINYFONT}MM
STR_0095_GR :{TINYFONT}HB
STR_0096_WD :{TINYFONT}AG
STR_0097_OR :{TINYFONT}OR
STR_0098_ST :{TINYFONT}<7D>E
STR_0099_VL :{TINYFONT}M<>
STR_009A_CO :{TINYFONT}KO
STR_009B_MZ :{TINYFONT}MI
STR_009C_FT :{TINYFONT}FT
STR_009D_DM :{TINYFONT}DM
STR_009E_FD :{TINYFONT}GI
STR_009F_PR :{TINYFONT}KA
STR_00A0_GD :{TINYFONT}MM
STR_00A1_WR :{TINYFONT}WR
STR_00A2_WH :{TINYFONT}BU
STR_00A3_RB :{TINYFONT}KU
STR_00A4_SG :{TINYFONT}SG
STR_00A5_TY :{TINYFONT}OY
STR_00A6_SW :{TINYFONT}TA
STR_00A7_CL :{TINYFONT}K<>
STR_00A8_CF :{TINYFONT}PH
STR_00A9_BU :{TINYFONT}KP
STR_00AA_TF :{TINYFONT}TF
STR_00AB_BA :{TINYFONT}PI
STR_00AC_PL :{TINYFONT}PL
STR_00AD_FZ :{TINYFONT}FG
STR_00AE :{WHITE}{DATE_SHORT}
STR_00AF :{WHITE}{DATE_LONG}
STR_00B0_MAP :{WHITE}Map - {STRING}
STR_00B1_GAME_OPTIONS :{WHITE}Oyun Se<53>enekleri
STR_00B2_MESSAGE :{YELLOW}Mesaj
STR_00B3_MESSAGE_FROM :{YELLOW}Mesaj {STRING}
STR_00B4_CAN_T_DO_THIS :{WHITE}Bunu yapamazsiniz..
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Bu b<>lgeyi temizleyemezsiniz...
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Orjinal telif hakki {COPYRIGHT} 1995 Chris Sawyer, T<>m haklari saklidir
STR_00B7_VERSION :{BLACK}OpenTTD versiyon {REV}
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Orjinal tasarim: Chris Sawyer
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Orjinal grafikler: Simon Foster
STR_SPECIAL_THANKS :{BLACK}<7D>zel Tesekk<6B>rler:
STR_SPECIAL_THANKS_SIGNALS :{BLACK}<7D> <20>n-Sinyaller ve Semaforlar {COPYRIGHT} 2003 Michael Blunck
STR_SPECIAL_THANKS_CANALS :{BLACK}<7D> Egimlerdeki Yollarin Temelleri {COPYRIGHT} Marcin Grzegorczyk
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}<7D> Kanal/Kilit grafikleri {COPYRIGHT} 2003-2004 George
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 OpenTTD ekibi
STR_00C5 :{BLACK}{CROSS}
STR_00C6 :{SILVER}{CROSS}
STR_00C7_QUIT :{WHITE}<7D>ik
STR_00C8_YES :{BLACK}Evet
STR_00C9_NO :{BLACK}Hayir
STR_00CA_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Oyunu sonlandirip {STRING}'a d<>nmek istediginizden emin misiniz?
STR_00CB_1 :{BLACK}1
STR_00CC_2 :{BLACK}2
STR_00CD_3 :{BLACK}3
STR_00CE_4 :{BLACK}4
STR_00CF_5 :{BLACK}5
STR_00D0_NOTHING :Hi<48>
STR_00D1_DARK_BLUE :Koyu Mavi
STR_00D2_PALE_GREEN :A<>ik Yesil
STR_00D3_PINK :Pembe
STR_00D4_YELLOW :Sari
STR_00D5_RED :Kirmizi
STR_00D6_LIGHT_BLUE :A<>ik Mavi
STR_00D7_GREEN :Yesil
STR_00D8_DARK_GREEN :Koyu Yesil
STR_00D9_BLUE :Mavi
STR_00DA_CREAM :Krem
STR_00DB_MAUVE :Leylak
STR_00DC_PURPLE :Mor
STR_00DD_ORANGE :Turuncu
STR_00DE_BROWN :Kahverengi
STR_00DF_GREY :Gri
STR_00E0_WHITE :Beyaz
STR_00E1_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Oyunda <20>ok fazla vasita var
STR_00E2 :{BLACK}{COMMA16}
STR_00E3 :{RED}{COMMA16}
STR_00E4_LOCATION :{BLACK}Konum
STR_00E5_CONTOURS :Dis Hatlar
STR_00E6_VEHICLES :Vasitalar
STR_00E7_INDUSTRIES :End<6E>striler
STR_00E8_ROUTES :Yollar
STR_00E9_VEGETATION :Bitkiler
STR_00EA_OWNERS :Sahipler
STR_00EB_ROADS :{BLACK}{TINYFONT}Yollar
STR_00EC_RAILROADS :{BLACK}{TINYFONT}Demiryollari
STR_00ED_STATIONS_AIRPORTS_DOCKS :{BLACK}{TINYFONT}Istasyon/Havaalani/Liman
STR_00EE_BUILDINGS_INDUSTRIES :{BLACK}{TINYFONT}Binalar/End<6E>striler
STR_00EF_VEHICLES :{BLACK}{TINYFONT}Vasitalar
STR_00F0_100M :{BLACK}{TINYFONT}100m
STR_00F1_200M :{BLACK}{TINYFONT}200m
STR_00F2_300M :{BLACK}{TINYFONT}300m
STR_00F3_400M :{BLACK}{TINYFONT}400m
STR_00F4_500M :{BLACK}{TINYFONT}500m
STR_00F5_TRAINS :{BLACK}{TINYFONT}Trenler
STR_00F6_ROAD_VEHICLES :{BLACK}{TINYFONT}Yol Tasitlari
STR_00F7_SHIPS :{BLACK}{TINYFONT}Gemiler
STR_00F8_AIRCRAFT :{BLACK}{TINYFONT}Hava Tasitlari
STR_00F9_TRANSPORT_ROUTES :{BLACK}{TINYFONT}Nakil Rotalari
STR_00FA_COAL_MINE :{BLACK}{TINYFONT}K<>m<EFBFBD>r Madeni
STR_00FB_POWER_STATION :{BLACK}{TINYFONT}Enerji Santrali
STR_00FC_FOREST :{BLACK}{TINYFONT}Orman
STR_00FD_SAWMILL :{BLACK}{TINYFONT}Bi<42>ki Fabrikasi
STR_00FE_OIL_REFINERY :{BLACK}{TINYFONT}Petrol Rafinerisi
############ range for menu starts
############ range for menu ends
############ range for months starts
############ range for months ends
############ range for service numbers starts
############ range for service numbers ends
############ range for days starts
############ range for days ends
############ range for cargo acecpted starts
############ range for cargo acecpted ends
############ range for menu starts
############ range ends here
############ range for menu starts
############ range ends here
############ range for menu starts
############ range ends here
############ start of townname region
############ end of townname region
# Start of order review system.
# DON'T ADD OR REMOVE LINES HERE
# end of order system
############ network gui strings
############ Leave those lines in this order!!
############ End of leave-in-this-order
############ Leave those lines in this order!!
############ End of leave-in-this-order
############ Leave those lines in this order!!
############ End of leave-in-this-order
############ end network gui strings
##id 0x0800
##id 0x1000
##id 0x1800
##id 0x2000
##id 0x2800
##id 0x3000
############ range for rating starts
############ range for rating ends
##id 0x3800
##id 0x4000
##id 0x4800
############ range for requires starts
############ range for requires ends
##id 0x5000
##id 0x5800
############ WARNING, using range 0x6000 for strings that are stored in the savegame
############ These strings may never get a new id, or savegames will break!
##id 0x6000
############ end of savegame specific region!
##id 0x6800
############ range for difficulty levels starts
############ range for difficulty levels ends
############ range for difficulty settings starts
############ range for difficulty settings ends
##id 0x7000
##id 0x8000
##id 0x8800
##id 0x9000
##id 0x9800
##id 0xA000
##id 0xB000
############ Those following lines need to be in this order!!
############ End of order list

View File

@@ -51,17 +51,6 @@ InputPath=.\lang\american.txt
# End Source File
# Begin Source File
SOURCE=.\lang\catalan.txt
# Begin Custom Build
InputPath=.\lang\catalan.txt
"lang\catalan.lng" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
strgen\debug\strgen.exe lang\catalan.txt
# End Custom Build
# End Source File
# Begin Source File
SOURCE=.\lang\czech.txt
# Begin Custom Build
InputPath=.\lang\czech.txt
@@ -106,17 +95,6 @@ InputPath=.\lang\english.txt
# End Source File
# Begin Source File
SOURCE=.\lang\finnish.txt
# Begin Custom Build
InputPath=.\lang\finnish.txt
"lang\finnish.lng" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
strgen\debug\strgen.exe lang\finnish.txt
# End Custom Build
# End Source File
# Begin Source File
SOURCE=.\lang\french.txt
# Begin Custom Build
InputPath=.\lang\french.txt
@@ -161,17 +139,6 @@ InputPath=.\lang\hungarian.txt
# End Source File
# Begin Source File
SOURCE=.\lang\icelandic.txt
# Begin Custom Build
InputPath=.\lang\icelandic.txt
"lang\icelandic.lng" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
strgen\debug\strgen.exe lang\icelandic.txt
# End Custom Build
# End Source File
# Begin Source File
SOURCE=.\lang\italian.txt
# Begin Custom Build
InputPath=.\lang\italian.txt
@@ -183,17 +150,6 @@ InputPath=.\lang\italian.txt
# End Source File
# Begin Source File
SOURCE=.\lang\latvian.txt
# Begin Custom Build
InputPath=.\lang\latvian.txt
"lang\latvian.lng" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
strgen\debug\strgen.exe lang\latvian.txt
# End Custom Build
# End Source File
# Begin Source File
SOURCE=.\lang\norwegian.txt
# Begin Custom Build
InputPath=.\lang\norwegian.txt
@@ -227,17 +183,6 @@ InputPath=.\lang\polish.txt
# End Source File
# Begin Source File
SOURCE=.\lang\portuguese.txt
# Begin Custom Build
InputPath=.\lang\portuguese.txt
"lang\portuguese.lng" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
strgen\debug\strgen.exe lang\portuguese.txt
# End Custom Build
# End Source File
# Begin Source File
SOURCE=.\lang\romanian.txt
# Begin Custom Build
InputPath=.\lang\romanian.txt
@@ -249,17 +194,6 @@ InputPath=.\lang\romanian.txt
# End Source File
# Begin Source File
SOURCE=.\lang\russian.txt
# Begin Custom Build
InputPath=.\lang\russian.txt
"lang\russian.lng" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
strgen\debug\strgen.exe lang\russian.txt
# End Custom Build
# End Source File
# Begin Source File
SOURCE=.\lang\slovak.txt
# Begin Custom Build
InputPath=.\lang\slovak.txt
@@ -271,17 +205,6 @@ InputPath=.\lang\slovak.txt
# End Source File
# Begin Source File
SOURCE=.\lang\spanish.txt
# Begin Custom Build
InputPath=.\lang\spanish.txt
"lang\spanish.lng" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
strgen\debug\strgen.exe lang\spanish.txt
# End Custom Build
# End Source File
# Begin Source File
SOURCE=.\lang\swedish.txt
# Begin Custom Build
InputPath=.\lang\swedish.txt
@@ -289,17 +212,6 @@ InputPath=.\lang\swedish.txt
"lang\swedish.lng" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
strgen\debug\strgen.exe lang\swedish.txt
# End Custom Build
# End Source File
# Begin Source File
SOURCE=.\lang\turkish.txt
# Begin Custom Build
InputPath=.\lang\turkish.txt
"lang\turkish.lng" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
strgen\debug\strgen.exe lang\turkish.txt
# End Custom Build
# End Source File
# End Target

View File

@@ -44,23 +44,10 @@
<Tool
Name="VCCustomBuildTool"
Description="Generating american language file"
CommandLine="strgen\debug\strgen.exe &quot;$(InputPath)&quot;
"
CommandLine="strgen\debug\strgen.exe &quot;$(InputPath)&quot;"
Outputs="lang\american.lng"/>
</FileConfiguration>
</File>
<File
RelativePath=".\lang\catalan.txt">
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCustomBuildTool"
Description="Generating catalan language file"
CommandLine="strgen\debug\strgen.exe &quot;$(InputPath)&quot;
"
Outputs="lang\catalan.lng"/>
</FileConfiguration>
</File>
<File
RelativePath=".\lang\czech.txt">
<FileConfiguration
@@ -109,18 +96,6 @@
Outputs="lang\english.lng"/>
</FileConfiguration>
</File>
<File
RelativePath=".\lang\finnish.txt">
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCustomBuildTool"
Description="Generating finnish language file"
CommandLine="strgen\debug\strgen.exe &quot;$(InputPath)&quot;
"
Outputs="lang\finnish.lng"/>
</FileConfiguration>
</File>
<File
RelativePath=".\lang\french.txt">
<FileConfiguration
@@ -169,18 +144,6 @@
Outputs="lang\hungarian.lng"/>
</FileConfiguration>
</File>
<File
RelativePath=".\lang\icelandic.txt">
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCustomBuildTool"
Description="Generating icelandic language file"
CommandLine="strgen\debug\strgen.exe &quot;$(InputPath)&quot;
"
Outputs="lang\icelandic.lng"/>
</FileConfiguration>
</File>
<File
RelativePath=".\lang\italian.txt">
<FileConfiguration
@@ -212,8 +175,7 @@
<Tool
Name="VCCustomBuildTool"
Description="Generating Original Vehicle names file"
CommandLine="strgen\debug\strgen.exe &quot;$(InputPath)&quot;
"
CommandLine="strgen\debug\strgen.exe &quot;$(InputPath)&quot;"
Outputs="lang\origveh.lng"/>
</FileConfiguration>
</File>
@@ -229,18 +191,6 @@
Outputs="lang\polish.lng"/>
</FileConfiguration>
</File>
<File
RelativePath=".\lang\portuguese.txt">
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCustomBuildTool"
Description="Generating portuguese language file"
CommandLine="strgen\debug\strgen.exe &quot;$(InputPath)&quot;
"
Outputs="lang\portuguese.lng"/>
</FileConfiguration>
</File>
<File
RelativePath=".\lang\romanian.txt">
<FileConfiguration
@@ -265,18 +215,6 @@
Outputs="lang\slovak.lng"/>
</FileConfiguration>
</File>
<File
RelativePath=".\lang\spanish.txt">
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCustomBuildTool"
Description="Generating spanish language file"
CommandLine="strgen\debug\strgen.exe &quot;$(InputPath)&quot;
"
Outputs="lang\spanish.lng"/>
</FileConfiguration>
</File>
<File
RelativePath="lang\swedish.txt">
<FileConfiguration

View File

@@ -11,20 +11,20 @@
#undef max
#endif
static inline int min(int a, int b) { if (a <= b) return a; return b; }
static inline int max(int a, int b) { if (a >= b) return a; return b; }
static inline int64 max64(int64 a, int64 b) { if (a >= b) return a; return b; }
static INLINE int min(int a, int b) { if (a <= b) return a; return b; }
static INLINE int max(int a, int b) { if (a >= b) return a; return b; }
static INLINE int64 max64(int64 a, int64 b) { if (a >= b) return a; return b; }
static inline uint minu(uint a, uint b) { if (a <= b) return a; return b; }
static inline uint maxu(uint a, uint b) { if (a >= b) return a; return b; }
static INLINE uint minu(uint a, uint b) { if (a <= b) return a; return b; }
static INLINE uint maxu(uint a, uint b) { if (a >= b) return a; return b; }
static inline int clamp(int a, int min, int max) { if (a <= min) return min; if (a >= max) return max; return a; }
static inline int clamp2(int a, int min, int max) { if (a <= min) a=min; if (a >= max) a=max; return a; }
static inline bool int32_add_overflow(int32 a, int32 b) { return (int32)(a^b)>=0 && (int32)(a^(a+b))<0; }
static inline bool int32_sub_overflow(int32 a, int32 b) { return (int32)(a^b)<0 && (int32)(a^(a-b))<0; }
static INLINE int clamp(int a, int min, int max) { if (a <= min) return min; if (a >= max) return max; return a; }
static INLINE int clamp2(int a, int min, int max) { if (a <= min) a=min; if (a >= max) a=max; return a; }
static INLINE bool int32_add_overflow(int32 a, int32 b) { return (int32)(a^b)>=0 && (int32)(a^(a+b))<0; }
static INLINE bool int32_sub_overflow(int32 a, int32 b) { return (int32)(a^b)<0 && (int32)(a^(a-b))<0; }
static inline bool str_eq(const byte *a, const byte *b)
static INLINE bool str_eq(const byte *a, const byte *b)
{
int i=0;
while (a[i] == b[i]) {
@@ -36,7 +36,7 @@ static inline bool str_eq(const byte *a, const byte *b)
}
// Will crash if strings are equal
static inline bool str_is_below(byte *a, byte *b) {
static INLINE bool str_is_below(byte *a, byte *b) {
while (*a <= *b) {
if (*a < *b) return true;
a++;
@@ -46,19 +46,19 @@ static inline bool str_is_below(byte *a, byte *b) {
}
static inline int32 BIGMULSS(int32 a, int32 b, int shift) {
static INLINE int32 BIGMULSS(int32 a, int32 b, int shift) {
return (int32)(((int64)(a) * (int64)(b)) >> (shift));
}
static inline int64 BIGMULSS64(int64 a, int64 b, int shift) {
static INLINE int64 BIGMULSS64(int64 a, int64 b, int shift) {
return ((a) * (b)) >> (shift);
}
static inline uint32 BIGMULUS(uint32 a, uint32 b, int shift) {
static INLINE uint32 BIGMULUS(uint32 a, uint32 b, int shift) {
return (uint32)(((uint64)(a) * (uint64)(b)) >> (shift));
}
static inline int64 BIGMULS(int32 a, int32 b) {
static INLINE int64 BIGMULS(int32 a, int32 b) {
return (int32)(((int64)(a) * (int64)(b)));
}
@@ -66,6 +66,8 @@ static inline int64 BIGMULS(int32 a, int32 b) {
//#define IS_INSIDE_1D(x, base, size) ((x) >= (base) && (x) < (base) + (size))
#define IS_INSIDE_1D(x, base, size) ( (uint)((x) - (base)) < ((uint)(size)) )
#define TILE_X_BITS 8
#define TILE_Y_BITS 8
#define LANDSCAPE_SIZE_FACTOR 1
#define TILE_FROM_XY(x,y) (int)((((y) >> 4) << TILE_X_BITS) + ((x) >> 4))
@@ -80,6 +82,12 @@ enum {
};
#define CORRECT_Z(tileh) (CORRECT_Z_BITS & (1 << tileh))
#define TILES_X (1 << TILE_X_BITS)
#define TILES_Y (1 << TILE_Y_BITS)
#define TILE_X_MAX (TILES_X-1)
#define TILE_Y_MAX (TILES_Y-1)
#define TILE_ASSERT(x) assert( TILE_MASK(x) == (x) );
extern uint SafeTileAdd(uint x, int add, const char *exp, const char *file, int line);
@@ -137,7 +145,7 @@ extern const byte _ffb_64[128];
*/
#define KILL_FIRST_BIT(x) _ffb_64[(x)+64]
static inline int FindFirstBit2x64(int value)
static INLINE int FindFirstBit2x64(int value)
{
int i = 0;
if ( (byte) value == 0) {
@@ -162,6 +170,7 @@ static inline int FindFirstBit2x64(int value)
#define CHANCE16(a,b) ((uint16)Random() <= (uint16)((65536 * a) / b))
#define ICHANCE16(a,b) ((uint16)InteractiveRandom() <= (uint16)((65536 * a) / b))
#define CHANCE16R(a,b,r) ((uint16)(r=Random()) <= (uint16)((65536 * a) / b))
#define CHANCE16I(a,b,v) ((uint16)(v) <= (uint16)((65536 * a) / b))
@@ -186,17 +195,17 @@ static inline int FindFirstBit2x64(int value)
#define abs myabs
static inline int intxchg_(int *a, int b) { int t = *a; *a = b; return t; }
static INLINE int intxchg_(int *a, int b) { int t = *a; *a = b; return t; }
#define intxchg(a,b) intxchg_(&(a), (b))
#define intswap(a,b) ((b) = intxchg_(&(a), (b)))
static inline int myabs(int a) { if (a<0) a = -a; return a; }
static inline int64 myabs64(int64 a) { if (a<0) a = -a; return a; }
static INLINE int myabs(int a) { if (a<0) a = -a; return a; }
static INLINE int64 myabs64(int64 a) { if (a<0) a = -a; return a; }
static inline void swap_byte(byte *a, byte *b) { byte t = *a; *a = *b; *b = t; }
static inline void swap_uint16(uint16 *a, uint16 *b) { uint16 t = *a; *a = *b; *b = t; }
static inline void swap_int16(int16 *a, int16 *b) { int16 t = *a; *a = *b; *b = t; }
static inline void swap_tile(TileIndex *a, TileIndex *b) { TileIndex t = *a; *a = *b; *b = t; }
static INLINE void swap_byte(byte *a, byte *b) { byte t = *a; *a = *b; *b = t; }
static INLINE void swap_uint16(uint16 *a, uint16 *b) { uint16 t = *a; *a = *b; *b = t; }
static INLINE void swap_int16(int16 *a, int16 *b) { int16 t = *a; *a = *b; *b = t; }
static INLINE void swap_tile(TileIndex *a, TileIndex *b) { TileIndex t = *a; *a = *b; *b = t; }
@@ -205,14 +214,14 @@ static inline void swap_tile(TileIndex *a, TileIndex *b) { TileIndex t = *a; *a
# define ADD_WORD(x) (x)&0xFF, ((x) >> 8)&0xFF
# define ADD_DWORD(x) (x)&0xFF, ((x) >> 8)&0xFF, ((x) >> 16)&0xFF, ((x) >> 24)&0xFF
#elif defined(TTD_BIG_ENDIAN)
static inline uint16 READ_LE_UINT16(const void *b) {
static INLINE uint16 READ_LE_UINT16(const void *b) {
return ((const byte*)b)[0] + (((const byte*)b)[1] << 8);
}
# define ADD_WORD(x) ((x) >> 8)&0xFF, (x)&0xFF
# define ADD_DWORD(x) ((x) >> 24)&0xFF, ((x) >> 16)&0xFF, ((x) >> 8)&0xFF, (x)&0xFF
#endif
static inline void WRITE_LE_UINT16(void *b, uint16 x) {
static INLINE void WRITE_LE_UINT16(void *b, uint16 x) {
((byte*)b)[0] = (byte)x;
((byte*)b)[1] = (byte)(x >> 8);
}

File diff suppressed because it is too large Load Diff

View File

@@ -17,8 +17,6 @@ $(MAKE_CONFIG):
$(call CONFIG_LINE,\# MIDI: sets path to midi player)
$(call CONFIG_LINE,\# MIDI_ARG: sets an argument which is used when calling the midi player. Default off)
$(call CONFIG_LINE,\# SUPRESS_LANG_ERRORS: supresses output about missing and mismatched strings)
$(call CONFIG_LINE,\# WITH_NETWORK: makes OpenTTD able to play multiplayer using TCP and UDP)
$(call CONFIG_LINE,\# DEDICATED: compiles a dedicated server. This one can only host using a CLI, but do not need SDL)
$(call CONFIG_LINE,STATIC:=$(STATIC))
$(call CONFIG_LINE,TRANSLATOR:=$(TRANSLATOR))
$(call CONFIG_LINE,DISPLAY_WARNINGS:=$(DISPLAY_WARNINGS))
@@ -27,27 +25,21 @@ $(MAKE_CONFIG):
$(call CONFIG_LINE,MIDI:=$(MIDI))
$(call CONFIG_LINE,MIDI_ARG:=$(MIDI_ARG))
$(call CONFIG_LINE,SUPRESS_LANG_ERRORS:=$(SUPRESS_LANG_ERRORS))
$(call CONFIG_LINE,WITH_NETWORK:=$(WITH_NETWORK))
$(call CONFIG_LINE,DEDICATED:=$(DEDICATED))
$(call CONFIG_LINE,)
$(call CONFIG_LINE,\# Disable asserts. Leave them on for easier bug finding)
$(call CONFIG_LINE,DISABLE_ASSERTS:=$(DISABLE_ASSERTS))
$(call CONFIG_LINE,)
$(call CONFIG_LINE,\# See Makefile for details on these paths)
$(call CONFIG_LINE,\# Folders should not end with /)
$(call CONFIG_LINE,INSTALL:=$(INSTALL))
$(call CONFIG_LINE,PREFIX:=$(PREFIX))
$(call CONFIG_LINE,\# DATA_DIR_PREFIX is the path to OpenTTD. It can be absolute or relative)
$(call CONFIG_LINE,\# USE_HOMEDIR sets \~/ in front of DATA_DIR_PREFIX so it uses the homedir)
$(call CONFIG_LINE,\# do not type \~/ yourself because that will not work)
$(call CONFIG_LINE,\# Folders should end with /)
$(call CONFIG_LINE,BINARY_DIR:=$(BINARY_DIR))
$(call CONFIG_LINE,DATA_DIR:=$(DATA_DIR))
$(call CONFIG_LINE,INSTALL_DIR:=$(INSTALL_DIR))
$(call CONFIG_LINE,USE_HOMEDIR:=$(USE_HOMEDIR))
$(call CONFIG_LINE,GAME_DATA_DIR:=$(GAME_DATA_DIR))
$(call CONFIG_LINE,PERSONAL_DIR:=$(PERSONAL_DIR))
$(call CONFIG_LINE,SECOND_DATA_PATH:=$(SECOND_DATA_PATH))
$(call CONFIG_LINE,CUSTOM_LANG_PATH:=$(CUSTOM_LANG_PATH))
$(call CONFIG_LINE,)
$(call CONFIG_LINE,\# Experimental)
$(call CONFIG_LINE,WITH_NETWORK:=$(WITH_NETWORK))
$(call CONFIG_LINE,WITH_DIRECTMUSIC:=$(WITH_DIRECTMUSIC))
$(call CONFIG_LINE,)
$(call CONFIG_LINE,)
@@ -81,15 +73,12 @@ $(MAKE_CONFIG):
$(call CONFIG_LINE,OSX:=$(OSX))
$(call CONFIG_LINE,FREEBSD:=$(FREEBSD))
$(call CONFIG_LINE,MORPHOS:=$(MORPHOS))
$(call CONFIG_LINE,BEOS:=$(BEOS))
$(call CONFIG_LINE,SUNOS:=$(SUNOS))
$(call CONFIG_LINE,CYGWIN:=$(CYGWIN))
$(call CONFIG_LINE,MINGW:=$(MINGW))
$(call CONFIG_LINE,)
$(call CONFIG_LINE,\# misc)
$(call CONFIG_LINE,SDL-CONFIG:=$(SDL-CONFIG))
$(call CONFIG_LINE,BEOS_NET_SERVER:=$(BEOS_NET_SERVER))
$(call CONFIG_LINE,CONFIG_INCLUDED:=yes)
$(call CONFIG_LINE,PATH_SET:=$(PATH_SET))
$(call CONFIG_LINE,CONFIG_VERSION:=$(MAKEFILE_VERSION))

View File

@@ -4,10 +4,6 @@
ifdef WINDIR
ifndef UNIX
WIN32:=1
CYGWIN:=1
MINGW:=1
STATIC:=1
SKIP_STATIC_CHECK:=1
endif
else
UNIX:=1
@@ -23,8 +19,6 @@ ifeq ($(VENDOR), apple)
OSX:=1
# OSX uses the unix setup too
UNIX:=1
# OSX generally uses static since so few computers actually have all the libs installed in unix style
STATIC:=1
endif
# Automatically recognize if building on MorphOS
@@ -34,24 +28,6 @@ MORPHOS:=1
UNIX:=1
endif
# Automatically recognize if building on BeOS
ifeq ($(shell uname), BeOS)
BEOS:=1
# BeOS uses UNIX setup too
UNIX:=1
# Except that in BeOS 5.0 we need to use net_server, not BONE networking
ifeq ($(shell uname -r), 5.0)
BEOS_NET_SERVER:=1
endif
endif
# Automatically recognize if building on SunOS/Solaris
ifeq ($(shell uname), SunOS)
SUNOS:=1
# SunOS uses UNIX setup too
UNIX:=1
endif
# FreeBSD uses sdl11 instead of sdl
ifdef FREEBSD
SDL-CONFIG:=sdl11-config
@@ -59,8 +35,6 @@ else
SDL-CONFIG:=sdl-config
endif
# Networking, enabled by default
WITH_NETWORK:=1
# Library detections
WITH_SDL:=$(shell $(SDL-CONFIG) --version 2>/dev/null)
@@ -103,10 +77,4 @@ ifndef BIN_DIR
endif
endif
endif
endif
# workaround
# cygwin have problems with libpng, so we will just disable it for now until the problem is solved
ifdef CYGWIN
WITH_PNG:=
endif
endif

14
map.c
View File

@@ -1,14 +0,0 @@
#include "stdafx.h"
#include "ttd.h"
#include "map.h"
uint _map_log_x = TILE_X_BITS;
uint _map_log_y = TILE_Y_BITS;
byte _map_type_and_height[TILES_X * TILES_Y];
byte _map5[TILES_X * TILES_Y];
byte _map3_lo[TILES_X * TILES_Y];
byte _map3_hi[TILES_X * TILES_Y];
byte _map_owner[TILES_X * TILES_Y];
byte _map2[TILES_X * TILES_Y];
byte _map_extra_bits[TILES_X * TILES_Y / 4];

33
map.h
View File

@@ -1,33 +0,0 @@
#ifndef MAP_H
#define MAP_H
#define TILE_X_BITS 8
#define TILE_Y_BITS 8
#define TILES_X (1 << TILE_X_BITS)
#define TILES_Y (1 << TILE_Y_BITS)
#define TILE_X_MAX (TILES_X - 1)
#define TILE_Y_MAX (TILES_Y - 1)
extern byte _map_type_and_height[];
extern byte _map5[];
extern byte _map3_lo[];
extern byte _map3_hi[];
extern byte _map_owner[];
extern byte _map2[];
extern byte _map_extra_bits[];
// binary logarithm of the map size, try to avoid using this one
static inline uint MapLogX(void) { extern uint _map_log_x; return _map_log_x; }
static inline uint MapLogY(void) { extern uint _map_log_y; return _map_log_y; }
/* The size of the map */
static inline uint MapSizeX(void) { return 1 << MapLogX(); }
static inline uint MapSizeY(void) { return 1 << MapLogY(); }
/* The maximum coordinates */
static inline uint MapMaxX(void) { return MapSizeX() - 1; }
static inline uint MapMaxY(void) { return MapSizeY() - 1; }
/* The number of tiles in the map */
static inline uint MapSize(void) { return MapSizeX() * MapSizeY(); }
#endif

382
md5.c
View File

@@ -1,382 +0,0 @@
/*
Copyright (C) 1999, 2000, 2002 Aladdin Enterprises. All rights reserved.
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
L. Peter Deutsch
ghost@aladdin.com
*/
/* $Id: md5.c,v 1.6 2002/04/13 19:20:28 lpd Exp $ */
/*
Independent implementation of MD5 (RFC 1321).
This code implements the MD5 Algorithm defined in RFC 1321, whose
text is available at
http://www.ietf.org/rfc/rfc1321.txt
The code is derived from the text of the RFC, including the test suite
(section A.5) but excluding the rest of Appendix A. It does not include
any code or documentation that is identified in the RFC as being
copyrighted.
The original and principal author of md5.c is L. Peter Deutsch
<ghost@aladdin.com>. Other authors are noted in the change history
that follows (in reverse chronological order):
2002-04-13 lpd Clarified derivation from RFC 1321; now handles byte order
either statically or dynamically; added missing #include <string.h>
in library.
2002-03-11 lpd Corrected argument list for main(), and added int return
type, in test program and T value program.
2002-02-21 lpd Added missing #include <stdio.h> in test program.
2000-07-03 lpd Patched to eliminate warnings about "constant is
unsigned in ANSI C, signed in traditional"; made test program
self-checking.
1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5).
1999-05-03 lpd Original version.
*/
#include "stdafx.h"
#include "md5.h"
#include <string.h>
#undef BYTE_ORDER /* 1 = big-endian, -1 = little-endian, 0 = unknown */
#if defined(TTD_BIG_ENDIAN)
# define BYTE_ORDER 1
#else
# define BYTE_ORDER -1
#endif
#define T_MASK ((md5_word_t)~0)
#define T1 /* 0xd76aa478 */ (T_MASK ^ 0x28955b87)
#define T2 /* 0xe8c7b756 */ (T_MASK ^ 0x173848a9)
#define T3 0x242070db
#define T4 /* 0xc1bdceee */ (T_MASK ^ 0x3e423111)
#define T5 /* 0xf57c0faf */ (T_MASK ^ 0x0a83f050)
#define T6 0x4787c62a
#define T7 /* 0xa8304613 */ (T_MASK ^ 0x57cfb9ec)
#define T8 /* 0xfd469501 */ (T_MASK ^ 0x02b96afe)
#define T9 0x698098d8
#define T10 /* 0x8b44f7af */ (T_MASK ^ 0x74bb0850)
#define T11 /* 0xffff5bb1 */ (T_MASK ^ 0x0000a44e)
#define T12 /* 0x895cd7be */ (T_MASK ^ 0x76a32841)
#define T13 0x6b901122
#define T14 /* 0xfd987193 */ (T_MASK ^ 0x02678e6c)
#define T15 /* 0xa679438e */ (T_MASK ^ 0x5986bc71)
#define T16 0x49b40821
#define T17 /* 0xf61e2562 */ (T_MASK ^ 0x09e1da9d)
#define T18 /* 0xc040b340 */ (T_MASK ^ 0x3fbf4cbf)
#define T19 0x265e5a51
#define T20 /* 0xe9b6c7aa */ (T_MASK ^ 0x16493855)
#define T21 /* 0xd62f105d */ (T_MASK ^ 0x29d0efa2)
#define T22 0x02441453
#define T23 /* 0xd8a1e681 */ (T_MASK ^ 0x275e197e)
#define T24 /* 0xe7d3fbc8 */ (T_MASK ^ 0x182c0437)
#define T25 0x21e1cde6
#define T26 /* 0xc33707d6 */ (T_MASK ^ 0x3cc8f829)
#define T27 /* 0xf4d50d87 */ (T_MASK ^ 0x0b2af278)
#define T28 0x455a14ed
#define T29 /* 0xa9e3e905 */ (T_MASK ^ 0x561c16fa)
#define T30 /* 0xfcefa3f8 */ (T_MASK ^ 0x03105c07)
#define T31 0x676f02d9
#define T32 /* 0x8d2a4c8a */ (T_MASK ^ 0x72d5b375)
#define T33 /* 0xfffa3942 */ (T_MASK ^ 0x0005c6bd)
#define T34 /* 0x8771f681 */ (T_MASK ^ 0x788e097e)
#define T35 0x6d9d6122
#define T36 /* 0xfde5380c */ (T_MASK ^ 0x021ac7f3)
#define T37 /* 0xa4beea44 */ (T_MASK ^ 0x5b4115bb)
#define T38 0x4bdecfa9
#define T39 /* 0xf6bb4b60 */ (T_MASK ^ 0x0944b49f)
#define T40 /* 0xbebfbc70 */ (T_MASK ^ 0x4140438f)
#define T41 0x289b7ec6
#define T42 /* 0xeaa127fa */ (T_MASK ^ 0x155ed805)
#define T43 /* 0xd4ef3085 */ (T_MASK ^ 0x2b10cf7a)
#define T44 0x04881d05
#define T45 /* 0xd9d4d039 */ (T_MASK ^ 0x262b2fc6)
#define T46 /* 0xe6db99e5 */ (T_MASK ^ 0x1924661a)
#define T47 0x1fa27cf8
#define T48 /* 0xc4ac5665 */ (T_MASK ^ 0x3b53a99a)
#define T49 /* 0xf4292244 */ (T_MASK ^ 0x0bd6ddbb)
#define T50 0x432aff97
#define T51 /* 0xab9423a7 */ (T_MASK ^ 0x546bdc58)
#define T52 /* 0xfc93a039 */ (T_MASK ^ 0x036c5fc6)
#define T53 0x655b59c3
#define T54 /* 0x8f0ccc92 */ (T_MASK ^ 0x70f3336d)
#define T55 /* 0xffeff47d */ (T_MASK ^ 0x00100b82)
#define T56 /* 0x85845dd1 */ (T_MASK ^ 0x7a7ba22e)
#define T57 0x6fa87e4f
#define T58 /* 0xfe2ce6e0 */ (T_MASK ^ 0x01d3191f)
#define T59 /* 0xa3014314 */ (T_MASK ^ 0x5cfebceb)
#define T60 0x4e0811a1
#define T61 /* 0xf7537e82 */ (T_MASK ^ 0x08ac817d)
#define T62 /* 0xbd3af235 */ (T_MASK ^ 0x42c50dca)
#define T63 0x2ad7d2bb
#define T64 /* 0xeb86d391 */ (T_MASK ^ 0x14792c6e)
static void
md5_process(md5_state_t *pms, const md5_byte_t *data /*[64]*/)
{
md5_word_t
a = pms->abcd[0], b = pms->abcd[1],
c = pms->abcd[2], d = pms->abcd[3];
md5_word_t t;
#if BYTE_ORDER > 0
/* Define storage only for big-endian CPUs. */
md5_word_t X[16];
#else
/* Define storage for little-endian or both types of CPUs. */
md5_word_t xbuf[16];
const md5_word_t *X;
#endif
{
#if BYTE_ORDER == 0
/*
* Determine dynamically whether this is a big-endian or
* little-endian machine, since we can use a more efficient
* algorithm on the latter.
*/
static const int w = 1;
if (*((const md5_byte_t *)&w)) /* dynamic little-endian */
#endif
#if BYTE_ORDER <= 0 /* little-endian */
{
/*
* On little-endian machines, we can process properly aligned
* data without copying it.
*/
if (!((data - (const md5_byte_t *)0) & 3)) {
/* data are properly aligned */
X = (const md5_word_t *)data;
} else {
/* not aligned */
memcpy(xbuf, data, 64);
X = xbuf;
}
}
#endif
#if BYTE_ORDER == 0
else /* dynamic big-endian */
#endif
#if BYTE_ORDER >= 0 /* big-endian */
{
/*
* On big-endian machines, we must arrange the bytes in the
* right order.
*/
const md5_byte_t *xp = data;
int i;
# if BYTE_ORDER == 0
X = xbuf; /* (dynamic only) */
# else
# define xbuf X /* (static only) */
# endif
for (i = 0; i < 16; ++i, xp += 4)
xbuf[i] = xp[0] + (xp[1] << 8) + (xp[2] << 16) + (xp[3] << 24);
}
#endif
}
#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n))))
/* Round 1. */
/* Let [abcd k s i] denote the operation
a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */
#define F(x, y, z) (((x) & (y)) | (~(x) & (z)))
#define SET(a, b, c, d, k, s, Ti)\
t = a + F(b,c,d) + X[k] + Ti;\
a = ROTATE_LEFT(t, s) + b
/* Do the following 16 operations. */
SET(a, b, c, d, 0, 7, T1);
SET(d, a, b, c, 1, 12, T2);
SET(c, d, a, b, 2, 17, T3);
SET(b, c, d, a, 3, 22, T4);
SET(a, b, c, d, 4, 7, T5);
SET(d, a, b, c, 5, 12, T6);
SET(c, d, a, b, 6, 17, T7);
SET(b, c, d, a, 7, 22, T8);
SET(a, b, c, d, 8, 7, T9);
SET(d, a, b, c, 9, 12, T10);
SET(c, d, a, b, 10, 17, T11);
SET(b, c, d, a, 11, 22, T12);
SET(a, b, c, d, 12, 7, T13);
SET(d, a, b, c, 13, 12, T14);
SET(c, d, a, b, 14, 17, T15);
SET(b, c, d, a, 15, 22, T16);
#undef SET
/* Round 2. */
/* Let [abcd k s i] denote the operation
a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */
#define G(x, y, z) (((x) & (z)) | ((y) & ~(z)))
#define SET(a, b, c, d, k, s, Ti)\
t = a + G(b,c,d) + X[k] + Ti;\
a = ROTATE_LEFT(t, s) + b
/* Do the following 16 operations. */
SET(a, b, c, d, 1, 5, T17);
SET(d, a, b, c, 6, 9, T18);
SET(c, d, a, b, 11, 14, T19);
SET(b, c, d, a, 0, 20, T20);
SET(a, b, c, d, 5, 5, T21);
SET(d, a, b, c, 10, 9, T22);
SET(c, d, a, b, 15, 14, T23);
SET(b, c, d, a, 4, 20, T24);
SET(a, b, c, d, 9, 5, T25);
SET(d, a, b, c, 14, 9, T26);
SET(c, d, a, b, 3, 14, T27);
SET(b, c, d, a, 8, 20, T28);
SET(a, b, c, d, 13, 5, T29);
SET(d, a, b, c, 2, 9, T30);
SET(c, d, a, b, 7, 14, T31);
SET(b, c, d, a, 12, 20, T32);
#undef SET
/* Round 3. */
/* Let [abcd k s t] denote the operation
a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */
#define H(x, y, z) ((x) ^ (y) ^ (z))
#define SET(a, b, c, d, k, s, Ti)\
t = a + H(b,c,d) + X[k] + Ti;\
a = ROTATE_LEFT(t, s) + b
/* Do the following 16 operations. */
SET(a, b, c, d, 5, 4, T33);
SET(d, a, b, c, 8, 11, T34);
SET(c, d, a, b, 11, 16, T35);
SET(b, c, d, a, 14, 23, T36);
SET(a, b, c, d, 1, 4, T37);
SET(d, a, b, c, 4, 11, T38);
SET(c, d, a, b, 7, 16, T39);
SET(b, c, d, a, 10, 23, T40);
SET(a, b, c, d, 13, 4, T41);
SET(d, a, b, c, 0, 11, T42);
SET(c, d, a, b, 3, 16, T43);
SET(b, c, d, a, 6, 23, T44);
SET(a, b, c, d, 9, 4, T45);
SET(d, a, b, c, 12, 11, T46);
SET(c, d, a, b, 15, 16, T47);
SET(b, c, d, a, 2, 23, T48);
#undef SET
/* Round 4. */
/* Let [abcd k s t] denote the operation
a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */
#define I(x, y, z) ((y) ^ ((x) | ~(z)))
#define SET(a, b, c, d, k, s, Ti)\
t = a + I(b,c,d) + X[k] + Ti;\
a = ROTATE_LEFT(t, s) + b
/* Do the following 16 operations. */
SET(a, b, c, d, 0, 6, T49);
SET(d, a, b, c, 7, 10, T50);
SET(c, d, a, b, 14, 15, T51);
SET(b, c, d, a, 5, 21, T52);
SET(a, b, c, d, 12, 6, T53);
SET(d, a, b, c, 3, 10, T54);
SET(c, d, a, b, 10, 15, T55);
SET(b, c, d, a, 1, 21, T56);
SET(a, b, c, d, 8, 6, T57);
SET(d, a, b, c, 15, 10, T58);
SET(c, d, a, b, 6, 15, T59);
SET(b, c, d, a, 13, 21, T60);
SET(a, b, c, d, 4, 6, T61);
SET(d, a, b, c, 11, 10, T62);
SET(c, d, a, b, 2, 15, T63);
SET(b, c, d, a, 9, 21, T64);
#undef SET
/* Then perform the following additions. (That is increment each
of the four registers by the value it had before this block
was started.) */
pms->abcd[0] += a;
pms->abcd[1] += b;
pms->abcd[2] += c;
pms->abcd[3] += d;
}
void
md5_init(md5_state_t *pms)
{
pms->count[0] = pms->count[1] = 0;
pms->abcd[0] = 0x67452301;
pms->abcd[1] = /*0xefcdab89*/ T_MASK ^ 0x10325476;
pms->abcd[2] = /*0x98badcfe*/ T_MASK ^ 0x67452301;
pms->abcd[3] = 0x10325476;
}
void
md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes)
{
const md5_byte_t *p = data;
int left = nbytes;
int offset = (pms->count[0] >> 3) & 63;
md5_word_t nbits = (md5_word_t)(nbytes << 3);
if (nbytes <= 0)
return;
/* Update the message length. */
pms->count[1] += nbytes >> 29;
pms->count[0] += nbits;
if (pms->count[0] < nbits)
pms->count[1]++;
/* Process an initial partial block. */
if (offset) {
int copy = (offset + nbytes > 64 ? 64 - offset : nbytes);
memcpy(pms->buf + offset, p, copy);
if (offset + copy < 64)
return;
p += copy;
left -= copy;
md5_process(pms, pms->buf);
}
/* Process full blocks. */
for (; left >= 64; p += 64, left -= 64)
md5_process(pms, p);
/* Process a final partial block. */
if (left)
memcpy(pms->buf, p, left);
}
void
md5_finish(md5_state_t *pms, md5_byte_t digest[16])
{
static const md5_byte_t pad[64] = {
0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
md5_byte_t data[8];
int i;
/* Save the length before padding. */
for (i = 0; i < 8; ++i)
data[i] = (md5_byte_t)(pms->count[i >> 2] >> ((i & 3) << 3));
/* Pad to 56 bytes mod 64. */
md5_append(pms, pad, ((55 - (pms->count[0] >> 3)) & 63) + 1);
/* Append the length. */
md5_append(pms, data, 8);
for (i = 0; i < 16; ++i)
digest[i] = (md5_byte_t)(pms->abcd[i >> 2] >> ((i & 3) << 3));
}

91
md5.h
View File

@@ -1,91 +0,0 @@
/*
Copyright (C) 1999, 2002 Aladdin Enterprises. All rights reserved.
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
L. Peter Deutsch
ghost@aladdin.com
*/
/* $Id: md5.h,v 1.4 2002/04/13 19:20:28 lpd Exp $ */
/*
Independent implementation of MD5 (RFC 1321).
This code implements the MD5 Algorithm defined in RFC 1321, whose
text is available at
http://www.ietf.org/rfc/rfc1321.txt
The code is derived from the text of the RFC, including the test suite
(section A.5) but excluding the rest of Appendix A. It does not include
any code or documentation that is identified in the RFC as being
copyrighted.
The original and principal author of md5.h is L. Peter Deutsch
<ghost@aladdin.com>. Other authors are noted in the change history
that follows (in reverse chronological order):
2002-04-13 lpd Removed support for non-ANSI compilers; removed
references to Ghostscript; clarified derivation from RFC 1321;
now handles byte order either statically or dynamically.
1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5);
added conditionalization for C++ compilation from Martin
Purschke <purschke@bnl.gov>.
1999-05-03 lpd Original version.
*/
#ifndef md5_INCLUDED
# define md5_INCLUDED
/*
* This package supports both compile-time and run-time determination of CPU
* byte order. If ARCH_IS_BIG_ENDIAN is defined as 0, the code will be
* compiled to run only on little-endian CPUs; if ARCH_IS_BIG_ENDIAN is
* defined as non-zero, the code will be compiled to run only on big-endian
* CPUs; if ARCH_IS_BIG_ENDIAN is not defined, the code will be compiled to
* run on either big- or little-endian CPUs, but will run slightly less
* efficiently on either one than if ARCH_IS_BIG_ENDIAN is defined.
*/
typedef unsigned char md5_byte_t; /* 8-bit byte */
typedef unsigned int md5_word_t; /* 32-bit word */
/* Define the state of the MD5 Algorithm. */
typedef struct md5_state_s {
md5_word_t count[2]; /* message length in bits, lsw first */
md5_word_t abcd[4]; /* digest buffer */
md5_byte_t buf[64]; /* accumulate block */
} md5_state_t;
#ifdef __cplusplus
extern "C"
{
#endif
/* Initialize the algorithm. */
void md5_init(md5_state_t *pms);
/* Append a string to the message. */
void md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes);
/* Finish the message and return the digest. */
void md5_finish(md5_state_t *pms, md5_byte_t digest[16]);
#ifdef __cplusplus
} /* end extern "C" */
#endif
#endif /* md5_INCLUDED */

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

148
misc.c
View File

@@ -1,45 +1,24 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "map.h"
#include "vehicle.h"
#include "gfx.h"
#include "assert.h"
#include "saveload.h"
#include "network.h"
#include "network_data.h"
#include "network_server.h"
extern void StartupEconomy();
extern void InitNewsItemStructs();
byte _name_array[512][32];
static inline uint32 ROR(uint32 x, int n)
static INLINE uint32 ROR(uint32 x, int n)
{
return (x >> n) + (x << ((sizeof(x)*8)-n));
}
/* XXX - Player-seeds don't seem to be used anymore.. which is a good thing
so I just disabled them for now. If there are no problems, we can remove
it completely! -- TrueLight */
#undef PLAYER_SEED_RANDOM
#ifdef RANDOM_DEBUG
#include "network_data.h"
uint32 DoRandom(uint line, char *file)
#else
uint32 Random()
#endif
{
#ifdef RANDOM_DEBUG
if (_networking && (DEREF_CLIENT(0)->status != STATUS_INACTIVE || !_network_server))
printf("Random [%d/%d] %s:%d\n",_frame_counter, _current_player, file, line);
#endif
#ifdef PLAYER_SEED_RANDOM
if (_current_player>=MAX_PLAYERS || !_networking) {
if (_current_player>=MAX_PLAYERS) {
uint32 s = _random_seeds[0][0];
uint32 t = _random_seeds[0][1];
_random_seeds[0][0] = s + ROR(t ^ 0x1234567F, 7);
@@ -48,28 +27,14 @@ uint32 Random()
uint32 s = _player_seeds[_current_player][0];
uint32 t = _player_seeds[_current_player][1];
_player_seeds[_current_player][0] = s + ROR(t ^ 0x1234567F, 7);
DEBUG(net, 1)("[NET-Seeds] Player seed called!");
return _player_seeds[_current_player][1] = ROR(s, 3);
}
#else
uint32 s = _random_seeds[0][0];
uint32 t = _random_seeds[0][1];
_random_seeds[0][0] = s + ROR(t ^ 0x1234567F, 7);
return _random_seeds[0][1] = ROR(s, 3);
#endif
}
#ifdef RANDOM_DEBUG
uint DoRandomRange(uint max, uint line, char *file)
{
return (uint16)DoRandom(line, file) * max >> 16;
}
#else
uint RandomRange(uint max)
{
return (uint16)Random() * max >> 16;
}
#endif
uint32 InteractiveRandom()
{
@@ -90,7 +55,14 @@ void InitPlayerRandoms()
for (i=0; i<MAX_PLAYERS; i++) {
_player_seeds[i][0]=InteractiveRandom();
_player_seeds[i][1]=InteractiveRandom();
}
}
}
void memswap(void *a, void *b, size_t size) {
void *c = alloca(size);
memcpy(c, a, size);
memcpy(a, b, size);
memcpy(b, c, size);
}
void SetDate(uint date)
@@ -99,54 +71,6 @@ void SetDate(uint date)
ConvertDayToYMD(&ymd, _date = date);
_cur_year = ymd.year;
_cur_month = ymd.month;
#ifdef ENABLE_NETWORK
_network_last_advertise_date = 0;
#endif /* ENABLE_NETWORK */
}
// multi os compatible sleep function
#ifdef __AMIGA__
// usleep() implementation
# include <devices/timer.h>
# include <dos/dos.h>
extern struct Device *TimerBase = NULL;
extern struct MsgPort *TimerPort = NULL;
extern struct timerequest *TimerRequest = NULL;
#endif // __AMIGA__
void CSleep(int milliseconds)
{
#if defined(WIN32)
Sleep(milliseconds);
#endif
#if defined(UNIX)
#if !defined(__BEOS__) && !defined(__AMIGA__)
usleep(milliseconds * 1000);
#endif
#ifdef __BEOS__
snooze(milliseconds * 1000);
#endif
#if defined(__AMIGA__)
{
ULONG signals;
ULONG TimerSigBit = 1 << TimerPort->mp_SigBit;
// send IORequest
TimerRequest->tr_node.io_Command = TR_ADDREQUEST;
TimerRequest->tr_time.tv_secs = (milliseconds * 1000) / 1000000;
TimerRequest->tr_time.tv_micro = (milliseconds * 1000) % 1000000;
SendIO((struct IORequest *)TimerRequest);
if (!((signals = Wait(TimerSigBit | SIGBREAKF_CTRL_C)) & TimerSigBit) ) {
AbortIO((struct IORequest *)TimerRequest);
}
WaitIO((struct IORequest *)TimerRequest);
}
#endif // __AMIGA__
#endif
}
void InitializeClearLand();
@@ -162,9 +86,9 @@ void InitializeLandscape();
void InitializeTowns();
void InitializeTrees();
void InitializeStations();
static void InitializeNameMgr();
void InitializeNameMgr();
void InitializePlayers();
static void InitializeCheats();
void InitializeCheats();
void GenerateLandscape();
void GenerateClearTile();
@@ -223,7 +147,6 @@ void InitializeGame()
InitializeCheats();
InitTextEffects();
InitTextMessage();
InitializeAnimatedTiles();
InitializeLandscapeVariables(false);
@@ -235,9 +158,6 @@ void GenerateWorld(int mode)
{
int i;
// Make sure everything is done via OWNER_NONE
_current_player = OWNER_NONE;
_generating_world = true;
InitializeGame();
SetObjectToPlace(1, 0, 0, 0);
@@ -308,18 +228,18 @@ byte *GetName(int id, byte *buff)
}
static void InitializeCheats()
void InitializeCheats()
{
memset(&_cheats, 0, sizeof(Cheats));
}
static void InitializeNameMgr()
void InitializeNameMgr()
{
memset(_name_array, 0, sizeof(_name_array));
}
StringID RealAllocateName(const byte *name, byte skip, bool check_double)
StringID AllocateName(const byte *name, byte skip)
{
int free_item = -1;
const byte *names;
@@ -333,7 +253,7 @@ StringID RealAllocateName(const byte *name, byte skip, bool check_double)
if (free_item == -1)
free_item = i;
} else {
if (check_double && str_eq(names, name)) {
if (str_eq(names, name)) {
_error_message = STR_0132_CHOSEN_NAME_IN_USE_ALREADY;
return 0;
}
@@ -593,7 +513,7 @@ void RoadVehiclesYearlyLoop();
void AircraftYearlyLoop();
void ShipsYearlyLoop();
void WaypointsDailyLoop();
void CheckpointsDailyLoop();
static const uint16 _autosave_months[] = {
@@ -642,12 +562,12 @@ void IncreaseDate()
/* yeah, increse day counter and call various daily loops */
_date++;
NetworkGameChangeDate(_date);
_vehicle_id_ctr_day = 0;
TextMessageDailyLoop();
DisasterDailyLoop();
WaypointsDailyLoop();
CheckpointsDailyLoop();
if (_game_mode != GM_MENU) {
InvalidateWindowWidget(WC_STATUS_BAR, 0, 0);
@@ -660,6 +580,8 @@ void IncreaseDate()
return;
_cur_month = ymd.month;
// printf("Month %d, %X\n", ymd.month, _random_seeds[0][0]);
/* yes, call various monthly loops */
if (_game_mode != GM_MENU) {
if (HASBIT(_autosave_months[_opt.autosave], _cur_month)) {
@@ -672,10 +594,6 @@ void IncreaseDate()
TownsMonthlyLoop();
IndustryMonthlyLoop();
StationMonthlyLoop();
#ifdef ENABLE_NETWORK
if (_network_server)
NetworkServerMonthlyLoop();
#endif /* ENABLE_NETWORK */
}
/* check if we entered a new year? */
@@ -690,19 +608,11 @@ void IncreaseDate()
RoadVehiclesYearlyLoop();
AircraftYearlyLoop();
ShipsYearlyLoop();
#ifdef ENABLE_NETWORK
if (_network_server)
NetworkServerYearlyLoop();
#endif /* ENABLE_NETWORK */
/* check if we reached 2090, that's the maximum year. */
if (_cur_year == 171) {
Vehicle *v;
_cur_year = 170;
_date = 62093;
FOR_ALL_VEHICLES(v) {
v->date_of_last_service -= 365; // 1 year is 365 days long
}
}
if (_patches.auto_euro)
@@ -833,31 +743,31 @@ static void SaveLoad_VIEW()
}
static void SaveLoad_MAPT() {
SlArray(_map_type_and_height, MapSize(), SLE_UINT8);
SlArray(_map_type_and_height, lengthof(_map_type_and_height), SLE_UINT8);
}
static void SaveLoad_MAP2() {
SlArray(_map2, MapSize(), SLE_UINT8);
SlArray(_map2, lengthof(_map2), SLE_UINT8);
}
static void SaveLoad_M3LO() {
SlArray(_map3_lo, MapSize(), SLE_UINT8);
SlArray(_map3_lo, lengthof(_map3_lo), SLE_UINT8);
}
static void SaveLoad_M3HI() {
SlArray(_map3_hi, MapSize(), SLE_UINT8);
SlArray(_map3_hi, lengthof(_map3_hi), SLE_UINT8);
}
static void SaveLoad_MAPO() {
SlArray(_map_owner, MapSize(), SLE_UINT8);
SlArray(_map_owner, lengthof(_map_owner), SLE_UINT8);
}
static void SaveLoad_MAP5() {
SlArray(_map5, MapSize(), SLE_UINT8);
SlArray(_map5, lengthof(_map5), SLE_UINT8);
}
static void SaveLoad_MAPE() {
SlArray(_map_extra_bits, MapSize() / 4, SLE_UINT8);
SlArray(_map_extra_bits, lengthof(_map_extra_bits), SLE_UINT8);
}

View File

@@ -1,14 +1,12 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "command.h"
#include "player.h"
#include "gfx.h"
#include "window.h"
#include "saveload.h"
#include "economy.h"
#include "network.h"
/* p1 = player
p2 = face
@@ -61,7 +59,7 @@ int32 CmdIncreaseLoan(int x, int y, uint32 flags, uint32 p1, uint32 p2)
p = DEREF_PLAYER(p1);
if (p->current_loan >= _economy.max_loan) {
SetDParam(0, _economy.max_loan);
SET_DPARAM32(0, _economy.max_loan);
return_cmd_error(STR_702B_MAXIMUM_PERMITTED_LOAN);
}
@@ -107,7 +105,7 @@ int32 CmdDecreaseLoan(int x, int y, uint32 flags, uint32 p1, uint32 p2)
}
if (p->player_money < size) {
SetDParam(0, size);
SET_DPARAM32(0, size);
return_cmd_error(STR_702E_REQUIRED);
}
@@ -125,7 +123,7 @@ int32 CmdChangeCompanyName(int x, int y, uint32 flags, uint32 p1, uint32 p2)
StringID str,old_str;
Player *p;
str = AllocateNameUnique((byte*)_decode_parameters, 4);
str = AllocateName((byte*)_decode_parameters, 4);
if (str == 0)
return CMD_ERROR;
@@ -147,7 +145,7 @@ int32 CmdChangePresidentName(int x, int y, uint32 flags, uint32 p1, uint32 p2)
StringID str,old_str;
Player *p;
str = AllocateNameUnique((byte*)_decode_parameters, 4);
str = AllocateName((byte*)_decode_parameters, 4);
if (str == 0)
return CMD_ERROR;
@@ -175,7 +173,7 @@ int32 CmdChangePresidentName(int x, int y, uint32 flags, uint32 p1, uint32 p2)
static void UpdateSignVirtCoords(SignStruct *ss)
{
Point pt = RemapCoords(ss->x, ss->y, ss->z);
SetDParam(0, ss->str);
SET_DPARAM16(0, ss->str);
UpdateViewportSignPos(&ss->sign, pt.x, pt.y - 6, STR_2806);
}
@@ -229,7 +227,7 @@ int32 CmdRenameSign(int x, int y, uint32 flags, uint32 p1, uint32 p2)
SignStruct *ss;
if (_decode_parameters[0] != 0 && !p2) {
str = AllocateNameUnique((byte*)_decode_parameters, 0);
str = AllocateName((byte*)_decode_parameters, 0);
if (str == 0)
return CMD_ERROR;
@@ -281,22 +279,6 @@ int32 CmdMoneyCheat(int x, int y, uint32 flags, uint32 p1, uint32 p2)
return (int32)p1;
}
int32 CmdGiveMoney(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{
SET_EXPENSES_TYPE(EXPENSES_OTHER);
if (flags & DC_EXEC) {
// Add money to player
byte old_cp = _current_player;
_current_player = p2;
SubtractMoneyFromPlayer(-(int32)p1);
_current_player = old_cp;
}
// Subtract money from local-player
return (int32)p1;
}
int32 CmdChangeDifficultyLevel(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{
if (flags & DC_EXEC) {
@@ -306,9 +288,6 @@ int32 CmdChangeDifficultyLevel(int x, int y, uint32 flags, uint32 p1, uint32 p2)
} else {
_opt_mod_ptr->diff_level = p2;
}
// If we are a network-client, update the difficult setting (if it is open)
if (_networking && !_network_server && FindWindowById(WC_GAME_OPTIONS, 0) != NULL)
memcpy(&_opt_mod_temp, _opt_mod_ptr, sizeof(GameOptions));
InvalidateWindow(WC_GAME_OPTIONS, 0);
}
return 0;

View File

@@ -1,7 +1,6 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "map.h"
#include "window.h"
#include "gui.h"
#include "viewport.h"
@@ -10,16 +9,11 @@
#include "command.h"
#include "player.h"
#include "town.h"
#include "sound.h"
#include "network.h"
#include "hal.h" // for file list
#include "hal.h" // Fios items
bool _query_string_active;
void SetFiosType(const byte fiostype);
/* Now this is what I call dirty.. the edit-box needs to be rewritten! */
static bool _do_edit_on_text_even_when_no_change_to_edit_box;
static void SetFiosType(const byte fiostype);
typedef struct LandInfoData {
Town *town;
@@ -29,67 +23,88 @@ typedef struct LandInfoData {
TileDesc td;
} LandInfoData;
static void LandInfoWndProc(Window *w, WindowEvent *e)
{
LandInfoData *lid;
StringID str;
uint32 *b;
if (e->event == WE_PAINT) {
int idx = 0;
int i;
DrawWindowWidgets(w);
lid = WP(w,void_d).data;
SetDParam(0, lid->td.dparam[0]);
SET_DPARAM32(0, lid->td.dparam[0]);
DrawStringCentered(140, 16, lid->td.str, 13);
SetDParam(0, STR_01A6_N_A);
SET_DPARAM16(0, STR_01A6_N_A);
if (lid->td.owner != OWNER_NONE && lid->td.owner != OWNER_WATER)
GetNameOfOwner(lid->td.owner, lid->tile);
DrawStringCentered(140, 27, STR_01A7_OWNER, 0);
str = STR_01A4_COST_TO_CLEAR_N_A;
if (lid->costclear != CMD_ERROR) {
SetDParam(0, lid->costclear);
SET_DPARAM32(0, lid->costclear);
str = STR_01A5_COST_TO_CLEAR;
}
DrawStringCentered(140, 38, str, 0);
snprintf(_userstring, USERSTRING_LEN, "%.4X", lid->tile);
SetDParam(0, GET_TILE_X(lid->tile));
SetDParam(1, GET_TILE_Y(lid->tile));
SetDParam(2, STR_SPEC_USERSTRING);
sprintf(_userstring, "%.4X", lid->tile);
SET_DPARAM16(0, GET_TILE_X(lid->tile));
SET_DPARAM16(1, GET_TILE_Y(lid->tile));
SET_DPARAM16(2, STR_SPEC_USERSTRING);
DrawStringCentered(140, 49, STR_LANDINFO_COORDS, 0);
SetDParam(0, STR_01A9_NONE);
SET_DPARAM16(0, STR_01A9_NONE);
if (lid->town != NULL) {
SetDParam(0, lid->town->townnametype);
SetDParam(1, lid->town->townnameparts);
SET_DPARAM16(0, lid->town->townnametype);
SET_DPARAM32(1, lid->town->townnameparts);
}
DrawStringCentered(140,60, STR_01A8_LOCAL_AUTHORITY, 0);
b = &GET_DPARAM(0);
str = STR_01CE_CARGO_ACCEPTED - 1;
/* XXX if a tile accepts more cargo types than there are template strings
* this breaks */
for (i = 0; i < NUM_CARGO; ++i) {
if (lid->ac[i] > 0) {
if (lid->ac[i] < 8) {
SetDParam(idx++, STR_01D1_8);
SetDParam(idx++, lid->ac[i]);
}
SetDParam(idx++, _cargoc.names_s[i]);
str++;
if (lid->ac.amount_1 != 0) {
if (lid->ac.amount_1 < 8) {
SET_DPARAMX16(b, 0, STR_01D1_8);
SET_DPARAMX8(b, 1, lid->ac.amount_1);
b += 2;
}
SET_DPARAMX16(b, 0, _cargoc.names_s[lid->ac.type_1]);
b++;
str++;
}
if (lid->ac.amount_2 != 0) {
if (lid->ac.amount_2 < 8) {
SET_DPARAMX16(b, 0, STR_01D1_8);
SET_DPARAMX8(b, 1, lid->ac.amount_2);
b += 2;
}
SET_DPARAMX16(b, 0, _cargoc.names_s[lid->ac.type_2]);
b++;
str++;
}
if (lid->ac.amount_3 != 0) {
if (lid->ac.amount_3 < 8) {
SET_DPARAMX16(b, 0, STR_01D1_8);
SET_DPARAMX8(b, 1, lid->ac.amount_3);
b += 2;
}
SET_DPARAMX16(b, 0, _cargoc.names_s[lid->ac.type_3]);
b++;
str++;
}
if (str != (STR_01CE_CARGO_ACCEPTED - 1))
DrawStringMultiCenter(140, 76, str, 276);
if (lid->td.build_date != 0) {
SetDParam(0,lid->td.build_date);
SET_DPARAM16(0,lid->td.build_date);
DrawStringCentered(140,71, STR_BUILD_DATE, 0);
}
}
@@ -139,7 +154,7 @@ static void Place_LandInfo(uint tile)
// Becuase build_date is not set yet in every TileDesc, we make sure it is empty
lid.td.build_date = 0;
GetAcceptedCargo(tile, lid.ac);
GetAcceptedCargo(tile, &lid.ac);
GetTileDesc(tile, &lid.td);
#if defined(_DEBUG)
@@ -271,7 +286,7 @@ static void BuildTreesWndProc(Window *w, WindowEvent *e)
case 16: /* place trees randomly over the landscape*/
w->click_state |= 1 << 16;
w->flags4 |= 5 << WF_TIMEOUT_SHL;
SndPlayFx(SND_15_BEEP);
SndPlayFx(0x13);
PlaceTreesRandomly();
MarkWholeScreenDirty();
break;
@@ -327,7 +342,7 @@ static const Widget _build_trees_widgets[] = {
static const WindowDesc _build_trees_desc = {
497, 22, 143, 171,
WC_BUILD_TREES, WC_SCEN_LAND_GEN,
WC_BUILD_TOOLBAR,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
_build_trees_widgets,
BuildTreesWndProc
@@ -356,7 +371,7 @@ static const Widget _build_trees_scen_widgets[] = {
static const WindowDesc _build_trees_scen_desc = {
-1, -1, 143, 184,
WC_BUILD_TREES,0,
WC_SCEN_BUILD_TREES,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
_build_trees_scen_widgets,
BuildTreesWndProc
@@ -365,6 +380,7 @@ static const WindowDesc _build_trees_scen_desc = {
void ShowBuildTreesToolbar()
{
DeleteWindowById(WC_BUILD_TOOLBAR, 0);
AllocateWindowDesc(&_build_trees_desc);
}
@@ -373,7 +389,7 @@ void ShowBuildTreesScenToolbar()
AllocateWindowDescFront(&_build_trees_scen_desc, 0);
}
static uint32 _errmsg_decode_params[20];
static uint32 _errmsg_decode_params[10];
static StringID _errmsg_message_1, _errmsg_message_2;
static uint _errmsg_duration;
@@ -412,7 +428,7 @@ static void ErrmsgWndProc(Window *w, WindowEvent *e)
_errmsg_message_1,
238);
} else {
Player *p = DEREF_PLAYER(GetDParamX(_errmsg_decode_params,2));
Player *p = DEREF_PLAYER(GET_DPARAMX8(_errmsg_decode_params,2));
DrawPlayerFace(p->face, p->player_color, 2, 16);
DrawStringMultiCenter(
@@ -475,7 +491,7 @@ void ShowErrorMessage(StringID msg_1, StringID msg_2, int x, int y)
if (!_errmsg_duration)
return;
if (_errmsg_message_1 != STR_013B_OWNED_BY || GetDParamX(_errmsg_decode_params,2) >= 8) {
if (_errmsg_message_1 != STR_013B_OWNED_BY || GET_DPARAMX8(_errmsg_decode_params,2) >= 8) {
if ( (x|y) != 0) {
pt = RemapCoords2(x, y);
@@ -521,7 +537,7 @@ void ShowEstimatedCostOrIncome(int32 cost, int x, int y)
cost = -cost;
msg = STR_0807_ESTIMATED_INCOME;
}
SetDParam(0, cost);
SET_DPARAM32(0, cost);
ShowErrorMessage(-1, msg, x, y);
}
@@ -535,7 +551,7 @@ void ShowCostOrIncomeAnimation(int x, int y, int z, int32 cost)
cost = -cost;
msg = STR_0803_INCOME;
}
SetDParam(0, cost);
SET_DPARAM32(0, cost);
AddTextEffect(msg, pt.x, pt.y, 0x250);
}
@@ -643,12 +659,12 @@ static void DrawStationCoverageText(const uint *accepts, int str_x, int str_y, u
DrawStringMultiLine(str_x, str_y, STR_SPEC_USERSTRING, 144);
}
void DrawStationCoverageAreaText(int sx, int sy, uint mask, int rad) {
void DrawStationCoverageAreaText(int sx, int sy, uint mask) {
int x = _thd.pos.x;
int y = _thd.pos.y;
uint accepts[NUM_CARGO];
if (x != -1) {
GetAcceptanceAroundTiles(accepts, TILE_FROM_XY(x,y), _thd.new_size.x >> 4, _thd.new_size.y >> 4, rad);
GetAcceptanceAroundTiles(accepts, TILE_FROM_XY(x,y), _thd.new_size.x >> 4, _thd.new_size.y >> 4);
DrawStationCoverageText(accepts, sx, sy, mask);
}
}
@@ -675,12 +691,7 @@ void UnclickSomeWindowButtons(Window *w, uint32 mask)
void UnclickWindowButtons(Window *w)
{
bool sticky = false;
if (w->desc_flags & WDF_STICKY_BUTTON && HASBIT(w->click_state, 2)) sticky = true;
UnclickSomeWindowButtons(w, (uint32)-1);
if (sticky) SETBIT(w->click_state, 2);
}
@@ -772,12 +783,11 @@ void DrawEditBox(Window *w, int wid)
static void QueryStringWndProc(Window *w, WindowEvent *e)
{
static bool closed = false;
switch(e->event) {
case WE_PAINT: {
// int x;
SetDParam(0, WP(w,querystr_d).caption);
SET_DPARAM16(0, WP(w,querystr_d).caption);
DrawWindowWidgets(w);
DrawEditBox(w, 5);
@@ -788,20 +798,12 @@ static void QueryStringWndProc(Window *w, WindowEvent *e)
case 3: DeleteWindow(w); break;
case 4:
press_ok:;
if (str_eq(WP(w,querystr_d).buf, WP(w,querystr_d).buf + MAX_QUERYSTR_LEN) && !_do_edit_on_text_even_when_no_change_to_edit_box) {
if (str_eq(WP(w,querystr_d).buf, WP(w,querystr_d).buf + MAX_QUERYSTR_LEN)) {
DeleteWindow(w);
} else {
Window *parent = FindWindowById(WP(w,querystr_d).wnd_class, WP(w,querystr_d).wnd_num);
byte *buf = WP(w,querystr_d).buf;
WindowClass wnd_class = WP(w,querystr_d).wnd_class;
WindowNumber wnd_num = WP(w,querystr_d).wnd_num;
Window *parent;
// Mask the edit-box as closed, so we don't send out a CANCEL
closed = true;
DeleteWindow(w);
parent = FindWindowById(wnd_class, wnd_num);
if (parent != NULL) {
WindowEvent e;
e.event = WE_ON_EDIT_TEXT;
@@ -831,20 +833,7 @@ press_ok:;
}
} break;
case WE_CREATE:
closed = false;
break;
case WE_DESTROY:
// If the window is not closed yet, it means it still needs to send a CANCEL
if (!closed) {
Window *parent = FindWindowById(WP(w,querystr_d).wnd_class, WP(w,querystr_d).wnd_num);
if (parent != NULL) {
WindowEvent e;
e.event = WE_ON_EDIT_TEXT_CANCEL;
parent->wndproc(parent, &e);
}
}
_query_string_active = false;
break;
}
@@ -884,13 +873,6 @@ void ShowQueryString(StringID str, StringID caption, int maxlen, int maxwidth, b
} else {
GetString(_orig_edit_str_buf, str);
}
if (maxlen & 0x1000) {
_do_edit_on_text_even_when_no_change_to_edit_box = true;
maxlen &= ~0x1000;
} else
_do_edit_on_text_even_when_no_change_to_edit_box = false;
_orig_edit_str_buf[maxlen] = 0;
memcpy(_edit_str_buf, _orig_edit_str_buf, MAX_QUERYSTR_LEN);
@@ -912,8 +894,8 @@ void ShowQueryString(StringID str, StringID caption, int maxlen, int maxwidth, b
static const Widget _load_dialog_1_widgets[] = {
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 256, 0, 13, STR_4001_LOAD_GAME, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PUSHTXTBTN, 14, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, 14, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, 14, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_TIP},
{ WWT_PUSHTXTBTN, 14, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_TIP},
{ WWT_IMGBTN, 14, 0, 256, 26, 47, 0x0, STR_NULL},
{ WWT_IMGBTN, 14, 0, 256, 48, 293, 0x0, STR_NULL},
{ WWT_6, 14, 2, 243, 50, 291, 0x0, STR_400A_LIST_OF_DRIVES_DIRECTORIES},
@@ -924,8 +906,8 @@ static const Widget _load_dialog_1_widgets[] = {
static const Widget _load_dialog_2_widgets[] = {
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 256, 0, 13, STR_0298_LOAD_SCENARIO, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PUSHTXTBTN, 14, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, 14, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, 14, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_TIP},
{ WWT_PUSHTXTBTN, 14, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_TIP},
{ WWT_IMGBTN, 14, 0, 256, 26, 47, 0x0, STR_NULL},
{ WWT_IMGBTN, 14, 0, 256, 48, 293, 0x0, STR_NULL},
{ WWT_6, 14, 2, 243, 50, 291, 0x0, STR_400A_LIST_OF_DRIVES_DIRECTORIES},
@@ -936,8 +918,8 @@ static const Widget _load_dialog_2_widgets[] = {
static const Widget _save_dialog_widgets[] = {
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 256, 0, 13, STR_4000_SAVE_GAME, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PUSHTXTBTN, 14, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, 14, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, 14, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_TIP},
{ WWT_PUSHTXTBTN, 14, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_TIP},
{ WWT_IMGBTN, 14, 0, 256, 26, 47, 0x0, STR_NULL},
{ WWT_IMGBTN, 14, 0, 256, 48, 291, 0x0, STR_NULL},
{ WWT_6, 14, 2, 243, 50, 289, 0x0, STR_400A_LIST_OF_DRIVES_DIRECTORIES},
@@ -952,8 +934,8 @@ static const Widget _save_dialog_widgets[] = {
static const Widget _save_dialog_scen_widgets[] = {
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 256, 0, 13, STR_0299_SAVE_SCENARIO, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PUSHTXTBTN, 14, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, 14, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, 14, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_TIP},
{ WWT_PUSHTXTBTN, 14, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_TIP},
{ WWT_IMGBTN, 14, 0, 256, 26, 47, 0x0, STR_NULL},
{ WWT_IMGBTN, 14, 0, 256, 48, 291, 0x0, STR_NULL},
{ WWT_6, 14, 2, 243, 50, 289, 0x0, STR_400A_LIST_OF_DRIVES_DIRECTORIES},
@@ -966,7 +948,11 @@ static const Widget _save_dialog_scen_widgets[] = {
};
void BuildFileList()
static FiosItem *_fios_list;
static int _fios_num;
static int _saveload_mode;
static void BuildFileList()
{
FiosFreeSavegameList();
if(_saveload_mode==SLD_NEW_GAME || _saveload_mode==SLD_LOAD_SCENARIO || _saveload_mode==SLD_SAVE_SCENARIO)
@@ -986,6 +972,9 @@ static void DrawFiosTexts()
DoDrawString(path, 2, 27, 16);
}
/* FIOS_TYPE_FILE, FIOS_TYPE_OLDFILE etc. different colours */
static const byte _fios_colors[] = {13, 9, 9, 6, 5, 6, 5};
#if defined(_WIN32)
extern int CDECL compare_FiosItems (const void *a, const void *b);
#else
@@ -1018,22 +1007,6 @@ static void MakeSortedSaveGameList()
qsort(_fios_list + sort_start, s_amount, sizeof(FiosItem), compare_FiosItems);
}
static void GenerateFileName(void)
{
const Player *p;
/* Check if we are not a specatator who wants to generate a name..
Let's use the name of player #0 for now. */
if (_local_player < MAX_PLAYERS)
p = DEREF_PLAYER(_local_player);
else
p = DEREF_PLAYER(0);
SetDParam(0, p->name_1);
SetDParam(1, p->name_2);
SetDParam(2, _date);
GetString(_edit_str_buf, STR_4004);
}
static void SaveLoadDlgWndProc(Window *w, WindowEvent *e)
{
const int list_start = 51;
@@ -1137,17 +1110,13 @@ static void SaveLoadDlgWndProc(Window *w, WindowEvent *e)
FiosDelete(WP(w,querystr_d).buf);
SetWindowDirty(w);
BuildFileList();
if (_saveload_mode == SLD_SAVE_GAME)
GenerateFileName(); /* Reset file name to current date */
} else if (HASBIT(w->click_state, 11)) { /* Save button clicked */
_switch_mode = SM_SAVE;
FiosMakeSavegameName(_file_to_saveload.name, WP(w,querystr_d).buf);
}
break;
case WE_DESTROY:
// pause is only used in single-player, non-editor mode
if(!_networking && (_game_mode != GM_EDITOR))
DoCommandP(0, 0, 0, NULL, CMD_PAUSE);
DoCommandP(0, 0, 0, NULL, CMD_PAUSE);
_query_string_active = false;
FiosFreeSavegameList();
break;
@@ -1212,13 +1181,16 @@ void ShowSaveLoadDialog(int mode)
WP(w,querystr_d).buf = _edit_str_buf;
if (mode == SLD_SAVE_GAME) {
GenerateFileName();
Player *p = &_players[_local_player];
SET_DPARAM16(0, p->name_1);
SET_DPARAM32(1, p->name_2);
SET_DPARAM16(2, _date);
GetString(_edit_str_buf, STR_4004);
} else if (mode == SLD_SAVE_SCENARIO) {
strcpy(_edit_str_buf, "UNNAMED");
}
// pause is only used in single-player, non-editor mode
if(_game_mode != GM_MENU && !_networking && _game_mode != GM_EDITOR)
if (_game_mode != GM_MENU)
DoCommandP(0, 1, 0, NULL, CMD_PAUSE);
BuildFileList();
@@ -1234,8 +1206,8 @@ void RedrawAutosave()
static const Widget _select_scenario_widgets[] = {
{ WWT_TEXTBTN, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 7, 11, 256, 0, 13, STR_400E_SELECT_NEW_GAME_TYPE, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PUSHTXTBTN, 7, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, 7, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, 7, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_TIP},
{ WWT_PUSHTXTBTN, 7, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_TIP},
{ WWT_IMGBTN, 7, 0, 245, 26, 319, 0x0, STR_NULL},
{ WWT_6, 7, 2, 243, 28, 317, 0x0, STR_400F_SELECT_SCENARIO_GREEN_PRE},
{ WWT_SCROLLBAR, 7, 246, 256, 26, 319, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
@@ -1315,7 +1287,7 @@ static void SelectScenarioWndProc(Window *w, WindowEvent *e) {
}
}
void SetFiosType(const byte fiostype)
static void SetFiosType(const byte fiostype)
{
switch (fiostype) {
case FIOS_TYPE_FILE: case FIOS_TYPE_SCENARIO:
@@ -1351,14 +1323,14 @@ void AskForNewGameToStart()
w->vscroll.cap = 27;
}
static int32 ClickMoneyCheat(int32 p1, int32 p2)
int32 ClickMoneyCheat(int32 p1, int32 p2)
{
DoCommandP(0, -10000000, 0, NULL, CMD_MONEY_CHEAT);
return true;
}
// p1 player to set to, p2 is -1 or +1 (down/up)
static int32 ClickChangePlayerCheat(int32 p1, int32 p2)
int32 ClickChangePlayerCheat(int32 p1, int32 p2)
{
while(p1 >= 0 && p1 < MAX_PLAYERS) {
if (_players[p1].is_active) {
@@ -1504,14 +1476,14 @@ static void CheatsWndProc(Window *w, WindowEvent *e)
if (ce->type == CE_BOOL) {
DrawFrameRect(x+20, y+1, x+30+9, y+9, (*(bool*)ce->variable)?6:4, (*(bool*)ce->variable)?0x20:0);
SetDParam(0, *(bool*)ce->variable ? STR_CONFIG_PATCHES_ON : STR_CONFIG_PATCHES_OFF);
SET_DPARAM16(0, *(bool*)ce->variable ? STR_CONFIG_PATCHES_ON : STR_CONFIG_PATCHES_OFF);
} else if (ce->type == CE_CLICK) {
DrawFrameRect(x+20, y+1, x+30+9, y+9, 0, (WP(w,def_d).data_1==i*2+1)?0x20:0x00);
if(i==0)
SetDParam64(0, (int64) 10000000);
SET_DPARAM64(0, (int64) 10000000);
else
SetDParam(0, false);
SET_DPARAM16(0, false);
} else {
DrawFrameRect(x+20, y+1, x+20+9, y+9, 3, clk == i*2+1 ? 0x20 : 0);
@@ -1525,11 +1497,11 @@ static void CheatsWndProc(Window *w, WindowEvent *e)
if(ce->str==STR_CHEAT_SWITCH_CLIMATE)
val += STR_TEMPERATE_LANDSCAPE;
SetDParam(0, val);
SET_DPARAM16(0, val);
// display date for change date cheat
if(ce->str==STR_CHEAT_CHANGE_DATE)
SetDParam(0, _date);
SET_DPARAM16(0, _date);
// draw colored flag for change player cheat
if(ce->str==STR_CHEAT_CHANGE_PLAYER)

View File

@@ -1,6 +1,5 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "window.h"
#include "gui.h"
#include "gfx.h"
@@ -35,32 +34,6 @@ static byte * const _playlists[] = {
msf.custom_2,
};
// Map the order of the song names to the numbers of the midi filenames
static const int midi_idx[] = {
0, // Tycoon DELUXE Theme
2, // Easy Driver
3, // Little Red Diesel
17, // Cruise Control
7, // Don't Walk!
9, // Fell Apart On Me
4, // City Groove
19, // Funk Central
6, // Stoke It
12, // Road Hog
5, // Aliens Ate My Railway
1, // Snarl Up
18, // Stroll On
10, // Can't Get There From Here
8, // Sawyer's Tune
13, // Hold That Train!
21, // Movin' On
15, // Goss Groove
16, // Small Town
14, // Broomer's Oil Rag
20, // Jammit
11 // Hard Drivin'
};
static void SkipToPrevSong()
{
@@ -109,8 +82,7 @@ static void MusicVolumeChanged(byte new_vol)
static void DoPlaySong()
{
char filename[256];
snprintf(filename, sizeof(filename), "%sgm_tt%.2d.gm",
_path.gm_dir, midi_idx[_music_wnd_cursong - 1]);
sprintf(filename, "%sgm_tt%.2d.gm", _path.gm_dir, _music_wnd_cursong - 1);
_music_driver->play_song(filename);
}
@@ -204,13 +176,13 @@ static void MusicTrackSelectionWndProc(Window *w, WindowEvent *e)
DrawStringCentered(92, 15, STR_01EE_TRACK_INDEX, 0);
SetDParam(0, STR_01D5_ALL + msf.playlist);
SET_DPARAM16(0, STR_01D5_ALL + msf.playlist);
DrawStringCentered(340, 15, STR_01EF_PROGRAM, 0);
for(i=1; (uint)i <= NUM_SONGS_AVAILABLE; i++) {
SetDParam(0, i);
SetDParam(2, i);
SetDParam(1, SPECSTR_SONGNAME);
SET_DPARAM16(0, i);
SET_DPARAM16(2, i);
SET_DPARAM16(1, SPECSTR_SONGNAME);
DrawString(4, 23+(i-1)*6, (i < 10) ? STR_01EC_0 : STR_01ED, 0);
}
@@ -223,9 +195,9 @@ static void MusicTrackSelectionWndProc(Window *w, WindowEvent *e)
y = 23;
for(p = _playlists[msf.playlist],i=0; (i=*p) != 0; p++) {
SetDParam(0, i);
SetDParam(2, i);
SetDParam(1, SPECSTR_SONGNAME);
SET_DPARAM16(0, i);
SET_DPARAM16(2, i);
SET_DPARAM16(1, SPECSTR_SONGNAME);
DrawString(252, y, (i < 10) ? STR_01EC_0 : STR_01ED, 0);
y += 6;
}
@@ -287,7 +259,7 @@ static const Widget _music_track_selection_widgets[] = {
{ WWT_PUSHIMGBTN, 14, 186, 245, 76, 83, 0x0, STR_01F6_SELECT_CUSTOM_1_USER_DEFINED},
{ WWT_PUSHIMGBTN, 14, 186, 245, 84, 91, 0x0, STR_01F7_SELECT_CUSTOM_2_USER_DEFINED},
{ WWT_PUSHIMGBTN, 14, 186, 245, 108, 115, 0x0, STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1},
{ WWT_PUSHIMGBTN, 14, 186, 245, 124, 131, 0x0, STR_01F9_SAVE_MUSIC_SETTINGS},
{ WWT_PUSHIMGBTN, 14, 186, 245, 124, 131, 0x0, STR_01F9_SAVE_MUSIC_SETTINGS_TO},
{ WIDGETS_END},
};
@@ -333,7 +305,7 @@ static void MusicWindowWndProc(Window *w, WindowEvent *e)
str = STR_01E3;
if (_song_is_active != 0 && _music_wnd_cursong != 0) {
str = STR_01E4_0;
SetDParam(0, _music_wnd_cursong);
SET_DPARAM8(0, _music_wnd_cursong);
if (_music_wnd_cursong >= 10)
str = STR_01E5;
}
@@ -342,8 +314,8 @@ static void MusicWindowWndProc(Window *w, WindowEvent *e)
str = STR_01E6;
if (_song_is_active != 0 && _music_wnd_cursong != 0) {
str = STR_01E7;
SetDParam(0, SPECSTR_SONGNAME);
SetDParam(1, _music_wnd_cursong);
SET_DPARAM16(0, SPECSTR_SONGNAME);
SET_DPARAM16(1, _music_wnd_cursong);
}
DrawStringCentered(155, 46, str, 0);

1026
namegen.c

File diff suppressed because it is too large Load Diff

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