Merge branch 'openttd'
This commit is contained in:
37
.changelog
37
.changelog
@@ -1,3 +1,40 @@
|
|||||||
|
12.0-RC1 (2021-09-25)
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
Feature: Display icon/text whether vehicle is lost in vehicle (list) window (#9543)
|
||||||
|
Feature: [MacOS] Add selected toolbar buttons to MacBook Pro Touch Bar (#9511)
|
||||||
|
Feature: Button to open order window from vehicle shared orders window (#9325)
|
||||||
|
Feature: Ctrl-Clicking shared order vehicle list opens order window (#9325)
|
||||||
|
Feature: Multiple rotating views on title screen (#8980)
|
||||||
|
Feature: Hide block signals in GUI by default (#8688)
|
||||||
|
Add: [Script] Allow GameScripts to build neutral objects (#9568)
|
||||||
|
Add: [Network] Allow sending chat messages via admin port (#9563)
|
||||||
|
Add: [AI/GS] Missing water related functions and objects (#8390)
|
||||||
|
Fix: Industry funding window did not update when changing funding method (#9572)
|
||||||
|
Fix #9562: [NewGRF] Handle case of invalid Action2 with zero results (#9564)
|
||||||
|
Fix: Incorrect error messages when placing water in scenario editor (#9560)
|
||||||
|
Fix #9484: Update locale currencies settings config map (#9559)
|
||||||
|
Fix: Prevent train reversing when entirely inside a train depot (#9557)
|
||||||
|
Fix: [Network] Add back 'Spectate' option to company toolbar menu (#9556)
|
||||||
|
Fix #9463: [Win32] Work around XAudio2 crashes (#9549)
|
||||||
|
Fix #8603: Don't give focus to text filter when opening Object GUI (#9547)
|
||||||
|
Fix #9241: Grove and forest tree brushes did not also create rainforest terrain (#9542)
|
||||||
|
Fix: [Network] Several crashes in our network code (#9534, #9456)
|
||||||
|
Fix #9527: Crash when trying to place multi-tile objects at map edge (#9529)
|
||||||
|
Fix: [Network] SendCmdNames only sent one name per packet (#9528)
|
||||||
|
Fix #9407: Desync when founding a town nearby a station (#9526)
|
||||||
|
Fix #9521: Don't load at just removed docks that were part of a multi-dock station (#9524)
|
||||||
|
Fix: Ships always tried to avoid docking tiles when pathfinding (even if nothing was on them) (#9522)
|
||||||
|
Fix: [Network] Convert server_advertise to server_game_type in config file (#9515)
|
||||||
|
Fix #9490: [Network] A full server couldn't be queried (#9508)
|
||||||
|
Fix: [Network] Don't show GameScript " (v0)" for old servers (#9507)
|
||||||
|
Fix: [Network] Show query errors in the server listing instead of error popup (#9506)
|
||||||
|
Fix: [Network] Crash when last-joined server was no longer available (#9503)
|
||||||
|
Fix #9501: [Network] Crash when more than one game-info query was pending (#9502)
|
||||||
|
Fix: Wrong error message when building canals over ship depots / locks (#9410)
|
||||||
|
Fix: Reduce cost of building canals over objects on sea (#9410)
|
||||||
|
Change: [Linkgraph] Delete links only served by vehicles stopped in depot (#9499)
|
||||||
|
|
||||||
|
|
||||||
12.0-beta2 (2021-08-19)
|
12.0-beta2 (2021-08-19)
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
Feature: [Linkgraph] Prioritize faster routes for passengers, mail and express cargo (#9457)
|
Feature: [Linkgraph] Prioritize faster routes for passengers, mail and express cargo (#9457)
|
||||||
|
|||||||
1
.github/PULL_REQUEST_TEMPLATE.md
vendored
1
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -39,6 +39,7 @@ Describe here
|
|||||||
|
|
||||||
Some things are not automated, and forgotten often. This list is a reminder for the reviewers.
|
Some things are not automated, and forgotten often. This list is a reminder for the reviewers.
|
||||||
* The bug fix is important enough to be backported? (label: 'backport requested')
|
* The bug fix is important enough to be backported? (label: 'backport requested')
|
||||||
|
* This PR touches english.txt or translations? Check the [guidelines](https://github.com/OpenTTD/OpenTTD/blob/master/docs/eints.md)
|
||||||
* This PR affects the save game format? (label 'savegame upgrade')
|
* This PR affects the save game format? (label 'savegame upgrade')
|
||||||
* This PR affects the GS/AI API? (label 'needs review: Script API')
|
* This PR affects the GS/AI API? (label 'needs review: Script API')
|
||||||
* ai_changelog.hpp, gs_changelog.hpp need updating.
|
* ai_changelog.hpp, gs_changelog.hpp need updating.
|
||||||
|
|||||||
221
.github/unused-strings.py
vendored
Normal file
221
.github/unused-strings.py
vendored
Normal file
@@ -0,0 +1,221 @@
|
|||||||
|
"""
|
||||||
|
Script to scan the OpenTTD source-tree for STR_ entries that are defined but
|
||||||
|
no longer used.
|
||||||
|
|
||||||
|
This is not completely trivial, as OpenTTD references a lot of strings in
|
||||||
|
relation to another string. The most obvious example of this is a list. OpenTTD
|
||||||
|
only references the first entry in the list, and does "+ <var>" to get to the
|
||||||
|
correct string.
|
||||||
|
|
||||||
|
There are other ways OpenTTD does use relative values. This script tries to
|
||||||
|
account for all of them, to give the best approximation we have for "this
|
||||||
|
string is unused".
|
||||||
|
"""
|
||||||
|
|
||||||
|
import glob
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
|
||||||
|
from enum import Enum
|
||||||
|
|
||||||
|
LENGTH_NAME_LOOKUP = {
|
||||||
|
"VEHICLE_TYPES": 4,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class SkipType(Enum):
|
||||||
|
NONE = 1
|
||||||
|
LENGTH = 2
|
||||||
|
EXTERNAL = 3
|
||||||
|
ZERO_IS_SPECIAL = 4
|
||||||
|
EXPECT_NEWLINE = 5
|
||||||
|
|
||||||
|
|
||||||
|
def read_language_file(filename, strings_found, errors):
|
||||||
|
strings_defined = []
|
||||||
|
|
||||||
|
skip = SkipType.NONE
|
||||||
|
length = 0
|
||||||
|
common_prefix = ""
|
||||||
|
last_tiny_string = ""
|
||||||
|
|
||||||
|
with open(filename) as fp:
|
||||||
|
for line in fp.readlines():
|
||||||
|
if not line.strip():
|
||||||
|
if skip == SkipType.EXPECT_NEWLINE:
|
||||||
|
skip = SkipType.NONE
|
||||||
|
continue
|
||||||
|
|
||||||
|
line = line.strip()
|
||||||
|
|
||||||
|
if skip == SkipType.EXPECT_NEWLINE:
|
||||||
|
# The only thing allowed after a list, is this next marker, or a newline.
|
||||||
|
if line == "###next-name-looks-similar":
|
||||||
|
# "###next-name-looks-similar"
|
||||||
|
# Indicates the common prefix of the last list has a very
|
||||||
|
# similar name to the next entry, but isn't part of the
|
||||||
|
# list. So do not emit a warning about them looking very
|
||||||
|
# similar.
|
||||||
|
|
||||||
|
if length != 0:
|
||||||
|
errors.append(f"ERROR: list around {name} is shorted than indicated by ###length")
|
||||||
|
|
||||||
|
common_prefix = ""
|
||||||
|
else:
|
||||||
|
errors.append(f"ERROR: expected a newline after a list, but didn't find any around {name}. Did you add an entry to the list without increasing the length?")
|
||||||
|
|
||||||
|
skip = SkipType.NONE
|
||||||
|
|
||||||
|
if line[0] == "#":
|
||||||
|
if line.startswith("###length "):
|
||||||
|
# "###length <count>"
|
||||||
|
# Indicates the next few entries are part of a list. Only
|
||||||
|
# the first entry is possibly referenced, and the rest are
|
||||||
|
# indirectly.
|
||||||
|
|
||||||
|
if length != 0:
|
||||||
|
errors.append(f"ERROR: list around {name} is shorted than indicated by ###length")
|
||||||
|
|
||||||
|
length = line.split(" ")[1].strip()
|
||||||
|
|
||||||
|
if length.isnumeric():
|
||||||
|
length = int(length)
|
||||||
|
else:
|
||||||
|
length = LENGTH_NAME_LOOKUP[length]
|
||||||
|
|
||||||
|
skip = SkipType.LENGTH
|
||||||
|
elif line.startswith("###external "):
|
||||||
|
# "###external <count>"
|
||||||
|
# Indicates the next few entries are used outside the
|
||||||
|
# source and will not be referenced.
|
||||||
|
|
||||||
|
if length != 0:
|
||||||
|
errors.append(f"ERROR: list around {name} is shorted than indicated by ###length")
|
||||||
|
|
||||||
|
length = line.split(" ")[1].strip()
|
||||||
|
length = int(length)
|
||||||
|
|
||||||
|
skip = SkipType.EXTERNAL
|
||||||
|
elif line.startswith("###setting-zero-is-special"):
|
||||||
|
# "###setting-zero-is-special"
|
||||||
|
# Indicates the next entry is part of the "zero is special"
|
||||||
|
# flag of settings. These entries are not referenced
|
||||||
|
# directly in the code.
|
||||||
|
|
||||||
|
if length != 0:
|
||||||
|
errors.append(f"ERROR: list around {name} is shorted than indicated by ###length")
|
||||||
|
|
||||||
|
skip = SkipType.ZERO_IS_SPECIAL
|
||||||
|
|
||||||
|
continue
|
||||||
|
|
||||||
|
name = line.split(":")[0].strip()
|
||||||
|
strings_defined.append(name)
|
||||||
|
|
||||||
|
# If a string ends on _TINY or _SMALL, it can be the {TINY} variant.
|
||||||
|
# Check for this by some fuzzy matching.
|
||||||
|
if name.endswith(("_SMALL", "_TINY")):
|
||||||
|
last_tiny_string = name
|
||||||
|
elif last_tiny_string:
|
||||||
|
matching_name = "_".join(last_tiny_string.split("_")[:-1])
|
||||||
|
if name == matching_name:
|
||||||
|
strings_found.add(last_tiny_string)
|
||||||
|
else:
|
||||||
|
last_tiny_string = ""
|
||||||
|
|
||||||
|
if skip == SkipType.EXTERNAL:
|
||||||
|
strings_found.add(name)
|
||||||
|
skip = SkipType.LENGTH
|
||||||
|
|
||||||
|
if skip == SkipType.LENGTH:
|
||||||
|
skip = SkipType.NONE
|
||||||
|
length -= 1
|
||||||
|
common_prefix = name
|
||||||
|
elif skip == SkipType.ZERO_IS_SPECIAL:
|
||||||
|
strings_found.add(name)
|
||||||
|
elif length > 0:
|
||||||
|
strings_found.add(name)
|
||||||
|
length -= 1
|
||||||
|
|
||||||
|
# Find the common prefix of these strings
|
||||||
|
for i in range(len(common_prefix)):
|
||||||
|
if common_prefix[0 : i + 1] != name[0 : i + 1]:
|
||||||
|
common_prefix = common_prefix[0:i]
|
||||||
|
break
|
||||||
|
|
||||||
|
if length == 0:
|
||||||
|
skip = SkipType.EXPECT_NEWLINE
|
||||||
|
|
||||||
|
if len(common_prefix) < 6:
|
||||||
|
errors.append(f"ERROR: common prefix of block including {name} was reduced to {common_prefix}. This means the names in the list are not consistent.")
|
||||||
|
elif common_prefix:
|
||||||
|
if name.startswith(common_prefix):
|
||||||
|
errors.append(f"ERROR: {name} looks a lot like block above with prefix {common_prefix}. This mostly means that the list length was too short. Use '###next-name-looks-similar' if it is not.")
|
||||||
|
common_prefix = ""
|
||||||
|
|
||||||
|
return strings_defined
|
||||||
|
|
||||||
|
|
||||||
|
def scan_source_files(path, strings_found):
|
||||||
|
for new_path in glob.glob(f"{path}/*"):
|
||||||
|
if os.path.isdir(new_path):
|
||||||
|
scan_source_files(new_path, strings_found)
|
||||||
|
continue
|
||||||
|
|
||||||
|
if not new_path.endswith((".c", ".h", ".cpp", ".hpp", ".ini")):
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Most files we can just open, but some use magic, that requires the
|
||||||
|
# G++ preprocessor before we can make sense out of it.
|
||||||
|
if new_path == "src/table/cargo_const.h":
|
||||||
|
p = subprocess.run(["g++", "-E", new_path], stdout=subprocess.PIPE)
|
||||||
|
output = p.stdout.decode()
|
||||||
|
else:
|
||||||
|
with open(new_path) as fp:
|
||||||
|
output = fp.read()
|
||||||
|
|
||||||
|
# Find all the string references.
|
||||||
|
matches = re.findall(r"[^A-Z_](STR_[A-Z0-9_]*)", output)
|
||||||
|
strings_found.update(matches)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
strings_found = set()
|
||||||
|
errors = []
|
||||||
|
|
||||||
|
scan_source_files("src", strings_found)
|
||||||
|
strings_defined = read_language_file("src/lang/english.txt", strings_found, errors)
|
||||||
|
|
||||||
|
# STR_LAST_STRINGID is special, and not really a string.
|
||||||
|
strings_found.remove("STR_LAST_STRINGID")
|
||||||
|
# These are mentioned in comments, not really a string.
|
||||||
|
strings_found.remove("STR_XXX")
|
||||||
|
strings_found.remove("STR_NEWS")
|
||||||
|
strings_found.remove("STR_CONTENT_TYPE_")
|
||||||
|
|
||||||
|
# This string is added for completion, but never used.
|
||||||
|
strings_defined.remove("STR_JUST_DATE_SHORT")
|
||||||
|
|
||||||
|
strings_defined = sorted(strings_defined)
|
||||||
|
strings_found = sorted(list(strings_found))
|
||||||
|
|
||||||
|
for string in strings_found:
|
||||||
|
if string not in strings_defined:
|
||||||
|
errors.append(f"ERROR: {string} found but never defined.")
|
||||||
|
|
||||||
|
for string in strings_defined:
|
||||||
|
if string not in strings_found:
|
||||||
|
errors.append(f"ERROR: {string} is (possibly) no longer needed.")
|
||||||
|
|
||||||
|
if errors:
|
||||||
|
for error in errors:
|
||||||
|
print(error)
|
||||||
|
sys.exit(1)
|
||||||
|
else:
|
||||||
|
print("OK")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
18
.github/workflows/unused-strings.yml
vendored
Normal file
18
.github/workflows/unused-strings.yml
vendored
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
name: Unused strings
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
unused-strings:
|
||||||
|
name: Unused strings
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Check for unused strings
|
||||||
|
run: |
|
||||||
|
set -ex
|
||||||
|
python3 .github/unused-strings.py
|
||||||
2
.ottdrev
2
.ottdrev
@@ -1 +1 @@
|
|||||||
12.0-beta2 20210819 0 778e196b55265c40191186c273b008356136e20d 1 0 2021
|
12.0-RC1 20210925 0 79dc634d41d04f4b48e8e284f2986a9cdb288946 1 0 2021
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
2021-08-19 19:24 UTC
|
2021-09-25 14:00 UTC
|
||||||
|
|||||||
@@ -1,3 +1,40 @@
|
|||||||
|
12.0-RC1 (2021-09-25)
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
Feature: Display icon/text whether vehicle is lost in vehicle (list) window (#9543)
|
||||||
|
Feature: [MacOS] Add selected toolbar buttons to MacBook Pro Touch Bar (#9511)
|
||||||
|
Feature: Button to open order window from vehicle shared orders window (#9325)
|
||||||
|
Feature: Ctrl-Clicking shared order vehicle list opens order window (#9325)
|
||||||
|
Feature: Multiple rotating views on title screen (#8980)
|
||||||
|
Feature: Hide block signals in GUI by default (#8688)
|
||||||
|
Add: [Script] Allow GameScripts to build neutral objects (#9568)
|
||||||
|
Add: [Network] Allow sending chat messages via admin port (#9563)
|
||||||
|
Add: [AI/GS] Missing water related functions and objects (#8390)
|
||||||
|
Fix: Industry funding window did not update when changing funding method (#9572)
|
||||||
|
Fix #9562: [NewGRF] Handle case of invalid Action2 with zero results (#9564)
|
||||||
|
Fix: Incorrect error messages when placing water in scenario editor (#9560)
|
||||||
|
Fix #9484: Update locale currencies settings config map (#9559)
|
||||||
|
Fix: Prevent train reversing when entirely inside a train depot (#9557)
|
||||||
|
Fix: [Network] Add back 'Spectate' option to company toolbar menu (#9556)
|
||||||
|
Fix #9463: [Win32] Work around XAudio2 crashes (#9549)
|
||||||
|
Fix #8603: Don't give focus to text filter when opening Object GUI (#9547)
|
||||||
|
Fix #9241: Grove and forest tree brushes did not also create rainforest terrain (#9542)
|
||||||
|
Fix: [Network] Several crashes in our network code (#9534, #9456)
|
||||||
|
Fix #9527: Crash when trying to place multi-tile objects at map edge (#9529)
|
||||||
|
Fix: [Network] SendCmdNames only sent one name per packet (#9528)
|
||||||
|
Fix #9407: Desync when founding a town nearby a station (#9526)
|
||||||
|
Fix #9521: Don't load at just removed docks that were part of a multi-dock station (#9524)
|
||||||
|
Fix: Ships always tried to avoid docking tiles when pathfinding (even if nothing was on them) (#9522)
|
||||||
|
Fix: [Network] Convert server_advertise to server_game_type in config file (#9515)
|
||||||
|
Fix #9490: [Network] A full server couldn't be queried (#9508)
|
||||||
|
Fix: [Network] Don't show GameScript " (v0)" for old servers (#9507)
|
||||||
|
Fix: [Network] Show query errors in the server listing instead of error popup (#9506)
|
||||||
|
Fix: [Network] Crash when last-joined server was no longer available (#9503)
|
||||||
|
Fix #9501: [Network] Crash when more than one game-info query was pending (#9502)
|
||||||
|
Fix: Wrong error message when building canals over ship depots / locks (#9410)
|
||||||
|
Fix: Reduce cost of building canals over objects on sea (#9410)
|
||||||
|
Change: [Linkgraph] Delete links only served by vehicles stopped in depot (#9499)
|
||||||
|
|
||||||
|
|
||||||
12.0-beta2 (2021-08-19)
|
12.0-beta2 (2021-08-19)
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
Feature: [Linkgraph] Prioritize faster routes for passengers, mail and express cargo (#9457)
|
Feature: [Linkgraph] Prioritize faster routes for passengers, mail and express cargo (#9457)
|
||||||
|
|||||||
117
docs/eints.md
Normal file
117
docs/eints.md
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
# Translations for OpenTTD
|
||||||
|
|
||||||
|
Eints is [OpenTTD's WebTranslator](https://translator.openttd.org/).
|
||||||
|
|
||||||
|
- Registered translators translate from English to their language.
|
||||||
|
- Eints validates the translations syntactically and that parameter usage matches the English base language.
|
||||||
|
- Eints synchronises translations to OpenTTD's repository every day, shortly before the nightly build.
|
||||||
|
|
||||||
|
When adding or altering strings in english.txt, you should stick to some rules, so translations are handled smoothly by Eints and translators.
|
||||||
|
This document gives some guidelines.
|
||||||
|
|
||||||
|
|
||||||
|
## I want to change a translation.
|
||||||
|
|
||||||
|
### I want to become a regular translator.
|
||||||
|
|
||||||
|
Just [sign up](https://github.com/OpenTTD/team/issues/new/choose) as a translator.
|
||||||
|
|
||||||
|
### I only want to point out some issues / typos in the current translation, or suggest a change.
|
||||||
|
|
||||||
|
[Open an issue](https://github.com/OpenTTD/OpenTTD/issues/new/choose), so it can be assigned to the translation team of the language.
|
||||||
|
The translators will decide whether, where and how to apply your suggestion.
|
||||||
|
|
||||||
|
### I want to submit translations via PR.
|
||||||
|
|
||||||
|
Sorry, we don't offer this option.
|
||||||
|
|
||||||
|
### I want to change the language definition (plural form, genders, cases) of a translation.
|
||||||
|
|
||||||
|
Please [create an issue](https://github.com/OpenTTD/OpenTTD/issues/new/choose) for this.
|
||||||
|
|
||||||
|
### I want to add an entirely new translation language.
|
||||||
|
|
||||||
|
OpenTTD has more than 4000 strings, translating all of them is a lot of work.
|
||||||
|
Despite the initial enthusiasm, only few people have the endurance to get to even 20% translation progress.
|
||||||
|
|
||||||
|
As such, starting a new translation requires the prospect that there is also translation interest in the future.
|
||||||
|
And, frankly, OpenTTD probably already covers all languages to which this applies, and a few more.
|
||||||
|
|
||||||
|
If you still want to make the case, that your language is spoken by several 100 million people, please [create an issue](https://github.com/OpenTTD/OpenTTD/issues/new/choose) for adding a new language.
|
||||||
|
|
||||||
|
|
||||||
|
## I want to change the English base language (english.txt).
|
||||||
|
|
||||||
|
### I want to change the wording / fix a typo in an English string, without changing the meaning (drastically).
|
||||||
|
|
||||||
|
Just change it in your PR.
|
||||||
|
|
||||||
|
Translators will be notified that their translation became "outdated", so they can double-check whether the translation needs updating.
|
||||||
|
|
||||||
|
### I want to add/change/remove parameters from an English string.
|
||||||
|
|
||||||
|
Just change the parameters in english.txt in your PR.
|
||||||
|
Don't touch the translations, please ignore compile warnings about them.
|
||||||
|
|
||||||
|
Translators will be notified that their translation became "invalid", so they can adjust the translation.
|
||||||
|
Eints will remember the old translations for translators to view, but remove them from the git repository, while they are "invalid"; so there won't be any compile warnings after the nightly sync.
|
||||||
|
|
||||||
|
### I want to change the meaning of an English string, so that no existing translation makes any sense anymore.
|
||||||
|
|
||||||
|
In this case, please change the STR_xxx string identifier of the string; basically: remove the old string, add a new one.
|
||||||
|
Don't touch the translations, please ignore compile warnings about them.
|
||||||
|
|
||||||
|
Eints will discard all memory of the old strings in the nightly sync, and translators can start fresh with a new string.
|
||||||
|
|
||||||
|
### I want to add a new string.
|
||||||
|
|
||||||
|
Add the new string somewhere in english.txt, where it fits with the neighbouring strings.
|
||||||
|
Don't touch the translations, even if you can speak some of the languages.
|
||||||
|
|
||||||
|
### I want to remove an unused string.
|
||||||
|
|
||||||
|
Remove the string from english.txt.
|
||||||
|
Don't touch the translations, please ignore compile warnings about them.
|
||||||
|
|
||||||
|
Eints will remove the translations from the git repository in the nightly sync.
|
||||||
|
|
||||||
|
### I want to reorder strings in english.txt without changing them.
|
||||||
|
|
||||||
|
Reorder english.txt as you like. Don't touch the translations.
|
||||||
|
|
||||||
|
Eints will reorder all translations to match english.txt in the nightly sync.
|
||||||
|
|
||||||
|
### I want to add/change '#' comments.
|
||||||
|
|
||||||
|
Change comments in english.txt as you like. Don't touch the translations.
|
||||||
|
|
||||||
|
Eints will replicate comments into all translations in the nightly sync. Comments are not translated.
|
||||||
|
|
||||||
|
### I want to change the STR_xxx string identifier for code style reasons, without changing the English text.
|
||||||
|
|
||||||
|
This is the only case, where your PR should also edit translations.
|
||||||
|
The STR_xxx string identifier is used by Eints as key value to track strings and translations. If you change it, that's the same as deleting a string and adding an unrelated new one.
|
||||||
|
So, to keep translations, you have to replace the STR_xxx for all translations in the PR as well.
|
||||||
|
|
||||||
|
However, you will only be able to keep the translations which are part of the git repository.
|
||||||
|
Translation history and information about translations being "outdated" will be lost.
|
||||||
|
So, keep your code style OCD to a minimum :)
|
||||||
|
|
||||||
|
|
||||||
|
## I want to fight a bot and lose.
|
||||||
|
|
||||||
|
Here are some things, people sometimes want to do, but which won't work.
|
||||||
|
|
||||||
|
### I want to enforce re-translation by clearing current translations.
|
||||||
|
|
||||||
|
You have to change the STR_xxx string identifier, that's the only option.
|
||||||
|
|
||||||
|
You cannot "clear" translations by removing them via PR; eints will reinstall the previous "syntactically perfect valid" translation.
|
||||||
|
|
||||||
|
### I want to revert a broken change, some translator just did via eints.
|
||||||
|
|
||||||
|
You have to revert the translations via the WebTranslator interface.
|
||||||
|
If there are many changes, ask someone with Admin access to eints, so they can manually upload a fixed translation file to eints.
|
||||||
|
|
||||||
|
You cannot revert translations changes via PR. Eints merges translations from git and from web by keeping a translation history, and committing the newest translation to git.
|
||||||
|
If you revert to an old translation in git, eints will simply think git did not yet get the newer translation, and commit it again.
|
||||||
@@ -1,225 +1,207 @@
|
|||||||
# Multiplayer manual for OpenTTD
|
# Multiplayer manual for OpenTTD
|
||||||
|
|
||||||
Last updated: 2011-02-16
|
|
||||||
|
|
||||||
|
|
||||||
## Table of contents
|
## Table of contents
|
||||||
|
|
||||||
- 1.0) [Starting a server](#10-starting-a-server)
|
- 1.0) [Starting a server](#10-starting-a-server)
|
||||||
- 2.0) [Connecting to a server](#20-connecting-to-a-server)
|
- 2.0) [Connecting to a server](#20-connecting-to-a-server)
|
||||||
- 2.1) [Connecting to a server over the console](#21-connecting-to-a-server-over-the-console)
|
- 2.1) [Connecting to a server over the console](#21-connecting-to-a-server-over-the-console)
|
||||||
- 3.0) [Playing internet games](#30-playing-internet-games)
|
- 3.0) [Playing internet games](#30-playing-internet-games)
|
||||||
- 4.0) [Tips for servers](#40-tips-for-servers)
|
- 4.0) [Tips for servers](#40-tips-for-servers)
|
||||||
- 4.1)[Imposing landscaping limits](#41-imposing-landscaping-limits)
|
- 4.1)[Imposing landscaping limits](#41-imposing-landscaping-limits)
|
||||||
- 5.0) [Some useful things](#50-some-useful-things)
|
- 5.0) [Some useful things](#50-some-useful-things)
|
||||||
- 6.0) [Troubleshooting](#60-troubleshooting)
|
- 6.0) [Troubleshooting](#60-troubleshooting)
|
||||||
|
|
||||||
|
|
||||||
## 1.0) Starting a server
|
## 1.0) Starting a server
|
||||||
|
|
||||||
- Make sure that you have your firewall of the computer as well as possible
|
- Click on "Multiplayer" in the Start Menu.
|
||||||
routers or modems of the server configured such that:
|
- Click on "Start Server".
|
||||||
- port 3979 is free for both UDP and TCP connections in- and outgoing
|
- Give your server a name.
|
||||||
- port 3978 is free outbound for UDP in order to advertise with the master
|
- Select the visibility of your server:
|
||||||
server (if desired). Otherwise you'll have to tell players your IP.
|
- "Public": your server will be publicly listed.
|
||||||
- port 3977 if use of the admin interface is desired (see admin_network.txt)
|
- "Invite Only": only players who have the invite code for your server can
|
||||||
- Click "multiplayer" on the startup screen
|
join.
|
||||||
- Click "start server"
|
- "Local": only players on your local network can join.
|
||||||
- Type in a game name
|
- (optional) Set a password for your server.
|
||||||
- Select the type of game ('LAN/Internet' or 'Internet (advertise)'. With the
|
- Click "New Game", "Load Game", or "Play Scenario".
|
||||||
last one other people are able to see you online. Else they need your IP and
|
- Start playing.
|
||||||
port to join)
|
|
||||||
- Click "start game", "load game" or "load scenario"
|
|
||||||
- Start playing
|
|
||||||
|
|
||||||
|
|
||||||
## 2.0) Connecting to a server
|
## 2.0) Connecting to a server
|
||||||
|
|
||||||
- Click "multiplayer" on the startup screen
|
- Click on "Multiplayer" in the Start Menu.
|
||||||
- If you want to connect to any network game in your LAN click on 'LAN', then
|
- There are three ways to join a server:
|
||||||
on 'Find Server'
|
- If you want to connect to a local server, click "Search LAN".
|
||||||
- If you want to see which servers all online on the Internet, click on
|
- If you want to connect to a public game, click "Search internet".
|
||||||
'Internet' and 'Find Server'
|
- If the server-owner shared an invite code with you:
|
||||||
- If there were more than one server
|
- Click "Add Server".
|
||||||
- select one in the list below the buttons
|
- Fill in the invite code, which always starts with a `+`.
|
||||||
- click on 'join game'
|
- Click "OK".
|
||||||
- If you want to play and you have the ip or hostname of the game server you
|
- Click on the server you want to join.
|
||||||
want connect to.
|
- Click "Join Game".
|
||||||
- click add server
|
- If the server has a password, it will ask you for this.
|
||||||
- type in the ip address or hostname
|
- You see a progressbar how far you are with joining the server.
|
||||||
- if you want to add a port use :<port>
|
- Happy playing.
|
||||||
- If you want to play and you have the invite code of the game server you
|
|
||||||
want connect to.
|
|
||||||
- click add server
|
|
||||||
- type in the invite code
|
|
||||||
- Now you can select a company and press: "Join company", to help that company
|
|
||||||
- Or you can press "Spectate game", to spectate the game
|
|
||||||
- Or you can press "New company", and start your own company (if there are
|
|
||||||
slots free)
|
|
||||||
- You see a progressbar how far you are with joining the server.
|
|
||||||
- Happy playing
|
|
||||||
|
|
||||||
## 2.1) Connecting to a server over the console
|
## 2.1) Connecting to a server over the console
|
||||||
|
|
||||||
- Open the console and type in the following command:
|
- Open the console and type `connect` for help how to connect via the console.
|
||||||
connect `<ip/host>:<port>#<company-no>`
|
|
||||||
|
|
||||||
|
|
||||||
## 3.0) Playing internet games
|
## 3.0) Playing internet games
|
||||||
|
|
||||||
- Servers with a red dot behind it have a different version then you have. You
|
- Servers with a red dot behind it have a different version then you have. You
|
||||||
will not be able to join those servers.
|
will not be able to join those servers.
|
||||||
|
|
||||||
- Servers with a yellow dot behind it have NewGRFs that you do not have. You
|
- Servers with a yellow dot behind it have NewGRFs that you do not have. You
|
||||||
will not be able to join those servers. However, via "NewGRF Settings" and
|
will not be able to join those servers. However, via "NewGRF Settings" and
|
||||||
"Find missing content online" you might be able to download the needed
|
"Find missing content online" you might be able to download the needed
|
||||||
NewGRFs after which you can join the server.
|
NewGRFs after which you can join the server.
|
||||||
|
|
||||||
- It can happen that a connection is that slow, or you have that many clients
|
- It can happen that a connection is that slow, or you have that many clients
|
||||||
connected to your server, that your clients start to loose their connection.
|
connected to your server, that your clients start to loose their connection.
|
||||||
Some things you can do about it:
|
Some things you can do about it:
|
||||||
- [network] frame_freq:
|
- `[network] frame_freq`:
|
||||||
change it in console with: 'set network.frame_freq <number>'
|
change it in console with: `set network.frame_freq <number>`
|
||||||
the number should be between the 0 and 10, not much higher. It indicates
|
the number should be between the 0 and 10, not much higher. It indicates
|
||||||
the delay between clicking and showing up. The higher, the more you notice
|
the delay between clicking and showing up. The higher, the more you notice
|
||||||
it, but the less bandwidth you use.
|
it, but the less bandwidth you use.
|
||||||
A good value for Internet-games is 2 or 3.
|
A good value for Internet-games is 2 or 3.
|
||||||
|
|
||||||
- [network] sync_freq:
|
- `[network] sync_freq`:
|
||||||
change it in console with: 'set network.sync_freq <number>'
|
change it in console with: `set network.sync_freq <number>`
|
||||||
the number should be between the 50 and 1000, not much lower, not much
|
the number should be between the 50 and 1000, not much lower, not much
|
||||||
higher. It indicates the time between sync-frames. A sync-frame is a frame
|
higher. It indicates the time between sync-frames. A sync-frame is a frame
|
||||||
which checks if all clients are still in sync. When the value it too high,
|
which checks if all clients are still in sync. When the value it too high,
|
||||||
clients can desync in 1960, but the server detects it in 1970. Not really
|
clients can desync in 1960, but the server detects it in 1970. Not really
|
||||||
handy. The lower the value, the more bandwidth it uses.
|
handy. The lower the value, the more bandwidth it uses.
|
||||||
|
|
||||||
NB: changing frame_freq has more effect on the bandwidth then sync_freq.
|
|
||||||
|
|
||||||
|
NB: changing `frame_freq` has more effect on the bandwidth then `sync_freq`.
|
||||||
|
|
||||||
## 4.0) Tips for servers
|
## 4.0) Tips for servers
|
||||||
|
|
||||||
- You can launch a dedicated server by adding -D as parameter.
|
- You can launch a dedicated server by adding `-D` as parameter.
|
||||||
- In UNIX like systems, you can fork your dedicated server by adding -f as
|
- In UNIX like systems, you can fork your dedicated server by adding `-f` as
|
||||||
parameter.
|
parameter.
|
||||||
|
|
||||||
- You can automatically clean companies that do not have a client connected to
|
- You can automatically clean companies that do not have a client connected to
|
||||||
them, for, let's say, 3 years. You can do this via: 'set autoclean_companies'
|
them, for, let's say, 3 years. You can do this via: `set autoclean_companies`
|
||||||
and 'set autoclean_protected' and 'set autoclean_unprotected'. Unprotected
|
and `set autoclean_protected` and `set autoclean_unprotected`. Unprotected
|
||||||
removes a password from a company when it is not used for more then the
|
removes a password from a company when it is not used for more then the
|
||||||
defined amount of months. 'set autoclean_novehicles' can be used to remove
|
defined amount of months. `set autoclean_novehicles` can be used to remove
|
||||||
companies without any vehicles quickly.
|
companies without any vehicles quickly.
|
||||||
|
|
||||||
- You can also do this manually via the console: 'reset_company'.
|
- You can also do this manually via the console: `reset_company`.
|
||||||
|
|
||||||
- You can let your server automatically restart a map when, let's say, year 2030
|
- You can let your server automatically restart a map when, let's say,
|
||||||
is reached. See 'set restart_game_date' for detail.
|
year 2030 is reached. See `set restart_game_date` for detail.
|
||||||
|
|
||||||
- If you want to be on the server-list, make your server public. You can do
|
- If you want to be on the server-list, make your server public. You can do
|
||||||
this either from the Start Server GUI, via the in-game Online Players GUI,
|
this either from the Start Server window, via the in-game Online Players
|
||||||
or by typing in the console:
|
window, or by typing in the console: `set server_game_type public`.
|
||||||
'set server_game_type public'.
|
|
||||||
|
|
||||||
- You can protect your server with a password via the console: 'set server_pw',
|
- You can protect your server with a password via the console: `set server_pw`,
|
||||||
or via the Start Server menu.
|
or via the Start Server menu.
|
||||||
|
|
||||||
- When you have many clients connected to your server via Internet, watch your
|
- When you have many clients connected to your server via Internet, watch your
|
||||||
bandwidth (if you have any limit on it, set by your ISP). One client uses
|
bandwidth (if you have any limit on it, set by your ISP). One client uses
|
||||||
about 1.5 kilobytes per second up and down. To decrease this amount, setting
|
about 1.5 kilobytes per second up and down. To decrease this amount, setting
|
||||||
'frame_freq' to 1 will reduce it to roughly 1 kilobyte per second per client.
|
`frame_freq` to 1 will reduce it to roughly 1 kilobyte per second per client.
|
||||||
|
|
||||||
- OpenTTD's default settings for maximum number of clients, and amount of data
|
- OpenTTD's default settings for maximum number of clients, and amount of data
|
||||||
from clients to process are chosen to not influence the normal playing of
|
from clients to process are chosen to not influence the normal playing of
|
||||||
people, but to prevent or at least make it less likely that someone can
|
people, but to prevent or at least make it less likely that someone can
|
||||||
perform a (distributed) denial-of-service attack on your server by causing
|
perform a (distributed) denial-of-service attack on your server by causing
|
||||||
an out-of-memory event by flooding the server with data to send to all
|
an out-of-memory event by flooding the server with data to send to all
|
||||||
clients. The major factor in this is the maximum number of clients; with
|
clients. The major factor in this is the maximum number of clients; with
|
||||||
32 clients "only" sending one chat message causes 1024 messages to be
|
32 clients "only" sending one chat message causes 1024 messages to be
|
||||||
distributed in total, with 64 clients that already quadruples to 4096. Given
|
distributed in total, with 64 clients that already quadruples to 4096. Given
|
||||||
that upstream bandwidth is usually the limiting factor, a queue of packets
|
that upstream bandwidth is usually the limiting factor, a queue of packets
|
||||||
that need to be sent will be created.
|
that need to be sent will be created.
|
||||||
To prevent clients from exploiting this "explosion" of packets to send we
|
To prevent clients from exploiting this "explosion" of packets to send we
|
||||||
limit the number of incoming data, resulting in effectively limiting the
|
limit the number of incoming data, resulting in effectively limiting the
|
||||||
amount of data that OpenTTD will send to the clients. Even with the default
|
amount of data that OpenTTD will send to the clients. Even with the default
|
||||||
limits it is possible to generate about 70.000 packets per second, or about
|
limits it is possible to generate about 70.000 packets per second, or about
|
||||||
7 megabit per second of traffic.
|
7 megabit per second of traffic.
|
||||||
Given that OpenTTD kicks clients after they have not reacted within about 9
|
Given that OpenTTD kicks clients after they have not reacted within about 9
|
||||||
seconds from sending a frame update packet it would be possible that OpenTTD
|
seconds from sending a frame update packet it would be possible that OpenTTD
|
||||||
keeps about 600.000 packets in memory, using about 50 megabytes of memory.
|
keeps about 600.000 packets in memory, using about 50 megabytes of memory.
|
||||||
Given that OpenTTD allows short bursts of packets, you can have slightly
|
Given that OpenTTD allows short bursts of packets, you can have slightly
|
||||||
more packets in memory in case of a distributed denial of service attack.
|
more packets in memory in case of a distributed denial of service attack.
|
||||||
When increasing the amount of incoming data, or the maximum number of
|
When increasing the amount of incoming data, or the maximum number of
|
||||||
clients the amount of memory OpenTTD needs in case of a distributed denial
|
clients the amount of memory OpenTTD needs in case of a distributed denial
|
||||||
of service attack is linearly related to the amount of incoming data and
|
of service attack is linearly related to the amount of incoming data and
|
||||||
quadratic to the amount of clients. In short, a rule of thumb for, the
|
quadratic to the amount of clients. In short, a rule of thumb for, the
|
||||||
maximum memory usage for packets is:
|
maximum memory usage for packets is:
|
||||||
#max_clients * #max_clients * bytes_per_frame * 10 KiB.
|
`#max_clients * #max_clients * bytes_per_frame * 10 KiB`.
|
||||||
|
|
||||||
### 4.1) Imposing landscaping limits
|
### 4.1) Imposing landscaping limits
|
||||||
|
|
||||||
- You can impose limits on companies by the following 4 settings:
|
- You can impose limits on companies by the following 4 settings:
|
||||||
- terraform_per_64k_frames
|
- `terraform_per_64k_frames`
|
||||||
- terraform_frame_burst
|
- `terraform_frame_burst`
|
||||||
- clear_per_64k_frames
|
- `clear_per_64k_frames`
|
||||||
- clear_frame_burst
|
- `clear_frame_burst`
|
||||||
|
|
||||||
- Explaining 'per_64K_frames' and 'burst'
|
- Explaining `NNN_burst` and `NNN_per_64K_frames`
|
||||||
- 'burst' defines 3 things, the maximum limit, the limit of a single action,
|
- `NNN_burst` defines 3 things, the maximum limit, the limit of a single
|
||||||
and the initial value for the limit assigned to a new company.
|
action, and the initial value for the limit assigned to a new company.
|
||||||
This setting is fairly simple and requires no math.
|
This setting is fairly simple and requires no math.
|
||||||
|
|
||||||
A value of 1 means a single tile can be affected by a single action.
|
A value of 1 means a single tile can be affected by a single action.
|
||||||
This results in having to click 400 times when wanting to cover an area
|
This results in having to click 400 times when wanting to cover an area
|
||||||
of 20 x 20 tiles.
|
of 20 x 20 tiles.
|
||||||
|
|
||||||
The default value 4096 covers an area of 64 x 64 tiles.
|
The default value 4096 covers an area of 64 x 64 tiles.
|
||||||
|
|
||||||
- 'per_64k_frames' defines the number of tiles added to each companies limit
|
- `NNN_per_64K_frames` defines the number of tiles added to each companies
|
||||||
per frame (however not past the possible maximum value,the 'burst').
|
limit per frame (however not past the possible maximum value,the
|
||||||
64k rather resembles the exact number of 65536 frames. So setting this
|
`NNN_burst`). 64k rather resembles the exact number of 65536 frames. So
|
||||||
variable to 65536 means: 65536 / 65536 = 1 tile per frame.
|
setting this variable to 65536 means: `65536 / 65536 = 1 tile per frame`.
|
||||||
As a day consists of 74 frames, a company's limit is increased by 74
|
|
||||||
tiles during the course of a single day (2.22 seconds).
|
|
||||||
|
|
||||||
To achieve a 1 tile per day increase the following calculation is needed:
|
As a day consists of 74 frames, a company's limit is increased by 74
|
||||||
1 / 74 (frames per day) * 65536 (per_64k_frames) = 885.62...
|
tiles during the course of a single day (2.22 seconds).
|
||||||
after rounding: a value of 886 means adding a bit over 1 tile per day.
|
To achieve a 1 tile per day increase the following calculation is needed:
|
||||||
|
`1 / 74 (frames per day) * 65536 (per_64k_frames) = 885.62...`.
|
||||||
|
After rounding: a value of 886 means adding a bit over 1 tile per day.
|
||||||
|
|
||||||
There is still enough space to scale this value downwards:
|
There is still enough space to scale this value downwards:
|
||||||
decreasing this value to 127 results in a bit over 1 tile added to the
|
decreasing this value to 127 results in a bit over 1 tile added to the
|
||||||
allowance per week (7 days).
|
allowance per week (7 days).
|
||||||
|
|
||||||
To create a setup in which a company gets an initial allowance only,
|
To create a setup in which a company gets an initial allowance only,
|
||||||
set the value to 0 - no increase of the allowance per frame.
|
set the value to 0 - no increase of the allowance per frame.
|
||||||
|
|
||||||
- Even though construction actions include a clear tile action, they are not
|
|
||||||
affected by the above settings.
|
|
||||||
|
|
||||||
|
- Even though construction actions include a clear tile action, they are not
|
||||||
|
affected by the above settings.
|
||||||
|
|
||||||
## 5.0) Some useful things
|
## 5.0) Some useful things
|
||||||
|
|
||||||
- You can protect your company so nobody else can join uninvited. To do this,
|
- You can protect your company so nobody else can join uninvited. To do this,
|
||||||
set a password in your Company Screen
|
set a password in your Company window.
|
||||||
|
|
||||||
- You can give other players some money via the ClientList (under the 'head'
|
- You can chat with other players via ENTER or via SHIFT+T or via the Online
|
||||||
in the mainbar).
|
Players window
|
||||||
|
|
||||||
- You can chat with other players via ENTER or via SHIFT+T or via the ClientList
|
|
||||||
|
|
||||||
- Servers can now kick players, so don't make them use it!
|
|
||||||
|
|
||||||
|
- Servers can kick players, so don't make them use it!
|
||||||
|
|
||||||
## 6.0) Troubleshooting
|
## 6.0) Troubleshooting
|
||||||
|
|
||||||
- My advertising server does not show up in list at servers.openttd.org
|
### My server does not show up in the serverlist
|
||||||
Run openttd with the '-d net=2' parameter. That will show which incoming
|
|
||||||
communication is received, whether the replies from the master server or
|
|
||||||
communication from an admin tool reach the programme. See section 1
|
|
||||||
'Starting a server' further up for the ports and protocols used by OpenTTD.
|
|
||||||
The ports can be configured in the config file.
|
|
||||||
|
|
||||||
- My advertising server warns a lot about getaddrinfo taking N seconds
|
Check if the visibility of your server is set to `public`.
|
||||||
This could be a transient issue with your (local) DNS server, but if the
|
|
||||||
problem persists there is likely a configuration issue in DNS resolving
|
If it is, and your server still isn't showing up, start OpenTTD with
|
||||||
on your computer. This seems to be a common configuration issue for
|
`-d net=4` as extra argument. This will show debug message related to the
|
||||||
Docker instances, where the DNS resolving waits for a time out of usually
|
network, including communication to/from the Game Coordinator.
|
||||||
5 seconds.
|
|
||||||
|
### My server warns a lot about getaddrinfo taking N seconds
|
||||||
|
|
||||||
|
This could be a transient issue with your (local) DNS server, but if the
|
||||||
|
problem persists there is likely a configuration issue in DNS resolving on
|
||||||
|
your computer.
|
||||||
|
|
||||||
|
#### Running OpenTTD in a Docker container?
|
||||||
|
|
||||||
|
This is an issue with dual-stack Docker containers. If there is no default
|
||||||
|
IPv6 resolver and IPv6 traffic is preferred, DNS requests will time out after
|
||||||
|
5 seconds. To resolve this, use an IPv4 DNS server for your Docker container,
|
||||||
|
for example by adding `--dns 1.1.1.1` to your `docker run` command.
|
||||||
|
|||||||
BIN
media/openttd.1024.png
Normal file
BIN
media/openttd.1024.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 66 KiB |
BIN
media/openttd.2048.png
Normal file
BIN
media/openttd.2048.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 148 KiB |
BIN
media/openttd.512.png
Normal file
BIN
media/openttd.512.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 31 KiB |
@@ -547,6 +547,8 @@ function Regression::Prices()
|
|||||||
print(" BT_DOCK: " + AIMarine.GetBuildCost(AIMarine.BT_DOCK));
|
print(" BT_DOCK: " + AIMarine.GetBuildCost(AIMarine.BT_DOCK));
|
||||||
print(" BT_DEPOT: " + AIMarine.GetBuildCost(AIMarine.BT_DEPOT));
|
print(" BT_DEPOT: " + AIMarine.GetBuildCost(AIMarine.BT_DEPOT));
|
||||||
print(" BT_BUOY: " + AIMarine.GetBuildCost(AIMarine.BT_BUOY));
|
print(" BT_BUOY: " + AIMarine.GetBuildCost(AIMarine.BT_BUOY));
|
||||||
|
print(" BT_LOCK: " + AIMarine.GetBuildCost(AIMarine.BT_LOCK));
|
||||||
|
print(" BT_CANAL: " + AIMarine.GetBuildCost(AIMarine.BT_CANAL));
|
||||||
print(" -Tile-");
|
print(" -Tile-");
|
||||||
print(" BT_FOUNDATION: " + AITile.GetBuildCost(AITile.BT_FOUNDATION));
|
print(" BT_FOUNDATION: " + AITile.GetBuildCost(AITile.BT_FOUNDATION));
|
||||||
print(" BT_TERRAFORM: " + AITile.GetBuildCost(AITile.BT_TERRAFORM));
|
print(" BT_TERRAFORM: " + AITile.GetBuildCost(AITile.BT_TERRAFORM));
|
||||||
@@ -556,6 +558,7 @@ function Regression::Prices()
|
|||||||
print(" BT_CLEAR_ROCKY: " + AITile.GetBuildCost(AITile.BT_CLEAR_ROCKY));
|
print(" BT_CLEAR_ROCKY: " + AITile.GetBuildCost(AITile.BT_CLEAR_ROCKY));
|
||||||
print(" BT_CLEAR_FIELDS: " + AITile.GetBuildCost(AITile.BT_CLEAR_FIELDS));
|
print(" BT_CLEAR_FIELDS: " + AITile.GetBuildCost(AITile.BT_CLEAR_FIELDS));
|
||||||
print(" BT_CLEAR_HOUSE: " + AITile.GetBuildCost(AITile.BT_CLEAR_HOUSE));
|
print(" BT_CLEAR_HOUSE: " + AITile.GetBuildCost(AITile.BT_CLEAR_HOUSE));
|
||||||
|
print(" BT_CLEAR_WATER: " + AITile.GetBuildCost(AITile.BT_CLEAR_WATER));
|
||||||
}
|
}
|
||||||
|
|
||||||
function cost_callback(old_path, new_tile, new_direction, self) { if (old_path == null) return 0; return old_path.GetCost() + 1; }
|
function cost_callback(old_path, new_tile, new_direction, self) { if (old_path == null) return 0; return old_path.GetCost() + 1; }
|
||||||
@@ -919,6 +922,9 @@ function Regression::Marine()
|
|||||||
|
|
||||||
print(" BuildWaterDepot(): " + AIMarine.BuildWaterDepot(28479, 28480));
|
print(" BuildWaterDepot(): " + AIMarine.BuildWaterDepot(28479, 28480));
|
||||||
print(" BuildDock(): " + AIMarine.BuildDock(29253, AIStation.STATION_JOIN_ADJACENT));
|
print(" BuildDock(): " + AIMarine.BuildDock(29253, AIStation.STATION_JOIN_ADJACENT));
|
||||||
|
print(" BuildBuoy(): " + AIMarine.BuildBuoy(28481));
|
||||||
|
print(" BuildLock(): " + AIMarine.BuildLock(28487));
|
||||||
|
print(" BuildCanal(): " + AIMarine.BuildCanal(28744));
|
||||||
}
|
}
|
||||||
|
|
||||||
function Regression::Order()
|
function Regression::Order()
|
||||||
@@ -1470,9 +1476,41 @@ function Regression::TileList()
|
|||||||
print(" " + i + " => " + list.GetValue(i));
|
print(" " + i + " => " + list.GetValue(i));
|
||||||
}
|
}
|
||||||
|
|
||||||
list.AddRectangle(54421 - 256 * 2, 256 * 2 + 54421 + 8);
|
list.AddRectangle(0x6F3F, 0x7248);
|
||||||
list.Valuate(AITile.IsWaterTile);
|
list.Valuate(AITile.IsWaterTile);
|
||||||
print(" Water(): done");
|
print(" IsWaterTile(): done");
|
||||||
|
print(" Count(): " + list.Count());
|
||||||
|
print(" ListDump:");
|
||||||
|
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||||
|
print(" " + i + " => " + list.GetValue(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
list.Valuate(AITile.IsSeaTile);
|
||||||
|
print(" IsSeaTile(): done");
|
||||||
|
print(" Count(): " + list.Count());
|
||||||
|
print(" ListDump:");
|
||||||
|
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||||
|
print(" " + i + " => " + list.GetValue(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
list.Valuate(AITile.IsRiverTile);
|
||||||
|
print(" IsRiverTile() done");
|
||||||
|
print(" Count(): " + list.Count());
|
||||||
|
print(" ListDump:");
|
||||||
|
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||||
|
print(" " + i + " => " + list.GetValue(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
list.Valuate(AIMarine.IsCanalTile);
|
||||||
|
print(" IsCanalTile() done");
|
||||||
|
print(" Count(): " + list.Count());
|
||||||
|
print(" ListDump:");
|
||||||
|
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||||
|
print(" " + i + " => " + list.GetValue(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
list.Valuate(AITile.IsCoastTile);
|
||||||
|
print(" IsCoastTile() done");
|
||||||
print(" Count(): " + list.Count());
|
print(" Count(): " + list.Count());
|
||||||
print(" ListDump:");
|
print(" ListDump:");
|
||||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||||
|
|||||||
@@ -7365,6 +7365,9 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
GetBankBalance(): 1999959285
|
GetBankBalance(): 1999959285
|
||||||
BuildWaterDepot(): true
|
BuildWaterDepot(): true
|
||||||
BuildDock(): true
|
BuildDock(): true
|
||||||
|
BuildBuoy(): true
|
||||||
|
BuildLock(): true
|
||||||
|
BuildCanal(): true
|
||||||
|
|
||||||
--Prices--
|
--Prices--
|
||||||
-Rail-
|
-Rail-
|
||||||
@@ -7391,6 +7394,8 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
BT_DOCK: 262
|
BT_DOCK: 262
|
||||||
BT_DEPOT: 525
|
BT_DEPOT: 525
|
||||||
BT_BUOY: 262
|
BT_BUOY: 262
|
||||||
|
BT_LOCK: 5625
|
||||||
|
BT_CANAL: 3750
|
||||||
-Tile-
|
-Tile-
|
||||||
BT_FOUNDATION: 187
|
BT_FOUNDATION: 187
|
||||||
BT_TERRAFORM: 187
|
BT_TERRAFORM: 187
|
||||||
@@ -7400,6 +7405,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
BT_CLEAR_ROCKY: 150
|
BT_CLEAR_ROCKY: 150
|
||||||
BT_CLEAR_FIELDS: 375
|
BT_CLEAR_FIELDS: 375
|
||||||
BT_CLEAR_HOUSE: 1200
|
BT_CLEAR_HOUSE: 1200
|
||||||
|
BT_CLEAR_WATER: 7500
|
||||||
|
|
||||||
--Rail--
|
--Rail--
|
||||||
IsRailTile(): false
|
IsRailTile(): false
|
||||||
@@ -8450,54 +8456,221 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
KeepValue(1): done
|
KeepValue(1): done
|
||||||
Count(): 0
|
Count(): 0
|
||||||
ListDump:
|
ListDump:
|
||||||
Water(): done
|
IsWaterTile(): done
|
||||||
Count(): 45
|
Count(): 40
|
||||||
ListDump:
|
ListDump:
|
||||||
54941 => 1
|
29251 => 1
|
||||||
54940 => 1
|
29250 => 1
|
||||||
54939 => 1
|
29249 => 1
|
||||||
54938 => 1
|
29248 => 1
|
||||||
54937 => 1
|
29247 => 1
|
||||||
54936 => 1
|
28996 => 1
|
||||||
54935 => 1
|
28995 => 1
|
||||||
54934 => 1
|
28994 => 1
|
||||||
54933 => 1
|
28993 => 1
|
||||||
54685 => 1
|
28992 => 1
|
||||||
54684 => 1
|
28991 => 1
|
||||||
54683 => 1
|
28744 => 1
|
||||||
54682 => 1
|
28741 => 1
|
||||||
54681 => 1
|
28740 => 1
|
||||||
54680 => 1
|
28739 => 1
|
||||||
54679 => 1
|
28738 => 1
|
||||||
54678 => 1
|
28737 => 1
|
||||||
54677 => 1
|
28736 => 1
|
||||||
54429 => 1
|
28735 => 1
|
||||||
54428 => 1
|
28488 => 1
|
||||||
54427 => 1
|
28487 => 1
|
||||||
54426 => 1
|
28486 => 1
|
||||||
54425 => 1
|
28485 => 1
|
||||||
54424 => 1
|
28484 => 1
|
||||||
54423 => 1
|
28483 => 1
|
||||||
54422 => 1
|
28482 => 1
|
||||||
54421 => 1
|
28480 => 1
|
||||||
54173 => 1
|
28479 => 1
|
||||||
54172 => 1
|
29256 => 0
|
||||||
54171 => 1
|
29255 => 0
|
||||||
54170 => 1
|
29254 => 0
|
||||||
54169 => 1
|
29253 => 0
|
||||||
54168 => 0
|
29252 => 0
|
||||||
54167 => 0
|
29000 => 0
|
||||||
54166 => 0
|
28999 => 0
|
||||||
54165 => 0
|
28998 => 0
|
||||||
53917 => 0
|
28997 => 0
|
||||||
53916 => 0
|
28743 => 0
|
||||||
53915 => 0
|
28742 => 0
|
||||||
53914 => 0
|
28481 => 0
|
||||||
53913 => 0
|
IsSeaTile(): done
|
||||||
53912 => 0
|
Count(): 40
|
||||||
53911 => 0
|
ListDump:
|
||||||
53910 => 0
|
29251 => 1
|
||||||
53909 => 0
|
29250 => 1
|
||||||
|
29249 => 1
|
||||||
|
29248 => 1
|
||||||
|
29247 => 1
|
||||||
|
28996 => 1
|
||||||
|
28995 => 1
|
||||||
|
28994 => 1
|
||||||
|
28993 => 1
|
||||||
|
28992 => 1
|
||||||
|
28991 => 1
|
||||||
|
28741 => 1
|
||||||
|
28740 => 1
|
||||||
|
28739 => 1
|
||||||
|
28738 => 1
|
||||||
|
28737 => 1
|
||||||
|
28736 => 1
|
||||||
|
28735 => 1
|
||||||
|
28485 => 1
|
||||||
|
28484 => 1
|
||||||
|
28483 => 1
|
||||||
|
28482 => 1
|
||||||
|
29256 => 0
|
||||||
|
29255 => 0
|
||||||
|
29254 => 0
|
||||||
|
29253 => 0
|
||||||
|
29252 => 0
|
||||||
|
29000 => 0
|
||||||
|
28999 => 0
|
||||||
|
28998 => 0
|
||||||
|
28997 => 0
|
||||||
|
28744 => 0
|
||||||
|
28743 => 0
|
||||||
|
28742 => 0
|
||||||
|
28488 => 0
|
||||||
|
28487 => 0
|
||||||
|
28486 => 0
|
||||||
|
28481 => 0
|
||||||
|
28480 => 0
|
||||||
|
28479 => 0
|
||||||
|
IsRiverTile() done
|
||||||
|
Count(): 40
|
||||||
|
ListDump:
|
||||||
|
29256 => 0
|
||||||
|
29255 => 0
|
||||||
|
29254 => 0
|
||||||
|
29253 => 0
|
||||||
|
29252 => 0
|
||||||
|
29251 => 0
|
||||||
|
29250 => 0
|
||||||
|
29249 => 0
|
||||||
|
29248 => 0
|
||||||
|
29247 => 0
|
||||||
|
29000 => 0
|
||||||
|
28999 => 0
|
||||||
|
28998 => 0
|
||||||
|
28997 => 0
|
||||||
|
28996 => 0
|
||||||
|
28995 => 0
|
||||||
|
28994 => 0
|
||||||
|
28993 => 0
|
||||||
|
28992 => 0
|
||||||
|
28991 => 0
|
||||||
|
28744 => 0
|
||||||
|
28743 => 0
|
||||||
|
28742 => 0
|
||||||
|
28741 => 0
|
||||||
|
28740 => 0
|
||||||
|
28739 => 0
|
||||||
|
28738 => 0
|
||||||
|
28737 => 0
|
||||||
|
28736 => 0
|
||||||
|
28735 => 0
|
||||||
|
28488 => 0
|
||||||
|
28487 => 0
|
||||||
|
28486 => 0
|
||||||
|
28485 => 0
|
||||||
|
28484 => 0
|
||||||
|
28483 => 0
|
||||||
|
28482 => 0
|
||||||
|
28481 => 0
|
||||||
|
28480 => 0
|
||||||
|
28479 => 0
|
||||||
|
IsCanalTile() done
|
||||||
|
Count(): 40
|
||||||
|
ListDump:
|
||||||
|
28744 => 1
|
||||||
|
29256 => 0
|
||||||
|
29255 => 0
|
||||||
|
29254 => 0
|
||||||
|
29253 => 0
|
||||||
|
29252 => 0
|
||||||
|
29251 => 0
|
||||||
|
29250 => 0
|
||||||
|
29249 => 0
|
||||||
|
29248 => 0
|
||||||
|
29247 => 0
|
||||||
|
29000 => 0
|
||||||
|
28999 => 0
|
||||||
|
28998 => 0
|
||||||
|
28997 => 0
|
||||||
|
28996 => 0
|
||||||
|
28995 => 0
|
||||||
|
28994 => 0
|
||||||
|
28993 => 0
|
||||||
|
28992 => 0
|
||||||
|
28991 => 0
|
||||||
|
28743 => 0
|
||||||
|
28742 => 0
|
||||||
|
28741 => 0
|
||||||
|
28740 => 0
|
||||||
|
28739 => 0
|
||||||
|
28738 => 0
|
||||||
|
28737 => 0
|
||||||
|
28736 => 0
|
||||||
|
28735 => 0
|
||||||
|
28488 => 0
|
||||||
|
28487 => 0
|
||||||
|
28486 => 0
|
||||||
|
28485 => 0
|
||||||
|
28484 => 0
|
||||||
|
28483 => 0
|
||||||
|
28482 => 0
|
||||||
|
28481 => 0
|
||||||
|
28480 => 0
|
||||||
|
28479 => 0
|
||||||
|
IsCoastTile() done
|
||||||
|
Count(): 40
|
||||||
|
ListDump:
|
||||||
|
28998 => 1
|
||||||
|
28997 => 1
|
||||||
|
28743 => 1
|
||||||
|
28742 => 1
|
||||||
|
29256 => 0
|
||||||
|
29255 => 0
|
||||||
|
29254 => 0
|
||||||
|
29253 => 0
|
||||||
|
29252 => 0
|
||||||
|
29251 => 0
|
||||||
|
29250 => 0
|
||||||
|
29249 => 0
|
||||||
|
29248 => 0
|
||||||
|
29247 => 0
|
||||||
|
29000 => 0
|
||||||
|
28999 => 0
|
||||||
|
28996 => 0
|
||||||
|
28995 => 0
|
||||||
|
28994 => 0
|
||||||
|
28993 => 0
|
||||||
|
28992 => 0
|
||||||
|
28991 => 0
|
||||||
|
28744 => 0
|
||||||
|
28741 => 0
|
||||||
|
28740 => 0
|
||||||
|
28739 => 0
|
||||||
|
28738 => 0
|
||||||
|
28737 => 0
|
||||||
|
28736 => 0
|
||||||
|
28735 => 0
|
||||||
|
28488 => 0
|
||||||
|
28487 => 0
|
||||||
|
28486 => 0
|
||||||
|
28485 => 0
|
||||||
|
28484 => 0
|
||||||
|
28483 => 0
|
||||||
|
28482 => 0
|
||||||
|
28481 => 0
|
||||||
|
28480 => 0
|
||||||
|
28479 => 0
|
||||||
|
|
||||||
--TileList_IndustryAccepting--
|
--TileList_IndustryAccepting--
|
||||||
Count(): 47
|
Count(): 47
|
||||||
@@ -9099,12 +9272,12 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
GetLocation(): 33417
|
GetLocation(): 33417
|
||||||
GetEngineType(): 153
|
GetEngineType(): 153
|
||||||
GetUnitNumber(): 1
|
GetUnitNumber(): 1
|
||||||
GetAge(): 0
|
GetAge(): 1
|
||||||
GetMaxAge(): 5490
|
GetMaxAge(): 5490
|
||||||
GetAgeLeft(): 5490
|
GetAgeLeft(): 5489
|
||||||
GetCurrentSpeed(): 7
|
GetCurrentSpeed(): 7
|
||||||
GetRunningCost(): 421
|
GetRunningCost(): 421
|
||||||
GetProfitThisYear(): 0
|
GetProfitThisYear(): -1
|
||||||
GetProfitLastYear(): 0
|
GetProfitLastYear(): 0
|
||||||
GetCurrentValue(): 5947
|
GetCurrentValue(): 5947
|
||||||
GetVehicleType(): 1
|
GetVehicleType(): 1
|
||||||
@@ -9114,7 +9287,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
IsInDepot(): false
|
IsInDepot(): false
|
||||||
GetNumWagons(): 1
|
GetNumWagons(): 1
|
||||||
GetWagonEngineType(): 153
|
GetWagonEngineType(): 153
|
||||||
GetWagonAge(): 0
|
GetWagonAge(): 1
|
||||||
GetLength(): 8
|
GetLength(): 8
|
||||||
GetOwner(): 1
|
GetOwner(): 1
|
||||||
BuildVehicle(): 14
|
BuildVehicle(): 14
|
||||||
@@ -9139,9 +9312,9 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
GetNumWagons(): 3
|
GetNumWagons(): 3
|
||||||
GetLength(): 24
|
GetLength(): 24
|
||||||
GetWagonEngineType(): 9
|
GetWagonEngineType(): 9
|
||||||
GetWagonAge(): 1
|
GetWagonAge(): 0
|
||||||
GetWagonEngineType(): 27
|
GetWagonEngineType(): 27
|
||||||
GetWagonAge(): 1
|
GetWagonAge(): 0
|
||||||
GetWagonEngineType(): 27
|
GetWagonEngineType(): 27
|
||||||
GetWagonAge(): 0
|
GetWagonAge(): 0
|
||||||
GetWagonEngineType(): 65535
|
GetWagonEngineType(): 65535
|
||||||
@@ -9187,11 +9360,11 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
14 => 1
|
14 => 1
|
||||||
12 => 1
|
12 => 1
|
||||||
Age ListDump:
|
Age ListDump:
|
||||||
17 => 1
|
|
||||||
16 => 1
|
|
||||||
14 => 1
|
|
||||||
13 => 1
|
13 => 1
|
||||||
12 => 1
|
12 => 1
|
||||||
|
17 => 0
|
||||||
|
16 => 0
|
||||||
|
14 => 0
|
||||||
MaxAge ListDump:
|
MaxAge ListDump:
|
||||||
16 => 10980
|
16 => 10980
|
||||||
14 => 10980
|
14 => 10980
|
||||||
@@ -9199,9 +9372,9 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
13 => 5490
|
13 => 5490
|
||||||
12 => 5490
|
12 => 5490
|
||||||
AgeLeft ListDump:
|
AgeLeft ListDump:
|
||||||
16 => 10979
|
16 => 10980
|
||||||
14 => 10979
|
14 => 10980
|
||||||
17 => 7319
|
17 => 7320
|
||||||
13 => 5489
|
13 => 5489
|
||||||
12 => 5489
|
12 => 5489
|
||||||
CurrentSpeed ListDump:
|
CurrentSpeed ListDump:
|
||||||
|
|||||||
@@ -225,7 +225,7 @@ static const Command _command_proc_table[] = {
|
|||||||
DEF_CMD(CmdBuildSingleSignal, CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_BUILD_SIGNALS
|
DEF_CMD(CmdBuildSingleSignal, CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_BUILD_SIGNALS
|
||||||
DEF_CMD(CmdRemoveSingleSignal, CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_REMOVE_SIGNALS
|
DEF_CMD(CmdRemoveSingleSignal, CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_REMOVE_SIGNALS
|
||||||
DEF_CMD(CmdTerraformLand, CMD_ALL_TILES | CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_TERRAFORM_LAND
|
DEF_CMD(CmdTerraformLand, CMD_ALL_TILES | CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_TERRAFORM_LAND
|
||||||
DEF_CMD(CmdBuildObject, CMD_NO_WATER | CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_BUILD_OBJECT
|
DEF_CMD(CmdBuildObject, CMD_DEITY | CMD_NO_WATER | CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_BUILD_OBJECT
|
||||||
DEF_CMD(CmdBuildTunnel, CMD_DEITY | CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_BUILD_TUNNEL
|
DEF_CMD(CmdBuildTunnel, CMD_DEITY | CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_BUILD_TUNNEL
|
||||||
DEF_CMD(CmdRemoveFromRailStation, 0, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_REMOVE_FROM_RAIL_STATION
|
DEF_CMD(CmdRemoveFromRailStation, 0, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_REMOVE_FROM_RAIL_STATION
|
||||||
DEF_CMD(CmdConvertRail, 0, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_CONVERT_RAILD
|
DEF_CMD(CmdConvertRail, 0, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_CONVERT_RAILD
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
#include "string_func.h"
|
#include "string_func.h"
|
||||||
#include "fileio_func.h"
|
#include "fileio_func.h"
|
||||||
#include "settings_type.h"
|
#include "settings_type.h"
|
||||||
|
#include <mutex>
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
#include "os/windows/win32.h"
|
#include "os/windows/win32.h"
|
||||||
@@ -26,6 +27,16 @@ SOCKET _debug_socket = INVALID_SOCKET;
|
|||||||
|
|
||||||
#include "safeguards.h"
|
#include "safeguards.h"
|
||||||
|
|
||||||
|
/** Element in the queue of debug messages that have to be passed to either NetworkAdminConsole or IConsolePrint.*/
|
||||||
|
struct QueuedDebugItem {
|
||||||
|
std::string level; ///< The used debug level.
|
||||||
|
std::string message; ///< The actual formatted message.
|
||||||
|
};
|
||||||
|
std::atomic<bool> _debug_remote_console; ///< Whether we need to send data to either NetworkAdminConsole or IConsolePrint.
|
||||||
|
std::mutex _debug_remote_console_mutex; ///< Mutex to guard the queue of debug messages for either NetworkAdminConsole or IConsolePrint.
|
||||||
|
std::vector<QueuedDebugItem> _debug_remote_console_queue; ///< Queue for debug messages to be passed to NetworkAdminConsole or IConsolePrint.
|
||||||
|
std::vector<QueuedDebugItem> _debug_remote_console_queue_spare; ///< Spare queue to swap with _debug_remote_console_queue.
|
||||||
|
|
||||||
int _debug_driver_level;
|
int _debug_driver_level;
|
||||||
int _debug_grf_level;
|
int _debug_grf_level;
|
||||||
int _debug_map_level;
|
int _debug_map_level;
|
||||||
@@ -107,6 +118,11 @@ void DebugPrint(const char *level, const std::string &message)
|
|||||||
{
|
{
|
||||||
if (_debug_socket != INVALID_SOCKET) {
|
if (_debug_socket != INVALID_SOCKET) {
|
||||||
std::string msg = fmt::format("{}dbg: [{}] {}\n", GetLogPrefix(), level, message);
|
std::string msg = fmt::format("{}dbg: [{}] {}\n", GetLogPrefix(), level, message);
|
||||||
|
|
||||||
|
/* Prevent sending a message concurrently, as that might cause interleaved messages. */
|
||||||
|
static std::mutex _debug_socket_mutex;
|
||||||
|
std::lock_guard<std::mutex> lock(_debug_socket_mutex);
|
||||||
|
|
||||||
/* Sending out an error when this fails would be nice, however... the error
|
/* Sending out an error when this fails would be nice, however... the error
|
||||||
* would have to be send over this failing socket which won't work. */
|
* would have to be send over this failing socket which won't work. */
|
||||||
send(_debug_socket, msg.c_str(), (int)msg.size(), 0);
|
send(_debug_socket, msg.c_str(), (int)msg.size(), 0);
|
||||||
@@ -130,8 +146,11 @@ void DebugPrint(const char *level, const std::string &message)
|
|||||||
std::string msg = fmt::format("{}dbg: [{}] {}\n", GetLogPrefix(), level, message);
|
std::string msg = fmt::format("{}dbg: [{}] {}\n", GetLogPrefix(), level, message);
|
||||||
fputs(msg.c_str(), stderr);
|
fputs(msg.c_str(), stderr);
|
||||||
|
|
||||||
NetworkAdminConsole(level, message);
|
if (_debug_remote_console.load()) {
|
||||||
if (_settings_client.gui.developer >= 2) IConsolePrint(CC_DEBUG, "dbg: [{}] {}", level, message);
|
/* Only add to the queue when there is at least one consumer of the data. */
|
||||||
|
std::lock_guard<std::mutex> lock(_debug_remote_console_mutex);
|
||||||
|
_debug_remote_console_queue.push_back({ level, message });
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -229,3 +248,47 @@ const char *GetLogPrefix()
|
|||||||
return _log_prefix;
|
return _log_prefix;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send the queued Debug messages to either NetworkAdminConsole or IConsolePrint from the
|
||||||
|
* GameLoop thread to prevent concurrent accesses to both the NetworkAdmin's packet queue
|
||||||
|
* as well as IConsolePrint's buffers.
|
||||||
|
*
|
||||||
|
* This is to be called from the GameLoop thread.
|
||||||
|
*/
|
||||||
|
void DebugSendRemoteMessages()
|
||||||
|
{
|
||||||
|
if (!_debug_remote_console.load()) return;
|
||||||
|
|
||||||
|
{
|
||||||
|
std::lock_guard<std::mutex> lock(_debug_remote_console_mutex);
|
||||||
|
std::swap(_debug_remote_console_queue, _debug_remote_console_queue_spare);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (auto &item : _debug_remote_console_queue_spare) {
|
||||||
|
NetworkAdminConsole(item.level, item.message);
|
||||||
|
if (_settings_client.gui.developer >= 2) IConsolePrint(CC_DEBUG, "dbg: [{}] {}", item.level, item.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
_debug_remote_console_queue_spare.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reconsider whether we need to send debug messages to either NetworkAdminConsole
|
||||||
|
* or IConsolePrint. The former is when they have enabled console handling whereas
|
||||||
|
* the latter depends on the gui.developer setting's value.
|
||||||
|
*
|
||||||
|
* This is to be called from the GameLoop thread.
|
||||||
|
*/
|
||||||
|
void DebugReconsiderSendRemoteMessages()
|
||||||
|
{
|
||||||
|
bool enable = _settings_client.gui.developer >= 2;
|
||||||
|
|
||||||
|
for (ServerNetworkAdminSocketHandler *as : ServerNetworkAdminSocketHandler::IterateActive()) {
|
||||||
|
if (as->update_frequency[ADMIN_UPDATE_CONSOLE] & ADMIN_FREQUENCY_AUTOMATIC) {
|
||||||
|
enable = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_debug_remote_console.store(enable);
|
||||||
|
}
|
||||||
|
|||||||
@@ -122,4 +122,7 @@ void CDECL ShowInfoF(const char *str, ...) WARN_FORMAT(1, 2);
|
|||||||
|
|
||||||
const char *GetLogPrefix();
|
const char *GetLogPrefix();
|
||||||
|
|
||||||
|
void DebugSendRemoteMessages();
|
||||||
|
void DebugReconsiderSendRemoteMessages();
|
||||||
|
|
||||||
#endif /* DEBUG_H */
|
#endif /* DEBUG_H */
|
||||||
|
|||||||
56
src/gfx.cpp
56
src/gfx.cpp
@@ -1059,18 +1059,19 @@ void DrawSprite(SpriteID img, PaletteID pal, int x, int y, const SubSprite *sub,
|
|||||||
/**
|
/**
|
||||||
* The code for setting up the blitter mode and sprite information before finally drawing the sprite.
|
* The code for setting up the blitter mode and sprite information before finally drawing the sprite.
|
||||||
* @param sprite The sprite to draw.
|
* @param sprite The sprite to draw.
|
||||||
* @param x The X location to draw.
|
* @param x The X location to draw.
|
||||||
* @param y The Y location to draw.
|
* @param y The Y location to draw.
|
||||||
* @param mode The settings for the blitter to pass.
|
* @param mode The settings for the blitter to pass.
|
||||||
* @param sub Whether to only draw a sub set of the sprite.
|
* @param sub Whether to only draw a sub set of the sprite.
|
||||||
* @param zoom The zoom level at which to draw the sprites.
|
* @param zoom The zoom level at which to draw the sprites.
|
||||||
|
* @param dst Optional parameter for a different blitting destination.
|
||||||
* @tparam ZOOM_BASE The factor required to get the sub sprite information into the right size.
|
* @tparam ZOOM_BASE The factor required to get the sub sprite information into the right size.
|
||||||
* @tparam SCALED_XY Whether the X and Y are scaled or unscaled.
|
* @tparam SCALED_XY Whether the X and Y are scaled or unscaled.
|
||||||
*/
|
*/
|
||||||
template <int ZOOM_BASE, bool SCALED_XY>
|
template <int ZOOM_BASE, bool SCALED_XY>
|
||||||
static void GfxBlitter(const Sprite * const sprite, int x, int y, BlitterMode mode, const SubSprite * const sub, SpriteID sprite_id, ZoomLevel zoom)
|
static void GfxBlitter(const Sprite * const sprite, int x, int y, BlitterMode mode, const SubSprite * const sub, SpriteID sprite_id, ZoomLevel zoom, const DrawPixelInfo *dst = nullptr)
|
||||||
{
|
{
|
||||||
const DrawPixelInfo *dpi = _cur_dpi;
|
const DrawPixelInfo *dpi = (dst != nullptr) ? dst : _cur_dpi;
|
||||||
Blitter::BlitterParams bp;
|
Blitter::BlitterParams bp;
|
||||||
|
|
||||||
if (SCALED_XY) {
|
if (SCALED_XY) {
|
||||||
@@ -1185,6 +1186,47 @@ static void GfxBlitter(const Sprite * const sprite, int x, int y, BlitterMode mo
|
|||||||
BlitterFactory::GetCurrentBlitter()->Draw(&bp, mode, zoom);
|
BlitterFactory::GetCurrentBlitter()->Draw(&bp, mode, zoom);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Draws a sprite to a new RGBA buffer (see Colour union) instead of drawing to the screen.
|
||||||
|
*
|
||||||
|
* @param spriteId The sprite to draw.
|
||||||
|
* @return Pixel buffer, or nullptr if an 8bpp blitter is being used.
|
||||||
|
*/
|
||||||
|
std::unique_ptr<uint32[]> DrawSpriteToRgbaBuffer(SpriteID spriteId)
|
||||||
|
{
|
||||||
|
Blitter *blitter = BlitterFactory::GetCurrentBlitter();
|
||||||
|
if (!blitter->Is32BppSupported()) return nullptr;
|
||||||
|
|
||||||
|
/* Gather information about the sprite to write, reserve memory */
|
||||||
|
const SpriteID real_sprite = GB(spriteId, 0, SPRITE_WIDTH);
|
||||||
|
const Sprite *sprite = GetSprite(real_sprite, ST_NORMAL);
|
||||||
|
std::unique_ptr<uint32[]> result(new uint32[sprite->width * sprite->height]);
|
||||||
|
|
||||||
|
/* Prepare new DrawPixelInfo - Normally this would be the screen but we want to draw to another buffer here.
|
||||||
|
* Normally, pitch would be scaled screen width, but in our case our "screen" is only the sprite width wide. */
|
||||||
|
DrawPixelInfo dpi;
|
||||||
|
dpi.dst_ptr = result.get();
|
||||||
|
dpi.pitch = sprite->width;
|
||||||
|
dpi.left = 0;
|
||||||
|
dpi.top = 0;
|
||||||
|
dpi.width = sprite->width;
|
||||||
|
dpi.height = sprite->height;
|
||||||
|
dpi.zoom = ZOOM_LVL_NORMAL;
|
||||||
|
|
||||||
|
/* Zero out the allocated memory, there may be garbage present. */
|
||||||
|
uint32 *writeHead = (uint32*)result.get();
|
||||||
|
for (int i = 0; i < sprite->width * sprite->height; i++) {
|
||||||
|
writeHead[i] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Temporarily disable screen animations while blitting - This prevents 40bpp_anim from writing to the animation buffer. */
|
||||||
|
_screen_disable_anim = true;
|
||||||
|
GfxBlitter<1, false>(sprite, 0, 0, BM_NORMAL, nullptr, real_sprite, ZOOM_LVL_NORMAL, &dpi);
|
||||||
|
_screen_disable_anim = false;
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
static void GfxMainBlitterViewport(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub, SpriteID sprite_id)
|
static void GfxMainBlitterViewport(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub, SpriteID sprite_id)
|
||||||
{
|
{
|
||||||
GfxBlitter<ZOOM_LVL_BASE, false>(sprite, x, y, mode, sub, sprite_id, _cur_dpi->zoom);
|
GfxBlitter<ZOOM_LVL_BASE, false>(sprite, x, y, mode, sub, sprite_id, _cur_dpi->zoom);
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ extern std::vector<Dimension> _resolutions;
|
|||||||
extern Dimension _cur_resolution;
|
extern Dimension _cur_resolution;
|
||||||
extern Palette _cur_palette; ///< Current palette
|
extern Palette _cur_palette; ///< Current palette
|
||||||
|
|
||||||
|
void HandleToolbarHotkey(int hotkey);
|
||||||
void HandleKeypress(uint keycode, WChar key);
|
void HandleKeypress(uint keycode, WChar key);
|
||||||
void HandleTextInput(const char *str, bool marked = false, const char *caret = nullptr, const char *insert_location = nullptr, const char *replacement_end = nullptr);
|
void HandleTextInput(const char *str, bool marked = false, const char *caret = nullptr, const char *insert_location = nullptr, const char *replacement_end = nullptr);
|
||||||
void HandleCtrlChanged();
|
void HandleCtrlChanged();
|
||||||
@@ -90,6 +91,7 @@ void GfxScroll(int left, int top, int width, int height, int xo, int yo);
|
|||||||
Dimension GetSpriteSize(SpriteID sprid, Point *offset = nullptr, ZoomLevel zoom = ZOOM_LVL_GUI);
|
Dimension GetSpriteSize(SpriteID sprid, Point *offset = nullptr, ZoomLevel zoom = ZOOM_LVL_GUI);
|
||||||
void DrawSpriteViewport(SpriteID img, PaletteID pal, int x, int y, const SubSprite *sub = nullptr);
|
void DrawSpriteViewport(SpriteID img, PaletteID pal, int x, int y, const SubSprite *sub = nullptr);
|
||||||
void DrawSprite(SpriteID img, PaletteID pal, int x, int y, const SubSprite *sub = nullptr, ZoomLevel zoom = ZOOM_LVL_GUI);
|
void DrawSprite(SpriteID img, PaletteID pal, int x, int y, const SubSprite *sub = nullptr, ZoomLevel zoom = ZOOM_LVL_GUI);
|
||||||
|
std::unique_ptr<uint32[]> DrawSpriteToRgbaBuffer(SpriteID spriteId);
|
||||||
|
|
||||||
int DrawString(int left, int right, int top, const char *str, TextColour colour = TC_FROMSTRING, StringAlignment align = SA_LEFT, bool underline = false, FontSize fontsize = FS_NORMAL);
|
int DrawString(int left, int right, int top, const char *str, TextColour colour = TC_FROMSTRING, StringAlignment align = SA_LEFT, bool underline = false, FontSize fontsize = FS_NORMAL);
|
||||||
int DrawString(int left, int right, int top, const std::string &str, TextColour colour = TC_FROMSTRING, StringAlignment align = SA_LEFT, bool underline = false, FontSize fontsize = FS_NORMAL);
|
int DrawString(int left, int right, int top, const std::string &str, TextColour colour = TC_FROMSTRING, StringAlignment align = SA_LEFT, bool underline = false, FontSize fontsize = FS_NORMAL);
|
||||||
|
|||||||
@@ -24,6 +24,7 @@
|
|||||||
#include "core/geometry_func.hpp"
|
#include "core/geometry_func.hpp"
|
||||||
#include "company_base.h"
|
#include "company_base.h"
|
||||||
#include "company_gui.h"
|
#include "company_gui.h"
|
||||||
|
#include "gui.h"
|
||||||
|
|
||||||
#include "widgets/group_widget.h"
|
#include "widgets/group_widget.h"
|
||||||
|
|
||||||
@@ -745,17 +746,19 @@ public:
|
|||||||
NOT_REACHED();
|
NOT_REACHED();
|
||||||
}
|
}
|
||||||
if (v) {
|
if (v) {
|
||||||
this->vehicle_sel = v->index;
|
|
||||||
|
|
||||||
if (_ctrl_pressed) {
|
if (_ctrl_pressed) {
|
||||||
this->SelectGroup(v->group_id);
|
if (this->grouping == GB_NONE) {
|
||||||
|
this->SelectGroup(v->group_id);
|
||||||
|
} else {
|
||||||
|
ShowOrdersWindow(v);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this->vehicle_sel = v->index;
|
||||||
|
SetObjectToPlaceWnd(SPR_CURSOR_MOUSE, PAL_NONE, HT_DRAG, this);
|
||||||
|
SetMouseCursorVehicle(v, EIT_IN_LIST);
|
||||||
|
_cursor.vehchain = true;
|
||||||
|
this->SetDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
SetObjectToPlaceWnd(SPR_CURSOR_MOUSE, PAL_NONE, HT_DRAG, this);
|
|
||||||
SetMouseCursorVehicle(v, EIT_IN_LIST);
|
|
||||||
_cursor.vehchain = true;
|
|
||||||
|
|
||||||
this->SetDirty();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -769,6 +769,7 @@ public:
|
|||||||
const IndustrySpec *indsp = (this->selected_type == INVALID_INDUSTRYTYPE) ? nullptr : GetIndustrySpec(this->selected_type);
|
const IndustrySpec *indsp = (this->selected_type == INVALID_INDUSTRYTYPE) ? nullptr : GetIndustrySpec(this->selected_type);
|
||||||
if (indsp == nullptr) this->enabled[this->selected_index] = _settings_game.difficulty.industry_density != ID_FUND_ONLY;
|
if (indsp == nullptr) this->enabled[this->selected_index] = _settings_game.difficulty.industry_density != ID_FUND_ONLY;
|
||||||
this->SetButtons();
|
this->SetButtons();
|
||||||
|
this->SetDirty();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -11,12 +11,14 @@
|
|||||||
#include "error.h"
|
#include "error.h"
|
||||||
#include "gui.h"
|
#include "gui.h"
|
||||||
#include "window_gui.h"
|
#include "window_gui.h"
|
||||||
|
#include "window_func.h"
|
||||||
#include "textbuf_gui.h"
|
#include "textbuf_gui.h"
|
||||||
#include "network/network.h"
|
#include "network/network.h"
|
||||||
#include "genworld.h"
|
#include "genworld.h"
|
||||||
#include "network/network_gui.h"
|
#include "network/network_gui.h"
|
||||||
#include "network/network_content.h"
|
#include "network/network_content.h"
|
||||||
#include "landscape_type.h"
|
#include "landscape_type.h"
|
||||||
|
#include "landscape.h"
|
||||||
#include "strings_func.h"
|
#include "strings_func.h"
|
||||||
#include "fios.h"
|
#include "fios.h"
|
||||||
#include "ai/ai_gui.hpp"
|
#include "ai/ai_gui.hpp"
|
||||||
@@ -25,6 +27,10 @@
|
|||||||
#include "language.h"
|
#include "language.h"
|
||||||
#include "rev.h"
|
#include "rev.h"
|
||||||
#include "highscore.h"
|
#include "highscore.h"
|
||||||
|
#include "signs_base.h"
|
||||||
|
#include "viewport_func.h"
|
||||||
|
#include "vehicle_base.h"
|
||||||
|
#include <regex>
|
||||||
|
|
||||||
#include "widgets/intro_widget.h"
|
#include "widgets/intro_widget.h"
|
||||||
|
|
||||||
@@ -33,13 +39,203 @@
|
|||||||
|
|
||||||
#include "safeguards.h"
|
#include "safeguards.h"
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A viewport command for the main menu background (intro game).
|
||||||
|
*/
|
||||||
|
struct IntroGameViewportCommand {
|
||||||
|
/** Horizontal alignment value. */
|
||||||
|
enum AlignmentH : byte {
|
||||||
|
LEFT,
|
||||||
|
CENTRE,
|
||||||
|
RIGHT,
|
||||||
|
};
|
||||||
|
/** Vertical alignment value. */
|
||||||
|
enum AlignmentV : byte {
|
||||||
|
TOP,
|
||||||
|
MIDDLE,
|
||||||
|
BOTTOM,
|
||||||
|
};
|
||||||
|
|
||||||
|
int command_index = 0; ///< Sequence number of the command (order they are performed in).
|
||||||
|
Point position{ 0, 0 }; ///< Calculated world coordinate to position viewport top-left at.
|
||||||
|
VehicleID vehicle = INVALID_VEHICLE; ///< Vehicle to follow, or INVALID_VEHICLE if not following a vehicle.
|
||||||
|
uint delay = 0; ///< Delay until next command.
|
||||||
|
int zoom_adjust = 0; ///< Adjustment to zoom level from base zoom level.
|
||||||
|
bool pan_to_next = false; ///< If true, do a smooth pan from this position to the next.
|
||||||
|
AlignmentH align_h = CENTRE; ///< Horizontal alignment.
|
||||||
|
AlignmentV align_v = MIDDLE; ///< Vertical alignment.
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculate effective position.
|
||||||
|
* This will update the position field if a vehicle is followed.
|
||||||
|
* @param vp Viewport to calculate position for.
|
||||||
|
* @return Calculated position in the viewport.
|
||||||
|
*/
|
||||||
|
Point PositionForViewport(const Viewport *vp)
|
||||||
|
{
|
||||||
|
if (this->vehicle != INVALID_VEHICLE) {
|
||||||
|
const Vehicle *v = Vehicle::Get(this->vehicle);
|
||||||
|
this->position = RemapCoords(v->x_pos, v->y_pos, v->z_pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
Point p;
|
||||||
|
switch (this->align_h) {
|
||||||
|
case LEFT: p.x = this->position.x; break;
|
||||||
|
case CENTRE: p.x = this->position.x - vp->virtual_width / 2; break;
|
||||||
|
case RIGHT: p.x = this->position.x - vp->virtual_width; break;
|
||||||
|
}
|
||||||
|
switch (this->align_v) {
|
||||||
|
case TOP: p.y = this->position.y; break;
|
||||||
|
case MIDDLE: p.y = this->position.y - vp->virtual_height / 2; break;
|
||||||
|
case BOTTOM: p.y = this->position.y - vp->virtual_height; break;
|
||||||
|
}
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
struct SelectGameWindow : public Window {
|
struct SelectGameWindow : public Window {
|
||||||
|
/** Vector of viewport commands parsed. */
|
||||||
|
std::vector<IntroGameViewportCommand> intro_viewport_commands;
|
||||||
|
/** Index of currently active viewport command. */
|
||||||
|
size_t cur_viewport_command_index;
|
||||||
|
/** Time spent (milliseconds) on current viewport command. */
|
||||||
|
uint cur_viewport_command_time;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find and parse all viewport command signs.
|
||||||
|
* Fills the intro_viewport_commands vector and deletes parsed signs from the world.
|
||||||
|
*/
|
||||||
|
void ReadIntroGameViewportCommands()
|
||||||
|
{
|
||||||
|
intro_viewport_commands.clear();
|
||||||
|
|
||||||
|
/* Regular expression matching the commands: T, spaces, integer, spaces, flags, spaces, integer */
|
||||||
|
const char *sign_langauge = "^T\\s*([0-9]+)\\s*([-+A-Z0-9]+)\\s*([0-9]+)";
|
||||||
|
std::regex re(sign_langauge, std::regex_constants::icase);
|
||||||
|
|
||||||
|
/* List of signs successfully parsed to delete afterwards. */
|
||||||
|
std::vector<SignID> signs_to_delete;
|
||||||
|
|
||||||
|
for (const Sign *sign : Sign::Iterate()) {
|
||||||
|
std::smatch match;
|
||||||
|
if (std::regex_search(sign->name, match, re)) {
|
||||||
|
IntroGameViewportCommand vc;
|
||||||
|
/* Sequence index from the first matching group. */
|
||||||
|
vc.command_index = std::stoi(match[1].str());
|
||||||
|
/* Sign coordinates for positioning. */
|
||||||
|
vc.position = RemapCoords(sign->x, sign->y, sign->z);
|
||||||
|
/* Delay from the third matching group. */
|
||||||
|
vc.delay = std::stoi(match[3].str()) * 1000; // milliseconds
|
||||||
|
|
||||||
|
/* Parse flags from second matching group. */
|
||||||
|
enum IdType {
|
||||||
|
ID_NONE, ID_VEHICLE
|
||||||
|
} id_type = ID_NONE;
|
||||||
|
for (char c : match[2].str()) {
|
||||||
|
if (isdigit(c)) {
|
||||||
|
if (id_type == ID_VEHICLE) {
|
||||||
|
vc.vehicle = vc.vehicle * 10 + (c - '0');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
id_type = ID_NONE;
|
||||||
|
switch (toupper(c)) {
|
||||||
|
case '-': vc.zoom_adjust = +1; break;
|
||||||
|
case '+': vc.zoom_adjust = -1; break;
|
||||||
|
case 'T': vc.align_v = IntroGameViewportCommand::TOP; break;
|
||||||
|
case 'M': vc.align_v = IntroGameViewportCommand::MIDDLE; break;
|
||||||
|
case 'B': vc.align_v = IntroGameViewportCommand::BOTTOM; break;
|
||||||
|
case 'L': vc.align_h = IntroGameViewportCommand::LEFT; break;
|
||||||
|
case 'C': vc.align_h = IntroGameViewportCommand::CENTRE; break;
|
||||||
|
case 'R': vc.align_h = IntroGameViewportCommand::RIGHT; break;
|
||||||
|
case 'P': vc.pan_to_next = true; break;
|
||||||
|
case 'V': id_type = ID_VEHICLE; vc.vehicle = 0; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Successfully parsed, store. */
|
||||||
|
intro_viewport_commands.push_back(vc);
|
||||||
|
signs_to_delete.push_back(sign->index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Sort the commands by sequence index. */
|
||||||
|
std::sort(intro_viewport_commands.begin(), intro_viewport_commands.end(), [](const IntroGameViewportCommand &a, const IntroGameViewportCommand &b) { return a.command_index < b.command_index; });
|
||||||
|
|
||||||
|
/* Delete all the consumed signs, from last ID to first ID. */
|
||||||
|
std::sort(signs_to_delete.begin(), signs_to_delete.end(), [](SignID a, SignID b) { return a > b; });
|
||||||
|
for (SignID sign_id : signs_to_delete) {
|
||||||
|
delete Sign::Get(sign_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
SelectGameWindow(WindowDesc *desc) : Window(desc)
|
SelectGameWindow(WindowDesc *desc) : Window(desc)
|
||||||
{
|
{
|
||||||
this->CreateNestedTree();
|
this->CreateNestedTree();
|
||||||
this->FinishInitNested(0);
|
this->FinishInitNested(0);
|
||||||
this->OnInvalidateData();
|
this->OnInvalidateData();
|
||||||
|
|
||||||
|
this->ReadIntroGameViewportCommands();
|
||||||
|
|
||||||
|
this->cur_viewport_command_index = (size_t)-1;
|
||||||
|
this->cur_viewport_command_time = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnRealtimeTick(uint delta_ms) override
|
||||||
|
{
|
||||||
|
/* Move the main game viewport according to intro viewport commands. */
|
||||||
|
|
||||||
|
if (intro_viewport_commands.empty()) return;
|
||||||
|
|
||||||
|
/* Determine whether to move to the next command or stay at current. */
|
||||||
|
bool changed_command = false;
|
||||||
|
if (this->cur_viewport_command_index >= intro_viewport_commands.size()) {
|
||||||
|
/* Reached last, rotate back to start of the list. */
|
||||||
|
this->cur_viewport_command_index = 0;
|
||||||
|
changed_command = true;
|
||||||
|
} else {
|
||||||
|
/* Check if current command has elapsed and switch to next. */
|
||||||
|
this->cur_viewport_command_time += delta_ms;
|
||||||
|
if (this->cur_viewport_command_time >= intro_viewport_commands[this->cur_viewport_command_index].delay) {
|
||||||
|
this->cur_viewport_command_index = (this->cur_viewport_command_index + 1) % intro_viewport_commands.size();
|
||||||
|
this->cur_viewport_command_time = 0;
|
||||||
|
changed_command = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
IntroGameViewportCommand &vc = intro_viewport_commands[this->cur_viewport_command_index];
|
||||||
|
Window *mw = FindWindowByClass(WC_MAIN_WINDOW);
|
||||||
|
Viewport *vp = mw->viewport;
|
||||||
|
|
||||||
|
/* Early exit if the current command hasn't elapsed and isn't animated. */
|
||||||
|
if (!changed_command && !vc.pan_to_next && vc.vehicle == INVALID_VEHICLE) return;
|
||||||
|
|
||||||
|
/* Reset the zoom level. */
|
||||||
|
if (changed_command) FixTitleGameZoom(vc.zoom_adjust);
|
||||||
|
|
||||||
|
/* Calculate current command position (updates followed vehicle coordinates). */
|
||||||
|
Point pos = vc.PositionForViewport(vp);
|
||||||
|
|
||||||
|
/* Calculate panning (linear interpolation between current and next command position). */
|
||||||
|
if (vc.pan_to_next) {
|
||||||
|
size_t next_command_index = (this->cur_viewport_command_index + 1) % intro_viewport_commands.size();
|
||||||
|
IntroGameViewportCommand &nvc = intro_viewport_commands[next_command_index];
|
||||||
|
Point pos2 = nvc.PositionForViewport(vp);
|
||||||
|
const double t = this->cur_viewport_command_time / (double)vc.delay;
|
||||||
|
pos.x = pos.x + (int)(t * (pos2.x - pos.x));
|
||||||
|
pos.y = pos.y + (int)(t * (pos2.y - pos.y));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Update the viewport position. */
|
||||||
|
mw->viewport->dest_scrollpos_x = mw->viewport->scrollpos_x = pos.x;
|
||||||
|
mw->viewport->dest_scrollpos_y = mw->viewport->scrollpos_y = pos.y;
|
||||||
|
UpdateViewportPosition(mw);
|
||||||
|
mw->SetDirty(); // Required during panning, otherwise logo graphics disappears
|
||||||
|
|
||||||
|
/* If there is only one command, we just executed it and don't need to do any more */
|
||||||
|
if (intro_viewport_commands.size() == 1 && vc.vehicle == INVALID_VEHICLE) intro_viewport_commands.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -134,7 +134,7 @@ STR_ABBREV_ALL :{TINY_FONT}ПӖ
|
|||||||
# 'Mode' of transport for cargoes
|
# 'Mode' of transport for cargoes
|
||||||
STR_PASSENGERS :{COMMA} пассажир{P "" сем}
|
STR_PASSENGERS :{COMMA} пассажир{P "" сем}
|
||||||
|
|
||||||
# Colours, do not shuffle
|
###length 17
|
||||||
STR_COLOUR_DARK_BLUE :Тӗттӗм кӑвак
|
STR_COLOUR_DARK_BLUE :Тӗттӗм кӑвак
|
||||||
STR_COLOUR_PALE_GREEN :Шупка симӗс
|
STR_COLOUR_PALE_GREEN :Шупка симӗс
|
||||||
STR_COLOUR_PINK :Кӗрен
|
STR_COLOUR_PINK :Кӗрен
|
||||||
@@ -169,7 +169,9 @@ STR_UNITS_POWER_SI :{COMMA}кВт
|
|||||||
STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Чӳречене хуп
|
STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Чӳречене хуп
|
||||||
|
|
||||||
# Show engines button
|
# Show engines button
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
# Query window
|
# Query window
|
||||||
STR_BUTTON_DEFAULT :{BLACK}Пӳрнӗ пек
|
STR_BUTTON_DEFAULT :{BLACK}Пӳрнӗ пек
|
||||||
@@ -204,7 +206,10 @@ STR_SORT_BY_POPULATION :Ҫынисем
|
|||||||
|
|
||||||
# Group by options for vehicle list
|
# Group by options for vehicle list
|
||||||
|
|
||||||
|
# Order button in shared orders vehicle list
|
||||||
|
|
||||||
# Tooltips for the main toolbar
|
# Tooltips for the main toolbar
|
||||||
|
###length 31
|
||||||
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Вӑййи тӑхтав
|
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Вӑййи тӑхтав
|
||||||
STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Вӑййи хӑвӑртлат
|
STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Вӑййи хӑвӑртлат
|
||||||
STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Майлаштару
|
STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Майлаштару
|
||||||
@@ -214,69 +219,71 @@ STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Аэро
|
|||||||
STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD
|
STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD
|
||||||
STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Объект вырӑнӗ
|
STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Объект вырӑнӗ
|
||||||
|
|
||||||
############ range for SE file menu starts
|
# Scenario editor file menu
|
||||||
|
###length 7
|
||||||
STR_SCENEDIT_FILE_MENU_SEPARATOR :
|
STR_SCENEDIT_FILE_MENU_SEPARATOR :
|
||||||
STR_SCENEDIT_FILE_MENU_QUIT :Вӗҫле
|
STR_SCENEDIT_FILE_MENU_QUIT :Вӗҫле
|
||||||
############ range for SE file menu starts
|
|
||||||
|
|
||||||
############ range for settings menu starts
|
# Settings menu
|
||||||
|
###length 14
|
||||||
STR_SETTINGS_MENU_GAME_OPTIONS :Вӑййи майлаштару
|
STR_SETTINGS_MENU_GAME_OPTIONS :Вӑййи майлаштару
|
||||||
STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF майлаштару
|
STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF майлаштару
|
||||||
############ range ends here
|
|
||||||
|
|
||||||
############ range for file menu starts
|
# File menu
|
||||||
|
###length 5
|
||||||
STR_FILE_MENU_SEPARATOR :
|
STR_FILE_MENU_SEPARATOR :
|
||||||
STR_FILE_MENU_EXIT :Тух
|
STR_FILE_MENU_EXIT :Тух
|
||||||
############ range ends here
|
|
||||||
|
|
||||||
# map menu
|
# Map menu
|
||||||
|
###length 4
|
||||||
|
|
||||||
############ range for town menu starts
|
# Town menu
|
||||||
############ range ends here
|
###length 2
|
||||||
|
|
||||||
############ range for subsidies menu starts
|
# Subsidies menu
|
||||||
|
###length 1
|
||||||
STR_SUBSIDIES_MENU_SUBSIDIES :Грантсем
|
STR_SUBSIDIES_MENU_SUBSIDIES :Грантсем
|
||||||
############ range ends here
|
|
||||||
|
|
||||||
############ range for graph menu starts
|
# Graph menu
|
||||||
############ range ends here
|
###length 6
|
||||||
|
|
||||||
############ range for company league menu starts
|
# Company league menu
|
||||||
############ range ends here
|
###length 3
|
||||||
|
|
||||||
############ range for industry menu starts
|
# Industry menu
|
||||||
############ range ends here
|
###length 3
|
||||||
|
|
||||||
############ range for railway construction menu starts
|
# URailway construction menu
|
||||||
############ range ends here
|
###length 4
|
||||||
|
|
||||||
############ range for road construction menu starts
|
# Road construction menu
|
||||||
############ range ends here
|
###length 2
|
||||||
|
|
||||||
############ range for waterways construction menu starts
|
# Waterways construction menu
|
||||||
############ range ends here
|
###length 1
|
||||||
|
|
||||||
############ range for airport construction menu starts
|
# Aairport construction menu
|
||||||
|
###length 1
|
||||||
STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Аэропорт ҫурт
|
STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Аэропорт ҫурт
|
||||||
############ range ends here
|
|
||||||
|
|
||||||
############ range for landscaping menu starts
|
# Landscaping menu
|
||||||
############ range ends here
|
###length 3
|
||||||
|
|
||||||
############ range for music menu starts
|
# Music menu
|
||||||
|
###length 1
|
||||||
STR_TOOLBAR_SOUND_MUSIC :Сасӑ/Юрӑ-кӗвӗ
|
STR_TOOLBAR_SOUND_MUSIC :Сасӑ/Юрӑ-кӗвӗ
|
||||||
############ range ends here
|
|
||||||
|
|
||||||
############ range for message menu starts
|
# Message menu
|
||||||
############ range ends here
|
###length 3
|
||||||
|
|
||||||
############ range for about menu starts
|
# About menu
|
||||||
|
###length 10
|
||||||
STR_ABOUT_MENU_SEPARATOR :
|
STR_ABOUT_MENU_SEPARATOR :
|
||||||
STR_ABOUT_MENU_SCREENSHOT :Экран сӑнӗ
|
STR_ABOUT_MENU_SCREENSHOT :Экран сӑнӗ
|
||||||
STR_ABOUT_MENU_ABOUT_OPENTTD :'OpenTTD' çинчен
|
STR_ABOUT_MENU_ABOUT_OPENTTD :'OpenTTD' çинчен
|
||||||
############ range ends here
|
|
||||||
|
|
||||||
############ range for ordinal numbers used for the place in the highscore window
|
# Place in highscore window
|
||||||
|
###length 15
|
||||||
STR_ORDINAL_NUMBER_1ST :1мӗш
|
STR_ORDINAL_NUMBER_1ST :1мӗш
|
||||||
STR_ORDINAL_NUMBER_2ND :2мӗш
|
STR_ORDINAL_NUMBER_2ND :2мӗш
|
||||||
STR_ORDINAL_NUMBER_3RD :3-мӗш
|
STR_ORDINAL_NUMBER_3RD :3-мӗш
|
||||||
@@ -292,9 +299,8 @@ STR_ORDINAL_NUMBER_12TH :12-мӗш
|
|||||||
STR_ORDINAL_NUMBER_13TH :13-мӗш
|
STR_ORDINAL_NUMBER_13TH :13-мӗш
|
||||||
STR_ORDINAL_NUMBER_14TH :14-мӗш
|
STR_ORDINAL_NUMBER_14TH :14-мӗш
|
||||||
STR_ORDINAL_NUMBER_15TH :15-мӗш
|
STR_ORDINAL_NUMBER_15TH :15-мӗш
|
||||||
############ range for ordinal numbers ends
|
|
||||||
|
|
||||||
############ range for days starts
|
###length 31
|
||||||
STR_DAY_NUMBER_1ST :1мӗш
|
STR_DAY_NUMBER_1ST :1мӗш
|
||||||
STR_DAY_NUMBER_2ND :2мӗш
|
STR_DAY_NUMBER_2ND :2мӗш
|
||||||
STR_DAY_NUMBER_3RD :3-мӗш
|
STR_DAY_NUMBER_3RD :3-мӗш
|
||||||
@@ -326,9 +332,8 @@ STR_DAY_NUMBER_28TH :28-мӗш
|
|||||||
STR_DAY_NUMBER_29TH :29-мӗш
|
STR_DAY_NUMBER_29TH :29-мӗш
|
||||||
STR_DAY_NUMBER_30TH :30-мӗш
|
STR_DAY_NUMBER_30TH :30-мӗш
|
||||||
STR_DAY_NUMBER_31ST :31-мӗш
|
STR_DAY_NUMBER_31ST :31-мӗш
|
||||||
############ range for days ends
|
|
||||||
|
|
||||||
############ range for months starts
|
###length 12
|
||||||
STR_MONTH_ABBREV_JAN :Кӑр
|
STR_MONTH_ABBREV_JAN :Кӑр
|
||||||
STR_MONTH_ABBREV_FEB :Нар
|
STR_MONTH_ABBREV_FEB :Нар
|
||||||
STR_MONTH_ABBREV_MAR :Пуш
|
STR_MONTH_ABBREV_MAR :Пуш
|
||||||
@@ -342,6 +347,7 @@ STR_MONTH_ABBREV_OCT :Юпа
|
|||||||
STR_MONTH_ABBREV_NOV :Чӳк
|
STR_MONTH_ABBREV_NOV :Чӳк
|
||||||
STR_MONTH_ABBREV_DEC :Раш
|
STR_MONTH_ABBREV_DEC :Раш
|
||||||
|
|
||||||
|
###length 12
|
||||||
STR_MONTH_JAN :Кӑрлач
|
STR_MONTH_JAN :Кӑрлач
|
||||||
STR_MONTH_FEB :Нарӑс
|
STR_MONTH_FEB :Нарӑс
|
||||||
STR_MONTH_MAR :Пуш
|
STR_MONTH_MAR :Пуш
|
||||||
@@ -354,7 +360,6 @@ STR_MONTH_SEP :Авӑн
|
|||||||
STR_MONTH_OCT :Юпа
|
STR_MONTH_OCT :Юпа
|
||||||
STR_MONTH_NOV :Чӳк
|
STR_MONTH_NOV :Чӳк
|
||||||
STR_MONTH_DEC :Раштав
|
STR_MONTH_DEC :Раштав
|
||||||
############ range for months ends
|
|
||||||
|
|
||||||
# Graph window
|
# Graph window
|
||||||
STR_GRAPH_KEY_BUTTON :{BLACK}Уҫӑ
|
STR_GRAPH_KEY_BUTTON :{BLACK}Уҫӑ
|
||||||
@@ -381,14 +386,16 @@ STR_PERFORMANCE_DETAIL_KEY :{BLACK}Вакк
|
|||||||
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT})
|
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT})
|
||||||
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA})
|
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA})
|
||||||
STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}%
|
STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}%
|
||||||
############ Those following lines need to be in this order!!
|
|
||||||
|
###length 10
|
||||||
STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Ҫул-йӗр:
|
STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Ҫул-йӗр:
|
||||||
STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Станцисем:
|
STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Станцисем:
|
||||||
STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Тиев:
|
STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Тиев:
|
||||||
STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Укҫӑ:
|
STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Укҫӑ:
|
||||||
STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Кивҫен:
|
STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Кивҫен:
|
||||||
STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Пурӗ:
|
STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Пурӗ:
|
||||||
############ End of order list
|
|
||||||
|
###length 10
|
||||||
|
|
||||||
# Music window
|
# Music window
|
||||||
STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}--
|
STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}--
|
||||||
@@ -410,10 +417,12 @@ STR_HIGHSCORE_STATS :{BIG_FONT}'{STR
|
|||||||
# Smallmap window
|
# Smallmap window
|
||||||
STR_SMALLMAP_CAPTION :{WHITE}Карттӑ - {STRING}
|
STR_SMALLMAP_CAPTION :{WHITE}Карттӑ - {STRING}
|
||||||
|
|
||||||
|
###length 7
|
||||||
STR_SMALLMAP_TYPE_VEHICLES :Ҫул-йӗр
|
STR_SMALLMAP_TYPE_VEHICLES :Ҫул-йӗр
|
||||||
STR_SMALLMAP_TYPE_VEGETATION :Йывăç-курӑк
|
STR_SMALLMAP_TYPE_VEGETATION :Йывăç-курӑк
|
||||||
STR_SMALLMAP_TYPE_OWNERS :Хуҫасем
|
STR_SMALLMAP_TYPE_OWNERS :Хуҫасем
|
||||||
|
|
||||||
|
|
||||||
STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Ҫулсем
|
STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Ҫулсем
|
||||||
STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Чукун ҫулсем
|
STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Чукун ҫулсем
|
||||||
STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Станцисем/Аэропортсем/Портсем
|
STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Станцисем/Аэропортсем/Портсем
|
||||||
@@ -455,6 +464,8 @@ STR_NEWS_MESSAGE_CAPTION :{WHITE}Пӗлт
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
###next-name-looks-similar
|
||||||
|
|
||||||
# Order review system / warnings
|
# Order review system / warnings
|
||||||
|
|
||||||
@@ -463,19 +474,20 @@ STR_NEWS_MESSAGE_CAPTION :{WHITE}Пӗлт
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
|
||||||
# Extra view window
|
# Extra view window
|
||||||
|
|
||||||
# Game options window
|
# Game options window
|
||||||
|
|
||||||
############ start of currency region
|
###length 42
|
||||||
STR_GAME_OPTIONS_CURRENCY_RUR :Вырӑсла тенкӗ (RUR)
|
STR_GAME_OPTIONS_CURRENCY_RUR :Вырӑсла тенкӗ (RUR)
|
||||||
############ end of currency region
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
|
||||||
|
###length 21
|
||||||
############ start of townname region
|
|
||||||
STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Акӑлчан
|
STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Акӑлчан
|
||||||
STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Францири
|
STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Францири
|
||||||
STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Нимӗҫ
|
STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Нимӗҫ
|
||||||
@@ -495,13 +507,12 @@ STR_GAME_OPTIONS_TOWN_NAME_DANISH :Датчан
|
|||||||
STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Турккӑла
|
STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Турккӑла
|
||||||
STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Итали
|
STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Итали
|
||||||
STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Катталун
|
STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Катталун
|
||||||
############ end of townname region
|
|
||||||
|
|
||||||
STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Хӑй управ
|
STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Хӑй управ
|
||||||
|
|
||||||
############ start of autosave dropdown
|
# Autosave dropdown
|
||||||
|
###length 5
|
||||||
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Сӳнтер
|
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Сӳнтер
|
||||||
############ end of autosave dropdown
|
|
||||||
|
|
||||||
STR_GAME_OPTIONS_LANGUAGE :{BLACK}Чӗлхи
|
STR_GAME_OPTIONS_LANGUAGE :{BLACK}Чӗлхи
|
||||||
|
|
||||||
@@ -539,66 +550,232 @@ STR_NUM_CUSTOM_NUMBER :Харпӑр х
|
|||||||
|
|
||||||
STR_VARIETY_NONE :Ҫук
|
STR_VARIETY_NONE :Ҫук
|
||||||
|
|
||||||
|
###length 5
|
||||||
|
|
||||||
|
###length 6
|
||||||
STR_SEA_LEVEL_CUSTOM :Харпӑр хӑй
|
STR_SEA_LEVEL_CUSTOM :Харпӑр хӑй
|
||||||
STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Харпӑр хӑй ({NUM}%)
|
STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Харпӑр хӑй ({NUM}%)
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
###length 3
|
||||||
STR_DISASTER_NONE :Ҫук
|
STR_DISASTER_NONE :Ҫук
|
||||||
|
|
||||||
|
###length 4
|
||||||
STR_SUBSIDY_X1_5 :x1.5
|
STR_SUBSIDY_X1_5 :x1.5
|
||||||
STR_SUBSIDY_X2 :x2
|
STR_SUBSIDY_X2 :x2
|
||||||
STR_SUBSIDY_X3 :x3
|
STR_SUBSIDY_X3 :x3
|
||||||
STR_SUBSIDY_X4 :x4
|
STR_SUBSIDY_X4 :x4
|
||||||
|
|
||||||
|
###length 7
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
# Settings tree window
|
# Settings tree window
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
STR_CONFIG_SETTING_OFF :Сӳнтер
|
STR_CONFIG_SETTING_OFF :Сӳнтер
|
||||||
STR_CONFIG_SETTING_ON :Ҫут
|
STR_CONFIG_SETTING_ON :Ҫут
|
||||||
STR_CONFIG_SETTING_DISABLED :хастар мар
|
STR_CONFIG_SETTING_DISABLED :хастар мар
|
||||||
|
|
||||||
|
###length 3
|
||||||
STR_CONFIG_SETTING_COMPANIES_OFF :Сӳнтер
|
STR_CONFIG_SETTING_COMPANIES_OFF :Сӳнтер
|
||||||
|
|
||||||
|
###length 3
|
||||||
STR_CONFIG_SETTING_NONE :Ҫук
|
STR_CONFIG_SETTING_NONE :Ҫук
|
||||||
STR_CONFIG_SETTING_ORIGINAL :Чӑн
|
STR_CONFIG_SETTING_ORIGINAL :Чӑн
|
||||||
STR_CONFIG_SETTING_REALISTIC :Реалисмлӑ
|
STR_CONFIG_SETTING_REALISTIC :Реалисмлӑ
|
||||||
|
|
||||||
|
###length 3
|
||||||
STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Сулахайра
|
STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Сулахайра
|
||||||
STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Варринче
|
STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Варринче
|
||||||
STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Сылтӑмра
|
STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Сылтӑмра
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :ҫук
|
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :ҫук
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
STR_CONFIG_SETTING_PLANE_CRASHES_NONE :ҫук
|
STR_CONFIG_SETTING_PLANE_CRASHES_NONE :ҫук
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Аэропорт кивел мар: {STRING}
|
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Аэропорт кивел мар: {STRING}
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 2
|
||||||
STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Чӑн
|
STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Чӑн
|
||||||
STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis
|
STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
STR_CONFIG_SETTING_TREE_PLACER_NONE :Ҫук
|
STR_CONFIG_SETTING_TREE_PLACER_NONE :Ҫук
|
||||||
STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Чӑн
|
STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Чӑн
|
||||||
|
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Симĕс
|
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Симĕс
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
STR_CONFIG_SETTING_LIVERIES_NONE :Ҫук
|
STR_CONFIG_SETTING_LIVERIES_NONE :Ҫук
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Сӳнтер
|
STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Сӳнтер
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Сӳнтер
|
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Сӳнтер
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :вӑрӑм (2008 раш 31меш)
|
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :вӑрӑм (2008 раш 31меш)
|
||||||
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :кӗске (2008-12-31)
|
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :кӗске (2008-12-31)
|
||||||
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31)
|
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31)
|
||||||
|
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -607,28 +784,71 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31
|
|||||||
|
|
||||||
STR_CONFIG_SETTING_NEWS_SUBSIDIES :Грантсем: {STRING}
|
STR_CONFIG_SETTING_NEWS_SUBSIDIES :Грантсем: {STRING}
|
||||||
|
|
||||||
|
###length 3
|
||||||
STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Сӳнтер
|
STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Сӳнтер
|
||||||
STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Кӗске
|
STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Кӗске
|
||||||
STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Тулли
|
STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Тулли
|
||||||
|
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
###length 5
|
||||||
STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :чӑн
|
STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :чӑн
|
||||||
STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2
|
STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2
|
||||||
STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3
|
STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
###length 6
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 5
|
||||||
STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Ҫук
|
STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Ҫук
|
||||||
STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Вӑрах
|
STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Вӑрах
|
||||||
STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Виҫеллӗ
|
STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Виҫеллӗ
|
||||||
STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Хӑвӑрт
|
STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Хӑвӑрт
|
||||||
STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Питӗ хӑвӑрт
|
STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Питӗ хӑвӑрт
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
STR_CONFIG_SETTING_INTERFACE :{ORANGE}Интерфейс
|
STR_CONFIG_SETTING_INTERFACE :{ORANGE}Интерфейс
|
||||||
STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Лартӑм
|
STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Лартӑм
|
||||||
@@ -636,10 +856,10 @@ STR_CONFIG_SETTING_VEHICLES :{ORANGE}Ҫул-
|
|||||||
STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Хуласем
|
STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Хуласем
|
||||||
STR_CONFIG_SETTING_AI :{ORANGE}Ӑмӑртуҫӑсем
|
STR_CONFIG_SETTING_AI :{ORANGE}Ӑмӑртуҫӑсем
|
||||||
|
|
||||||
|
###length 2
|
||||||
STR_CONFIG_SETTING_PATHFINDER_NPF :NPF
|
STR_CONFIG_SETTING_PATHFINDER_NPF :NPF
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Config errors
|
# Config errors
|
||||||
|
|
||||||
# Video initalization errors
|
# Video initalization errors
|
||||||
@@ -666,15 +886,18 @@ STR_QUIT_NO :{BLACK}Ҫук
|
|||||||
STR_ABANDON_GAME_CAPTION :{WHITE}Вӑййи ан килӗш
|
STR_ABANDON_GAME_CAPTION :{WHITE}Вӑййи ан килӗш
|
||||||
|
|
||||||
# Cheat window
|
# Cheat window
|
||||||
|
STR_CHEAT_CHANGE_DATE :{LTBLUE}Тӳрлет кун: {ORANGE}{DATE_SHORT}
|
||||||
|
|
||||||
|
###length 4
|
||||||
STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Виҫеллӗ климат
|
STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Виҫеллӗ климат
|
||||||
STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Сивӗ климат
|
STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Сивӗ климат
|
||||||
STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Тропик климат
|
STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Тропик климат
|
||||||
STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Вӑйӑ пахчи
|
STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Вӑйӑ пахчи
|
||||||
STR_CHEAT_CHANGE_DATE :{LTBLUE}Тӳрлет кун: {ORANGE}{DATE_SHORT}
|
|
||||||
|
|
||||||
# Livery window
|
# Livery window
|
||||||
|
|
||||||
|
|
||||||
|
###length 23
|
||||||
STR_LIVERY_DEFAULT :Яланхи тӗс
|
STR_LIVERY_DEFAULT :Яланхи тӗс
|
||||||
STR_LIVERY_STEAM :Пӑравус
|
STR_LIVERY_STEAM :Пӑравус
|
||||||
STR_LIVERY_DIESEL :Ӑшӑвус(Diesel Engine)
|
STR_LIVERY_DIESEL :Ӑшӑвус(Diesel Engine)
|
||||||
@@ -728,8 +951,8 @@ STR_FACE_COLLAR :Ҫуха:
|
|||||||
STR_FACE_TIE :Галстук:
|
STR_FACE_TIE :Галстук:
|
||||||
STR_FACE_EARRING :Алка:
|
STR_FACE_EARRING :Алка:
|
||||||
|
|
||||||
############ Next lines match ServerGameType
|
# Matches ServerGameType
|
||||||
############ End of leave-in-this-order
|
###length 3
|
||||||
|
|
||||||
# Network server list
|
# Network server list
|
||||||
STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Вӑйӑҫӑ ят:
|
STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Вӑйӑҫӑ ят:
|
||||||
@@ -748,7 +971,6 @@ STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Чӗлх
|
|||||||
|
|
||||||
STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}ВӐЙЙИ ИНФОРМАЦИ
|
STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}ВӐЙЙИ ИНФОРМАЦИ
|
||||||
STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Вӑйӑҫӑсем: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
|
STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Вӑйӑҫӑсем: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
|
||||||
STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Чӗлхи: {WHITE}{STRING}
|
|
||||||
STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Ҫӗр пичӗ: {WHITE}{STRING}
|
STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Ҫӗр пичӗ: {WHITE}{STRING}
|
||||||
STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Виҫе картти: {WHITE}{COMMA}x{COMMA}
|
STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Виҫе картти: {WHITE}{COMMA}x{COMMA}
|
||||||
STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Сервер версиӗ: {WHITE}{STRING}
|
STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Сервер версиӗ: {WHITE}{STRING}
|
||||||
@@ -776,9 +998,8 @@ STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Вырн
|
|||||||
|
|
||||||
# Network connecting window
|
# Network connecting window
|
||||||
|
|
||||||
############ Leave those lines in this order!!
|
|
||||||
|
|
||||||
############ End of leave-in-this-order
|
###length 8
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -786,8 +1007,8 @@ STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Вырн
|
|||||||
|
|
||||||
# Network client list
|
# Network client list
|
||||||
|
|
||||||
############ Begin of ConnectionType
|
# Matches ConnectionType
|
||||||
############ End of ConnectionType
|
###length 5
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -802,17 +1023,20 @@ STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Вырн
|
|||||||
|
|
||||||
# Network messages
|
# Network messages
|
||||||
|
|
||||||
############ Leave those lines in this order!!
|
|
||||||
############ End of leave-in-this-order
|
|
||||||
|
|
||||||
|
###length 21
|
||||||
|
|
||||||
# Network related errors
|
# Network related errors
|
||||||
STR_NETWORK_SERVER_MESSAGE :*** {1:STRING}
|
STR_NETWORK_SERVER_MESSAGE :*** {1:STRING}
|
||||||
############ Leave those lines in this order!!
|
|
||||||
############ End of leave-in-this-order
|
###length 12
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Content downloading window
|
# Content downloading window
|
||||||
|
|
||||||
|
###length 5
|
||||||
|
|
||||||
STR_CONTENT_DETAIL_VERSION :{SILVER}Верси: {WHITE}{STRING}
|
STR_CONTENT_DETAIL_VERSION :{SILVER}Верси: {WHITE}{STRING}
|
||||||
|
|
||||||
# Order of these is important!
|
# Order of these is important!
|
||||||
@@ -966,10 +1190,10 @@ STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Маяк
|
|||||||
STR_ABOUT_VERSION :{BLACK}OpenTTD верси {REV}
|
STR_ABOUT_VERSION :{BLACK}OpenTTD верси {REV}
|
||||||
|
|
||||||
# Framerate display window
|
# Framerate display window
|
||||||
############ Leave those lines in this order!!
|
|
||||||
############ End of leave-in-this-order
|
###length 15
|
||||||
############ Leave those lines in this order!!
|
|
||||||
############ End of leave-in-this-order
|
###length 15
|
||||||
|
|
||||||
|
|
||||||
# Save/load game/scenario
|
# Save/load game/scenario
|
||||||
@@ -1022,6 +1246,7 @@ STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING
|
|||||||
|
|
||||||
# NewGRF status
|
# NewGRF status
|
||||||
STR_NEWGRF_LIST_NONE :Ҫук
|
STR_NEWGRF_LIST_NONE :Ҫук
|
||||||
|
###length 3
|
||||||
|
|
||||||
# NewGRF 'it's broken' warnings
|
# NewGRF 'it's broken' warnings
|
||||||
|
|
||||||
@@ -1049,15 +1274,17 @@ STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
|
|||||||
# Town local authority window
|
# Town local authority window
|
||||||
STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING}
|
STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING}
|
||||||
|
|
||||||
|
###length 8
|
||||||
|
|
||||||
|
###length 8
|
||||||
|
|
||||||
# Goal window
|
# Goal window
|
||||||
STR_GOALS_TEXT :{ORANGE}{STRING}
|
STR_GOALS_TEXT :{ORANGE}{STRING}
|
||||||
|
|
||||||
# Goal question window
|
# Goal question window
|
||||||
|
|
||||||
############ Start of Goal Question button list
|
# Goal Question button list
|
||||||
############ End of Goal Question button list
|
###length 18
|
||||||
|
|
||||||
# Subsidies window
|
# Subsidies window
|
||||||
STR_SUBSIDIES_NONE :{ORANGE}- Ҫук -
|
STR_SUBSIDIES_NONE :{ORANGE}- Ҫук -
|
||||||
@@ -1078,8 +1305,7 @@ STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_L
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
############ range for rating starts
|
###length 8
|
||||||
############ range for rating ends
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1091,6 +1317,9 @@ STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOIN
|
|||||||
|
|
||||||
# Finances window
|
# Finances window
|
||||||
STR_FINANCES_YEAR :{WHITE}{NUM}
|
STR_FINANCES_YEAR :{WHITE}{NUM}
|
||||||
|
|
||||||
|
###length 13
|
||||||
|
|
||||||
STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG}
|
STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG}
|
||||||
STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG}
|
STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG}
|
||||||
|
|
||||||
@@ -1114,16 +1343,20 @@ STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Ҫу
|
|||||||
|
|
||||||
|
|
||||||
# Vehicle lists
|
# Vehicle lists
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Group window
|
# Group window
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1132,22 +1365,34 @@ STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Ҫу
|
|||||||
|
|
||||||
|
|
||||||
# Build vehicle window
|
# Build vehicle window
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
|
||||||
############ range for vehicle availability starts
|
# Vehicle availability
|
||||||
############ range for vehicle availability ends
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
# Depot window
|
# Depot window
|
||||||
STR_DEPOT_CAPTION :{WHITE}{DEPOT}
|
STR_DEPOT_CAPTION :{WHITE}{DEPOT}
|
||||||
@@ -1157,18 +1402,29 @@ STR_DEPOT_NO_ENGINE :{BLACK}-
|
|||||||
STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING}
|
STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING}
|
||||||
STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT})
|
STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT})
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
|
||||||
# Engine preview window
|
# Engine preview window
|
||||||
@@ -1180,34 +1436,48 @@ STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG}
|
|||||||
# Autoreplace window
|
# Autoreplace window
|
||||||
|
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
###next-name-looks-similar
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Vehicle view
|
# Vehicle view
|
||||||
STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE}
|
STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE}
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Messages in the start stop button in the vehicle view
|
# Messages in the start stop button in the vehicle view
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Vehicle stopped/started animations
|
# Vehicle stopped/started animations
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
# Vehicle details
|
# Vehicle details
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
# The next two need to stay in this order
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1216,6 +1486,7 @@ STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Савӑ
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
# Extra buttons for train details windows
|
# Extra buttons for train details windows
|
||||||
|
|
||||||
@@ -1225,8 +1496,11 @@ STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Савӑ
|
|||||||
|
|
||||||
# Vehicle refit
|
# Vehicle refit
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
# Order view
|
# Order view
|
||||||
|
|
||||||
@@ -1242,6 +1516,8 @@ STR_ORDER_TEXT :{STRING} {STRIN
|
|||||||
|
|
||||||
|
|
||||||
# Conditional order variables, must follow order of OrderConditionVariable enum
|
# Conditional order variables, must follow order of OrderConditionVariable enum
|
||||||
|
###length 8
|
||||||
|
###next-name-looks-similar
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1252,6 +1528,9 @@ STR_ORDER_TEXT :{STRING} {STRIN
|
|||||||
# String parts to build the order string
|
# String parts to build the order string
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
###next-name-looks-similar
|
||||||
|
|
||||||
STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING}
|
STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING}
|
||||||
STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT}
|
STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT}
|
||||||
|
|
||||||
@@ -1262,6 +1541,7 @@ STR_ORDER_GO_TO_STATION :{STRING} {STATI
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1305,6 +1585,7 @@ STR_AI_SETTINGS_SETTING :{STRING}: {ORAN
|
|||||||
|
|
||||||
|
|
||||||
# Textfile window
|
# Textfile window
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
# Vehicle loading indicators
|
# Vehicle loading indicators
|
||||||
@@ -1386,13 +1667,23 @@ STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Ҫул
|
|||||||
|
|
||||||
# Generic vehicle errors
|
# Generic vehicle errors
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1409,8 +1700,10 @@ STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Ҫул
|
|||||||
# Sign related errors
|
# Sign related errors
|
||||||
|
|
||||||
# Translatable comment for OpenTTD's desktop shortcut
|
# Translatable comment for OpenTTD's desktop shortcut
|
||||||
|
###external 1
|
||||||
|
|
||||||
# Translatable descriptions in media/baseset/*.ob* files
|
# Translatable descriptions in media/baseset/*.ob* files
|
||||||
|
###external 10
|
||||||
|
|
||||||
##id 0x2000
|
##id 0x2000
|
||||||
# Town building names
|
# Town building names
|
||||||
@@ -1423,19 +1716,29 @@ STR_TOWN_BUILDING_NAME_STATUE_1 :Палӑк
|
|||||||
|
|
||||||
############ WARNING, using range 0x6000 for strings that are stored in the savegame
|
############ WARNING, using range 0x6000 for strings that are stored in the savegame
|
||||||
############ These strings may never get a new id, or savegames will break!
|
############ These strings may never get a new id, or savegames will break!
|
||||||
|
|
||||||
##id 0x6000
|
##id 0x6000
|
||||||
STR_SV_EMPTY :
|
STR_SV_EMPTY :
|
||||||
|
|
||||||
|
###length 27
|
||||||
STR_SV_STNAME :{STRING}
|
STR_SV_STNAME :{STRING}
|
||||||
STR_SV_STNAME_AIRPORT :{STRING} Аэропорт
|
STR_SV_STNAME_AIRPORT :{STRING} Аэропорт
|
||||||
STR_SV_STNAME_BUOY :{STRING}
|
STR_SV_STNAME_BUOY :{STRING}
|
||||||
STR_SV_STNAME_WAYPOINT :{STRING}
|
STR_SV_STNAME_WAYPOINT :{STRING}
|
||||||
##id 0x6020
|
##id 0x6020
|
||||||
|
|
||||||
############ end of savegame specific region!
|
############ end of savegame specific region!
|
||||||
|
|
||||||
##id 0x8000
|
##id 0x8000
|
||||||
|
###length 116
|
||||||
# Vehicle names
|
# Vehicle names
|
||||||
|
|
||||||
|
###length 88
|
||||||
|
|
||||||
|
###length 11
|
||||||
|
|
||||||
|
###length 41
|
||||||
|
|
||||||
##id 0x8800
|
##id 0x8800
|
||||||
# Formatting of some strings
|
# Formatting of some strings
|
||||||
STR_FORMAT_DATE_TINY :{STRING}.{STRING}.{NUM}
|
STR_FORMAT_DATE_TINY :{STRING}.{STRING}.{NUM}
|
||||||
@@ -1444,6 +1747,14 @@ STR_FORMAT_DATE_LONG :{STRING} {STRIN
|
|||||||
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
|
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
|
||||||
|
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
###length 6
|
||||||
|
###next-name-looks-similar
|
||||||
|
|
||||||
|
# _SERIAL version of AIRACRAFT doesn't exist
|
||||||
|
|
||||||
|
|
||||||
STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING}
|
STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -57,7 +57,7 @@ STR_ABBREV_COAL :{TINY_FONT}क
|
|||||||
|
|
||||||
# 'Mode' of transport for cargoes
|
# 'Mode' of transport for cargoes
|
||||||
|
|
||||||
# Colours, do not shuffle
|
###length 17
|
||||||
STR_COLOUR_PINK :गुलाबी
|
STR_COLOUR_PINK :गुलाबी
|
||||||
STR_COLOUR_RED :लाल
|
STR_COLOUR_RED :लाल
|
||||||
|
|
||||||
@@ -77,7 +77,9 @@ STR_UNITS_POWER_METRIC :{COMMA}{NBSP}hp
|
|||||||
STR_TOOLTIP_RESIZE :{BLACK}खिड़की का आकार बदलने के लिये क्लिक करके खींचें
|
STR_TOOLTIP_RESIZE :{BLACK}खिड़की का आकार बदलने के लिये क्लिक करके खींचें
|
||||||
|
|
||||||
# Show engines button
|
# Show engines button
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
# Query window
|
# Query window
|
||||||
|
|
||||||
@@ -97,86 +99,89 @@ STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :पिछले
|
|||||||
|
|
||||||
# Group by options for vehicle list
|
# Group by options for vehicle list
|
||||||
|
|
||||||
|
# Order button in shared orders vehicle list
|
||||||
|
|
||||||
# Tooltips for the main toolbar
|
# Tooltips for the main toolbar
|
||||||
|
###length 31
|
||||||
STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}ध्वनि/संगीत विकल्प
|
STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}ध्वनि/संगीत विकल्प
|
||||||
|
|
||||||
# Extra tooltips for the scenario editor toolbar
|
# Extra tooltips for the scenario editor toolbar
|
||||||
STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}मानचित्र, नगर निर्देशिका दिखायें
|
STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}मानचित्र, नगर निर्देशिका दिखायें
|
||||||
|
|
||||||
############ range for SE file menu starts
|
# Scenario editor file menu
|
||||||
|
###length 7
|
||||||
STR_SCENEDIT_FILE_MENU_SEPARATOR :
|
STR_SCENEDIT_FILE_MENU_SEPARATOR :
|
||||||
STR_SCENEDIT_FILE_MENU_QUIT :निकास
|
STR_SCENEDIT_FILE_MENU_QUIT :निकास
|
||||||
############ range for SE file menu starts
|
|
||||||
|
|
||||||
############ range for settings menu starts
|
# Settings menu
|
||||||
|
###length 14
|
||||||
STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :समायोजन
|
STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :समायोजन
|
||||||
STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :पथ-संकेतों के नाम दिखायें
|
STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :पथ-संकेतों के नाम दिखायें
|
||||||
############ range ends here
|
|
||||||
|
|
||||||
############ range for file menu starts
|
# File menu
|
||||||
|
###length 5
|
||||||
STR_FILE_MENU_SEPARATOR :
|
STR_FILE_MENU_SEPARATOR :
|
||||||
############ range ends here
|
|
||||||
|
|
||||||
# map menu
|
# Map menu
|
||||||
|
###length 4
|
||||||
|
|
||||||
############ range for town menu starts
|
# Town menu
|
||||||
############ range ends here
|
###length 2
|
||||||
|
|
||||||
############ range for subsidies menu starts
|
# Subsidies menu
|
||||||
############ range ends here
|
###length 1
|
||||||
|
|
||||||
############ range for graph menu starts
|
# Graph menu
|
||||||
############ range ends here
|
###length 6
|
||||||
|
|
||||||
############ range for company league menu starts
|
# Company league menu
|
||||||
############ range ends here
|
###length 3
|
||||||
|
|
||||||
############ range for industry menu starts
|
# Industry menu
|
||||||
|
###length 3
|
||||||
STR_INDUSTRY_MENU_INDUSTRY_CHAIN :औद्योगिक शृंखला
|
STR_INDUSTRY_MENU_INDUSTRY_CHAIN :औद्योगिक शृंखला
|
||||||
############ range ends here
|
|
||||||
|
|
||||||
############ range for railway construction menu starts
|
# URailway construction menu
|
||||||
|
###length 4
|
||||||
STR_RAIL_MENU_ELRAIL_CONSTRUCTION :विद्युतिकृत रेलवे निर्माण
|
STR_RAIL_MENU_ELRAIL_CONSTRUCTION :विद्युतिकृत रेलवे निर्माण
|
||||||
############ range ends here
|
|
||||||
|
|
||||||
############ range for road construction menu starts
|
# Road construction menu
|
||||||
############ range ends here
|
###length 2
|
||||||
|
|
||||||
############ range for waterways construction menu starts
|
# Waterways construction menu
|
||||||
############ range ends here
|
###length 1
|
||||||
|
|
||||||
############ range for airport construction menu starts
|
# Aairport construction menu
|
||||||
############ range ends here
|
###length 1
|
||||||
|
|
||||||
############ range for landscaping menu starts
|
# Landscaping menu
|
||||||
############ range ends here
|
###length 3
|
||||||
|
|
||||||
############ range for music menu starts
|
# Music menu
|
||||||
############ range ends here
|
###length 1
|
||||||
|
|
||||||
############ range for message menu starts
|
# Message menu
|
||||||
############ range ends here
|
###length 3
|
||||||
|
|
||||||
############ range for about menu starts
|
# About menu
|
||||||
|
###length 10
|
||||||
STR_ABOUT_MENU_SEPARATOR :
|
STR_ABOUT_MENU_SEPARATOR :
|
||||||
############ range ends here
|
|
||||||
|
|
||||||
############ range for ordinal numbers used for the place in the highscore window
|
# Place in highscore window
|
||||||
|
###length 15
|
||||||
STR_ORDINAL_NUMBER_2ND :द्वितीय
|
STR_ORDINAL_NUMBER_2ND :द्वितीय
|
||||||
############ range for ordinal numbers ends
|
|
||||||
|
|
||||||
############ range for days starts
|
###length 31
|
||||||
STR_DAY_NUMBER_14TH :१४
|
STR_DAY_NUMBER_14TH :१४
|
||||||
STR_DAY_NUMBER_15TH :१५
|
STR_DAY_NUMBER_15TH :१५
|
||||||
STR_DAY_NUMBER_23RD :२३
|
STR_DAY_NUMBER_23RD :२३
|
||||||
############ range for days ends
|
|
||||||
|
|
||||||
############ range for months starts
|
###length 12
|
||||||
STR_MONTH_ABBREV_JAN :जन
|
STR_MONTH_ABBREV_JAN :जन
|
||||||
STR_MONTH_ABBREV_NOV :नव
|
STR_MONTH_ABBREV_NOV :नव
|
||||||
|
|
||||||
|
###length 12
|
||||||
STR_MONTH_AUG :अगस्त
|
STR_MONTH_AUG :अगस्त
|
||||||
############ range for months ends
|
|
||||||
|
|
||||||
# Graph window
|
# Graph window
|
||||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||||
@@ -193,10 +198,12 @@ STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLA
|
|||||||
STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}'
|
STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}'
|
||||||
|
|
||||||
# Performance detail window
|
# Performance detail window
|
||||||
############ Those following lines need to be in this order!!
|
|
||||||
|
###length 10
|
||||||
STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}वाहन:
|
STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}वाहन:
|
||||||
STR_PERFORMANCE_DETAIL_CARGO :{BLACK}माल :
|
STR_PERFORMANCE_DETAIL_CARGO :{BLACK}माल :
|
||||||
############ End of order list
|
|
||||||
|
###length 10
|
||||||
|
|
||||||
# Music window
|
# Music window
|
||||||
STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM}
|
STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM}
|
||||||
@@ -208,6 +215,8 @@ STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHIT
|
|||||||
|
|
||||||
# Smallmap window
|
# Smallmap window
|
||||||
|
|
||||||
|
###length 7
|
||||||
|
|
||||||
|
|
||||||
STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}ट्रक लदान वीथी
|
STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}ट्रक लदान वीथी
|
||||||
STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}रिक्त भूमि
|
STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}रिक्त भूमि
|
||||||
@@ -237,6 +246,8 @@ STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLAC
|
|||||||
|
|
||||||
STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING}{INDUSTRY} के उत्पादन में {COMMA}% कमी आयी!
|
STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING}{INDUSTRY} के उत्पादन में {COMMA}% कमी आयी!
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
###next-name-looks-similar
|
||||||
|
|
||||||
# Order review system / warnings
|
# Order review system / warnings
|
||||||
|
|
||||||
@@ -246,32 +257,32 @@ STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLAC
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
|
||||||
# Extra view window
|
# Extra view window
|
||||||
|
|
||||||
# Game options window
|
# Game options window
|
||||||
|
|
||||||
############ start of currency region
|
###length 42
|
||||||
STR_GAME_OPTIONS_CURRENCY_FIM :फिनलैंड मार्का (FIM)
|
STR_GAME_OPTIONS_CURRENCY_FIM :फिनलैंड मार्का (FIM)
|
||||||
STR_GAME_OPTIONS_CURRENCY_ISK :आइसलैंडिक क्रोना (ISK)
|
STR_GAME_OPTIONS_CURRENCY_ISK :आइसलैंडिक क्रोना (ISK)
|
||||||
STR_GAME_OPTIONS_CURRENCY_HKD :हाँग काँग डॉलर (एचकेडी)
|
STR_GAME_OPTIONS_CURRENCY_HKD :हाँग काँग डॉलर (एचकेडी)
|
||||||
############ end of currency region
|
|
||||||
|
|
||||||
|
###length 2
|
||||||
STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :दाईं ओर वाहन चलाएँ
|
STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :दाईं ओर वाहन चलाएँ
|
||||||
|
|
||||||
|
|
||||||
############ start of townname region
|
###length 21
|
||||||
STR_GAME_OPTIONS_TOWN_NAME_FRENCH :फ़्रेंच
|
STR_GAME_OPTIONS_TOWN_NAME_FRENCH :फ़्रेंच
|
||||||
STR_GAME_OPTIONS_TOWN_NAME_POLISH :पोलिश
|
STR_GAME_OPTIONS_TOWN_NAME_POLISH :पोलिश
|
||||||
STR_GAME_OPTIONS_TOWN_NAME_TURKISH :तुर्की
|
STR_GAME_OPTIONS_TOWN_NAME_TURKISH :तुर्की
|
||||||
STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :इटैलियन
|
STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :इटैलियन
|
||||||
############ end of townname region
|
|
||||||
|
|
||||||
|
|
||||||
############ start of autosave dropdown
|
# Autosave dropdown
|
||||||
|
###length 5
|
||||||
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :प्रत्येक माह
|
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :प्रत्येक माह
|
||||||
############ end of autosave dropdown
|
|
||||||
|
|
||||||
STR_GAME_OPTIONS_LANGUAGE_PERCENTAGE :{STRING} ({NUM}% पूर्ण)
|
STR_GAME_OPTIONS_LANGUAGE_PERCENTAGE :{STRING} ({NUM}% पूर्ण)
|
||||||
|
|
||||||
@@ -302,51 +313,185 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}एक
|
|||||||
|
|
||||||
STR_VARIETY_MEDIUM :मध्यम
|
STR_VARIETY_MEDIUM :मध्यम
|
||||||
|
|
||||||
|
###length 5
|
||||||
STR_AI_SPEED_SLOW :धीमा
|
STR_AI_SPEED_SLOW :धीमा
|
||||||
|
|
||||||
|
###length 6
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
###length 7
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
# Settings tree window
|
# Settings tree window
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
STR_CONFIG_SETTING_COMPANIES_OFF :बन्द
|
STR_CONFIG_SETTING_COMPANIES_OFF :बन्द
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :मानचित्र के भूभाग की अधिकतम ऊंचाई निर्धारित करें। "(स्वतः)" चुनने पर भूभाग जनन के बाद एक उपयुक्त संख्या चुन ली जायेगी।
|
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :मानचित्र के भूभाग की अधिकतम ऊंचाई निर्धारित करें। "(स्वतः)" चुनने पर भूभाग जनन के बाद एक उपयुक्त संख्या चुन ली जायेगी।
|
||||||
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_VALUE :{NUM}
|
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_VALUE :{NUM}
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :ट्रेन के लिये ढलान की तेजी की स्थापना। ऊँची संख्या से चढ़ान पर चढ़ना अधिक कठिन हो जाता है।
|
STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :ट्रेन के लिये ढलान की तेजी की स्थापना। ऊँची संख्या से चढ़ान पर चढ़ना अधिक कठिन हो जाता है।
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :निर्दिष्ट करें कि ट्रेनों को स्टेशन पर कहाँ रुकना चाहिये। स्टेशन में प्रवेश के पास 'समीप का छोर', स्टेशन के बीच में 'मध्य', और प्रवेश की उलटी ओर 'दूर का छोर' है। ध्यान दें कि यह विन्यास केवल नये निर्देशों के लिये मानक स्थापित करता है। प्रत्येक निर्देश को अलग से किसी अन्य व्यवहार के लिये स्थापित किया जा सकता है।
|
STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :निर्दिष्ट करें कि ट्रेनों को स्टेशन पर कहाँ रुकना चाहिये। स्टेशन में प्रवेश के पास 'समीप का छोर', स्टेशन के बीच में 'मध्य', और प्रवेश की उलटी ओर 'दूर का छोर' है। ध्यान दें कि यह विन्यास केवल नये निर्देशों के लिये मानक स्थापित करता है। प्रत्येक निर्देश को अलग से किसी अन्य व्यवहार के लिये स्थापित किया जा सकता है।
|
||||||
|
###length 3
|
||||||
STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :समीप का छोर
|
STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :समीप का छोर
|
||||||
STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :मध्य
|
STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :मध्य
|
||||||
STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :दूर का छोर
|
STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :दूर का छोर
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
STR_CONFIG_SETTING_BRIBE_HELPTEXT :कंपनियों को स्थानीय नगर प्रशासन को रिश्वत देने की अनुमति दें। यदि रिश्वत पर किसी निरीक्षक की दृष्टि पड़ती है तो कंपनी छः महीने के लिये नगर में काम नहीं कर पायेगी।
|
STR_CONFIG_SETTING_BRIBE_HELPTEXT :कंपनियों को स्थानीय नगर प्रशासन को रिश्वत देने की अनुमति दें। यदि रिश्वत पर किसी निरीक्षक की दृष्टि पड़ती है तो कंपनी छः महीने के लिये नगर में काम नहीं कर पायेगी।
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :सक्षम होने पर वाहनों के निर्देशों की आवधिक जाँच की जाती है, और कुछ सुस्पष्ट मामलों का पता चलते ही एक संदेश द्वारा बताया जाता है।
|
STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :सक्षम होने पर वाहनों के निर्देशों की आवधिक जाँच की जाती है, और कुछ सुस्पष्ट मामलों का पता चलते ही एक संदेश द्वारा बताया जाता है।
|
||||||
|
###length 3
|
||||||
STR_CONFIG_SETTING_ORDER_REVIEW_OFF :नहीं
|
STR_CONFIG_SETTING_ORDER_REVIEW_OFF :नहीं
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :एक स्टेशन के हिस्सों के विस्तार हेतु अधिकतम क्षेत्र निर्धारित करें। ऊंची संख्या खेल को धीमा कर सकती है।
|
STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :एक स्टेशन के हिस्सों के विस्तार हेतु अधिकतम क्षेत्र निर्धारित करें। ऊंची संख्या खेल को धीमा कर सकती है।
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :बैंगनी
|
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :बैंगनी
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 4
|
||||||
STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :अक्षम
|
STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :अक्षम
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :सीमाहीन (आपके कंप्यूटर द्वारा सीमित)
|
STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :सीमाहीन (आपके कंप्यूटर द्वारा सीमित)
|
||||||
|
|
||||||
|
|
||||||
STR_CONFIG_SETTING_SOUND_NEWS :समाचार पत्र: {STRING}
|
STR_CONFIG_SETTING_SOUND_NEWS :समाचार पत्र: {STRING}
|
||||||
|
|
||||||
|
|
||||||
@@ -354,29 +499,104 @@ STR_CONFIG_SETTING_SOUND_NEWS :समाचा
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :दुर्घटनायें / आपदायें : {STRING}
|
STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :दुर्घटनायें / आपदायें : {STRING}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM}
|
STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM}
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
###length 5
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
STR_CONFIG_SETTING_TOWN_CARGOGENMODE :नगर में माल उत्पादन: {STRING}
|
STR_CONFIG_SETTING_TOWN_CARGOGENMODE :नगर में माल उत्पादन: {STRING}
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA}
|
STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA}
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
###length 6
|
||||||
|
|
||||||
|
###length 3
|
||||||
STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :२x
|
STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :२x
|
||||||
|
|
||||||
|
###length 5
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 4
|
||||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :अंतर्राष्ट्रीय मानक (m/s)
|
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :अंतर्राष्ट्रीय मानक (m/s)
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}सामान्य
|
STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}सामान्य
|
||||||
|
|
||||||
|
|
||||||
STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :नौकाओं द्वारा उपयोग किया जाने वाला पथान्वेषी
|
STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :नौकाओं द्वारा उपयोग किया जाने वाला पथान्वेषी
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
|
||||||
# Config errors
|
# Config errors
|
||||||
@@ -405,17 +625,20 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}क्
|
|||||||
|
|
||||||
# Cheat window
|
# Cheat window
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
# Livery window
|
# Livery window
|
||||||
|
|
||||||
|
|
||||||
|
###length 23
|
||||||
|
|
||||||
# Face selection window
|
# Face selection window
|
||||||
|
|
||||||
STR_FACE_LOAD_DONE :{WHITE}ओपनटीटीडी प्रारूप पत्र से आपका प्रिय चेहरा भर लिया गया है
|
STR_FACE_LOAD_DONE :{WHITE}ओपनटीटीडी प्रारूप पत्र से आपका प्रिय चेहरा भर लिया गया है
|
||||||
STR_FACE_COLLAR_TOOLTIP :{BLACK}कॉलर बदलें
|
STR_FACE_COLLAR_TOOLTIP :{BLACK}कॉलर बदलें
|
||||||
|
|
||||||
############ Next lines match ServerGameType
|
# Matches ServerGameType
|
||||||
############ End of leave-in-this-order
|
###length 3
|
||||||
|
|
||||||
# Network server list
|
# Network server list
|
||||||
|
|
||||||
@@ -434,9 +657,8 @@ STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}सर
|
|||||||
|
|
||||||
# Network connecting window
|
# Network connecting window
|
||||||
|
|
||||||
############ Leave those lines in this order!!
|
|
||||||
|
|
||||||
############ End of leave-in-this-order
|
###length 8
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -444,8 +666,8 @@ STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}सर
|
|||||||
|
|
||||||
# Network client list
|
# Network client list
|
||||||
|
|
||||||
############ Begin of ConnectionType
|
# Matches ConnectionType
|
||||||
############ End of ConnectionType
|
###length 5
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -460,23 +682,26 @@ STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}सर
|
|||||||
|
|
||||||
# Network messages
|
# Network messages
|
||||||
|
|
||||||
############ Leave those lines in this order!!
|
|
||||||
############ End of leave-in-this-order
|
|
||||||
|
|
||||||
STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}संपर्क विच्छेद संभावित
|
STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}संपर्क विच्छेद संभावित
|
||||||
|
|
||||||
|
###length 21
|
||||||
|
|
||||||
# Network related errors
|
# Network related errors
|
||||||
############ Leave those lines in this order!!
|
|
||||||
|
###length 12
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :खेल अभी भी ठहरा हुआ है ({STRING}, {STRING}, {STRING})
|
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :खेल अभी भी ठहरा हुआ है ({STRING}, {STRING}, {STRING})
|
||||||
############ End of leave-in-this-order
|
|
||||||
STR_NETWORK_MESSAGE_CLIENT_LEAVING :छोड़ रहा है
|
STR_NETWORK_MESSAGE_CLIENT_LEAVING :छोड़ रहा है
|
||||||
|
|
||||||
|
|
||||||
# Content downloading window
|
# Content downloading window
|
||||||
STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}खोजी गयी सामग्री OpenTTD की सामग्री सेवा में उपलब्ध नहीं है, आप OpenTTD से असंबद्ध वेबसाइटों पर खोज सकते हैं
|
STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}खोजी गयी सामग्री OpenTTD की सामग्री सेवा में उपलब्ध नहीं है, आप OpenTTD से असंबद्ध वेबसाइटों पर खोज सकते हैं
|
||||||
|
|
||||||
|
###length 5
|
||||||
STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}यह आपके पास पहले से मौजूद है
|
STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}यह आपके पास पहले से मौजूद है
|
||||||
STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}यह सामग्री अज्ञात है और इसे ओपनटीटीडी में प्राप्त नहीं किया जा सकता है
|
STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}यह सामग्री अज्ञात है और इसे ओपनटीटीडी में प्राप्त नहीं किया जा सकता है
|
||||||
|
|
||||||
|
|
||||||
# Order of these is important!
|
# Order of these is important!
|
||||||
|
|
||||||
# Content downloading progress window
|
# Content downloading progress window
|
||||||
@@ -596,13 +821,11 @@ STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :इस्पा
|
|||||||
STR_FRAMERATE_MS_GOOD :{LTBLUE}{DECIMAL} ms
|
STR_FRAMERATE_MS_GOOD :{LTBLUE}{DECIMAL} ms
|
||||||
STR_FRAMERATE_MS_WARN :{YELLOW}{DECIMAL} ms
|
STR_FRAMERATE_MS_WARN :{YELLOW}{DECIMAL} ms
|
||||||
STR_FRAMERATE_BYTES_GOOD :{LTBLUE}{BYTES}
|
STR_FRAMERATE_BYTES_GOOD :{LTBLUE}{BYTES}
|
||||||
STR_FRAMERATE_BYTES_WARN :{YELLOW}{BYTES}
|
|
||||||
STR_FRAMERATE_BYTES_BAD :{RED}{BYTES}
|
###length 15
|
||||||
############ Leave those lines in this order!!
|
|
||||||
############ End of leave-in-this-order
|
###length 15
|
||||||
############ Leave those lines in this order!!
|
|
||||||
STR_FRAMETIME_CAPTION_GL_ECONOMY :माल प्रबंधन
|
STR_FRAMETIME_CAPTION_GL_ECONOMY :माल प्रबंधन
|
||||||
############ End of leave-in-this-order
|
|
||||||
|
|
||||||
|
|
||||||
# Save/load game/scenario
|
# Save/load game/scenario
|
||||||
@@ -649,6 +872,7 @@ STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING
|
|||||||
|
|
||||||
|
|
||||||
# NewGRF status
|
# NewGRF status
|
||||||
|
###length 3
|
||||||
|
|
||||||
# NewGRF 'it's broken' warnings
|
# NewGRF 'it's broken' warnings
|
||||||
|
|
||||||
@@ -678,8 +902,10 @@ STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}फै
|
|||||||
|
|
||||||
# Town local authority window
|
# Town local authority window
|
||||||
|
|
||||||
|
###length 8
|
||||||
STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :लघु विज्ञापन अभियान
|
STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :लघु विज्ञापन अभियान
|
||||||
|
|
||||||
|
###length 8
|
||||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}नगरों के सड़क तंत्र के पुनर्निर्माण में निवेश करें।{}इससे अधिकतम ६ महीने तक यातायात में बहुत विघ्न पड़ता है।{}मूल्य : {CURRENCY_LONG}
|
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}नगरों के सड़क तंत्र के पुनर्निर्माण में निवेश करें।{}इससे अधिकतम ६ महीने तक यातायात में बहुत विघ्न पड़ता है।{}मूल्य : {CURRENCY_LONG}
|
||||||
|
|
||||||
# Goal window
|
# Goal window
|
||||||
@@ -689,8 +915,8 @@ STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING}
|
|||||||
|
|
||||||
# Goal question window
|
# Goal question window
|
||||||
|
|
||||||
############ Start of Goal Question button list
|
# Goal Question button list
|
||||||
############ End of Goal Question button list
|
###length 18
|
||||||
|
|
||||||
# Subsidies window
|
# Subsidies window
|
||||||
STR_SUBSIDIES_OFFERED_TITLE :{BLACK}इन सेवाओं के लिये अनुदान प्रस्तावित :
|
STR_SUBSIDIES_OFFERED_TITLE :{BLACK}इन सेवाओं के लिये अनुदान प्रस्तावित :
|
||||||
@@ -714,8 +940,7 @@ STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_L
|
|||||||
STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} {STATION} द्वारा
|
STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} {STATION} द्वारा
|
||||||
|
|
||||||
|
|
||||||
############ range for rating starts
|
###length 8
|
||||||
############ range for rating ends
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -727,7 +952,10 @@ STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOIN
|
|||||||
|
|
||||||
# Finances window
|
# Finances window
|
||||||
STR_FINANCES_YEAR :{WHITE}{NUM}
|
STR_FINANCES_YEAR :{WHITE}{NUM}
|
||||||
|
|
||||||
|
###length 13
|
||||||
STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}संपत्ति का रखरखाव
|
STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}संपत्ति का रखरखाव
|
||||||
|
|
||||||
STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG}
|
STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG}
|
||||||
STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG}
|
STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG}
|
||||||
STR_FINANCES_BORROW_BUTTON :{BLACK}{CURRENCY_LONG} उधार
|
STR_FINANCES_BORROW_BUTTON :{BLACK}{CURRENCY_LONG} उधार
|
||||||
@@ -759,16 +987,20 @@ STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING
|
|||||||
|
|
||||||
|
|
||||||
# Vehicle lists
|
# Vehicle lists
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Group window
|
# Group window
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -777,27 +1009,39 @@ STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING
|
|||||||
|
|
||||||
|
|
||||||
# Build vehicle window
|
# Build vehicle window
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
|
||||||
############ range for vehicle availability starts
|
# Vehicle availability
|
||||||
|
###length VEHICLE_TYPES
|
||||||
STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :नई ट्रेनें
|
STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :नई ट्रेनें
|
||||||
############ range for vehicle availability ends
|
|
||||||
|
|
||||||
STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}मूल्य : {GOLD}{CURRENCY_LONG}{BLACK} भार : {GOLD}{WEIGHT_SHORT}
|
STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}मूल्य : {GOLD}{CURRENCY_LONG}{BLACK} भार : {GOLD}{WEIGHT_SHORT}
|
||||||
STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}भार : {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT})
|
STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}भार : {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT})
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}छिपायें
|
STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}छिपायें
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}नौका प्रकार को छिपायें/दिखायें
|
STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}नौका प्रकार को छिपायें/दिखायें
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
# Depot window
|
# Depot window
|
||||||
STR_DEPOT_CAPTION :{WHITE}{DEPOT}
|
STR_DEPOT_CAPTION :{WHITE}{DEPOT}
|
||||||
@@ -805,18 +1049,29 @@ STR_DEPOT_CAPTION :{WHITE}{DEPOT}
|
|||||||
|
|
||||||
STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING}
|
STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING}
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
|
||||||
# Engine preview window
|
# Engine preview window
|
||||||
@@ -829,36 +1084,49 @@ STR_ENGINE_PREVIEW_SHIP :जहाज
|
|||||||
# Autoreplace window
|
# Autoreplace window
|
||||||
|
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
|
||||||
STR_REPLACE_VEHICLES_STOP :वाहन प्रतिस्थापित करना बन्द करें
|
STR_REPLACE_VEHICLES_STOP :वाहन प्रतिस्थापित करना बन्द करें
|
||||||
|
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
###next-name-looks-similar
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Vehicle view
|
# Vehicle view
|
||||||
STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE}
|
STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE}
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
|
||||||
STR_VEHICLE_VIEW_TRAIN_STATUS_START_STOP_TOOLTIP :{BLACK}वर्तमान ट्रेन व्यवहार - ट्रेन रोकने/चलाने के लिये क्लिक करें
|
STR_VEHICLE_VIEW_TRAIN_STATUS_START_STOP_TOOLTIP :{BLACK}वर्तमान ट्रेन व्यवहार - ट्रेन रोकने/चलाने के लिये क्लिक करें
|
||||||
|
|
||||||
|
|
||||||
# Messages in the start stop button in the vehicle view
|
# Messages in the start stop button in the vehicle view
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Vehicle stopped/started animations
|
# Vehicle stopped/started animations
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
# Vehicle details
|
# Vehicle details
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
# The next two need to stay in this order
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -867,6 +1135,8 @@ STR_VEHICLE_VIEW_TRAIN_STATUS_START_STOP_TOOLTIP :{BLACK}वर
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
# Extra buttons for train details windows
|
# Extra buttons for train details windows
|
||||||
STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} निर्माण: {LTBLUE}{NUM}{BLACK} मूल्य: {LTBLUE}{CURRENCY_LONG}
|
STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} निर्माण: {LTBLUE}{NUM}{BLACK} मूल्य: {LTBLUE}{CURRENCY_LONG}
|
||||||
|
|
||||||
@@ -876,8 +1146,11 @@ STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE
|
|||||||
|
|
||||||
# Vehicle refit
|
# Vehicle refit
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
# Order view
|
# Order view
|
||||||
|
|
||||||
@@ -894,6 +1167,8 @@ STR_ORDER_REFIT_TOOLTIP :{BLACK}इस
|
|||||||
|
|
||||||
|
|
||||||
# Conditional order variables, must follow order of OrderConditionVariable enum
|
# Conditional order variables, must follow order of OrderConditionVariable enum
|
||||||
|
###length 8
|
||||||
|
###next-name-looks-similar
|
||||||
|
|
||||||
STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :के बराबर है
|
STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :के बराबर है
|
||||||
|
|
||||||
@@ -906,6 +1181,9 @@ STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :के बर
|
|||||||
|
|
||||||
|
|
||||||
STR_ORDER_NEAREST_DEPOT :निकटतम
|
STR_ORDER_NEAREST_DEPOT :निकटतम
|
||||||
|
###length 3
|
||||||
|
###next-name-looks-similar
|
||||||
|
|
||||||
STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING}
|
STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING}
|
||||||
STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT}
|
STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT}
|
||||||
|
|
||||||
@@ -916,6 +1194,7 @@ STR_ORDER_GO_TO_STATION :{STRING} {STATI
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -960,6 +1239,7 @@ STR_AI_CONFIG_CHANGE_NONE :
|
|||||||
|
|
||||||
|
|
||||||
# Textfile window
|
# Textfile window
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
# Vehicle loading indicators
|
# Vehicle loading indicators
|
||||||
@@ -1030,7 +1310,6 @@ STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}पट
|
|||||||
|
|
||||||
|
|
||||||
# Road construction errors
|
# Road construction errors
|
||||||
STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... असंगत ट्रामवे
|
|
||||||
|
|
||||||
# Waterway construction errors
|
# Waterway construction errors
|
||||||
STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... पानी पर बनाया जाना चाहिये।
|
STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... पानी पर बनाया जाना चाहिये।
|
||||||
@@ -1047,19 +1326,29 @@ STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... प
|
|||||||
|
|
||||||
# Generic vehicle errors
|
# Generic vehicle errors
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}जहाज का नामकरण नहीं कर सकते...
|
STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}जहाज का नामकरण नहीं कर सकते...
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}रेल वाहन नहीं बेच सकते...
|
STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}रेल वाहन नहीं बेच सकते...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Specific vehicle errors
|
# Specific vehicle errors
|
||||||
|
|
||||||
|
|
||||||
@@ -1073,8 +1362,10 @@ STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... व
|
|||||||
# Sign related errors
|
# Sign related errors
|
||||||
|
|
||||||
# Translatable comment for OpenTTD's desktop shortcut
|
# Translatable comment for OpenTTD's desktop shortcut
|
||||||
|
###external 1
|
||||||
|
|
||||||
# Translatable descriptions in media/baseset/*.ob* files
|
# Translatable descriptions in media/baseset/*.ob* files
|
||||||
|
###external 10
|
||||||
STR_BASESOUNDS_WIN_DESCRIPTION :ट्रांस्पोर्ट टायिकून डीलक्स के विंडोज संस्करण की मूल ध्वनियां।
|
STR_BASESOUNDS_WIN_DESCRIPTION :ट्रांस्पोर्ट टायिकून डीलक्स के विंडोज संस्करण की मूल ध्वनियां।
|
||||||
|
|
||||||
##id 0x2000
|
##id 0x2000
|
||||||
@@ -1088,9 +1379,11 @@ STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :बैंक
|
|||||||
|
|
||||||
############ WARNING, using range 0x6000 for strings that are stored in the savegame
|
############ WARNING, using range 0x6000 for strings that are stored in the savegame
|
||||||
############ These strings may never get a new id, or savegames will break!
|
############ These strings may never get a new id, or savegames will break!
|
||||||
|
|
||||||
##id 0x6000
|
##id 0x6000
|
||||||
STR_SV_EMPTY :
|
STR_SV_EMPTY :
|
||||||
|
|
||||||
|
###length 27
|
||||||
STR_SV_STNAME :{STRING}
|
STR_SV_STNAME :{STRING}
|
||||||
STR_SV_STNAME_NORTH :{STRING} उत्तर
|
STR_SV_STNAME_NORTH :{STRING} उत्तर
|
||||||
STR_SV_STNAME_CENTRAL :{STRING} केंद्रीय
|
STR_SV_STNAME_CENTRAL :{STRING} केंद्रीय
|
||||||
@@ -1098,9 +1391,11 @@ STR_SV_STNAME_AIRPORT :{STRING} हव
|
|||||||
STR_SV_STNAME_BUOY :{STRING}
|
STR_SV_STNAME_BUOY :{STRING}
|
||||||
STR_SV_STNAME_WAYPOINT :{STRING}
|
STR_SV_STNAME_WAYPOINT :{STRING}
|
||||||
##id 0x6020
|
##id 0x6020
|
||||||
|
|
||||||
############ end of savegame specific region!
|
############ end of savegame specific region!
|
||||||
|
|
||||||
##id 0x8000
|
##id 0x8000
|
||||||
|
###length 116
|
||||||
# Vehicle names
|
# Vehicle names
|
||||||
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :कोयला वाहन
|
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :कोयला वाहन
|
||||||
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :फल वाहन
|
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :फल वाहन
|
||||||
@@ -1108,10 +1403,16 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (वि
|
|||||||
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :खिलौनों का डब्बा
|
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :खिलौनों का डब्बा
|
||||||
STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :पानी का टैंकर
|
STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :पानी का टैंकर
|
||||||
STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :बबल वैन
|
STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :बबल वैन
|
||||||
|
|
||||||
|
###length 88
|
||||||
STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :प्लॉडीपीहट एमके३ बस
|
STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :प्लॉडीपीहट एमके३ बस
|
||||||
STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :मोरलैंड काष्ठ ट्रक
|
STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :मोरलैंड काष्ठ ट्रक
|
||||||
STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :फोस्टर कवचयुक्त ट्रक
|
STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :फोस्टर कवचयुक्त ट्रक
|
||||||
STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :पावरनोट मिष्ठान्न ट्रक
|
STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :पावरनोट मिष्ठान्न ट्रक
|
||||||
|
|
||||||
|
###length 11
|
||||||
|
|
||||||
|
###length 41
|
||||||
STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :बेकवेल कॉट्सवॉल्ड एलबी-३
|
STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :बेकवेल कॉट्सवॉल्ड एलबी-३
|
||||||
STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :बेकवेल लकेट एलबी-९
|
STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :बेकवेल लकेट एलबी-९
|
||||||
STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :बेकवेल लकेट एलबी८०
|
STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :बेकवेल लकेट एलबी८०
|
||||||
@@ -1126,6 +1427,14 @@ STR_FORMAT_DATE_LONG :{STRING} {STRIN
|
|||||||
|
|
||||||
STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING}
|
STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING}
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
###length 6
|
||||||
|
###next-name-looks-similar
|
||||||
|
|
||||||
|
# _SERIAL version of AIRACRAFT doesn't exist
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
470
src/lang/ido.txt
470
src/lang/ido.txt
@@ -169,7 +169,7 @@ STR_LITERS :{COMMA} litri
|
|||||||
STR_ITEMS :{COMMA} artikli
|
STR_ITEMS :{COMMA} artikli
|
||||||
STR_CRATES :{COMMA} kesti
|
STR_CRATES :{COMMA} kesti
|
||||||
|
|
||||||
# Colours, do not shuffle
|
###length 17
|
||||||
STR_COLOUR_DARK_BLUE :Obskur-blua
|
STR_COLOUR_DARK_BLUE :Obskur-blua
|
||||||
STR_COLOUR_PALE_GREEN :Pal-verda
|
STR_COLOUR_PALE_GREEN :Pal-verda
|
||||||
STR_COLOUR_PINK :Rozea
|
STR_COLOUR_PINK :Rozea
|
||||||
@@ -221,7 +221,9 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Klozas f
|
|||||||
STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Baskulas granda/mikra fenestro grandeso
|
STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Baskulas granda/mikra fenestro grandeso
|
||||||
|
|
||||||
# Show engines button
|
# Show engines button
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
# Query window
|
# Query window
|
||||||
STR_BUTTON_CANCEL :{BLACK}Anular
|
STR_BUTTON_CANCEL :{BLACK}Anular
|
||||||
@@ -255,7 +257,10 @@ STR_SORT_BY_POPULATION :Populo
|
|||||||
|
|
||||||
# Group by options for vehicle list
|
# Group by options for vehicle list
|
||||||
|
|
||||||
|
# Order button in shared orders vehicle list
|
||||||
|
|
||||||
# Tooltips for the main toolbar
|
# Tooltips for the main toolbar
|
||||||
|
###length 31
|
||||||
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pauzas ludo
|
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pauzas ludo
|
||||||
STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Selekti
|
STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Selekti
|
||||||
STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Salvas ludo, abandonas ludo, ekiras
|
STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Salvas ludo, abandonas ludo, ekiras
|
||||||
@@ -276,77 +281,77 @@ STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Plantaca
|
|||||||
STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Situas signalo
|
STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Situas signalo
|
||||||
STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Pozez objekto
|
STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Pozez objekto
|
||||||
|
|
||||||
############ range for SE file menu starts
|
# Scenario editor file menu
|
||||||
|
###length 7
|
||||||
STR_SCENEDIT_FILE_MENU_SEPARATOR :
|
STR_SCENEDIT_FILE_MENU_SEPARATOR :
|
||||||
############ range for SE file menu starts
|
|
||||||
|
|
||||||
############ range for settings menu starts
|
# Settings menu
|
||||||
|
###length 14
|
||||||
STR_SETTINGS_MENU_FULL_DETAIL :Plene detaloza
|
STR_SETTINGS_MENU_FULL_DETAIL :Plene detaloza
|
||||||
STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Diafana konstrukturi
|
STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Diafana konstrukturi
|
||||||
############ range ends here
|
|
||||||
|
|
||||||
############ range for file menu starts
|
# File menu
|
||||||
|
###length 5
|
||||||
STR_FILE_MENU_SAVE_GAME :Salvas ludo
|
STR_FILE_MENU_SAVE_GAME :Salvas ludo
|
||||||
STR_FILE_MENU_LOAD_GAME :Kargas ludo
|
STR_FILE_MENU_LOAD_GAME :Kargas ludo
|
||||||
STR_FILE_MENU_QUIT_GAME :Abandonas ludo
|
STR_FILE_MENU_QUIT_GAME :Abandonas ludo
|
||||||
STR_FILE_MENU_SEPARATOR :
|
STR_FILE_MENU_SEPARATOR :
|
||||||
STR_FILE_MENU_EXIT :Ekiras
|
STR_FILE_MENU_EXIT :Ekiras
|
||||||
############ range ends here
|
|
||||||
|
|
||||||
# map menu
|
# Map menu
|
||||||
|
###length 4
|
||||||
STR_MAP_MENU_MAP_OF_WORLD :Mapo di mondo
|
STR_MAP_MENU_MAP_OF_WORLD :Mapo di mondo
|
||||||
STR_MAP_MENU_SIGN_LIST :Listo di signi
|
STR_MAP_MENU_SIGN_LIST :Listo di signi
|
||||||
|
|
||||||
############ range for town menu starts
|
# Town menu
|
||||||
############ range ends here
|
###length 2
|
||||||
|
|
||||||
############ range for subsidies menu starts
|
# Subsidies menu
|
||||||
############ range ends here
|
###length 1
|
||||||
|
|
||||||
############ range for graph menu starts
|
# Graph menu
|
||||||
|
###length 6
|
||||||
STR_GRAPH_MENU_INCOME_GRAPH :Revenuo grafiko
|
STR_GRAPH_MENU_INCOME_GRAPH :Revenuo grafiko
|
||||||
STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Livrita kargajo grafiko
|
STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Livrita kargajo grafiko
|
||||||
############ range ends here
|
|
||||||
|
|
||||||
############ range for company league menu starts
|
# Company league menu
|
||||||
############ range ends here
|
###length 3
|
||||||
|
|
||||||
############ range for industry menu starts
|
# Industry menu
|
||||||
############ range ends here
|
###length 3
|
||||||
|
|
||||||
############ range for railway construction menu starts
|
# URailway construction menu
|
||||||
############ range ends here
|
###length 4
|
||||||
|
|
||||||
############ range for road construction menu starts
|
# Road construction menu
|
||||||
############ range ends here
|
###length 2
|
||||||
|
|
||||||
############ range for waterways construction menu starts
|
# Waterways construction menu
|
||||||
############ range ends here
|
###length 1
|
||||||
|
|
||||||
############ range for airport construction menu starts
|
# Aairport construction menu
|
||||||
############ range ends here
|
###length 1
|
||||||
|
|
||||||
############ range for landscaping menu starts
|
# Landscaping menu
|
||||||
############ range ends here
|
###length 3
|
||||||
|
|
||||||
############ range for music menu starts
|
# Music menu
|
||||||
############ range ends here
|
###length 1
|
||||||
|
|
||||||
############ range for message menu starts
|
# Message menu
|
||||||
############ range ends here
|
###length 3
|
||||||
|
|
||||||
############ range for about menu starts
|
# About menu
|
||||||
############ range ends here
|
###length 10
|
||||||
|
|
||||||
############ range for ordinal numbers used for the place in the highscore window
|
# Place in highscore window
|
||||||
############ range for ordinal numbers ends
|
###length 15
|
||||||
|
|
||||||
############ range for days starts
|
###length 31
|
||||||
############ range for days ends
|
|
||||||
|
|
||||||
############ range for months starts
|
###length 12
|
||||||
|
|
||||||
############ range for months ends
|
###length 12
|
||||||
|
|
||||||
# Graph window
|
# Graph window
|
||||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||||
@@ -365,8 +370,10 @@ STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COM
|
|||||||
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT})
|
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT})
|
||||||
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA})
|
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA})
|
||||||
STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}%
|
STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}%
|
||||||
############ Those following lines need to be in this order!!
|
|
||||||
############ End of order list
|
###length 10
|
||||||
|
|
||||||
|
###length 10
|
||||||
|
|
||||||
# Music window
|
# Music window
|
||||||
STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}--
|
STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}--
|
||||||
@@ -384,12 +391,14 @@ STR_HIGHSCORE_STATS :{BIG_FONT}'{STR
|
|||||||
# Smallmap window
|
# Smallmap window
|
||||||
STR_SMALLMAP_CAPTION :{WHITE}Mapo - {STRING}
|
STR_SMALLMAP_CAPTION :{WHITE}Mapo - {STRING}
|
||||||
|
|
||||||
|
###length 7
|
||||||
STR_SMALLMAP_TYPE_CONTOURS :Konturi
|
STR_SMALLMAP_TYPE_CONTOURS :Konturi
|
||||||
STR_SMALLMAP_TYPE_VEHICLES :Vehili
|
STR_SMALLMAP_TYPE_VEHICLES :Vehili
|
||||||
STR_SMALLMAP_TYPE_INDUSTRIES :Industrii
|
STR_SMALLMAP_TYPE_INDUSTRIES :Industrii
|
||||||
STR_SMALLMAP_TYPE_ROUTES :Voyi
|
STR_SMALLMAP_TYPE_ROUTES :Voyi
|
||||||
STR_SMALLMAP_TYPE_VEGETATION :Vejetado
|
STR_SMALLMAP_TYPE_VEGETATION :Vejetado
|
||||||
STR_SMALLMAP_TYPE_OWNERS :Proprietanto
|
STR_SMALLMAP_TYPE_OWNERS :Proprietanto
|
||||||
|
|
||||||
STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Montras transport-voyi sur la mapo
|
STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Montras transport-voyi sur la mapo
|
||||||
STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Montrar vejetado ad la mapo
|
STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Montrar vejetado ad la mapo
|
||||||
STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Montrar proprietanti ad la mapo
|
STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Montrar proprietanti ad la mapo
|
||||||
@@ -443,6 +452,8 @@ STR_NEWS_MESSAGE_CAPTION :{WHITE}Sendajo
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
###next-name-looks-similar
|
||||||
|
|
||||||
# Order review system / warnings
|
# Order review system / warnings
|
||||||
|
|
||||||
@@ -451,6 +462,7 @@ STR_NEWS_MESSAGE_CAPTION :{WHITE}Sendajo
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
|
||||||
# Extra view window
|
# Extra view window
|
||||||
@@ -458,17 +470,16 @@ STR_NEWS_MESSAGE_CAPTION :{WHITE}Sendajo
|
|||||||
# Game options window
|
# Game options window
|
||||||
STR_GAME_OPTIONS_CAPTION :{WHITE}Ludo Selekti
|
STR_GAME_OPTIONS_CAPTION :{WHITE}Ludo Selekti
|
||||||
|
|
||||||
############ start of currency region
|
###length 42
|
||||||
############ end of currency region
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
|
||||||
|
###length 21
|
||||||
############ start of townname region
|
|
||||||
############ end of townname region
|
|
||||||
|
|
||||||
|
|
||||||
############ start of autosave dropdown
|
# Autosave dropdown
|
||||||
############ end of autosave dropdown
|
###length 5
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -506,32 +517,96 @@ STR_VARIETY_MEDIUM :Mezgrada
|
|||||||
STR_VARIETY_HIGH :Alta
|
STR_VARIETY_HIGH :Alta
|
||||||
STR_VARIETY_VERY_HIGH :Tre Alta
|
STR_VARIETY_VERY_HIGH :Tre Alta
|
||||||
|
|
||||||
|
###length 5
|
||||||
STR_AI_SPEED_SLOW :Lenta
|
STR_AI_SPEED_SLOW :Lenta
|
||||||
STR_AI_SPEED_MEDIUM :Meza
|
STR_AI_SPEED_MEDIUM :Meza
|
||||||
STR_AI_SPEED_FAST :Rapida
|
STR_AI_SPEED_FAST :Rapida
|
||||||
|
|
||||||
|
###length 6
|
||||||
STR_SEA_LEVEL_LOW :Basa
|
STR_SEA_LEVEL_LOW :Basa
|
||||||
STR_SEA_LEVEL_MEDIUM :Meza
|
STR_SEA_LEVEL_MEDIUM :Meza
|
||||||
STR_SEA_LEVEL_HIGH :Alta
|
STR_SEA_LEVEL_HIGH :Alta
|
||||||
STR_SEA_LEVEL_CUSTOM :Kustumigita
|
STR_SEA_LEVEL_CUSTOM :Kustumigita
|
||||||
STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Kustumigita ({NUM}%)
|
STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Kustumigita ({NUM}%)
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
###length 7
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
# Settings tree window
|
# Settings tree window
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
STR_CONFIG_SETTING_NONE :Nulo
|
STR_CONFIG_SETTING_NONE :Nulo
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
STR_CONFIG_SETTING_PLANE_CRASHES_NONE :nulo
|
STR_CONFIG_SETTING_PLANE_CRASHES_NONE :nulo
|
||||||
STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :normala
|
STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :normala
|
||||||
|
|
||||||
@@ -539,10 +614,107 @@ STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :normala
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Verda
|
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Verda
|
||||||
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Obskur-verda
|
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Obskur-verda
|
||||||
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violkolora
|
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violkolora
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -561,15 +733,63 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violkolora
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
###length 5
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
###length 6
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 5
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
|
||||||
# Config errors
|
# Config errors
|
||||||
@@ -597,15 +817,18 @@ STR_QUIT_NO :{BLACK}Ne
|
|||||||
|
|
||||||
# Cheat window
|
# Cheat window
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
# Livery window
|
# Livery window
|
||||||
|
|
||||||
|
|
||||||
|
###length 23
|
||||||
|
|
||||||
# Face selection window
|
# Face selection window
|
||||||
|
|
||||||
|
|
||||||
############ Next lines match ServerGameType
|
# Matches ServerGameType
|
||||||
############ End of leave-in-this-order
|
###length 3
|
||||||
|
|
||||||
# Network server list
|
# Network server list
|
||||||
|
|
||||||
@@ -624,9 +847,8 @@ STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x
|
|||||||
|
|
||||||
# Network connecting window
|
# Network connecting window
|
||||||
|
|
||||||
############ Leave those lines in this order!!
|
|
||||||
|
|
||||||
############ End of leave-in-this-order
|
###length 8
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -634,8 +856,8 @@ STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x
|
|||||||
|
|
||||||
# Network client list
|
# Network client list
|
||||||
|
|
||||||
############ Begin of ConnectionType
|
# Matches ConnectionType
|
||||||
############ End of ConnectionType
|
###length 5
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -651,19 +873,22 @@ STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x
|
|||||||
# Network messages
|
# Network messages
|
||||||
STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Tu sendis tro multa imperi ad la servero
|
STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Tu sendis tro multa imperi ad la servero
|
||||||
|
|
||||||
############ Leave those lines in this order!!
|
|
||||||
STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :sendinta tro multa imperi
|
|
||||||
############ End of leave-in-this-order
|
|
||||||
|
|
||||||
|
###length 21
|
||||||
|
STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :sendinta tro multa imperi
|
||||||
|
|
||||||
# Network related errors
|
# Network related errors
|
||||||
STR_NETWORK_SERVER_MESSAGE :*** {1:STRING}
|
STR_NETWORK_SERVER_MESSAGE :*** {1:STRING}
|
||||||
############ Leave those lines in this order!!
|
|
||||||
############ End of leave-in-this-order
|
###length 12
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Content downloading window
|
# Content downloading window
|
||||||
|
|
||||||
|
###length 5
|
||||||
|
|
||||||
|
|
||||||
# Order of these is important!
|
# Order of these is important!
|
||||||
|
|
||||||
# Content downloading progress window
|
# Content downloading progress window
|
||||||
@@ -786,10 +1011,10 @@ STR_ABOUT_VERSION :{BLACK}OpenTTD
|
|||||||
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-{STRING} La kruo OpenTTD
|
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-{STRING} La kruo OpenTTD
|
||||||
|
|
||||||
# Framerate display window
|
# Framerate display window
|
||||||
############ Leave those lines in this order!!
|
|
||||||
############ End of leave-in-this-order
|
###length 15
|
||||||
############ Leave those lines in this order!!
|
|
||||||
############ End of leave-in-this-order
|
###length 15
|
||||||
|
|
||||||
|
|
||||||
# Save/load game/scenario
|
# Save/load game/scenario
|
||||||
@@ -845,6 +1070,7 @@ STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING
|
|||||||
|
|
||||||
# NewGRF status
|
# NewGRF status
|
||||||
STR_NEWGRF_LIST_NONE :Nulo
|
STR_NEWGRF_LIST_NONE :Nulo
|
||||||
|
###length 3
|
||||||
|
|
||||||
# NewGRF 'it's broken' warnings
|
# NewGRF 'it's broken' warnings
|
||||||
|
|
||||||
@@ -872,15 +1098,17 @@ STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
|
|||||||
# Town local authority window
|
# Town local authority window
|
||||||
STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING}
|
STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING}
|
||||||
|
|
||||||
|
###length 8
|
||||||
|
|
||||||
|
###length 8
|
||||||
|
|
||||||
# Goal window
|
# Goal window
|
||||||
STR_GOALS_TEXT :{ORANGE}{STRING}
|
STR_GOALS_TEXT :{ORANGE}{STRING}
|
||||||
|
|
||||||
# Goal question window
|
# Goal question window
|
||||||
|
|
||||||
############ Start of Goal Question button list
|
# Goal Question button list
|
||||||
############ End of Goal Question button list
|
###length 18
|
||||||
|
|
||||||
# Subsidies window
|
# Subsidies window
|
||||||
|
|
||||||
@@ -900,8 +1128,7 @@ STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Aceptas:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
############ range for rating starts
|
###length 8
|
||||||
############ range for rating ends
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -913,6 +1140,9 @@ STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOIN
|
|||||||
|
|
||||||
# Finances window
|
# Finances window
|
||||||
STR_FINANCES_YEAR :{WHITE}{NUM}
|
STR_FINANCES_YEAR :{WHITE}{NUM}
|
||||||
|
|
||||||
|
###length 13
|
||||||
|
|
||||||
STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG}
|
STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG}
|
||||||
STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG}
|
STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG}
|
||||||
STR_FINANCES_LOAN_TITLE :{WHITE}Prest-ajo
|
STR_FINANCES_LOAN_TITLE :{WHITE}Prest-ajo
|
||||||
@@ -936,23 +1166,25 @@ STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Vehili:
|
|||||||
|
|
||||||
|
|
||||||
# Vehicle lists
|
# Vehicle lists
|
||||||
|
###length VEHICLE_TYPES
|
||||||
STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} Tren{P o i}
|
STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} Tren{P o i}
|
||||||
STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} Voyo-Vehil{P o i}
|
STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} Voyo-Vehil{P o i}
|
||||||
STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} Nav{P o i}
|
STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} Nav{P o i}
|
||||||
STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} Aeronavo
|
STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} Aeronavo
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Treni - klikigas sur treno por informeso
|
STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Treni - klikigas sur treno por informeso
|
||||||
STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Voy-vehili - klikigas sur vehilo por informeso
|
STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Voy-vehili - klikigas sur vehilo por informeso
|
||||||
STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Navi - klikigas sur navo por informeso
|
STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Navi - klikigas sur navo por informeso
|
||||||
STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Aeronavi - klikigas sur aeronavo por informeso
|
STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Aeronavi - klikigas sur aeronavo por informeso
|
||||||
|
|
||||||
STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Profito to yaro: {CURRENCY_LONG} (lasta yaro: {CURRENCY_LONG})
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
STR_VEHICLE_LIST_AVAILABLE_TRAINS :Disponebla Treni
|
STR_VEHICLE_LIST_AVAILABLE_TRAINS :Disponebla Treni
|
||||||
STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Disponebla Vehili
|
STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Disponebla Vehili
|
||||||
STR_VEHICLE_LIST_AVAILABLE_SHIPS :Disponebla Navi
|
STR_VEHICLE_LIST_AVAILABLE_SHIPS :Disponebla Navi
|
||||||
STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Disponebla Aeronavi
|
STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Disponebla Aeronavi
|
||||||
|
|
||||||
|
STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Profito to yaro: {CURRENCY_LONG} (lasta yaro: {CURRENCY_LONG})
|
||||||
|
|
||||||
STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Sendas ad Depozeyo
|
STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Sendas ad Depozeyo
|
||||||
STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Sendas ad Depozeyo
|
STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Sendas ad Depozeyo
|
||||||
@@ -962,11 +1194,13 @@ STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Sendas ad Hanga
|
|||||||
|
|
||||||
|
|
||||||
# Group window
|
# Group window
|
||||||
|
###length VEHICLE_TYPES
|
||||||
STR_GROUP_ALL_TRAINS :Omna treni
|
STR_GROUP_ALL_TRAINS :Omna treni
|
||||||
STR_GROUP_ALL_ROAD_VEHICLES :Omna voy-vehili
|
STR_GROUP_ALL_ROAD_VEHICLES :Omna voy-vehili
|
||||||
STR_GROUP_ALL_SHIPS :Omna navi
|
STR_GROUP_ALL_SHIPS :Omna navi
|
||||||
STR_GROUP_ALL_AIRCRAFTS :Omna aeronavi
|
STR_GROUP_ALL_AIRCRAFTS :Omna aeronavi
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
STR_GROUP_DEFAULT_TRAINS :Negrupigita treni
|
STR_GROUP_DEFAULT_TRAINS :Negrupigita treni
|
||||||
STR_GROUP_DEFAULT_ROAD_VEHICLES :Negrupigita voy-vehili
|
STR_GROUP_DEFAULT_ROAD_VEHICLES :Negrupigita voy-vehili
|
||||||
STR_GROUP_DEFAULT_SHIPS :Negrupigita navi
|
STR_GROUP_DEFAULT_SHIPS :Negrupigita navi
|
||||||
@@ -979,22 +1213,34 @@ STR_GROUP_DEFAULT_AIRCRAFTS :Negrupigita aer
|
|||||||
|
|
||||||
|
|
||||||
# Build vehicle window
|
# Build vehicle window
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
|
||||||
############ range for vehicle availability starts
|
# Vehicle availability
|
||||||
############ range for vehicle availability ends
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
# Depot window
|
# Depot window
|
||||||
STR_DEPOT_CAPTION :{WHITE}{DEPOT}
|
STR_DEPOT_CAPTION :{WHITE}{DEPOT}
|
||||||
@@ -1006,18 +1252,29 @@ STR_DEPOT_NO_ENGINE :{BLACK}-
|
|||||||
STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING}
|
STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING}
|
||||||
STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT})
|
STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT})
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
|
||||||
# Engine preview window
|
# Engine preview window
|
||||||
@@ -1027,6 +1284,9 @@ STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG}
|
|||||||
|
|
||||||
|
|
||||||
# Autoreplace window
|
# Autoreplace window
|
||||||
|
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
STR_REPLACE_VEHICLE_TRAIN :Treno
|
STR_REPLACE_VEHICLE_TRAIN :Treno
|
||||||
STR_REPLACE_VEHICLE_ROAD_VEHICLE :Voy-vehilo
|
STR_REPLACE_VEHICLE_ROAD_VEHICLE :Voy-vehilo
|
||||||
STR_REPLACE_VEHICLE_SHIP :Navo
|
STR_REPLACE_VEHICLE_SHIP :Navo
|
||||||
@@ -1035,6 +1295,8 @@ STR_REPLACE_VEHICLE_AIRCRAFT :Aeronavo
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
###next-name-looks-similar
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1042,30 +1304,38 @@ STR_REPLACE_VEHICLE_AIRCRAFT :Aeronavo
|
|||||||
# Vehicle view
|
# Vehicle view
|
||||||
STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE}
|
STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE}
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Messages in the start stop button in the vehicle view
|
# Messages in the start stop button in the vehicle view
|
||||||
|
|
||||||
STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Servado ad {DEPOT}, {VELOCITY}
|
STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Servado ad {DEPOT}, {VELOCITY}
|
||||||
|
|
||||||
|
|
||||||
# Vehicle stopped/started animations
|
# Vehicle stopped/started animations
|
||||||
|
###length 2
|
||||||
STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}Haltinta
|
STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}Haltinta
|
||||||
STR_VEHICLE_COMMAND_STOPPED :{RED}Haltinta
|
STR_VEHICLE_COMMAND_STOPPED :{RED}Haltinta
|
||||||
|
|
||||||
|
###length 2
|
||||||
STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}Komencinta
|
STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}Komencinta
|
||||||
STR_VEHICLE_COMMAND_STARTED :{GREEN}Komencinta
|
STR_VEHICLE_COMMAND_STARTED :{GREEN}Komencinta
|
||||||
|
|
||||||
# Vehicle details
|
# Vehicle details
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
# The next two need to stay in this order
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1074,6 +1344,8 @@ STR_VEHICLE_COMMAND_STARTED :{GREEN}Komencin
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
# Extra buttons for train details windows
|
# Extra buttons for train details windows
|
||||||
|
|
||||||
|
|
||||||
@@ -1085,8 +1357,11 @@ STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Kapacesi
|
|||||||
|
|
||||||
# Vehicle refit
|
# Vehicle refit
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
# Order view
|
# Order view
|
||||||
|
|
||||||
@@ -1102,6 +1377,8 @@ STR_ORDER_TEXT :{STRING} {STRIN
|
|||||||
|
|
||||||
|
|
||||||
# Conditional order variables, must follow order of OrderConditionVariable enum
|
# Conditional order variables, must follow order of OrderConditionVariable enum
|
||||||
|
###length 8
|
||||||
|
###next-name-looks-similar
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1112,6 +1389,9 @@ STR_ORDER_TEXT :{STRING} {STRIN
|
|||||||
# String parts to build the order string
|
# String parts to build the order string
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
###next-name-looks-similar
|
||||||
|
|
||||||
STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING}
|
STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING}
|
||||||
STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT}
|
STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT}
|
||||||
|
|
||||||
@@ -1122,6 +1402,7 @@ STR_ORDER_GO_TO_STATION :{STRING} {STATI
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1165,6 +1446,7 @@ STR_AI_SETTINGS_SETTING :{STRING}: {ORAN
|
|||||||
|
|
||||||
|
|
||||||
# Textfile window
|
# Textfile window
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
# Vehicle loading indicators
|
# Vehicle loading indicators
|
||||||
@@ -1258,13 +1540,23 @@ STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Ne povas
|
|||||||
|
|
||||||
# Generic vehicle errors
|
# Generic vehicle errors
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Tro multa vehili en la ludo
|
STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Tro multa vehili en la ludo
|
||||||
|
|
||||||
@@ -1282,8 +1574,10 @@ STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Tro mult
|
|||||||
# Sign related errors
|
# Sign related errors
|
||||||
|
|
||||||
# Translatable comment for OpenTTD's desktop shortcut
|
# Translatable comment for OpenTTD's desktop shortcut
|
||||||
|
###external 1
|
||||||
|
|
||||||
# Translatable descriptions in media/baseset/*.ob* files
|
# Translatable descriptions in media/baseset/*.ob* files
|
||||||
|
###external 10
|
||||||
|
|
||||||
##id 0x2000
|
##id 0x2000
|
||||||
# Town building names
|
# Town building names
|
||||||
@@ -1293,18 +1587,28 @@ STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Tro mult
|
|||||||
|
|
||||||
############ WARNING, using range 0x6000 for strings that are stored in the savegame
|
############ WARNING, using range 0x6000 for strings that are stored in the savegame
|
||||||
############ These strings may never get a new id, or savegames will break!
|
############ These strings may never get a new id, or savegames will break!
|
||||||
|
|
||||||
##id 0x6000
|
##id 0x6000
|
||||||
STR_SV_EMPTY :
|
STR_SV_EMPTY :
|
||||||
|
|
||||||
|
###length 27
|
||||||
STR_SV_STNAME :{STRING}
|
STR_SV_STNAME :{STRING}
|
||||||
STR_SV_STNAME_BUOY :{STRING}
|
STR_SV_STNAME_BUOY :{STRING}
|
||||||
STR_SV_STNAME_WAYPOINT :{STRING}
|
STR_SV_STNAME_WAYPOINT :{STRING}
|
||||||
##id 0x6020
|
##id 0x6020
|
||||||
|
|
||||||
############ end of savegame specific region!
|
############ end of savegame specific region!
|
||||||
|
|
||||||
##id 0x8000
|
##id 0x8000
|
||||||
|
###length 116
|
||||||
# Vehicle names
|
# Vehicle names
|
||||||
|
|
||||||
|
###length 88
|
||||||
|
|
||||||
|
###length 11
|
||||||
|
|
||||||
|
###length 41
|
||||||
|
|
||||||
##id 0x8800
|
##id 0x8800
|
||||||
# Formatting of some strings
|
# Formatting of some strings
|
||||||
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
|
STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM}
|
||||||
@@ -1313,11 +1617,19 @@ STR_FORMAT_DATE_LONG :{STRING} {STRIN
|
|||||||
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
|
STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING}
|
||||||
|
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
###length 6
|
||||||
STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Treno-Depozeyo
|
STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Treno-Depozeyo
|
||||||
STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Treno-Depozeyo #{COMMA}
|
STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Treno-Depozeyo #{COMMA}
|
||||||
STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} Navo-Depozeyo
|
STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} Navo-Depozeyo
|
||||||
STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} Navo-Depozeyo #{COMMA}
|
STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} Navo-Depozeyo #{COMMA}
|
||||||
|
###next-name-looks-similar
|
||||||
|
|
||||||
STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} Hangaro
|
STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} Hangaro
|
||||||
|
# _SERIAL version of AIRACRAFT doesn't exist
|
||||||
|
|
||||||
STR_COMPANY_SOMEONE :ulu
|
STR_COMPANY_SOMEONE :ulu
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -123,7 +123,7 @@ STR_LITERS :{COMMA} litr{P
|
|||||||
STR_ITEMS :{COMMA} oġġett{P "" i i i}
|
STR_ITEMS :{COMMA} oġġett{P "" i i i}
|
||||||
STR_CRATES :{COMMA} kaxx{P a i i i}
|
STR_CRATES :{COMMA} kaxx{P a i i i}
|
||||||
|
|
||||||
# Colours, do not shuffle
|
###length 17
|
||||||
STR_COLOUR_DARK_BLUE :Blu Skur
|
STR_COLOUR_DARK_BLUE :Blu Skur
|
||||||
STR_COLOUR_PALE_GREEN :Aħdar ċar
|
STR_COLOUR_PALE_GREEN :Aħdar ċar
|
||||||
STR_COLOUR_PINK :Roża
|
STR_COLOUR_PINK :Roża
|
||||||
@@ -188,7 +188,9 @@ STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Faxxa bi
|
|||||||
STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Waqqa bini, etc.., Ctrl tagħzel zona dijagonali. Shift taqleb bejn bini/turija ta' stima ta' l-ispiza
|
STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Waqqa bini, etc.., Ctrl tagħzel zona dijagonali. Shift taqleb bejn bini/turija ta' stima ta' l-ispiza
|
||||||
|
|
||||||
# Show engines button
|
# Show engines button
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
# Query window
|
# Query window
|
||||||
STR_BUTTON_DEFAULT :{BLACK}Default
|
STR_BUTTON_DEFAULT :{BLACK}Default
|
||||||
@@ -241,7 +243,10 @@ STR_SORT_BY_POPULATION :Popolazzjoni
|
|||||||
|
|
||||||
# Group by options for vehicle list
|
# Group by options for vehicle list
|
||||||
|
|
||||||
|
# Order button in shared orders vehicle list
|
||||||
|
|
||||||
# Tooltips for the main toolbar
|
# Tooltips for the main toolbar
|
||||||
|
###length 31
|
||||||
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Waqfa temporanja mil-logħba
|
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Waqfa temporanja mil-logħba
|
||||||
STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Għaġġel il-loghba
|
STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Għaġġel il-loghba
|
||||||
STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Preferenzi
|
STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Preferenzi
|
||||||
@@ -255,67 +260,67 @@ STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Ibni ind
|
|||||||
|
|
||||||
# Extra tooltips for the scenario editor toolbar
|
# Extra tooltips for the scenario editor toolbar
|
||||||
|
|
||||||
############ range for SE file menu starts
|
# Scenario editor file menu
|
||||||
|
###length 7
|
||||||
STR_SCENEDIT_FILE_MENU_SEPARATOR :
|
STR_SCENEDIT_FILE_MENU_SEPARATOR :
|
||||||
############ range for SE file menu starts
|
|
||||||
|
|
||||||
############ range for settings menu starts
|
# Settings menu
|
||||||
############ range ends here
|
###length 14
|
||||||
|
|
||||||
############ range for file menu starts
|
# File menu
|
||||||
|
###length 5
|
||||||
STR_FILE_MENU_SEPARATOR :
|
STR_FILE_MENU_SEPARATOR :
|
||||||
############ range ends here
|
|
||||||
|
|
||||||
# map menu
|
# Map menu
|
||||||
|
###length 4
|
||||||
|
|
||||||
############ range for town menu starts
|
# Town menu
|
||||||
############ range ends here
|
###length 2
|
||||||
|
|
||||||
############ range for subsidies menu starts
|
# Subsidies menu
|
||||||
############ range ends here
|
###length 1
|
||||||
|
|
||||||
############ range for graph menu starts
|
# Graph menu
|
||||||
############ range ends here
|
###length 6
|
||||||
|
|
||||||
############ range for company league menu starts
|
# Company league menu
|
||||||
############ range ends here
|
###length 3
|
||||||
|
|
||||||
############ range for industry menu starts
|
# Industry menu
|
||||||
############ range ends here
|
###length 3
|
||||||
|
|
||||||
############ range for railway construction menu starts
|
# URailway construction menu
|
||||||
############ range ends here
|
###length 4
|
||||||
|
|
||||||
############ range for road construction menu starts
|
# Road construction menu
|
||||||
############ range ends here
|
###length 2
|
||||||
|
|
||||||
############ range for waterways construction menu starts
|
# Waterways construction menu
|
||||||
############ range ends here
|
###length 1
|
||||||
|
|
||||||
############ range for airport construction menu starts
|
# Aairport construction menu
|
||||||
############ range ends here
|
###length 1
|
||||||
|
|
||||||
############ range for landscaping menu starts
|
# Landscaping menu
|
||||||
############ range ends here
|
###length 3
|
||||||
|
|
||||||
############ range for music menu starts
|
# Music menu
|
||||||
############ range ends here
|
###length 1
|
||||||
|
|
||||||
############ range for message menu starts
|
# Message menu
|
||||||
############ range ends here
|
###length 3
|
||||||
|
|
||||||
############ range for about menu starts
|
# About menu
|
||||||
############ range ends here
|
###length 10
|
||||||
|
|
||||||
############ range for ordinal numbers used for the place in the highscore window
|
# Place in highscore window
|
||||||
############ range for ordinal numbers ends
|
###length 15
|
||||||
|
|
||||||
############ range for days starts
|
###length 31
|
||||||
############ range for days ends
|
|
||||||
|
|
||||||
############ range for months starts
|
###length 12
|
||||||
|
|
||||||
############ range for months ends
|
###length 12
|
||||||
|
|
||||||
# Graph window
|
# Graph window
|
||||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||||
@@ -334,8 +339,10 @@ STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COM
|
|||||||
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT})
|
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT})
|
||||||
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA})
|
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA})
|
||||||
STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}%
|
STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}%
|
||||||
############ Those following lines need to be in this order!!
|
|
||||||
############ End of order list
|
###length 10
|
||||||
|
|
||||||
|
###length 10
|
||||||
|
|
||||||
# Music window
|
# Music window
|
||||||
STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}--
|
STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}--
|
||||||
@@ -352,6 +359,8 @@ STR_HIGHSCORE_STATS :{BIG_FONT}'{STR
|
|||||||
|
|
||||||
# Smallmap window
|
# Smallmap window
|
||||||
|
|
||||||
|
###length 7
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY}
|
STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY}
|
||||||
@@ -376,6 +385,8 @@ STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {C
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
###next-name-looks-similar
|
||||||
|
|
||||||
# Order review system / warnings
|
# Order review system / warnings
|
||||||
|
|
||||||
@@ -385,23 +396,23 @@ STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
|
||||||
# Extra view window
|
# Extra view window
|
||||||
|
|
||||||
# Game options window
|
# Game options window
|
||||||
|
|
||||||
############ start of currency region
|
###length 42
|
||||||
############ end of currency region
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
|
||||||
|
###length 21
|
||||||
############ start of townname region
|
|
||||||
############ end of townname region
|
|
||||||
|
|
||||||
|
|
||||||
############ start of autosave dropdown
|
# Autosave dropdown
|
||||||
############ end of autosave dropdown
|
###length 5
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -429,45 +440,127 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :oħrajn
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 5
|
||||||
|
|
||||||
|
###length 6
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
###length 7
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
# Settings tree window
|
# Settings tree window
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Stabbilixxi l-kosti għal manutenzjoni u servizzi fuq vetturi u infrastruttura
|
STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Stabbilixxi l-kosti għal manutenzjoni u servizzi fuq vetturi u infrastruttura
|
||||||
|
|
||||||
STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Veloċita' tal-kostruzzjoni: {STRING}
|
STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Veloċita' tal-kostruzzjoni: {STRING}
|
||||||
STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Illimita l-ammont massimu ta' kostruzzjonijiet għall-AI
|
STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Illimita l-ammont massimu ta' kostruzzjonijiet għall-AI
|
||||||
|
|
||||||
STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Ħsarat fil-vetturi: {STRING}
|
STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Ħsarat fil-vetturi: {STRING}
|
||||||
STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Ikkontrolla kemm-il darba vettura li ma ingħatatx servizz riċentament tieqaf
|
STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Ikkontrolla kemm-il darba vettura li ma ingħatatx servizz riċentament tieqaf
|
||||||
|
|
||||||
STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Multiplikatur tas-sussidju: {STRING}
|
STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Multiplikatur tas-sussidju: {STRING}
|
||||||
STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Stabbilixxi kemm jiġi mħallas għal konnessjonijiet sussidjati
|
STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Stabbilixxi kemm jiġi mħallas għal konnessjonijiet sussidjati
|
||||||
|
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Kosti tal-kostruzzjoni: {STRING}
|
STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Kosti tal-kostruzzjoni: {STRING}
|
||||||
STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Stabbilixxi l-livell ta' kostruzzjoni u l-prezz tax-xiri
|
STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Stabbilixxi l-livell ta' kostruzzjoni u l-prezz tax-xiri
|
||||||
|
|
||||||
STR_CONFIG_SETTING_RECESSIONS :Riċessjonijiet: {STRING}
|
STR_CONFIG_SETTING_RECESSIONS :Riċessjonijiet: {STRING}
|
||||||
STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Jekk mixgħula kull ftit snin tista' sseħħ riċessjoni. Waqt riċessjoni, il-produzzjoni ta' kollox tonqos (tirritorna għal kemm kienet qabel kif tgħaddi r-riċessjoni)
|
STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Jekk mixgħula kull ftit snin tista' sseħħ riċessjoni. Waqt riċessjoni, il-produzzjoni ta' kollox tonqos (tirritorna għal kemm kienet qabel kif tgħaddi r-riċessjoni)
|
||||||
|
|
||||||
STR_CONFIG_SETTING_TRAIN_REVERSING :Tħallix li ferrovija ddur lura fi stazzjon: {STRING}
|
STR_CONFIG_SETTING_TRAIN_REVERSING :Tħallix li ferrovija ddur lura fi stazzjon: {STRING}
|
||||||
STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Jekk tinxtegħel, ferroviji ma jdurux lura fi stazzjonijiet li mhumiex fit-tarf, jekk teżisti rotta iqsar għad-destinazzjoni li jmiss
|
STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Jekk tinxtegħel, ferroviji ma jdurux lura fi stazzjonijiet li mhumiex fit-tarf, jekk teżisti rotta iqsar għad-destinazzjoni li jmiss
|
||||||
|
|
||||||
STR_CONFIG_SETTING_DISASTERS :Diżastri: {STRING}
|
STR_CONFIG_SETTING_DISASTERS :Diżastri: {STRING}
|
||||||
STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Ixgħel jew itfi diżastri li xi drabi jistgħu jaffetwaw jew ikissru vetturi jew infrastrutturi
|
STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Ixgħel jew itfi diżastri li xi drabi jistgħu jaffetwaw jew ikissru vetturi jew infrastrutturi
|
||||||
|
|
||||||
STR_CONFIG_SETTING_CITY_APPROVAL :L-attitudni tal-kunsill lokali lejn bidliet fil-viċinanzi: {STRING}
|
STR_CONFIG_SETTING_CITY_APPROVAL :L-attitudni tal-kunsill lokali lejn bidliet fil-viċinanzi: {STRING}
|
||||||
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Iddeċiedi kemm l-ammont ta storbju u danni lill-ambjent ta' kumpanija jaffetwaw il-klassifikazzjoni tagħhom mar-raħal u proġetti oħra tal-futur
|
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Iddeċiedi kemm l-ammont ta storbju u danni lill-ambjent ta' kumpanija jaffetwaw il-klassifikazzjoni tagħhom mar-raħal u proġetti oħra tal-futur
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Avza jekk jintilef il-vehikolu: {STRING}
|
STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Avza jekk jintilef il-vehikolu: {STRING}
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -475,8 +568,47 @@ STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Avza jekk jinti
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
###length 4
|
||||||
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :L-ebda azzjoni
|
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :L-ebda azzjoni
|
||||||
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :L-azzjonijiet kollha
|
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :L-azzjonijiet kollha
|
||||||
|
|
||||||
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Uza l-lista avvanzata tal-vetturi: {STRING}
|
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Uza l-lista avvanzata tal-vetturi: {STRING}
|
||||||
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Ippermetti l-uzu tal-listi avvanzati tal-vetturi biex tghaqqad il-vetturi fi gruppi
|
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Ippermetti l-uzu tal-listi avvanzati tal-vetturi biex tghaqqad il-vetturi fi gruppi
|
||||||
|
|
||||||
@@ -484,6 +616,13 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Ippermetti l-uz
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -501,6 +640,87 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Ippermetti l-uz
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
###length 5
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
###length 6
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 5
|
||||||
|
|
||||||
|
###setting-zero-is-special
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
|
||||||
# Config errors
|
# Config errors
|
||||||
@@ -523,15 +743,18 @@ STR_INTRO_CAPTION :{WHITE}OpenTTD
|
|||||||
# Cheat window
|
# Cheat window
|
||||||
STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Ibdel is-sena
|
STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Ibdel is-sena
|
||||||
|
|
||||||
|
###length 4
|
||||||
|
|
||||||
# Livery window
|
# Livery window
|
||||||
|
|
||||||
|
|
||||||
|
###length 23
|
||||||
|
|
||||||
# Face selection window
|
# Face selection window
|
||||||
|
|
||||||
|
|
||||||
############ Next lines match ServerGameType
|
# Matches ServerGameType
|
||||||
############ End of leave-in-this-order
|
###length 3
|
||||||
|
|
||||||
# Network server list
|
# Network server list
|
||||||
|
|
||||||
@@ -550,20 +773,19 @@ STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x
|
|||||||
|
|
||||||
# Network connecting window
|
# Network connecting window
|
||||||
|
|
||||||
############ Leave those lines in this order!!
|
|
||||||
|
|
||||||
############ End of leave-in-this-order
|
|
||||||
STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} imnizzlin s'issa
|
STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} imnizzlin s'issa
|
||||||
STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} imnizzlin s'issa
|
STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} imnizzlin s'issa
|
||||||
|
|
||||||
|
###length 8
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Network company list added strings
|
# Network company list added strings
|
||||||
|
|
||||||
# Network client list
|
# Network client list
|
||||||
|
|
||||||
############ Begin of ConnectionType
|
# Matches ConnectionType
|
||||||
############ End of ConnectionType
|
###length 5
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -578,21 +800,24 @@ STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES}
|
|||||||
|
|
||||||
# Network messages
|
# Network messages
|
||||||
|
|
||||||
############ Leave those lines in this order!!
|
|
||||||
|
###length 21
|
||||||
STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :reviżjoni ħażina
|
STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :reviżjoni ħażina
|
||||||
STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :isem diġa qed jintuża
|
STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :isem diġa qed jintuża
|
||||||
STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :password ħażin
|
STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :password ħażin
|
||||||
############ End of leave-in-this-order
|
|
||||||
|
|
||||||
|
|
||||||
# Network related errors
|
# Network related errors
|
||||||
STR_NETWORK_SERVER_MESSAGE :*** {1:STRING}
|
STR_NETWORK_SERVER_MESSAGE :*** {1:STRING}
|
||||||
############ Leave those lines in this order!!
|
|
||||||
############ End of leave-in-this-order
|
###length 12
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Content downloading window
|
# Content downloading window
|
||||||
|
|
||||||
|
###length 5
|
||||||
|
|
||||||
|
|
||||||
# Order of these is important!
|
# Order of these is important!
|
||||||
|
|
||||||
# Content downloading progress window
|
# Content downloading progress window
|
||||||
@@ -693,10 +918,10 @@ STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Aghzel i
|
|||||||
# About OpenTTD window
|
# About OpenTTD window
|
||||||
|
|
||||||
# Framerate display window
|
# Framerate display window
|
||||||
############ Leave those lines in this order!!
|
|
||||||
############ End of leave-in-this-order
|
###length 15
|
||||||
############ Leave those lines in this order!!
|
|
||||||
############ End of leave-in-this-order
|
###length 15
|
||||||
|
|
||||||
|
|
||||||
# Save/load game/scenario
|
# Save/load game/scenario
|
||||||
@@ -746,6 +971,7 @@ STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING
|
|||||||
|
|
||||||
|
|
||||||
# NewGRF status
|
# NewGRF status
|
||||||
|
###length 3
|
||||||
|
|
||||||
# NewGRF 'it's broken' warnings
|
# NewGRF 'it's broken' warnings
|
||||||
|
|
||||||
@@ -774,15 +1000,17 @@ STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
|
|||||||
# Town local authority window
|
# Town local authority window
|
||||||
STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING}
|
STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING}
|
||||||
|
|
||||||
|
###length 8
|
||||||
|
|
||||||
|
###length 8
|
||||||
|
|
||||||
# Goal window
|
# Goal window
|
||||||
STR_GOALS_TEXT :{ORANGE}{STRING}
|
STR_GOALS_TEXT :{ORANGE}{STRING}
|
||||||
|
|
||||||
# Goal question window
|
# Goal question window
|
||||||
|
|
||||||
############ Start of Goal Question button list
|
# Goal Question button list
|
||||||
############ End of Goal Question button list
|
###length 18
|
||||||
|
|
||||||
# Subsidies window
|
# Subsidies window
|
||||||
|
|
||||||
@@ -801,8 +1029,7 @@ STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_L
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
############ range for rating starts
|
###length 8
|
||||||
############ range for rating ends
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -814,6 +1041,9 @@ STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOIN
|
|||||||
|
|
||||||
# Finances window
|
# Finances window
|
||||||
STR_FINANCES_YEAR :{WHITE}{NUM}
|
STR_FINANCES_YEAR :{WHITE}{NUM}
|
||||||
|
|
||||||
|
###length 13
|
||||||
|
|
||||||
STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG}
|
STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG}
|
||||||
STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG}
|
STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG}
|
||||||
|
|
||||||
@@ -835,16 +1065,20 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN
|
|||||||
|
|
||||||
|
|
||||||
# Vehicle lists
|
# Vehicle lists
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Group window
|
# Group window
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -853,22 +1087,34 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN
|
|||||||
|
|
||||||
|
|
||||||
# Build vehicle window
|
# Build vehicle window
|
||||||
|
###length 4
|
||||||
|
|
||||||
|
|
||||||
############ range for vehicle availability starts
|
# Vehicle availability
|
||||||
############ range for vehicle availability ends
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
# Depot window
|
# Depot window
|
||||||
STR_DEPOT_CAPTION :{WHITE}{DEPOT}
|
STR_DEPOT_CAPTION :{WHITE}{DEPOT}
|
||||||
@@ -880,18 +1126,29 @@ STR_DEPOT_NO_ENGINE :{BLACK}-
|
|||||||
STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING}
|
STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING}
|
||||||
STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT})
|
STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT})
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
|
||||||
# Engine preview window
|
# Engine preview window
|
||||||
@@ -903,34 +1160,47 @@ STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG}
|
|||||||
# Autoreplace window
|
# Autoreplace window
|
||||||
|
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
###next-name-looks-similar
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Vehicle view
|
# Vehicle view
|
||||||
STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE}
|
STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE}
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Messages in the start stop button in the vehicle view
|
# Messages in the start stop button in the vehicle view
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Vehicle stopped/started animations
|
# Vehicle stopped/started animations
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
# Vehicle details
|
# Vehicle details
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
# The next two need to stay in this order
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -939,6 +1209,8 @@ STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
# Extra buttons for train details windows
|
# Extra buttons for train details windows
|
||||||
|
|
||||||
|
|
||||||
@@ -947,8 +1219,11 @@ STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE
|
|||||||
|
|
||||||
# Vehicle refit
|
# Vehicle refit
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
# Order view
|
# Order view
|
||||||
|
|
||||||
@@ -964,6 +1239,8 @@ STR_ORDER_TEXT :{STRING} {STRIN
|
|||||||
|
|
||||||
|
|
||||||
# Conditional order variables, must follow order of OrderConditionVariable enum
|
# Conditional order variables, must follow order of OrderConditionVariable enum
|
||||||
|
###length 8
|
||||||
|
###next-name-looks-similar
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -975,6 +1252,9 @@ STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Hassar l
|
|||||||
# String parts to build the order string
|
# String parts to build the order string
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
###next-name-looks-similar
|
||||||
|
|
||||||
STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING}
|
STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING}
|
||||||
STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT}
|
STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT}
|
||||||
|
|
||||||
@@ -986,6 +1266,7 @@ STR_ORDER_IMPLICIT :(Awtomatiku)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###length 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1035,10 +1316,11 @@ STR_AI_CONFIG_CHANGE_NONE :
|
|||||||
|
|
||||||
|
|
||||||
# Textfile window
|
# Textfile window
|
||||||
STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} лиценца за {STRING}
|
|
||||||
STR_TEXTFILE_VIEW_README :{BLACK}Прикажи ги чита-ми
|
STR_TEXTFILE_VIEW_README :{BLACK}Прикажи ги чита-ми
|
||||||
STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Промени се најавите
|
STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Промени се најавите
|
||||||
STR_TEXTFILE_VIEW_LICENCE :{BLACK}Лиценца
|
STR_TEXTFILE_VIEW_LICENCE :{BLACK}Лиценца
|
||||||
|
###length 3
|
||||||
|
STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} лиценца за {STRING}
|
||||||
|
|
||||||
|
|
||||||
# Vehicle loading indicators
|
# Vehicle loading indicators
|
||||||
@@ -1116,24 +1398,34 @@ STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Il-pont
|
|||||||
|
|
||||||
# Generic vehicle errors
|
# Generic vehicle errors
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Ma tistax tbiddel l-isem ta' dan it-tip ta' vapur...
|
|
||||||
STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Ma tistax tbiddel l-isem ta' dan it-tip t' ajruplan...
|
|
||||||
|
|
||||||
STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Ma tistax tbigħ din il-ferrovija...
|
|
||||||
STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Ma tistax tbigħ din il-karozza...
|
|
||||||
STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Ma tistax tbigħ dan il-vapur...
|
|
||||||
STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Ma tistax tbigħ dan l-ajruplan...
|
|
||||||
|
|
||||||
STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Din il-vettura mhix disponibbli
|
STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Din il-vettura mhix disponibbli
|
||||||
STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Din il-vettura mhix disponibbli
|
STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Din il-vettura mhix disponibbli
|
||||||
STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Dan il-vapur mhux disponibbli
|
STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Dan il-vapur mhux disponibbli
|
||||||
STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Dan l-ajruplan mhux disponibbli
|
STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Dan l-ajruplan mhux disponibbli
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Ma tistax tbiddel l-isem ta' dan it-tip ta' vapur...
|
||||||
|
STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Ma tistax tbiddel l-isem ta' dan it-tip t' ajruplan...
|
||||||
|
|
||||||
|
###length VEHICLE_TYPES
|
||||||
|
STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Ma tistax tbigħ din il-ferrovija...
|
||||||
|
STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Ma tistax tbigħ din il-karozza...
|
||||||
|
STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Ma tistax tbigħ dan il-vapur...
|
||||||
|
STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Ma tistax tbigħ dan l-ajruplan...
|
||||||
|
|
||||||
STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Hemm wisq vetturi fil-logħba
|
STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Hemm wisq vetturi fil-logħba
|
||||||
|
|
||||||
|
|
||||||
@@ -1159,9 +1451,11 @@ STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Ma tista
|
|||||||
# Sign related errors
|
# Sign related errors
|
||||||
|
|
||||||
# Translatable comment for OpenTTD's desktop shortcut
|
# Translatable comment for OpenTTD's desktop shortcut
|
||||||
|
###external 1
|
||||||
STR_DESKTOP_SHORTCUT_COMMENT :Logħba simulazzjoni bbażata fuq Transport Tycoon Deluxe
|
STR_DESKTOP_SHORTCUT_COMMENT :Logħba simulazzjoni bbażata fuq Transport Tycoon Deluxe
|
||||||
|
|
||||||
# Translatable descriptions in media/baseset/*.ob* files
|
# Translatable descriptions in media/baseset/*.ob* files
|
||||||
|
###external 10
|
||||||
|
|
||||||
##id 0x2000
|
##id 0x2000
|
||||||
# Town building names
|
# Town building names
|
||||||
@@ -1207,6 +1501,7 @@ STR_INDUSTRY_NAME_SUGAR_MINE :Minjiera taz-zo
|
|||||||
|
|
||||||
############ WARNING, using range 0x6000 for strings that are stored in the savegame
|
############ WARNING, using range 0x6000 for strings that are stored in the savegame
|
||||||
############ These strings may never get a new id, or savegames will break!
|
############ These strings may never get a new id, or savegames will break!
|
||||||
|
|
||||||
##id 0x6000
|
##id 0x6000
|
||||||
STR_SV_EMPTY :
|
STR_SV_EMPTY :
|
||||||
STR_SV_UNNAMED :Bla isem
|
STR_SV_UNNAMED :Bla isem
|
||||||
@@ -1215,6 +1510,7 @@ STR_SV_ROAD_VEHICLE_NAME :Vettura tat-tri
|
|||||||
STR_SV_SHIP_NAME :Vapur {COMMA}
|
STR_SV_SHIP_NAME :Vapur {COMMA}
|
||||||
STR_SV_AIRCRAFT_NAME :Ajruplan {COMMA}
|
STR_SV_AIRCRAFT_NAME :Ajruplan {COMMA}
|
||||||
|
|
||||||
|
###length 27
|
||||||
STR_SV_STNAME :{STRING}
|
STR_SV_STNAME :{STRING}
|
||||||
STR_SV_STNAME_NORTH :{STRING} Tramuntana
|
STR_SV_STNAME_NORTH :{STRING} Tramuntana
|
||||||
STR_SV_STNAME_SOUTH :{STRING} Nofsinhar
|
STR_SV_STNAME_SOUTH :{STRING} Nofsinhar
|
||||||
@@ -1241,9 +1537,11 @@ STR_SV_STNAME_LOWER :{STRING} t' isf
|
|||||||
STR_SV_STNAME_HELIPORT :Ħeliport {STRING}
|
STR_SV_STNAME_HELIPORT :Ħeliport {STRING}
|
||||||
STR_SV_STNAME_FOREST :Foresta {STRING}
|
STR_SV_STNAME_FOREST :Foresta {STRING}
|
||||||
STR_SV_STNAME_FALLBACK :{STRING}, Stazzjon #{NUM}
|
STR_SV_STNAME_FALLBACK :{STRING}, Stazzjon #{NUM}
|
||||||
|
|
||||||
############ end of savegame specific region!
|
############ end of savegame specific region!
|
||||||
|
|
||||||
##id 0x8000
|
##id 0x8000
|
||||||
|
###length 116
|
||||||
# Vehicle names
|
# Vehicle names
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Fwar)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Fwar)
|
||||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel)
|
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel)
|
||||||
@@ -1297,6 +1595,10 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Karru għall-pa
|
|||||||
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Karru għall-posta
|
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Karru għall-posta
|
||||||
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Karru għall-faħam
|
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Karru għall-faħam
|
||||||
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Trakk tax-Xarbiet Karbonati
|
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Trakk tax-Xarbiet Karbonati
|
||||||
|
|
||||||
|
###length 88
|
||||||
|
|
||||||
|
###length 11
|
||||||
STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :Tanker taż-żejt MPS
|
STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :Tanker taż-żejt MPS
|
||||||
STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :Tanker taż-żejt CS-Inc.
|
STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :Tanker taż-żejt CS-Inc.
|
||||||
STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :Vapur tal-passiġġieri MPS
|
STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :Vapur tal-passiġġieri MPS
|
||||||
@@ -1308,6 +1610,8 @@ STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Vapur tal-merka
|
|||||||
STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Vapur tal-merkanzija Bakewell
|
STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Vapur tal-merkanzija Bakewell
|
||||||
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Vapur tal-merkanzija MightyMover
|
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Vapur tal-merkanzija MightyMover
|
||||||
STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Vapur tal-merkanzija Powernaut
|
STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Vapur tal-merkanzija Powernaut
|
||||||
|
|
||||||
|
###length 41
|
||||||
STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52
|
STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52
|
||||||
STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count
|
STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count
|
||||||
STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart
|
STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart
|
||||||
@@ -1359,6 +1663,14 @@ STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRI
|
|||||||
|
|
||||||
STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING}
|
STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING}
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
###length 2
|
||||||
|
|
||||||
|
###length 6
|
||||||
|
###next-name-looks-similar
|
||||||
|
|
||||||
|
# _SERIAL version of AIRACRAFT doesn't exist
|
||||||
|
|
||||||
STR_UNKNOWN_STATION :stazzjon mhux magħruf
|
STR_UNKNOWN_STATION :stazzjon mhux magħruf
|
||||||
STR_DEFAULT_SIGN_NAME :Sinjal
|
STR_DEFAULT_SIGN_NAME :Sinjal
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -447,6 +447,9 @@ public:
|
|||||||
/** Minimum effective distance for timeout calculation. */
|
/** Minimum effective distance for timeout calculation. */
|
||||||
static const uint MIN_TIMEOUT_DISTANCE = 32;
|
static const uint MIN_TIMEOUT_DISTANCE = 32;
|
||||||
|
|
||||||
|
/** Number of days before deleting links served only by vehicles stopped in depot. */
|
||||||
|
static const uint STALE_LINK_DEPOT_TIMEOUT = 1024;
|
||||||
|
|
||||||
/** Minimum number of days between subsequent compressions of a LG. */
|
/** Minimum number of days between subsequent compressions of a LG. */
|
||||||
static const uint COMPRESSION_INTERVAL = 256;
|
static const uint COMPRESSION_INTERVAL = 256;
|
||||||
|
|
||||||
|
|||||||
@@ -152,12 +152,24 @@ void ZoomInOrOutToCursorWindow(bool in, Window *w)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FixTitleGameZoom()
|
void FixTitleGameZoom(int zoom_adjust)
|
||||||
{
|
{
|
||||||
if (_game_mode != GM_MENU) return;
|
if (_game_mode != GM_MENU) return;
|
||||||
|
|
||||||
Viewport *vp = FindWindowByClass(WC_MAIN_WINDOW)->viewport;
|
Viewport *vp = FindWindowByClass(WC_MAIN_WINDOW)->viewport;
|
||||||
|
|
||||||
|
/* Adjust the zoom in/out.
|
||||||
|
* Can't simply add, since operator+ is not defined on the ZoomLevel type. */
|
||||||
vp->zoom = _gui_zoom;
|
vp->zoom = _gui_zoom;
|
||||||
|
while (zoom_adjust < 0 && vp->zoom != ZOOM_LVL_MIN) {
|
||||||
|
vp->zoom--;
|
||||||
|
zoom_adjust++;
|
||||||
|
}
|
||||||
|
while (zoom_adjust > 0 && vp->zoom != ZOOM_LVL_MAX) {
|
||||||
|
vp->zoom++;
|
||||||
|
zoom_adjust--;
|
||||||
|
}
|
||||||
|
|
||||||
vp->virtual_width = ScaleByZoom(vp->width, vp->zoom);
|
vp->virtual_width = ScaleByZoom(vp->width, vp->zoom);
|
||||||
vp->virtual_height = ScaleByZoom(vp->height, vp->zoom);
|
vp->virtual_height = ScaleByZoom(vp->height, vp->zoom);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ add_files(
|
|||||||
network_gui.cpp
|
network_gui.cpp
|
||||||
network_gui.h
|
network_gui.h
|
||||||
network_internal.h
|
network_internal.h
|
||||||
|
network_query.cpp
|
||||||
|
network_query.h
|
||||||
network_server.cpp
|
network_server.cpp
|
||||||
network_server.h
|
network_server.h
|
||||||
network_stun.cpp
|
network_stun.cpp
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ NetworkRecvStatus NetworkAdminSocketHandler::HandlePacket(Packet *p)
|
|||||||
case ADMIN_PACKET_ADMIN_UPDATE_FREQUENCY: return this->Receive_ADMIN_UPDATE_FREQUENCY(p);
|
case ADMIN_PACKET_ADMIN_UPDATE_FREQUENCY: return this->Receive_ADMIN_UPDATE_FREQUENCY(p);
|
||||||
case ADMIN_PACKET_ADMIN_POLL: return this->Receive_ADMIN_POLL(p);
|
case ADMIN_PACKET_ADMIN_POLL: return this->Receive_ADMIN_POLL(p);
|
||||||
case ADMIN_PACKET_ADMIN_CHAT: return this->Receive_ADMIN_CHAT(p);
|
case ADMIN_PACKET_ADMIN_CHAT: return this->Receive_ADMIN_CHAT(p);
|
||||||
|
case ADMIN_PACKET_ADMIN_EXTERNAL_CHAT: return this->Receive_ADMIN_EXTERNAL_CHAT(p);
|
||||||
case ADMIN_PACKET_ADMIN_RCON: return this->Receive_ADMIN_RCON(p);
|
case ADMIN_PACKET_ADMIN_RCON: return this->Receive_ADMIN_RCON(p);
|
||||||
case ADMIN_PACKET_ADMIN_GAMESCRIPT: return this->Receive_ADMIN_GAMESCRIPT(p);
|
case ADMIN_PACKET_ADMIN_GAMESCRIPT: return this->Receive_ADMIN_GAMESCRIPT(p);
|
||||||
case ADMIN_PACKET_ADMIN_PING: return this->Receive_ADMIN_PING(p);
|
case ADMIN_PACKET_ADMIN_PING: return this->Receive_ADMIN_PING(p);
|
||||||
@@ -132,6 +133,7 @@ NetworkRecvStatus NetworkAdminSocketHandler::Receive_ADMIN_QUIT(Packet *p) { ret
|
|||||||
NetworkRecvStatus NetworkAdminSocketHandler::Receive_ADMIN_UPDATE_FREQUENCY(Packet *p) { return this->ReceiveInvalidPacket(ADMIN_PACKET_ADMIN_UPDATE_FREQUENCY); }
|
NetworkRecvStatus NetworkAdminSocketHandler::Receive_ADMIN_UPDATE_FREQUENCY(Packet *p) { return this->ReceiveInvalidPacket(ADMIN_PACKET_ADMIN_UPDATE_FREQUENCY); }
|
||||||
NetworkRecvStatus NetworkAdminSocketHandler::Receive_ADMIN_POLL(Packet *p) { return this->ReceiveInvalidPacket(ADMIN_PACKET_ADMIN_POLL); }
|
NetworkRecvStatus NetworkAdminSocketHandler::Receive_ADMIN_POLL(Packet *p) { return this->ReceiveInvalidPacket(ADMIN_PACKET_ADMIN_POLL); }
|
||||||
NetworkRecvStatus NetworkAdminSocketHandler::Receive_ADMIN_CHAT(Packet *p) { return this->ReceiveInvalidPacket(ADMIN_PACKET_ADMIN_CHAT); }
|
NetworkRecvStatus NetworkAdminSocketHandler::Receive_ADMIN_CHAT(Packet *p) { return this->ReceiveInvalidPacket(ADMIN_PACKET_ADMIN_CHAT); }
|
||||||
|
NetworkRecvStatus NetworkAdminSocketHandler::Receive_ADMIN_EXTERNAL_CHAT(Packet *p) { return this->ReceiveInvalidPacket(ADMIN_PACKET_ADMIN_EXTERNAL_CHAT); }
|
||||||
NetworkRecvStatus NetworkAdminSocketHandler::Receive_ADMIN_RCON(Packet *p) { return this->ReceiveInvalidPacket(ADMIN_PACKET_ADMIN_RCON); }
|
NetworkRecvStatus NetworkAdminSocketHandler::Receive_ADMIN_RCON(Packet *p) { return this->ReceiveInvalidPacket(ADMIN_PACKET_ADMIN_RCON); }
|
||||||
NetworkRecvStatus NetworkAdminSocketHandler::Receive_ADMIN_GAMESCRIPT(Packet *p) { return this->ReceiveInvalidPacket(ADMIN_PACKET_ADMIN_GAMESCRIPT); }
|
NetworkRecvStatus NetworkAdminSocketHandler::Receive_ADMIN_GAMESCRIPT(Packet *p) { return this->ReceiveInvalidPacket(ADMIN_PACKET_ADMIN_GAMESCRIPT); }
|
||||||
NetworkRecvStatus NetworkAdminSocketHandler::Receive_ADMIN_PING(Packet *p) { return this->ReceiveInvalidPacket(ADMIN_PACKET_ADMIN_PING); }
|
NetworkRecvStatus NetworkAdminSocketHandler::Receive_ADMIN_PING(Packet *p) { return this->ReceiveInvalidPacket(ADMIN_PACKET_ADMIN_PING); }
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ enum PacketAdminType {
|
|||||||
ADMIN_PACKET_ADMIN_RCON, ///< The admin sends a remote console command.
|
ADMIN_PACKET_ADMIN_RCON, ///< The admin sends a remote console command.
|
||||||
ADMIN_PACKET_ADMIN_GAMESCRIPT, ///< The admin sends a JSON string for the GameScript.
|
ADMIN_PACKET_ADMIN_GAMESCRIPT, ///< The admin sends a JSON string for the GameScript.
|
||||||
ADMIN_PACKET_ADMIN_PING, ///< The admin sends a ping to the server, expecting a ping-reply (PONG) packet.
|
ADMIN_PACKET_ADMIN_PING, ///< The admin sends a ping to the server, expecting a ping-reply (PONG) packet.
|
||||||
|
ADMIN_PACKET_ADMIN_EXTERNAL_CHAT, ///< The admin sends a chat message from external source.
|
||||||
|
|
||||||
ADMIN_PACKET_SERVER_FULL = 100, ///< The server tells the admin it cannot accept the admin.
|
ADMIN_PACKET_SERVER_FULL = 100, ///< The server tells the admin it cannot accept the admin.
|
||||||
ADMIN_PACKET_SERVER_BANNED, ///< The server tells the admin it is banned.
|
ADMIN_PACKET_SERVER_BANNED, ///< The server tells the admin it is banned.
|
||||||
@@ -163,6 +164,17 @@ protected:
|
|||||||
*/
|
*/
|
||||||
virtual NetworkRecvStatus Receive_ADMIN_CHAT(Packet *p);
|
virtual NetworkRecvStatus Receive_ADMIN_CHAT(Packet *p);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send chat from the external source:
|
||||||
|
* string Name of the source this message came from.
|
||||||
|
* uint16 TextColour to use for the message.
|
||||||
|
* string Name of the user who sent the messsage.
|
||||||
|
* string Message.
|
||||||
|
* @param p The packet that was just received.
|
||||||
|
* @return The state the network should have.
|
||||||
|
*/
|
||||||
|
virtual NetworkRecvStatus Receive_ADMIN_EXTERNAL_CHAT(Packet *p);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute a command on the servers console:
|
* Execute a command on the servers console:
|
||||||
* string Command to be executed.
|
* string Command to be executed.
|
||||||
|
|||||||
@@ -205,9 +205,13 @@ void TCPConnecter::OnResolved(addrinfo *ai)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (_debug_net_level >= 6) {
|
if (_debug_net_level >= 6) {
|
||||||
Debug(net, 6, "{} resolved in:", this->connection_string);
|
if (this->addresses.size() == 0) {
|
||||||
for (const auto &address : this->addresses) {
|
Debug(net, 6, "{} did not resolve", this->connection_string);
|
||||||
Debug(net, 6, "- {}", NetworkAddress(address->ai_addr, (int)address->ai_addrlen).GetAddressAsString());
|
} else {
|
||||||
|
Debug(net, 6, "{} resolved in:", this->connection_string);
|
||||||
|
for (const auto &address : this->addresses) {
|
||||||
|
Debug(net, 6, "- {}", NetworkAddress(address->ai_addr, (int)address->ai_addrlen).GetAddressAsString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,11 @@ protected:
|
|||||||
/**
|
/**
|
||||||
* Client requesting a list of content info:
|
* Client requesting a list of content info:
|
||||||
* byte type
|
* byte type
|
||||||
* uint32 openttd version
|
* uint32 openttd version (or 0xFFFFFFFF if using a list)
|
||||||
|
* Only if the above value is 0xFFFFFFFF:
|
||||||
|
* uint8 count
|
||||||
|
* string branch-name ("vanilla" for upstream OpenTTD)
|
||||||
|
* string release version (like "12.0")
|
||||||
* @param p The packet that was just received.
|
* @param p The packet that was just received.
|
||||||
* @return True upon success, otherwise false.
|
* @return True upon success, otherwise false.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -94,6 +94,7 @@ NetworkRecvStatus NetworkGameSocketHandler::HandlePacket(Packet *p)
|
|||||||
case PACKET_SERVER_COMMAND: return this->Receive_SERVER_COMMAND(p);
|
case PACKET_SERVER_COMMAND: return this->Receive_SERVER_COMMAND(p);
|
||||||
case PACKET_CLIENT_CHAT: return this->Receive_CLIENT_CHAT(p);
|
case PACKET_CLIENT_CHAT: return this->Receive_CLIENT_CHAT(p);
|
||||||
case PACKET_SERVER_CHAT: return this->Receive_SERVER_CHAT(p);
|
case PACKET_SERVER_CHAT: return this->Receive_SERVER_CHAT(p);
|
||||||
|
case PACKET_SERVER_EXTERNAL_CHAT: return this->Receive_SERVER_EXTERNAL_CHAT(p);
|
||||||
case PACKET_CLIENT_SET_PASSWORD: return this->Receive_CLIENT_SET_PASSWORD(p);
|
case PACKET_CLIENT_SET_PASSWORD: return this->Receive_CLIENT_SET_PASSWORD(p);
|
||||||
case PACKET_CLIENT_SET_NAME: return this->Receive_CLIENT_SET_NAME(p);
|
case PACKET_CLIENT_SET_NAME: return this->Receive_CLIENT_SET_NAME(p);
|
||||||
case PACKET_CLIENT_QUIT: return this->Receive_CLIENT_QUIT(p);
|
case PACKET_CLIENT_QUIT: return this->Receive_CLIENT_QUIT(p);
|
||||||
@@ -180,6 +181,7 @@ NetworkRecvStatus NetworkGameSocketHandler::Receive_CLIENT_COMMAND(Packet *p) {
|
|||||||
NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_COMMAND(Packet *p) { return this->ReceiveInvalidPacket(PACKET_SERVER_COMMAND); }
|
NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_COMMAND(Packet *p) { return this->ReceiveInvalidPacket(PACKET_SERVER_COMMAND); }
|
||||||
NetworkRecvStatus NetworkGameSocketHandler::Receive_CLIENT_CHAT(Packet *p) { return this->ReceiveInvalidPacket(PACKET_CLIENT_CHAT); }
|
NetworkRecvStatus NetworkGameSocketHandler::Receive_CLIENT_CHAT(Packet *p) { return this->ReceiveInvalidPacket(PACKET_CLIENT_CHAT); }
|
||||||
NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_CHAT(Packet *p) { return this->ReceiveInvalidPacket(PACKET_SERVER_CHAT); }
|
NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_CHAT(Packet *p) { return this->ReceiveInvalidPacket(PACKET_SERVER_CHAT); }
|
||||||
|
NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_EXTERNAL_CHAT(Packet *p) { return this->ReceiveInvalidPacket(PACKET_SERVER_EXTERNAL_CHAT); }
|
||||||
NetworkRecvStatus NetworkGameSocketHandler::Receive_CLIENT_SET_PASSWORD(Packet *p) { return this->ReceiveInvalidPacket(PACKET_CLIENT_SET_PASSWORD); }
|
NetworkRecvStatus NetworkGameSocketHandler::Receive_CLIENT_SET_PASSWORD(Packet *p) { return this->ReceiveInvalidPacket(PACKET_CLIENT_SET_PASSWORD); }
|
||||||
NetworkRecvStatus NetworkGameSocketHandler::Receive_CLIENT_SET_NAME(Packet *p) { return this->ReceiveInvalidPacket(PACKET_CLIENT_SET_NAME); }
|
NetworkRecvStatus NetworkGameSocketHandler::Receive_CLIENT_SET_NAME(Packet *p) { return this->ReceiveInvalidPacket(PACKET_CLIENT_SET_NAME); }
|
||||||
NetworkRecvStatus NetworkGameSocketHandler::Receive_CLIENT_QUIT(Packet *p) { return this->ReceiveInvalidPacket(PACKET_CLIENT_QUIT); }
|
NetworkRecvStatus NetworkGameSocketHandler::Receive_CLIENT_QUIT(Packet *p) { return this->ReceiveInvalidPacket(PACKET_CLIENT_QUIT); }
|
||||||
|
|||||||
@@ -99,6 +99,7 @@ enum PacketGameType {
|
|||||||
/* Human communication! */
|
/* Human communication! */
|
||||||
PACKET_CLIENT_CHAT, ///< Client said something that should be distributed.
|
PACKET_CLIENT_CHAT, ///< Client said something that should be distributed.
|
||||||
PACKET_SERVER_CHAT, ///< Server distributing the message of a client (or itself).
|
PACKET_SERVER_CHAT, ///< Server distributing the message of a client (or itself).
|
||||||
|
PACKET_SERVER_EXTERNAL_CHAT, ///< Server distributing the message from external source.
|
||||||
|
|
||||||
/* Remote console. */
|
/* Remote console. */
|
||||||
PACKET_CLIENT_RCON, ///< Client asks the server to execute some command.
|
PACKET_CLIENT_RCON, ///< Client asks the server to execute some command.
|
||||||
@@ -378,6 +379,16 @@ protected:
|
|||||||
*/
|
*/
|
||||||
virtual NetworkRecvStatus Receive_SERVER_CHAT(Packet *p);
|
virtual NetworkRecvStatus Receive_SERVER_CHAT(Packet *p);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sends a chat-packet for external source to the client:
|
||||||
|
* string Name of the source this message came from.
|
||||||
|
* uint16 TextColour to use for the message.
|
||||||
|
* string Name of the user who sent the messsage.
|
||||||
|
* string Message (max NETWORK_CHAT_LENGTH).
|
||||||
|
* @param p The packet that was just received.
|
||||||
|
*/
|
||||||
|
virtual NetworkRecvStatus Receive_SERVER_EXTERNAL_CHAT(Packet *p);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the password for the clients current company:
|
* Set the password for the clients current company:
|
||||||
* string The password.
|
* string The password.
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
#include "../date_func.h"
|
#include "../date_func.h"
|
||||||
#include "network_admin.h"
|
#include "network_admin.h"
|
||||||
#include "network_client.h"
|
#include "network_client.h"
|
||||||
|
#include "network_query.h"
|
||||||
#include "network_server.h"
|
#include "network_server.h"
|
||||||
#include "network_content.h"
|
#include "network_content.h"
|
||||||
#include "network_udp.h"
|
#include "network_udp.h"
|
||||||
@@ -216,7 +217,7 @@ bool NetworkCompanyIsPassworded(CompanyID company_id)
|
|||||||
/* This puts a text-message to the console, or in the future, the chat-box,
|
/* This puts a text-message to the console, or in the future, the chat-box,
|
||||||
* (to keep it all a bit more general)
|
* (to keep it all a bit more general)
|
||||||
* If 'self_send' is true, this is the client who is sending the message */
|
* If 'self_send' is true, this is the client who is sending the message */
|
||||||
void NetworkTextMessage(NetworkAction action, TextColour colour, bool self_send, const std::string &name, const std::string &str, int64 data)
|
void NetworkTextMessage(NetworkAction action, TextColour colour, bool self_send, const std::string &name, const std::string &str, int64 data, const std::string &data_str)
|
||||||
{
|
{
|
||||||
StringID strid;
|
StringID strid;
|
||||||
switch (action) {
|
switch (action) {
|
||||||
@@ -247,6 +248,7 @@ void NetworkTextMessage(NetworkAction action, TextColour colour, bool self_send,
|
|||||||
case NETWORK_ACTION_CHAT_COMPANY: strid = self_send ? STR_NETWORK_CHAT_TO_COMPANY : STR_NETWORK_CHAT_COMPANY; break;
|
case NETWORK_ACTION_CHAT_COMPANY: strid = self_send ? STR_NETWORK_CHAT_TO_COMPANY : STR_NETWORK_CHAT_COMPANY; break;
|
||||||
case NETWORK_ACTION_CHAT_CLIENT: strid = self_send ? STR_NETWORK_CHAT_TO_CLIENT : STR_NETWORK_CHAT_CLIENT; break;
|
case NETWORK_ACTION_CHAT_CLIENT: strid = self_send ? STR_NETWORK_CHAT_TO_CLIENT : STR_NETWORK_CHAT_CLIENT; break;
|
||||||
case NETWORK_ACTION_KICKED: strid = STR_NETWORK_MESSAGE_KICKED; break;
|
case NETWORK_ACTION_KICKED: strid = STR_NETWORK_MESSAGE_KICKED; break;
|
||||||
|
case NETWORK_ACTION_EXTERNAL_CHAT: strid = STR_NETWORK_CHAT_EXTERNAL; break;
|
||||||
default: strid = STR_NETWORK_CHAT_ALL; break;
|
default: strid = STR_NETWORK_CHAT_ALL; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -254,6 +256,7 @@ void NetworkTextMessage(NetworkAction action, TextColour colour, bool self_send,
|
|||||||
SetDParamStr(0, name);
|
SetDParamStr(0, name);
|
||||||
SetDParamStr(1, str);
|
SetDParamStr(1, str);
|
||||||
SetDParam(2, data);
|
SetDParam(2, data);
|
||||||
|
SetDParamStr(3, data_str);
|
||||||
|
|
||||||
/* All of these strings start with "***". These characters are interpreted as both left-to-right and
|
/* All of these strings start with "***". These characters are interpreted as both left-to-right and
|
||||||
* right-to-left characters depending on the context. As the next text might be an user's name, the
|
* right-to-left characters depending on the context. As the next text might be an user's name, the
|
||||||
@@ -264,7 +267,7 @@ void NetworkTextMessage(NetworkAction action, TextColour colour, bool self_send,
|
|||||||
|
|
||||||
Debug(desync, 1, "msg: {:08x}; {:02x}; {}", _date, _date_fract, message);
|
Debug(desync, 1, "msg: {:08x}; {:02x}; {}", _date, _date_fract, message);
|
||||||
IConsolePrint(colour, message);
|
IConsolePrint(colour, message);
|
||||||
NetworkAddChatMessage((TextColour)colour, _settings_client.gui.network_chat_timeout, message);
|
NetworkAddChatMessage(colour, _settings_client.gui.network_chat_timeout, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Calculate the frame-lag of a client */
|
/* Calculate the frame-lag of a client */
|
||||||
@@ -631,16 +634,14 @@ public:
|
|||||||
void OnFailure() override
|
void OnFailure() override
|
||||||
{
|
{
|
||||||
NetworkGameList *item = NetworkGameListAddItem(connection_string);
|
NetworkGameList *item = NetworkGameListAddItem(connection_string);
|
||||||
item->online = false;
|
item->status = NGLS_OFFLINE;
|
||||||
|
|
||||||
UpdateNetworkGameWindow();
|
UpdateNetworkGameWindow();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnConnect(SOCKET s) override
|
void OnConnect(SOCKET s) override
|
||||||
{
|
{
|
||||||
_networking = true;
|
QueryNetworkGameSocketHandler::QueryServer(s, this->connection_string);
|
||||||
new ClientNetworkGameSocketHandler(s, this->connection_string);
|
|
||||||
MyClient::SendInformationQuery();
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -652,8 +653,6 @@ void NetworkQueryServer(const std::string &connection_string)
|
|||||||
{
|
{
|
||||||
if (!_network_available) return;
|
if (!_network_available) return;
|
||||||
|
|
||||||
NetworkInitialize();
|
|
||||||
|
|
||||||
new TCPQueryConnecter(connection_string);
|
new TCPQueryConnecter(connection_string);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1020,6 +1019,7 @@ void NetworkBackgroundLoop()
|
|||||||
_network_coordinator_client.SendReceive();
|
_network_coordinator_client.SendReceive();
|
||||||
TCPConnecter::CheckCallbacks();
|
TCPConnecter::CheckCallbacks();
|
||||||
NetworkHTTPSocketHandler::HTTPReceive();
|
NetworkHTTPSocketHandler::HTTPReceive();
|
||||||
|
QueryNetworkGameSocketHandler::SendReceive();
|
||||||
|
|
||||||
NetworkBackgroundUDPLoop();
|
NetworkBackgroundUDPLoop();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,6 +76,11 @@ ServerNetworkAdminSocketHandler::~ServerNetworkAdminSocketHandler()
|
|||||||
_network_admins_connected--;
|
_network_admins_connected--;
|
||||||
Debug(net, 3, "[admin] '{}' ({}) has disconnected", this->admin_name, this->admin_version);
|
Debug(net, 3, "[admin] '{}' ({}) has disconnected", this->admin_name, this->admin_version);
|
||||||
if (_redirect_console_to_admin == this->index) _redirect_console_to_admin = INVALID_ADMIN_ID;
|
if (_redirect_console_to_admin == this->index) _redirect_console_to_admin = INVALID_ADMIN_ID;
|
||||||
|
|
||||||
|
if (this->update_frequency[ADMIN_UPDATE_CONSOLE] & ADMIN_FREQUENCY_AUTOMATIC) {
|
||||||
|
this->update_frequency[ADMIN_UPDATE_CONSOLE] = (AdminUpdateFrequency)0;
|
||||||
|
DebugReconsiderSendRemoteMessages();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -594,7 +599,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCmdNames()
|
|||||||
/* Should COMPAT_MTU be exceeded, start a new packet
|
/* Should COMPAT_MTU be exceeded, start a new packet
|
||||||
* (magic 5: 1 bool "more data" and one uint16 "command id", one
|
* (magic 5: 1 bool "more data" and one uint16 "command id", one
|
||||||
* byte for string '\0' termination and 1 bool "no more data" */
|
* byte for string '\0' termination and 1 bool "no more data" */
|
||||||
if (p->CanWriteToPacket(strlen(cmdname) + 5)) {
|
if (!p->CanWriteToPacket(strlen(cmdname) + 5)) {
|
||||||
p->Send_bool(false);
|
p->Send_bool(false);
|
||||||
this->SendPacket(p);
|
this->SendPacket(p);
|
||||||
|
|
||||||
@@ -688,6 +693,8 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::Receive_ADMIN_UPDATE_FREQUENC
|
|||||||
|
|
||||||
this->update_frequency[type] = freq;
|
this->update_frequency[type] = freq;
|
||||||
|
|
||||||
|
if (type == ADMIN_UPDATE_CONSOLE) DebugReconsiderSendRemoteMessages();
|
||||||
|
|
||||||
return NETWORK_RECV_STATUS_OKAY;
|
return NETWORK_RECV_STATUS_OKAY;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -783,6 +790,25 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::Receive_ADMIN_CHAT(Packet *p)
|
|||||||
return NETWORK_RECV_STATUS_OKAY;
|
return NETWORK_RECV_STATUS_OKAY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NetworkRecvStatus ServerNetworkAdminSocketHandler::Receive_ADMIN_EXTERNAL_CHAT(Packet *p)
|
||||||
|
{
|
||||||
|
if (this->status == ADMIN_STATUS_INACTIVE) return this->SendError(NETWORK_ERROR_NOT_EXPECTED);
|
||||||
|
|
||||||
|
std::string source = p->Recv_string(NETWORK_CHAT_LENGTH);
|
||||||
|
TextColour colour = (TextColour)p->Recv_uint16();
|
||||||
|
std::string user = p->Recv_string(NETWORK_CHAT_LENGTH);
|
||||||
|
std::string msg = p->Recv_string(NETWORK_CHAT_LENGTH);
|
||||||
|
|
||||||
|
if (!IsValidConsoleColour(colour)) {
|
||||||
|
Debug(net, 1, "[admin] Not supported chat colour {} ({}, {}, {}) from '{}' ({}).", (uint16)colour, source, user, msg, this->admin_name, this->admin_version);
|
||||||
|
return this->SendError(NETWORK_ERROR_ILLEGAL_PACKET);
|
||||||
|
}
|
||||||
|
|
||||||
|
NetworkServerSendExternalChat(source, colour, user, msg);
|
||||||
|
|
||||||
|
return NETWORK_RECV_STATUS_OKAY;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Useful wrapper functions
|
* Useful wrapper functions
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ protected:
|
|||||||
NetworkRecvStatus Receive_ADMIN_UPDATE_FREQUENCY(Packet *p) override;
|
NetworkRecvStatus Receive_ADMIN_UPDATE_FREQUENCY(Packet *p) override;
|
||||||
NetworkRecvStatus Receive_ADMIN_POLL(Packet *p) override;
|
NetworkRecvStatus Receive_ADMIN_POLL(Packet *p) override;
|
||||||
NetworkRecvStatus Receive_ADMIN_CHAT(Packet *p) override;
|
NetworkRecvStatus Receive_ADMIN_CHAT(Packet *p) override;
|
||||||
|
NetworkRecvStatus Receive_ADMIN_EXTERNAL_CHAT(Packet *p) override;
|
||||||
NetworkRecvStatus Receive_ADMIN_RCON(Packet *p) override;
|
NetworkRecvStatus Receive_ADMIN_RCON(Packet *p) override;
|
||||||
NetworkRecvStatus Receive_ADMIN_GAMESCRIPT(Packet *p) override;
|
NetworkRecvStatus Receive_ADMIN_GAMESCRIPT(Packet *p) override;
|
||||||
NetworkRecvStatus Receive_ADMIN_PING(Packet *p) override;
|
NetworkRecvStatus Receive_ADMIN_PING(Packet *p) override;
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user