@ -383,7 +383,7 @@ Both 'stable' and 'nightly' versions are available for download:
- most people should choose the 'stable' version, as this has been more extensively tested
- the 'nightly' version includes the latest changes and features, but may sometimes be less reliable
On some platforms OpenTTD will also be available via your OS package manager or a similar service.
OpenTTD is also available for free on [Steam](https://store.steampowered.com/app/1536610/OpenTTD/), [GOG.com](https://www.gog.com/game/openttd), and the [Microsoft Store](https://www.microsoft.com/p/openttd-official/9ncjg5rvrr1c). On some platforms OpenTTD will be available via your OS package manager or a similar service.
@ -1243,6 +1243,7 @@ STR_CONFIG_SETTING_TYPE_GAME_MENU :Nastavení hry
STR_CONFIG_SETTING_TYPE_GAME_INGAME :Nastavení hry (uchováno v uložené hře; ovlivní pouze stávající hru)
STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Nastavení společnosti (uchováno v uložených hrách; ovlivní pouze nové hry)
STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Nastavení společnosti (uchováno v uložené hře; ovlivní pouze stávající společnost)
STR_CONFIG_SETTING_RESET_ALL_CONFIRMATION_DIALOG_TEXT :{WHITE}Tato akce resetuje všechna nastavení hry na výchozí hodnoty.{}Jste si jistý, že chcete pokračovat?
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Fügt einen Server zu der Liste von Servern hinzu, die immer nach laufenden Spielen kontrolliert werden
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Fügt einen Server zur Liste hinzu. Dies kann entweder eine Serveradresse oder ein Einladungscode ein
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Server starten
STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Einen eigenen Server starten
STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Bitte eigenen Namen eingeben
STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}IP-Adresse des Servers eingeben
STR_NETWORK_SERVER_LIST_ENTER_SERVER_ADDRESS :{BLACK}Serveradresse oder Einladungscode eingeben
STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :सक्षम होने पर वाहनों के निर्देशों की आवधिक जाँच की जाती है, और कुछ सुस्पष्ट मामलों को पता चलते ही एक संदेश द्वारा बताया जाता है।
STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :सक्षम होने पर वाहनों के निर्देशों की आवधिक जाँच की जाती है, और कुछ सुस्पष्ट मामलों का पता चलते ही एक संदेश द्वारा बताया जाता है।
STR_CONFIG_SETTING_ORDER_REVIEW_OFF :नहीं
STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :एक स्टेशन के हिस्सों के विस्तार हेतु अधिकतम क्षेत्र निर्धारित करें। ऊंची संख्या खेल को धीमा कर सकती है।
STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}खोजी गयी सामग्री OpenTTD की सामग्री सेवा में उपलब्ध नहीं है, आप OpenTTD से असंबद्ध वेबसाइटों पर खोज सकते हैं
STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}यह आपके पास पहले से मौजूद है
STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}यह सामग्री अज्ञात है और इसे ओपनटीटीडी में प्राप्त नहीं किया जा सकता है
# Order of these is important!
# Content downloading progress window
STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}डाउनलोड पूरा हुआ
STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :लघु विज्ञापन अभियान
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}नगरों के सड़क तंत्र के पुनर्निर्माण में निवेश करें।{}इससे अधिकतम ६ महीने तक यातायात में बहुत विघ्न पड़ता है।{}मूल्य : {CURRENCY_LONG}
@ -2063,7 +2063,7 @@ STR_CONFIG_SETTING_DISTRIBUTION_PAX :승객에 대
STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"대칭"은 A역에서 B역으로 가려는 승객의 수가 B에서 A로 가려는 승객의 수와 비슷하다는 뜻입니다. "비대칭"은 승객이 아무 방향이나 임의의 양만큼 가게 됨을 뜻합니다. "수동"은 자동적인 승객 분배가 일어나지 않고 기존 방식을 사용하겠음을 뜻합니다.
STR_CONFIG_SETTING_DISTRIBUTION_MAIL :우편에 대한 분배 형식: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"대칭"은 A역에서 B역으로 가려는 우편물의 수가 B에서 A로 가려는 우편물의 수와 비슷하다는 뜻입니다. "비대칭"은 우편물이 아무 방향이나 임의의 양만큼 가게 됨을 뜻합니다. "수동"은 자동적인 우편물 분배가 일어나지 않고 기존 방식을 사용하겠음을 뜻합니다.
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :장갑 화물에 대한 분배 형식: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :귀금속 화물에 대한 분배 형식: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :장갑 화물은 온대 기후의 귀금속, 아열대 기후의 다이아몬드 또는 아한대 기후의 금을 말합니다. NewGRF을 사용하면 달라질 수 있습니다. "대칭"은 A역에서 B역으로 가려는 화물의 수가 B에서 A로 가려는 화물의 수와 비슷하다는 뜻입니다. "비대칭"은 화물이 아무 방향이나 임의의 양만큼 가게 됨을 뜻합니다. "수동"은 자동적인 화물 분배가 일어나지 않고 기존 방식을 사용하겠음을 뜻합니다. 아한대 기후에서는 대칭으로 설정하면 은행이 금광으로 금을 보내지 않으려 하기 때문에 비대칭이나 수동으로 설정하는 것을 추천합니다. 온대 기후나 아열대 기후에서는 은행이 일부 적재한 귀금속을 원래 은행으로 보내려고 하기 때문에 대칭을 선택해도 됩니다.
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :다른 화물에 대한 분배 형식: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"비대칭"은 화물이 아무 방향이나 임의의 양만큼 가게 됨을 뜻합니다. "수동"은 자동적인 화물 분배가 일어나지 않고 기존 방식을 사용하겠음을 뜻합니다. 특별한 이유가 없는 한, "비대칭"이나 "수동"으로 설정하십시오.
STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}¡{STRING} patrocina la creación del nuevo pueblo de {TOWN}!
STR_NEWS_NEW_TOWN_UNSPONSORED :{BLACK}{BIG_FONT}¡El nuevo pueblo de {TOWN} ha sido formado!
STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}¡{STRING} patrocinó la creación de la nueva localidad de {TOWN}!
STR_NEWS_NEW_TOWN_UNSPONSORED :{BLACK}{BIG_FONT}¡La nueva localidad de {TOWN} ha sido formada!
STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}¡Nuev{G o a} {STRING} en construcción cerca de {TOWN}!
STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}¡Nuev{G o a} {STRING} fundad{G o a} cerca de {TOWN}!
STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}¡La industria {STRING} anuncia su inminente cierre!
STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}¡Problemas con suministros provocan que {STRING} anuncie su inminente cierre!
STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}¡La falta de abastecimiento provoca que {STRING} anuncie su inminente cierre!
STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}¡La falta de árboles hace que {STRING} anuncie su inminente cierre!
STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}¡Unión Monetaria Europea!{}{}¡El Euro es introducido como la nueva moneda oficial de todas las transacciones!
@ -961,7 +961,7 @@ STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Manejar por la
STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Manejar por la derecha
STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Nombres de pueblos:
STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Elegir el estilo de nombres para pueblos
STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Elegir el estilo de nombres para las localidades
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Permitir la construcción de paradas intermedias sobre carreteras en pueblos: {STRING}
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Construir paradas de autobuses intermedias en carreteras que sean propiedad de los pueblos
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Permitir la construcción de paradas intermedias en localidades: {STRING}
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Permitir la construcción de paradas intermedias en carreteras propiedad de las localidades
STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Permitir la construcción de paradas intermedias sobre carreteras de la competencia: {STRING}
STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Construir paradas de autobuses intermedias en carreteras que sean propiedad de otras empresas
STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}No se puede cambiar esta opción si ya existen vehículos
@ -1373,7 +1373,7 @@ STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Número de indu
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Distancia máxima de industrias petrolíferas al borde del mapa: {STRING}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Distancia límite desde el borde del mapa a partir del cual se pueden construir refinerías y plataformas de petróleo. En mapas con forma de isla esto garantiza que se ubiquen cerca de la costa. En mapas de más de 256 casillas el valor se amplía.
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Nivel de inicio de nieve: {STRING}
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Controlar la altura donde la nieve empieza en mapas de clima Subártico, lo cual afectará la generación de industrias y los requisitos de crecimiento de pueblos. Este valor se puede cambiar en el Editor de mapas o se calculará según la "Extensión de nieve"
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Controlar la altura al que empieza la nieve en geografía de Subártico, lo cual afectará la generación de industrias y los requisitos de crecimiento de localidades. Solo puede cambiarse en el Editor de mapas, si no, se calculará según la "Extensión de nieve"
STR_CONFIG_SETTING_SNOW_COVERAGE :Extensión de nieve: {STRING}
STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Controlar la cantidad aproximada de nieve al generar un mapa de geografía de Subártico, la cual afectará la generación de industrias y los requisitos de crecimiento de las localidades. La superficie casi al ras del nivel del mar nunca tiene nieve
STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Número máximo de barcos que una empresa puede tener
STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Desactivar trenes para la computadora: {STRING}
STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Activar esta opción para deshabilitar la construcción de trenes por jugadores no humanos
STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Activar esta opción deshabilita la construcción de trenes por jugadores no humanos
STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Desactivar vehículos de carretera para la computadora: {STRING}
STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Activar esta opción deshabilita la construcción de vehículos de carretera por jugadores no humanos
STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Desactivar aeroplanos para la computadora: {STRING}
@ -1643,8 +1643,8 @@ STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Solo señales d
STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Solo señales de ruta
STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Todas
STR_CONFIG_SETTING_TOWN_LAYOUT :Diseño urbano para los nuevos pueblos: {STRING}
STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Diseño de carreteras y calles para las redes de transporte en los pueblos
STR_CONFIG_SETTING_TOWN_LAYOUT :Diseño urbano para nuevas localidades: {STRING}
STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Diseño de carreteras dentro de las localidades
STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :Rejilla de 2×2
@ -1656,8 +1656,8 @@ STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Permitir a las
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Activar esta opción permite a las localidades construir pasos a nivel
STR_CONFIG_SETTING_NOISE_LEVEL :Permitir el ruido de aeropuertos controlado por localidades: {STRING}
STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Al desactivarse, puede haber hasta dos aeropuertos por localidad. Al activarse, el número de aeropuertos por localidad depende de su nivel de ruido permitido, el cual depende de la población, el tamaño de cada aeropuerto y la distancia
@ -2471,7 +2489,7 @@ STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Señal d
STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Señal combo (eléctrica){}Hace lo mismo que las señales de entrada y de salida, lo que permite construir amplios "árboles" de señales condicionales
STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Señal de ruta (eléctrica){}Permite a más de un tren entrar al mismo tiempo en un tramo de vía con señales, en tanto que el tren pueda reservar una ruta hasta un lugar seguro. Puede ser pasada por detrás
STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Señal de ruta de un sentido (eléctrica){}Igual que una señal de ruta pero no puede ser pasada por detrás
STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Conversión de señal{}Activar para pulsar sobre una señal existente y convertirla en el tipo y variante elegidos. Ctrl+Clic permite cambiar entre variantes de señales. Mayús+Clic muestra una estimación del precio de conversión
STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Conversión de señal{}Activar para pulsar sobre una señal existente y convertirla en el tipo y variante elegidos. Ctrl+Clic permite cambiar entre variantes de señales. Mayús+Clic muestra un precio estimado
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Distancia entre señales
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Reducir distancia entre señales
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Aumentar distancia entre señales
@ -2583,13 +2601,13 @@ STR_STATION_BUILD_NOISE :{BLACK}Ruido ge
# Landscaping toolbar
STR_LANDSCAPING_TOOLBAR :{WHITE}Modificación de terreno
STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Disminuir una esquina del terreno. Al arrastrar el ratón se reduce la primera esquina elegida y se nivela el resto del terreno seleccionado a dicha altura. Ctrl para seleccionar un área en diagonal.
STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Elevar una esquina del terreno. Al arrastrar el ratón se eleva la primera esquina elegida y se nivela el resto del terreno seleccionado a dicha altura. Ctrl para seleccionar un área en diagonal. Mayús muestra una estimación del precio
STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Nivela un área de terreno a la altura de la primera esquina seleccionada. Ctrl para seleccionar un área en diagonal. Mayús muestra una estimación del precio
STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Comprar terreno para usos futuros. Mayús muestra una estimación del precio
STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Elevar una esquina del terreno. Al arrastrar el ratón se eleva la primera esquina elegida y se nivela el resto del terreno seleccionado a dicha altura. Ctrl para seleccionar un área en diagonal. Mayús muestra un precio estimado
STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Nivelar un área de terreno a la altura de la primera esquina seleccionada. Ctrl para seleccionar un área en diagonal. Mayús muestra un precio estimado
STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Comprar terreno para usos futuros. Mayús muestra un precio estimado
# Object construction window
STR_OBJECT_BUILD_CAPTION :{WHITE}Selección de objeto
STR_OBJECT_BUILD_TOOLTIP :{BLACK}Elegir una estructura u objeto a construir. Mayús muestra una estimación del precio
STR_OBJECT_BUILD_TOOLTIP :{BLACK}Elegir una estructura u objeto a construir. Mayús muestra un precio estimado
STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Elegir el tipo de objeto o estructura a construir
STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Vista previa del objeto
STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Elegir el tamaño del pueblo
STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Elegir el tamaño dela localidad
STR_FOUND_TOWN_CITY :{BLACK}Ciudad
STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Las ciudades crecen más rápido que los pueblos{}Según la configuración del juego, al ser creadas tendrán mayor población
STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Las ciudades crecen más rápido que las localidades{}Según la configuración del juego, al ser creadas son más grandes
STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Elegir el tamaño del mapa en número de casillas. El número real de casillas disponibles en el mapa será ligeramente inferior
STR_MAPGEN_BY :{BLACK}×
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Núm. de pueblos:
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Núm. de localidades:
STR_MAPGEN_DATE :{BLACK}Fecha:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Núm. de industrias:
STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}Cima más alta:
@ -3183,7 +3201,7 @@ STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Ir al ca
STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Indicar un nombre para el cartel
STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Lista de acciones que pueden llevarse a cabo en este pueblo. Clic en un elemento de la lista para obtener más detalles
STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Acciones que pueden realizarse en esta localidad. Clic muestra más detalles
STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Realizar
STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Llevar a cabo la acción elegida de la lista
@ -3237,9 +3255,9 @@ STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Pagar la constr
STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Comprar los derechos exclusivos de transporte
STR_LOCAL_AUTHORITY_ACTION_BRIBE :Sobornar al ayuntamiento
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Iniciar una pequeña campaña publicitaria local para atraer más pasajeros y cargamento a tus servicios de transporte.{}Otorga un aumento temporal a la evaluación de estaciones en un radio pequeño alrededor del centro del pueblo.{}Costo: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Iniciar una campaña publicitaria local mediana para atraer más pasajeros y cargamento a tus servicios de transporte.{}Otorga un aumento temporal a la evaluación de estaciones en un radio mediano alrededor del centro del pueblo.{}Costo: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Iniciar una gran campaña publicitaria local para atraer más pasajeros y cargamento a tus servicios de transporte.{}Otorga un aumento temporal a la evaluación de estaciones en un radio grande alrededor del centro del pueblo.{}Costo: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Iniciar una pequeña campaña publicitaria local para atraer más pasajeros y carga a tus servicios de transporte.{}Otorga un aumento temporal a la evaluación de estaciones en un radio pequeño alrededor del centro dela localidad.{}Costo: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Iniciar una campaña publicitaria local mediana para atraer más pasajeros y carga a tus servicios de transporte.{}Otorga un aumento temporal a la evaluación de estaciones en un radio mediano alrededor del centro dela localidad.{}Costo: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Iniciar una gran campaña publicitaria local para atraer más pasajeros y carga a tus servicios de transporte.{}Otorga un aumento temporal a la evaluación de estaciones en un radio grande alrededor del centro dela localidad.{}Costo: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Pagar la reconstrucción de las carreteras locales.{}Provoca considerables complicaciones al tráfico hasta por 6 meses.{}Costo: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Construir una estatua en honor a tu empresa.{}Otorga un aumento permanente a la evaluación estaciones en este pueblo.{}Costo: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Pagar la construcción de nuevos edificios comerciales en el pueblo.{}Otorga un aumento temporal a su crecimiento.{}Costo: {CURRENCY_LONG}
STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Ver edificio de las oficinas centrales de la empresa
STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Reubicar sede
STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Reubicar la sede de la empresa a cualquier otro lugar con el costo del 1% del valor total de la empresa. Mayús+Clic muestra una estimación del precio sin mover la sede
STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Reubicar la sede de la empresa pagando el 1% del valor total de la empresa. Mayús+Clic muestra un precio estimado sin reubicar la sede
STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Comprar un 25% de las acciones
STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Vender 25% de las acciones
STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Comprar 25% de las acciones de esta empresa. Mayús+Clic muestra una estimación del precio sin comprar ninguna acción
STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Vender 25% de las acciones de esta empresa. Mayús+Clic muestra una estimación del beneficio sin vender ninguna acción
STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Comprar 25% de las acciones de esta empresa. Mayús+Clic muestra un precio estimado sin comprar nada
STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Vender 25% de las acciones de esta empresa. Mayús+Clic muestra el ingreso estimado sin vender ninguna acción
STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Nombre de la empresa
STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Nombre del presidente
STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Comprar y reformar barco
STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Comprar y reformar aeronave
STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Comprar el tren elegido. Mayús+Clic muestra una estimación del precio sin realizar la compra
STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Comprar el vehículo de carretera elegido. Mayús+Clic muestra una estimación del precio sin realizar la compra
STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Comprar el barco elegido. Mayús+Clic muestra una estimación del precio sin realizar la compra
STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Comprar la aeronave elegida. Mayús+Clic muestra una estimación del precio sin realizar la compra
STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Comprar el tren elegido. Mayús+Clic muestra un precio estimado sin comprar nada
STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Comprar el vehículo de carretera elegido. Mayús+Clic muestra un precio estimado sin comprar nada
STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Comprar el barco elegido. Mayús+Clic muestra un precio estimado sin comprar nada
STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Comprar la aeronave elegida. Mayús+Clic muestra un precio estimado sin comprar nada
STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Comprar y reformar tren seleccionado. Mayús+Clic muestra una estimación del precio sin realizar la compra
STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Comprar y reformar vehículo seleccionado. Mayús+Clic muestra una estimación del precio sin realizar la compra
STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Comprar y reformar barco seleccionado. Mayús+Clic muestra una estimación del precio sin realizar la compra
STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Comprar y reformar areonave seleccionada. Mayús+Clic muestra una estimación del precio sin realizar la compra
STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Comprar y reformar el tren elegido. Mayús+Clic muestra un precio estimado sin comprar nada
STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Comprar y reformar el vehículo de carretera elegido. Mayús+Clic muestra un precio estimado sin comprar nada
STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Comprar y reformar el barco elegido. Mayús+Clic muestra un precio estimado sin comprar nada
STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Comprar y reformar la areonave seleccionada. Mayús+Clic muestra un precio estimado sin realizar la compra
STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Cambiar nombre
STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Cambiar nombre
STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Esto comprará una copia idéntica del tren,incluyendo todos sus vagones y carros. Clic en este botón y después en el tren a copiar. Ctrl+Clic para compartir las órdenes. Mayús+Clic muestra una estimación del precio sin realizar la compra
STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Esto comprará una copia idéntica del vehículo de carretera. Clic en este botón y después en el vehículo a copiar. Ctrl+Clic para compartir las órdenes. Mayús+Clic muestra una estimación del precio sin realizar la compra
STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Esto comprará una copia idéntica del barco. Clic en este botón y después en el barco a copiar. Ctrl+Clic para compartir las órdenes. Mayús+Clic muestra una estimación del precio sin realizar la compra
STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Esto comprará una copia idéntica de la aeronave. Clic en este botón y después en la aeronave a copiar. Ctrl+Clic para compartir las órdenes. Mayús+Clic muestra una estimación del precio sin realizar la compra
STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Esto comprará una copia del tren y sus vagones. Clic en este botón y después en el tren a copiar. Ctrl+Clic para compartir las órdenes. Mayús+Clic muestra un precio estimado sin comprar nada
STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Esto comprará una copia del vehículo de carretera. Clic en este botón y después en el vehículo a copiar. Ctrl+Clic para compartir las órdenes. Mayús+Clic muestra un precio estimado sin comprar nada
STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Esto comprará una copia del barco. Clic en este botón y después en el barco a copiar. Ctrl+Clic para compartir las órdenes. Mayús+Clic muestra un precio estimado sin comprar nada
STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Esto comprará una copia de la aeronave. Clic en este botón y después en la aeronave a copiar. Ctrl+Clic para compartir las órdenes. Mayús+Clic muestra un precio estimado sin comprar nada
STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centrar la vista en el depósito de trenes. Ctrl+Clic abre una vista aparte
STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centrar la vista en el depósito de vehículos. Ctrl+Clic abre una vista aparte
STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}El ayuntamiento de {TOWN} se opone a esta acción
STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}El ayuntamiento de {TOWN} se opone a la construcción de otro aeropuerto en este pueblo
STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}El ayuntamiento de {TOWN} se opone a la construcción de otro aeropuerto en esta localidad
STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}El ayuntamiento de {TOWN} se opone a otorgar permiso para la construcción del aeropuerto debido a cuestiones de ruido
STR_ERROR_BRIBE_FAILED :{WHITE}El intento de soborno ha sido descubierto por un investigador de la zona
@ -4439,18 +4457,18 @@ STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}No se pu
STR_ERROR_PROTECTED :{WHITE}Esta empresa es muy reciente para comerciar con acciones...
# Town related errors
STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}No se puede crear ningún pueblo
STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}No se puede cambiar nombre del pueblo...
STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}No se puede crear pueblo aquí...
STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}No se puede expandir el pueblo...
STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}No se puede crear ninguna localidad
STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}No se puede cambiar nombre dela localidad...
STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}No se puede crear localidad aquí...
STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}No se puede expandir la localidad...
STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... demasiado cerca del borde del mapa
STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... demasiado cerca de otro pueblo
STR_ERROR_TOO_MANY_TOWNS :{WHITE}... demasiados pueblos
STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... demasiado cerca de otra localidad
STR_ERROR_TOO_MANY_TOWNS :{WHITE}... demasiadas localidades
STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... ya no hay espacio en el mapa
STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}El pueblo no construirá carreteras. La función de construcción de carreteras puede activarse en Configuración->Ambiente->Pueblos
STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}La localidad no construirá carreteras. Se puede activar esta función en Configuración->Ambiente->Localidades
STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Obras de carretera en progreso
STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}No se puede eliminar este pueblo...{}Aún tiene estaciones o depósitos vinculados, o una casilla en su jurisdicción no se puede quitar
STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... no hay ningún lugar apto para una estatua en el centro de este pueblo
STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}No se puede eliminar esta localidad...{}Aún tiene una estación o depósito, o una de sus casillas no se puede quitar
STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... no hay lugar apto para una estatua en el centro de esta localidad
STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Lời đề nghị trợ cấp đã hết hạn:{}{}{STRING} từ {STRING} đến {STRING} bây giờ sẽ không có trợ cấp.
STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Trợ cấp đã hết:{}{}Dịch vụ vận chuyển {STRING} từ {STRING} đến {STRING} sẽ không được trợ cấp nữa.
STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Đề nghị trợ cấp:{}{}Dịch vụ vận tải {STRING} đầu tiên từ {STRING} đến {STRING} sẽ nhận được tiền trợ cấp trong {NUM} năm của chính quyền địa phương!
STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Trợ cấp dịch vụ được trao cho {STRING}!{}{}Dịch vụ {STRING} từ {STRING} đến {STRING} sẽ thu lợi cao hơn 50% trong vòng {NUM} năm tới!
STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Trợ cấp dịch vụ được trao cho {STRING}!{}{}Dịch vụ {STRING} từ {STRING} đến {STRING} sẽ thu lợi gấp đôi trong vòng {NUM} năm tới!
STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Trợ cấp dịch vụ được trao cho {STRING}!{}{}Dịch vụ {STRING} từ {STRING} đến {STRING} sẽ thu lợi gấp ba trong vòng {NUM} năm tới!
STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Trợ cấp dịch vụ được trao cho {STRING}!{}{}Dịch vụ {STRING} từ {STRING} đến {STRING} sẽ thu lợi gấp tư trong vòng {NUM} năm tới!
STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Giao thông hỗn loạn tại {TOWN}!{}{}Chương trình sửa đường đầu tư bởi {STRING} mang 6 tháng khốn đốn cho người chạy mô tô!
STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Độc quyền vận tải!
STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Lái bên trái
STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Lái bên phải
STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Tên thị trấn
STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Tên thị trấn:
STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Lựa chọn kiểu tên thị trấn
############ start of townname region
@ -994,6 +999,7 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Hàng năm
STR_GAME_OPTIONS_LANGUAGE :{BLACK}Ngôn ngữ
STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Lựa chọn sử dụng ngôn ngữ giao diện
STR_GAME_OPTIONS_LANGUAGE_PERCENTAGE :{STRING} (hoàn thành {NUM}%)
STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Toàn màn hình
STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Đánh dấu vào ô này để chơi OpenTTD ở chế độ fullscreen
@ -1007,6 +1013,8 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Tăng t
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Đánh dấu vào ô này để cho phép OpenTTD thử sử dụng tăng tốc phần cứng. Sẽ có tác dụng sau khi khởi động lại trò chơi
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}Thiết lập chỉ có tác dụng sau khi khởi động lại trò chơi
STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}VSync
STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Đánh dấu vào ô này để bật tính năng v-sync cho màn hình. Sẽ có tác dụng sau khi khởi động lại trò chơi. Chỉ có thể hoạt động khi tăng tốc phần cứng được bật
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Kích thước giao diện
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Chọn kích thước của các đối tượng trên giao diện
@ -1201,6 +1209,10 @@ STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Mức hỏng h
STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Thiết lập mức độ hỏng hóc đối với phương tiện không bảo trì thường xuyên
STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Tỉ lệ chi trả: {STRING}
STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Thiết lập mức chi trả cho tuyến vận chuyển phụ trợ
@ -1654,7 +1666,7 @@ STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :Tỉ lệ bình
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Tuyến tính
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Trồng cây trong trò chơi: {STRING}
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Điều khiển sự xuất hiện tự dộng của cây cối khi đang chơi. Điều này có thể ảnh hưởng đến những nhà máy dựa vào cây cối, ví dự như nhà máy chế biến gỗgỗ
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Điều khiển sự xuất hiện tự dộng của cây cối khi đang chơi. Điều này có thể ảnh hưởng đến những nhà máy dựa vào cây cối, ví dự như nhà máy chế biến gỗ
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_SPREAD :Mọc nhưng không trải {RED}(nhà máy chế biến gỗ sẽ không hoạt động)
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_RAINFOREST :Mọc nhưng chỉ trải ở rừng nhiệt đới
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_ALL :Mọc và trải mọi nơi
@ -1832,7 +1844,7 @@ STR_INTRO_LOAD_GAME :{BLACK}Nạp V
STR_INTRO_PLAY_SCENARIO :{BLACK}Chơi Màn Chơi Kịch Bản
STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Chơi Bản Đồ Địa Hình
STR_INTRO_SCENARIO_EDITOR :{BLACK}Biên Tập Màn Chơi Kịch Bản
STR_INTRO_MULTIPLAYER :{BLACK}Chơi Trên Mạng
STR_INTRO_MULTIPLAYER :{BLACK}Nhiều Người Chơi
STR_INTRO_GAME_OPTIONS :{BLACK}Cấu Hình Trò Chơi
STR_INTRO_HIGHSCORE :{BLACK}Bảng điểm chơi cao nhất
STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} sẽ không hoạt động với phiên bản TTDPatch version theo như báo cáo của OpenTTD.
STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} để dành cho phiên bản {STRING} của TTD.
STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} được thiết kế để xài với {STRING}
@ -3521,7 +3579,7 @@ STR_GROUP_CREATE_TOOLTIP :{BLACK}Ấn và
STR_GROUP_DELETE_TOOLTIP :{BLACK}Xoá nhóm đã chọn
STR_GROUP_RENAME_TOOLTIP :{BLACK}Đổi tên nhóm
STR_GROUP_LIVERY_TOOLTIP :{BLACK}Thay đổi phục trang cho nhóm được chọn
STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Không để nhóm này tự thay thế (thiết lập chung) khi hết hạn
STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Không để nhóm này tự thay thế (thiết lập chung) khi hết hạn. Ctrl+Click để áp dụng lên nhóm con.
STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Xóa Nhóm
STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Bạn có chắc chắn muốn xóa nhóm này và tất cả con của nó?
@ -3774,7 +3832,9 @@ STR_REPLACE_MAGLEV_VEHICLES :Đầu máy đ
STR_REPLACE_ROAD_VEHICLES :Các xe ô-tô
STR_REPLACE_TRAM_VEHICLES :Các xe điện
STR_REPLACE_REMOVE_WAGON :{BLACK}Xoá bỏ toa xe ({STRING}): {ORANGE}{STRING}
STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Tự động thay thế sẽ giữ nguyên độ dài đoàn tàu bằng cách bỏ bớt toa xe (bỏ từ phía đầu), nếu như việc thay thế đầu máy làm đoàn tàu dài hơn.
STR_REPLACE_REMOVE_WAGON_GROUP_HELP :{STRING}. Ctrl+Click để áp dụng cho nhóm con
@ -46,42 +44,56 @@ static const uint16 UDP_MTU_SHORT = 1400; ///< Number of
*Send_uint16(GB(size,16,14)|0b10<<14)
*Send_uint16(GB(size,0,16))
*/
staticconstuint16TCP_MTU=32767;///< Number of bytes we can pack in a single TCP packet
staticconstuint16COMPAT_MTU=1460;///< Number of bytes we can pack in a single packet for backward compatibility
staticconstuint16TCP_MTU=32767;///< Number of bytes we can pack in a single TCP packet
staticconstuint16COMPAT_MTU=1460;///< Number of bytes we can pack in a single packet for backward compatibility
staticconstbyteNETWORK_GAME_ADMIN_VERSION=1;///< What version of the admin network do we use?
staticconstbyteNETWORK_GAME_INFO_VERSION=4;///< What version of game-info do we use?
staticconstbyteNETWORK_COMPANY_INFO_VERSION=6;///< What version of company info is this?
staticconstbyteNETWORK_MASTER_SERVER_VERSION =2;///< What version of master-server-protocol do we use?
staticconstbyteNETWORK_GAME_ADMIN_VERSION=1;///< What version of the admin network do we use?
staticconstbyteNETWORK_GAME_INFO_VERSION=5;///< What version of game-info do we use?
staticconstbyteNETWORK_COMPANY_INFO_VERSION=6;///< What version of company info is this?
staticconstbyteNETWORK_COORDINATOR_VERSION =3;///< What version of game-coordinator-protocol do we use?
staticconstuintNETWORK_NAME_LENGTH=80;///< The maximum length of the server name and map name, in bytes including '\0'
staticconstuintNETWORK_COMPANY_NAME_LENGTH=128;///< The maximum length of the company name, in bytes including '\0'
staticconstuintNETWORK_HOSTNAME_LENGTH=80;///< The maximum length of the host name, in bytes including '\0'
staticconstuintNETWORK_HOSTNAME_PORT_LENGTH=80+6;///< The maximum length of the host name + port, in bytes including '\0'. The extra six is ":" + port number (with a max of 65536)
staticconstuintNETWORK_SERVER_ID_LENGTH=33;///< The maximum length of the network id of the servers, in bytes including '\0'
staticconstuintNETWORK_REVISION_LENGTH=33;///< The maximum length of the revision, in bytes including '\0'
staticconstuintNETWORK_LONG_REVISION_LENGTH=64;///< The maximum length of the revision, in bytes including '\0'
staticconstuintNETWORK_PASSWORD_LENGTH=33;///< The maximum length of the password, in bytes including '\0' (must be >= NETWORK_SERVER_ID_LENGTH)
staticconstuintNETWORK_CLIENTS_LENGTH=200;///< The maximum length for the list of clients that controls a company, in bytes including '\0'
staticconstuintNETWORK_CLIENT_NAME_LENGTH=25;///< The maximum length of a client's name, in bytes including '\0'
staticconstuintNETWORK_RCONCOMMAND_LENGTH=500;///< The maximum length of a rconsole command, in bytes including '\0'
staticconstuintNETWORK_GAMESCRIPT_JSON_LENGTH=COMPAT_MTU-3;///< The maximum length of a gamescript json string, in bytes including '\0'. Must not be longer than COMPAT_MTU including header (3 bytes)
staticconstuintNETWORK_CHAT_LENGTH=900;///< The maximum length of a chat message, in bytes including '\0'
staticconstuintNETWORK_CONTENT_FILENAME_LENGTH=48;///< The maximum length of a content's filename, in bytes including '\0'.
staticconstuintNETWORK_CONTENT_NAME_LENGTH=64;///< The maximum length of a content's name, in bytes including '\0'.
staticconstuintNETWORK_CONTENT_VERSION_LENGTH=16;///< The maximum length of a content's version, in bytes including '\0'.
staticconstuintNETWORK_CONTENT_URL_LENGTH=96;///< The maximum length of a content's url, in bytes including '\0'.
staticconstuintNETWORK_CONTENT_DESC_LENGTH=512;///< The maximum length of a content's description, in bytes including '\0'.
staticconstuintNETWORK_CONTENT_TAG_LENGTH=32;///< The maximum length of a content's tag, in bytes including '\0'.
staticconstuintNETWORK_NAME_LENGTH=80;///< The maximum length of the server name and map name, in bytes including '\0'
staticconstuintNETWORK_COMPANY_NAME_LENGTH=128;///< The maximum length of the company name, in bytes including '\0'
staticconstuintNETWORK_HOSTNAME_LENGTH=80;///< The maximum length of the host name, in bytes including '\0'
staticconstuintNETWORK_HOSTNAME_PORT_LENGTH=80+6;///< The maximum length of the host name + port, in bytes including '\0'. The extra six is ":" + port number (with a max of 65536)
staticconstuintNETWORK_SERVER_ID_LENGTH=33;///< The maximum length of the network id of the servers, in bytes including '\0'
staticconstuintNETWORK_REVISION_LENGTH=33;///< The maximum length of the revision, in bytes including '\0'
staticconstuintNETWORK_LONG_REVISION_LENGTH=64;///< The maximum length of the revision, in bytes including '\0'
staticconstuintNETWORK_PASSWORD_LENGTH=33;///< The maximum length of the password, in bytes including '\0' (must be >= NETWORK_SERVER_ID_LENGTH)
staticconstuintNETWORK_CLIENTS_LENGTH=200;///< The maximum length for the list of clients that controls a company, in bytes including '\0'
staticconstuintNETWORK_CLIENT_NAME_LENGTH=25;///< The maximum length of a client's name, in bytes including '\0'
staticconstuintNETWORK_RCONCOMMAND_LENGTH=500;///< The maximum length of a rconsole command, in bytes including '\0'
staticconstuintNETWORK_GAMESCRIPT_JSON_LENGTH=COMPAT_MTU-3;///< The maximum length of a gamescript json string, in bytes including '\0'. Must not be longer than COMPAT_MTU including header (3 bytes)
staticconstuintNETWORK_CHAT_LENGTH=900;///< The maximum length of a chat message, in bytes including '\0'
staticconstuintNETWORK_CONTENT_FILENAME_LENGTH=48;///< The maximum length of a content's filename, in bytes including '\0'.
staticconstuintNETWORK_CONTENT_NAME_LENGTH=64;///< The maximum length of a content's name, in bytes including '\0'.
staticconstuintNETWORK_CONTENT_VERSION_LENGTH=16;///< The maximum length of a content's version, in bytes including '\0'.
staticconstuintNETWORK_CONTENT_URL_LENGTH=96;///< The maximum length of a content's url, in bytes including '\0'.
staticconstuintNETWORK_CONTENT_DESC_LENGTH=512;///< The maximum length of a content's description, in bytes including '\0'.
staticconstuintNETWORK_CONTENT_TAG_LENGTH=32;///< The maximum length of a content's tag, in bytes including '\0'.
staticconstuintNETWORK_ERROR_DETAIL_LENGTH=100;///< The maximum length of the error detail, in bytes including '\0'.
staticconstuintNETWORK_INVITE_CODE_LENGTH=64;///< The maximum length of the invite code, in bytes including '\0'.
staticconstuintNETWORK_INVITE_CODE_SECRET_LENGTH=80;///< The maximum length of the invite code secret, in bytes including '\0'.
staticconstuintNETWORK_TOKEN_LENGTH=64;///< The maximum length of a token, in bytes including '\0'.
staticconstuintNETWORK_GRF_NAME_LENGTH=80;///< Maximum length of the name of a GRF
staticconstuintNETWORK_GRF_NAME_LENGTH=80;///< Maximum length of the name of a GRF
/** @file network_coordinator.cpp Game Coordinator sending/receiving part of the network protocol. */
#include"../stdafx.h"
#include"../debug.h"
#include"../error.h"
#include"../rev.h"
#include"../settings_type.h"
#include"../strings_func.h"
#include"../window_func.h"
#include"../window_type.h"
#include"network.h"
#include"network_coordinator.h"
#include"network_gamelist.h"
#include"network_internal.h"
#include"network_server.h"
#include"network_stun.h"
#include"table/strings.h"
#include"../safeguards.h"
staticconstautoNETWORK_COORDINATOR_DELAY_BETWEEN_UPDATES=std::chrono::seconds(30);///< How many time between updates the server sends to the Game Coordinator.
ClientNetworkCoordinatorSocketHandler_network_coordinator_client;///< The connection to the Game Coordinator.
ConnectionType_network_server_connection_type=CONNECTION_TYPE_UNKNOWN;///< What type of connection the Game Coordinator detected we are on.
std::string_network_server_invite_code="";///< Our invite code as indicated by the Game Coordinator.
/** Connect to a game server by IP:port. */
classNetworkDirectConnecter:publicTCPConnecter{
private:
std::stringtoken;///< Token of this connection.
uint8tracking_number;///< Tracking number of this connection.
std::chrono::steady_clock::time_pointnext_update;///< When to send the next update (if server and public).
std::map<std::string,TCPServerConnecter*>connecter;///< Based on tokens, the current connecters that are pending.
std::map<std::string,TCPServerConnecter*>connecter_pre;///< Based on invite codes, the current connecters that are pending.
std::map<std::string,std::map<int,std::unique_ptr<ClientNetworkStunSocketHandler>>>stun_handlers;///< All pending STUN handlers, stored by token:family.
TCPConnecter*game_connecter=nullptr;///< Pending connecter to the game server.
protected:
boolReceive_GC_ERROR(Packet*p)override;
boolReceive_GC_REGISTER_ACK(Packet*p)override;
boolReceive_GC_LISTING(Packet*p)override;
boolReceive_GC_CONNECTING(Packet*p)override;
boolReceive_GC_CONNECT_FAILED(Packet*p)override;
boolReceive_GC_DIRECT_CONNECT(Packet*p)override;
boolReceive_GC_STUN_REQUEST(Packet*p)override;
boolReceive_GC_STUN_CONNECT(Packet*p)override;
public:
/** The idle timeout; when to close the connection because it's idle. */
staticconstuintMAX_GAME_LIST_REQUERY_COUNT=10;///< How often do we requery in number of times per server?
staticconstuintREQUERY_EVERY_X_GAMELOOPS=60;///< How often do we requery in time?
staticconstuintREFRESH_GAMEINFO_X_REQUERIES=50;///< Refresh the game info itself after REFRESH_GAMEINFO_X_REQUERIES * REQUERY_EVERY_X_GAMELOOPS game loops
/** Requeries the (game) servers we have not gotten a reply from */