Merge branch 'master' into jgrpp

# Conflicts:
#	src/fios.h
pull/11/head
Jonathan G Rennison 7 years ago
commit 90cd312428

1
.gitignore vendored

@ -7,6 +7,7 @@ bin/ai/*
bin/baseset/*
!bin/baseset/openttd.grf
!bin/baseset/opntitle.dat
!bin/baseset/orig_extra.grf
!bin/baseset/orig_*.obg
!bin/baseset/orig_*.obs
!bin/baseset/no_sound.obs

@ -44,22 +44,18 @@ PNG_FILES := $(GRF_DIR)/*.png $(GRF_DIR)/rivers/*.png
# Build the GRF.
ifdef GRFCODEC
all: $(BIN_DIR)/openttd.grf $(BIN_DIR)/orig_dos.obg $(BIN_DIR)/orig_dos_de.obg $(BIN_DIR)/orig_win.obg $(BIN_DIR)/orig_dos.obs $(BIN_DIR)/orig_win.obs $(BIN_DIR)/no_sound.obs $(BIN_DIR)/orig_win.obm $(BIN_DIR)/no_music.obm
all: $(BIN_DIR)/openttd.grf $(BIN_DIR)/orig_extra.grf $(BIN_DIR)/orig_dos.obg $(BIN_DIR)/orig_dos_de.obg $(BIN_DIR)/orig_win.obg $(BIN_DIR)/orig_dos.obs $(BIN_DIR)/orig_win.obs $(BIN_DIR)/no_sound.obs $(BIN_DIR)/orig_win.obm $(BIN_DIR)/no_music.obm
else
all:
endif
# Make sure the sprites directory exists.
$(OBJS_DIR)/sprites:
$(Q)-mkdir "$@"
$(OBJS_DIR)/langfiles.tmp: $(LANG_DIR)/*.txt
$(E) '$(STAGE) Collecting baseset translations'
$(Q) cat $^ > $@
$(BIN_DIR)/%.obg: $(BASESET_DIR)/%.obg $(BIN_DIR)/openttd.grf $(OBJS_DIR)/langfiles.tmp $(BASESET_DIR)/translations.awk
$(BIN_DIR)/%.obg: $(BASESET_DIR)/%.obg $(BIN_DIR)/orig_extra.grf $(OBJS_DIR)/langfiles.tmp $(BASESET_DIR)/translations.awk
$(E) '$(STAGE) Updating $(notdir $@)'
$(Q) sed 's/^OPENTTD.GRF = *[0-9a-f]*$$/OPENTTD.GRF = '`$(MD5SUM) $(BIN_DIR)/openttd.grf | sed 's@ .*@@'`'/' $< > $@.tmp
$(Q) sed 's/^ORIG_EXTRA.GRF = *[0-9a-f]*$$/ORIG_EXTRA.GRF = '`$(MD5SUM) $(BIN_DIR)/orig_extra.grf | sed 's@ .*@@'`'/' $< > $@.tmp
$(Q) awk -v langfiles='$(OBJS_DIR)/langfiles.tmp' -f $(BASESET_DIR)/translations.awk $@.tmp >$@
$(Q) rm $@.tmp
@ -72,8 +68,9 @@ $(BIN_DIR)/%.obm: $(BASESET_DIR)/%.obm $(OBJS_DIR)/langfiles.tmp $(BASESET_DIR)/
$(Q) awk -v langfiles='$(OBJS_DIR)/langfiles.tmp' -f $(BASESET_DIR)/translations.awk $< >$@
# Compile extra grf
$(BIN_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(OBJS_DIR)/sprites $(GRF_DIR)/assemble_nfo.awk
$(BIN_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(GRF_DIR)/assemble_nfo.awk
$(E) '$(STAGE) Assembling openttd.nfo'
$(Q)-mkdir -p $(OBJS_DIR)/sprites
$(Q)-cp $(PNG_FILES) $(OBJS_DIR)/sprites 2> /dev/null
$(Q) awk -f $(GRF_DIR)/assemble_nfo.awk $(GRF_DIR)/openttd.nfo > $(OBJS_DIR)/sprites/openttd.nfo
$(Q) $(NFORENUM) -s $(OBJS_DIR)/sprites/openttd.nfo
@ -81,6 +78,17 @@ $(BIN_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(OBJS_DIR)/sprites $(GRF_DIR)
$(Q) $(GRFCODEC) -n -s -e -p1 $(OBJS_DIR)/openttd.grf
$(Q)cp $(OBJS_DIR)/openttd.grf $(BIN_DIR)/openttd.grf
# The copy operation of PNG_FILES is duplicated from the target 'openttd.grf', thus those targets may not run in parallel.
$(BIN_DIR)/orig_extra.grf: $(PNG_FILES) $(NFO_FILES) $(GRF_DIR)/assemble_nfo.awk | $(BIN_DIR)/openttd.grf
$(E) '$(STAGE) Assembling orig_extra.nfo'
$(Q)-mkdir -p $(OBJS_DIR)/sprites
$(Q)-cp $(PNG_FILES) $(OBJS_DIR)/sprites 2> /dev/null
$(Q) awk -f $(GRF_DIR)/assemble_nfo.awk $(GRF_DIR)/orig_extra.nfo > $(OBJS_DIR)/sprites/orig_extra.nfo
$(Q) $(NFORENUM) -s $(OBJS_DIR)/sprites/orig_extra.nfo
$(E) '$(STAGE) Compiling orig_extra.grf'
$(Q) $(GRFCODEC) -n -s -e -p1 $(OBJS_DIR)/orig_extra.grf
$(Q)cp $(OBJS_DIR)/orig_extra.grf $(BIN_DIR)/orig_extra.grf
# Clean up temporary files.
clean:
$(Q)rm -f *.bak *.grf

@ -153,7 +153,7 @@ mrproper:
distclean: mrproper
maintainer-clean: distclean
$(Q)rm -f $(BIN_DIR)/baseset/openttd.grf $(BIN_DIR)/baseset/*.obg $(BIN_DIR)/baseset/*.obs $(BIN_DIR)/baseset/*.obm
$(Q)rm -f $(BIN_DIR)/baseset/openttd.grf $(BIN_DIR)/baseset/orig_extra.grf $(BIN_DIR)/baseset/*.obg $(BIN_DIR)/baseset/*.obs $(BIN_DIR)/baseset/*.obm
depend:
@for dir in $(SRC_DIRS); do \

Binary file not shown.

@ -63,21 +63,21 @@ description.zh_CN = 运输大亨DOS豪华版原版图形包.
description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版的圖形。
[files]
base = TRG1.GRF
logos = TRGI.GRF
arctic = TRGC.GRF
tropical = TRGH.GRF
toyland = TRGT.GRF
extra = OPENTTD.GRF
base = TRG1.GRF
logos = TRGI.GRF
arctic = TRGC.GRF
tropical = TRGH.GRF
toyland = TRGT.GRF
extra = ORIG_EXTRA.GRF
[md5s]
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
TRGC.GRF = ed446637e034104c5559b32c18afe78d
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6
OPENTTD.GRF = 505d96061556d3bb5cec6234096ec5bc
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
TRGC.GRF = ed446637e034104c5559b32c18afe78d
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6
ORIG_EXTRA.GRF = 73b921a42814c47a84945b7e9add5d9f
[origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
OPENTTD.GRF = This file was part of your OpenTTD installation.
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
ORIG_EXTRA.GRF = This file was part of your OpenTTD installation.

@ -62,21 +62,21 @@ description.zh_CN = 运输大亨DOS豪华德语版原版图形包.
description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版 (德國版) 的圖形。
[files]
base = TRG1.GRF
logos = TRGI.GRF
arctic = TRGC.GRF
tropical = TRGH.GRF
toyland = TRGT.GRF
extra = OPENTTD.GRF
base = TRG1.GRF
logos = TRGI.GRF
arctic = TRGC.GRF
tropical = TRGH.GRF
toyland = TRGT.GRF
extra = ORIG_EXTRA.GRF
[md5s]
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
TRGC.GRF = ed446637e034104c5559b32c18afe78d
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
TRGT.GRF = fcde1d7e8a74197d72a62695884b909e
OPENTTD.GRF = 505d96061556d3bb5cec6234096ec5bc
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
TRGC.GRF = ed446637e034104c5559b32c18afe78d
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
TRGT.GRF = fcde1d7e8a74197d72a62695884b909e
ORIG_EXTRA.GRF = 73b921a42814c47a84945b7e9add5d9f
[origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
OPENTTD.GRF = This file was part of your OpenTTD installation.
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
ORIG_EXTRA.GRF = This file was part of your OpenTTD installation.

Binary file not shown.

@ -63,21 +63,21 @@ description.zh_CN = 运输大亨Windows豪华版原版图形包.
description.zh_TW = 原版 Transport Tycoon Deluxe Windows 版的圖形。
[files]
base = TRG1R.GRF
logos = TRGIR.GRF
arctic = TRGCR.GRF
tropical = TRGHR.GRF
toyland = TRGTR.GRF
extra = OPENTTD.GRF
base = TRG1R.GRF
logos = TRGIR.GRF
arctic = TRGCR.GRF
tropical = TRGHR.GRF
toyland = TRGTR.GRF
extra = ORIG_EXTRA.GRF
[md5s]
TRG1R.GRF = b04ce593d8c5016e07473a743d7d3358
TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32
TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b
TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1
TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8
OPENTTD.GRF = 505d96061556d3bb5cec6234096ec5bc
TRG1R.GRF = b04ce593d8c5016e07473a743d7d3358
TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32
TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b
TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1
TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8
ORIG_EXTRA.GRF = 73b921a42814c47a84945b7e9add5d9f
[origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
OPENTTD.GRF = This file was part of your OpenTTD installation.
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
ORIG_EXTRA.GRF = This file was part of your OpenTTD installation.

@ -1913,23 +1913,6 @@ EOL
CFLAGS="$OSX_SYSROOT $CFLAGS"
LDFLAGS="$OSX_LD_SYSROOT $LDFLAGS"
fi
if [ "$enable_universal" = "0" ] && [ $cc_version -gt 400 ]; then
# Only set the min version when not doing an universal build.
# Universal builds set the version elsewhere.
if [ "$cpu_type" = "64" ]; then
CFLAGS="$CFLAGS -mmacosx-version-min=10.5"
else
gcc_cpu=`$cc_host -dumpmachine`
if [ "`echo $gcc_cpu | cut -c 1-3`" = "ppc" -o "`echo $gcc_cpu | cut -c 1-7`" = "powerpc" ]; then
# PowerPC build can run on 10.3
CFLAGS="$CFLAGS -mmacosx-version-min=10.3"
else
# Intel is only available starting from 10.4
CFLAGS="$CFLAGS -mmacosx-version-min=10.4"
fi
fi
fi
fi
if [ "$os" = "BEOS" ] || [ "$os" = "HAIKU" ]; then

@ -11,21 +11,21 @@ palette = DOS
!! description STR_BASEGRAPHICS_DOS_DESCRIPTION
[files]
base = TRG1.GRF
logos = TRGI.GRF
arctic = TRGC.GRF
tropical = TRGH.GRF
toyland = TRGT.GRF
extra = OPENTTD.GRF
base = TRG1.GRF
logos = TRGI.GRF
arctic = TRGC.GRF
tropical = TRGH.GRF
toyland = TRGT.GRF
extra = ORIG_EXTRA.GRF
[md5s]
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
TRGC.GRF = ed446637e034104c5559b32c18afe78d
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6
OPENTTD.GRF =
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
TRGC.GRF = ed446637e034104c5559b32c18afe78d
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6
ORIG_EXTRA.GRF =
[origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
OPENTTD.GRF = This file was part of your OpenTTD installation.
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
ORIG_EXTRA.GRF = This file was part of your OpenTTD installation.

@ -11,21 +11,21 @@ palette = DOS
!! description STR_BASEGRAPHICS_DOS_DE_DESCRIPTION
[files]
base = TRG1.GRF
logos = TRGI.GRF
arctic = TRGC.GRF
tropical = TRGH.GRF
toyland = TRGT.GRF
extra = OPENTTD.GRF
base = TRG1.GRF
logos = TRGI.GRF
arctic = TRGC.GRF
tropical = TRGH.GRF
toyland = TRGT.GRF
extra = ORIG_EXTRA.GRF
[md5s]
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
TRGC.GRF = ed446637e034104c5559b32c18afe78d
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
TRGT.GRF = fcde1d7e8a74197d72a62695884b909e
OPENTTD.GRF =
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
TRGC.GRF = ed446637e034104c5559b32c18afe78d
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
TRGT.GRF = fcde1d7e8a74197d72a62695884b909e
ORIG_EXTRA.GRF =
[origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
OPENTTD.GRF = This file was part of your OpenTTD installation.
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
ORIG_EXTRA.GRF = This file was part of your OpenTTD installation.

@ -11,21 +11,21 @@ palette = Windows
!! description STR_BASEGRAPHICS_WIN_DESCRIPTION
[files]
base = TRG1R.GRF
logos = TRGIR.GRF
arctic = TRGCR.GRF
tropical = TRGHR.GRF
toyland = TRGTR.GRF
extra = OPENTTD.GRF
base = TRG1R.GRF
logos = TRGIR.GRF
arctic = TRGCR.GRF
tropical = TRGHR.GRF
toyland = TRGTR.GRF
extra = ORIG_EXTRA.GRF
[md5s]
TRG1R.GRF = b04ce593d8c5016e07473a743d7d3358
TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32
TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b
TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1
TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8
OPENTTD.GRF =
TRG1R.GRF = b04ce593d8c5016e07473a743d7d3358
TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32
TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b
TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1
TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8
ORIG_EXTRA.GRF =
[origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
OPENTTD.GRF = This file was part of your OpenTTD installation.
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
ORIG_EXTRA.GRF = This file was part of your OpenTTD installation.

@ -6,7 +6,7 @@
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
//
-1 * 0 0C "Canal graphics by George / PaulC"
-1 * 0 0C "Canal graphics by George"
-1 * 3 05 08 41
// Canal slopes
-1 sprites/canal_locks.png 8bpp 66 8 64 23 -31 0 normal
@ -77,95 +77,3 @@
-1 sprites/canals.png 8bpp 446 10 24 16 -11 -6 normal
// Canal icon
-1 sprites/canal_locks.png 8bpp 50 232 20 20 0 0 normal
// Differentiation for the climates starts here
// Canal edges (arctic snowy)
-1 * 4 01 05 01 \b12
-1 sprites/canals.png 8bpp 30 40 45 22 -11 -1 normal
-1 sprites/canals.png 8bpp 94 40 41 21 -8 10 normal
-1 sprites/canals.png 8bpp 142 40 42 21 -31 10 normal
-1 sprites/canals.png 8bpp 190 40 43 22 -31 -1 normal
-1 sprites/canals.png 8bpp 238 40 22 22 11 4 normal
-1 sprites/canals.png 8bpp 270 40 24 16 -11 15 normal
-1 sprites/canals.png 8bpp 302 40 23 23 -31 4 normal
-1 sprites/canals.png 8bpp 334 40 24 18 -11 -1 normal
-1 sprites/canals.png 8bpp 366 40 12 11 21 10 normal
-1 sprites/canals.png 8bpp 398 40 19 10 -8 21 normal
-1 sprites/canals.png 8bpp 430 40 11 10 -31 10 normal
-1 sprites/canals.png 8bpp 446 40 24 16 -11 -6 normal
-1 * 7 02 05 10 01 00 00 00
// Canal edges (arctic normal)
-1 * 4 01 05 01 \b12
-1 sprites/canals.png 8bpp 30 70 45 22 -11 -1 normal
-1 sprites/canals.png 8bpp 94 70 41 21 -8 10 normal
-1 sprites/canals.png 8bpp 142 70 42 21 -31 10 normal
-1 sprites/canals.png 8bpp 190 70 43 22 -31 -1 normal
-1 sprites/canals.png 8bpp 238 70 22 22 11 4 normal
-1 sprites/canals.png 8bpp 270 70 24 16 -11 15 normal
-1 sprites/canals.png 8bpp 302 70 23 23 -31 4 normal
-1 sprites/canals.png 8bpp 334 70 24 18 -11 -1 normal
-1 sprites/canals.png 8bpp 366 70 12 11 21 10 normal
-1 sprites/canals.png 8bpp 398 70 19 10 -8 21 normal
-1 sprites/canals.png 8bpp 430 70 11 10 -31 10 normal
-1 sprites/canals.png 8bpp 446 70 24 16 -11 -6 normal
-1 * 7 02 05 11 01 00 00 00
// Choose the right arctic canal edges
-1 * 14 02 05 12 81 81 00 FF 01 10 00 04 04 11 00
-1 * 6 07 83 01 \7! 01 01
-1 * 7 03 05 01 02 00 12 00
// Canal edges (tropic desert)
-1 * 4 01 05 01 \b12
-1 sprites/canals.png 8bpp 30 100 45 22 -11 -1 normal
-1 sprites/canals.png 8bpp 94 100 41 21 -8 10 normal
-1 sprites/canals.png 8bpp 142 100 42 21 -31 10 normal
-1 sprites/canals.png 8bpp 190 100 43 22 -31 -1 normal
-1 sprites/canals.png 8bpp 238 100 22 22 11 4 normal
-1 sprites/canals.png 8bpp 270 100 24 16 -11 15 normal
-1 sprites/canals.png 8bpp 302 100 23 23 -31 4 normal
-1 sprites/canals.png 8bpp 334 100 24 18 -11 -1 normal
-1 sprites/canals.png 8bpp 366 100 12 11 21 10 normal
-1 sprites/canals.png 8bpp 398 100 19 10 -8 21 normal
-1 sprites/canals.png 8bpp 430 100 11 10 -31 10 normal
-1 sprites/canals.png 8bpp 446 100 24 16 -11 -6 normal
-1 * 7 02 05 13 01 00 00 00
// Canal edges (tropic rainforest)
-1 * 4 01 05 01 \b12
-1 sprites/canals.png 8bpp 30 130 45 22 -11 -1 normal
-1 sprites/canals.png 8bpp 94 130 41 21 -8 10 normal
-1 sprites/canals.png 8bpp 142 130 42 21 -31 10 normal
-1 sprites/canals.png 8bpp 190 130 43 22 -31 -1 normal
-1 sprites/canals.png 8bpp 238 130 22 22 11 4 normal
-1 sprites/canals.png 8bpp 270 130 24 16 -11 15 normal
-1 sprites/canals.png 8bpp 302 130 23 23 -31 4 normal
-1 sprites/canals.png 8bpp 334 130 24 18 -11 -1 normal
-1 sprites/canals.png 8bpp 366 130 12 11 21 10 normal
-1 sprites/canals.png 8bpp 398 130 19 10 -8 21 normal
-1 sprites/canals.png 8bpp 430 130 11 10 -31 10 normal
-1 sprites/canals.png 8bpp 446 130 24 16 -11 -6 normal
-1 * 7 02 05 14 01 00 00 00
// Choose the right tropic canal edges
-1 * 14 02 05 15 81 81 00 FF 01 13 00 01 01 14 00
-1 * 6 07 83 01 \7! 02 01
-1 * 7 03 05 01 02 00 15 00
// Canal edges (toyland)
-1 * 4 01 05 01 \b12
-1 sprites/canals.png 8bpp 30 160 45 22 -11 -1 normal
-1 sprites/canals.png 8bpp 94 160 41 21 -8 10 normal
-1 sprites/canals.png 8bpp 142 160 42 21 -31 10 normal
-1 sprites/canals.png 8bpp 190 160 43 22 -31 -1 normal
-1 sprites/canals.png 8bpp 238 160 22 22 11 4 normal
-1 sprites/canals.png 8bpp 270 160 24 16 -11 15 normal
-1 sprites/canals.png 8bpp 302 160 23 23 -31 4 normal
-1 sprites/canals.png 8bpp 334 160 24 18 -11 -1 normal
-1 sprites/canals.png 8bpp 366 160 12 11 21 10 normal
-1 sprites/canals.png 8bpp 398 160 19 10 -8 21 normal
-1 sprites/canals.png 8bpp 430 160 11 10 -31 10 normal
-1 sprites/canals.png 8bpp 446 160 24 16 -11 -6 normal
-1 * 7 02 05 16 01 00 00 00
-1 * 6 07 83 01 \7! 03 01
-1 * 7 03 05 01 02 00 16 00

@ -0,0 +1,101 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
//
-1 * 0 0C "Extra canal graphics by PaulC"
// Differentiation for the climates starts here
// Canal edges (arctic snowy)
-1 * 4 01 05 01 \b12
-1 sprites/canals.png 8bpp 30 40 45 22 -11 -1 normal
-1 sprites/canals.png 8bpp 94 40 41 21 -8 10 normal
-1 sprites/canals.png 8bpp 142 40 42 21 -31 10 normal
-1 sprites/canals.png 8bpp 190 40 43 22 -31 -1 normal
-1 sprites/canals.png 8bpp 238 40 22 22 11 4 normal
-1 sprites/canals.png 8bpp 270 40 24 16 -11 15 normal
-1 sprites/canals.png 8bpp 302 40 23 23 -31 4 normal
-1 sprites/canals.png 8bpp 334 40 24 18 -11 -1 normal
-1 sprites/canals.png 8bpp 366 40 12 11 21 10 normal
-1 sprites/canals.png 8bpp 398 40 19 10 -8 21 normal
-1 sprites/canals.png 8bpp 430 40 11 10 -31 10 normal
-1 sprites/canals.png 8bpp 446 40 24 16 -11 -6 normal
-1 * 7 02 05 10 01 00 00 00
// Canal edges (arctic normal)
-1 * 4 01 05 01 \b12
-1 sprites/canals.png 8bpp 30 70 45 22 -11 -1 normal
-1 sprites/canals.png 8bpp 94 70 41 21 -8 10 normal
-1 sprites/canals.png 8bpp 142 70 42 21 -31 10 normal
-1 sprites/canals.png 8bpp 190 70 43 22 -31 -1 normal
-1 sprites/canals.png 8bpp 238 70 22 22 11 4 normal
-1 sprites/canals.png 8bpp 270 70 24 16 -11 15 normal
-1 sprites/canals.png 8bpp 302 70 23 23 -31 4 normal
-1 sprites/canals.png 8bpp 334 70 24 18 -11 -1 normal
-1 sprites/canals.png 8bpp 366 70 12 11 21 10 normal
-1 sprites/canals.png 8bpp 398 70 19 10 -8 21 normal
-1 sprites/canals.png 8bpp 430 70 11 10 -31 10 normal
-1 sprites/canals.png 8bpp 446 70 24 16 -11 -6 normal
-1 * 7 02 05 11 01 00 00 00
// Choose the right arctic canal edges
-1 * 14 02 05 12 81 81 00 FF 01 10 00 04 04 11 00
-1 * 6 07 83 01 \7! 01 01
-1 * 7 03 05 01 02 00 12 00
// Canal edges (tropic desert)
-1 * 4 01 05 01 \b12
-1 sprites/canals.png 8bpp 30 100 45 22 -11 -1 normal
-1 sprites/canals.png 8bpp 94 100 41 21 -8 10 normal
-1 sprites/canals.png 8bpp 142 100 42 21 -31 10 normal
-1 sprites/canals.png 8bpp 190 100 43 22 -31 -1 normal
-1 sprites/canals.png 8bpp 238 100 22 22 11 4 normal
-1 sprites/canals.png 8bpp 270 100 24 16 -11 15 normal
-1 sprites/canals.png 8bpp 302 100 23 23 -31 4 normal
-1 sprites/canals.png 8bpp 334 100 24 18 -11 -1 normal
-1 sprites/canals.png 8bpp 366 100 12 11 21 10 normal
-1 sprites/canals.png 8bpp 398 100 19 10 -8 21 normal
-1 sprites/canals.png 8bpp 430 100 11 10 -31 10 normal
-1 sprites/canals.png 8bpp 446 100 24 16 -11 -6 normal
-1 * 7 02 05 13 01 00 00 00
// Canal edges (tropic rainforest)
-1 * 4 01 05 01 \b12
-1 sprites/canals.png 8bpp 30 130 45 22 -11 -1 normal
-1 sprites/canals.png 8bpp 94 130 41 21 -8 10 normal
-1 sprites/canals.png 8bpp 142 130 42 21 -31 10 normal
-1 sprites/canals.png 8bpp 190 130 43 22 -31 -1 normal
-1 sprites/canals.png 8bpp 238 130 22 22 11 4 normal
-1 sprites/canals.png 8bpp 270 130 24 16 -11 15 normal
-1 sprites/canals.png 8bpp 302 130 23 23 -31 4 normal
-1 sprites/canals.png 8bpp 334 130 24 18 -11 -1 normal
-1 sprites/canals.png 8bpp 366 130 12 11 21 10 normal
-1 sprites/canals.png 8bpp 398 130 19 10 -8 21 normal
-1 sprites/canals.png 8bpp 430 130 11 10 -31 10 normal
-1 sprites/canals.png 8bpp 446 130 24 16 -11 -6 normal
-1 * 7 02 05 14 01 00 00 00
// Choose the right tropic canal edges
-1 * 14 02 05 15 81 81 00 FF 01 13 00 01 01 14 00
-1 * 6 07 83 01 \7! 02 01
-1 * 7 03 05 01 02 00 15 00
// Canal edges (toyland)
-1 * 4 01 05 01 \b12
-1 sprites/canals.png 8bpp 30 160 45 22 -11 -1 normal
-1 sprites/canals.png 8bpp 94 160 41 21 -8 10 normal
-1 sprites/canals.png 8bpp 142 160 42 21 -31 10 normal
-1 sprites/canals.png 8bpp 190 160 43 22 -31 -1 normal
-1 sprites/canals.png 8bpp 238 160 22 22 11 4 normal
-1 sprites/canals.png 8bpp 270 160 24 16 -11 15 normal
-1 sprites/canals.png 8bpp 302 160 23 23 -31 4 normal
-1 sprites/canals.png 8bpp 334 160 24 18 -11 -1 normal
-1 sprites/canals.png 8bpp 366 160 12 11 21 10 normal
-1 sprites/canals.png 8bpp 398 160 19 10 -8 21 normal
-1 sprites/canals.png 8bpp 430 160 11 10 -31 10 normal
-1 sprites/canals.png 8bpp 446 160 24 16 -11 -6 normal
-1 * 7 02 05 16 01 00 00 00
-1 * 6 07 83 01 \7! 03 01
-1 * 7 03 05 01 02 00 16 00

@ -60,10 +60,11 @@
00
// GRF ID, must start with FF so it gets ignored
-1 * 0 08 08 FF "OTT"
//@@WARNING DISABLE 101
-1 * 0 08 08 FF FF FF FE
// Name of the GRF
"OpenTTD's base graphics " 00
"OpenTTD's default and fallback extra graphics" 00
// Description of the GRF.
"License: GNU General Public License version 2" 0D
@ -86,7 +87,6 @@
#include "canals.nfo"
#include "oneway.nfo"
#include "tramtracks.nfo"
#include "shore.nfo"
#include "sloped_tracks.nfo"
#include "airports.nfo"
#include "roadstops.nfo"
@ -97,11 +97,5 @@
#include "airport_preview.nfo"
#include "chars.nfo"
#include "mono.nfo"
#include "fix_graphics.nfo"
#include "rivers/rapids.nfo"
#include "rivers/temperate.nfo"
#include "rivers/arctic.nfo"
#include "rivers/tropic.nfo"
#include "rivers/toyland.nfo"
#include "tunnel_portals.nfo"
#include "palette.nfo"

@ -0,0 +1,85 @@
// Automatically generated by GRFCODEC. Do not modify!
// (Info version 32)
// Format: spritenum imagefile depth xpos ypos xsize ysize xrel yrel zoom flags
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
//
// Sources for extra graphics to complement the original graphics.
// Checks whether the correct version of OpenTTD is used before
// allowing it to be used.
//
//
// Number of sprites, it is wrong, but GRFcodec automagically gets it right.
//
0 * 4 00 00 00 00
//
// Check whether we are running OTTD or not.
//
-1 * 0 07 9D 04 \7= 01 00 00 00 01
-1 * 0 0B 03 7F FF 80 " is not for TTDPatch. Use ttdpatch(w).grf." 00
//
// Check for OTTD's version number
//
// First step... Variable A1 might not exist. If that's the case it always
// skips. As we do not want to skip out of the whole testing, we skip over
// the real version check.
-1 * 0 07 A1 04 \7= FF FF FF FF 02
// Real version check.
-1 * 0 07 A1 04 \7> \w20304 01 01 03
// If the version check is supported, the string is translateable via OpenTTD
// itself. Use it!.
-1 * 0 0B 03 7F 06 "1.1 (or trunk r20304)" 00
// Some OTTD versions before r11130 did support Action B, so use the English
// phrase there
-1 * 0 0B 03 7F FF "Requires OpenTTD version 1.1 (or trunk r20304) or better." 00
// Final fallback. No Action B support, just skip to the end of the file.
-1 * 0 07 A1 04 \7= FF FF FF FF 00
// We are a DOS paletted NewGRF, so tell OpenTTD that. Then it can actually
// do the right thing. Yay for that feature as that means no duplicate NewGRF!
-1 * 0 14
"C" "INFO"
"B" "PALS" \w1 "D"
00
00
// GRF ID, must start with FF so it gets ignored
//@@WARNING DISABLE 101
-1 * 0 08 08 FF "OTT"
// Name of the GRF
"Original baseset extra graphics" 00
// Description of the GRF.
"License: GNU General Public License version 2" 0D
"Andrew Parkhouse: rivers" 0D
"Addi and PaulC: original graphics fixes" 0D
"OpenTTD developers: other graphics" 00
//
// The real data of the GRF is acquired from several subfiles.
//
#include "shore.nfo"
#include "fix_graphics.nfo"
#include "canals_extra.nfo"
#include "rivers/rapids.nfo"
#include "rivers/temperate.nfo"
#include "rivers/arctic.nfo"
#include "rivers/tropic.nfo"
#include "rivers/toyland.nfo"

@ -408,6 +408,7 @@ Section "Uninstall"
; Baseset files
Delete "$INSTDIR\baseset\opntitle.dat"
Delete "$INSTDIR\baseset\openttd.grf"
Delete "$INSTDIR\baseset\orig_extra.grf"
Delete "$INSTDIR\baseset\orig_win.obg"
Delete "$INSTDIR\baseset\orig_dos.obg"
Delete "$INSTDIR\baseset\orig_dos_de.obg"

@ -81,22 +81,17 @@ extern LoadCheckData _load_check_data;
enum FileSlots {
/**
* Slot used for the GRF scanning and such. This slot cannot be reused
* as it will otherwise cause issues when pressing "rescan directories".
* It can furthermore not be larger than LAST_GRF_SLOT as that complicates
* the testing for "too much NewGRFs".
* Slot used for the GRF scanning and such.
* This slot is used for all temporary accesses to files when scanning/testing files,
* and thus cannot be used for files, which are continuously accessed during a game.
*/
CONFIG_SLOT = 0,
/** Slot for the sound. */
SOUND_SLOT = 1,
/** First slot usable for (New)GRFs used during the game. */
FIRST_GRF_SLOT = 2,
/** Last slot usable for (New)GRFs used during the game. */
LAST_GRF_SLOT = 255,
/** Maximum number of slots. */
MAX_FILE_SLOTS = 256,
/** Maximum number of slots for network game */
MAX_FILE_SLOTS_IN_NETWORK = 63
};
/** Deals with finding savegames */

@ -223,29 +223,46 @@ static void LoadSpriteTables()
InitializeUnicodeGlyphMap();
/*
* Load the base NewGRF with OTTD required graphics as first NewGRF.
* Load the base and extra NewGRF with OTTD required graphics as first NewGRF.
* However, we do not want it to show up in the list of used NewGRFs,
* so we have to manually add it, and then remove it later.
*/
GRFConfig *top = _grfconfig;
GRFConfig *master = new GRFConfig(used_set->files[GFT_EXTRA].filename);
/* Default extra graphics */
GRFConfig *master = new GRFConfig("OPENTTD.GRF");
master->palette |= GRFP_GRF_DOS;
FillGRFDetails(master, false, BASESET_DIR);
ClrBit(master->flags, GCF_INIT_ONLY);
/* Baseset extra graphics */
GRFConfig *extra = new GRFConfig(used_set->files[GFT_EXTRA].filename);
/* We know the palette of the base set, so if the base NewGRF is not
* setting one, use the palette of the base set and not the global
* one which might be the wrong palette for this base NewGRF.
* The value set here might be overridden via action14 later. */
switch (used_set->palette) {
case PAL_DOS: master->palette |= GRFP_GRF_DOS; break;
case PAL_WINDOWS: master->palette |= GRFP_GRF_WINDOWS; break;
case PAL_DOS: extra->palette |= GRFP_GRF_DOS; break;
case PAL_WINDOWS: extra->palette |= GRFP_GRF_WINDOWS; break;
default: break;
}
FillGRFDetails(master, false, BASESET_DIR);
FillGRFDetails(extra, false, BASESET_DIR);
ClrBit(extra->flags, GCF_INIT_ONLY);
ClrBit(master->flags, GCF_INIT_ONLY);
master->next = top;
extra->next = top;
master->next = extra;
_grfconfig = master;
LoadNewGRF(SPR_NEWGRFS_BASE, i);
LoadNewGRF(SPR_NEWGRFS_BASE, i, 2);
uint total_extra_graphics = SPR_NEWGRFS_BASE - SPR_OPENTTD_BASE;
_missing_extra_graphics = GetSpriteCountForSlot(i, SPR_OPENTTD_BASE, SPR_NEWGRFS_BASE);
DEBUG(sprite, 1, "%u extra sprites, %u from baseset, %u from fallback", total_extra_graphics, total_extra_graphics - _missing_extra_graphics, _missing_extra_graphics);
/* The original baseset extra graphics intentionally make use of the fallback graphics.
* Let's say everything which provides less than 500 sprites misses the rest intentionally. */
if (500 + _missing_extra_graphics > total_extra_graphics) _missing_extra_graphics = 0;
_first_user_grf_file_index = i + 1;
_opengfx_grf_file_index = -1;
@ -260,6 +277,7 @@ static void LoadSpriteTables()
}
/* Free and remove the top element. */
delete extra;
delete master;
_grfconfig = top;
}

@ -60,13 +60,21 @@ struct SelectGameWindow : public Window {
virtual void OnInit()
{
bool missing = _current_language->missing >= _settings_client.gui.missing_strings_threshold && !IsReleasedVersion();
this->GetWidget<NWidgetStacked>(WID_SGI_TRANSLATION_SELECTION)->SetDisplayedPlane(missing ? 0 : SZSP_NONE);
bool missing_sprites = _missing_extra_graphics > 0 && !IsReleasedVersion();
this->GetWidget<NWidgetStacked>(WID_SGI_BASESET_SELECTION)->SetDisplayedPlane(missing_sprites ? 0 : SZSP_NONE);
bool missing_lang = _current_language->missing >= _settings_client.gui.missing_strings_threshold && !IsReleasedVersion();
this->GetWidget<NWidgetStacked>(WID_SGI_TRANSLATION_SELECTION)->SetDisplayedPlane(missing_lang ? 0 : SZSP_NONE);
}
virtual void DrawWidget(const Rect &r, int widget) const
{
switch (widget) {
case WID_SGI_BASESET:
SetDParam(0, _missing_extra_graphics);
DrawStringMultiLine(r.left, r.right, r.top, r.bottom, STR_INTRO_BASESET, TC_FROMSTRING, SA_CENTER);
break;
case WID_SGI_TRANSLATION:
SetDParam(0, _current_language->missing);
DrawStringMultiLine(r.left, r.right, r.top, r.bottom, STR_INTRO_TRANSLATION, TC_FROMSTRING, SA_CENTER);
@ -76,20 +84,29 @@ struct SelectGameWindow : public Window {
virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
{
StringID str = 0;
switch (widget) {
case WID_SGI_TRANSLATION: {
case WID_SGI_BASESET:
SetDParam(0, _missing_extra_graphics);
str = STR_INTRO_BASESET;
break;
case WID_SGI_TRANSLATION:
SetDParam(0, _current_language->missing);
int height = GetStringHeight(STR_INTRO_TRANSLATION, size->width);
if (height > 3 * FONT_HEIGHT_NORMAL) {
/* Don't let the window become too high. */
Dimension textdim = GetStringBoundingBox(STR_INTRO_TRANSLATION);
textdim.height *= 3;
textdim.width -= textdim.width / 2;
*size = maxdim(*size, textdim);
} else {
size->height = height + padding.height;
}
str = STR_INTRO_TRANSLATION;
break;
}
if (str != 0) {
int height = GetStringHeight(str, size->width);
if (height > 3 * FONT_HEIGHT_NORMAL) {
/* Don't let the window become too high. */
Dimension textdim = GetStringBoundingBox(str);
textdim.height *= 3;
textdim.width -= textdim.width / 2;
*size = maxdim(*size, textdim);
} else {
size->height = height + padding.height;
}
}
}
@ -199,6 +216,11 @@ static const NWidgetPart _nested_select_game_widgets[] = {
EndContainer(),
NWidget(NWID_SPACER), SetMinimalSize(0, 7),
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_SGI_BASESET_SELECTION),
NWidget(NWID_VERTICAL),
NWidget(WWT_EMPTY, COLOUR_ORANGE, WID_SGI_BASESET), SetMinimalSize(316, 12), SetFill(1, 0), SetPadding(0, 10, 7, 10),
EndContainer(),
EndContainer(),
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_SGI_TRANSLATION_SELECTION),
NWidget(NWID_VERTICAL),
NWidget(WWT_EMPTY, COLOUR_ORANGE, WID_SGI_TRANSLATION), SetMinimalSize(316, 12), SetFill(1, 0), SetPadding(0, 10, 7, 10),

@ -2907,8 +2907,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Poging on 'n on
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} bevat 'n korrupte prent. Korrupte prente sal as 'n rooi vraagteken gewys word (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Bevat veelvoudige Aksie 8 inskrywings (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Lees verby die einde van die pseudo-sprite (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :WHITE}Die huidige basis-grafikastel ontbreek sommige sprites.{}Opdateer die basis-grafikastel.
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Die huidige basis-grafikastel ontbreek sommige sprites.{}Opdateer die basis-grafikastel.{}Aangesien jy 'n {YELLOW}ontwikkelingsweergawe van OpenTTD{WHITE} het, mag jy dalk 'n {YELLOW}ontwikkelingsweergawe{WHITE} van die basis-grafikastel benodig{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Aangevraagde GRF hulpbronne is nie beskikbaar nie (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} was gedeaktiveer deur {2:STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Ongeldige/onbekende sprite uitleg formaat (sprite {3:NUM})

@ -2524,7 +2524,6 @@ STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :تم تصميم
STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :العديد من NewGRF تم تحميلها
STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :تحميل {1:STRING}كملف ثابت مع NewGRF {STRING}قد يتسبب بمشكلة توافق.
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} يحتوي على خصائص غير صالحة. جميع الخصائص الغير صالحة سوف يشار لها بعلامة استفهام حمراء.
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}ملف الرسوم المستخدم حاليا يفتقد لبعض الرسوم الاساسية.{}الرجاء حدث ملف الرسوم.
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING}تم تعطيلة بواسطة{STRING}
# NewGRF related 'general' warnings

@ -2786,8 +2786,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Identifikazio b
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} sprite baliogabea dauka. Sprite baliogabeak galdera ikur gorria bezala ikusiko dira (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Action 8 sarrera asko ditu (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Pseudo spritea baino hurrunago irakurri (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Aukeratuta daukazun oinarrizko grafiko paketean "sprite" batzuk falta dira.{}Mesedez eguneratu oinarrizko grafiko paketea
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Erabiltzen ari den grafiko baseari sprite batzuk falta zaizkio.{}Mesedez zure grafiko basea eguneratu ezazu.{}OpenTTD-ren {YELLOW}garapen bertsio bat erabiltzen ari zarenez{WHITE}, grafiko basearen {YELLOW}garapen bertsio bat behar izango duzu{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Eskatutako GRFa ez dago eskuragarri (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} desgaitua izan da {STRING}(en)gatik
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Grafiko deseinu formatu ezezaguna/baliogabea (sprite {3:NUM})

@ -3239,8 +3239,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Спроба в
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} утрымлiвае пашкоджаны спрайт. Усе пашкоджаныя спрайты будуць паказаны чырвоным знакам пытаньня (?).
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Утрымлiвае некалькі блёкаў «Action 8» (спрайт {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Чытаньне па-за канцом псэўда-спрайту (спрайт {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}У бягучым наборы базавай ґрафікі адсутнічаюць выявы некаторых аб'ектаў.{}Калі ласка, абнавіце модуль базавай ґрафікі.
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}У выкарыстаным наборы базавай ґрафікі адсутнічаюць некаторыя малюнкі.{}Калі ласка, абнавіце набор малюнкаў.{}Вам можа спатрэбіцца {YELLOW}тэставая вэрсія ґрафічнага набору{WHITE}, таму што ў вас {YELLOW}тэставая вэрсія OpenTTD{WHITE}.
STR_NEWGRF_ERROR_GRM_FAILED :Запытаныя рэсурсы GRF недаступныя (спрайт {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} быў адключаны з-за {2:STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Недапушчальны/невядомы фармат размяшчэньня спрайтаў (спрайт {3:NUM})

@ -2907,8 +2907,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Tentativa de us
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} contém um sprite corrupto. Todos os sprites corruptos serão exibidos como um "?" vermelho
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contém multiplas entradas de Ação 8 (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Leitura após o final do pseudo-sprite (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Estão faltando alguns sprites na base de gráficos em uso.{}Por favor atualize a base de gráficos
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}O pacote de gráficos base atuais está faltando alguns sprites.{}Favor atualizar o pacote de gráficos base.{}Já que você está usando um {YELLOW}snapshot em desenvolvimento do OpenTTD{WHITE}, você também precisa do {YELLOW}Snapshot do pacote de gráficos base em desenvolvimento{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Recursos GRF requeridos indisponíveis (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} foi desativado por {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Formato de layout de sprite inválido/desconhecido (sprite {3:NUM})

@ -2838,8 +2838,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Опит за
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} съдържа повреден обект. Вскички повредени обекти ще бъдат показани като червена въпросителна (?).
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contains multiple Action 8 entries (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Read past end of pseudo-sprite (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Текущите основни графики имат празни картинки.{}Моля обновете си основните графики.
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Текущо използвания графичен сет има липсващи спрайтове.{}Моля обновете графичния сет.{}Тъй като играете {YELLOW}версия на OpenTTD в процес на разработка{WHITE}, може да се нуждаете и от {YELLOW}версията на графичния сет, която е в разработка{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Изискваните GRF resources не са на разположение (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} беше изключено от {2:STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Invalid/unknown sprite layout format (sprite {3:NUM})

@ -1762,6 +1762,7 @@ STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Comprova
STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Mostra els paràmetres de les IA/Script de la partida
STR_INTRO_TOOLTIP_QUIT :{BLACK}Surt d'OpenTTD
STR_INTRO_BASESET :{WHITE}Al joc de gràfics base seleccionat li falten {NUM} sprite{P "" s}.{}Si us plau, comproveu-ne si hi ha actualitzacions disponibles.
STR_INTRO_TRANSLATION :{BLACK}A aquesta traducció li falten {NUM} caden{P a es}. Si us plau ajuda a fer millor OpenTTD unint-te com a traductor. Veure readme.txt per més detalls.
# Quit window
@ -2908,8 +2909,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Intent d'utilit
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} conté un sprite corrupte. Tots els sprites corruptes seran mostrats amb un interrogant vermell (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Conté múltiples entrades d'acció 8 (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :S'ha llegit després del final d'un pseudo-sprite (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Al joc de gràfics base establert actualment li falten un nombre de sprites.{}Si us plau, actualitzeu el joc de gràfics base.
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Als gràfics base actualment utilitzats els hi falta un nombre de sprites.{}Si us plau, actualitzeu el conjunt de gràfics base.{}Com que esteu jugant amb una {YELLOW}versió de desenvolupament de l'OpenTTD{WHITE}, pot ser que necessiteu una {YELLOW}versió de desenvolupament dels gràfics base{WHITE}.
STR_NEWGRF_ERROR_GRM_FAILED :Els recursos GRF demanats no estan disponibles (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} ha estat desactivat per {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Format de disposició de sprite no vàlid o desconegut (sprite {3:NUM}).

@ -3003,8 +3003,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Pokušaj koriš
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} sadrži neispravan sprite. Svi neispravni grafički znakovi bit će pokazani kao crveni upitnik (?).
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Sadrži višestruke unose za Action 8 (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Pročitaj nakon kraja od pseudo-sprite (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Baznom grafičkom setu u uporabi nedostaju neki spriteovi.{}Ažurirajte bazni grafički set
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Trenutno korištenom osnovnom grafičkom setu nedostaju pojedini crteži.{}Molimo da nadogradite osnovni grafički set.{}Pošto igrate {YELLOW}razvojnu inačicu OpenTTD-a{WHITE}, možda će vam trebati i {YELLOW}razvojna inačica osnovnog grafičkog seta{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Zatraženi GRF resursi nisu dostupni (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} je isključen od strane {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Pogrešan/nepoznat format raspored sprite-a (sprite {3:NUM})

@ -2999,8 +2999,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Pokus o použit
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} obsahuje poškozený sprite. Všechny takové se zobrazí jako červený otazník (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Obsahuje vícero Akce 8 záznamů (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Čtení konce pseudo-spritu (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Právě používanému základnímu grafickému setu chybí obrázky.{}Prosím, updatujte ho
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Aktuálnímu grafickému setu chybí nějaké části.{}Aktualizuj prosím grafický set.{}Pokud hraješ{YELLOW}vývojovou verzi OpenTTD{WHITE}, možná potřebuješ {YELLOW}vývojovou verzi základních grafik{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Požadované zdroje GRF nejsou dostupné (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} byla vypnuta {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Neplatný/neznámý sprite layout formát (sprite {3:NUM})

@ -2907,8 +2907,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Forsøg på at
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} indeholder en ødelagt sprite. Alle ødelagte sprites vil blive vist som et rødt spørgsmålstegn (?).
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Indeholder adskillige handling 8 indgange (grafikelement {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Læs forbi slutningen af pseudo-grafikelement (grafikelement {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Det brugte basis grafiksæt mangler en række elementer.{}Opdater venligst grafiksættet.
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Den grafikpakke som bruges er ufuldstændig.{}Opdater venligst grafikpakken.{}eftersom du spiller et{YELLOW} development snapshot of OpenTTD{WHITE},får du måske også brug for er{YELLOW}development snapshot of the base graphics{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :De ønskede GRF ressourcer er ikke tilgængelige (grafikelement {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} blev deaktiveret af {2:STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Ugyldigt / ukendt grafikelement layoutformat (grafikelement {3:NUM})

@ -2906,8 +2906,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Poging om ongel
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} bevat een ongeldige afbeelding. Alle ongeldige afbeeldingen worden getoond als een rood vraagteken (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Bevat meerdere acties 8 (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Voorbij het einde van pseudo-sprite gelezen (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}De huidige basis graphics-set mist een aantal sprites..{}Werk de graphics-set bij aub
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}De momenteel gebruikte basis graphics set mist een aantal sprites.{} Werk de ingestelde basis graphics bij.{} Aangezien u een {YELLOW} ontwikkeling momentopname van OpenTTD{WHITE} speelt, heeft u ook een {YELLOW} ontwikkeling snapshot van de basis graphics set{WHITE} nodig
STR_NEWGRF_ERROR_GRM_FAILED :Gevraagde GRF middelen niet beschikbaar (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} is uitgeschakeld door {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Ongeldig/onbekend sprite lay-out-formaat (sprite {3:NUM})

@ -1903,6 +1903,7 @@ STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Check fo
STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Display AI/Game script settings
STR_INTRO_TOOLTIP_QUIT :{BLACK}Exit 'OpenTTD'
STR_INTRO_BASESET :{BLACK}The currently selected base graphics set is missing {NUM} sprite{P "" s}. Please check for updates for the baseset.
STR_INTRO_TRANSLATION :{BLACK}This translation misses {NUM} string{P "" s}. Please help make OpenTTD better by signing up as translator. See readme.txt for details.
# Quit window
@ -3283,8 +3284,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Attempt to use
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{RAW_STRING} contains a corrupt sprite. All corrupt sprites will be shown as a red question mark (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contains multiple Action 8 entries (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Read past end of pseudo-sprite (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}The currently used base graphics set is missing a number of sprites.{}Please update the base graphics set
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}The currently used base graphics set is missing a number of sprites.{}Please update the base graphics set.{}Since you are playing a {YELLOW}development snapshot of OpenTTD{WHITE}, you might also need a {YELLOW}development snapshot of the base graphics{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Requested GRF resources not available (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:RAW_STRING} was disabled by {2:RAW_STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Invalid/unknown sprite layout format (sprite {3:NUM})

@ -2873,8 +2873,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Attempt to use
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} contains a corrupt sprite. All corrupt sprites will be shown as a red question mark (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contians multiple Action 8 entries (sprite{3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Read past end of psuedo-sprite (sprite{3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}The currently used base graphics set is missing a number of sprites.{}Please update the base graphics set
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}The currently used base graphics set is missing a number of sprites.{}Please update the base graphics set.{}Since you are playing a {YELLOW}development snapshot of OpenTTD{WHITE}, you might also need a {YELLOW}development snapshot of the base graphics{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Requested GRF resources not available (sprite{3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} was disabled by {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Invalid/unknown sprite layout format (sprite {3:NUM})

@ -2907,8 +2907,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Attempt to use
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} contains a corrupt sprite. All corrupt sprites will be shown as a red question mark (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contains multiple Action 8 entries (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Read past end of pseudo-sprite (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}The currently used base graphics set is missing a number of sprites.{}Please update the base graphics set
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}The currently used base graphics set is missing a number of sprites.{}Please update the base graphics set.{}Since you are playing a {YELLOW}development snapshot of OpenTTD{WHITE}, you might also need a {YELLOW}development snapshot of the base graphics{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Requested GRF resources not available (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} was disabled by {2:STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Invalid/unknown sprite layout format (sprite {3:NUM})

@ -2451,7 +2451,6 @@ STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} bezo
STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :la GRF-dosiero estas farita por traduki
STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Tro da NewGRF-oj estas ŝarĝataj
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} enhavas rompitan bildeton. Ĉiuj rompitaj bildetoj aspektos kiel ruĝaj demandsignoj (?)
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}La nuntempe uza baza grafikaĵaro mankas kelkajn da bildetoj.{}Bonvolu renovigu la baza grafikaĵaro
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} estis malaktivata per {STRING}
# NewGRF related 'general' warnings

@ -2964,8 +2964,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Kasutati kõlbm
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} sisaldab vigast pilti. Kõiki vigaseid pilte näidatakse punase küsimärgina (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Sisaldab mitut Action 8 kirjet (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Loe pseudo-sprite lõpust edasi (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Praegune alusgraafika kogu ei sisalda mitmeid spraite.{}Palun uuenda alusgraafika kogu
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Praegune alusgraafika kogu ei sisalda mitmeid spraite.{}Palun uuenda alusgraafika kogu.{}Kuna sa mängid {YELLOW}OpenTTD arendusversiooniga{WHITE}, siis ilmselt pead sa kasutama {YELLOW}alusgraafika kogu arendusversiooni{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Soovitud GRFi ressursid ei ole saadaval (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} blokeeriti {STRING} poolt
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :«Sprite» paigutus kõlbmatus vormis («sprite» {3:NUM})

@ -2906,8 +2906,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Yritys käyttä
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} sisältää korruptoituneen spriten. Kaikki korruptoituneet spritet näkyvät punaisina kysymysmerkkeinä (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Sisältää useita Action 8-merkintöjä (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Luku pseudo-spriten ohi (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Käytössä olevasta perusgrafiikkapaketista puuttuu spritejä.{}Ole hyvä ja päivitä perusgrafiikkapaketti
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Käytössä olevasta perusgrafiikkapaketista puuttuu spritejä.{}Päivitä perusgrafiikkapaketti.{}Koska pelaat {YELLOW}OpenTTD:n kehitysversiota{WHITE}, saatat myös tarvita {YELLOW}kehitysversion perusgrafiikkapaketista{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Pyydetyt GRF-resurssit eivät ole saatavilla (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{2:STRING} poisti käytöstä NewGRF:n {1:STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Virheellinen/tuntematon spriten asettelumuoto (sprite {3:NUM})

@ -2908,8 +2908,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Tentative d'uti
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} contient un sprite corrompu. Tous les sprites corrompus seront remplacés par un point d'interrogation rouge (?).
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Présence multiple de l'Action 8 (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Lecture après la fin des pseudo-sprite (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Il manque certains sprites dans les graphiques de base actuellement utilisés.{}Veuillez mettre à jour les graphiques de base.
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Il manque un certain nombre de sprites dans les graphiques de base actuellement utilisés.{}Veuillez mettre à jour les graphiques de base.{}Comme vous jouez avec une {YELLOW}version de développement d'OpenTTD{WHITE}, vous devriez utiliser une {YELLOW}version de développement des graphiques de base{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Indisponibilité de la ressource demandée (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} a été désactivé par {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Format de sprite invalide ou inconnu (sprite {3:NUM})

@ -3135,8 +3135,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Chaidh feuchain
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}Tha sprite coirbte am broinn {STRING.gen}. Thèid a h-uile sprite coirbte a shealltainn na comharradh-ceiste dhearg (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Tha iomadh innteart gnìomh 8 ann (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Chaidh leughadh thar deireadh a' sprite mas fhìor (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Tha sprite no dhà a dhìth air an t-seata ghrafaigeachd bhunasach a tha thu a' cleachdadh an-dràsta.{}Feuch an ùraich thu an seata grafaigeachd bunasach
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Tha sprite no dhà a dhìth air an t-seata ghrafaigeachd bhunasach a tha thu a' cleachdadh an-dràsta.{}Feuch an ùraich thu an seata grafaigeachd bunasach.{}Bhon a tha thu a' cluich le {YELLOW}snapshot leasachaidh aig OpenTTD{WHITE}, S dòcha gu bheil {YELLOW} snapshot leasachaidh dhen t-seata grafaigeachd bunasach{WHITE} a dhìth ort cuideachd
STR_NEWGRF_ERROR_GRM_FAILED :Chan eil na goireasan GRF a chaidh iarraidh ri làimh (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :Chaidh {1:STRING} a chur à comas le {2:STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Fòrmat co-dhealbhachd sprite mì-dhligheach/neo-aithnichte (sprite {3:NUM})

@ -2860,8 +2860,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Intento de usar
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} contén un sprite corrupto. Tódolos sprites corruptos mostraranse coma unha interrogación vermella (?).
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contén múltiples entradas de acción 8 (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Lectura máis aló da fin dun pseudo-sprite (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE} Ao conxunto de gráficos básicos empregado actualmente fáltalle un número de sprites.{}Por favor, actualiza o conxunto de gráficos básico
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE} Ao conxunto de gráficos básicos empregado actualmente fáltalle un número de sprites.{}Por favor, actualiza o conxunto de gráficos básico.{}Dado que estás a xogar unha {YELLOW}versión de desenrolo de OpenTTD{WHITE}, é posíbel que tamén necesites unha {YELLOW}versión de desenrolo do conjunto de gráficos base{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Os recursos GRF solicitados non están disponíbeis (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} foi desactivado por {2:STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Formato de colocación de sprites inválido ou descoñecido (sprite {3:NUM})

@ -3002,8 +3002,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Zugriff auf ein
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} enthält fehlerhafte Grafiken. Diese werden als Fragezeichen (?) dargestellt
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Enthält mehrere Action 8 - Einträge (Sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Lesezugriff über das Ende des Pseudosprites hinaus (Sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Den momentan verwendeten Basisgrafiken fehlen Sprites.{}Durch ein Update der Basisgrafiken kann dieser Fehler behoben werden
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Den momentan verwendeten Basisgrafiken fehlen einige Sprites.{}Bitte update die Basisgrafiken.{}Weil dieses eine {YELLOW}Entwickler-Version von OpenTTD{WHITE} ist, ist es möglich, dass auch eine {YELLOW}Entwickler-Version der Basisgrafiken{WHITE} benötigt wird.
STR_NEWGRF_ERROR_GRM_FAILED :Die angeforderte GRF-Ressource ist nicht verfügbar (Sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} wurde von {STRING} deaktiviert
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Ungültiges oder unbekanntes Format für Spritelayout (Sprite {3:NUM})

@ -3015,8 +3015,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Προσπάθ
STR_NEWGRF_ERROR_CORRUPT_SPRITE :Το {YELLOW}{STRING} περιέχει ένα αλλοιωμένο sprite. Όλα τα αλλοιωμένα sprites θα εμφανίζονται ως κόκκινα ερωτηματικά (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Περιέχει πολλαπλές καταχωρήσεις Action 8 (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Διάβασε πέρα από το τέλος του ψευδό-sprite (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Λείπουν μερικά sprites από το τρέχον βασικό σετ γραφικών.{}Παρακαλώ ενημερώστε το βασικό σετ γραφικών
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Λείπουν μερικά sprites από το τρέχον βασικό σετ γραφικών.{}Παρακαλώ ενημερώστε το βασικό σετ γραφικών{}Επειδή παίζετε {YELLOW}δοκιμαστική έκδοση του OpenTTD{WHITE}, μπορεί να χρειάζεται να έχετε εγκατεστημένη {YELLOW}δοκιμαστική έκδοση των βασικών γραφικών{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Οι ζητημένοι πόροι GRF δεν είναι διαθέσιμοι (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :Το {1:STRING} απενεργοποιήθηκε από το {2:STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Άκυρη/άγνωστη μορφή σχεδίου sprite (sprite {3:NUM})

@ -2920,8 +2920,6 @@ STR_NEWGRF_ERROR_INVALID_ID :ניסיון ש
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} מכיל אלמנט גרפי שגוי. כל האלמנטים הגרפיים השגויים יוצגו כסימן שאלה אדום (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :מכיל מספר רשומות Action 8 (ספרייט {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :קראת אחר סוף הפסאודו-ספרייט (ספרייט {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}בערכת גרפיקה הבסיסית חסרים מספר ספרייטים.{}אנא עדכן את הערכה הגרפית הבסיסית
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}בערכת גרפיקה הבסיסית חסרים מספר ספרייטים.{}אנא עדכן את הערכה הגרפית הבסיסית.{}מכיוון שהינך משחק {YELLOW}גרסת פיתוח של OpenTTD{WHITE}, אולי תצטרך {YELLOW}גרסת פיתוח של ערכת הגרפיקה הבסיסית{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :משאב GRF המבוקש אינו זמין (ספרייט {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} נהפך ללא זמין ע"י {2:STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :מבנה פורמט ספרייט לא תקין/לא ידוע (ספרייט {3:NUM})

@ -2970,8 +2970,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Érvénytelen I
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} hibás sprite-ot tartalmaz. Minden hibás sprite piros kérdőjellel (?) kerül jelölésre
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Több Action 8 bejegyzést tartalmaz (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Ál-sprite távoli végének olvasása (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}A jelenleg használt grafikus alapcsomagból hiányzik számos sprite.{}Kérlek frissítsd a grafikus alapcsomagot
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}A használt alap grafikus csomagból néhány egység hiányzik.{}Kérjük frissítsd az alap grafikus csomagot.{}Mivel az {YELLOW}OpenTTD fejlesztői változatát{WHITE} használod, lehet, hogy a {YELLOW}fejlesztői alap grafikus csomagot{WHITE} kellene használnod
STR_NEWGRF_ERROR_GRM_FAILED :Kért GRF források nem elérhetőek (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} kikapcsolva {STRING} által
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Érvénytelen/ismeretlen sprite szerkezet formátum (sprite {3:NUM})

@ -2736,8 +2736,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Verið að reyn
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} inniheldur gallaða mynd. Allar gallaðar myndir munu birtast sem rauð spurningamerki (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Inniheldur margþættar aðgerðir, 8 innkomur (hreyfimynd {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Les fyrir endan af gervi-hreyfimynd (hreyfimynd {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Grunnteiknisafnið sem er í notkun vantar hluta af hreyfimyndunum.{}Vinsamlegast uppfærðu grunnteiknisafnið
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Í Grafíska safnið sem nú er í notkun vantar nokkrar myndir.{}Vinsamlegast uppfærið grafíska safnið.{}Þar sem þú ert að spila {YELLOW}þróunar útgáfu af OpenTTD{WHITE}, gæti verið að þú þyrftir líka {YELLOW} þróunar útgáfu af grafíska safninu{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Umbeðin GRF gögn ekki tiltæk (hreyfimynd {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} var óvirkjað af {2:STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Rangt/óþekkt hreyfimyndar snið (hreyfimynd {3:NUM})

@ -2902,8 +2902,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Mencoba menggun
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} terdapat sprite yang rusak. Semua sprite rusak akan ditandai dengan tanda tanya merah (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Memuat beberapa entri Action 8 (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Baca akhir sprite palsu (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Beberapa 'sprite' tidak terdapat pada Set Grafik Dasar yang sedang digunakan.{}Silahkan update Set Grafik Dasar
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Set grafis dasar kekurangan beberapa sprite.{}Tolong perbarui set grafis dasar.{}Karena anda memainkan {YELLOW}snapshot pengembangan OpenTTD{WHITE}, anda mungkin memerlukan{YELLOW}snapshot pengembangan set grafis dasar{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Sumber GRF yang diminta tidak tersedia (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} dinonaktifkan oleh {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Format sprite salah/tidak diketahui (sprite {3:NUM})

@ -2906,8 +2906,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Iarracht ID nea
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}Tá sprite truaillithe in {STRING}. Taispeánfar gach sprite truaillithe mar chomhartha ceiste (?) dearg.
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Tá iontrálacha iolraccha Ghníomhaíocht 8 ann (sprid {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Léadh tar éis deireadh an pseudo-sprid (sprid {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Tá roinnt sprite in easnamh sa tsraith bhunúsach grafaicí atá in úsáid faoi láthair.{}Déan úasghrádú ar an tsraith bhunúsach grafaicí le do thoil
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Tá roinnt sprideanna in easnamh sa tacar bunghraificí atá in úsáid faoi láthair.{}Nuashonraigh an tacar bunghraificí.{}Toisc go bhfuil tú ag imirt ar {YELLOW}roghbhlúire forbróirí (development snapshot) OpenTTD{WHITE}, seans go mbeidh {YELLOW}roghbhlúire forbróirí de na bunghraificí{WHITE} ag teastáil uait
STR_NEWGRF_ERROR_GRM_FAILED :Níl na hacmhainní GRF a iarradh ar fáil (sprid {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :Bhí {1:STRING} díchumasaithe ag {2:STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Formáid neamhbhailí/anaithnid do leagan amach na spride (sprid {3:NUM})

@ -1785,6 +1785,7 @@ STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Controll
STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Mostra le impostazioni delle IA e degli Script
STR_INTRO_TOOLTIP_QUIT :{BLACK}Esci da 'OpenTTD'
STR_INTRO_BASESET :{BLACK}Nel pacchetto grafico di base attualmente selezionato mancano {NUM} sprite. È consigliabile controllare gli aggiornamenti del pacchetto.
STR_INTRO_TRANSLATION :{BLACK}A questa traduzione mancano {NUM} string{P a he}. Aiutaci a migliorare OpenTTD iscrivendoti come traduttore. Vedi readme.txt per dettagli.
# Quit window
@ -2937,8 +2938,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Tentativo di ut
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} contiene degli sprite corrotti. Tutti gli sprite corrotti saranno mostrati come punti interrogativi (?) rossi
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contiene occorrenze multiple dell'azione 8 (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Lettura oltre la fine dello pseudo-sprite (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Nel pacchetto grafico di base attualmente in uso mancano alcuni sprite.{}È consigliabile aggiornare il pacchetto grafico di base
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Nel pacchetto grafico di base attualmente in uso mancano alcuni sprite.{}È consigliabile aggiornare il pacchetto grafico di base.{}Poiché si sta giocando con uno {YELLOW}snapshot di sviluppo di OpenTTD{WHITE}, potrebbe essere necessario uno {YELLOW}snapshot di sviluppo del pacchetto grafico di base{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Risorsa GRF richiesta non disponibile (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} è stato disabilitato da {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Formato di layout dello sprite sconosciuto o non valido (sprite {3:NUM})

@ -2906,8 +2906,6 @@ STR_NEWGRF_ERROR_INVALID_ID :不正なIDが
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING}には破損スプライトがあります。破損スプライトは赤疑問符({RED}?{YELLOW})として表示されます
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :アクション8のエントリが複数含まれています (スプライト {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :疑似スプライトのデータが十分にありません (スプライト {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}使用中の基本グラフィックセットから複数のスプライトが欠落しています。{}セットを更新して下さいますよう、お願いします
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}使用中の基本グラフィックセットから複数のスプライトが欠落しています。{}セットを更新して下さいますよう、お願いします{}{YELLOW}OpenTTDの速報開発版{WHITE}をお使いの際は、{YELLOW}速報開発版に即したグラフィックセット{WHITE}が必要となる場合があります
STR_NEWGRF_ERROR_GRM_FAILED :要求されたGRFのリソースは使用できません (スプライト {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING}は{STRING}により無効にされました
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :不正なレイアウト書式です (スプライト {3:NUM})

@ -3284,8 +3284,6 @@ STR_NEWGRF_ERROR_INVALID_ID :유효하지
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} 에 손상된 객체가 있습니다. 모든 손상된 객체는 붉은 물음표로 보일 것입니다.
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :여러 개의 액션 8 엔트리 포함 (스프라이트 {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :모조-스프라이트의 지나간 끝을 읽음 (스프라이트 {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}최근에 이용한 기본 그래픽 세트에 객체가 많이 손실되었습니다.{}기본 그래픽 세트를 업데이트 하십시오.
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}현재 사용중인 기본 그래픽에 그래픽이 다수 존재하지 않습니다.{}기본 그래픽 세트를 업데이트해 주십시오.{}현재 당신이 {YELLOW}OpenTTD의 개발 버전{WHITE}을 사용하고 있기 때문에, {YELLOW}기본 그래픽의 개발 버전{WHITE}이 필요할 수 있습니다.
STR_NEWGRF_ERROR_GRM_FAILED :요청한 GRF 자원을 사용할 수 없음 (스프라이트 {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING}(은)는 {STRING} 때문에 사용할 수 없습니다
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :유효하지 않은/알 수 없는 스프라이트 구조 유형 (스프라이트 {3:NUM})

@ -2890,7 +2890,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terra societati
STR_ABOUT_OPENTTD :{WHITE}De OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Privilegium impressorium originale {COPYRIGHT} MCMXCV Chris Sawyer, Omnia proprietatis iura reservantur
STR_ABOUT_VERSION :{BLACK}OpenTTD editio {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} MMII-MMXVI Manus OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} MMII-MMXVII Manus OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Servare Ludum
@ -3109,8 +3109,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Conatus agnosca
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} spiritum corruptum habet. Omnes spiritus corrupti monstrabuntur forma rubro puncto interrogativo - ?
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Continet plures Actiones 8 (spiritus {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Lectio post terminum pseudospiritus (spiritus {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Fundamento graphico adhibito deest nonulli spiritus.{}Utinam arcessas novam editionem
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Fundamento graphico adhibito deest nonulli spiritus.{}Utinam arcessas novam editionem.{}Quoniam ludis {YELLOW}editionem OpenTTD adhuc in explicando{WHITE}, fortasse etiam tibi necesse est {YELLOW}editio fundamenti graphici OpenTTD in explicando{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Opes GRF desideratae non parabiles (spiritus {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} neglectus est a {2:STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Irrita/ignota dispositio spiritus (spiritus {3:NUM})

@ -2840,8 +2840,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Mēģinājums i
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} satur bojātu gariņu. Visi bojātie gariņi tiks parādīti ar sarkanu jautājuma zīmi (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Satur vairākus Action 8 ierakstus (gariņš {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Lasīt aiz pseidogariņa beigām (gariņš {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Pašlaik lietotajai pamata grafikas kopai trūkst daļa gariņu.{}Lūdzu atjauniniet pamata grafikas kopu
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Pašlaik lietotajai pamata grafikas kopai trūkst daļa gariņu.{}Lūdzu atjauniniet pamata grafikas kopu.{}Tā kā jūs spēlējat {YELLOW}OpenTTD izstrādes momentuzņēmumu{WHITE}, jums varētu būt nepieciešams arī {YELLOW}pamata grafikas izstrādes momentuzņēmums{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Pieprasītie GRF resursi nav pieejami (gariņš {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} ar {2:STRING} tika atspējots
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Nederīgs/nezināms gariņa izkārtojuma formāts (gariņš {3:NUM})

@ -3125,8 +3125,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Bandymas panaud
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} turi sugadintą spruklį. Visi sugadinti sprukliai bus rodomi kaip raudoni klaustukai (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Susideda iš keleto veiksmo 8 įrašų (spruklys {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Skaitymas už pseudospruklio pabaigos (spruklys {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Šiuo metu naudojamam grafikos rinkiniui trūksta keleto spruklių.{}Atnaujinkite pagrindinį grafikos rinkinį
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Šiuo metu naudojamam pagrindinės grafikos rinkiniui trūsta keleto spruklių.{}Atnaujinkite pagrindinės grafikos rinkinį.{} Kadangi žaidžiate {YELLOW} negalutinę, vis dar kuriamą OpenTTD versiją, {WHITE}, jums, ko gero, reikėtų įdiegti atitinkamą{YELLOW}naujausią, negalutinį pagrindinės grafikos rinkinį.{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Pageidautas GRF resursas yra neprieinamas (spruklys {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} buvo išjungtas {2:STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Neteisingas/nežinomas spruklio išdėstymo formatas (spruklys {3:NUM})

@ -2906,8 +2906,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Versicht invali
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} huet eng korrupt Sprite. All korrupt Sprites ginn als Fragezeichen (?) duergestallt
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Huet eng Rei Action 8 Einträg (Sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Lanscht d'Enn vum Pseudo-Sprite gelies (Sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}D'momentan benotzten Grafikset huet e puer Sprites ze mann.{}W.e.g d'Basisgrafikset updaten
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Am grad benotzten Basis-Grafikset fehlen e puer Sprites.{}W.e.g Basis-Grafikset updaten.{}Wellsde en {YELLOW}Development Snapshot vun OpenTTD spills{WHITE}, brauchsde och en {YELLOW}Development Snapshot vum Basis-Grafikset{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Ugefroten GRF Ressource net verfügbar (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} gouf ausgeschalt vun {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Invalid/onbekannten Sprite Layout Format (Sprite {3:NUM})

@ -2602,7 +2602,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Cubaan untuk me
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} mengandungi peperi yang rosak. Semua peperi yang rosak akan ditunjukkan menggunakan tanda soal (?) merah.
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Mengandungi pelbagai Tindakan 8 kemasukan (peperi {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Bacaan melepasi penghujung peperi-pseudo (peperi {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Set asas grafik yang sedang digunakan, hilang sebilangan sprites.{}Sila mengemaskini set asas grafik
STR_NEWGRF_ERROR_GRM_FAILED :Sumber GRF yang diminta tidak diperolehi (peperi {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} telah dinyahaktifkan oleh {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Tidak sah/diketahui format susun atur (peperi {3:NUM})

@ -2910,8 +2910,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Forsøk på å
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} inneholder en ødelagt sprite. Alle ødelagte spriter blir vist som røde spørsmålstegn (?).
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Inneholder flere Handling 8-oppføringer (figur {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Leste forbi slutten av pseudo-sprite (figur {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Det benyttede grafikksettet mangler en del spriter.{}Du må oppdatere grafikksettet.
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Den benyttede grafikkpakken mangler en mengde bildeelementer.{}Du må oppdatere grafikkpakken.{}Siden du spiller en {YELLOW}utviklingsversjon av OpenTTD{WHITE}, kan det være at du også trenger en {YELLOW}utviklingsversjon av grafikkpakken{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Etterspurte GRF-ressurser ikke tilgjengelig (figur {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} ble deaktivert av {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Ugyldig/ukjent sprite layout-format (figur {3:NUM})

@ -2823,8 +2823,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Forsøk på å
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} inneheld øydelagd grafikk. All øydelagd grafikk vil bli vist som raude spørsmålsteikn (?).
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Inneheld fleire tilfelle av handling 8 (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Lest forbi slutten av pseudo-sprite (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Det nåværande grafikksettet manglar ein del bilete.{}Vennligst oppdater grafikksettet.
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Det valde grafikksettet manglar nokre bilete.{}Vær venleg og forny grafikksettet.{}I og med at du spelar eit {YELLOW}utviklingsutkast av OpenTTD{WHITE} treng du òg eit {YELLOW}utviklingsutkast av grafikksettet{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Etterspurde GRF-ressursar ikkje tilgjengeleg (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} vart deaktivert av {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Ugyldig/ukjend sprite layout-format (sprite {3:NUM})

@ -3287,8 +3287,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Próba użycia
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} zawiera uszkodzoną teksturę. Wszystkie uszkodzone tekstury będą pokazane jako czerwony znak zapytania (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Zawiera wiele wpisów Action 8 (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Odczyt poza obszar pseudo-sprite'u (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Aktualnie używany zestaw grafik jest niekompletny.{}Proszę zaktualizować podstawowy zestaw grafik
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}W aktualnie używanym podstawowym zestawie graficznym brakuje pewnej ilości sprite'ów.{}Proszę zaktualizowaćswój zestaw graficzny.{}Z powodu tego, że używasz {YELLOW}rozwojowej wersji OpenTTD{WHITE}, możesz potrzebować również {YELLOW}rozwojowej wersji podstawowego zestawu graficznego{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Potrzebne źródło GRF nie jest dostępne (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} został wyłączony przez {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Niepoprawny/nieznany format układu sprite'u (sprite {3:NUM})

@ -2907,8 +2907,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Tentativa de us
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} contém um objecto gráfico corrompido. Todos os objectos gráficos corrompidos serão apresentados como um ponto de interrogação (?) vermelho.
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contém múltiplas entradas Action 8 - (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Leitura além dos limites do pseudo-sprite (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}O conjunto de gráficos base actual tem objectos gráficos em falta.{}Por favor faça a sua actualização.
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}O conjunto de gráficos base actualmente em uso tem um conjunto de gráficos em falta.{}Por favor actualize o conjunto de gráficos base.{}Visto que está a usar uma {YELLOW}imagem de desenvolvimento do OpenTTD{WHITE}, poderá também precisar de {YELLOW}uma imagem dos gráficos base de desenvolvimento{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Recursos GRF pedidos não disponíveis (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} foi desactivado por {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Formato de Gráfico Inválido ou desconhecido (sprite {3:NUM})

@ -2866,8 +2866,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Încercare de a
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} conţine o imagine coruptă. Toate imaginile corupte vor fi afişate ca semne de întrebare (?) roşii
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Conține mai multe intrări pentru Acțiunea 8 (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Citire după sfârşitul preudo-elementului grafic (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Unele imagini lipsesc din setul grafic de bază.{}Vă rugăm actualizaţi setul grafic de bază
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE} Pachetul grafic de bază folosit în acest moment este incomplet, un număr de sprite-uri lipsesc ..{}Trebuie să actualizezi acest pachet grafic de bază.{}Deoarece te joci o {YELLOW}versiune de dezvoltare a OpenTTD{WHITE}, este posibil să ai nevoie de o {YELLOW}versiune de dezvoltare a pachetului grafic de bază{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Resursele GRF solicitate nu sunt disponibile (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} a fost dezactivat de {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Structură necunoscută/invalidă pentru elementul grafic (sprite {3:NUM})

@ -3093,8 +3093,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Попытка
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} содержит повреждённый спрайт. Все повреждённые спрайты будут показаны красным знаком вопроса (?).
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Содержит несколько блоков «Action 8» (спрайт {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Чтение за концом псевдо-спрайта (спрайт {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}В текущем наборе базовой графики отсутствуют изображения некоторых объектов.{}Пожалуйста, обновите модуль базовой графики.
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}В используемом наборе базовой графики отсутствуют некоторые изображения.{}Пожалуйста, обновите набор изображений.{}Так как у вас {YELLOW}тестовая версия OpenTTD{WHITE}, вам может понадобиться {YELLOW}тестовая версия графического набора{WHITE}.
STR_NEWGRF_ERROR_GRM_FAILED :Запрошенные ресурсы GRF недоступны (спрайт {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} был отключён из-за {2:STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Недопустимый/неизвестный формат расположения спрайтов (спрайт {3:NUM})

@ -3101,8 +3101,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Pokušaj koriš
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} sadrži neispravan sprajt. Svi neispravni sprajtovi će biti prikazani kao crveni znakovi pitanja (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Sadrži više Akcija 8 ulaza (sprajt {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Čitanje iza završetka pseudo-sprajta (sprajt {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Odabranom skupu osnovnih grafika nedostaje neki broj sprajtova.{}Molimo Vas da ga ažurirate
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Grafičkom setu koji je trenutno u upotrebi nedostaje određen broj sprajtova.{}Osvežite grafički set.{}S obzirom da igrate {YELLOW}razvojnu verziju OpenTTD-a{WHITE}, treba vam i {YELLOW}razvojna verzija grafičkog seta{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Traženi GRF resursi nisu dostupni (sprajt {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} je isključen od strane {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Neispravan/nepoznat format prikazivanja sprajta (sprajt {3:NUM})

@ -2906,8 +2906,6 @@ STR_NEWGRF_ERROR_INVALID_ID :尝试使用非
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} 含有损坏的图形元素{}所有损坏的图形元素{}将显示为红色的问号(?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :具有多个Action 8 (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :图像读取时发生越界错误 (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}当前基础图形组缺失部分图片。{}请升级图形组。
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}当前使用的基础图形包参数有误。{}请更新基础图形包。{}如果你正在使用 {YELLOW}OPENTTD的开发测试版{WHITE},你需要 {YELLOW}相应配套的基础图形包。{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :GRF源文件不可访问 (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} 被 {STRING} 禁用
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :错误/未知的sprite输出格式 (sprite {3:NUM})

@ -2974,8 +2974,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Pokus o použit
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} obsahuje poškodený sprite. Všetky poškodené sprajty budú zobrazené ako červený otáznik (?).
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Obsahuje viacnásobné záznamy Action 8 (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Čítanie za koncom pseudo-sprite (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}V používanej základnej grafickej sade chýbajú niektoré grafické objekty.{}Aktualizujte prosím základnú grafickú sadu.
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Aktuálne používanej základnej sade grafiky chýba niekoľko spritov.{}Prosím zaktualizujte základnú sadu grafiky.{}Keďže hráte {YELLOW}vývojovú verziu OpenTTD{WHITE}, môžete tiež potrebovať{YELLOW}vývojovú verziu základnej sady grafiky{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Požadované GRF prostriedky nie sú dosupné (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} bol vypnutý {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Nesprávny/neznámy formát rozloženia sprite(ov) (sprite {3:NUM})

@ -3059,8 +3059,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Poskus uporabe
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} vsebuje eno poškodovano sličico. Vse poškodovane sličice se bodo prikazale kot rdeči vprašaji (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Vsebuje več Ukaz 8 vnosov (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Prebrana datoteka preko meje za sličice (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}V uporabljenem osnovnem setu grafik manjkajo sličice.{}Prosim, posodobi osnovni set grafik
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Trenutni set osnovnih grafik ne vsebuje določenih sličic. Posodobi osnovni set.{}Odkar igraš {YELLOW} razvojni pogled OpenTTD{WHITE}, nogoče potrebuješ tudi {YELLOW}razvojni pogled osnovnih grafik{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Zahtevani viri GRF niso na voljo (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} je bil izklopljen zaradi {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Neveljaven/neznan format zapisa sličic (sprite {3:NUM})

@ -2908,8 +2908,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Intento de usar
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} contiene un sprite corrupto. Todos los sprites corruptos serán mostrados como un interrogante rojo (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contiene múltiples entradas de Acción 8 (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Lectura más allá del fin de un pseudo-sprite (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Al conjunto de gráficos base actualmente en uso le faltan algunos sprites.{}El conjunto de gráficos base debe ser actualizado
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Al conjunto de gráficos base actualmente en uso le faltan algunos sprites.{}El conjunto de gráficos base debe ser actualizado.{}Dado que estás jugando una {YELLOW}versión de desarrollo de OpenTTD{WHITE}, es posible que también necesites una {YELLOW}versión de desarrollo del conjunto de gráficos base{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Recursos GRF solicitados no disponibles (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} fue desactivado por {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Formato de colocación de sprites inválido o desconocido (sprite {3:NUM})

@ -2908,8 +2908,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Intento de usar
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} contiene un sprite con errores. Todos los sprites con errores se muestran como un símbolo de interrogación rojo (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contiene múltiples entradas de Acción 8 (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :La lectura excedió el límite de pseudo-sprite (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}A los gráficos base actualmente en uso les faltan algunos sprites.{}Los gráficos base deben ser actualizados
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}A los gráficos base actualmente en uso les faltan algunos sprites.{}Los gráficos base deben ser actualizados.{}Dado que esta es una {YELLOW}versión de desarrollo de OpenTTD{WHITE}, es posible que también se requiera una {YELLOW}versión de desarrollo de los gráficos base{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Recursos GRF solicitados no disponibles (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} fue desactivado por {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Formato de colocación de sprites no válido o desconocido (sprite {3:NUM})

@ -2906,8 +2906,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Försökt att a
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} innehåller en skadad bild. Alla korrupta bilder kommer att visas som ett rött frågetecken (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Innehåller flera Action 8 (spriteobjekt {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Läste förbi slutet av pseudo-spriteobjekt (spriteobjekt {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Det aktiva grafikpaketet saknar ett antal bilder.{}Var vänlig och uppdatera grafikpaketet
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Det aktiva grafikpaketet saknar ett antal bilder.{}Var vänlig och uppdatera grafikpaketet.{}Eftersom du spelar en {YELLOW}utvecklings-version av OpenTTD{WHITE}, så kan du även behöva en {YELLOW}utvecklings-version av basgrafikpaketet{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Efterfrågade GRF-resurser är inte tillgängliga (spriteobjekt {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} har inaktiverats av {2:STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Felaktig/okänd layout-format av spriteobjekt (spriteobjekt {3:NUM})

@ -2839,8 +2839,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Attempt to use
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} บรรจุ sprites ที่สูญหาย. สิ่งที่สูญหายจะแสดงเป็นเครื่องหมายตกใจสีแดง (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contains multiple Action 8 entries (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Read past end of pseudo-sprite (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}กราฟิกพื้นฐานที่ใช้อยู่มี Sprite ไม่สมบูรณ์{}กรุณาปรับรุ่นของ Base Graphic
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}ไฟล์ในกราฟฟิคพื้นฐานหายไปบางส่วน{}กรุณาอัพเดตกราฟฟิคพื้นฐาน.{}ตั้งแต่คุณเริ่มเล่น {YELLOW}ภาพของ OpenTTD{WHITE},คุณอาจต้องการ {YELLOW}ภาพของกราฟฟิคพื้นฐาน{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :ต้นแบบ GRF ที่ต้องการสามารถใช้การได้(sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} ถูกยกเลิกโดย {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :ไม่ถูกต้อง/ไม่ทราบ รูปแบบ sprite (sprite {3:NUM})

@ -2906,8 +2906,6 @@ STR_NEWGRF_ERROR_INVALID_ID :子畫面企圖
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} 包含了毀損的 sprite。所有毀損的 sprite 會以紅色問號 () 顯示。
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :過多的 Action 8 資料 (發生於第 {3:NUM} 個子畫面)
STR_NEWGRF_ERROR_READ_BOUNDS :子畫面資料不足 (發生於第 {3:NUM} 個子畫面)
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}目前使用的基本圖形集少了某些 sprite。{}請更新基本圖形集。
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}你正在使用的圖形集缺少了一些圖形.{}請更新圖形集.{}因為你正在使用一個{YELLOW}開發中的OpenTTD{WHITE},你可能需要一個{YELLOW}開發中的圖形集{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :要求的 GRF 資料不存在或無法讀取 (發生於第 {3:NUM} 個子畫面)
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{2:STRING} 使 {1:STRING} 被停用
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :無效或無法識別的子畫面配置格式 (發生於第 {3:NUM} 個子畫面)

@ -2590,6 +2590,7 @@ STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Havalima
STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}İstenen: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
STR_LANG_AREA_INFORMATION_RAIL_TYPE :{BLACK}Ray türü: {LTBLUE}{STRING}
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Ray hız sınırı: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Yol hız sınırı: {LTBLUE}{VELOCITY}
@ -2602,29 +2603,29 @@ STR_LAI_CLEAR_DESCRIPTION_FIELDS :Mera
STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Karlı arazi
STR_LAI_CLEAR_DESCRIPTION_DESERT :Çöl
STR_LAI_RAIL_DESCRIPTION_TRACK :Demiryolu ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Demiryolu blok sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Demiryolu ön sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Demiryolu çıkış sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Demiryolu karışık sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Demiryolu yol sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Demiryolu tek yön yol sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Demiryolu blok ve ön sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Demiryolu blok ve çıkış sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Demiryolu blok ve karışık sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Demiryolu blok ve yol sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Demiryolu blok ve tek yön yol sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Demiryolu ön ve çıkış sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Demiryolu ön ve karışık sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Demiryolu ön ve yol sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Demiryolu ön ve tek yön yol sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Demiryolu çıkış ve karışık sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Demiryolu çıkış ve yol sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Demiryolu çıkış ve tek yön yol sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Demiryolu karışık ve tek yön yol sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Demiryolu karışık ve tek yön yol sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Demiryolu yol ve tek yön yol sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Demiryolu tren garajı
STR_LAI_RAIL_DESCRIPTION_TRACK :Ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Blok sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Ön sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Çıkış sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Karışık sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Yol sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Tek yön yol sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Blok ve ön sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Blok ve çıkış sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Blok ve karışık sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Blok ve yol sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Blok ve tek yön yol sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Ön ve çıkış sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Ön ve karışık sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Ön ve yol sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Ön ve tek yön yol sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Çıkış ve karışık sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Çıkış ve yol sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Çıkış ve tek yön yol sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Karışık ve tek yön yol sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Karışık ve tek yön yol sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Yol ve tek yön yol sinyalli ray
STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Tren garajı
STR_LAI_ROAD_DESCRIPTION_ROAD :Yol
STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Sokak lambalı yol
@ -2907,8 +2908,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Geçersiz ID ku
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} bozuk bir nesne içeriyor. Tüm bozuk nesneler kırmızı bir soru işareti (?) olarak görünecektir
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Birden çok Action 8 girişi içeriyor (nesne {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Pseudo-nesne bitiminden sonrasını okudu (nesne {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Kullanımda olan temel grafik kümesi bazı nesneleri içermiyor.{}Lütfen temel grafik kümesini güncelleyin
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Kullanımdaki temel grafik kümesi bazı nesneleri içermiyor.{}Lütfen temel grafik setinizi güncelleyin .{}{YELLOW}OpenTTD'nin geliştirme kopyasını {WHITE}kullandığınız için, {YELLOW}temel grafiklerin de{WHITE} geliştirme kopyasını kullanmalısınız.
STR_NEWGRF_ERROR_GRM_FAILED :İstenen GRF kaynakları mevcut değil (nesne {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} {STRING} tarafından deaktive edildi
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Geçersiz/bilinmeyen nesne yerleşim biçimi (nesne {3:NUM})
@ -3561,6 +3560,7 @@ STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Değişt
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Lokomotif ve vagon değişimi pencereleri arasında geçiş yap.
STR_REPLACE_ENGINES :Lokomotifler
STR_REPLACE_WAGONS :Vagon
STR_REPLACE_ALL_RAILTYPE :Tüm demiryolu araçları
STR_REPLACE_HELP_RAILTYPE :{BLACK}Lokomatiflerini değiştireceğiniz ray türünü seçin
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Soldaki değiştiriliyorsa neyle değiştirildiğini göster

@ -3037,8 +3037,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Спроба в
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} містить зіпсований спрайт. Усі зіпсовані спрайти будуть показані як червоний знак питання (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Містить декілька записів Action 8 (спрайт {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Вихід за границю псевдо-спрайта при читанні (спрайт {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}У базовому наборі графіки, що зараз використовується не вистачає спрайтів.{}Будь-ласка оновіть базовий набір графіки
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}В наборі графіки, який використовується на даний момент відсутній ряд спрайтів.{}Будь ласка, поновіть базовий набір графіки.{}Оскільки ви граєте у {YELLOW} тестову версію OpenTTD{WHITE}, вам також може знадобитися {YELLOW}тестовий набір базової графіки{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Недоступні необхідні ресурси GRF (спрайт {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} був вимкнений {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Некоректний або невідомий формат розміщення спрайтів (спрайт {3:NUM})

@ -2689,7 +2689,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Hat besocht in
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} befettet in korrupte ôfbylding. Alle korrupte ôfbyldings sille mei in read fraachteken markearre wurde (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Befet meardere Aksje-8 fermeldings (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Ein fan pseudo-ôfbylding lêze (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}It hjoeddeiske basisôfbyldingspakket misset in oantal ôfbylding.{}Besykje dit ôfbyldingspakket te fernijen
STR_NEWGRF_ERROR_GRM_FAILED :Oanfrege GRF-bron is net beskikber (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} wie útskeakele troch {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Unjildich/ûnbekind ôfbyldingsútlisformaat (sprite {3:NUM})

@ -1270,7 +1270,6 @@ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Објекто
# NewGRF (self) generated warnings/errors
STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING}
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Во моментов се користат база графики поставени недостасува голем број на sprites.{}Надградете ја основата графика во собата.
# NewGRF related 'general' warnings
STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Внимание!

@ -2593,7 +2593,6 @@ STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :فایل GRF ب
STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :تعداد NewGRF بیشتر از حد می باشد
STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :در حال بارگزاری {1:STRING} به عنوان NewGRF ایستا با {STRING} مشکل همخوانی دارد
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} دارای یک تصویر خراب می باشد. تصویرهای خراب با علامت سوال قرمز (؟) نشان داده شدند.
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}بسته گرافیک استفاده شده تعدادی از تصاوبر را ندارد.{}لطفا بسته گرافیکی را به روز کنید
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} غیر فعال گردیده توسط {STRING}
# NewGRF related 'general' warnings

@ -2906,8 +2906,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Sử dụng IT
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} bị hỏng sprite. Tất cả các sprite sẽ hiện thị với dấu hỏi (?) màu đỏ.
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Có nhiều mục thực thi 8 (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Đọc quá giới hạn của sprite giả (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Gói đồ họa bạn đang dùng thiếu một số mẫu đồ họa.{}Hãy cập nhật gói đồ họa lên phiên bản mới.
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Bộ file đồ họa hiện tại thiết một số sprites.{}Hãy cập nhật phiên bản mới.{}Bởi vì bạn chơi {YELLOW}một phiên bản thử nghiệm đang phát triển OpenTTD{WHITE}, bạn cần phải có cả {YELLOW}bộ file đồ họa đang được phát triển nữa{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Dữ liệu GRF theo yêu cầu không hợp lệ (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} bị tắt bởi {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Định dạng Sprite không hợp lệ hoặc chưa định nghĩa (sprite {3:NUM})

@ -2907,8 +2907,6 @@ STR_NEWGRF_ERROR_INVALID_ID :Ceisio defnyddi
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}Mae'r {STRING} yn cynnwys corlun llygredig. Bydd corluniau llygredig yn cael eu dynodi gan farc cwestiwn coch (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Yn cynnwys sawl cofnod Gweithred 8 (corlun {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Darllen heibio i ddiwedd llid-gorlun (corlun {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Mae'r set raffeg sylfaenol a ddefnyddir ar hyn o bryd yn brin o sawl corlun{}Diweddarwch y set raffeg sylfaenol i ddatrys hyn
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Mae nifer o gorluniau ar goll o'r set graffeg sylfaenol mewn defnydd.{}Diweddarwch y set graffeg sylfaenol.{}Gane eich bod yn chwarae {YELLOW}ciplun datblygiadol o OpenTTD{WHITE}, efallai y byddwch angen {YELLOW}ciplun ddatblygiadol o'r grafffeg sylfaenol{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Nid yw'r adnoddau GRF a geisiwyd ar gael (corlun {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :Fe analluogwyd {1:STRING} gan {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Fformat cynllun corlun annilys/anhysbys (corlun {3:NUM})

@ -55,8 +55,7 @@ static const uint NETWORK_GRF_NAME_LENGTH = 80; ///< Maximum l
/**
* Maximum number of GRFs that can be sent.
* This value is related to number of handles (files) OpenTTD can open.
* This is currently 64. Two are used for configuration and sound.
* This limit is reached when PACKET_UDP_SERVER_RESPONSE reaches the maximum size of SEND_MTU bytes.
*/
static const uint NETWORK_MAX_GRF_COUNT = 62;

@ -1179,7 +1179,7 @@ struct NetworkStartServerWindow : public Window {
}
case WID_NSS_GENERATE_GAME: // Start game
if (CountSelectedGRFs (_grfconfig_newgame) >= MAX_FILE_SLOTS_IN_NETWORK) {
if ((uint) CountSelectedGRFs (_grfconfig_newgame) > NETWORK_MAX_GRF_COUNT) {
ShowErrorMessage(STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED, INVALID_STRING_ID, WL_ERROR);
break;
}

@ -5624,7 +5624,7 @@ static void GraphicsNew(ByteReader *buf)
uint16 offset = HasBit(type, 7) ? buf->ReadExtendedByte() : 0;
ClrBit(type, 7); // Clear the high bit as that only indicates whether there is an offset.
if ((type == 0x0D) && (num == 10) && _cur.grffile->is_ottdfile) {
if ((type == 0x0D) && (num == 10) && HasBit(_cur.grfconfig->flags, GCF_SYSTEM)) {
/* Special not-TTDP-compatible case used in openttd.grf
* Missing shore sprites and initialisation of SPR_SHORE_BASE */
grfmsg(2, "GraphicsNew: Loading 10 missing shore sprites from extra grf.");
@ -5704,35 +5704,6 @@ static void SkipAct5(ByteReader *buf)
grfmsg(3, "SkipAct5: Skipping %d sprites", _cur.skip_sprites);
}
/**
* Check whether we are (obviously) missing some of the extra
* (Action 0x05) sprites that we like to use.
* When missing sprites are found a warning will be shown.
*/
void CheckForMissingSprites()
{
/* Don't break out quickly, but allow to check the other
* sprites as well, so we can give the best information. */
bool missing = false;
for (uint8 i = 0; i < lengthof(_action5_types); i++) {
const Action5Type *type = &_action5_types[i];
if (type->block_type == A5BLOCK_INVALID) continue;
for (uint j = 0; j < type->max_sprites; j++) {
if (!SpriteExists(type->sprite_base + j)) {
DEBUG(grf, 0, "%s sprites are missing", type->name);
missing = true;
/* No need to log more of the same. */
break;
}
}
}
if (missing) {
ShowErrorMessage(IsReleasedVersion() ? STR_NEWGRF_ERROR_MISSING_SPRITES : STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE, INVALID_STRING_ID, WL_CRITICAL);
}
}
/**
* Reads a variable common to VarAction2 and Action7/9/D.
*
@ -6210,7 +6181,7 @@ static void ScanInfo(ByteReader *buf)
}
/* GRF IDs starting with 0xFF are reserved for internal TTDPatch use */
if (GB(grfid, 24, 8) == 0xFF) SetBit(_cur.grfconfig->flags, GCF_SYSTEM);
if (GB(grfid, 0, 8) == 0xFF) SetBit(_cur.grfconfig->flags, GCF_SYSTEM);
AddGRFTextToList(&_cur.grfconfig->name->text, 0x7F, grfid, false, name);
@ -8869,11 +8840,10 @@ void LoadNewGRFFile(GRFConfig *config, uint file_index, GrfLoadingStage stage, S
if (_cur.grffile == NULL) usererror("File '%s' lost in cache.\n", filename);
if (stage == GLS_RESERVE && config->status != GCS_INITIALISED) return;
if (stage == GLS_ACTIVATION && !HasBit(config->flags, GCF_RESERVED)) return;
_cur.grffile->is_ottdfile = config->IsOpenTTDBaseGRF();
}
if (file_index > LAST_GRF_SLOT) {
DEBUG(grf, 0, "'%s' is not loaded as the maximum number of GRFs has been reached", filename);
if (file_index >= MAX_FILE_SLOTS) {
DEBUG(grf, 0, "'%s' is not loaded as the maximum number of file slots has been reached", filename);
config->status = GCS_DISABLED;
config->error = new GRFError(STR_NEWGRF_ERROR_MSG_FATAL, STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED);
return;
@ -9215,8 +9185,9 @@ static void AfterLoadGRFs()
* Load all the NewGRFs.
* @param load_index The offset for the first sprite to add.
* @param file_index The Fio index of the first NewGRF to load.
* @param num_baseset Number of NewGRFs at the front of the list to look up in the baseset dir instead of the newgrf dir.
*/
void LoadNewGRF(uint load_index, uint file_index)
void LoadNewGRF(uint load_index, uint file_index, uint num_baseset)
{
/* In case of networking we need to "sync" the start values
* so all NewGRFs are loaded equally. For this we use the
@ -9278,13 +9249,14 @@ void LoadNewGRF(uint load_index, uint file_index)
}
uint slot = file_index;
uint num_non_static = 0;
_cur.stage = stage;
for (GRFConfig *c = _grfconfig; c != NULL; c = c->next) {
if (c->status == GCS_DISABLED || c->status == GCS_NOT_FOUND) continue;
if (stage > GLS_INIT && HasBit(c->flags, GCF_INIT_ONLY)) continue;
Subdirectory subdir = slot == file_index ? BASESET_DIR : NEWGRF_DIR;
Subdirectory subdir = slot < file_index + num_baseset ? BASESET_DIR : NEWGRF_DIR;
if (!FioCheckFileExists(c->filename, subdir)) {
DEBUG(grf, 0, "NewGRF file is missing '%s'; disabling", c->filename);
c->status = GCS_NOT_FOUND;
@ -9292,6 +9264,16 @@ void LoadNewGRF(uint load_index, uint file_index)
}
if (stage == GLS_LABELSCAN) InitNewGRFFile(c);
if (!HasBit(c->flags, GCF_STATIC) && !HasBit(c->flags, GCF_SYSTEM)) {
if (num_non_static == NETWORK_MAX_GRF_COUNT) {
DEBUG(grf, 0, "'%s' is not loaded as the maximum number of non-static GRFs has been reached", c->filename);
c->status = GCS_DISABLED;
c->error = new GRFError(STR_NEWGRF_ERROR_MSG_FATAL, STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED);
continue;
}
num_non_static++;
}
LoadNewGRFFile(c, slot++, stage, subdir);
if (stage == GLS_RESERVE) {
SetBit(c->flags, GCF_RESERVED);

@ -103,7 +103,6 @@ struct GRFLabel {
/** Dynamic data of a loaded NewGRF */
struct GRFFile : ZeroedMemoryAllocator {
char *filename;
bool is_ottdfile;
uint32 grfid;
byte grf_version;
@ -184,7 +183,7 @@ extern GRFLoadedFeatures _loaded_newgrf_features;
byte GetGRFContainerVersion();
void LoadNewGRFFile(struct GRFConfig *config, uint file_index, GrfLoadingStage stage, Subdirectory subdir);
void LoadNewGRF(uint load_index, uint file_index);
void LoadNewGRF(uint load_index, uint file_index, uint num_baseset);
void ReloadNewGRFData(); // in saveload/afterload.cpp
void ResetNewGRFData();
void ResetPersistentNewGRFData();

@ -192,6 +192,7 @@ GRFConfig *_all_grfs;
GRFConfig *_grfconfig;
GRFConfig *_grfconfig_newgame;
GRFConfig *_grfconfig_static;
uint _missing_extra_graphics = 0;
bool _grf_bug_too_many_strings = false;
@ -422,12 +423,12 @@ bool FillGRFDetails(GRFConfig *config, bool is_static, Subdirectory subdir)
config->SetSuitablePalette();
config->FinalizeParameterInfo();
/* Skip if the grfid is 0 (not read) or 0xFFFFFFFF (ttdp system grf) */
if (config->ident.grfid == 0 || config->ident.grfid == 0xFFFFFFFF || config->IsOpenTTDBaseGRF()) return false;
/* Skip if the grfid is 0 (not read) or if it is an internal GRF */
if (config->ident.grfid == 0 || HasBit(config->flags, GCF_SYSTEM)) return false;
if (is_static) {
/* Perform a 'safety scan' for static GRFs */
LoadNewGRFFile(config, 62, GLS_SAFETYSCAN, subdir);
LoadNewGRFFile(config, CONFIG_SLOT, GLS_SAFETYSCAN, subdir);
/* GCF_UNSAFE is set if GLS_SAFETYSCAN finds unsafe actions */
if (HasBit(config->flags, GCF_UNSAFE)) return false;
@ -917,15 +918,6 @@ char *GRFBuildParamList(char *dst, const GRFConfig *c, const char *last)
/** Base GRF ID for OpenTTD's base graphics GRFs. */
static const uint32 OPENTTD_GRAPHICS_BASE_GRF_ID = BSWAP32(0xFF4F5400);
/**
* Checks whether this GRF is a OpenTTD base graphic GRF.
* @return true if and only if it is a base GRF.
*/
bool GRFConfig::IsOpenTTDBaseGRF() const
{
return (this->ident.grfid & 0x00FFFFFF) == OPENTTD_GRAPHICS_BASE_GRF_ID;
}
/**
* Search a textfile file next to this NewGRF.
* @param type The type of the textfile to search for.

@ -179,8 +179,6 @@ struct GRFConfig : ZeroedMemoryAllocator {
void CopyParams(const GRFConfig &src);
bool IsOpenTTDBaseGRF() const;
const char *GetTextfile(TextfileType type) const;
const char *GetName() const;
const char *GetDescription() const;
@ -204,6 +202,7 @@ extern GRFConfig *_all_grfs; ///< First item in list of all scanned New
extern GRFConfig *_grfconfig; ///< First item in list of current GRF set up
extern GRFConfig *_grfconfig_newgame; ///< First item in list of default GRF set up
extern GRFConfig *_grfconfig_static; ///< First item in list of static GRF set up
extern uint _missing_extra_graphics; ///< Number of sprites provided by the fallback extra GRF, i.e. missing in the baseset.
extern bool _grf_bug_too_many_strings;///< NewGRF bug: Insufficient available string IDs for GRFs
@ -218,7 +217,6 @@ struct NewGRFScanCallback {
size_t GRFGetSizeOfDataSection(FILE *f);
void ScanNewGRFFiles(NewGRFScanCallback *callback);
void CheckForMissingSprites();
const GRFConfig *FindGRFConfig(uint32 grfid, FindGRFConfigMode mode, const uint8 *md5sum = NULL, uint32 desired_version = 0);
GRFConfig *GetGRFConfig(uint32 grfid, uint32 mask = 0xFFFFFFFF);
GRFConfig **CopyGRFConfigList(GRFConfig **dst, const GRFConfig *src, bool init_only);

@ -39,10 +39,6 @@
#include <map>
#include "safeguards.h"
/* Maximum number of NewGRFs that may be loaded. Six reserved slots are:
* 0 - config, 1 - sound, 2 - base, 3 - logos, 4 - climate, 5 - extra */
static const int MAX_NEWGRFS = MAX_FILE_SLOTS - 6;
/**
* Show the first NewGRF error we can find.
*/
@ -1282,7 +1278,6 @@ struct NewGRFWindow : public Window, NewGRFScanCallback {
/* All widgets are now enabled, so disable widgets we can't use */
if (this->active_sel == this->actives) this->DisableWidget(WID_NS_MOVE_UP);
if (this->active_sel->next == NULL) this->DisableWidget(WID_NS_MOVE_DOWN);
if (this->active_sel->IsOpenTTDBaseGRF()) this->DisableWidget(WID_NS_REMOVE);
}
this->SetWidgetDisabledState(WID_NS_PRESET_DELETE, this->preset == -1);
@ -1513,7 +1508,7 @@ private:
{
if (this->avail_sel == NULL || !this->editable || HasBit(this->avail_sel->flags, GCF_INVALID)) return false;
int count = 0;
uint count = 0;
GRFConfig **entry = NULL;
GRFConfig **list;
/* Find last entry in the list, checking for duplicate grfid on the way */
@ -1523,10 +1518,10 @@ private:
ShowErrorMessage(STR_NEWGRF_DUPLICATE_GRFID, INVALID_STRING_ID, WL_INFO);
return false;
}
count++;
if (!HasBit((*list)->flags, GCF_STATIC)) count++;
}
if (entry == NULL) entry = list;
if (count >= MAX_NEWGRFS) {
if (count >= NETWORK_MAX_GRF_COUNT) {
ShowErrorMessage(STR_NEWGRF_TOO_MANY_NEWGRFS, INVALID_STRING_ID, WL_INFO);
return false;
}

@ -385,7 +385,6 @@ static void LoadIntroGame(bool load_newgrfs = true)
_pause_mode = PM_UNPAUSED;
_cursor.fix_at = false;
if (load_newgrfs) CheckForMissingSprites();
CheckForMissingGlyphs();
/* Play main theme */
@ -894,8 +893,8 @@ int openttd_main(int argc, char *argv[])
free(musicdriver);
// Check if not too much GRFs are loaded for network game
if (dedicated && CountSelectedGRFs( _grfconfig ) >= MAX_FILE_SLOTS_IN_NETWORK) {
DEBUG(net, 0, "Too many GRF loaded. Max %d are allowed.\nExiting ...", MAX_FILE_SLOTS_IN_NETWORK);
if (dedicated && CountSelectedGRFs(_grfconfig) > NETWORK_MAX_GRF_COUNT) {
DEBUG(net, 0, "Too many GRF loaded. Max %d are allowed.\nExiting ...", NETWORK_MAX_GRF_COUNT);
ShutdownGame();
goto exit_normal;
}

@ -133,7 +133,7 @@ struct AyStar {
* everything */
void *user_path;
void *user_target;
uint user_data[10];
void *user_data;
byte loops_per_tick; ///< How many loops are there called before Main() gives control back to the caller. 0 = until done.
uint max_path_cost; ///< If the g-value goes over this number, it stops searching, 0 = infinite.

@ -39,11 +39,11 @@ struct NPFFindStationOrTileData {
};
/** Indices into AyStar.userdata[] */
enum AyStarUserDataType {
NPF_TYPE = 0, ///< Contains a TransportTypes value
NPF_SUB_TYPE, ///< Contains the sub transport type
NPF_OWNER, ///< Contains an Owner value
NPF_RAILTYPES, ///< Contains a bitmask the compatible RailTypes of the engine when NPF_TYPE == TRANSPORT_RAIL. Unused otherwise.
struct AyStarUserData {
Owner owner;
TransportType type;
RailTypes railtypes;
RoadTypes roadtypes;
};
/** Indices into AyStarNode.userdata[] */
@ -158,13 +158,14 @@ static int32 NPFCalcStationOrTileHeuristic(AyStar *as, AyStarNode *current, Open
TileIndex from = current->tile;
TileIndex to = fstd->dest_coords;
uint dist;
AyStarUserData *user = (AyStarUserData *)as->user_data;
/* for train-stations, we are going to aim for the closest station tile */
if (as->user_data[NPF_TYPE] != TRANSPORT_WATER && fstd->station_index != INVALID_STATION) {
if (user->type != TRANSPORT_WATER && fstd->station_index != INVALID_STATION) {
to = CalcClosestStationTile(fstd->station_index, from, fstd->station_type);
}
if (as->user_data[NPF_TYPE] == TRANSPORT_ROAD) {
if (user->type == TRANSPORT_ROAD) {
/* Since roads only have diagonal pieces, we use manhattan distance here */
dist = DistanceManhattan(from, to) * NPF_TILE_LENGTH;
} else {
@ -533,9 +534,10 @@ static int32 NPFRailPathCost(AyStar *as, AyStarNode *current, OpenListNode *pare
/* Will find any depot */
static int32 NPFFindDepot(AyStar *as, OpenListNode *current)
{
AyStarUserData *user = (AyStarUserData *)as->user_data;
/* It's not worth caching the result with NPF_FLAG_IS_TARGET here as below,
* since checking the cache not that much faster than the actual check */
return IsDepotTypeTile(current->path.node.tile, (TransportType)as->user_data[NPF_TYPE]) ?
return IsDepotTypeTile(current->path.node.tile, user->type) ?
AYSTAR_FOUND_END_NODE : AYSTAR_DONE;
}
@ -613,6 +615,7 @@ static void ClearPathReservation(const PathNode *start, const PathNode *end)
*/
static void NPFSaveTargetData(AyStar *as, OpenListNode *current)
{
AyStarUserData *user = (AyStarUserData *)as->user_data;
NPFFoundTargetData *ftd = (NPFFoundTargetData*)as->user_path;
ftd->best_trackdir = (Trackdir)current->path.node.user_data[NPF_TRACKDIR_CHOICE];
ftd->best_path_dist = current->g;
@ -620,7 +623,7 @@ static void NPFSaveTargetData(AyStar *as, OpenListNode *current)
ftd->node = current->path.node;
ftd->res_okay = false;
if (as->user_target != NULL && ((NPFFindStationOrTileData*)as->user_target)->reserve_path && as->user_data[NPF_TYPE] == TRANSPORT_RAIL) {
if (as->user_target != NULL && ((NPFFindStationOrTileData*)as->user_target)->reserve_path && user->type == TRANSPORT_RAIL) {
/* Path reservation is requested. */
const Train *v = Train::From(((NPFFindStationOrTileData *)as->user_target)->v);
@ -774,28 +777,25 @@ static inline bool ForceReverse(TileIndex tile, DiagDirection dir, TransportType
*
* @param tile The tile of interest.
* @param dir The direction in which the vehicle drives onto a tile.
* @param type The transporttype of the vehicle.
* @param subtype For TRANSPORT_ROAD the compatible RoadTypes of the vehicle.
* @param railtypes For TRANSPORT_RAIL the compatible RailTypes of the vehicle.
* @param owner The owner of the vehicle.
* @param user Vehicle information.
* @return true iff the vehicle can enter the tile.
*/
static bool CanEnterTile(TileIndex tile, DiagDirection dir, TransportType type, uint subtype, RailTypes railtypes, Owner owner)
static bool CanEnterTile(TileIndex tile, DiagDirection dir, AyStarUserData *user)
{
/* Check tunnel entries and bridge ramps */
if (IsTileType(tile, MP_TUNNELBRIDGE) && GetTunnelBridgeDirection(tile) != dir) return false;
/* Test ownership */
if (!CanEnterTileOwnerCheck(owner, tile, dir)) return false;
if (!CanEnterTileOwnerCheck(user->owner, tile, dir)) return false;
/* check correct rail type (mono, maglev, etc) */
if (type == TRANSPORT_RAIL) {
if (user->type == TRANSPORT_RAIL) {
RailType rail_type = GetTileRailType(tile);
if (!HasBit(railtypes, rail_type)) return false;
if (!HasBit(user->railtypes, rail_type)) return false;
}
/* Depots, standard roadstops and single tram bits can only be entered from one direction */
DiagDirection single_entry = GetTileSingleEntry(tile, type, subtype);
DiagDirection single_entry = GetTileSingleEntry(tile, user->type, user->roadtypes);
if (single_entry != INVALID_DIAGDIR && single_entry != ReverseDiagDir(dir)) return false;
return true;
@ -856,6 +856,7 @@ static TrackdirBits GetDriveableTrackdirBits(TileIndex dst_tile, Trackdir src_tr
* copy AyStarNode.user_data[NPF_NODE_FLAGS] from the parent */
static void NPFFollowTrack(AyStar *aystar, OpenListNode *current)
{
AyStarUserData *user = (AyStarUserData *)aystar->user_data;
/* We leave src_tile on track src_trackdir in direction src_exitdir */
Trackdir src_trackdir = current->path.node.direction;
TileIndex src_tile = current->path.node.tile;
@ -867,8 +868,8 @@ static void NPFFollowTrack(AyStar *aystar, OpenListNode *current)
bool ignore_src_tile = (current->path.parent == NULL && NPFGetFlag(&current->path.node, NPF_FLAG_IGNORE_START_TILE));
/* Information about the vehicle: TransportType (road/rail/water) and SubType (compatible rail/road types) */
TransportType type = (TransportType)aystar->user_data[NPF_TYPE];
uint subtype = aystar->user_data[NPF_SUB_TYPE];
TransportType type = user->type;
uint subtype = user->roadtypes;
/* Initialize to 0, so we can jump out (return) somewhere an have no neighbours */
aystar->num_neighbours = 0;
@ -896,7 +897,7 @@ static void NPFFollowTrack(AyStar *aystar, OpenListNode *current)
/* We leave src_tile in src_exitdir and reach dst_tile */
dst_tile = AddTileIndexDiffCWrap(src_tile, TileIndexDiffCByDiagDir(src_exitdir));
if (dst_tile != INVALID_TILE && !CanEnterTile(dst_tile, src_exitdir, type, subtype, (RailTypes)aystar->user_data[NPF_RAILTYPES], (Owner)aystar->user_data[NPF_OWNER])) dst_tile = INVALID_TILE;
if (dst_tile != INVALID_TILE && !CanEnterTile(dst_tile, src_exitdir, user)) dst_tile = INVALID_TILE;
if (dst_tile == INVALID_TILE) {
/* We cannot enter the next tile. Road vehicles can reverse, others reach dead end */
@ -971,7 +972,7 @@ static void NPFFollowTrack(AyStar *aystar, OpenListNode *current)
* multiple targets that are spread around, we should perform a breadth first
* search by specifiying CalcZero as our heuristic.
*/
static NPFFoundTargetData NPFRouteInternal(AyStarNode *start1, bool ignore_start_tile1, AyStarNode *start2, bool ignore_start_tile2, NPFFindStationOrTileData *target, AyStar_EndNodeCheck target_proc, AyStar_CalculateH heuristic_proc, TransportType type, uint sub_type, Owner owner, RailTypes railtypes, uint reverse_penalty)
static NPFFoundTargetData NPFRouteInternal(AyStarNode *start1, bool ignore_start_tile1, AyStarNode *start2, bool ignore_start_tile2, NPFFindStationOrTileData *target, AyStar_EndNodeCheck target_proc, AyStar_CalculateH heuristic_proc, AyStarUserData *user, uint reverse_penalty)
{
int r;
NPFFoundTargetData result;
@ -981,7 +982,7 @@ static NPFFoundTargetData NPFRouteInternal(AyStarNode *start1, bool ignore_start
_npf_aystar.EndNodeCheck = target_proc;
_npf_aystar.FoundEndNode = NPFSaveTargetData;
_npf_aystar.GetNeighbours = NPFFollowTrack;
switch (type) {
switch (user->type) {
default: NOT_REACHED();
case TRANSPORT_RAIL: _npf_aystar.CalculateG = NPFRailPathCost; break;
case TRANSPORT_ROAD: _npf_aystar.CalculateG = NPFRoadPathCost; break;
@ -1013,10 +1014,7 @@ static NPFFoundTargetData NPFRouteInternal(AyStarNode *start1, bool ignore_start
_npf_aystar.user_target = target;
/* Initialize user_data */
_npf_aystar.user_data[NPF_TYPE] = type;
_npf_aystar.user_data[NPF_SUB_TYPE] = sub_type;
_npf_aystar.user_data[NPF_OWNER] = owner;
_npf_aystar.user_data[NPF_RAILTYPES] = railtypes;
_npf_aystar.user_data = user;
/* GO! */
r = _npf_aystar.Main();
@ -1037,7 +1035,7 @@ static NPFFoundTargetData NPFRouteInternal(AyStarNode *start1, bool ignore_start
/* Will search as below, but with two start nodes, the second being the
* reverse. Look at the NPF_FLAG_REVERSE flag in the result node to see which
* direction was taken (NPFGetFlag(result.node, NPF_FLAG_REVERSE)) */
static NPFFoundTargetData NPFRouteToStationOrTileTwoWay(TileIndex tile1, Trackdir trackdir1, bool ignore_start_tile1, TileIndex tile2, Trackdir trackdir2, bool ignore_start_tile2, NPFFindStationOrTileData *target, TransportType type, uint sub_type, Owner owner, RailTypes railtypes)
static NPFFoundTargetData NPFRouteToStationOrTileTwoWay(TileIndex tile1, Trackdir trackdir1, bool ignore_start_tile1, TileIndex tile2, Trackdir trackdir2, bool ignore_start_tile2, NPFFindStationOrTileData *target, AyStarUserData *user)
{
AyStarNode start1;
AyStarNode start2;
@ -1051,15 +1049,15 @@ static NPFFoundTargetData NPFRouteToStationOrTileTwoWay(TileIndex tile1, Trackdi
start2.direction = trackdir2;
start2.user_data[NPF_TRACKDIR_CHOICE] = INVALID_TRACKDIR;
return NPFRouteInternal(&start1, ignore_start_tile1, (IsValidTile(tile2) ? &start2 : NULL), ignore_start_tile2, target, NPFFindStationOrTile, NPFCalcStationOrTileHeuristic, type, sub_type, owner, railtypes, 0);
return NPFRouteInternal(&start1, ignore_start_tile1, (IsValidTile(tile2) ? &start2 : NULL), ignore_start_tile2, target, NPFFindStationOrTile, NPFCalcStationOrTileHeuristic, user, 0);
}
/* Will search from the given tile and direction, for a route to the given
* station for the given transport type. See the declaration of
* NPFFoundTargetData above for the meaning of the result. */
static NPFFoundTargetData NPFRouteToStationOrTile(TileIndex tile, Trackdir trackdir, bool ignore_start_tile, NPFFindStationOrTileData *target, TransportType type, uint sub_type, Owner owner, RailTypes railtypes)
static NPFFoundTargetData NPFRouteToStationOrTile(TileIndex tile, Trackdir trackdir, bool ignore_start_tile, NPFFindStationOrTileData *target, AyStarUserData *user)
{
return NPFRouteToStationOrTileTwoWay(tile, trackdir, ignore_start_tile, INVALID_TILE, INVALID_TRACKDIR, false, target, type, sub_type, owner, railtypes);
return NPFRouteToStationOrTileTwoWay(tile, trackdir, ignore_start_tile, INVALID_TILE, INVALID_TRACKDIR, false, target, user);
}
/* Search using breadth first. Good for little track choice and inaccurate
@ -1069,7 +1067,7 @@ static NPFFoundTargetData NPFRouteToStationOrTile(TileIndex tile, Trackdir track
* reverse_penalty applied (NPF_TILE_LENGTH is the equivalent of one full
* tile).
*/
static NPFFoundTargetData NPFRouteToDepotBreadthFirstTwoWay(TileIndex tile1, Trackdir trackdir1, bool ignore_start_tile1, TileIndex tile2, Trackdir trackdir2, bool ignore_start_tile2, NPFFindStationOrTileData *target, TransportType type, uint sub_type, Owner owner, RailTypes railtypes, uint reverse_penalty)
static NPFFoundTargetData NPFRouteToDepotBreadthFirstTwoWay(TileIndex tile1, Trackdir trackdir1, bool ignore_start_tile1, TileIndex tile2, Trackdir trackdir2, bool ignore_start_tile2, NPFFindStationOrTileData *target, AyStarUserData *user, uint reverse_penalty)
{
AyStarNode start1;
AyStarNode start2;
@ -1085,7 +1083,7 @@ static NPFFoundTargetData NPFRouteToDepotBreadthFirstTwoWay(TileIndex tile1, Tra
/* perform a breadth first search. Target is NULL,
* since we are just looking for any depot...*/
return NPFRouteInternal(&start1, ignore_start_tile1, (IsValidTile(tile2) ? &start2 : NULL), ignore_start_tile2, target, NPFFindDepot, NPFCalcZero, type, sub_type, owner, railtypes, reverse_penalty);
return NPFRouteInternal(&start1, ignore_start_tile1, (IsValidTile(tile2) ? &start2 : NULL), ignore_start_tile2, target, NPFFindDepot, NPFCalcZero, user, reverse_penalty);
}
void InitializeNPF()
@ -1134,7 +1132,8 @@ FindDepotData NPFRoadVehicleFindNearestDepot(const RoadVehicle *v, int max_penal
{
Trackdir trackdir = v->GetVehicleTrackdir();
NPFFoundTargetData ftd = NPFRouteToDepotBreadthFirstTwoWay(v->tile, trackdir, false, v->tile, ReverseTrackdir(trackdir), false, NULL, TRANSPORT_ROAD, v->compatible_roadtypes, v->owner, INVALID_RAILTYPES, 0);
AyStarUserData user = { v->owner, TRANSPORT_ROAD, INVALID_RAILTYPES, v->compatible_roadtypes };
NPFFoundTargetData ftd = NPFRouteToDepotBreadthFirstTwoWay(v->tile, trackdir, false, v->tile, ReverseTrackdir(trackdir), false, NULL, &user, 0);
if (ftd.best_bird_dist != 0) return FindDepotData();
@ -1153,7 +1152,8 @@ Trackdir NPFRoadVehicleChooseTrack(const RoadVehicle *v, TileIndex tile, DiagDir
NPFFillWithOrderData(&fstd, v);
Trackdir trackdir = DiagDirToDiagTrackdir(enterdir);
NPFFoundTargetData ftd = NPFRouteToStationOrTile(tile - TileOffsByDiagDir(enterdir), trackdir, true, &fstd, TRANSPORT_ROAD, v->compatible_roadtypes, v->owner, INVALID_RAILTYPES);
AyStarUserData user = { v->owner, TRANSPORT_ROAD, INVALID_RAILTYPES, v->compatible_roadtypes };
NPFFoundTargetData ftd = NPFRouteToStationOrTile(tile - TileOffsByDiagDir(enterdir), trackdir, true, &fstd, &user);
if (ftd.best_trackdir == INVALID_TRACKDIR) {
/* We are already at our target. Just do something
* @todo: maybe display error?
@ -1180,7 +1180,8 @@ Track NPFShipChooseTrack(const Ship *v, TileIndex tile, DiagDirection enterdir,
NPFFillWithOrderData(&fstd, v);
NPFFoundTargetData ftd = NPFRouteToStationOrTile(tile - TileOffsByDiagDir(enterdir), trackdir, true, &fstd, TRANSPORT_WATER, 0, v->owner, INVALID_RAILTYPES);
AyStarUserData user = { v->owner, TRANSPORT_WATER, INVALID_RAILTYPES, ROADTYPES_NONE };
NPFFoundTargetData ftd = NPFRouteToStationOrTile(tile - TileOffsByDiagDir(enterdir), trackdir, true, &fstd, &user);
/* If ftd.best_bird_dist is 0, we found our target and ftd.best_trackdir contains
* the direction we need to take to get there, if ftd.best_bird_dist is not 0,
@ -1203,7 +1204,8 @@ bool NPFShipCheckReverse(const Ship *v)
assert(trackdir != INVALID_TRACKDIR);
assert(trackdir_rev != INVALID_TRACKDIR);
ftd = NPFRouteToStationOrTileTwoWay(v->tile, trackdir, false, v->tile, trackdir_rev, false, &fstd, TRANSPORT_WATER, 0, v->owner, INVALID_RAILTYPES);
AyStarUserData user = { v->owner, TRANSPORT_WATER, INVALID_RAILTYPES, ROADTYPES_NONE };
ftd = NPFRouteToStationOrTileTwoWay(v->tile, trackdir, false, v->tile, trackdir_rev, false, &fstd, &user);
/* If we didn't find anything, just keep on going straight ahead, otherwise take the reverse flag */
return ftd.best_bird_dist == 0 && NPFGetFlag(&ftd.node, NPF_FLAG_REVERSE);
}
@ -1220,7 +1222,8 @@ FindDepotData NPFTrainFindNearestDepot(const Train *v, int max_penalty)
fstd.reserve_path = false;
assert(trackdir != INVALID_TRACKDIR);
NPFFoundTargetData ftd = NPFRouteToDepotBreadthFirstTwoWay(v->tile, trackdir, false, last->tile, trackdir_rev, false, &fstd, TRANSPORT_RAIL, 0, v->owner, v->compatible_railtypes, NPF_INFINITE_PENALTY);
AyStarUserData user = { v->owner, TRANSPORT_RAIL, v->compatible_railtypes, ROADTYPES_NONE };
NPFFoundTargetData ftd = NPFRouteToDepotBreadthFirstTwoWay(v->tile, trackdir, false, last->tile, trackdir_rev, false, &fstd, &user, NPF_INFINITE_PENALTY);
if (ftd.best_bird_dist != 0) return FindDepotData();
/* Found target */
@ -1252,7 +1255,8 @@ bool NPFTrainFindNearestSafeTile(const Train *v, TileIndex tile, Trackdir trackd
/* perform a breadth first search. Target is NULL,
* since we are just looking for any safe tile...*/
return NPFRouteInternal(&start1, true, NULL, false, &fstd, NPFFindSafeTile, NPFCalcZero, TRANSPORT_RAIL, 0, v->owner, railtypes, 0).res_okay;
AyStarUserData user = { v->owner, TRANSPORT_RAIL, railtypes, ROADTYPES_NONE };
return NPFRouteInternal(&start1, true, NULL, false, &fstd, NPFFindSafeTile, NPFCalcZero, &user, 0).res_okay;
}
bool NPFTrainCheckReverse(const Train *v)
@ -1268,7 +1272,8 @@ bool NPFTrainCheckReverse(const Train *v)
assert(trackdir != INVALID_TRACKDIR);
assert(trackdir_rev != INVALID_TRACKDIR);
ftd = NPFRouteToStationOrTileTwoWay(v->tile, trackdir, false, last->tile, trackdir_rev, false, &fstd, TRANSPORT_RAIL, 0, v->owner, v->compatible_railtypes);
AyStarUserData user = { v->owner, TRANSPORT_RAIL, v->compatible_railtypes, ROADTYPES_NONE };
ftd = NPFRouteToStationOrTileTwoWay(v->tile, trackdir, false, last->tile, trackdir_rev, false, &fstd, &user);
/* If we didn't find anything, just keep on going straight ahead, otherwise take the reverse flag */
return ftd.best_bird_dist == 0 && NPFGetFlag(&ftd.node, NPF_FLAG_REVERSE);
}
@ -1281,7 +1286,8 @@ Track NPFTrainChooseTrack(const Train *v, TileIndex tile, DiagDirection enterdir
PBSTileInfo origin = FollowTrainReservation(v);
assert(IsValidTrackdir(origin.trackdir));
NPFFoundTargetData ftd = NPFRouteToStationOrTile(origin.tile, origin.trackdir, true, &fstd, TRANSPORT_RAIL, 0, v->owner, v->compatible_railtypes);
AyStarUserData user = { v->owner, TRANSPORT_RAIL, v->compatible_railtypes, ROADTYPES_NONE };
NPFFoundTargetData ftd = NPFRouteToStationOrTile(origin.tile, origin.trackdir, true, &fstd, &user);
if (target != NULL) {
target->tile = ftd.node.tile;

@ -467,7 +467,7 @@ CommandCost CmdBuildSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, u
CommandCost ret = CheckTileOwnership(tile);
if (ret.Failed()) return ret;
if (!IsPlainRail(tile)) return CMD_ERROR;
if (!IsPlainRail(tile)) return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); // just get appropriate error message
if (!IsCompatibleRail(GetRailType(tile), railtype)) return_cmd_error(STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION);

@ -956,15 +956,11 @@ struct BuildRoadStationWindow : public PickerWindowBase {
if (_cur_roadtype == ROADTYPE_TRAM && _road_station_picker_orientation < DIAGDIR_END) {
_road_station_picker_orientation = DIAGDIR_END;
}
this->SetWidgetsDisabledState(_cur_roadtype == ROADTYPE_TRAM,
WID_BROS_STATION_NE,
WID_BROS_STATION_SE,
WID_BROS_STATION_SW,
WID_BROS_STATION_NW,
WIDGET_LIST_END);
this->GetWidget<NWidgetCore>(WID_BROS_CAPTION)->widget_data = _road_type_infos[_cur_roadtype].picker_title[rs];
for (uint i = WID_BROS_STATION_NE; i < WID_BROS_LT_OFF; i++) this->GetWidget<NWidgetCore>(i)->tool_tip = _road_type_infos[_cur_roadtype].picker_tooltip[rs];
for (uint i = (_cur_roadtype == ROADTYPE_TRAM ? WID_BROS_STATION_X : WID_BROS_STATION_NE); i < WID_BROS_LT_OFF; i++) {
this->GetWidget<NWidgetCore>(i)->tool_tip = _road_type_infos[_cur_roadtype].picker_tooltip[rs];
}
this->LowerWidget(_road_station_picker_orientation + WID_BROS_STATION_NE);
this->LowerWidget(_settings_client.gui.station_show_coverage + WID_BROS_LT_OFF);
@ -1061,7 +1057,7 @@ struct BuildRoadStationWindow : public PickerWindowBase {
};
/** Widget definition of the build road station window */
static const NWidgetPart _nested_rv_station_picker_widgets[] = {
static const NWidgetPart _nested_road_station_picker_widgets[] = {
NWidget(NWID_HORIZONTAL),
NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN),
NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, WID_BROS_CAPTION),
@ -1070,17 +1066,55 @@ static const NWidgetPart _nested_rv_station_picker_widgets[] = {
NWidget(NWID_SPACER), SetMinimalSize(0, 3),
NWidget(NWID_HORIZONTAL), SetPIP(0, 2, 0),
NWidget(NWID_SPACER), SetFill(1, 0),
NWidget(WWT_PANEL, COLOUR_GREY, WID_BROS_STATION_NW), SetMinimalSize(66, 50), EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, WID_BROS_STATION_NE), SetMinimalSize(66, 50), EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, WID_BROS_STATION_X), SetMinimalSize(66, 50), EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, WID_BROS_STATION_NW), SetMinimalSize(66, 50), SetFill(0, 0), EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, WID_BROS_STATION_NE), SetMinimalSize(66, 50), SetFill(0, 0), EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, WID_BROS_STATION_X), SetMinimalSize(66, 50), SetFill(0, 0), EndContainer(),
NWidget(NWID_SPACER), SetFill(1, 0),
EndContainer(),
NWidget(NWID_SPACER), SetMinimalSize(0, 2),
NWidget(NWID_HORIZONTAL), SetPIP(0, 2, 0),
NWidget(NWID_SPACER), SetFill(1, 0),
NWidget(WWT_PANEL, COLOUR_GREY, WID_BROS_STATION_SW), SetMinimalSize(66, 50), EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, WID_BROS_STATION_SE), SetMinimalSize(66, 50), EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, WID_BROS_STATION_Y), SetMinimalSize(66, 50), EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, WID_BROS_STATION_SW), SetMinimalSize(66, 50), SetFill(0, 0), EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, WID_BROS_STATION_SE), SetMinimalSize(66, 50), SetFill(0, 0), EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, WID_BROS_STATION_Y), SetMinimalSize(66, 50), SetFill(0, 0), EndContainer(),
NWidget(NWID_SPACER), SetFill(1, 0),
EndContainer(),
NWidget(NWID_SPACER), SetMinimalSize(0, 1),
NWidget(NWID_HORIZONTAL), SetPIP(2, 0, 2),
NWidget(WWT_LABEL, COLOUR_DARK_GREEN, WID_BROS_INFO), SetMinimalSize(140, 14), SetDataTip(STR_STATION_BUILD_COVERAGE_AREA_TITLE, STR_NULL),
NWidget(NWID_SPACER), SetFill(1, 0),
EndContainer(),
NWidget(NWID_HORIZONTAL), SetPIP(2, 0, 2),
NWidget(NWID_SPACER), SetFill(1, 0),
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BROS_LT_OFF), SetMinimalSize(60, 12),
SetDataTip(STR_STATION_BUILD_COVERAGE_OFF, STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP),
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BROS_LT_ON), SetMinimalSize(60, 12),
SetDataTip(STR_STATION_BUILD_COVERAGE_ON, STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP),
NWidget(NWID_SPACER), SetFill(1, 0),
EndContainer(),
NWidget(NWID_SPACER), SetMinimalSize(0, 10), SetResize(0, 1),
EndContainer(),
};
static WindowDesc _road_station_picker_desc(
WDP_AUTO, NULL, 0, 0,
WC_BUS_STATION, WC_BUILD_TOOLBAR,
WDF_CONSTRUCTION,
_nested_road_station_picker_widgets, lengthof(_nested_road_station_picker_widgets)
);
/** Widget definition of the build tram station window */
static const NWidgetPart _nested_tram_station_picker_widgets[] = {
NWidget(NWID_HORIZONTAL),
NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN),
NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, WID_BROS_CAPTION),
EndContainer(),
NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_BROS_BACKGROUND),
NWidget(NWID_SPACER), SetMinimalSize(0, 3),
NWidget(NWID_HORIZONTAL), SetPIP(0, 2, 0),
NWidget(NWID_SPACER), SetFill(1, 0),
NWidget(WWT_PANEL, COLOUR_GREY, WID_BROS_STATION_X), SetMinimalSize(66, 50), SetFill(0, 0), EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, WID_BROS_STATION_Y), SetMinimalSize(66, 50), SetFill(0, 0), EndContainer(),
NWidget(NWID_SPACER), SetFill(1, 0),
EndContainer(),
NWidget(NWID_SPACER), SetMinimalSize(0, 1),
@ -1100,16 +1134,16 @@ static const NWidgetPart _nested_rv_station_picker_widgets[] = {
EndContainer(),
};
static WindowDesc _rv_station_picker_desc(
static WindowDesc _tram_station_picker_desc(
WDP_AUTO, NULL, 0, 0,
WC_BUS_STATION, WC_BUILD_TOOLBAR,
WDF_CONSTRUCTION,
_nested_rv_station_picker_widgets, lengthof(_nested_rv_station_picker_widgets)
_nested_tram_station_picker_widgets, lengthof(_nested_tram_station_picker_widgets)
);
static void ShowRVStationPicker(Window *parent, RoadStopType rs)
{
new BuildRoadStationWindow(&_rv_station_picker_desc, parent, rs);
new BuildRoadStationWindow(_cur_roadtype == ROADTYPE_ROAD ? &_road_station_picker_desc : &_tram_station_picker_desc, parent, rs);
}
void InitializeRoadGui()

@ -584,6 +584,8 @@ void SQGSWindow_Register(Squirrel *engine)
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SGI_ARCTIC_LANDSCAPE, "WID_SGI_ARCTIC_LANDSCAPE");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SGI_TROPIC_LANDSCAPE, "WID_SGI_TROPIC_LANDSCAPE");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SGI_TOYLAND_LANDSCAPE, "WID_SGI_TOYLAND_LANDSCAPE");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SGI_BASESET_SELECTION, "WID_SGI_BASESET_SELECTION");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SGI_BASESET, "WID_SGI_BASESET");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SGI_TRANSLATION_SELECTION, "WID_SGI_TRANSLATION_SELECTION");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SGI_TRANSLATION, "WID_SGI_TRANSLATION");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SGI_OPTIONS, "WID_SGI_OPTIONS");

@ -1521,8 +1521,10 @@ public:
WID_SGI_ARCTIC_LANDSCAPE = ::WID_SGI_ARCTIC_LANDSCAPE, ///< Select arctic landscape button.
WID_SGI_TROPIC_LANDSCAPE = ::WID_SGI_TROPIC_LANDSCAPE, ///< Select tropic landscape button.
WID_SGI_TOYLAND_LANDSCAPE = ::WID_SGI_TOYLAND_LANDSCAPE, ///< Select toyland landscape button.
WID_SGI_BASESET_SELECTION = ::WID_SGI_BASESET_SELECTION, ///< Baseset selection.
WID_SGI_BASESET = ::WID_SGI_BASESET, ///< Baseset errors.
WID_SGI_TRANSLATION_SELECTION = ::WID_SGI_TRANSLATION_SELECTION, ///< Translation selection.
WID_SGI_TRANSLATION = ::WID_SGI_TRANSLATION, ///< Translation.
WID_SGI_TRANSLATION = ::WID_SGI_TRANSLATION, ///< Translation errors.
WID_SGI_OPTIONS = ::WID_SGI_OPTIONS, ///< Options button.
WID_SGI_HIGHSCORE = ::WID_SGI_HIGHSCORE, ///< Highscore button.
WID_SGI_SETTINGS_OPTIONS = ::WID_SGI_SETTINGS_OPTIONS, ///< Settings button.

@ -149,6 +149,25 @@ uint GetOriginFileSlot(SpriteID sprite)
return GetSpriteCache(sprite)->file_slot;
}
/**
* Count the sprites which originate from a specific file slot in a range of SpriteIDs.
* @param file_slot FIOS file slot.
* @param begin First sprite in range.
* @param end First sprite not in range.
* @return Number of sprites.
*/
uint GetSpriteCountForSlot(uint file_slot, SpriteID begin, SpriteID end)
{
uint count = 0;
for (SpriteID i = begin; i != end; i++) {
if (SpriteExists(i)) {
SpriteCache *sc = GetSpriteCache(i);
if (sc->file_slot == file_slot) count++;
}
}
return count;
}
/**
* Get a reasonable (upper bound) estimate of the maximum
* SpriteID used in OpenTTD; there will be no sprites with

@ -32,6 +32,7 @@ bool SpriteExists(SpriteID sprite);
SpriteType GetSpriteType(SpriteID sprite);
uint GetOriginFileSlot(SpriteID sprite);
uint GetSpriteCountForSlot(uint file_slot, SpriteID begin, SpriteID end);
uint GetMaxSpriteID();

@ -24,8 +24,10 @@ enum SelectGameIntroWidgets {
WID_SGI_ARCTIC_LANDSCAPE, ///< Select arctic landscape button.
WID_SGI_TROPIC_LANDSCAPE, ///< Select tropic landscape button.
WID_SGI_TOYLAND_LANDSCAPE, ///< Select toyland landscape button.
WID_SGI_BASESET_SELECTION, ///< Baseset selection.
WID_SGI_BASESET, ///< Baseset errors.
WID_SGI_TRANSLATION_SELECTION, ///< Translation selection.
WID_SGI_TRANSLATION, ///< Translation.
WID_SGI_TRANSLATION, ///< Translation errors.
WID_SGI_OPTIONS, ///< Options button.
WID_SGI_HIGHSCORE, ///< Highscore button.
WID_SGI_SETTINGS_OPTIONS, ///< Settings button.

Loading…
Cancel
Save