mirror of
https://github.com/Anuken/Mindustry.git
synced 2026-10-02 03:00:29 +03:00
Merge branch 'master' of https://github.com/Anuken/Mindustry into array-textures
# Conflicts: # core/assets/bundles/bundle_hu.properties # core/assets/bundles/bundle_ru.properties # core/assets/bundles/bundle_th.properties # core/assets/bundles/bundle_vi.properties # core/assets/bundles/bundle_zh_CN.properties # core/assets/bundles/bundle_zh_TW.properties # core/src/mindustry/mod/Mods.java # gradle.properties
This commit is contained in:
@@ -41,16 +41,17 @@ jobs:
|
||||
git commit -m "Automatic bundle update"
|
||||
git push
|
||||
fi
|
||||
- name: Update scripts and class mappings
|
||||
- name: Update scripts, class mappings and map names
|
||||
if: ${{ github.repository == 'Anuken/Mindustry' }}
|
||||
run: |
|
||||
./gradlew updateScripts
|
||||
./gradlew updateScripts fixMaps
|
||||
|
||||
if [ -n "$(git status --porcelain)" ]; then
|
||||
git config --global user.name "Github Actions"
|
||||
git config --global user.email "actions@github.com"
|
||||
git add core/assets/scripts/* core/src/mindustry/mod/ClassMap.java
|
||||
git commit -m "Automatic class mapping update"
|
||||
git add core/assets/maps/*
|
||||
git commit -m "Automatic class mapping and map name update"
|
||||
git push
|
||||
fi
|
||||
- name: Update JITpack repo
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@ This means:
|
||||
- Same-line braces.
|
||||
- 4 spaces indentation
|
||||
- `camelCase`, **even for constants or enums**. Why? Because `SCREAMING_CASE` is ugly, annoying to type and does not achieve anything useful. Constants are *less* dangerous than variables, not more. Any reasonable IDE should highlight them for you anyway.
|
||||
- No underscores for anything. (Yes, I know `Bindings` violates this principle, but that's for legacy reasons and really should be cleaned up some day)
|
||||
- No underscores for anything.
|
||||
- Do not use braceless `if/else` statements. `if(x) statement else statement2` should **never** be done. In very specific situations, having braceless if-statements on one line is allowed: `if(cond) return;` would be valid.
|
||||
- Prefer single-line javadoc `/** @return for example */` instead of multiline javadoc whenever possible
|
||||
- Short method/variable names (multipleLongWords should be avoided if it's possible to do so reasonably, especially for variables)
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 213 B After Width: | Height: | Size: 273 B |
@@ -61,7 +61,7 @@ mods.browser.sortstars = Sort by stars
|
||||
export.file = Export File
|
||||
import.file = Import File
|
||||
copy.clipboard = Copy to Clipboard
|
||||
import.clipboard = Import from Clipboard
|
||||
import.clipboard = Load from Clipboard
|
||||
workshop.browse = Browse Workshop
|
||||
workshop.share = Share on Workshop
|
||||
|
||||
@@ -568,6 +568,7 @@ asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
@@ -613,8 +614,6 @@ waves.max = max units
|
||||
waves.guardian = Guardian
|
||||
waves.preview = Preview
|
||||
waves.random = Random
|
||||
waves.copy = Copy to Clipboard
|
||||
waves.load = Load from Clipboard
|
||||
waves.invalid = Invalid waves in clipboard.
|
||||
waves.copied = Waves copied.
|
||||
waves.none = No enemies defined.\nNote that empty wave layouts will automatically be replaced with the default layout.
|
||||
@@ -1004,7 +1003,6 @@ sector.mycelialBastion.name = Mycelial Bastion
|
||||
sector.frontier.name = Frontier
|
||||
sector.sunkenPier.name = Sunken Pier
|
||||
sector.littoralShipyard.name = Littoral Shipyard
|
||||
sector.cruxscape.name = Cruxscape
|
||||
sector.geothermalStronghold.name = Geothermal Stronghold
|
||||
|
||||
sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\n\nGather as much lead and copper as possible.\nMove on.
|
||||
|
||||
@@ -563,6 +563,7 @@ asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
@@ -608,8 +609,6 @@ waves.max = максімум адзінак
|
||||
waves.guardian = Вартаўнік
|
||||
waves.preview = Папярэдні прагляд
|
||||
waves.random = Выпадкова
|
||||
waves.copy = Капіяваць у буфер абмену
|
||||
waves.load = Загрузіць з буфера абмену
|
||||
waves.invalid = Няслушныя хвалі ў буферы абмену.
|
||||
waves.copied = Хвалі скапіяваныя.
|
||||
waves.none = Ворагі не былі вызначаныя. \nЗвярнiце ўвагу, што пустыя хвалі будуць аўтаматычна замененыя звычайнай хваляй.
|
||||
@@ -999,7 +998,6 @@ sector.mycelialBastion.name = Грыбны бастыён
|
||||
sector.frontier.name = Граніца
|
||||
sector.sunkenPier.name = Затанулы пірс
|
||||
sector.littoralShipyard.name = Прыбярэжны верф
|
||||
sector.cruxscape.name = Зямля Крыжакоў
|
||||
sector.geothermalStronghold.name = Геатэрмальная крэпасць
|
||||
|
||||
sector.groundZero.description = Аптымальнае месца каб пачаць. Нізкая варожая пагроза. Мала рэсурсаў.\nВазце як мага болей свінца і медзі.\nІ рухайцеся далей.
|
||||
|
||||
@@ -563,6 +563,7 @@ asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
@@ -608,8 +609,6 @@ waves.max = макс. единици
|
||||
waves.guardian = Пазител
|
||||
waves.preview = Преглед
|
||||
waves.random = Случаен брой
|
||||
waves.copy = Кобирай в Клипборд
|
||||
waves.load = Зареди от Клипборда
|
||||
waves.invalid = Клипборда съдържа невалидна информация за вълни.
|
||||
waves.copied = Вълните бяха копирани.
|
||||
waves.none = Няма дефинирани врагове.\nАко оставите описанието на вълните празно играта ще използва стандартния шаблон.
|
||||
@@ -999,7 +998,6 @@ sector.mycelialBastion.name = Mycelial Bastion
|
||||
sector.frontier.name = Frontier
|
||||
sector.sunkenPier.name = Sunken Pier
|
||||
sector.littoralShipyard.name = Littoral Shipyard
|
||||
sector.cruxscape.name = Cruxscape
|
||||
sector.geothermalStronghold.name = Geothermal Stronghold
|
||||
|
||||
sector.groundZero.description = Перфектното място за започване отначало. Ниска заплаха. Малко ресурси.\nСъберете колкото се може повече мед и олово.\nПродължете напред.
|
||||
|
||||
@@ -563,6 +563,7 @@ asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
@@ -608,8 +609,6 @@ waves.max = nombre màxim d’unitats
|
||||
waves.guardian = Guardià
|
||||
waves.preview = Previsualització
|
||||
waves.random = Aleatori
|
||||
waves.copy = Copia al porta-retalls
|
||||
waves.load = Carrega del porta-retalls
|
||||
waves.invalid = El contingut del porta-retalls té onades que no són vàlides.
|
||||
waves.copied = S’han copiat les onades.
|
||||
waves.none = No s’han definit enemics.\nTingueu en compte que les onades buides es substituiran automàticament amb l’onada per defecte.
|
||||
@@ -999,7 +998,6 @@ sector.mycelialBastion.name = Bastió micelial
|
||||
sector.frontier.name = La frontera
|
||||
sector.sunkenPier.name = Moll afonat
|
||||
sector.littoralShipyard.name = Littoral Shipyard
|
||||
sector.cruxscape.name = Cruxscapada
|
||||
sector.geothermalStronghold.name = Fortalesa geotèrmica
|
||||
|
||||
sector.groundZero.description = El lloc adequat per a començar de nou. Amenaça enemiga baixa. Pocs recursos.\nRecolliu tot el coure i plom que pugueu.\nDesprés, continueu en un altre sector.
|
||||
|
||||
@@ -563,6 +563,7 @@ asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
@@ -608,8 +609,6 @@ waves.max = max. jednotek
|
||||
waves.guardian = Strážce
|
||||
waves.preview = Náhled
|
||||
waves.random = Náhodně
|
||||
waves.copy = Uložit do schránky
|
||||
waves.load = Načíst ze schránky
|
||||
waves.invalid = Neplatné vlny ve schránce.
|
||||
waves.copied = Vlny byly zkopírovány.
|
||||
waves.none = Žádní nepřátelé nebyli definováni.\nVlny s prázdným rozložením budou automaticky upraveny na výchozí rozložení.
|
||||
@@ -999,7 +998,6 @@ sector.mycelialBastion.name = Pevnost podhoubí
|
||||
sector.frontier.name = Fronta
|
||||
sector.sunkenPier.name = Potopené molo
|
||||
sector.littoralShipyard.name = Pobřežní loděnice
|
||||
sector.cruxscape.name = Krajina Cruxu
|
||||
sector.geothermalStronghold.name = Geotermální pevnost
|
||||
|
||||
sector.groundZero.description = Optimální místo, kde znovu začít. Nízký výskyt nepřátel. Několik málo surovin.\nPosbírej co nejvíce olova a mědi.\nBěž dál.
|
||||
|
||||
@@ -563,6 +563,7 @@ asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
@@ -608,8 +609,6 @@ waves.max = max units
|
||||
waves.guardian = Vogter
|
||||
waves.preview = Forhåndsvisning
|
||||
waves.random = Random
|
||||
waves.copy = Kopier til udklipsholder
|
||||
waves.load = Indlæs fra udklipsholder
|
||||
waves.invalid = Ugyldige bølger i udklipsholder.
|
||||
waves.copied = Bølger kopieret.
|
||||
waves.none = Ingen fjender defineret.\nBemærk at bølger uden fjender automatisk erstattes af standard-layoutet.
|
||||
@@ -999,7 +998,6 @@ sector.mycelialBastion.name = Mycelial Bastion
|
||||
sector.frontier.name = Frontier
|
||||
sector.sunkenPier.name = Sunken Pier
|
||||
sector.littoralShipyard.name = Littoral Shipyard
|
||||
sector.cruxscape.name = Cruxscape
|
||||
sector.geothermalStronghold.name = Geothermal Stronghold
|
||||
|
||||
sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on.
|
||||
|
||||
@@ -563,6 +563,7 @@ asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
@@ -608,8 +609,6 @@ waves.max = maximale Einheiten
|
||||
waves.guardian = Boss
|
||||
waves.preview = Vorschau
|
||||
waves.random = Zufällig
|
||||
waves.copy = In die Zwischenablage kopieren
|
||||
waves.load = Aus der Zwischenablage laden
|
||||
waves.invalid = Ungültige Wellen in der Zwischenablage.
|
||||
waves.copied = Wellen kopiert.
|
||||
waves.none = Keine Gegner definiert.\nInfo: Leere Wellenentwürfe werden automatisch mit dem Standard-Entwurf ersetzt.
|
||||
@@ -999,7 +998,6 @@ sector.mycelialBastion.name = Myzel-Festung
|
||||
sector.frontier.name = Frontlinie
|
||||
sector.sunkenPier.name = Sunken Pier
|
||||
sector.littoralShipyard.name = Littoral Shipyard
|
||||
sector.cruxscape.name = Cruxscape
|
||||
sector.geothermalStronghold.name = Geothermal Stronghold
|
||||
|
||||
sector.groundZero.description = Der optimale Ort, um anzufangen. Schwache Gegner und weniger Ressourcen.\nSammele so viel Kupfer und Blei wie möglich.\nGeh weiter.
|
||||
|
||||
@@ -563,6 +563,7 @@ asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
@@ -608,8 +609,6 @@ waves.max = máximo de unidades
|
||||
waves.guardian = Guardián
|
||||
waves.preview = Vista previa
|
||||
waves.random = Aleatorizadas
|
||||
waves.copy = Copiar al portapapeles
|
||||
waves.load = Cargar del portapapeles
|
||||
waves.invalid = Los ajustes de oleadas copiados en el portapapeles no son válidos.
|
||||
waves.copied = Oleadas copiadas.
|
||||
waves.none = No se han definido enemigos.\nLas listas de oleadas vacías se sustituirán automáticamente por el esquema por defecto.
|
||||
@@ -999,7 +998,6 @@ sector.mycelialBastion.name = Bastión Infestado
|
||||
sector.frontier.name = Frontera
|
||||
sector.sunkenPier.name = Muelle Hundido
|
||||
sector.littoralShipyard.name = Littoral Shipyard
|
||||
sector.cruxscape.name = Cruxscape
|
||||
sector.geothermalStronghold.name = Fortaleza Geotérmica
|
||||
|
||||
sector.groundZero.description = La ubicación adecuada para empezar una vez más. Baja amenaza enemiga. Pocos recursos.\n\nReúne la mayor cantidad de plomo y cobre posible.\nSigue adelante.
|
||||
|
||||
@@ -563,6 +563,7 @@ asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
@@ -608,8 +609,6 @@ waves.max = max units
|
||||
waves.guardian = Guardian
|
||||
waves.preview = Eelvaade
|
||||
waves.random = Random
|
||||
waves.copy = Kopeeri puhvrisse
|
||||
waves.load = Lae puhvrist
|
||||
waves.invalid = Puhvrist laeti vigane lahingulainete informatsioon.
|
||||
waves.copied = Lahingulainete informatsioon kopeeriti puhvrisse.
|
||||
waves.none = Vaenlased on täpsustamata.\n[accent]Märkus: Tühjad lahingulained asendatakse automaatselt[]\n[accent]vaikimisi lahingulainetega.
|
||||
@@ -999,7 +998,6 @@ sector.mycelialBastion.name = Mycelial Bastion
|
||||
sector.frontier.name = Frontier
|
||||
sector.sunkenPier.name = Sunken Pier
|
||||
sector.littoralShipyard.name = Littoral Shipyard
|
||||
sector.cruxscape.name = Cruxscape
|
||||
sector.geothermalStronghold.name = Geothermal Stronghold
|
||||
|
||||
sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on.
|
||||
|
||||
@@ -563,6 +563,7 @@ asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
@@ -608,8 +609,6 @@ waves.max = unitate maximoa
|
||||
waves.guardian = Zaindaria
|
||||
waves.preview = Aurrebista
|
||||
waves.random = Ausaz
|
||||
waves.copy = Kopiatu arbelera
|
||||
waves.load = Kargatu arbeletik
|
||||
waves.invalid = Bolada baliogabeak arbelean.
|
||||
waves.copied = Boladak kopiatuta.
|
||||
waves.none = Ez da etsairik zehaztu.\nKontuan izan bolada hutsak lehenetsitako diseinuarekin ordeztuko direla.
|
||||
@@ -999,7 +998,6 @@ sector.mycelialBastion.name = Mycelial Bastion
|
||||
sector.frontier.name = Frontier
|
||||
sector.sunkenPier.name = Sunken Pier
|
||||
sector.littoralShipyard.name = Littoral Shipyard
|
||||
sector.cruxscape.name = Cruxscape
|
||||
sector.geothermalStronghold.name = Geothermal Stronghold
|
||||
|
||||
sector.groundZero.description = Kokapen ezin hobea berriro hasteko. Etsaiaren mehatxu txikia. Baliabide gutxi.\nAhalik eta berun eta kobre gehien bildu.\nAurrera.
|
||||
|
||||
@@ -563,6 +563,7 @@ asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
@@ -608,8 +609,6 @@ waves.max = maksimijoukot
|
||||
waves.guardian = Vartija
|
||||
waves.preview = Esikatselu
|
||||
waves.random = Random
|
||||
waves.copy = Kopioi leikepöydälle
|
||||
waves.load = Lataa leikepöydältä
|
||||
waves.invalid = Kelvottomia tasoja leikepöydällä.
|
||||
waves.copied = Tasot kopioitu.
|
||||
waves.none = Ei määriteltyjä vihollisia.\nHuomaa, että tyhjät tasopohjat korvataan automaattisesti oletuspohjalla.
|
||||
@@ -999,7 +998,6 @@ sector.mycelialBastion.name = Mycelial Bastion
|
||||
sector.frontier.name = Frontier
|
||||
sector.sunkenPier.name = Sunken Pier
|
||||
sector.littoralShipyard.name = Littoral Shipyard
|
||||
sector.cruxscape.name = Cruxscape
|
||||
sector.geothermalStronghold.name = Geothermal Stronghold
|
||||
|
||||
sector.groundZero.description = Optimaalinen sijainti aloittaa jälleen kerran. Matala vihollisuhka. Vähän resursseja.\nKerää niin paljon kuparia ja lyijyä, kuin mahdollista.\nJatka matkaa.
|
||||
|
||||
@@ -563,6 +563,7 @@ asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
@@ -608,8 +609,6 @@ waves.max = max units
|
||||
waves.guardian = Guardian
|
||||
waves.preview = Preview
|
||||
waves.random = Random
|
||||
waves.copy = I-Copy to Clipboard
|
||||
waves.load = I-Load mula sa Clipboard
|
||||
waves.invalid = Invalid waves in clipboard.
|
||||
waves.copied = Waves copied.
|
||||
waves.none = Walang tinukoy na mga kaaway.\nTandaan na ang mga walang laman na wave layout ay awtomatikong papalitan ng default na layout.
|
||||
@@ -999,7 +998,6 @@ sector.mycelialBastion.name = Tanggulang Sanghiblayanin
|
||||
sector.frontier.name = Unahan
|
||||
sector.sunkenPier.name = Lumubog Na Pantalan
|
||||
sector.littoralShipyard.name = Littoral Shipyard
|
||||
sector.cruxscape.name = Kruskapaligiran
|
||||
sector.geothermalStronghold.name = Tanggulang Heotermal
|
||||
|
||||
sector.groundZero.description = Ang pinakamainam na lokasyon upang magsimulang muli. Mababang banta ng kaaway. Kaunting mapagkukunan.\nMagtipon ng mas maraming tingga at tanso hangga't maaari.\nItuloy.
|
||||
|
||||
@@ -563,6 +563,7 @@ asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
@@ -608,8 +609,6 @@ waves.max = unités maximum
|
||||
waves.guardian = Gardien
|
||||
waves.preview = Prévisualiser
|
||||
waves.random = Aléatoire
|
||||
waves.copy = Copier dans le presse-papiers
|
||||
waves.load = Coller depuis le presse-papiers
|
||||
waves.invalid = Vagues invalides dans le presse-papiers.
|
||||
waves.copied = Vagues copiées
|
||||
waves.none = Aucun ennemi défini.\nNotez que les vagues vides seront automatiquement remplacées par les vagues par défaut.
|
||||
@@ -999,7 +998,6 @@ sector.mycelialBastion.name = Mycelial Bastion
|
||||
sector.frontier.name = Frontière
|
||||
sector.sunkenPier.name = Sunken Pier
|
||||
sector.littoralShipyard.name = Litorral Shipyard
|
||||
sector.cruxscape.name = Cruxscape
|
||||
sector.geothermalStronghold.name = Geothermal Stronghold
|
||||
|
||||
sector.groundZero.description = Un endroit optimal pour commencer. Avec une menace ennemie faible et peu de ressources disponibles.\nRassemblez autant de cuivre et de plomb que possible pour continuer votre exploration.
|
||||
|
||||
@@ -19,7 +19,7 @@ clipboardcopy = Ez a kiszolgáló szöveget szeretne másolni a vágólapra. Biz
|
||||
linkfail = Nem sikerült megnyitni a hivatkozást!\nA webcím a vágólapra lett másolva.
|
||||
screenshot = Képernyőkép mentve ide: {0}
|
||||
screenshot.invalid = A pálya túl nagy és nem áll rendelkezésre elegendő memória a képernyőkép elkészítéséhez.
|
||||
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
|
||||
screenshot.error = Nem sikerült képernyőképet készíteni. Valószínűleg ez az eszköz nem támogat ilyen nagy méretű képernyőképeket.
|
||||
gameover = A játéknak vége
|
||||
gameover.disconnect = A kapcsolat megszakadt
|
||||
gameover.pvp = A(z)[accent] {0}[] csapat nyert!
|
||||
@@ -179,7 +179,7 @@ mod.incompletedependencies.details = Ez a mod nem tölthető be az érvénytelen
|
||||
mod.requiresversion = Szükséges játékverzió: [red]{0}[]
|
||||
|
||||
mod.errors = Hiba történt a tartalom betöltésekor.
|
||||
mod.errors.map = [scarlet]Errors have occurred loading map content. All custom content has been disabled.[]\nThis map will likely not function correctly.
|
||||
mod.errors.map = mod.errors.map = [scarlet]Hiba történt a pálya tartalmának betöltésekor. Minden egyéni tartalom le lett tiltva.[]\nEz a pálya valószínűleg nem fog megfelelően működni.
|
||||
mod.noerrorplay = [red]Hibákkal rendelkező modjaid vannak.[] Kapcsold ki, vagy javítsd ki őket a játék elindítása előtt.
|
||||
mod.enable = Engedélyezés
|
||||
mod.requiresrestart = A játék most kilép, hogy a módosítások érvénybe lépjenek a következő indításkor.
|
||||
@@ -331,10 +331,10 @@ cantconnect = Nem sikerült kapcsolódni a(z) ([accent]{0}[]) játékhoz.
|
||||
connecting = [accent]Kapcsolódás…
|
||||
reconnecting = [accent]Újrakapcsolódás…
|
||||
|
||||
connecting.establish = [accent]Establishing connection...
|
||||
receiving.world = [accent]Receiving world data ({0})...
|
||||
receiving.assets = [accent]Receiving assets ({0})...
|
||||
receiving.assets.fail = Error occurred while receiving assets.
|
||||
connecting.establish = [accent]Kapcsolat létrehozása…
|
||||
receiving.world = [accent]Világadatok fogadása ({0})…
|
||||
receiving.assets = [accent]Összetevők fogadása ({0})…
|
||||
receiving.assets.fail = Hiba történt az összetevők fogadásakor.
|
||||
|
||||
server.port = Port:
|
||||
server.invalidport = Érvénytelen port!
|
||||
@@ -352,10 +352,10 @@ save.export = Mentés exportálása
|
||||
save.import.invalid = [accent]Ez a mentés érvénytelen!
|
||||
save.import.fail = [scarlet]Nem sikerült importálni a(z) [accent]{0}[] mentést
|
||||
save.export.fail = [scarlet]Nem sikerült exportálni a(z) [accent]{0}[] mentést
|
||||
save.export.needsload = [scarlet]⚠ This save contains embedded assets.[]\nLoad into this save before exporting it.
|
||||
save.assets.missing = Missing Assets
|
||||
save.assets.missing.list = Asset List...
|
||||
save.assets.missing.info = [scarlet]⚠ This save contains missing assets![]\n\n[lightgray]This is likely because the save file was not properly exported.\n[lightgray]When sharing saves, only export through the in-game UI. Do not copy save files directly.\n[lightgray]If transferring files is necessary, make sure the [accent]assetCache[] folder is copied as well.
|
||||
save.export.needsload = [scarlet]⚠ Ez a mentés beágyazott összetevőket tartalmaz.[]\nTöltsd be ezt a mentést az exportálás előtt.
|
||||
save.assets.missing = Hiányzó összetevők
|
||||
save.assets.missing.list = Összetevők listája…
|
||||
save.assets.missing.info = [scarlet]⚠ Ebből a mentésből több összetevő is hiányzik![]\n\n[lightgray]Ennek valószínűleg az az oka, hogy a mentési fájl nem lett megfelelően exportálva.\n[lightgray]Mentések megosztásakor csak a játékon belüli felületen keresztül exportálj. Ne másold közvetlenül a mentési fájlokat.\n[lightgray]Ha a fájlok áthelyezése elengedhetetlen, győződj meg arról, hogy az [accent]assetCache[] mappa is át lett másolva.
|
||||
save.import = Mentés importálása
|
||||
save.newslot = Mentés neve:
|
||||
save.rename = Átnevezés
|
||||
@@ -462,7 +462,7 @@ workshop.update = Elem frissítése
|
||||
workshop.error = Hiba történt a Steam Műhely részleteinek lekérdezésekor: {0}
|
||||
map.publish.confirm = Biztosan közzéteszed ezt a pályát?\n\n[lightgray]Győződj meg arról, hogy elfogadtad a Steam Műhely EULA-t, máskülönben a pályáid nem jelennek meg!
|
||||
workshop.menu = Válaszd ki, hogy mit szeretnél csinálni ezzel az elemmel.
|
||||
workshop.info = Eleminformációk
|
||||
workshop.info = Elem adatai
|
||||
changelog = Változáslista (nem kötelező):
|
||||
updatedesc = Cím és leírás felülírása
|
||||
eula = Steam EULA
|
||||
@@ -482,7 +482,7 @@ editor.brush = Méret
|
||||
editor.openin = Megnyitás a szerkesztőben
|
||||
editor.oregen = Ércelőállítás
|
||||
editor.oregen.info = Ércelőállítás:
|
||||
editor.mapinfo = Pályainformációk
|
||||
editor.mapinfo = Pálya adatai
|
||||
editor.author = Szerző:
|
||||
editor.description = Leírás:
|
||||
editor.nodescription = A megosztás előtt a pályának rendelkeznie kell egy legalább 4 karakteres leírással.
|
||||
@@ -516,78 +516,74 @@ editor.filters.planetselect = Bolygóválasztás
|
||||
editor.shiftx = X-eltolás
|
||||
editor.shifty = Y-eltolás
|
||||
|
||||
asset.emoji = Emojis
|
||||
asset.patch = Patch
|
||||
asset.content = Content
|
||||
asset.bundle = Translation Bundle
|
||||
asset.image = Image
|
||||
asset.sound = Sound
|
||||
asset.music = Music
|
||||
asset.patch = Javítócsomag
|
||||
asset.content = Tartalom
|
||||
asset.bundle = Fordítási csomag
|
||||
asset.image = Kép
|
||||
asset.sound = Hang
|
||||
asset.music = Zene
|
||||
|
||||
content.unit = Unit
|
||||
content.item = Item
|
||||
content.liquid = Liquid
|
||||
content.block = Block
|
||||
content.planet = Planet
|
||||
content.weather = Weather
|
||||
content.status = Status Effect
|
||||
content.unit = Egység
|
||||
content.item = Tárgy
|
||||
content.liquid = Folyadék
|
||||
content.block = Blokk
|
||||
content.planet = Bolygó
|
||||
content.weather = Időjárás
|
||||
content.status = Állapothatás
|
||||
|
||||
patch.set = Patchset: {0}
|
||||
patch.set = Javítócsomag-készlet: {0}
|
||||
patch.none = [lightgray]Nincsenek javítócsomagok betöltve.
|
||||
patch.errors = Javítócsomag-hibák
|
||||
patch.importerror = Nem sikerült importálni a javítócsomagot
|
||||
patch.delete.confirm = Biztosan törölni szeretnéd ezt a javítócsomagot?
|
||||
patch.path = Path:
|
||||
patch.path = Útvonal:
|
||||
patch.fields = {0} mező
|
||||
|
||||
bundle.lines = {0} lines
|
||||
bundle.lines = {0} sor
|
||||
|
||||
images = Images
|
||||
asset.title = Data Patches & Assets
|
||||
asset.guide = Usage Guide
|
||||
asset.bundle.exists = A bundle with path '{0}' already exists.
|
||||
asset.importzip = Import Asset Zip
|
||||
asset.exportzip = Export Asset Zip
|
||||
asset.image.importzip = Import Zip
|
||||
asset.image.exportzip = Export Zip
|
||||
asset.clearall = Clear All
|
||||
asset.clearall.confirm = Are you sure that you want to clear [red]all[] assets from this map?\nThis includes images, audio, content, etc.
|
||||
asset.imports = Import Results
|
||||
asset.imported = [accent]{0} assets imported.
|
||||
asset.import.none = No valid asset files found in zip archive.
|
||||
asset.content.errors = Content Errors
|
||||
asset.content.add = Add Content
|
||||
asset.content.type = Type:
|
||||
asset.content.exists = [red]Content with that name already exists!
|
||||
asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
asset.images = Data Patch Images
|
||||
asset.image.imports = Import Results
|
||||
asset.image.imported = [accent]{0} images imported.
|
||||
asset.image.none = No valid PNG files found in zip archive.
|
||||
asset.image.error = [red]The following errors were encountered:[]
|
||||
asset.image.clearall.confirm = Are you certain that you wish to clear all images?
|
||||
asset.image.info = Image Info
|
||||
asset.image.toolarge = Image ([lightgray]{0}x{1}[]) is too large. Maximum size is {2}x{3}.
|
||||
asset.image.exists = An image with that path/name already exists:\n[lightgray]{0}
|
||||
asset.image.delete.confirm = Are you certain that you wish to delete this image?
|
||||
asset.image.name = [accent]File Name: [lightgray]{0}
|
||||
asset.image.region.name = [accent]Region Name: [lightgray]{0}
|
||||
asset.image.path = [accent]Path: [lightgray]{0}
|
||||
asset.image.env = [accent]Uses Environment Atlas: [lightgray]{0}
|
||||
asset.image.size = [accent]Size: [lightgray]{0}x{1}
|
||||
asset.image.filesize = [accent]File Size: [lightgray]{0}
|
||||
asset.image.packfailed = [red]⚠ Failed to pack sprite![]
|
||||
asset.image.packfailed.env = This is likely caused by a lack of space in the environment atlas.\nNote that environment sprites are limited to a 512x512 total area.
|
||||
|
||||
asset.emoji.delete = Delete Selected ({0})
|
||||
asset.emoji.notfound = Image with specified name not found.
|
||||
asset.emoji.exists = An emoji with that name already exists.
|
||||
images = Képek
|
||||
asset.title = Javítócsomag-adatok és összetevők
|
||||
asset.guide = Használati útmutató
|
||||
asset.bundle.exists = Már létezik csomag a(z) „{0}” útvonalon.
|
||||
asset.importzip = Összetevő importálása ZIP-fájlból
|
||||
asset.exportzip = Összetevő exportálása ZIP-fájlba
|
||||
asset.image.importzip = Importálás ZIP-fájlból
|
||||
asset.image.exportzip = Exportálás ZIP-fájlba
|
||||
asset.clearall = Összes törlése
|
||||
asset.clearall.confirm = Biztosan törölni szeretnél [red]minden[] összetevőt erről a pályáról?\nEbbe beletartoznak a képek, a hangok, a tartalmak stb.
|
||||
asset.imports = Importálás eredménye
|
||||
asset.imported = [accent]{0} összetevő importálva.
|
||||
asset.import.none = Nem találhatók érvényes összetevő-fájlok a ZIP-archívumban.
|
||||
asset.content.errors = Tartalmi hibák
|
||||
asset.content.add = Tartalom hozzáadása
|
||||
asset.content.type = Típus:
|
||||
asset.content.exists = [red]Már létezik tartalom ezzel a névvel!
|
||||
asset.content.badname = [red]Érvénytelen név! A legtöbb szimbólum nem engedélyezett.
|
||||
asset.content.import.file = Fájl importálása
|
||||
asset.content.import.clipboard = Importálás a vágólapról
|
||||
asset.exists = Már létezik egy ilyen típusú, azonos útvonalú/nevű összetevő:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = Nem található ez az összetevőfájl.\nEzt az adatok helytelen importálása vagy egy hibásan exportált mentés okozhatja.
|
||||
asset.audio.invalid = Nem sikerült betölteni a hangfájlt.\nGyőződj meg arról, hogy érvényes OGG- vagy MP3-fájlt adtál meg.
|
||||
asset.delete.confirm = Biztosan törölni szeretnéd ezt az összetevőt?
|
||||
asset.images = Javítócsomag-adatok képei
|
||||
asset.image.imports = Importálás eredménye
|
||||
asset.image.imported = [accent]{0} kép importálva.
|
||||
asset.image.none = Nem találhatók érvényes PNG-fájlok a ZIP-archívumban.
|
||||
asset.image.error = [red]A következő hibák léptek fel:[]
|
||||
asset.image.clearall.confirm = Biztosan törölni szeretnéd az összes képet?
|
||||
asset.image.info = Kép adatai
|
||||
asset.image.toolarge = A kép mérete ([lightgray]{0}x{1}[]) túl nagy. A megengedett legnagyobb méret: {2}x{3}.
|
||||
asset.image.exists = Már létezik kép ezzel az útvonallal/névvel:\n[lightgray]{0}
|
||||
asset.image.delete.confirm = Biztosan törölni szeretnéd ezt a képet?
|
||||
asset.image.name = [accent]Fájl neve: [lightgray]{0}
|
||||
asset.image.region.name = [accent]Terület neve: [lightgray]{0}
|
||||
asset.image.path = [accent]Útvonal: [lightgray]{0}
|
||||
asset.image.env = [accent]Környezeti atlaszt használ: [lightgray]{0}
|
||||
asset.image.size = [accent]Méret: [lightgray]{0}x{1}
|
||||
asset.image.filesize = [accent]Fájl mérete: [lightgray]{0}
|
||||
asset.image.packfailed = [red]⚠ Nem sikerült a grafikus képelemet becsomagolni![]
|
||||
asset.image.packfailed.env = Ennek valószínűleg a környezeti atlasz helyhiánya az oka.\nNe feledd, hogy a környezeti grafikus képelemek korlátozva vannak egy 512x512-es területre.
|
||||
|
||||
workshop = Steam Műhely
|
||||
waves.title = Hullámok
|
||||
@@ -608,8 +604,6 @@ waves.max = egységkorlát
|
||||
waves.guardian = Őrző
|
||||
waves.preview = Előnézet
|
||||
waves.random = Véletlenszerű
|
||||
waves.copy = Másolás a vágólapra
|
||||
waves.load = Betöltés a vágólapról
|
||||
waves.invalid = Érvénytelen hullámok a vágólapon.
|
||||
waves.copied = Hullámok másolva.
|
||||
waves.none = Nincs ellenség megadva.\nVedd figyelembe, hogy az üresen hagyott hullámelrendezések automatikusan le lesznek cserélve az alapértelmezett elrendezésre.
|
||||
@@ -633,7 +627,7 @@ all = Összes
|
||||
editor.default = [lightgray]<Alapértelmezett>
|
||||
details = Részletek…
|
||||
edit = Szerkesztés
|
||||
edit.menu = Edit...
|
||||
edit.menu = Szerkesztés…
|
||||
variables = Változók
|
||||
logic.error.toolong = A processzorkód túl hosszú (Korlát: {0} tömörített bájt, tényleges hossz: {1} bájt)
|
||||
logic.clear.confirm = Biztosan törölni akarod az összes kódot ebből a processzorból?
|
||||
@@ -665,8 +659,8 @@ editor.loadmap = Pálya betöltése
|
||||
editor.savemap = Pálya mentése
|
||||
editor.savechanges = [scarlet]Nem mentett módosításaid vannak!\n\n[]Szeretnéd menteni őket?
|
||||
editor.saved = Mentve!
|
||||
editor.save.noname = A pályádnak nincs neve! Állíts be egyet a „pályainformációk” menüben.
|
||||
editor.save.overwrite = A pályád felülír egy beépített pályát! Válassz egy másik nevet a „pályainformációk” menüben.
|
||||
editor.save.noname = A pályádnak nincs neve! Állíts be egyet a „pálya adatai” menüben.
|
||||
editor.save.overwrite = A pályád felülír egy beépített pályát! Válassz egy másik nevet a „pálya adatai” menüben.
|
||||
editor.import.exists = [scarlet]Nem lehet importálni:[] Már létezik a(z) „{0}” nevű beépített pálya!
|
||||
editor.import = Importálás…
|
||||
editor.importmap = Pálya importálása
|
||||
@@ -999,7 +993,6 @@ sector.mycelialBastion.name = Micéliumbástya
|
||||
sector.frontier.name = Frontvidék
|
||||
sector.sunkenPier.name = Elsüllyedt móló
|
||||
sector.littoralShipyard.name = Part menti hajógyár
|
||||
sector.cruxscape.name = Crux-vidék
|
||||
sector.geothermalStronghold.name = Geotermikus erődítmény
|
||||
|
||||
sector.groundZero.description = Az ideális helyszín, hogy ismét belekezdjünk. Alacsony ellenséges ellenállás. Kevés nyersanyag.\nGyűjts annyi rezet és ólmot, amennyit csak tudsz.\nFolytasd a küldetést.
|
||||
@@ -1097,7 +1090,7 @@ settings.resetKey = Vissza-\nállítás
|
||||
settings.controls = Irányítás
|
||||
settings.game = Játék
|
||||
settings.sound = Hangok
|
||||
settings.dev = Developer Options
|
||||
settings.dev = Fejlesztői beállítások
|
||||
settings.graphics = Grafika
|
||||
settings.cleardata = Játékadatok törlése…
|
||||
settings.clear.confirm = Biztosan törlöd ezeket az adatokat?\nEzt a műveletet nem lehet visszavonni!
|
||||
@@ -1121,7 +1114,7 @@ banned = [scarlet]Kitiltva
|
||||
unsupported.environment = [scarlet]Nem támogatott környezet
|
||||
yes = Igen
|
||||
no = Nem
|
||||
info.title = Információ
|
||||
info.title = Adatok
|
||||
error.title = [scarlet]Hiba történt
|
||||
error.crashtitle = Hiba történt
|
||||
unit.nobuild = [scarlet]Az egység nem tud építeni
|
||||
@@ -1147,7 +1140,7 @@ stat.targetsground = Földi célpontok
|
||||
stat.crushdamage = Zúzó sebzés
|
||||
stat.legsplashdamage = Lábbal okozott területi sebzés
|
||||
stat.itemsmoved = Szállítási sebesség
|
||||
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
|
||||
stat.itemsmoved.info = Az áteresztőképesség gyakran nem lineáris, és szorosan összefügg a képkockasebességgel (FPS) és a tiksebességgel (TPS).
|
||||
stat.launchtime = Kilövések közötti idő
|
||||
stat.shootrange = Hatótávolság
|
||||
stat.size = Méret
|
||||
@@ -1426,10 +1419,10 @@ setting.milliseconds = {0} ezredmásodperc
|
||||
setting.fullscreen.name = Teljes képernyő
|
||||
setting.fps.name = FPS, memóriahasználat és ping megjelenítése
|
||||
setting.console.name = Konzol engedélyezése
|
||||
setting.drawhitboxes.name = Display Hitboxes
|
||||
setting.showperformance.name = Display Performance Metrics
|
||||
setting.buildingtimestep.name = Fixed Building Timestep
|
||||
setting.buildingtimestep.description = Runs buildings on a fixed timestep with constant delta,\nas opposed to every frame with variable delta.\nIf buildings cannot be updated fast enough, the game will slow down.\nIf you don't know what that means, don't touch this option.
|
||||
setting.drawhitboxes.name = Ütközési dobozok megjelenítése
|
||||
setting.showperformance.name = Teljesítményadatok megjelenítése
|
||||
setting.buildingtimestep.name = Épületek rögzített időlépése
|
||||
setting.buildingtimestep.description = Épületek frissítésének futtatása rögzített időlépésben, állandó delta értékkel,\nnem pedig minden képkockánként, változó delta értékkel.\nHa az épületeket nem sikerül elég gyorsan frissíteni, a játék lelassul.nHa az épületek frissítése nem történik elég gyorsan, a játék lelassul.\nHa nem tudod, mit jelent ez, ne nyúlj ehhez a beállításhoz.
|
||||
setting.smoothcamera.name = Egyenletes kamera
|
||||
setting.detach-camera.name = Szabad kamera
|
||||
setting.detach-camera.description = Ha engedélyezve van, akkor a kamera a játékos által irányított egységtől (drón) függetlenül mozog.\nEz a beállítás hozzárendelhető egy gyorsbillentyűhöz.
|
||||
@@ -1460,7 +1453,7 @@ setting.hidedisplays.name = Logikai kijelzők elrejtése
|
||||
setting.macnotch.name = A felület igazítása a kijelző bevágásához
|
||||
setting.macnotch.description = A változtatások érvénybe lépéséhez újraindítás szükséges
|
||||
|
||||
steam.friendsonly = Csak barátok
|
||||
steam.friendsonly = Csak Steam barátok
|
||||
steam.friendsonly.tooltip = Meghatározza, hogy csak a Steam-barátok kapcsolódhassanak-e a játékodhoz.\nHa kikapcsolod, a játékod nyilvános lesz és bárki kapcsolódhat hozzá.
|
||||
setting.maxmagnificationmultiplierpercent.name = Legkisebb kameratávolság
|
||||
setting.minmagnificationmultiplierpercent.name = Legnagyobb kameratávolság
|
||||
@@ -1558,7 +1551,7 @@ keybind.pause_building.name = Építés szüneteltetése/folytatása
|
||||
keybind.minimap.name = Minitérkép
|
||||
keybind.planet_map.name = Bolygótérkép
|
||||
keybind.research.name = Fejlesztés
|
||||
keybind.block_info.name = Blokkinformáció
|
||||
keybind.block_info.name = Blokk adatai
|
||||
keybind.chat.name = Csevegés
|
||||
keybind.player_list.name = Játékosok listája
|
||||
keybind.console.name = Konzol
|
||||
@@ -1572,9 +1565,9 @@ keybind.chat_mode.name = Csevegési mód megváltoztatása
|
||||
keybind.drop_unit.name = Egység eldobása
|
||||
keybind.zoom_minimap.name = Nagyítás a minitérképen
|
||||
keybind.detach_camera.name = Szabad kamera be/ki
|
||||
keybind.teleport_cursor.name = Teleport To Cursor (Sandbox)
|
||||
keybind.debug_hitboxes.name = Hibakereső találati zóna be/ki
|
||||
keybind.performance_metrics.name = Toggle Performance Metrics
|
||||
keybind.teleport_cursor.name = Teleportálás a kurzorhoz (homokozó)
|
||||
keybind.debug_hitboxes.name = Hibakereső ütközési doboz be/ki
|
||||
keybind.performance_metrics.name = Teljesítményadatok be/ki
|
||||
mode.help.title = Játékmódok leírása
|
||||
mode.survival.name = Túlélés
|
||||
mode.survival.description = A normál mód. Korlátozott nyersanyagok, és automatikusan érkező hullámok.\n[gray]Ellenséges kezdőpont szükséges hozzá a pályán.
|
||||
@@ -1632,7 +1625,7 @@ rules.enemyCheat = Végtelen ellenséges csapaterőforrások
|
||||
rules.blockhealthmultiplier = Épületek életpontszorzója
|
||||
rules.blockdamagemultiplier = Épületek sebzésszorzója
|
||||
rules.unitfactoryactivation = Egységgyár aktiválásának késleltetése
|
||||
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
|
||||
rules.unitfactoryactivation.objective = Egységgyárak aktiválása: {0}
|
||||
rules.unitbuildspeedmultiplier = Egységek gyártási sebességszorzója
|
||||
rules.unitcostmultiplier = Egységek költségszorzója
|
||||
rules.unithealthmultiplier = Egységek életpontszorzója
|
||||
@@ -1674,7 +1667,7 @@ rules.invasions = Ellenséges szektorokból érkező inváziók
|
||||
rules.legacylaunchpads = Hagyományos kilövőállás-mechanizmus
|
||||
rules.legacylaunchpads.info = Lehetővé teszi a kilövőállások használatát landolóállások nélkül, mint a v7.0-ban.
|
||||
landingpad.legacy.disabled = [scarlet]\ue815 Letiltva[lightgray] (Hagyományos kilövőállás engedélyezve)
|
||||
rules.hidespawns = Hide Enemy Spawns
|
||||
rules.hidespawns = Ellenséges kezdőpontok elrejtése a minitérképről
|
||||
rules.randomwaveai = Kiszámíthatatlan ellenséges támadások (MI)
|
||||
rules.pauseDisabled = Szüneteltetés letiltása
|
||||
rules.fire = Tűz
|
||||
@@ -2319,9 +2312,9 @@ ff.arc = Az :arc: [accent]Arc lövegtornyoknak[] áramra van szükségük a műk
|
||||
fungalpass.tutorial1 = Használj [accent]egységeket[] az épületek védelmére és az ellenség megtámadására.\nFejleszd ki és helyezz el egy :ground-factory: [accent]földiegységgyárat[].
|
||||
fungalpass.tutorial2 = Válaszd ki a :dagger: [accent]Dagger[] egységeket a gyárban.\nGyárts 3 db egységet.
|
||||
|
||||
frontier.tutorial1 = Az :additive-reconstructor: [accent]additív újratervező[]\naz 1. szintű egységeket 2. szintűvé fejleszti\n:silicon: szilícium és :graphite: grafit felhasználásával.\n\n[accent]Fejleszd ki és alakíts át\negy []:dagger:[accent] Dagger egységet []:mace:[accent] Mace[] egységgé.
|
||||
frontier.tutorial2 = Az ellenséges hullámok [accent]végtelenül[] érkeznek, amíg minden ellenséges támaszpont meg nem [unlaunched]semmisül.
|
||||
frontier.tutorial3 = [accent]Támadd meg gyorsan az ellenséges bázist, hogy megelőzd a hullámok túl magasra szökését[].
|
||||
frontier.tutorial1 = Az :additive-reconstructor: [accent]additív újratervező[]\naz 1. szintű egységeket 2. szintűvé fejleszti\n:silicon: szilícium és :graphite: grafit felhasználásával.\n\n[accent]Alakíts át egy []:dagger:[accent] Dagger egységet\n[]:mace:[accent] Mace egységgé.
|
||||
frontier.tutorial2 = Az ellenséges hullámok [accent]a végtelenségig[] érkeznek, amíg minden ellenséges támaszpont [unlaunched]meg nem semmisül.
|
||||
frontier.tutorial3 = [accent]Támadd meg gyorsan az ellenséges bázist, hogy a hullámok száma ne emelkedjen túl magasra.[]
|
||||
|
||||
atolls.destroy1 = Először pusztítsd el a 2 ellenséges [accent]alapítvány-támaszpontot[].\n[accent]Szerezz hozzáférést a tóriumhoz[].
|
||||
atolls.mega1 = Lépj be a [accent]parancsmódba[], és válaszd ki a :mega:[accent]Mega[] egységeket.
|
||||
@@ -2568,8 +2561,8 @@ block.switch.description = Kétállású kapcsoló. Az állapota logikai process
|
||||
block.micro-processor.description = Logikai műveletek sorozatát hajtja végre egy ciklusban. Egységek vagy épületek irányítására használható.
|
||||
block.logic-processor.description = Logikai műveletek sorozatát hajtja végre egy ciklusban. Egységek vagy épületek irányítására használható. Gyorsabb mint a mikroprocesszor.
|
||||
block.hyper-processor.description = Logikai műveletek sorozatát hajtja végre egy ciklusban. Egységek vagy épületek irányítására használható. Gyorsabb mint a logikai processzor.
|
||||
block.memory-cell.description = Információt tárol egy logikai processzor számára.
|
||||
block.memory-bank.description = Információt tárol egy logikai processzor számára. Nagy kapacitású.
|
||||
block.memory-cell.description = Adatokat tárol egy logikai processzor számára.
|
||||
block.memory-bank.description = Adatokat tárol egy logikai processzor számára. Nagy kapacitású.
|
||||
block.logic-display.description = Tetszőleges ábrákat jelenít meg egy logikai processzor alapján.
|
||||
block.large-logic-display.description = Tetszőleges ábrákat jelenít meg egy logikai processzor alapján.
|
||||
block.tile-logic-display.description = Tetszőleges grafikát jelenít meg.\nGördülékenyen kapcsolódik a közeli csempézett logikai kijelzőblokkokhoz.
|
||||
@@ -2779,10 +2772,10 @@ lst.setprop = Egy egység vagy épület tulajdonságainak beállítása.
|
||||
lst.effect = Részecskehatás létrehozása.
|
||||
lst.sync = Egy változó szinkronizálása a hálózaton keresztül.\nMásodpercenként legfeljebb 20-szor hívható meg.
|
||||
lst.playsound = Egy hangot játszik le.\nA hangerő és a panoráma lehet globális érték, vagy a pozíció alapján kiszámított érték.
|
||||
lst.playmusic = Plays a music track by name, e.g. [accent]"game1"[].\nIf [accent]interrupt[] is true, the previously playing music will be stopped.\nPlaying with null music and interrupt set to true will stop the current track.\nNote that music from data patches must be prefixed with [accent]dp-[].
|
||||
lst.playmusic = Egy zeneszám lejátszása név alapján, például: [accent]„játék1”[].\nHa az [accent]interrupt[] értéke igaz, akkor a korábban lejátszott zene leáll.\nHa nem adsz meg zenét és az interrupt igaz, akkor a jelenlegi szám lejátszása leáll.\nNe feledd, hogy a javítócsomag-adatokból származó zenék elé a [accent]dp-[] előtagot kell tenni.
|
||||
lst.makemarker = Új logikai jelölő létrehozása a világban.\nMeg kell adni egy azonosítót a jelölő azonosításához.\nA jelölők száma jelenleg világonként 20 000-re van korlátozva.
|
||||
lst.setmarker = Egy jelölő tulajdonságának beállítása.\nA használt azonosítónak meg kell egyeznie a Make Marker utasításban megadottal.\nA [accent]null []értékek figyelmen kívül lesznek hagyva.
|
||||
lst.localeprint = Hozzáadja a pálya nyelvi csomagjainak tulajdonságértékét a szövegpufferhez.\nA pálya nyelvi csomagjainak beállításait a térképszerkesztőben ellenőrizheted: [accent]pályainformációk > nyelvi csomagok[].\nHa a kliens egy hordozható eszköz, akkor először próbáld kiíratni a ".mobile" végződésű tulajdonságot.
|
||||
lst.localeprint = Hozzáadja a pálya nyelvi csomagjainak tulajdonságértékét a szövegpufferhez.\nA pálya nyelvi csomagjainak beállításait a térképszerkesztőben ellenőrizheted: [accent]pálya adatai > nyelvi csomagok[].\nHa a kliens egy hordozható eszköz, akkor először próbáld kiíratni a ".mobile" végződésű tulajdonságot.
|
||||
lst.query = lst.query = Lekérdez egységeket/épületeket egy megadott területen.\nAz eredmények a [accent]@queries[] tömbbe íródnak.\nAz [accent]@queries[] elemeit a [accent]Read[] utasítással és egy indexszel lehet beolvasni.\nA [accent]@queries[] hossza a [accent]@size[] paraméterrel érzékelhető.
|
||||
|
||||
lglobal.false = 0
|
||||
@@ -2991,7 +2984,7 @@ lenum.within = Ellenőrzés, hogy az egység egy pozíció közelében van-e.
|
||||
lenum.boost = Erősítés indítása/leállítása.
|
||||
|
||||
lenum.flushtext = Az írási puffer tartalmának ürítése a jelölőre, ha alkalmazható.\nHa a „fetch” igaz, akkor megpróbálja lekérni a tulajdonságokat a pálya nyelvi csomagjából vagy a játék csomagjából.
|
||||
lenum.texture = A textúra neve közvetlenül a játék textúraatlaszából (úgynevezett „kebab-case” elnevezési stílus használatával).\nHa a „printFlush” igaz, akkor a szöveges puffer tartalmát használja szöveges argumentumként.
|
||||
lenum.texture = A textúra neve közvetlenül a játék textúra-atlaszából (úgynevezett „kebab-case” elnevezési stílus használatával).\nHa a „printFlush” igaz, akkor a szöveges puffer tartalmát használja szöveges argumentumként.
|
||||
lenum.texturesize = A textúra mérete mezőben. A nulla érték a jelölő szélességét az eredeti textúra méretére skálázza.
|
||||
lenum.autoscale = Meghatározza, hogy a jelölő a játékos nagyítási szintjéhez igazodik-e.
|
||||
lenum.posi = Indexelt pozíció, vonal- és négyszögjelzőkhöz használatos, ahol a nulla az első pozíció.
|
||||
|
||||
@@ -19,7 +19,7 @@ clipboardcopy = Server ini ingin menyalin teks ke papan klip Anda. Apakah Anda y
|
||||
linkfail = Gagal membuka tautan!\nURL disalin ke papan klip.
|
||||
screenshot = Tangkapan layar tersimpan di {0}
|
||||
screenshot.invalid = Peta terlalu besar, tidak cukup memori untuk menangkap layar.
|
||||
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
|
||||
screenshot.error = Gagal mengambil tangkapan layar. Kemungkinan karena perangkat Anda tidak mendukung tangkapan layar sebesar ini.
|
||||
gameover = Permainan Selesai
|
||||
gameover.disconnect = Jaringan Terputus
|
||||
gameover.pvp = Tim[accent] {0}[] menang!
|
||||
@@ -58,11 +58,11 @@ mods.github.open-release = Laman Rilis
|
||||
mods.browser.sortdate = Urut berdasarkan waktu
|
||||
mods.browser.sortstars = Urut berdasarkan bintang
|
||||
|
||||
export.file = Ekspor Berkas
|
||||
import.file = Impor Berkas
|
||||
export.file = Ekspor File
|
||||
import.file = Impor File
|
||||
copy.clipboard = Salin ke papan klip
|
||||
import.clipboard = Impor dari papan klip
|
||||
workshop.browse = Browse Workshop
|
||||
workshop.browse = Cari di Workshop
|
||||
workshop.share = Bagikan di Workshop
|
||||
|
||||
schematic = Skematik
|
||||
@@ -89,11 +89,11 @@ schematic.tagdelconfirm = Ingin menghapus tanda ini?
|
||||
schematic.tagexists = Tanda tersebut sudah ada.
|
||||
|
||||
stats = Statistik
|
||||
stats.wave = Gelombang Terkalahkan
|
||||
stats.unitsCreated = Unit Terbentuk
|
||||
stats.wave = Gelombang yang Dikalahkan
|
||||
stats.unitsCreated = Unit yang Diproduksi
|
||||
stats.enemiesDestroyed = Musuh yang Dihancurkan
|
||||
stats.built = Jumlah Blok yang Dibangun
|
||||
stats.destroyed = Jumlah Blok Dihancurkan Musuh
|
||||
stats.destroyed = Jumlah Blok yang Dihancurkan Musuh
|
||||
stats.deconstructed = Jumlah Blok yang Dihancurkan Pemain
|
||||
stats.playtime = Waktu Bermain
|
||||
|
||||
@@ -164,7 +164,7 @@ mod.incompatiblegame = [red]Game telah Kedaluwarsa
|
||||
mod.incompatiblemod = [red]Tidak Kompatibel
|
||||
mod.blacklisted = [red]Tidak Didukung
|
||||
mod.unmetdependencies = [red]Dependensi Tidak Terpenuhi
|
||||
mod.erroredcontent = [scarlet]Konten Mengalami Kesalahan
|
||||
mod.erroredcontent = [scarlet]Konten Bermasalah
|
||||
mod.circulardependencies = [red]Dependensi Sirkular
|
||||
mod.incompletedependencies = [red]Dependensi Tidak Lengkap
|
||||
|
||||
@@ -174,13 +174,13 @@ mod.blacklisted.details = Mod ini telah dimasukkan ke dalam daftar blacklist kar
|
||||
mod.missingdependencies.details = Mod ini kekurangan dependensi: {0}
|
||||
mod.erroredcontent.details = Mod ini menimbulkan masalah pada saat proses memuat. Tanyakan pencipta mod untuk memperbaikinya.
|
||||
mod.circulardependencies.details = Mod ini memiliki dependensi yang memerlukan satu sama lain.
|
||||
mod.incompletedependencies.details = Mod ini gagal memuat karena kekurangan dependensi atau tidak valid: {0}.
|
||||
mod.incompletedependencies.details = Mod ini gagal dimuat karena kekurangan dependensi atau tidak valid: {0}.
|
||||
|
||||
mod.requiresversion = Memerlukan versi game: [red]{0}
|
||||
|
||||
mod.errors = Terjadi kesalahan saat memuat konten.
|
||||
mod.errors.map = [scarlet]Errors have occurred loading map content. All custom content has been disabled.[]\nThis map will likely not function correctly.
|
||||
mod.noerrorplay = [scarlet]Anda memiliki mod dengan suatu kesalahan.[] Nonaktifkan mod yang bersangkutan atau perbaiki kesalahan tersebut sebelum bermain.
|
||||
mod.errors.map = [scarlet]Terjadi kesalahan saat memuat konten peta. Semua konten kustom telah dinonaktifkan.[]\nPeta ini kemungkinan besar tidak akan berfungsi dengan benar.
|
||||
mod.noerrorplay = [scarlet]Anda memiliki mod yang bermasalah.[] Nonaktifkan mod tersebut atau perbaiki kesalahannya sebelum bermain.
|
||||
mod.enable = Aktifkan
|
||||
mod.requiresrestart = Game akan ditutup untuk mengaktifkan perubahan mod.
|
||||
mod.reloadrequired = [scarlet]Mulai Ulang Diperlukan
|
||||
@@ -218,8 +218,8 @@ available = Teknologi baru tersedia!
|
||||
unlock.incampaign = < Buka dalam kampanye untuk detail lebih lanjut >
|
||||
campaign.select = Pilih untuk Memulai Kampanye
|
||||
campaign.none = [lightgray]Pilih planet untuk memulai.\nPilihan ini dapat diubah setiap saat.
|
||||
campaign.erekir = Konten baru yang disempurnakan. Kemajuan kampanye lebih linier.\n\nKualitas peta yang tinggi dan pengalaman lebih mantap.
|
||||
campaign.serpulo = Konten lawas; pengalaman klasik. Lebih terbuka dan banyak konten.\n\nPeta dan mekanisme kampanye yang berpotensi tidak seimbang. Kurang halus
|
||||
campaign.erekir = Konten baru; lebih berkualitas. Proses kampanye yang lebih mulus.\n\nLebih sulit. Peta berkualitas lebih tinggi dan pengalaman keseluruhan yang lebih baik.
|
||||
campaign.serpulo = Konten lawas; pengalaman klasik. Lebih terbuka, lebih banyak konten.\n\nPeta dan mekanisme kampanye yang berpotensi tidak seimbang. Konten kurang berkualitas.
|
||||
campaign.difficulty = Tingkat Kesulitan
|
||||
campaign.rework.title = Pemberitahuan Perubahan Kampanye
|
||||
campaign.rework.serpulo = [accent]⚠ Kampanye Serpulo telah dikerjakan ulang.[]\n\nPosisi sektor dan tingkat kesulitan telah berubah. Anda mungkin mengalami masalah terkait dengan data simpanan kampanye yang tersisa dari tata letak sektor yang lama.\n\nUntuk pengalaman yang lebih mulus, pertimbangkan untuk menghapus simpanan kampanye Anda di pengaturan.
|
||||
@@ -287,7 +287,7 @@ trace.playername = Nama pemain: [accent]{0}
|
||||
trace.ip = IP: [accent]{0}
|
||||
trace.id = ID: [accent]{0}
|
||||
trace.language = Bahasa: [accent]{0}
|
||||
trace.mobile = Klien Mobile: [accent]{0}
|
||||
trace.mobile = Klien Seluler: [accent]{0}
|
||||
trace.modclient = Klien Kustom: [accent]{0}
|
||||
trace.times.joined = Total Bergabung: [accent]{0}
|
||||
trace.times.kicked = Total Dikeluarkan: [accent]{0}
|
||||
@@ -331,10 +331,10 @@ cantconnect = Gagal bergabung ke permainan ([accent]{0}[]).
|
||||
connecting = [accent]Menghubungkan...
|
||||
reconnecting = [accent]Menghubungkan kembali...
|
||||
|
||||
connecting.establish = [accent]Establishing connection...
|
||||
receiving.world = [accent]Receiving world data ({0})...
|
||||
receiving.assets = [accent]Receiving assets ({0})...
|
||||
receiving.assets.fail = Error occurred while receiving assets.
|
||||
connecting.establish = [accent]Membangun koneksi...
|
||||
receiving.world = [accent]Menerima data dunia ({0})...
|
||||
receiving.assets = [accent]Menerima aset ({0})...
|
||||
receiving.assets.fail = Terjadi kesalahan saat menerima aset.
|
||||
|
||||
server.port = Port:
|
||||
server.invalidport = Nomor port tidak valid!
|
||||
@@ -352,10 +352,10 @@ save.export = Ekspor Simpanan
|
||||
save.import.invalid = [accent]Simpanan ini tidak valid!
|
||||
save.import.fail = [crimson]Gagal mengimpor simpanan: [accent]{0}
|
||||
save.export.fail = [crimson]Gagal mengekspor simpanan: [accent]{0}
|
||||
save.export.needsload = [scarlet]⚠ This save contains embedded assets.[]\nLoad into this save before exporting it.
|
||||
save.assets.missing = Missing Assets
|
||||
save.assets.missing.list = Asset List...
|
||||
save.assets.missing.info = [scarlet]⚠ This save contains missing assets![]\n\n[lightgray]This is likely because the save file was not properly exported.\n[lightgray]When sharing saves, only export through the in-game UI. Do not copy save files directly.\n[lightgray]If transferring files is necessary, make sure the [accent]assetCache[] folder is copied as well.
|
||||
save.export.needsload = [scarlet]⚠ File simpanan ini berisi aset yang terintegrasi.[]\nMuat file simpanan ini sebelum mengekspornya.
|
||||
save.assets.missing = Aset Hilang
|
||||
save.assets.missing.list = Daftar Aset...
|
||||
save.assets.missing.info = [scarlet]⚠ File simpanan ini berisi aset yang hilang![]\n\n[lightgray]Hal ini kemungkinan besar terjadi karena file simpanan tidak diekspor dengan benar.\n[lightgray]Saat berbagi file simpanan, ekspor file simpanan hanya melalui antarmuka pengguna dalam game. Jangan menyalin file simpanan dari folder mindusty secara langsung.\n[lightgray]Jika pemindahan file diperlukan, pastikan folder [accent]assetCache[] juga disalin.
|
||||
save.import = Impor Simpanan
|
||||
save.newslot = Simpan nama:
|
||||
save.rename = Ganti nama
|
||||
@@ -436,7 +436,7 @@ commandmode.name = [accent]Mode Perintah
|
||||
commandmode.nounits = [unit kosong]
|
||||
wave = [accent]Gelombang {0}
|
||||
wave.cap = [accent]Gelombang {0}/{1}
|
||||
wave.waiting = [lightgray]Gelombang di {0}
|
||||
wave.waiting = [lightgray]Gelombang berikutnya dalam {0}
|
||||
wave.waveInProgress = [lightgray]Gelombang sedang berlangsung
|
||||
waiting = [lightgray]Menunggu...
|
||||
waiting.players = Menunggu pemain lainnya...
|
||||
@@ -518,72 +518,73 @@ editor.shifty = Shift Y
|
||||
|
||||
asset.emoji = Emojis
|
||||
asset.patch = Patch
|
||||
asset.content = Content
|
||||
asset.bundle = Translation Bundle
|
||||
asset.image = Image
|
||||
asset.sound = Sound
|
||||
asset.music = Music
|
||||
asset.content = Konten
|
||||
asset.bundle = Paket Terjemahan
|
||||
asset.image = Gambar
|
||||
asset.sound = Suara
|
||||
asset.music = Musik
|
||||
|
||||
content.unit = Unit
|
||||
content.item = Item
|
||||
content.liquid = Liquid
|
||||
content.block = Block
|
||||
content.item = Bahan
|
||||
content.liquid = Zat Cair
|
||||
content.block = Blok
|
||||
content.planet = Planet
|
||||
content.weather = Weather
|
||||
content.status = Status Effect
|
||||
content.weather = Cuaca
|
||||
content.status = Efek Status
|
||||
|
||||
patch.set = Patchset: {0}
|
||||
patch.none = [lightgray]Tidak ada patchset yang dimuat.
|
||||
patch.errors = Daftar Patchset Error
|
||||
patch.none = [lightgray]Tidak ada patchset yang ditemukan.
|
||||
patch.errors = Patchset Error
|
||||
patch.importerror = Gagal mengimpor patchset
|
||||
patch.delete.confirm = Apakah Anda yakin ingin menghapus patchset ini?
|
||||
patch.path = Path:
|
||||
patch.path = Jalur:
|
||||
patch.fields = {0} bidang
|
||||
|
||||
bundle.lines = {0} lines
|
||||
bundle.lines = {0} baris
|
||||
|
||||
images = Images
|
||||
asset.title = Data Patches & Assets
|
||||
asset.guide = Usage Guide
|
||||
asset.bundle.exists = A bundle with path '{0}' already exists.
|
||||
asset.importzip = Import Asset Zip
|
||||
asset.exportzip = Export Asset Zip
|
||||
asset.image.importzip = Import Zip
|
||||
asset.image.exportzip = Export Zip
|
||||
asset.clearall = Clear All
|
||||
asset.clearall.confirm = Are you sure that you want to clear [red]all[] assets from this map?\nThis includes images, audio, content, etc.
|
||||
asset.imports = Import Results
|
||||
asset.imported = [accent]{0} assets imported.
|
||||
asset.import.none = No valid asset files found in zip archive.
|
||||
asset.content.errors = Content Errors
|
||||
asset.content.add = Add Content
|
||||
asset.content.type = Type:
|
||||
asset.content.exists = [red]Content with that name already exists!
|
||||
asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
asset.images = Data Patch Images
|
||||
asset.image.imports = Import Results
|
||||
asset.image.imported = [accent]{0} images imported.
|
||||
asset.image.none = No valid PNG files found in zip archive.
|
||||
asset.image.error = [red]The following errors were encountered:[]
|
||||
asset.image.clearall.confirm = Are you certain that you wish to clear all images?
|
||||
asset.image.info = Image Info
|
||||
asset.image.toolarge = Image ([lightgray]{0}x{1}[]) is too large. Maximum size is {2}x{3}.
|
||||
asset.image.exists = An image with that path/name already exists:\n[lightgray]{0}
|
||||
asset.image.delete.confirm = Are you certain that you wish to delete this image?
|
||||
asset.image.name = [accent]File Name: [lightgray]{0}
|
||||
asset.image.region.name = [accent]Region Name: [lightgray]{0}
|
||||
asset.image.path = [accent]Path: [lightgray]{0}
|
||||
asset.image.env = [accent]Uses Environment Atlas: [lightgray]{0}
|
||||
asset.image.size = [accent]Size: [lightgray]{0}x{1}
|
||||
asset.image.filesize = [accent]File Size: [lightgray]{0}
|
||||
asset.image.packfailed = [red]⚠ Failed to pack sprite![]
|
||||
asset.image.packfailed.env = This is likely caused by a lack of space in the environment atlas.\nNote that environment sprites are limited to a 512x512 total area.
|
||||
images = Gambar
|
||||
asset.title = Patch Data & Aset
|
||||
asset.guide = Panduan Penggunaan
|
||||
asset.bundle.exists = Paket terjemahan dengan jalur '{0}' sudah ada.
|
||||
asset.importzip = Impor Aset Zip
|
||||
asset.exportzip = Ekspor Aset Zip
|
||||
asset.image.importzip = Impor Zip
|
||||
asset.image.exportzip = Ekspor Zip
|
||||
asset.clearall = Hapus Semua
|
||||
asset.clearall.confirm = Apakah Anda yakin ingin menghapus [red]semua[] aset dari peta ini?\nTermasuk gambar, audio, konten, dll.
|
||||
asset.imports = Impor Hasil
|
||||
asset.imported = [accent]{0} aset diimpor.
|
||||
asset.import.none = Tidak ada file aset yang valid di dalam arsip zip.
|
||||
asset.content.errors = Konten Bermasalah
|
||||
asset.content.add = Tambahkan Konten
|
||||
asset.content.type = Tipe:
|
||||
asset.content.exists = [red]Konten dengan nama tersebut sudah ada!
|
||||
asset.content.badname = [red]Nama tidak valid! Penggunaan simbol tidak diizinkan.
|
||||
asset.content.import.file = Impor File
|
||||
asset.content.import.clipboard = Impor Dari Papan Klip
|
||||
asset.exists = Tipe aset tersebut dengan jalur/nama yang sama sudah ada:\n[lightgray]{0}
|
||||
asset.exists.audio = Aset suara/musik dengan nama tersebut sudah dimuat:\n[lightgray]{0}
|
||||
asset.broken = File aset ini tidak dapat ditemukan.\nHal ini mungkin disebabkan oleh data yang diimpor tidak tepat, atau simpanan yang diekspor telah rusak.
|
||||
asset.audio.invalid = File audio tidak dapat dimuat.\nPastikan formatnya adalah OGG atau MP3 yang valid.
|
||||
asset.delete.confirm = Apakah Anda yakin ingin menghapus aset ini?
|
||||
asset.images = Gambar Patch Data
|
||||
asset.image.imports = Impor Hasil
|
||||
asset.image.imported = [accent]{0} gambar diimpor.
|
||||
asset.image.none = Tidak ada file PNG yang valid di dalam arsip zip.
|
||||
asset.image.error = [red]Berikut kesalahan yang ditemukan:[]
|
||||
asset.image.clearall.confirm = Apakah Anda yakin ingin menghapus semua gambar?
|
||||
asset.image.info = Info Gambar
|
||||
asset.image.toolarge = Gambar ([lightgray]{0}x{1}[]) terlalu besar. Ukuran maksimum {2}x{3}.
|
||||
asset.image.exists = Gambar dengan jalur/nama tersebut sudah ada:\n[lightgray]{0}
|
||||
asset.image.delete.confirm = Apakah Anda yakin ingin menghapus gambar ini?
|
||||
asset.image.name = [accent]Nama File: [lightgray]{0}
|
||||
asset.image.region.name = [accent]Nama Wilayah: [lightgray]{0}
|
||||
asset.image.path = [accent]Jalur: [lightgray]{0}
|
||||
asset.image.env = [accent]Penggunaan Atlas lingkungan: [lightgray]{0}
|
||||
asset.image.size = [accent]Ukuran: [lightgray]{0}x{1}
|
||||
asset.image.filesize = [accent]Ukuran File: [lightgray]{0}
|
||||
asset.image.packfailed = [red]⚠ Gagal mengemas sprite![]
|
||||
asset.image.packfailed.env = Hal ini kemungkinan disebabkan oleh kurangnya ruang dalam atlas lingkungan.\nPerlu dicatat bahwa total area untuk sprite lingkungan dibatasi sebesar 512x512.
|
||||
|
||||
asset.emoji.delete = Delete Selected ({0})
|
||||
asset.emoji.notfound = Image with specified name not found.
|
||||
@@ -608,8 +609,6 @@ waves.max = unit maksimum
|
||||
waves.guardian = Penjaga
|
||||
waves.preview = Pratinjau
|
||||
waves.random = Acak
|
||||
waves.copy = Salin ke Papan Klip
|
||||
waves.load = Tempel dari Papan Klip
|
||||
waves.invalid = Gelombang tidak valid di papan klip.
|
||||
waves.copied = Gelombang tersalin.
|
||||
waves.none = Tidak ada musuh yang didefinisikan.\nIngat bahwa susunan gelombang yang kosong akan diubah menjadi susunan gelombang standar secara otomatis.
|
||||
@@ -633,7 +632,7 @@ all = Semua
|
||||
editor.default = [lightgray]<Standar>
|
||||
details = Detail...
|
||||
edit = Sunting
|
||||
edit.menu = Edit...
|
||||
edit.menu = Sunting...
|
||||
variables = Variabel
|
||||
logic.error.toolong = Kode prosesor terlalu panjang (Batas: {0} byte terkompresi, panjang sebenarnya: {1} byte)
|
||||
logic.clear.confirm = Apakah Anda yakin ingin menghapus semua kode dari prosesor ini?
|
||||
@@ -776,8 +775,8 @@ locales.showsame = Tampilkan properti yang memiliki nilai yang sama di lokasi be
|
||||
locales.viewproperty = Lihat di semua paket lokal
|
||||
locales.viewing = Melihat properti "{0}"
|
||||
locales.addicon = Tambahkan Ikon
|
||||
locales.property.name = nama
|
||||
locales.property.text = teks
|
||||
locales.property.name = 'nama string'
|
||||
locales.property.text = 'isi teks'
|
||||
|
||||
width = Lebar:
|
||||
height = Tinggi:
|
||||
@@ -799,7 +798,7 @@ editor = Penyunting
|
||||
mapeditor = Penyunting Peta
|
||||
|
||||
abandon = Tinggalkan
|
||||
abandon.text = Zona ini dan semua sumber daya di dalamnya akan berada di tangan musuh.
|
||||
abandon.text = Sektor ini dan semua sumber daya di dalamnya akan berada di tangan musuh.
|
||||
locked = Terkunci
|
||||
complete = [lightgray]Selesaikan:
|
||||
requirement.wave = Raih gelombang {0} dalam {1}
|
||||
@@ -903,7 +902,7 @@ campaign.complete = [accent]Selamat.\n\nMusuh di {0} telah dikalahkan.\n[lightgr
|
||||
sectorlist = Sektor
|
||||
sectorlist.attacked = {0} sedang diserang
|
||||
sectors.unexplored = [lightgray]Belum Ditelusuri
|
||||
sectors.attempts = Percobaan:
|
||||
sectors.attempts = Percobaan ke:
|
||||
sectors.resources = Sumber Daya:
|
||||
sectors.production = Produksi:
|
||||
sectors.export = Ekspor:
|
||||
@@ -999,7 +998,6 @@ sector.mycelialBastion.name = Benteng Miselium
|
||||
sector.frontier.name = Perbatasan
|
||||
sector.sunkenPier.name = Dermaga Karam
|
||||
sector.littoralShipyard.name = Galangan Kapal Pesisir
|
||||
sector.cruxscape.name = Cruxscape
|
||||
sector.geothermalStronghold.name = Benteng Geotermal
|
||||
|
||||
sector.groundZero.description = Lokasi yang optimal untuk bermain satu kali lagi. Sangat sedikit musuh. Sedikit sumber daya.\n\nKumpulkan timah dan tembaga sebanyak yang Anda bisa.\nMulai dari sini.
|
||||
@@ -1032,7 +1030,7 @@ sector.weatheredChannels.description = [gray][tujuan opsional][]\nSistem selat i
|
||||
sector.mycelialBastion.description = Kompleks benteng ini terletak jauh di dalam wilayah spora, mengancam sektor-sektor tetangga dengan unit-unit yang canggih.\n\nSerang kompleks tersebut. Dapatkan teknologi di dalamnya. Manfaatkan unit yang dapat melewati semua medan.
|
||||
sector.littoralShipyard.description = Terletak di ujung terjauh laut tengah, fasilitas produksi unit laut ini memiliki teknologi untuk membangun unit-unit canggih.\n\nHancurkan fasilitas ini, dan gunakan teknologinya untuk membantu penyelesaian tujuan akhir.
|
||||
|
||||
sector.onset.name = Serangan Awal
|
||||
sector.onset.name = Awal
|
||||
sector.aegis.name = Aegis
|
||||
sector.lake.name = Danau
|
||||
sector.intersect.name = Perempatan
|
||||
@@ -1097,11 +1095,11 @@ settings.resetKey = Atur Ulang
|
||||
settings.controls = Kontrol
|
||||
settings.game = Permainan
|
||||
settings.sound = Suara
|
||||
settings.dev = Developer Options
|
||||
settings.dev = Opsi Pengembang
|
||||
settings.graphics = Grafik
|
||||
settings.cleardata = Bersihkan Data Permainan...
|
||||
settings.cleardata = Bersihkan Data Game...
|
||||
settings.clear.confirm = Apakah Anda yakin ingin membersihkan data ini?\nApa yang sudah dilakukan tidak dapat dibatalkan!
|
||||
settings.clearall.confirm = [scarlet]PERINGATAN![]\nIni akan membersihkan semua data permainan, termasuk simpanan, peta, teknologi yang terbuka, dan keybind.\nSetelah Anda menekan 'ok', permainan akan membersihkan semua data dan keluar secara otomatis.
|
||||
settings.clearall.confirm = [scarlet]PERINGATAN![]\nIni akan membersihkan semua data game, termasuk simpanan, peta, teknologi yang terbuka, dan keybind.\nSetelah Anda menekan 'ok', game akan membersihkan semua data dan keluar secara otomatis.
|
||||
settings.clearsaves.confirm = Apakah Anda yakin ingin membersihkan semua simpanan?
|
||||
settings.clearsaves = Bersihkan Simpanan
|
||||
settings.clearresearch = Bersihkan Riset Kampanye
|
||||
@@ -1147,7 +1145,7 @@ stat.targetsground = Target Darat
|
||||
stat.crushdamage = Damage Benturan
|
||||
stat.legsplashdamage = Damage Percikan Kaki
|
||||
stat.itemsmoved = Kecepatan Barang
|
||||
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
|
||||
stat.itemsmoved.info = Kecepatan barang seringkali tidak mulus dan berpengaruh dengan FPS.
|
||||
stat.launchtime = Selang Waktu Peluncuran
|
||||
stat.shootrange = Jarak
|
||||
stat.size = Ukuran
|
||||
@@ -1261,10 +1259,10 @@ ability.stat.repairspeed = [stat]{0}/dtk[lightgray] kecepatan perbaikan
|
||||
ability.stat.deflectchance = [stat]{0}%[lightgray] peluang defleksi
|
||||
ability.stat.slurpheal = [stat]{0}[lightgray] nyawa/unit cair
|
||||
ability.stat.cooldown = [stat]{0} dtk[lightgray] waktu pendinginan
|
||||
ability.stat.maxtargets = [stat]{0}[lightgray] target maksimal
|
||||
ability.stat.maxtargets = [stat]{0}[lightgray] target maksimum
|
||||
ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] jumlah jenis perbaikan yang sama
|
||||
ability.stat.damagereduction = [stat]{0}%[lightgray] pengurangan damage
|
||||
ability.stat.minspeed = [stat]{0} ubin/dtk[lightgray] kecepatan minimal
|
||||
ability.stat.minspeed = [stat]{0} ubin/dtk[lightgray] kecepatan minimum
|
||||
ability.stat.duration = [stat]{0} dtk[lightgray] durasi
|
||||
ability.stat.buildtime = [stat]{0} dtk[lightgray] waktu membangun
|
||||
|
||||
@@ -1382,7 +1380,7 @@ category.crafting = Pemasukan/Pengeluaran
|
||||
category.function = Fungsi
|
||||
category.optional = Pilihan Peningkatan
|
||||
setting.alwaysmusic.name = Selalu Putar Musik
|
||||
setting.alwaysmusic.description = Saat diaktifkan, musik akan selalu diputar berulang-ulang di dalam game. \nSaat dinonaktifkan, musik hanya diputar secara acak.
|
||||
setting.alwaysmusic.description = Saat diaktifkan, musik akan selalu diputar berulang-ulang di dalam game.\nSaat dinonaktifkan, musik hanya diputar secara acak.
|
||||
setting.skipcoreanimation.name = Lewati Animasi Peluncuran atau Pendaratan Inti
|
||||
setting.landscape.name = Kunci Pemandangan
|
||||
setting.shadows.name = Bayangan
|
||||
@@ -1425,11 +1423,11 @@ setting.seconds = {0} detik
|
||||
setting.milliseconds = {0} milidetik
|
||||
setting.fullscreen.name = Layar Penuh
|
||||
setting.fps.name = Tampilkan FPS & Ping
|
||||
setting.console.name = Hidupkan Konsol
|
||||
setting.drawhitboxes.name = Display Hitboxes
|
||||
setting.showperformance.name = Display Performance Metrics
|
||||
setting.buildingtimestep.name = Fixed Building Timestep
|
||||
setting.buildingtimestep.description = Runs buildings on a fixed timestep with constant delta,\nas opposed to every frame with variable delta.\nIf buildings cannot be updated fast enough, the game will slow down.\nIf you don't know what that means, don't touch this option.
|
||||
setting.console.name = Aktifkan Konsol
|
||||
setting.drawhitboxes.name = Tampilkan Hitbox
|
||||
setting.showperformance.name = Tampilkan Metrik Performa
|
||||
setting.buildingtimestep.name = Interval Waktu Pembangunan Tetap
|
||||
setting.buildingtimestep.description = Menjalankan pembangunan pada interval waktu tetap dengan delta konstan,\nberbeda dengan setiap frame dengan delta variabel.\nJika bangunan tidak dapat diperbarui dengan cukup cepat, permainan akan melambat.\nJika Anda tidak tahu apa artinya, jangan aktifkan opsi ini.
|
||||
setting.smoothcamera.name = Kamera Halus
|
||||
setting.detach-camera.name = Kamera Bebas
|
||||
setting.detach-camera.description = Jika diaktifkan, kamera tidak akan mengikuti unit pemain.\nPengaturan ini dapat ditautkan ke keybind.
|
||||
@@ -1444,7 +1442,7 @@ setting.atmosphere.name = Tampilkan Atmosfer Planet
|
||||
setting.drawlight.name = Gambar Kegelapan atau Pencahayaan
|
||||
setting.ambientvol.name = Volume Sekeliling
|
||||
setting.mutemusic.name = Bisukan Musik
|
||||
setting.sfxvol.name = Volume Suara Efek
|
||||
setting.sfxvol.name = Volume Efek Suara
|
||||
setting.mutesound.name = Bisukan Suara
|
||||
setting.communityservers.name = Ambil Daftar Server Komunitas
|
||||
setting.savecreate.name = Otomatis Menyimpan
|
||||
@@ -1460,10 +1458,10 @@ setting.hidedisplays.name = Sembunyikan Tampilan Logika
|
||||
setting.macnotch.name = Sesuaikan tampilan dengan batas layar
|
||||
setting.macnotch.description = Mulai ulang diperlukan untuk menerapkan perubahan
|
||||
|
||||
steam.friendsonly = Hanya Teman
|
||||
steam.friendsonly.tooltip = Mengatur bisa atau tidaknya teman Steam bergabung ke permainanmu.\nMenghapus centang pada kotak ini akan membuat permainan Anda menjadi publik - siapa saja dapat bergabung.
|
||||
steam.friendsonly = Hanya Teman Steam
|
||||
steam.friendsonly.tooltip = Hanya teman Steam yang dapat bergabung ke permainan Anda.\nDengan menghapus centang pada kotak ini, permainan Anda akan menjadi publik - siapa pun dapat bergabung.
|
||||
setting.maxmagnificationmultiplierpercent.name = Jarak Kamera Minimum
|
||||
setting.minmagnificationmultiplierpercent.name = Jarak Kamera Maksimal
|
||||
setting.minmagnificationmultiplierpercent.name = Jarak Kamera Maksimum
|
||||
setting.minmagnificationmultiplierpercent.description = Nilai yang tinggi dapat menyebabkan masalah performa.
|
||||
public.beta = Ingat bahwa game dalam versi beta tidak dapat membuat lobi publik.
|
||||
uiscale.reset = Skala UI telah diubah.\nTekan "OK" untuk mengonfirmasi.\n[scarlet]Kembali dan keluar di[accent] {0}[] pengaturan...
|
||||
@@ -1517,7 +1515,7 @@ keybind.unit_command_enter_payload.name = Perintah Unit: Masuk ke Muatan
|
||||
keybind.unit_command_loop_payload.name = Perintah Unit: Perulangan Transfer Unit
|
||||
|
||||
keybind.rebuild_select.name = Membangun Ulang Wilayah
|
||||
keybind.schematic_select.name = Pilih Daerah
|
||||
keybind.schematic_select.name = Pilih Wilayah
|
||||
keybind.schematic_menu.name = Menu Skematik
|
||||
keybind.schematic_flip_x.name = Balik Skematik Horizontal
|
||||
keybind.schematic_flip_y.name = Balik Skematik Vertikal
|
||||
@@ -1561,7 +1559,7 @@ keybind.research.name = Riset
|
||||
keybind.block_info.name = Info Blok
|
||||
keybind.chat.name = Pesan
|
||||
keybind.player_list.name = Daftar Pemain
|
||||
keybind.console.name = Papan Konsol
|
||||
keybind.console.name = Konsol
|
||||
keybind.rotate.name = Putar
|
||||
keybind.rotateplaced.name = Putar yang telah Dibangun (Tekan dan Tahan)
|
||||
keybind.toggle_menus.name = Aktifkan Menu
|
||||
@@ -1571,10 +1569,10 @@ keybind.chat_scroll.name = Gulir Pesan
|
||||
keybind.chat_mode.name = Ubah Mode Pesan
|
||||
keybind.drop_unit.name = Turunkan Unit
|
||||
keybind.zoom_minimap.name = Perbesar Peta Kecil
|
||||
keybind.detach_camera.name = Atur Kamera Bebas
|
||||
keybind.teleport_cursor.name = Teleport To Cursor (Sandbox)
|
||||
keybind.debug_hitboxes.name = Atur Debug Hitbox
|
||||
keybind.performance_metrics.name = Toggle Performance Metrics
|
||||
keybind.detach_camera.name = Aktifkan Kamera Bebas
|
||||
keybind.teleport_cursor.name = Teleportasi ke Kursor (Khusus Mode Sandbox)
|
||||
keybind.debug_hitboxes.name = Aktifkan Debug Hitbox
|
||||
keybind.performance_metrics.name = Aktifkan Metrik Performa
|
||||
mode.help.title = Deskripsi mode permainan
|
||||
mode.survival.name = Bertahan Hidup
|
||||
mode.survival.description = Mode normal. Sumber daya terbatas dan gelombang otomatis.\n[gray]Memerlukan zona pendaratan musuh di dalam peta untuk bermain.
|
||||
@@ -1632,7 +1630,7 @@ rules.enemyCheat = Sumber Daya Musuh Tak Terbatas
|
||||
rules.blockhealthmultiplier = Penggandaan Nyawa Blok
|
||||
rules.blockdamagemultiplier = Penggandaan Damage Blok
|
||||
rules.unitfactoryactivation = Penundaan Aktivasi Pabrik Unit
|
||||
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
|
||||
rules.unitfactoryactivation.objective = Pabrik Unit Aktif dalam: {0}
|
||||
rules.unitbuildspeedmultiplier = Penggandaan Kecepatan Produksi Unit
|
||||
rules.unitcostmultiplier = Penggandaan Bahan Produksi Unit
|
||||
rules.unithealthmultiplier = Penggandaan Nyawa Unit
|
||||
@@ -1674,7 +1672,7 @@ rules.invasions = Invasi Sektor Musuh
|
||||
rules.legacylaunchpads = Mekanisme Alas Peluncur Warisan
|
||||
rules.legacylaunchpads.info = Mengizinkan penggunaan alas peluncur tanpa alas pendaratan, seperti pada versi 7.0.
|
||||
landingpad.legacy.disabled = [scarlet]\ue815 Nonaktifkan[lightgray] (Alas Peluncur Warisan diaktifkan)
|
||||
rules.hidespawns = Hide Enemy Spawns
|
||||
rules.hidespawns = Sembunyikan Zona Pendaratan Musuh
|
||||
rules.randomwaveai = Gelombang AI yang Tak Terduga
|
||||
rules.pauseDisabled = Nonaktifkan Jeda
|
||||
rules.fire = Api
|
||||
@@ -1687,14 +1685,14 @@ rules.weather.always = Selalu
|
||||
rules.weather.duration = Durasi:
|
||||
|
||||
rules.randomwaveai.info = Membuat unit yang muncul dalam gelombang menargetkan struktur bangunan secara acak\nalih-alih menyerang inti atau generator pembangkit listrik secara langsung.
|
||||
rules.placerangecheck.info = Mencegah pemain menempatkan apa pun di dekat bangunan musuh.\nKetika mencoba memasang menara, jangkauannya akan ditingkatkan sehingga menara tidak akan bisa menjangkau musuh.
|
||||
rules.placerangecheck.info = Mencegah pemain menempatkan apa pun di dekat bangunan musuh.\nKetika mencoba membangun menara, jangkauannya akan ditingkatkan sehingga menara tidak akan bisa menjangkau bangunan musuh.
|
||||
rules.onlydepositcore.info = Mencegah unit menyimpan bahan ke dalam bangunan apa pun kecuali inti.
|
||||
|
||||
database-category.item = Bahan
|
||||
database-category.liquid = Zat Cair
|
||||
database-category.unit = Unit
|
||||
database-category.block = Blok
|
||||
database-category.status = Status Efek
|
||||
database-category.status = Efek Status
|
||||
database-category.sector = Sektor
|
||||
database-category.team = Faksi
|
||||
|
||||
@@ -2253,7 +2251,7 @@ hint.respawn = Untuk muncul kembali seperti awal, tekan [accent][[V][].
|
||||
hint.respawn.mobile = Anda telah mengambil alih kendali dari sebuah unit atau bangunan. Untuk muncul kembali sebagai unit inti, [accent]ketuk avatar di kiri atas[].
|
||||
hint.desktopPause = Tekan [accent][[Spasi][] untuk menjeda dan menghentikan jeda permainan.
|
||||
hint.breaking = [accent]Klik Kanan[] dan seret untuk menghancurkan blok.
|
||||
hint.breaking.mobile = Aktifkan :hammer: [accent]palu[] di kanan bawah dan ketuk untuk menghancurkan blok.\n\nTahan jari Anda untuk beberapa saat lalu seret pada bagian yang dipilih untuk menghancurkannya.
|
||||
hint.breaking.mobile = Gunakan :hammer: [accent]palu[] di kanan bawah dan ketuk untuk menghancurkan blok.\n\nTahan jari Anda untuk beberapa saat lalu seret pada bagian yang dipilih untuk menghancurkannya.
|
||||
hint.blockInfo = Lihat informasi dari sebuah blok dengan memilihnya di [accent]menu bangunan[], lalu pilih tombol [accent][[?][] di sebelah kanan.
|
||||
hint.derelict = Bangunan berwarna [accent]abu-abu[] adalah sisa-sisa dari markas lama yang hancur dan tidak dapat berfungsi kembali.\n\nBangunan tersebut dapat [accent]didekonstruksi[] menjadi sumber daya, atau diperbaiki.
|
||||
hint.research = Gunakan tombol :tree: [accent]Pohon Teknologi[] untuk meriset teknologi baru.
|
||||
@@ -2761,7 +2759,7 @@ lst.getblock = Mendapatkan data ubin di lokasi manapun.
|
||||
lst.setblock = Menentukan data ubin di lokasi manapun.
|
||||
lst.spawnunit = Munculkan unit pada tempat yang ditentukan.
|
||||
lst.spawnbullet = Munculkan peluru pada tempat yang ditentukan.
|
||||
lst.applystatus = Menerapkan atau menghapus status efek dari sebuah unit.
|
||||
lst.applystatus = Menerapkan atau menghapus efek status dari sebuah unit.
|
||||
lst.weathersense = Periksa apakah jenis cuaca aktif.
|
||||
lst.weatherset = Tetapkan suatu keadaan pada jenis cuaca saat ini.
|
||||
lst.spawnwave = Simulasikan adanya gelombang pada lokasi acak.\nTidak akan ditambahkan pada jumlah gelombang keseluruhan.
|
||||
@@ -2778,10 +2776,10 @@ lst.getflag = Periksa apakah ada global flag yang ditentukan.
|
||||
lst.setprop = Menetapkan properti unit atau bangunan.
|
||||
lst.effect = Buat efek partikel.
|
||||
lst.sync = Sinkronkan variabel di seluruh jaringan.\nHanya dipanggil paling banyak 10 kali per detik.
|
||||
lst.playsound = Memutar suara. \nVolume dan kontrol suara dapat berupa nilai global, atau dihitung berdasarkan posisi.
|
||||
lst.playmusic = Plays a music track by name, e.g. [accent]"game1"[].\nIf [accent]interrupt[] is true, the previously playing music will be stopped.\nPlaying with null music and interrupt set to true will stop the current track.\nNote that music from data patches must be prefixed with [accent]dp-[].
|
||||
lst.playsound = Memutar suara.\nVolume dan kontrol suara dapat berupa nilai global, atau dihitung berdasarkan posisi.
|
||||
lst.playmusic = Memutar musik berdasarkan nama, misalnya [accent]"game1"[].\nJika [accent]interrupt[] bernilai true, musik yang sedang diputar sebelumnya akan dihentikan.\nMemutar dengan musik [accent]null[] dan [accent]interrupt[] diatur ke true akan menghentikan musik yang sedang diputar saat ini.\nPerhatikan bahwa penamaan musik dari patch data harus diawali dengan [accent]dp-[].
|
||||
lst.makemarker = Buat penanda logika baru di dunia.\nSebuah ID untuk mengidentifikasi penanda ini harus disediakan.\nPenanda saat ini dibatasi hingga 20.000 per dunia.
|
||||
lst.setmarker = Tetapkan properti untuk penanda.\nID yang digunakan harus sama dengan instruksi Membuat Marker.
|
||||
lst.setmarker = Tetapkan properti untuk penanda.\nID yang digunakan harus sama dengan instruksi [accent]Make Marker[].\nNilai [accent]null[] diabaikan.
|
||||
lst.localeprint = Tambahkan nilai properti peta lokal ke buffer teks.\nUntuk menyetel paket peta lokal di penyunting peta, cek [accent]Info Peta > Paket Lokal[].\nJika klien adalah perangkat seluler, coba cetak properti yang diakhiri dengan ".mobile" terlebih dahulu.
|
||||
lst.query = Memerintahkan unit/bangunan di area yang ditentukan.\nHasil dikeluarkan ke [accent]@queries[].\nHasil dapat dibaca dari [accent]@queries[] menggunakan instruksi [accent]Read[] dan sebuah indeks.\nPanjang [accent]@queries[] dapat diukur menggunakan [accent]@size[] sebagai parameter.
|
||||
|
||||
@@ -2814,10 +2812,10 @@ lglobal.@thisy = Koordinat Y dari blok yang mengeksekusi suatu kode
|
||||
lglobal.@links = Jumlah total blok yang ditautkan ke prosesor ini
|
||||
lglobal.@ipt = Kecepatan eksekusi dari prosesor dalam intruksi per tick (60 tick = 1 detik)
|
||||
|
||||
lglobal.@unitCount = Jumlah total dari tipe pada konten unit di dalam game; digunakan dengan intruksi pencarian
|
||||
lglobal.@blockCount = Jumlah total dari tipe pada konten blok di dalam game; digunakan dengan intruksi pencarian
|
||||
lglobal.@itemCount = Jumlah total dari tipe pada konten item di dalam game; digunakan dengan intruksi pencarian
|
||||
lglobal.@liquidCount = Jumlah total dari tipe pada konten cairan di dalam game; digunakan dengan intruksi pencarian
|
||||
lglobal.@unitCount = Jumlah total dari tipe pada konten unit di dalam permainan; digunakan dengan intruksi pencarian
|
||||
lglobal.@blockCount = Jumlah total dari tipe pada konten blok di dalam permainan; digunakan dengan intruksi pencarian
|
||||
lglobal.@itemCount = Jumlah total dari tipe pada konten item di dalam permainan; digunakan dengan intruksi pencarian
|
||||
lglobal.@liquidCount = Jumlah total dari tipe pada konten cairan di dalam permainan; digunakan dengan intruksi pencarian
|
||||
|
||||
lglobal.@server = True jika kode dijalankan di server atau di singleplayer, false sebaliknya
|
||||
lglobal.@client = True jika kode dijalankan dalam sebuah klien disambungkan ke sebuah server
|
||||
|
||||
@@ -563,6 +563,7 @@ asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
@@ -608,8 +609,6 @@ waves.max = numero massimo unità
|
||||
waves.guardian = Guardiano
|
||||
waves.preview = Anteprima
|
||||
waves.random = Random
|
||||
waves.copy = Copia negli Appunti
|
||||
waves.load = Carica dagli Appunti
|
||||
waves.invalid = Ondate dagli appunti non valide.
|
||||
waves.copied = Ondate copiate.
|
||||
waves.none = Nessun nemico impostato.\nNota che le disposizioni di ondate vuote verranno automaticamente rimpiazzate con la disposizione predefinita.
|
||||
@@ -999,7 +998,6 @@ sector.mycelialBastion.name = Bastione del Micelio
|
||||
sector.frontier.name = Frontiera
|
||||
sector.sunkenPier.name = Molo Sommerso
|
||||
sector.littoralShipyard.name = Littoral Shipyard
|
||||
sector.cruxscape.name = Cruxscape
|
||||
sector.geothermalStronghold.name = Roccaforte Geotermica
|
||||
|
||||
sector.groundZero.description = La posizione ottimale per ricominciare. Bassa minaccia nemica. Poche risorse.\nRaccogli quanto più piombo e rame possibile.\nParti.
|
||||
|
||||
@@ -563,6 +563,7 @@ asset.content.badname = [red]無効な名前です!ほとんどの符号は許
|
||||
asset.content.import.file = ファイルをインポート
|
||||
asset.content.import.clipboard = クリップボードからインポート
|
||||
asset.exists = そのタイプのアセットで、同じパス/名前のものが既に存在します:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = アセットファイルが見つかりませんでした。\nデータの不適切なインポート、または正しくエクスポートされていない保存ファイルが原因である可能性があります。
|
||||
asset.audio.invalid = 音声ファイルを読み込めませんでした。\n有効な OGG または MP3 ファイルであることを確認してください。
|
||||
asset.delete.confirm = このアセットを削除してもよろしいですか?
|
||||
@@ -608,8 +609,6 @@ waves.max = 最大ユニット数
|
||||
waves.guardian = ガーディアン
|
||||
waves.preview = プレビュー
|
||||
waves.random = ランダム
|
||||
waves.copy = クリップボードにコピー
|
||||
waves.load = クリップボードから読み込む
|
||||
waves.invalid = クリップボードのウェーブは無効なウェーブです。
|
||||
waves.copied = ウェーブをコピーしました。
|
||||
waves.none = 敵が定義されていません。\n空のウェーブレイアウトはデフォルトのレイアウトに自動的に置き換えられます。
|
||||
@@ -999,7 +998,6 @@ sector.mycelialBastion.name = 菌糸の要塞
|
||||
sector.frontier.name = 辺境辺境
|
||||
sector.sunkenPier.name = 沈んだ桟橋
|
||||
sector.littoralShipyard.name = 沿岸造船所
|
||||
sector.cruxscape.name = クラックス・スケープ
|
||||
sector.geothermalStronghold.name = 地熱要塞
|
||||
|
||||
sector.groundZero.description = 奪回を始めるには最適な場所です。敵の脅威は少ないが、資源が乏しい。\nできるだけ多くの銅と鉛を集めろ。\n開始せよ。
|
||||
|
||||
@@ -563,6 +563,7 @@ asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
@@ -608,8 +609,6 @@ waves.max = 기까지
|
||||
waves.guardian = 수호자
|
||||
waves.preview = 미리보기
|
||||
waves.random = 무작위
|
||||
waves.copy = 클립보드로 복사하기
|
||||
waves.load = 클립보드에서 불러오기
|
||||
waves.invalid = 클립보드에 잘못된 단계 데이터가 있습니다.
|
||||
waves.copied = 단계 복사됨
|
||||
waves.none = 적 단계가 설정되지 않았습니다.\n비어있을 시 자동으로 기본 적 단계 데이터로 설정됩니다.
|
||||
@@ -999,7 +998,6 @@ sector.mycelialBastion.name = 균사 성채
|
||||
sector.frontier.name = 국경 지방
|
||||
sector.sunkenPier.name = 가라앉은 부두
|
||||
sector.littoralShipyard.name = 연안 조선소
|
||||
sector.cruxscape.name = 크럭스케이프
|
||||
sector.geothermalStronghold.name = 지열 요새
|
||||
|
||||
sector.groundZero.description = 이 장소는 다시 시작하기에 최적의 환경을 지녔습니다. 적은 위협적이지 않지만, 자원도 풍부하진 않습니다.\n\n가능한 한 많은 양의 구리와 납을 수집하십시오.\n이제 출격할 시간입니다.
|
||||
|
||||
@@ -18,8 +18,8 @@ linkopen = Šis serveris atsiuntė jums nuorodą. Ar jūs norite atidaryti ją?\
|
||||
clipboardcopy = This server wants to copy text to your clipboard. Are you sure you want to continue?\n\n[sky]{0}
|
||||
linkfail = Nepavyko atidaryti nuorodos!\nURL nukopijuotas į jūsų iškarpinę.
|
||||
screenshot = Ekrano kopija išsaugota į {0}
|
||||
screenshot.invalid = Žemėlapis yra per didelis, potencialiai nepakanka vietos išsaugoti ekrano kopiją.
|
||||
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
|
||||
screenshot.invalid = Žemėlapis yra per didelis, galimai nepakanka vietos išsaugoti ekrano kopijai.
|
||||
screenshot.error = Nepavyko padaryti ekrano nuotraukos. Jūsų įrenginys galimai nepalaiko tokio dydžio ekranvaizdžio.
|
||||
gameover = Žaidimas Baigtas
|
||||
gameover.disconnect = Atsijungti
|
||||
gameover.pvp = [accent] {0}[] komanda laimėjo!
|
||||
@@ -27,7 +27,7 @@ gameover.waiting = [accent]Laukiama kito žemėlapio...
|
||||
highscore = [accent]Naujas rekordas!
|
||||
copied = Nukopijuota.
|
||||
indev.notready = Ši žaidimo dalis dar neparuošta
|
||||
bundle.external = Note: You have successfully loaded an external translation bundle.\n[accent]{0}
|
||||
bundle.external = Pastaba: Sėkmingai įkėlėte išorinį vertimų rinkinį.\n[accent]{0}
|
||||
|
||||
load.sound = Garsai
|
||||
load.map = Žemėlapiai
|
||||
@@ -52,7 +52,7 @@ mods.browser.view-releases = Pažiūrėti leidimus
|
||||
mods.browser.noreleases = [scarlet]Nerasti jokių leidimų\n[accent]Nėjo rasti leidimų šiai modifikacijai. Patikrinkite ar modifikacijos repo yra paskelbtų leidimų.
|
||||
mods.browser.latest = <Naujausia>
|
||||
mods.browser.releases = Leidimai
|
||||
mods.browser.fetching = Fetching Releases...
|
||||
mods.browser.fetching = Ieškoma Leidimų...
|
||||
mods.github.open = Repo
|
||||
mods.github.open-release = Leidimų puslapis
|
||||
mods.browser.sortdate = Rūšioti pagal naujausius
|
||||
@@ -62,7 +62,7 @@ export.file = Eksportuoti failą
|
||||
import.file = Importuoti failą
|
||||
copy.clipboard = Kopijuoti į iškarpinę
|
||||
import.clipboard = Importuoti iš iškarpinės
|
||||
workshop.browse = Browse Workshop
|
||||
workshop.browse = Naršyti Dirbtuves
|
||||
workshop.share = Dalintis Dirbtuvėje
|
||||
|
||||
schematic = Schema
|
||||
@@ -89,15 +89,15 @@ schematic.tagdelconfirm = Visiškai ištrinti šią žymę?
|
||||
schematic.tagexists = Ši žymė jau egzistuoja.
|
||||
|
||||
stats = Statistikos
|
||||
stats.wave = Bangos Praeitos
|
||||
stats.unitsCreated = Units Created
|
||||
stats.enemiesDestroyed = Priešai sunaikinti
|
||||
stats.built = Pastatų pastata
|
||||
stats.destroyed = Pastatų sugriauta
|
||||
stats.deconstructed = Pastatų dekonstruta
|
||||
stats.playtime = Laiko žaista
|
||||
stats.wave = Bangų Įveikta
|
||||
stats.unitsCreated = Vienetų Sukurta
|
||||
stats.enemiesDestroyed = Priešų sunaikinta
|
||||
stats.built = Pastatų Pastatyta
|
||||
stats.destroyed = Pastatų Sugriauta
|
||||
stats.deconstructed = Pastatų Iškonstruota
|
||||
stats.playtime = Laiko Žaista
|
||||
|
||||
globalitems = [accent]Globalūs Daiktai
|
||||
globalitems = [accent]Globalūs Resursai
|
||||
map.delete = Ar esate tikri, jog norite ištrinti žemėlapį "[accent]{0}[]"?
|
||||
level.highscore = Rekordas: [accent]{0}
|
||||
level.select = Lygio pasirinkimas
|
||||
@@ -114,8 +114,8 @@ joingame = Įeiti į žaidimą
|
||||
customgame = Pasirinktinis žaidimas
|
||||
newgame = Naujas žaidimas
|
||||
none = <niekas>
|
||||
none.found = [lightgray]<none found>
|
||||
none.inmap = [lightgray]<none in map>
|
||||
none.found = [lightgray]<nerasta>
|
||||
none.inmap = [lightgray]<žemėlapyje nerasta>
|
||||
minimap = Mini žemėlapis
|
||||
position = Pozicija
|
||||
close = Uždaryti
|
||||
@@ -128,9 +128,9 @@ continue = Tęsti
|
||||
maps.none = [lightgray]Nerasta žemėlapių!
|
||||
invalid = Klaidingas
|
||||
pickcolor = Pasirinkti spalvą
|
||||
color = Color
|
||||
import = Import
|
||||
export = Export
|
||||
color = Spalva
|
||||
import = Importuoti
|
||||
export = Eksportuoti
|
||||
preparingconfig = Ruošiamos konfiguracijos
|
||||
preparingcontent = Ruošiamas turinys
|
||||
uploadingcontent = Talpinamas turinys
|
||||
@@ -140,7 +140,7 @@ committingchanges = Daromi pakeitimai
|
||||
done = Baigta
|
||||
feature.unsupported = Jūsų įrenginys nepalaiko šios funkcijos.
|
||||
|
||||
mods.initfailed = [red]⚠[] The previous Mindustry instance failed to initialize. This was likely caused by misbehaving mods.\n\nTo prevent a crash loop, [red]all mods have been disabled.[]
|
||||
mods.initfailed = [red]⚠[] Praitas Mindustry paleidimas nepavyko. Tikėtina, kad tai sukėlė netinkamai veikiančios modifikacijos.\n\nSiekiant išvengti strigimo pasikartojimo, [red]visos modifijacijos išjungtos.[]
|
||||
mods = Modifikacijos
|
||||
mods.name = Mod:
|
||||
mods.none = [lightgray]Modifikacijos nerastos
|
||||
@@ -149,8 +149,8 @@ mods.report = Pranešti apie klaidas
|
||||
mods.openfolder = Atidaryti modifikacijų aplanką
|
||||
mods.viewcontent = Peržiūrėti turinį
|
||||
mods.reload = Perkrauti
|
||||
mods.reloadexit = Žadimas dabar išsijungs perkrauti modifikacijas.
|
||||
mod.installed = [[Installed]
|
||||
mods.reloadexit = Žaidimas išsijungs modifikacijoms perkrauti.
|
||||
mod.installed = [[Įdiegta]
|
||||
mod.display = [gray]Modifikacijos:[orange] {0}
|
||||
mod.enabled = [lightgray]Įjungta
|
||||
mod.disabled = [scarlet]Išjungta
|
||||
@@ -168,9 +168,9 @@ mod.erroredcontent = [scarlet]Turinio klaidos.
|
||||
mod.circulardependencies = [red]Circular Dependencies
|
||||
mod.incompletedependencies = [red]Nebaigtos Priklausomybės
|
||||
|
||||
mod.requiresversion.details = Requires game version: [accent]{0}[]\nYour game is outdated. This mod requires a newer version of the game (possibly a beta/alpha release) to function.
|
||||
mod.incompatiblemod.details = This mod is incompatible with the latest version of the game. The author must update it, and add [accent]minGameVersion: 154[] to its [accent]mod.json[] file.
|
||||
mod.blacklisted.details = This mod has been manually blacklisted for causing crashes or other issues with this version of the game. Do not use it.
|
||||
mod.requiresversion.details = Reikalinga žaidimo versija: [accent]{0}[]\nJūsų žaidimo versija yra pasenusi. Šiai modifikacijai veikti reikalinga naujesnė žaidimo versija (gali būti beta/alpha leidimas).
|
||||
mod.incompatiblemod.details = Ši modifikacija yra nesuderinama su naujausia žaidimo versija. Autoriui reikia ją atnaujinti ir pridėti [accent]minGameVersion: 154[] į jos [accent]mod.json[] failą.
|
||||
mod.blacklisted.details = Ši modifikacija buvo rankiniu būdu uždrausta, nes sukelia gedimus ar kitas problemas su šia žaidimo versija. Nenaudokite jos.
|
||||
mod.missingdependencies.details = Šiai modifikacijai trūksta priklausomybių: {0}
|
||||
mod.erroredcontent.details = Ši modifikacija kraunant sukėlė klaidų. Paprašykite modifikacijos autoriaus pataisyti jas.
|
||||
mod.circulardependencies.details = Ši modifikacija turi priklausomybių kurios priklauso nuo vieno kito.
|
||||
@@ -179,7 +179,7 @@ mod.incompletedependencies.details = Šios modifikacijos negalima užkrauti dėl
|
||||
mod.requiresversion = Reikia žaidimo versijos: [red]{0}
|
||||
|
||||
mod.errors = Įvyko klaida kraunant turinį.
|
||||
mod.errors.map = [scarlet]Errors have occurred loading map content. All custom content has been disabled.[]\nThis map will likely not function correctly.
|
||||
mod.errors.map = [scarlet]Iškilo klaidų kraunant žemėlapio turinį. Visas modifikuotas turinys išjungas.[]\nŠis žemėlapis, tikėtina, neveiks tinkamai.
|
||||
mod.noerrorplay = [scarlet]Turite modifikacijas su klaidomis.[] Išjunkite modifikacijas su klaidomis arba patasykite jas prieš žaidžiant.
|
||||
mod.enable = Įjungti
|
||||
mod.requiresrestart = Žaidimas dabar išsijungs modifikacijų perkrovimui.
|
||||
@@ -196,15 +196,15 @@ mod.preview.missing = Prieš publikuojant šią modifikaciją workshop'e, jūs p
|
||||
mod.folder.missing = Tik modifikacijos aplanko formoje gali būti publikuojamos workshop'e.\nNorint konvertuoti bet kurią modifikaciją į aplanką, paprasčiausiai išpakuokite jos failą į aplanką ir ištrinkite senąją zip versiją, po to, perkraukite žaidimą arba modifikacijas.
|
||||
mod.scripts.disable = Your device does not support mods with scripts. You must disable these mods to play the game.
|
||||
|
||||
mod.dependencies.error = [scarlet]Mods are missing dependencies
|
||||
mod.dependencies.soft = (optional)
|
||||
mod.dependencies.download = Import
|
||||
mod.dependencies.downloadreq = Import Required
|
||||
mod.dependencies.downloadall = Import All
|
||||
mod.dependencies.status = Import Results
|
||||
mod.dependencies.success = Successfully downloaded:
|
||||
mod.dependencies.failure = Failed to download:
|
||||
mod.dependencies.imported = This mod requires dependencies. Download?
|
||||
mod.dependencies.error = [scarlet]Modifikacijos turi neišpildytų priklausomybių
|
||||
mod.dependencies.soft = (neprivaloma)
|
||||
mod.dependencies.download = Importuoti
|
||||
mod.dependencies.downloadreq = Importuoti privalomus
|
||||
mod.dependencies.downloadall = Importuoti viską
|
||||
mod.dependencies.status = Importavimo Rezultatai
|
||||
mod.dependencies.success = Sėkmingai parsisiųsta:
|
||||
mod.dependencies.failure = Nepavyko parsisiųsti:
|
||||
mod.dependencies.imported = Šiai modifikacijai reikalingos priklausomybės. Atsisiųsti?
|
||||
|
||||
about.button = Apie
|
||||
name = Vardas:
|
||||
@@ -218,14 +218,14 @@ available = Naujas turinys pasiekiamas!
|
||||
unlock.incampaign = < Atrakinkite kampanijoje detalėm >
|
||||
campaign.select = Pasirinkite pradinę kampanija
|
||||
campaign.none = [lightgray]Pasirinkite planetą ant kurios pradėti.\nTai gali būti pakeista bet kada.
|
||||
campaign.erekir = Naujesnis, patobulintas turinys. Daugiausia linijinė kampanijos eiga.\n\nAukštesnės kokybės žemėlapiai ir bendra patirtis.
|
||||
campaign.serpulo = Senesnis turinys; klasikinė versija. Atviresnis.\n\nPotencialiai nebalancuoti žemelapiai ir kampanijos mechanika. Mažiau tobulinta.
|
||||
campaign.difficulty = Difficulty
|
||||
campaign.rework.title = Campaign Changes Notice
|
||||
campaign.rework.serpulo = [accent]⚠ The Serpulo campaign has been reworked.[]\n\nSector positions and difficulty have changed. You may encounter issues relating to leftover campaign saves from the old layout.\n\nFor a cleaner experience, consider resetting your campaign saves in the settings.
|
||||
campaign.erekir = Naujesnis, patobulintas turinys. Daugiausia nuosekli kampanijos eiga.\n\nAukštesnės kokybės žemėlapiai ir bendra patirtis.
|
||||
campaign.serpulo = Senesnis turinys; klasikinė versija. Atviresnis.\n\nPotencialiai nebalansuoti žemelapiai ir kampanijos mechanika. Mažiau tobulinta.
|
||||
campaign.difficulty = Sudėtingumas
|
||||
campaign.rework.title = Kampanijos Pakeitimų Įspėjimas
|
||||
campaign.rework.serpulo = [accent]⚠ Serpulo kampanija buvo perdirba.[]\n\nSektorių pozicijos ir sudėtingumas pasikeitė. Galite susidurti su problemomis, susijusiomis su kampanijos išsaugojimais senesniu formatu.\n\nDėl geresnės patirties, apsvarstykite kampanijos išsaugojimų atstatymą nustatymuose.
|
||||
completed = [accent]Išrasta
|
||||
techtree = Technologijų Medis
|
||||
techtree.select = Technologijų Medį parinkti
|
||||
techtree.select = Technologijų Medžio Pasirinkimas
|
||||
techtree.serpulo = Serpulo
|
||||
techtree.erekir = Erekir
|
||||
research.load = Load
|
||||
@@ -272,7 +272,7 @@ hosts.none = [lightgray]Žaidimų vietiniame tinkle nerasta!
|
||||
host.invalid = [scarlet]Negalima prisijungti prie serverio.
|
||||
|
||||
servers.local = Vietinio Tinklo Serveriai
|
||||
servers.local.steam = Open Games & Local Servers
|
||||
servers.local.steam = Atviri Žaidimai ir Vietiniai Serveriai
|
||||
servers.remote = Nuotoliniai Serveriai
|
||||
servers.global = Globalūs Serveriai
|
||||
|
||||
@@ -286,7 +286,7 @@ trace = Sekti Žaidėją
|
||||
trace.playername = Žaidėjo vardas: [accent]{0}
|
||||
trace.ip = IP: [accent]{0}
|
||||
trace.id = Unikalus ID: [accent]{0}
|
||||
trace.language = Language: [accent]{0}
|
||||
trace.language = Kalba: [accent]{0}
|
||||
trace.mobile = Mobilus Klientas: [accent]{0}
|
||||
trace.modclient = Custom Client: [accent]{0}
|
||||
trace.times.joined = Sykių prisijungta: [accent]{0}
|
||||
@@ -295,18 +295,18 @@ trace.ips = IPs:
|
||||
trace.names = Vardai:
|
||||
invalidid = Netaisyklingas kliento ID! Praneškite apie klaidą.
|
||||
|
||||
player.ban = Baninti
|
||||
player.ban = Užblokuoti
|
||||
player.kick = Išmesti
|
||||
player.trace = Sekti
|
||||
player.admin = Perjungti admininistratorių
|
||||
player.team = Keisti komandą
|
||||
player.team = Keisti Komandą
|
||||
|
||||
server.bans = Užblokavimai
|
||||
server.bans.none = Nerasta užblokuotų žaidėjų!
|
||||
server.admins = Administratoriai
|
||||
server.admins.none = Nerasta administratorių!
|
||||
server.add = Pridėti Serverį
|
||||
server.delete = Ar esate tikras jog norite panaikinti serverį?
|
||||
server.delete = Ar tikrai norite panaikinti serverį?
|
||||
server.edit = Redaguoti Serverį
|
||||
server.outdated = [crimson]Pasenęs serveris![]
|
||||
server.outdated.client = [crimson]Pasenęs Klientas![]
|
||||
@@ -329,7 +329,7 @@ disconnect.data = Nepavyko užkrauti pasaulio informacijos!
|
||||
disconnect.snapshottimeout = Timed out while receiving UDP snapshots.\nThis may be caused by an unstable network or connection.
|
||||
cantconnect = Negalima prisijungti prie žaidimo ([accent]{0}[]).
|
||||
connecting = [accent]Prisijungiama...
|
||||
reconnecting = [accent]Reconnecting...
|
||||
reconnecting = [accent]Jungiamasi iš naujo...
|
||||
|
||||
connecting.establish = [accent]Establishing connection...
|
||||
receiving.world = [accent]Receiving world data ({0})...
|
||||
@@ -338,7 +338,7 @@ receiving.assets.fail = Error occurred while receiving assets.
|
||||
|
||||
server.port = Prievadas:
|
||||
server.invalidport = Negaliams prievado numeris!
|
||||
server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network!
|
||||
server.error.addressinuse = [scarlet]Nepavyko atidaryti serverio 6567 prievade.[]\n\nĮsitikinkite, kad jūsų įrenginyje, ar tinkle, nėra kitų Mindustry serverių!
|
||||
server.error = [crimson]Įvyko klaida.
|
||||
save.new = Naujas Išsaugojimas
|
||||
save.overwrite = Ar esate tikras, jog\n norite perrašyti šį elementą?
|
||||
@@ -363,29 +363,29 @@ save.rename.text = Naujas pavadinimas:
|
||||
selectslot = Pasirinkite išsaugojimą.
|
||||
slot = [accent]Elementas {0}
|
||||
editmessage = Redaguoti žinutę
|
||||
save.corrupted = Išsaugojimo failas yra sugadintas arba !
|
||||
empty = <empty>
|
||||
save.corrupted = Išsaugojimo failas yra sugadintas arba netinkamas!
|
||||
empty = <tuščia>
|
||||
on = Įjungta
|
||||
off = Išjungta
|
||||
save.search = Search saved games...
|
||||
save.search = Ieškoti išsaugotų žaidimų...
|
||||
save.autosave = Automatinis išsaugojimas: {0}
|
||||
save.map = Žemėlapis: {0}
|
||||
save.wave = Banga {0}
|
||||
save.mode = Žaidimo Režimas: {0}
|
||||
save.date = Paskutinis Išsaugojimas: {0}
|
||||
save.playtime = Žaidimo laikas: {0}
|
||||
dontshowagain = Don't show again
|
||||
dontshowagain = Daugiau nerodyti
|
||||
warning = Perspėjimas.
|
||||
confirm = Priimti
|
||||
delete = Šalinti
|
||||
view.workshop = Apžiūrėti Workshop'e
|
||||
workshop.listing = Edit Workshop Listing
|
||||
hide = Hide
|
||||
hide = Paslėpti
|
||||
ok = Gerai
|
||||
open = Atidaryti
|
||||
customize = Keisti Taisykles
|
||||
cancel = Atšaukti
|
||||
command = Command
|
||||
command = Valdyti
|
||||
command.queue = [lightgray][Queuing]
|
||||
command.mine = Mine
|
||||
command.repair = Repair
|
||||
@@ -411,7 +411,7 @@ openlink = Atidaryti Nuorodą
|
||||
copylink = Kopijuoti Nuorodą
|
||||
back = Sugrįžti
|
||||
max = Max
|
||||
objective = Map Objective
|
||||
objective = Žemėlapio Tikslas
|
||||
crash.export = Export Crash Logs
|
||||
crash.none = No crash logs found.
|
||||
crash.exported = Crash logs exported.
|
||||
@@ -423,7 +423,7 @@ data.invalid = Tai nėra veikiantys žaidimo duomenys.
|
||||
data.import.confirm = Importuojant išorinius duomenis bus pašalinti[scarlet] visi esami duomenys[]
|
||||
quit.confirm = Ar tikrai norite išeiti?
|
||||
loading = [accent]Kraunama...
|
||||
downloading = [accent]Downloading...
|
||||
downloading = [accent]Atisiunčiama...
|
||||
saving = [accent]Išsaugoma...
|
||||
respawn = [accent][[{0}][] to respawn in core
|
||||
cancelbuilding = [accent][[{0}][] plano išvalymui
|
||||
@@ -432,15 +432,15 @@ pausebuilding = [accent][[{0}][] statymo sustabdymui
|
||||
resumebuilding = [scarlet][[{0}][] statymo pratęsimui
|
||||
enablebuilding = [scarlet][[{0}][] to enable building
|
||||
showui = UI hidden.\nPress [accent][[{0}][] to show UI.
|
||||
commandmode.name = [accent]Command Mode
|
||||
commandmode.name = [accent]Valdymo Režimas
|
||||
commandmode.nounits = [no units]
|
||||
wave = [accent]Banga {0}
|
||||
wave.cap = [accent]Wave {0}/{1}
|
||||
wave.waiting = [lightgray]Banga po {0}
|
||||
wave.cap = [accent]Banga {0}/{1}
|
||||
wave.waiting = [lightgray]Banga už {0}
|
||||
wave.waveInProgress = [lightgray]Vyksta banga
|
||||
waiting = [lightgray]Laukiama...
|
||||
waiting.players = Laukiama žaidėjų...
|
||||
wave.enemies = [lightgray]{0} Likę priešai
|
||||
wave.enemies = [lightgray]{0} Likę priešų
|
||||
wave.enemycores = [accent]{0}[lightgray] Enemy Cores
|
||||
wave.enemycore = [accent]{0}[lightgray] Enemy Core
|
||||
wave.enemy = [lightgray]{0} Likęs priešas
|
||||
@@ -563,6 +563,7 @@ asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
@@ -608,8 +609,6 @@ waves.max = max units
|
||||
waves.guardian = Guardian
|
||||
waves.preview = Apžiūra
|
||||
waves.random = Random
|
||||
waves.copy = Kopijuoti į iškarpinę
|
||||
waves.load = Užkrauti iš iškarpinės
|
||||
waves.invalid = Klaidingos bangos iš iškarpinės.
|
||||
waves.copied = Bangos nukopijuotos.
|
||||
waves.none = Nėra nustatyta jokių priešų.\nĮsiminkite, jog tušti bangų maketai bus pakeisti numatytuoju maketu.
|
||||
@@ -963,11 +962,11 @@ difficulty.enemySpawnMultiplier = Enemy Amount: {0}
|
||||
difficulty.waveTimeMultiplier = Wave Timer: {0}
|
||||
difficulty.nomodifiers = [lightgray](No modifiers)
|
||||
|
||||
planets = Planets
|
||||
planets = Planetos
|
||||
|
||||
planet.serpulo.name = Serpulo
|
||||
planet.erekir.name = Erekir
|
||||
planet.sun.name = Sun
|
||||
planet.sun.name = Saulė
|
||||
|
||||
sector.impact0078.name = Impact 0078
|
||||
sector.groundZero.name = Ground Zero
|
||||
@@ -999,7 +998,6 @@ sector.mycelialBastion.name = Mycelial Bastion
|
||||
sector.frontier.name = Frontier
|
||||
sector.sunkenPier.name = Sunken Pier
|
||||
sector.littoralShipyard.name = Littoral Shipyard
|
||||
sector.cruxscape.name = Cruxscape
|
||||
sector.geothermalStronghold.name = Geothermal Stronghold
|
||||
|
||||
sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on.
|
||||
|
||||
@@ -563,6 +563,7 @@ asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
@@ -608,8 +609,6 @@ waves.max = maximale eenheden
|
||||
waves.guardian = Bewaker
|
||||
waves.preview = Voorvertoning
|
||||
waves.random = Random
|
||||
waves.copy = Kopieer naar klembord
|
||||
waves.load = Laad van klembord
|
||||
waves.invalid = Ongeldige rondes in klembord.
|
||||
waves.copied = Rondes Gekopi�erd.
|
||||
waves.none = Geen vijanden ingesteld.\nLege ronden worden automatisch gevuld met de standaard waarden.
|
||||
@@ -999,7 +998,6 @@ sector.mycelialBastion.name = Mycelial Bastion
|
||||
sector.frontier.name = Frontier
|
||||
sector.sunkenPier.name = Sunken Pier
|
||||
sector.littoralShipyard.name = Littoral Shipyard
|
||||
sector.cruxscape.name = Cruxscape
|
||||
sector.geothermalStronghold.name = Geothermal Stronghold
|
||||
|
||||
sector.groundZero.description = De optimale locatie om nog een keer te beginnen. Lage vijandelijke dreiging. Enkele grondstoffen.\nVerzamel zoveel mogelijk lood en koper.\nGa door.
|
||||
|
||||
@@ -563,6 +563,7 @@ asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
@@ -608,8 +609,6 @@ waves.max = max units
|
||||
waves.guardian = Guardian
|
||||
waves.preview = Preview
|
||||
waves.random = Random
|
||||
waves.copy = Copy to Clipboard
|
||||
waves.load = Load from Clipboard
|
||||
waves.invalid = Invalid waves in clipboard.
|
||||
waves.copied = Waves copied.
|
||||
waves.none = No enemies defined.\nNote that empty wave layouts will automatically be replaced with the default layout.
|
||||
@@ -999,7 +998,6 @@ sector.mycelialBastion.name = Mycelial Bastion
|
||||
sector.frontier.name = Frontier
|
||||
sector.sunkenPier.name = Sunken Pier
|
||||
sector.littoralShipyard.name = Littoral Shipyard
|
||||
sector.cruxscape.name = Cruxscape
|
||||
sector.geothermalStronghold.name = Geothermal Stronghold
|
||||
|
||||
sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on.
|
||||
|
||||
@@ -563,6 +563,7 @@ asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
@@ -608,8 +609,6 @@ waves.max = maks. jednostek
|
||||
waves.guardian = Strażnik
|
||||
waves.preview = Podgląd
|
||||
waves.random = Losowe
|
||||
waves.copy = Kopiuj Do Schowka
|
||||
waves.load = Załaduj Ze Schowka
|
||||
waves.invalid = Nieprawidłowe fale w schowku.
|
||||
waves.copied = Fale zostały skopiowane.
|
||||
waves.none = Brak zdefiniowanych wrogów.\nPamiętaj, że puste układy fal zostaną automatycznie zastąpione układem domyślnym.
|
||||
@@ -999,7 +998,6 @@ sector.mycelialBastion.name = Baszta Grzybni
|
||||
sector.frontier.name = Granica
|
||||
sector.sunkenPier.name = Zatopione Molo
|
||||
sector.littoralShipyard.name = Nabrzeżna Stocznia
|
||||
sector.cruxscape.name = Cruxscape
|
||||
sector.geothermalStronghold.name = Geotermalna Twierdza
|
||||
|
||||
sector.groundZero.description = Optymalna lokalizacja, aby rozpocząć jeszcze raz. Niskie zagrożenie. Niewiele zasobów.\nZbierz możliwie jak najwięcej miedzi i ołowiu.\nPrzejdź do następnej strefy jak najszybciej.
|
||||
|
||||
@@ -563,6 +563,7 @@ asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
@@ -608,8 +609,6 @@ waves.max = quantidade máxima
|
||||
waves.guardian = Guardião
|
||||
waves.preview = Pré-visualizar
|
||||
waves.random = Aleatório
|
||||
waves.copy = Copiar para área de transferência
|
||||
waves.load = Carregar da área de transferência
|
||||
waves.invalid = Hordas inválidas na área de transferência.
|
||||
waves.copied = Hordas copiadas.
|
||||
waves.none = Sem hordas definidas.\nNote que layouts vazios de hordas serão automaticamente substituídos pelo layout padrão.
|
||||
@@ -999,7 +998,6 @@ sector.mycelialBastion.name = Bastião Micelial
|
||||
sector.frontier.name = Fronteira
|
||||
sector.sunkenPier.name = Píer Afundado
|
||||
sector.littoralShipyard.name = Littoral Shipyard
|
||||
sector.cruxscape.name = Cruxscape
|
||||
sector.geothermalStronghold.name = Fortaleza Geotérmica
|
||||
|
||||
sector.groundZero.description = Um lugar bom para recomeçar. Baixa ameaça inimiga. Poucos recursos.\nConsiga o máximo possível de chumbo e cobre.\nContinue.
|
||||
|
||||
@@ -563,6 +563,7 @@ asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
@@ -608,8 +609,6 @@ waves.max = quantidade máxima de unidades
|
||||
waves.guardian = Guardião
|
||||
waves.preview = Pré-visualizar
|
||||
waves.random = Aleatório
|
||||
waves.copy = Copiar para área de transferência
|
||||
waves.load = Carregar da área de transferência
|
||||
waves.invalid = Hordas inválidas na área de transferência.
|
||||
waves.copied = Hordas copiadas.
|
||||
waves.none = Sem hordas definidas.\nNote que esquemas de hordas vazios serão automaticamente substituídos pelo esquema padrão.
|
||||
@@ -999,7 +998,6 @@ sector.mycelialBastion.name = Mycelial Bastion
|
||||
sector.frontier.name = Frontier
|
||||
sector.sunkenPier.name = Sunken Pier
|
||||
sector.littoralShipyard.name = Littoral Shipyard
|
||||
sector.cruxscape.name = Cruxscape
|
||||
sector.geothermalStronghold.name = Geothermal Stronghold
|
||||
|
||||
sector.groundZero.description = Um bom lugar para recomeçar. Baixa ameaça inimiga. Poucos recursos.\nConsegue o máximo possível de chumbo e cobre.\nContinua.
|
||||
|
||||
@@ -563,6 +563,7 @@ asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
@@ -608,8 +609,6 @@ waves.max = unități maxime
|
||||
waves.guardian = Gardian
|
||||
waves.preview = Previzualizare
|
||||
waves.random = Random
|
||||
waves.copy = Copiază în Clipboard
|
||||
waves.load = Încarcă din Clipboard
|
||||
waves.invalid = Valuri invalide în clipboard.
|
||||
waves.copied = Valuri copiate.
|
||||
waves.none = Niciun inamic definit.\nDe reținut că o listă de valuri goală va fi înlocuită automat cu lista de valuri prestabilită.
|
||||
@@ -999,7 +998,6 @@ sector.mycelialBastion.name = Mycelial Bastion
|
||||
sector.frontier.name = Frontier
|
||||
sector.sunkenPier.name = Sunken Pier
|
||||
sector.littoralShipyard.name = Littoral Shipyard
|
||||
sector.cruxscape.name = Cruxscape
|
||||
sector.geothermalStronghold.name = Geothermal Stronghold
|
||||
|
||||
sector.groundZero.description = Locația optimă pt a începe încă odată. Risc de inamici scăzut. Puține resurse.\nAdună cât de mult plumb și cupru se poate.\nMergi mai departe.
|
||||
|
||||
@@ -19,7 +19,7 @@ clipboardcopy = Этот сервер хочет скопировать текс
|
||||
linkfail = Не удалось открыть ссылку!\nURL-адрес был скопирован в буфер обмена.
|
||||
screenshot = Скриншот сохранён в {0}
|
||||
screenshot.invalid = Карта слишком большая, возможно, не хватает памяти для скриншота.
|
||||
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
|
||||
screenshot.error = Не удалось сделать скриншот. Ваше устройство скорее всего не поддерживает настолько большие скриншоты.
|
||||
gameover = Игра окончена
|
||||
gameover.disconnect = Отключение
|
||||
gameover.pvp = Команда [accent]{0}[] победила!
|
||||
@@ -121,7 +121,7 @@ position = Координаты
|
||||
close = Закрыть
|
||||
website = Веб-сайт
|
||||
quit = Выход
|
||||
save.quit = Сохранить & Выйти
|
||||
save.quit = Сохранить и выйти
|
||||
maps = Карты
|
||||
maps.browse = Просмотр карт
|
||||
continue = Продолжить
|
||||
@@ -240,18 +240,18 @@ players.search = поиск
|
||||
players.notfound = [gray]игроки не найдены
|
||||
server.closing = [accent]Закрытие сервера...
|
||||
server.kicked.kick = Вас выгнали с сервера!
|
||||
server.kicked.whitelist = Вы не в белом списке сервера.
|
||||
server.kicked.whitelist = Вас нет в белом списке сервера.
|
||||
server.kicked.serverClose = Сервер закрыт.
|
||||
server.kicked.vote = Вы были выгнаны с помощью голосования. Прощайте.
|
||||
server.kicked.clientOutdated = Устаревший клиент! Обновите игру!
|
||||
server.kicked.serverOutdated = Устаревший сервер! Попросите администратора сервера обновить сервер/игру!
|
||||
server.kicked.banned = Вы заблокированы на этом сервере.
|
||||
server.kicked.steamBanned = Хватит людям игри портить.
|
||||
server.kicked.steamBanned = Хватит людям игры портить.
|
||||
server.kicked.typeMismatch = Этот сервер не совместим с вашим типом сборки.
|
||||
server.kicked.playerLimit = Этот сервер заполнен. Дождитесь свободного слота.
|
||||
server.kicked.recentKick = Вас недавно выгнали.\nПодождите немного перед следующим подключением.
|
||||
server.kicked.nameInUse = На этом сервере есть кто-то с этим именем.
|
||||
server.kicked.nameEmpty = Выбранное Вами имя недопустимо.
|
||||
server.kicked.nameEmpty = Выбранное вами имя недопустимо.
|
||||
server.kicked.idInUse = Вы уже на этом сервере! Соединение с двумя учетными записями не разрешено.
|
||||
server.kicked.customClient = Этот сервер не поддерживает пользовательские сборки. Загрузите официальную версию.
|
||||
server.kicked.gameover = Игра окончена!
|
||||
@@ -331,10 +331,10 @@ cantconnect = Не удаётся присоединиться к игре ([acc
|
||||
connecting = [accent]Подключение...
|
||||
reconnecting = [accent]Переподключение...
|
||||
|
||||
connecting.establish = [accent]Establishing connection...
|
||||
receiving.world = [accent]Receiving world data ({0})...
|
||||
receiving.assets = [accent]Receiving assets ({0})...
|
||||
receiving.assets.fail = Error occurred while receiving assets.
|
||||
connecting.establish = [accent]Установка соединения...
|
||||
receiving.world = [accent]Получение данных мира ({0})...
|
||||
receiving.assets = [accent]Получение ресурсов ({0})...
|
||||
receiving.assets.fail = Произошла ошибка при получении ресурсов мира.
|
||||
|
||||
server.port = Порт:
|
||||
server.invalidport = Неверный номер порта!
|
||||
@@ -352,10 +352,10 @@ save.export = Экспортировать сохранение
|
||||
save.import.invalid = [accent]Это сохранение недействительно!
|
||||
save.import.fail = [scarlet]Не удалось импортировать сохранение: [accent]{0}
|
||||
save.export.fail = [scarlet]Не удалось экспортировать сохранение: [accent]{0}
|
||||
save.export.needsload = [scarlet]⚠ This save contains embedded assets.[]\nLoad into this save before exporting it.
|
||||
save.assets.missing = Missing Assets
|
||||
save.assets.missing.list = Asset List...
|
||||
save.assets.missing.info = [scarlet]⚠ This save contains missing assets![]\n\n[lightgray]This is likely because the save file was not properly exported.\n[lightgray]When sharing saves, only export through the in-game UI. Do not copy save files directly.\n[lightgray]If transferring files is necessary, make sure the [accent]assetCache[] folder is copied as well.
|
||||
save.export.needsload = [scarlet]⚠ Это сохранение имеет встроенные ресурсы.[]\nЗагрузите это сохранение перед экспортом.
|
||||
save.assets.missing = Недостающие ресурсы
|
||||
save.assets.missing.list = Список ресурсов...
|
||||
save.assets.missing.info = [scarlet]⚠ В сохранении отсутствует часть ресурсов![]\n\n[lightgray]Это скорее всего произошло из-за некорректного экспорта.\n[lightgray]Если вы делитесь сохранениями, экспортируйте их только через внутриигровой интерфейс. Не копируйте файлы напрямую.\n[lightgray]Если перенос файлов обязателен, убедитесь, что папка [accent]assetCache[] тоже скопирована.
|
||||
save.import = Импортировать сохранение
|
||||
save.newslot = Имя сохранения:
|
||||
save.rename = Переименовать
|
||||
@@ -472,9 +472,9 @@ publish.confirm = Вы уверены, что хотите опубликова
|
||||
publish.error = Ошибка отправки предмета: {0}
|
||||
steam.error = Не удалось инициализировать сервисы Steam.\nОшибка: {0}
|
||||
|
||||
editor.showblocks = Показывать блоки
|
||||
editor.showterrain = Показывать ландшафт
|
||||
editor.showfloor = Показывать покрытия
|
||||
editor.showblocks = Показывать \nблоки
|
||||
editor.showterrain = Показывать \nландшафт
|
||||
editor.showfloor = Показывать \nпол
|
||||
editor.planet = Планета:
|
||||
editor.sector = Сектор:
|
||||
editor.seed = Сид:
|
||||
@@ -486,9 +486,9 @@ editor.mapinfo = Информация о карте
|
||||
editor.author = Автор:
|
||||
editor.description = Описание:
|
||||
editor.nodescription = Чтобы опубликовать карту, она должна содержать по крайней мере 4 символа в описании.
|
||||
editor.waves = Волны:
|
||||
editor.rules = Правила:
|
||||
editor.generation = Генерация:
|
||||
editor.waves = Волны
|
||||
editor.rules = Правила
|
||||
editor.generation = Генерация
|
||||
editor.objectives = Цели
|
||||
editor.locales = Наборы локалей
|
||||
editor.worldprocessors = Мировые процессоры
|
||||
@@ -512,82 +512,78 @@ editor.filters.description = Описанию
|
||||
editor.filters.modname = Название модификации
|
||||
editor.filters.prioritizemod = Приоритет модификации
|
||||
editor.filters.prioritizecustom = Пользовательский приоритет
|
||||
editor.filters.planetselect = Planet Selection
|
||||
editor.filters.planetselect = Выбор планеты
|
||||
editor.shiftx = Сдвиг по X
|
||||
editor.shifty = Сдвиг по Y
|
||||
|
||||
asset.emoji = Emojis
|
||||
asset.patch = Patch
|
||||
asset.content = Content
|
||||
asset.bundle = Translation Bundle
|
||||
asset.image = Image
|
||||
asset.sound = Sound
|
||||
asset.music = Music
|
||||
asset.patch = Патчи
|
||||
asset.content = Контент
|
||||
asset.bundle = Переводы
|
||||
asset.image = Изображения
|
||||
asset.sound = Звуки
|
||||
asset.music = Музыка
|
||||
|
||||
content.unit = Unit
|
||||
content.item = Item
|
||||
content.liquid = Liquid
|
||||
content.block = Block
|
||||
content.planet = Planet
|
||||
content.weather = Weather
|
||||
content.status = Status Effect
|
||||
content.unit = Боевая единица
|
||||
content.item = Предмет
|
||||
content.liquid = Жидкость
|
||||
content.block = Блок
|
||||
content.planet = Планета
|
||||
content.weather = Погода
|
||||
content.status = Статусный эффект
|
||||
|
||||
patch.set = Patchset: {0}
|
||||
patch.set = Набор патчей: {0}
|
||||
patch.none = [lightgray]Ни одного набора патчей не загружено.
|
||||
patch.errors = Ошибки набора патчей
|
||||
patch.importerror = Не удалось импортировать набор патчей
|
||||
patch.delete.confirm = Вы уверены, что хотите удалить этот набор патчей?
|
||||
patch.path = Path:
|
||||
patch.path = Путь файла:
|
||||
patch.fields = Параметров: {0}
|
||||
|
||||
bundle.lines = {0} lines
|
||||
bundle.lines = {0} строк
|
||||
|
||||
images = Images
|
||||
asset.title = Data Patches & Assets
|
||||
asset.guide = Usage Guide
|
||||
asset.bundle.exists = A bundle with path '{0}' already exists.
|
||||
asset.importzip = Import Asset Zip
|
||||
asset.exportzip = Export Asset Zip
|
||||
asset.image.importzip = Import Zip
|
||||
asset.image.exportzip = Export Zip
|
||||
asset.clearall = Clear All
|
||||
asset.clearall.confirm = Are you sure that you want to clear [red]all[] assets from this map?\nThis includes images, audio, content, etc.
|
||||
asset.imports = Import Results
|
||||
asset.imported = [accent]{0} assets imported.
|
||||
asset.import.none = No valid asset files found in zip archive.
|
||||
asset.content.errors = Content Errors
|
||||
asset.content.add = Add Content
|
||||
asset.content.type = Type:
|
||||
asset.content.exists = [red]Content with that name already exists!
|
||||
asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
asset.images = Data Patch Images
|
||||
asset.image.imports = Import Results
|
||||
asset.image.imported = [accent]{0} images imported.
|
||||
asset.image.none = No valid PNG files found in zip archive.
|
||||
asset.image.error = [red]The following errors were encountered:[]
|
||||
asset.image.clearall.confirm = Are you certain that you wish to clear all images?
|
||||
asset.image.info = Image Info
|
||||
asset.image.toolarge = Image ([lightgray]{0}x{1}[]) is too large. Maximum size is {2}x{3}.
|
||||
asset.image.exists = An image with that path/name already exists:\n[lightgray]{0}
|
||||
asset.image.delete.confirm = Are you certain that you wish to delete this image?
|
||||
asset.image.name = [accent]File Name: [lightgray]{0}
|
||||
asset.image.region.name = [accent]Region Name: [lightgray]{0}
|
||||
asset.image.path = [accent]Path: [lightgray]{0}
|
||||
asset.image.env = [accent]Uses Environment Atlas: [lightgray]{0}
|
||||
asset.image.size = [accent]Size: [lightgray]{0}x{1}
|
||||
asset.image.filesize = [accent]File Size: [lightgray]{0}
|
||||
asset.image.packfailed = [red]⚠ Failed to pack sprite![]
|
||||
asset.image.packfailed.env = This is likely caused by a lack of space in the environment atlas.\nNote that environment sprites are limited to a 512x512 total area.
|
||||
|
||||
asset.emoji.delete = Delete Selected ({0})
|
||||
asset.emoji.notfound = Image with specified name not found.
|
||||
asset.emoji.exists = An emoji with that name already exists.
|
||||
images = Изображения
|
||||
asset.title = Патчи контента и ресурсы
|
||||
asset.guide = Руководство
|
||||
asset.bundle.exists = Перевод с путём файла '{0}' уже существует.
|
||||
asset.importzip = Импортировать архив с ресурсами
|
||||
asset.exportzip = Экспортировать архив с ресурсами
|
||||
asset.image.importzip = Импортировать архив с изображениями
|
||||
asset.image.exportzip = Экспортировать архив с изображениями
|
||||
asset.clearall = Очистить всё
|
||||
asset.clearall.confirm = Вы точно хотите удалить [red]все[] ресурсы из этой карты?\nБудут удалены изображения, звуки, контент, и т.д.
|
||||
asset.imports = Результаты импорта
|
||||
asset.imported = [accent]Ресурсов импортировано: {0}.
|
||||
asset.import.none = Нет подходящих файлов ресурсов в архиве.
|
||||
asset.content.errors = Ошибки контента
|
||||
asset.content.add = Добавить контент
|
||||
asset.content.type = Тип:
|
||||
asset.content.exists = [red]Контент с этим именем уже существует!
|
||||
asset.content.badname = [red]Неверное имя! Большинство символов не разрешены.
|
||||
asset.content.import.file = Импортировать файл
|
||||
asset.content.import.clipboard = Импортировать из буфера обмена
|
||||
asset.exists = Ресурс этого типа с таким путём/именем уже существует:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = Не удалось обнаружить файл ресурса.\nЭто скорее всего произошло из-за некорректного импорта данных или экспорта сохранения.
|
||||
asset.audio.invalid = Аудио не удалось загрузить.\nУбедитесь, что это рабочий файл OGG или MP3.
|
||||
asset.delete.confirm = Вы уверены, что хотите удалить этот ресурс?
|
||||
asset.images = Изображения патчей контента
|
||||
asset.image.imports = Результаты импорта
|
||||
asset.image.imported = [accent]Изображений импортировано: {0}.
|
||||
asset.image.none = Нет подходящих файлов PNG в архиве.
|
||||
asset.image.error = [red]Обнаруженные ошибки:[]
|
||||
asset.image.clearall.confirm = Вы уверены, что хотите удалить все изображения?
|
||||
asset.image.info = Информация
|
||||
asset.image.toolarge = Изображение ([lightgray]{0}x{1}[]) слишком большое. Максимальный размер - {2}x{3}.
|
||||
asset.image.exists = Изображение с таким путём/именем уже существует:\n[lightgray]{0}
|
||||
asset.image.delete.confirm = Вы уверены, что хотите удалить это изображение?
|
||||
asset.image.name = [accent]Имя файла: [lightgray]{0}
|
||||
asset.image.region.name = [accent]Имя региона: [lightgray]{0}
|
||||
asset.image.path = [accent]Путь файла: [lightgray]{0}
|
||||
asset.image.env = [accent]Использует атлас ландшафта: [lightgray]{0}
|
||||
asset.image.size = [accent]Размер: [lightgray]{0}x{1}
|
||||
asset.image.filesize = [accent]Размер файла: [lightgray]{0}
|
||||
asset.image.packfailed = [red]⚠ Не удалось обработать спрайт![]
|
||||
asset.image.packfailed.env = Это скорее всего произошло из-за нехватки места в атласе ландшафта.\nСпрайты ландшафта ограничены общей зоной 512x512.
|
||||
|
||||
workshop = Мастерская
|
||||
waves.title = Волны
|
||||
@@ -603,16 +599,14 @@ waves.spawn = точка появления:
|
||||
waves.spawn.all = <везде>
|
||||
waves.spawn.select = Выбрать точку появления
|
||||
waves.spawn.none = [scarlet]не обнаружено точек появления на карте!
|
||||
waves.spawn.first = [lightgray](first {0})
|
||||
waves.spawn.first = [lightgray](первые {0})
|
||||
waves.max = максимум единиц
|
||||
waves.guardian = Страж
|
||||
waves.preview = Предварительный просмотр
|
||||
waves.random = Случайно
|
||||
waves.copy = Копировать в буфер обмена
|
||||
waves.load = Загрузить из буфера обмена
|
||||
waves.invalid = Неверные волны в буфере обмена.
|
||||
waves.copied = Волны скопированы.
|
||||
waves.none = Враги не были определены.\nОбратите внимание, что пустые волны будут автоматически заменены обычной волной.
|
||||
waves.none = Враги не были определены.\nОбратите внимание, что пустые волны будут автоматически заменены обычным набором волн.
|
||||
waves.sort = Сортировать по
|
||||
waves.sort.reverse = Обратная сортировка
|
||||
waves.sort.begin = Начало
|
||||
@@ -633,9 +627,9 @@ all = всего
|
||||
editor.default = [lightgray]<По умолчанию>
|
||||
details = Подробности...
|
||||
edit = Редактировать...
|
||||
edit.menu = Edit...
|
||||
edit.menu = Редактировать...
|
||||
variables = Переменные
|
||||
logic.error.toolong = Processor code too long (Limit: {0} compressed bytes, actual length: {1} bytes)
|
||||
logic.error.toolong = Код процессора слишком длинный (Лимит: {0} сжатых байтов, текущая длина: {1} байтов)
|
||||
logic.clear.confirm = Вы уверены, что хотите удалить весь код из этого процессора?
|
||||
logic.restart = Перезапустить
|
||||
logic.globals = Встроенные переменные
|
||||
@@ -705,14 +699,14 @@ toolmode.fillteams.description = Изменяет принадлежность\n
|
||||
toolmode.fillerase = Стереть заливкой
|
||||
toolmode.fillerase.description = Стирает все блоки\nодного типа.
|
||||
toolmode.fillcliffs = Заполнить скалами
|
||||
toolmode.fillcliffs.description = Заменяет выбранные стены скалами.
|
||||
toolmode.fillcliffs.description = Заменяет выбранные\nстены скалами.
|
||||
toolmode.drawteams = Изменить команду блока
|
||||
toolmode.drawteams.description = Изменяет принадлежность\nблока к команде.
|
||||
#unused
|
||||
toolmode.underliquid = Под жидкостями
|
||||
toolmode.underliquid.description = Рисует пол под плитками жидкости.
|
||||
toolmode.fillunderliquid = Fill Under Liquids
|
||||
toolmode.fillunderliquid.description = Fill floors under liquid tiles.
|
||||
toolmode.underliquid.description = Рисует пол под плитками\nжидкости.
|
||||
toolmode.fillunderliquid = Заливка под жидкостями
|
||||
toolmode.fillunderliquid.description = Заполняет пол под плитками\nжидкости.
|
||||
|
||||
filters.empty = [lightgray]Нет фильтров! Добавьте один при помощи кнопки ниже.
|
||||
|
||||
@@ -776,8 +770,8 @@ locales.showsame = Показать свойства, которые имеют
|
||||
locales.viewproperty = Смотреть во всех локалях
|
||||
locales.viewing = Просмотр свойства "{0}"
|
||||
locales.addicon = Добавить иконку
|
||||
locales.property.name = name
|
||||
locales.property.text = text
|
||||
locales.property.name = имя
|
||||
locales.property.text = текст
|
||||
|
||||
width = Ширина:
|
||||
height = Высота:
|
||||
@@ -789,8 +783,8 @@ save = Сохранить
|
||||
fps = FPS: {0}
|
||||
ping = Пинг: {0}мс
|
||||
tps = TPS: {0}
|
||||
memory = Mem: {0}МБ
|
||||
memory2 = Mem:\n {0}МБ +\n {1}МБ
|
||||
memory = Память: {0}МБ
|
||||
memory2 = Память:\n {0}МБ +\n {1}МБ
|
||||
language.restart = Перезагрузите игру, чтобы языковые настройки вступили в силу.
|
||||
settings = Настройки
|
||||
tutorial = Обучение
|
||||
@@ -923,7 +917,7 @@ sectors.redirect = Перенаправить пусковые площадки
|
||||
sectors.rename = Переименовать сектор
|
||||
sectors.enemybase = [scarlet]Вражеская база
|
||||
sectors.vulnerable = [scarlet]Уязвим
|
||||
sectors.underattack = [scarlet]Атакован! [accent]{0}% повреждений
|
||||
sectors.underattack = [scarlet]Атакован!
|
||||
sectors.go = Перейти
|
||||
sector.abandon = Покинуть
|
||||
sector.abandon.confirm = Все ядра данного сектора будут самоуничтожены.\nПродолжить?
|
||||
@@ -940,7 +934,7 @@ sector.noswitch.title = Перемещение между секторами
|
||||
sector.noswitch = Вы не можете переключаться между секторами, пока существующий сектор находится под атакой.\n\nСектор: [accent]{0}[] на [accent]{1}[]
|
||||
sector.view = Просмотр сектора
|
||||
sector.foundationrequired = [lightgray] Требуется Ядро: «Штаб»
|
||||
sector.shielded = [lightgray] Shielded
|
||||
sector.shielded = [lightgray] Защищён
|
||||
|
||||
threat.low = Низкая
|
||||
threat.medium = Средняя
|
||||
@@ -950,7 +944,7 @@ threat.eradication = Истребляющая
|
||||
|
||||
difficulty.guide.title = Примечание
|
||||
difficulty.guide = Если сектор слишком тяжелый, сложность кампании может быть изменена для упрощения.
|
||||
difficulty.guide.confirm = Отрегулируйте сложность
|
||||
difficulty.guide.confirm = Отрегулировать сложность
|
||||
|
||||
difficulty.casual = Казуальная
|
||||
difficulty.easy = Лёгкая
|
||||
@@ -999,11 +993,10 @@ sector.mycelialBastion.name = Мицелиальный бастион
|
||||
sector.frontier.name = Граница
|
||||
sector.sunkenPier.name = Затонувший пирс
|
||||
sector.littoralShipyard.name = Прибрежная верфь
|
||||
sector.cruxscape.name = Оплот Агрессоров
|
||||
sector.geothermalStronghold.name = Геотермальная крепость
|
||||
|
||||
sector.groundZero.description = Оптимальная локация чтобы начать сначала. Низкая вражеская угроза. Немного ресурсов.\nСоберите как можно больше свинца и меди.\nДвигайтесь дальше.
|
||||
sector.frozenForest.description = Даже здесь, ближе к горам, споры распространились. Холодные температуры не могут сдерживать их вечно.\n\nНачните вкладываться в энергию. Постройте генераторы внутреннего сгорания. Научитесь пользоваться регенератором.
|
||||
sector.frozenForest.description = Даже здесь, ближе к горам, споры распространились. Низкие температуры не могут сдерживать их вечно.\n\nНачните вкладываться в энергию. Постройте генераторы внутреннего сгорания. Научитесь пользоваться регенератором.
|
||||
sector.saltFlats.description = На окраине пустыни лежат соляные равнины. В этой местности можно найти немного ресурсов.\n\nВраги возвели здесь комплекс хранения ресурсов. Искорените их ядро. Не оставьте камня на камне.
|
||||
sector.crateredBattleground.description = В этом кратере, оставшемся со времён старых войн, скопилась вода.\nВерните эту территорию под контроль. Собирайте песок. Выплавляйте метастекло.\nКачайте воду для охлаждения турелей и буров.
|
||||
sector.ruinousShores.description = Мимо пустошей проходит береговая линия. Когда-то здесь располагался массив береговой обороны. Не так много от него осталось. Только самые базовые оборонительные сооружения остались невредимыми, всё остальное превратилось в металлолом.\nПродолжайте экспансию вовне. Переоткройте для себя технологии.
|
||||
@@ -1097,7 +1090,7 @@ settings.resetKey = Сбросить
|
||||
settings.controls = Управление
|
||||
settings.game = Игра
|
||||
settings.sound = Звук
|
||||
settings.dev = Developer Options
|
||||
settings.dev = Настройки разработчика
|
||||
settings.graphics = Графика
|
||||
settings.cleardata = Очистить игровые данные...
|
||||
settings.clear.confirm = Вы действительно хотите очистить свои данные?\nЭто нельзя отменить!
|
||||
@@ -1108,12 +1101,12 @@ settings.clearresearch = Сбросить исследования
|
||||
settings.clearresearch.confirm = Вы уверены, что хотите сбросить все ваши исследования кампании?
|
||||
settings.clearcampaignsaves = Очистить сохранения кампании
|
||||
settings.clearcampaignsaves.confirm = Вы уверены, что хотите очистить все ваши сохранения кампании?
|
||||
settings.clearplanetdata = Clear Planet Data
|
||||
settings.planetselect = Planet: {0}
|
||||
settings.clearplanetresearch = Clear Planet Research
|
||||
settings.clearplanetresearch.confirm = Are you sure you want to clear {0}'s research?
|
||||
settings.clearplanetcampaignsaves = Clear Planet Campaign Saves
|
||||
settings.clearplanetcampaignsaves.confirm = Are you sure you want to clear {0}'s campaign saves?
|
||||
settings.clearplanetdata = Очистить данные планеты
|
||||
settings.planetselect = Планета: {0}
|
||||
settings.clearplanetresearch = Сбросить исследования планеты
|
||||
settings.clearplanetresearch.confirm = Вы уверены, что хотите сбросить все ваши исследования {0}?
|
||||
settings.clearplanetcampaignsaves = Очистить сохранения планеты
|
||||
settings.clearplanetcampaignsaves.confirm = Вы уверены, что хотите очистить сохранения планеты {0}?
|
||||
|
||||
paused = [accent]< Пауза >
|
||||
clear = Очистить
|
||||
@@ -1144,10 +1137,10 @@ stat.damage = Урон
|
||||
stat.frequency = Частота
|
||||
stat.targetsair = Воздушные цели
|
||||
stat.targetsground = Наземные цели
|
||||
stat.crushdamage = Урон от падения
|
||||
stat.crushdamage = Урон от давки гусеницами
|
||||
stat.legsplashdamage = Урон по области от ног
|
||||
stat.itemsmoved = Скорость перемещения
|
||||
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
|
||||
stat.itemsmoved.info = Пропускная способность часто нелинейна и зависит от FPS/TPS.
|
||||
stat.launchtime = Интервал запусков
|
||||
stat.shootrange = Радиус действия
|
||||
stat.size = Размер
|
||||
@@ -1170,8 +1163,8 @@ stat.weapons = Орудия
|
||||
stat.bullet = Снаряд
|
||||
stat.moduletier = Уровень модуля
|
||||
stat.unittype = Боевая единица
|
||||
stat.receiverate = Receiving Rate
|
||||
stat.receiverate.info = Affected by overdrive. Throughput can be increased by placing additional unloaders.
|
||||
stat.receiverate = Скорость получения
|
||||
stat.receiverate.info = Может быть увеличена сверхприводными проекторами. Пропускная способность может быть увеличена дополнительными выходами.
|
||||
stat.speedincrease = Увеличение скорости
|
||||
stat.range = Радиус действия
|
||||
stat.drilltier = Бурит
|
||||
@@ -1229,7 +1222,7 @@ ability.repairfield = Ремонтирующее поле
|
||||
ability.repairfield.description = Ремонтирует близлежащие единицы
|
||||
ability.statusfield = Усиливающее поле
|
||||
ability.statusfield.description = Накладывает эффект на ближайшие единицы
|
||||
ability.unitspawn = Завод единиц �
|
||||
ability.unitspawn = Завод единиц
|
||||
ability.unitspawn.description = Конструирует единицы
|
||||
ability.shieldregenfield = Поле восстановления щита
|
||||
ability.shieldregenfield.description = Восстанавливает щиты ближайших единиц
|
||||
@@ -1302,7 +1295,7 @@ bar.launchcooldown = Лимит высадки
|
||||
bar.input = Ввод
|
||||
bar.output = Вывод
|
||||
bar.strength = [stat]{0}[lightgray]x эффективность
|
||||
bar.regenerationrate = [stat]{0}/sec[lightgray] скорость регенерации
|
||||
bar.regenerationrate = [stat]{0}/сек[lightgray] скорость регенерации
|
||||
bar.activationtimer = Активируется через {0}
|
||||
bar.activated = Активировано
|
||||
|
||||
@@ -1318,9 +1311,9 @@ bullet.armorpierce = [stat]бронебойный
|
||||
bullet.armorweakness = [red]{0}x[lightgray] слабость к броне
|
||||
bullet.partialarmorpierce = [stat]{0}%[lightgray] пробитие брони
|
||||
bullet.antiarmor = [stat]{0}x[lightgray] анти-броня
|
||||
bullet.blockarmorweakness = [red]{0}x[lightgray] building armor weakness
|
||||
bullet.blockpartialarmorpierce = [stat]{0}%[lightgray] building armor pierce
|
||||
bullet.blockantiarmor = [stat]{0}x[lightgray] building anti-armor
|
||||
bullet.blockarmorweakness = [red]{0}x[lightgray] слабость к броне блоков
|
||||
bullet.blockpartialarmorpierce = [stat]{0}%[lightgray] пробитие брони блоков
|
||||
bullet.blockantiarmor = [stat]{0}x[lightgray] анти-броня блоков
|
||||
bullet.maxdamagefraction = [stat]{0}%[lightgray] предел урона
|
||||
bullet.suppression = [stat]{0} сек[lightgray] подавления регенерации в радиусе ~ [stat]{1}[lightgray] блоков
|
||||
bullet.empradius = [stat]{0}[lightgray] плиток радиус подавления
|
||||
@@ -1410,7 +1403,7 @@ setting.fpscap.text = {0} FPS
|
||||
setting.uiscale.name = Масштаб пользовательского интерфейса
|
||||
setting.uiscale.description = Для вступления изменений в силу может потребоваться перезагрузка игры.
|
||||
setting.uiEdgePadding.name = Отступ от краев интерфейса
|
||||
setting.uiEdgePadding.description = Добавляет отступы к краям пользовательского интерфейса. Полезно для дисплеев с закругленными углами или выемками.
|
||||
setting.uiEdgePadding.description = Добавляет отступы к краям пользовательского интерфейса. \nПолезно для дисплеев с закругленными углами или выемками.
|
||||
setting.swapdiagonal.name = Всегда диагональное размещение
|
||||
setting.screenshake.name = Тряска экрана
|
||||
setting.bloomintensity.name = Интенсивность свечения
|
||||
@@ -1426,10 +1419,10 @@ setting.milliseconds = {0} миллисекунд
|
||||
setting.fullscreen.name = Полноэкранный режим
|
||||
setting.fps.name = Показывать FPS и пинг
|
||||
setting.console.name = Включить консоль
|
||||
setting.drawhitboxes.name = Display Hitboxes
|
||||
setting.showperformance.name = Display Performance Metrics
|
||||
setting.buildingtimestep.name = Fixed Building Timestep
|
||||
setting.buildingtimestep.description = Runs buildings on a fixed timestep with constant delta,\nas opposed to every frame with variable delta.\nIf buildings cannot be updated fast enough, the game will slow down.\nIf you don't know what that means, don't touch this option.
|
||||
setting.drawhitboxes.name = Отображать хитбоксы
|
||||
setting.showperformance.name = Отображать метрики производительности
|
||||
setting.buildingtimestep.name = Фиксированное обновление построек
|
||||
setting.buildingtimestep.description = Обновляет постройки с фиксированным промежутком и постоянной дельтой, вместо обновления каждый кадр и переменной дельтой.\nЕсли постройки не могут быть обновлены достаточно быстро, игра замедлится.\nЕсли вы не знаете, что это значит, не трогайте эту настройку.
|
||||
setting.smoothcamera.name = Плавная камера
|
||||
setting.detach-camera.name = Свободная камера
|
||||
setting.detach-camera.description = При включении, вместо единицы можно будет двигать камеру.\nМожно быстро переключать через горячую клавишу.
|
||||
@@ -1467,13 +1460,13 @@ setting.minmagnificationmultiplierpercent.name = Максимальная дис
|
||||
setting.minmagnificationmultiplierpercent.description = Высокие значения могут повлиять на производительность.
|
||||
public.beta = Имейте в виду, что бета-версия игры не может делать игры публичными.
|
||||
uiscale.reset = Масштаб пользовательского интерфейса был изменён.\nНажмите «ОК» для подтверждения этого масштаба.\n[scarlet]Возврат настроек и выход через[accent] {0}[] секунд...
|
||||
uiscale.cancel = Отменить & Выйти
|
||||
uiscale.cancel = Отменить и выйти
|
||||
setting.bloom.name = Свечение
|
||||
keybind.title = Настройка управления
|
||||
keybinds.mobile = [scarlet]Большинство комбинаций клавиш здесь не работает на мобильных устройствах. Поддерживается только базовое движение.
|
||||
category.general.name = Основное
|
||||
category.view.name = Просмотр
|
||||
category.command.name = Командование единицой
|
||||
category.command.name = Командование единицами
|
||||
category.multiplayer.name = Сетевая игра
|
||||
category.blocks.name = Выбор блока
|
||||
placement.blockselectkeys = \n[lightgray]Клавиша: [{0},
|
||||
@@ -1572,9 +1565,9 @@ keybind.chat_mode.name = Изменить режим чата
|
||||
keybind.drop_unit.name = Сбросить боев. ед.
|
||||
keybind.zoom_minimap.name = Масштабировать мини-карту
|
||||
keybind.detach_camera.name = Переключение свободной камеры
|
||||
keybind.teleport_cursor.name = Teleport To Cursor (Sandbox)
|
||||
keybind.teleport_cursor.name = Телепорт к курсору (Песочница)
|
||||
keybind.debug_hitboxes.name = Переключение отладочных хитбоксов
|
||||
keybind.performance_metrics.name = Toggle Performance Metrics
|
||||
keybind.performance_metrics.name = Переключение метрик производительности
|
||||
mode.help.title = Описание режимов
|
||||
mode.survival.name = Выживание
|
||||
mode.survival.description = Обычный режим. Необходимо добывать ресурсы, а волны наступают автоматически.\n[gray]Требуются точки появления врагов на карте для игры.
|
||||
@@ -1631,8 +1624,8 @@ rules.checkplacement.info = При отключении, постройки эт
|
||||
rules.enemyCheat = Бесконечные ресурсы у ИИ
|
||||
rules.blockhealthmultiplier = Множитель прочности блоков
|
||||
rules.blockdamagemultiplier = Множитель урона блоков
|
||||
rules.unitfactoryactivation = Unit Factory Activation Delay
|
||||
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
|
||||
rules.unitfactoryactivation = Задержка активации производства боевых единиц
|
||||
rules.unitfactoryactivation.objective = До активации производства боевых единиц: {0}
|
||||
rules.unitbuildspeedmultiplier = Множитель скорости производства боев. ед.
|
||||
rules.unitcostmultiplier = Множитель стоимости боев. ед.
|
||||
rules.unithealthmultiplier = Множитель прочности боев. ед.
|
||||
@@ -1661,7 +1654,7 @@ rules.unitammo = Боев. ед. требуют боеприпасы
|
||||
rules.enemyteam = Команда Врагов
|
||||
rules.playerteam = Команда Игрока
|
||||
rules.title.waves = Волны
|
||||
rules.title.resourcesbuilding = Ресурсы & строительство
|
||||
rules.title.resourcesbuilding = Ресурсы и строительство
|
||||
rules.title.enemy = Враги
|
||||
rules.title.unit = Боевые единицы
|
||||
rules.title.experimental = Экспериментально
|
||||
@@ -1674,7 +1667,7 @@ rules.invasions = Вторжения врагов на сектора
|
||||
rules.legacylaunchpads = Старые пусковые площадки
|
||||
rules.legacylaunchpads.info = Позволяет использовать старые пусковые площадки из версии 7.0.
|
||||
landingpad.legacy.disabled = [scarlet]\ue815 Выключено[lightgray] ("Старые пусковые площадки" включены)
|
||||
rules.hidespawns = Hide Enemy Spawns
|
||||
rules.hidespawns = Скрыть точки появления врагов
|
||||
rules.randomwaveai = Непредсказуемый ИИ волн
|
||||
rules.pauseDisabled = Отключить паузы
|
||||
rules.fire = Огонь
|
||||
@@ -2198,9 +2191,9 @@ block.disperse.name = Диапазон
|
||||
block.afflict.name = Бедствие
|
||||
block.lustre.name = Сияние
|
||||
block.scathe.name = Погибель
|
||||
block.scathe.carbide.info = Travels significantly faster.\nModerate damage at any range.
|
||||
block.scathe.surge-alloy.info = Splits into micro missiles.\nHeavy damage at close distance.
|
||||
block.scathe.phase-fabric.info = Equipped with a force field.\nLow damage, largest radius.
|
||||
block.scathe.carbide.info = Летит быстрее.\nСредний урон на любой дистанции.
|
||||
block.scathe.surge-alloy.info = Разделяется на мини-ракеты.\nБольшой урон на близкой дистанции.
|
||||
block.scathe.phase-fabric.info = Оснащён щитом.\nНизкий урон, наибольшая дистанция.
|
||||
block.tank-refabricator.name = Рефабрикатор танков
|
||||
block.mech-refabricator.name = Рефабрикатор мехов
|
||||
block.ship-refabricator.name = Рефабрикатор кораблей
|
||||
@@ -2319,7 +2312,7 @@ ff.arc = Турели :arc: [accent]«Дуга»[] требуют энергии
|
||||
fungalpass.tutorial1 = Используйте [accent]единицы[] для защиты построек и атаки на врага.\nИсследуйте и разместите :ground-factory: [accent]Наземную фабрику[].
|
||||
fungalpass.tutorial2 = Выберите единицу :dagger: [accent]«Кинжал»[] на фабрике.\nПроизведите 3 единицы.
|
||||
|
||||
frontier.tutorial1 = :additive-reconstructor: [accent]Добавляющий реконструктор[]\nулучшает единицы 1-го уровня до 2-го\nс использованием :silicon: кремния и :graphite: графита.\n\n[accent]Исследуйте и реконструируйте\n[]:dagger:[accent] Кинжал в []:mace:[accent] Булаву.
|
||||
frontier.tutorial1 = :additive-reconstructor: [accent]Добавляющий реконструктор[]\nулучшает единицы 1-го уровня до 2-го\nс использованием :silicon: кремния и :graphite: графита.\n\n[accent]Реконструируйте []:dagger:[accent] Кинжал \nв []:mace:[accent] Булаву.
|
||||
frontier.tutorial2 = Волны врагов приходят [accent]бесконечно[] до тех пор, пока все вражеские ядра не будут [unlaunched]уничтожены[].
|
||||
frontier.tutorial3 = [accent]Атакуйте базу врага быстро, чтобы предотвратить усиление волн[].
|
||||
|
||||
@@ -2747,7 +2740,7 @@ lst.radar = Обнаруживает единицы вокруг построй
|
||||
lst.sensor = Получает данные из постройки или единицы.
|
||||
lst.set = Задаёт значение переменной.
|
||||
lst.operation = Совершает операцию над 1-2 переменными.
|
||||
lst.select = Conditionally set a variable to one of two values.
|
||||
lst.select = Условно устанавливает значение переменной.
|
||||
lst.end = Переходит к началу стека операций.
|
||||
lst.wait = Ждёт определённое количество секунд.
|
||||
lst.stop = Останавливает работу данного процессора.
|
||||
@@ -2760,7 +2753,7 @@ lst.unitlocate = Обнаруживает позицию/постройку оп
|
||||
lst.getblock = Получает данные о плитке в любом месте.
|
||||
lst.setblock = Устанавливает плитку в любом месте.
|
||||
lst.spawnunit = Создает боевую единицу на локации.
|
||||
lst.spawnbullet = Spawns a bullet at a location.
|
||||
lst.spawnbullet = Создаёт пулю на локации.
|
||||
lst.applystatus = Применяет или снимает эффект статуса с боевой единицы.
|
||||
lst.weathersense = Проверяет состояние погоды.
|
||||
lst.weatherset = Устанавливает погоду.
|
||||
@@ -2783,7 +2776,7 @@ lst.playmusic = Plays a music track by name, e.g. [accent]"game1"[].\nIf [accent
|
||||
lst.makemarker = Создать новый логический маркер.\nНужно указать ID маркера.\nМаксимум 20000 маркеров.
|
||||
lst.setmarker = Установить значение маркера.\nID маркера должен соответствовать указанному в строке создания маркера.
|
||||
lst.localeprint = Добавляет данные локалей в текстовый буфер.\nЧтобы добавить локали, зайдите в [accent]Информация о карте > Наборы локалей[].\nЕсли клиент на мобильном устройсте, сначала попытается найти строку с окончанием ".mobile".
|
||||
lst.query = Queries units/buildings in a specified area.\nResults are outputted into [accent]@queries[].\nResults can be read from [accent]@queries[] using the [accent]Read[] instruction and an index.\nLength of [accent]@queries[] can be sensed using [accent]@size[] as a parameter.
|
||||
lst.query = Проверяет единицы/постройки в области.\nРезультаты попадают в [accent]@queries[].\nРезультаты из [accent]@queries[] можно прочитать с помощью инструкции [accent]Read[] и индекса.\nДлина [accent]@queries[] может быть прочитана с использованием [accent]@size[] как параметра.
|
||||
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
|
||||
@@ -563,6 +563,7 @@ asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
@@ -608,8 +609,6 @@ waves.max = maksimalno jedinica
|
||||
waves.guardian = Čuvar
|
||||
waves.preview = Prikaz
|
||||
waves.random = Random
|
||||
waves.copy = Kopiraj u Privremenu Memoriju
|
||||
waves.load = Učitaj iz Privremene Memorije
|
||||
waves.invalid = U privremenoj memoriji se nalaze ne-validni talasi.
|
||||
waves.copied = Talasi su kopirani.
|
||||
waves.none = Nema definisanih neprijatelja.\nImajte na umu da će prazan skup talasa automatski biti zamenjen standardnim skupom.
|
||||
@@ -999,7 +998,6 @@ sector.mycelialBastion.name = Mycelial Bastion
|
||||
sector.frontier.name = Frontier
|
||||
sector.sunkenPier.name = Sunken Pier
|
||||
sector.littoralShipyard.name = Littoral Shipyard
|
||||
sector.cruxscape.name = Cruxscape
|
||||
sector.geothermalStronghold.name = Geothermal Stronghold
|
||||
|
||||
sector.groundZero.description = Savršena lokacija za ponovni početak. Niska neprijateljska pretnja, ali i mala količina resursa.\nSakupite sav bakar i svo olovo koje možete. Nastavite dalje.
|
||||
|
||||
@@ -563,6 +563,7 @@ asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
@@ -608,8 +609,6 @@ waves.max = max units
|
||||
waves.guardian = Guardian
|
||||
waves.preview = Förhandsvisning
|
||||
waves.random = Random
|
||||
waves.copy = Kopiera till Urklipp
|
||||
waves.load = Läs från Urklipp
|
||||
waves.invalid = Invalid waves in clipboard.
|
||||
waves.copied = Vågor kopierade.
|
||||
waves.none = No enemies defined.\nNote that empty wave layouts will automatically be replaced with the default layout.
|
||||
@@ -999,7 +998,6 @@ sector.mycelialBastion.name = Mycelial Bastion
|
||||
sector.frontier.name = Frontier
|
||||
sector.sunkenPier.name = Sunken Pier
|
||||
sector.littoralShipyard.name = Littoral Shipyard
|
||||
sector.cruxscape.name = Cruxscape
|
||||
sector.geothermalStronghold.name = Geothermal Stronghold
|
||||
|
||||
sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on.
|
||||
|
||||
@@ -19,7 +19,7 @@ clipboardcopy = เซิร์ฟเวอร์นี้ต้องการ
|
||||
linkfail = ไม่สามารถเปิดลิ้งค์ได้\nได้ทำการคัดลอก URL ลงในคลิปบอร์ดแล้ว
|
||||
screenshot = ภาพหน้าจอได้ถูกบันทึกไปที่ {0}
|
||||
screenshot.invalid = แมพใหญ่เกินไป หน่วยความจำอาจจะไม่พอสำหรับภาพหน้าจอ
|
||||
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
|
||||
screenshot.error = ไม่สามารถถ่ายภาพหน้าจอได้ เครื่องของคุณอาจไม่รองรับภาพหน้าจอที่มีขนาดใหญ่เช่นนี้
|
||||
gameover = จบเกม
|
||||
gameover.disconnect = ออก
|
||||
gameover.pvp = ทีมที่ชนะคือทีม [accent]{0}[]!
|
||||
@@ -62,7 +62,7 @@ export.file = ส่งออกไฟล์
|
||||
import.file = นำเข้าไฟล์
|
||||
copy.clipboard = คัดลอกไปที่คลิปบอร์ด
|
||||
import.clipboard = นำเข้าจากคลิปบอร์ด
|
||||
workshop.browse = Browse Workshop
|
||||
workshop.browse = ค้นหาในเวิร์กช็อป
|
||||
workshop.share = แชร์บนเวิร์กช็อป
|
||||
|
||||
schematic = แผนผัง
|
||||
@@ -179,7 +179,7 @@ mod.incompletedependencies.details = ม็อดนี้ไม่สามา
|
||||
mod.requiresversion = ต้องการเวอร์ชั่นเกม: [red]{0}
|
||||
|
||||
mod.errors = มีข้อผิดพลาดเกิดขึ้นระหว่างโหลดเนื้อหา
|
||||
mod.errors.map = [scarlet]Errors have occurred loading map content. All custom content has been disabled.[]\nThis map will likely not function correctly.
|
||||
mod.errors.map = [scarlet]มีข้อผิดพลาดเกิดขึ้นระหว่างโหลดเนื้อหาของแมพ เนื้อหาปรับแต่งทั้งหมดได้ถูกปิดใช้งาน[]\nแมพนี้อาจไม่สามารถทำงานได้อย่างถูกต้อง
|
||||
mod.noerrorplay = [scarlet]คุณมีม็อดที่มีข้อผิดพลาด[] กรุณาปิดม็อดนั้นๆ หรือแก้ไขข้อผิดพลาดก่อนที่จะเล่น
|
||||
mod.enable = เปิดใช้งาน
|
||||
mod.requiresrestart = เกมจะปิดตัวลงเพื่อติดตั้งม็อด
|
||||
@@ -331,10 +331,10 @@ cantconnect = ไม่สามารถเข้าร่วมเซิร์
|
||||
connecting = [accent]กำลังเชื่อมต่อ...
|
||||
reconnecting = [accent]กำลังเชื่อมต่อใหม่...
|
||||
|
||||
connecting.establish = [accent]Establishing connection...
|
||||
receiving.world = [accent]Receiving world data ({0})...
|
||||
receiving.assets = [accent]Receiving assets ({0})...
|
||||
receiving.assets.fail = Error occurred while receiving assets.
|
||||
connecting.establish = [accent]กำลังเชื่อมต่อ...
|
||||
receiving.world = [accent]กำลังรับข้อมูลของโลก ({0})...
|
||||
receiving.assets = [accent]กำลังรับแอสเสท ({0})...
|
||||
receiving.assets.fail = เกิดข้อผิดพลาดทาง I/O ขึ้นขณะรับแอสเสท
|
||||
|
||||
server.port = พอร์ต:
|
||||
server.invalidport = เลขพอร์ตไม่ถูกต้อง!
|
||||
@@ -352,10 +352,10 @@ save.export = ส่งออกเซฟ
|
||||
save.import.invalid = [accent]เซฟนี้ไม่ถูกต้อง!
|
||||
save.import.fail = [crimson]ไม่สามารถนำเข้าเซฟ: [accent]{0}
|
||||
save.export.fail = [crimson]ไม่สามารถส่งออกเซฟ: [accent]{0}
|
||||
save.export.needsload = [scarlet]⚠ This save contains embedded assets.[]\nLoad into this save before exporting it.
|
||||
save.assets.missing = Missing Assets
|
||||
save.assets.missing.list = Asset List...
|
||||
save.assets.missing.info = [scarlet]⚠ This save contains missing assets![]\n\n[lightgray]This is likely because the save file was not properly exported.\n[lightgray]When sharing saves, only export through the in-game UI. Do not copy save files directly.\n[lightgray]If transferring files is necessary, make sure the [accent]assetCache[] folder is copied as well.
|
||||
save.export.needsload = [scarlet]⚠ เซฟนี้มีแอสเสทเนื้อหาแนบมาด้วย[]\nโปรดโหลดเซฟนี้ขึ้นมาก่อนที่จะส่งออก
|
||||
save.assets.missing = แอสเซทขาดหาย
|
||||
save.assets.missing.list = รายชื่อแอสเซท...
|
||||
save.assets.missing.info = [scarlet]⚠ เซฟนี้มีแอสเซทเนื้อหาที่ขาดหาย![]\n\n[lightgray]อาจเกิดจากไฟล์เซฟไม่ได้ถูกส่งออกอย่างถูกต้อง\n[lightgray]เวลาจะแชร์เซฟ ควรที่จะส่งออกผ่าน UI ภายในเกมเท่านั้น ห้ามคัดลอกไฟล์เซฟโดยตรง\n[lightgray]หากจำเป็นต้องถ่ายโอนไฟล์ ควรตรวจสอบให้แน่ใจว่าโฟลเดอร์ [accent]assetCache[] นั้นถูกคัดลอกมาด้วย
|
||||
save.import = นำเข้าเซฟ
|
||||
save.newslot = ชื่อเซฟ:
|
||||
save.rename = เปลี่ยนชื่อ
|
||||
@@ -380,7 +380,7 @@ confirm = ตกลง
|
||||
delete = ลบ
|
||||
view.workshop = เปิดในเวิร์กช็อป
|
||||
workshop.listing = แก้ไขหน้ารายการเวิร์กช็อป
|
||||
hide = Hide
|
||||
hide = ซ่อน
|
||||
ok = โอเค
|
||||
open = เปิด
|
||||
customize = ตั้งค่ากฎ
|
||||
@@ -516,78 +516,74 @@ editor.filters.planetselect = เลือกดาวเคราะห์
|
||||
editor.shiftx = เลื่อน X
|
||||
editor.shifty = เลื่อน Y
|
||||
|
||||
asset.emoji = Emojis
|
||||
asset.patch = Patch
|
||||
asset.content = Content
|
||||
asset.bundle = Translation Bundle
|
||||
asset.image = Image
|
||||
asset.sound = Sound
|
||||
asset.music = Music
|
||||
asset.patch = แพตช์
|
||||
asset.content = เนื้อหา
|
||||
asset.bundle = ชุดแปลภาษา
|
||||
asset.image = รูปภาพ
|
||||
asset.sound = เสียง
|
||||
asset.music = เพลง
|
||||
|
||||
content.unit = Unit
|
||||
content.item = Item
|
||||
content.liquid = Liquid
|
||||
content.block = Block
|
||||
content.planet = Planet
|
||||
content.weather = Weather
|
||||
content.status = Status Effect
|
||||
content.unit = ยูนิต
|
||||
content.item = ไอเท็ม
|
||||
content.liquid = ของเหลว
|
||||
content.block = บล็อก
|
||||
content.planet = ดาว
|
||||
content.weather = สภาพอากาศ
|
||||
content.status = เอฟเฟกต์สถานะ
|
||||
|
||||
patch.set = Patchset: {0}
|
||||
patch.set = ชุดแพตช์: {0}
|
||||
patch.none = [lightgray]ไม่มีชุดแพตช์ที่โหลดมา
|
||||
patch.errors = ข้อผิดพลาดชุดแพตช์
|
||||
patch.importerror = เกิดข้อผิดพลาดในการนำเข้าชุดแพตช์
|
||||
patch.delete.confirm = คุณแน่ใจหรือว่าจะลบชุดแพตช์นี้?
|
||||
patch.path = Path:
|
||||
patch.path = เส้นทาง:
|
||||
patch.fields = {0} ฟิลด์
|
||||
|
||||
bundle.lines = {0} lines
|
||||
bundle.lines = {0} บรรทัด
|
||||
|
||||
images = Images
|
||||
asset.title = Data Patches & Assets
|
||||
asset.guide = Usage Guide
|
||||
asset.bundle.exists = A bundle with path '{0}' already exists.
|
||||
asset.importzip = Import Asset Zip
|
||||
asset.exportzip = Export Asset Zip
|
||||
asset.image.importzip = Import Zip
|
||||
asset.image.exportzip = Export Zip
|
||||
asset.clearall = Clear All
|
||||
asset.clearall.confirm = Are you sure that you want to clear [red]all[] assets from this map?\nThis includes images, audio, content, etc.
|
||||
asset.imports = Import Results
|
||||
asset.imported = [accent]{0} assets imported.
|
||||
asset.import.none = No valid asset files found in zip archive.
|
||||
asset.content.errors = Content Errors
|
||||
asset.content.add = Add Content
|
||||
asset.content.type = Type:
|
||||
asset.content.exists = [red]Content with that name already exists!
|
||||
asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
asset.images = Data Patch Images
|
||||
asset.image.imports = Import Results
|
||||
asset.image.imported = [accent]{0} images imported.
|
||||
asset.image.none = No valid PNG files found in zip archive.
|
||||
asset.image.error = [red]The following errors were encountered:[]
|
||||
asset.image.clearall.confirm = Are you certain that you wish to clear all images?
|
||||
asset.image.info = Image Info
|
||||
asset.image.toolarge = Image ([lightgray]{0}x{1}[]) is too large. Maximum size is {2}x{3}.
|
||||
asset.image.exists = An image with that path/name already exists:\n[lightgray]{0}
|
||||
asset.image.delete.confirm = Are you certain that you wish to delete this image?
|
||||
asset.image.name = [accent]File Name: [lightgray]{0}
|
||||
asset.image.region.name = [accent]Region Name: [lightgray]{0}
|
||||
asset.image.path = [accent]Path: [lightgray]{0}
|
||||
asset.image.env = [accent]Uses Environment Atlas: [lightgray]{0}
|
||||
asset.image.size = [accent]Size: [lightgray]{0}x{1}
|
||||
asset.image.filesize = [accent]File Size: [lightgray]{0}
|
||||
asset.image.packfailed = [red]⚠ Failed to pack sprite![]
|
||||
asset.image.packfailed.env = This is likely caused by a lack of space in the environment atlas.\nNote that environment sprites are limited to a 512x512 total area.
|
||||
|
||||
asset.emoji.delete = Delete Selected ({0})
|
||||
asset.emoji.notfound = Image with specified name not found.
|
||||
asset.emoji.exists = An emoji with that name already exists.
|
||||
images = รูปภาพ
|
||||
asset.title = แพตช์เนื้อหา & แอสเซท
|
||||
asset.guide = คู่มือการใช้งาน
|
||||
asset.bundle.exists = มีชุดภาษาที่ใช้เส้นทาง '{0}' อยู่แล้ว
|
||||
asset.importzip = นำเข้าแอสเซท Zip
|
||||
asset.exportzip = ส่งออกแอสเซท Zip
|
||||
asset.image.importzip = นำเข้า Zip
|
||||
asset.image.exportzip = ส่งออก Zip
|
||||
asset.clearall = เคลียร์ทั้งหมด
|
||||
asset.clearall.confirm = คุณแน่ใจหรือว่าจะเคลียร์แอสเซท[red]ทุกอัน[]บนแมพนี้?\nซึ่งรวมไปถึง รูปภาพ เสียง ชุดเนื้อหา ฯลฯ
|
||||
asset.imports = ผลลัพธ์การนำเข้า
|
||||
asset.imported = [accent]นำเข้าแล้ว {0} แอสเซท
|
||||
asset.import.none = ไม่พบไฟล์แอสเซทที่ถูกต้องในไฟล์ Zip
|
||||
asset.content.errors = ข้อผิดพลาดชุดเนื้อหา
|
||||
asset.content.add = เพิ่มเนื้อหา
|
||||
asset.content.type = ชนิด:
|
||||
asset.content.exists = [red]มีเนื้อหาที่ใช้ชื่อนี้อยู่แล้ว!
|
||||
asset.content.badname = [red]ไม่สามารถใช้ชื่อนี้ได้! สัญลักษณ์ส่วนใหญ่ไม่สามารถใช้ได้
|
||||
asset.content.import.file = นำเข้าไฟล์
|
||||
asset.content.import.clipboard = นำเข้าจากคลิปบอร์ด
|
||||
asset.exists = มีแอสเซทชนิดเดียวกันที่ใช้เส้นทาง/ชื่อนี้อยู่แล้ว:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = ไม่อาจพบไฟล์แอสเซทนี้ได้\nอาจเกิดจากการนำเข้าข้อมูลที่ผิดพลาด หรือการส่งออกไฟล์เซฟที่ไม่ถูกต้อง
|
||||
asset.audio.invalid = ไม่สามารถโหลดไฟล์เสียงได้\nโปรดตรวจสอบให้แน่ใจว่าเป็นไฟล์ประเภท OGG หรือ MP3 ที่ถูกต้อง
|
||||
asset.delete.confirm = คุณแน่ใจหรือว่าจะลบแอสเซทนี้?
|
||||
asset.images = แพตช์ข้อมูลรูป
|
||||
asset.image.imports = ผลลัพธ์การนำเข้า
|
||||
asset.image.imported = [accent]นำเข้าแล้ว {0} รูปภาพ
|
||||
asset.image.none = ไม่พบไฟล์ PNG ที่ถูกต้องในไฟล์ Zip
|
||||
asset.image.error = [red]พบข้อผิดพลาดดังต่อไปนี้:[]
|
||||
asset.image.clearall.confirm = คุณแน่ใจหรือว่าจะเคลียร์รูปภาพทั้งหมด?
|
||||
asset.image.info = ข้อมูลรูปภาพ
|
||||
asset.image.toolarge = รูปภาพ ([lightgray]{0}x{1}[]) มีขนาดใหญ่เกินไป ขนาดสูงสุดที่รองรับคือ {2}x{3}
|
||||
asset.image.exists = มีรูปภาพที่ใช้เส้นทาง/ชื่อนี้อยู่แล้ว:\n[lightgray]{0}
|
||||
asset.image.delete.confirm = คุณแน่ใจหรือว่าจะลบรูปภาพนี้?
|
||||
asset.image.name = [accent]ชื่อไฟล์: [lightgray]{0}
|
||||
asset.image.region.name = [accent]ชื่อภูมิภาค: [lightgray]{0}
|
||||
asset.image.path = [accent]เส้นทาง: [lightgray]{0}
|
||||
asset.image.env = [accent]ใช้แอตลาสสิ่งแวดล้อม: [lightgray]{0}
|
||||
asset.image.size = [accent]ขนาด: [lightgray]{0}x{1}
|
||||
asset.image.filesize = [accent]ขนาดไฟล์: [lightgray]{0}
|
||||
asset.image.packfailed = [red]⚠ ไม่สามารถแพ็คสไปรท์ได้![]
|
||||
asset.image.packfailed.env = ปัญหานี้อาจเกิดจากพื้นที่ในแอตลาสสิ่งแวดล้อมไม่พอ\nโปรดทราบว่าแอตลาสสิ่งแวดล้อมมีพื้นที่จำกัดที่ 512x512
|
||||
|
||||
workshop = เวิร์กช็อป
|
||||
waves.title = คลื่น
|
||||
@@ -608,8 +604,6 @@ waves.max = ยูนิตสูงสุด
|
||||
waves.guardian = ผู้พิทักษ์
|
||||
waves.preview = พรีวิว
|
||||
waves.random = สุ่ม
|
||||
waves.copy = คัดลอกไปยังคลิปบอร์ด
|
||||
waves.load = โหลดจากคลิปบอร์ด
|
||||
waves.invalid = แบบคลื่นในคลิปบอร์ดไม่ถูกต้อง
|
||||
waves.copied = คัดลอกแบบคลื่นแล้ว
|
||||
waves.none = ไม่ได้กำหนดคลื่นศัตรู\nแบบคลื่นเปล่าจะถูกแทนที่โดยแบบคลื่นค่าเริ่มต้นของเกม
|
||||
@@ -632,8 +626,8 @@ wavemode.health = พลังชีวิต
|
||||
all = ทั้งหมด
|
||||
editor.default = [lightgray]<ค่าเริ่มต้น>
|
||||
details = รายละเอียด...
|
||||
edit = แก้ไข...
|
||||
edit.menu = Edit...
|
||||
edit = แก้ไข
|
||||
edit.menu = แก้ไข...
|
||||
variables = ตัวแปร
|
||||
logic.error.toolong = โค้ดตัวประมวลผลยาวเกินไป (ความยาวจำกัด: {0} ไบต์บีบอัด ความยาวจริง: {1} ไบต์)
|
||||
logic.clear.confirm = คุณแน่ใจหรือว่าจะเคลียร์โค้ดทั้งหมดของตัวประมวลผลนี้?
|
||||
@@ -999,7 +993,6 @@ sector.mycelialBastion.name = ปราการไมซีเลียล
|
||||
sector.frontier.name = เขตชายแดน
|
||||
sector.sunkenPier.name = ท่าเรือบาดาล
|
||||
sector.littoralShipyard.name = อู่เรือชายฝั่ง
|
||||
sector.cruxscape.name = ครักซ์สเคป
|
||||
sector.geothermalStronghold.name = ปราการแห่งอัคคี
|
||||
|
||||
sector.groundZero.description = จุดที่ดีที่สุดในการตั้งต้นใหม่อีกครั้งนึง ศัตรูน้อย ทรัพยากรน้อย\n\nเก็บตะกั่วและทองแดงให้ได้มากที่สุด\nแล้วลุยต่อ
|
||||
@@ -1035,7 +1028,7 @@ sector.littoralShipyard.description = ณ สุดขอบไกลโพ้
|
||||
sector.onset.name = การเริ่มต้น
|
||||
sector.aegis.name = อีจีส
|
||||
sector.lake.name = ทะเลสาบสีชาด
|
||||
sector.intersect.name = อินเตอร์เซค
|
||||
sector.intersect.name = อินเตอร์เซก
|
||||
sector.atlas.name = แอตลาส
|
||||
sector.split.name = สองฝั่ง
|
||||
sector.basin.name = แอ่งยุบ
|
||||
@@ -1075,7 +1068,7 @@ status.muddy.name = เปื้อนเปรอะ
|
||||
status.melting.name = หลอมเหลว
|
||||
status.sapped.name = อ่อนกำลัง
|
||||
status.electrified.name = ช็อตไฟฟ้า
|
||||
status.spore-slowed.name = สปอร์สโลว์
|
||||
status.spore-slowed.name = เฉื่อยสปอร์
|
||||
status.tarred.name = เปื้อนน้ำมัน
|
||||
status.overdrive.name = โอเวอร์ไดรฟ์
|
||||
status.overclock.name = โอเวอร์คล็อก
|
||||
@@ -1097,7 +1090,7 @@ settings.resetKey = รีเซ็ต
|
||||
settings.controls = การควบคุม
|
||||
settings.game = เกม
|
||||
settings.sound = เสียง
|
||||
settings.dev = Developer Options
|
||||
settings.dev = การตั้งค่าผู้พัฒนา
|
||||
settings.graphics = กราฟิก
|
||||
settings.cleardata = เคลียร์ข้อมูลเกม...
|
||||
settings.clear.confirm = คุณแน่ใจหรือว่าจะเคลียร์ข้อมูลนี้?\nสิ่งที่ทำไปแล้วจะไม่สามารถย้อนกลับได้นะ!
|
||||
@@ -1147,7 +1140,7 @@ stat.targetsground = ยิงพื้นดิน
|
||||
stat.crushdamage = ดาเมจบดขยี้
|
||||
stat.legsplashdamage = ดาเมจกระจายจากขา
|
||||
stat.itemsmoved = ความเร็วการเคลื่อนย้าย
|
||||
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
|
||||
stat.itemsmoved.info = ความเร็วการเคลื่อนย้ายโดยทั่วไปจะไม่คงที่และจะขึ้นอยู่กับ FPS/TPS
|
||||
stat.launchtime = เวลาระหว่างการส่ง
|
||||
stat.shootrange = ระยะยิง
|
||||
stat.size = ขนาด
|
||||
@@ -1426,10 +1419,10 @@ setting.milliseconds = {0} มิลลิวินาที
|
||||
setting.fullscreen.name = เต็มจอ
|
||||
setting.fps.name = แสดง FPS และ Ping
|
||||
setting.console.name = เปิดใช้งานคอนโซล
|
||||
setting.drawhitboxes.name = Display Hitboxes
|
||||
setting.showperformance.name = Display Performance Metrics
|
||||
setting.buildingtimestep.name = Fixed Building Timestep
|
||||
setting.buildingtimestep.description = Runs buildings on a fixed timestep with constant delta,\nas opposed to every frame with variable delta.\nIf buildings cannot be updated fast enough, the game will slow down.\nIf you don't know what that means, don't touch this option.
|
||||
setting.drawhitboxes.name = แสดงฮิตบ็อกซ์
|
||||
setting.showperformance.name = แสดงตัวชี้วัดประสิทธิภาพ
|
||||
setting.buildingtimestep.name = ช่วงเวลาคำนวณสิ่งก่อสร้างแบบคงที่
|
||||
setting.buildingtimestep.description = ประมวลผลสิ่งก่อสร้างโดยใช้ช่วงเวลาคำนวณ (timestep) แบบคงที่ ที่มีค่า delta ที่คงที่\nแทนที่จะประมวลผลทุกเฟรมด้วยค่า delta ที่แปรผัน\nถ้าหากว่าสิ่งก่อสร้างไม่สามารถอัปเดตได้เร็วพอ เกมจะทำงานช้าลง\nถ้าคุณไม่รู้ว่าทั้งหมดนี่คืออะไร อย่าแตะการตั้งค่านี้เลย
|
||||
setting.smoothcamera.name = กล้องแบบลื่นไหล
|
||||
setting.detach-camera.name = กล้องอิสระ
|
||||
setting.detach-camera.description = หากเปิดใช้งาน กล้องจะขยับแบบอิสระโดยไม่ตามยูนิตผู้เล่น\nการตั้งค่านี้สามารถตั้งปุ่มลัดได้
|
||||
@@ -1572,9 +1565,9 @@ keybind.chat_mode.name = เปลี่ยนโหมดแชท
|
||||
keybind.drop_unit.name = วางยูนิต
|
||||
keybind.zoom_minimap.name = ซูมมินิแมพ
|
||||
keybind.detach_camera.name = เปิด/ปิด กล้องอิสระ
|
||||
keybind.teleport_cursor.name = Teleport To Cursor (Sandbox)
|
||||
keybind.teleport_cursor.name = วาร์ปไปยังตำแหน่งเคอร์เซอร์ (โหมดอิสระ)
|
||||
keybind.debug_hitboxes.name = เปิด/ปิด ดีบักช่องฮิตบ็อกซ์
|
||||
keybind.performance_metrics.name = Toggle Performance Metrics
|
||||
keybind.performance_metrics.name = เปิด/ปิด ตัวชี้วัดประสิทธิภาพ
|
||||
mode.help.title = คำอธิบายโหมด
|
||||
mode.survival.name = เอาชีวิตรอด
|
||||
mode.survival.description = โหมดปกติ ทรัพยากรมีจำกัดและคลื่นมาโดยอัตโนมัติ\n[gray]ต้องมีจุดเกิดของศัตรูเพื่อที่จะเล่น
|
||||
@@ -1632,7 +1625,7 @@ rules.enemyCheat = ทีมศัตรูมีทรัพยากรไม
|
||||
rules.blockhealthmultiplier = พหุคูณพลังชีวิตของบล็อก
|
||||
rules.blockdamagemultiplier = พหุคูณดาเมจของบล็อก
|
||||
rules.unitfactoryactivation = ดีเลย์การเปิดใช้งานโรงงานยูนิต
|
||||
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
|
||||
rules.unitfactoryactivation.objective = โรงงานยูนิตเปิดใช้งาน: {0}
|
||||
rules.unitbuildspeedmultiplier = พหุคูณความเร็วในการสร้างยูนิต
|
||||
rules.unitcostmultiplier = พหุคูณราคาทรัพยากรของยูนิต
|
||||
rules.unithealthmultiplier = พหุคูณพลังชีวิตของยูนิต
|
||||
@@ -1674,7 +1667,7 @@ rules.invasions = การรุกรานของฐานทัพศั
|
||||
rules.legacylaunchpads = กลไกฐานส่งทรัพยากรแบบเก่า
|
||||
rules.legacylaunchpads.info = อนุญาตการใช้ฐานส่งทรัพยากรรุ่นเก่า (เวอร์ชั่น 7.0) โดยไม่ต้องใช้ฐานลงจอดทรัพยากร
|
||||
landingpad.legacy.disabled = [scarlet]\ue815 ปิดใช้งาน[lightgray] (เปิดใช้งานกลไกฐานส่งทรัพยากรแบบเก่าอยู่)
|
||||
rules.hidespawns = Hide Enemy Spawns
|
||||
rules.hidespawns = ซ่อนจุดเกิดศัตรู
|
||||
rules.randomwaveai = AI คลื่นแบบคาดเดาไม่ได้
|
||||
rules.pauseDisabled = ปิดการหยุดชั่วคราว
|
||||
rules.fire = ไฟ
|
||||
@@ -1706,7 +1699,7 @@ database-tag.power = พลังงาน
|
||||
database-tag.defense = การป้องกัน
|
||||
database-tag.crafting = โรงงาน
|
||||
database-tag.units = ยูนิต
|
||||
database-tag.effect = สารประโยชน์
|
||||
database-tag.effect = อรรถประโยชน์
|
||||
database-tag.logic = ลอจิก
|
||||
database-tag.unit-air = อากาศ
|
||||
database-tag.unit-naval = เรือ
|
||||
@@ -1756,10 +1749,10 @@ unit.nova.name = โนวา
|
||||
unit.pulsar.name = พัลซ่าร์
|
||||
unit.quasar.name = ควอซ่าร์
|
||||
unit.crawler.name = ครอว์เลอร์
|
||||
unit.atrax.name = เอแทรคซ์
|
||||
unit.atrax.name = เอแทรกซ์
|
||||
unit.spiroct.name = สปิรอคท์
|
||||
unit.arkyid.name = อาร์ยคิด
|
||||
unit.toxopid.name = ท็อคโซพิด
|
||||
unit.arkyid.name = อาร์คยิด
|
||||
unit.toxopid.name = ท็อกโซพิด
|
||||
unit.flare.name = แฟลร์
|
||||
unit.horizon.name = ฮอไรซอน
|
||||
unit.zenith.name = เซนิธ
|
||||
@@ -1771,14 +1764,14 @@ unit.mega.name = เมก้า
|
||||
unit.quad.name = ควอด
|
||||
unit.oct.name = อ็อคท์
|
||||
unit.risso.name = ริสโซ่
|
||||
unit.minke.name = มิงกี้
|
||||
unit.minke.name = มิงค์
|
||||
unit.bryde.name = ไบรดย์
|
||||
unit.sei.name = เซย์
|
||||
unit.omura.name = โอมูร่า
|
||||
unit.retusa.name = เรธูซ่า
|
||||
unit.oxynoe.name = อ๊อกซิโนอ์
|
||||
unit.cyerce.name = เซียรส์
|
||||
unit.aegires.name = เอเกียเรส
|
||||
unit.retusa.name = เรทูซ่า
|
||||
unit.oxynoe.name = อ็อกซิโน
|
||||
unit.cyerce.name = ไซเยอร์ส
|
||||
unit.aegires.name = เอกิเรส
|
||||
unit.navanax.name = นาวาแน็คซ์
|
||||
unit.alpha.name = อัลฟ่า
|
||||
unit.beta.name = เบต้า
|
||||
@@ -1990,7 +1983,7 @@ block.wave.name = เวฟ
|
||||
block.tsunami.name = สึนามิ
|
||||
block.swarmer.name = สวอร์มเมอร์
|
||||
block.salvo.name = ซัลโว
|
||||
block.ripple.name = ริปเปิ้ล
|
||||
block.ripple.name = ริปเปิล
|
||||
block.phase-conveyor.name = สายพานเฟส
|
||||
block.bridge-conveyor.name = สะพานไอเท็ม
|
||||
block.plastanium-compressor.name = เครื่องอัดพลาสตาเนี่ยม
|
||||
@@ -2027,7 +2020,7 @@ block.overdrive-projector.name = เครื่องเร่งประส
|
||||
block.force-projector.name = เครื่องฉายสนามพลัง
|
||||
block.arc.name = อาร์ค
|
||||
block.rtg-generator.name = เครื่องกำเนิดไฟฟ้า RTG
|
||||
block.spectre.name = สเป็คเตอร์
|
||||
block.spectre.name = สเปกเตอร์
|
||||
block.meltdown.name = เมลท์ดาวน์
|
||||
block.foreshadow.name = ฟอร์ชาโดว์
|
||||
block.container.name = ตู้เก็บของ
|
||||
@@ -2193,7 +2186,7 @@ block.reinforced-container.name = ตู้เก็บของเสริม
|
||||
block.reinforced-vault.name = ตู้นิรภัยเสริมกำลัง
|
||||
block.breach.name = บรีช
|
||||
block.sublimate.name = ซับลิเมต
|
||||
block.titan.name = ไททั่น
|
||||
block.titan.name = ไททัน
|
||||
block.disperse.name = ดิสเพิร์ส
|
||||
block.afflict.name = อัฟฟลิกต์
|
||||
block.lustre.name = ลัสเตอร์
|
||||
@@ -2779,7 +2772,7 @@ lst.setprop = ตั้งค่าคุณสมบัติของยูน
|
||||
lst.effect = เสกเอฟเฟกต์อนุภาค
|
||||
lst.sync = ซิงค์หนึ่งตัวแปรทั่วทั้งเครือข่าย\nสามารถเรียกใช้คำสั่งได้แค่ 10 ครั้งต่อวินาทีอย่างมาก
|
||||
lst.playsound = เล่นเสียง\nระดับเสียงและการแพนสามารถใช้เป็นค่าสากลได้ หรือคำนวณเอาจากตำแหน่งก็ได้
|
||||
lst.playmusic = Plays a music track by name, e.g. [accent]"game1"[].\nIf [accent]interrupt[] is true, the previously playing music will be stopped.\nPlaying with null music and interrupt set to true will stop the current track.\nNote that music from data patches must be prefixed with [accent]dp-[].
|
||||
lst.playmusic = เล่นเพลงตามชื่อที่ใส่ เช่น [accent]"game1"[]\nหาก [accent]interrupt[] เป็นจริง เพลงที่กำลังเล่นก่อนหน้าจะหยุดเล่น\nการเล่นโดยที่ค่าเพลงเป็น null และตั้งค่า interrupt เป็นจริงจะหยุดเพลงที่กำลังเล่นอยู่\nโปรดจำว่าเพลงจากแพตช์เนื้อหาจะต้องเติมคำนำหน้าด้วย [accent]dp-[]
|
||||
lst.makemarker = สร้างเครื่องหมายลอจิกใหม่ขึ้นมาในแมพ\nจะต้องเพิ่ม ID เข้าไปเพื่อบ่งชี้เครื่องหมายนี้\nเครื่องหมายจำกัดได้แค่ 20,000 ต่อแมพในตอนนี้
|
||||
lst.setmarker = ตั้งค่าคุณสมบัติให้กับเครื่องหมาย\nID ของเครื่องหมายที่ใช้จะต้องเป็น ID เดียวกันกับในคำสั่ง Make Marker\nค่า[accent]ว่างเปล่า[]จะถูกข้าม
|
||||
lst.localeprint = เพิ่มค่าชุดภาษาท้องถิ่นของแมพลงไปยังคิวข้อความเพื่อตั้งค่าชุดภาษาของแมพในตัวแก้ไข ให้เปิด [accent]ข้อมูลแมพ > ชุดภาษาท้องถิ่น[].\nถ้าหากผู้เล่นอยู่ในมือถือ ให้ลองปริ้นค่าโดยลงท้ายด้วย ".mobile" ก่อน
|
||||
|
||||
@@ -563,6 +563,7 @@ asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
@@ -608,8 +609,6 @@ waves.max = max units
|
||||
waves.guardian = Guardian
|
||||
waves.preview = Preview
|
||||
waves.random = Random
|
||||
waves.copy = Copy to Clipboard
|
||||
waves.load = Load from Clipboard
|
||||
waves.invalid = Invalid waves in clipboard.
|
||||
waves.copied = Waves copied.
|
||||
waves.none = No enemies defined.\nNote that empty wave layouts will automatically be replaced with the default layout.
|
||||
@@ -999,7 +998,6 @@ sector.mycelialBastion.name = Mycelial Bastion
|
||||
sector.frontier.name = Frontier
|
||||
sector.sunkenPier.name = Sunken Pier
|
||||
sector.littoralShipyard.name = Littoral Shipyard
|
||||
sector.cruxscape.name = Cruxscape
|
||||
sector.geothermalStronghold.name = Geothermal Stronghold
|
||||
|
||||
sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on.
|
||||
|
||||
@@ -563,6 +563,7 @@ asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
@@ -608,8 +609,6 @@ waves.max = maks birim
|
||||
waves.guardian = Gardiyan
|
||||
waves.preview = Önizleme
|
||||
waves.random = Rastgele
|
||||
waves.copy = Panodan kopyala
|
||||
waves.load = Panodan yükle
|
||||
waves.invalid = Panoda geçersiz dalga sayısı var.
|
||||
waves.copied = Dalgalar kopyalandı.
|
||||
waves.none = Düşman bulunamadı.\nBoş dalga düzenlerin otomatik olarak varsayılan düzenle değiştirileceğini unutmayın
|
||||
@@ -999,7 +998,6 @@ sector.mycelialBastion.name = Mantar Kale
|
||||
sector.frontier.name = Öncü Üs
|
||||
sector.sunkenPier.name = Batık Öncü
|
||||
sector.littoralShipyard.name = Kıyı Tersane
|
||||
sector.cruxscape.name = Crux Düzlüğü
|
||||
sector.geothermalStronghold.name = Jeotermal Sığınağı
|
||||
|
||||
sector.groundZero.description = Yeniden başlamak için ideal bölge. Düşük düşman tehlikesi ve az miktarda kaynak mevcut. Mümkün olduğunca çok bakır ve kurşun topla.\nİlerle.
|
||||
|
||||
@@ -563,6 +563,7 @@ asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
@@ -608,8 +609,6 @@ waves.max = макс. одиниць
|
||||
waves.guardian = Вартовий
|
||||
waves.preview = Попередній перегляд
|
||||
waves.random = Випадково
|
||||
waves.copy = Копіювати в буфер обміну
|
||||
waves.load = Завантажити з буфера обміну
|
||||
waves.invalid = Недійсні хвилі в буфері обміну.
|
||||
waves.copied = Хвилі скопійовані.
|
||||
waves.none = Противники не були встановлені.\nЗазначимо, що пусті хвилі будуть автоматично замінені звичайною хвилею.
|
||||
@@ -999,7 +998,6 @@ sector.mycelialBastion.name = Mycelial Bastion
|
||||
sector.frontier.name = Frontier
|
||||
sector.sunkenPier.name = Sunken Pier
|
||||
sector.littoralShipyard.name = Littoral Shipyard
|
||||
sector.cruxscape.name = Cruxscape
|
||||
sector.geothermalStronghold.name = Geothermal Stronghold
|
||||
|
||||
sector.groundZero.description = Оптимальне місце для повторних ігор. Низька ворожа загроза. Мало ресурсів.\nЗберіть якомога більше свинцю та міді.\nНе затримуйтесь і йдіть далі.
|
||||
|
||||
@@ -19,7 +19,7 @@ clipboardcopy = Máy chủ này muốn sao chép văn bản vào bảng tạm c
|
||||
linkfail = Không mở được liên kết!\nURL đã được sao chép vào bộ nhớ tạm.
|
||||
screenshot = Ảnh chụp màn hình được lưu vào {0}
|
||||
screenshot.invalid = Bản đồ quá lớn, có khả năng không đủ bộ nhớ để chụp ảnh màn hình.
|
||||
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
|
||||
screenshot.error = Chụp ảnh màn hình thất bại. Thiết bị của bạn hình như không hỗ trợ ảnh chụp lớn cỡ này.
|
||||
gameover = Trò chơi kết thúc
|
||||
gameover.disconnect = Ngắt kết nối
|
||||
gameover.pvp = Đội[accent] {0}[] chiến thắng!
|
||||
@@ -58,11 +58,11 @@ mods.github.open-release = Trang phát hành
|
||||
mods.browser.sortdate = Sắp xếp theo gần đây
|
||||
mods.browser.sortstars = Sắp xếp theo sao
|
||||
|
||||
export.file = Xuất tệp
|
||||
import.file = Nhập tệp
|
||||
export.file = Xuất Tệp
|
||||
import.file = Nhập Tệp
|
||||
copy.clipboard = Sao chép vào Bộ nhớ tạm
|
||||
import.clipboard = Thêm từ Bộ nhớ tạm
|
||||
workshop.browse = Browse Workshop
|
||||
import.clipboard = Nhập từ Bộ nhớ tạm
|
||||
workshop.browse = Duyệt qua Workshop
|
||||
workshop.share = Chia sẻ lên Workshop
|
||||
|
||||
schematic = Bản thiết kế
|
||||
@@ -179,7 +179,7 @@ mod.incompletedependencies.details = Mod này không thể tải được do kh
|
||||
mod.requiresversion = Yêu cầu phiên bản trò chơi: [red]{0}
|
||||
|
||||
mod.errors = Đã xảy ra lỗi khi tải nội dung.
|
||||
mod.errors.map = [scarlet]Errors have occurred loading map content. All custom content has been disabled.[]\nThis map will likely not function correctly.
|
||||
mod.errors.map = [scarlet]Có lỗi xảy ra khi nạp nội dung bản đồ. Tất cả nội dung tùy chỉnh đã bị vô hiệu.[]\nBản đồ này sẽ có thể không hoạt động chính xác.
|
||||
mod.noerrorplay = [red]Bạn có mod bị lỗi.[] Tắt các mod bị ảnh hưởng hoặc sửa các lỗi trước khi chơi.
|
||||
mod.enable = Bật
|
||||
mod.requiresrestart = Trò chơi sẽ đóng để áp dụng các thay đổi của mod.
|
||||
@@ -331,10 +331,10 @@ cantconnect = Không thể tham gia trò chơi ([accent]{0}[]).
|
||||
connecting = [accent]Đang kết nối...
|
||||
reconnecting = [accent]Đang kết nối lại...
|
||||
|
||||
connecting.establish = [accent]Establishing connection...
|
||||
receiving.world = [accent]Receiving world data ({0})...
|
||||
receiving.assets = [accent]Receiving assets ({0})...
|
||||
receiving.assets.fail = Error occurred while receiving assets.
|
||||
connecting.establish = [accent]Đang thiết lập kết nối...
|
||||
receiving.world = [accent]Đang nhận dữ liệu thế giới ({0})...
|
||||
receiving.assets = [accent]Đang nhận các tài sản ({0})...
|
||||
receiving.assets.fail = Lỗi Nhập/Xuất xảy ra khi đang nhận các tài sản.
|
||||
|
||||
server.port = Cổng:
|
||||
server.invalidport = Số cổng không hợp lệ!
|
||||
@@ -352,10 +352,10 @@ save.export = Xuất bản lưu
|
||||
save.import.invalid = [accent]Bản lưu này không hợp lệ!
|
||||
save.import.fail = [scarlet]Không thể nhập bản lưu: [accent]{0}
|
||||
save.export.fail = [scarlet]Không thể xuất bản lưu: [accent]{0}
|
||||
save.export.needsload = [scarlet]⚠ This save contains embedded assets.[]\nLoad into this save before exporting it.
|
||||
save.assets.missing = Missing Assets
|
||||
save.assets.missing.list = Asset List...
|
||||
save.assets.missing.info = [scarlet]⚠ This save contains missing assets![]\n\n[lightgray]This is likely because the save file was not properly exported.\n[lightgray]When sharing saves, only export through the in-game UI. Do not copy save files directly.\n[lightgray]If transferring files is necessary, make sure the [accent]assetCache[] folder is copied as well.
|
||||
save.export.needsload = [scarlet]⚠ Bản lưu này chứa các tài sản nhúng.[]\nNạp vào bản lưu này trước khi xuất nó.
|
||||
save.assets.missing = Tài Sản Bị Thiếu
|
||||
save.assets.missing.list = Danh Sách Tài Sản...
|
||||
save.assets.missing.info = [scarlet]⚠ Bản lưu này chứa các tài sản bị thiếu![]\n\n[lightgray]Điều này có thể do tập tin bản lưu không được xuất đúng cách.\n[lightgray]Khi chia sẻ bản lưu, chỉ nên xuất thông qua giao diện trong trò chơi. Không nên sao chép tập tin lưu trực tiếp.\n[lightgray]Nếu thực sự cần chuyển tập tin, chắc rằng bạn cũng sao chép thư mục [accent]assetCache[].
|
||||
save.import = Nhập bản lưu
|
||||
save.newslot = Tên bản lưu:
|
||||
save.rename = Đổi tên
|
||||
@@ -516,78 +516,74 @@ editor.filters.planetselect = Chọn Hành Tinh
|
||||
editor.shiftx = Dịch theo X
|
||||
editor.shifty = Dịch theo Y
|
||||
|
||||
asset.emoji = Emojis
|
||||
asset.patch = Patch
|
||||
asset.content = Content
|
||||
asset.bundle = Translation Bundle
|
||||
asset.image = Image
|
||||
asset.sound = Sound
|
||||
asset.music = Music
|
||||
asset.patch = Bản Vá
|
||||
asset.content = Nội Dung
|
||||
asset.bundle = Gói Ngôn Ngữ Dịch
|
||||
asset.image = Hình Ảnh
|
||||
asset.sound = Âm Thanh
|
||||
asset.music = Âm Nhạc
|
||||
|
||||
content.unit = Unit
|
||||
content.item = Item
|
||||
content.liquid = Liquid
|
||||
content.block = Block
|
||||
content.planet = Planet
|
||||
content.weather = Weather
|
||||
content.status = Status Effect
|
||||
content.unit = Đơn Vị
|
||||
content.item = Vật Phẩm
|
||||
content.liquid = Chất Lỏng
|
||||
content.block = Khối
|
||||
content.planet = Hành Tinh
|
||||
content.weather = Thời Tiết
|
||||
content.status = Hiệu Ứng Trạng Thái
|
||||
|
||||
patch.set = Patchset: {0}
|
||||
patch.none = [lightgray]Không có bản vá nào được nạp.
|
||||
patch.set = Bộ vá: {0}
|
||||
patch.none = [lightgray]Không tìm thấy bộ vá.
|
||||
patch.errors = Lỗi Bộ Vá
|
||||
patch.importerror = Nhập bộ vá thất bại
|
||||
patch.delete.confirm = Bạn có chắc chắn muốn xóa bộ vá này không?
|
||||
patch.path = Path:
|
||||
patch.path = Đường Dẫn:
|
||||
patch.fields = {0} trường
|
||||
|
||||
bundle.lines = {0} lines
|
||||
bundle.lines = {0} dòng
|
||||
|
||||
images = Images
|
||||
asset.title = Data Patches & Assets
|
||||
asset.guide = Usage Guide
|
||||
asset.bundle.exists = A bundle with path '{0}' already exists.
|
||||
asset.importzip = Import Asset Zip
|
||||
asset.exportzip = Export Asset Zip
|
||||
asset.image.importzip = Import Zip
|
||||
asset.image.exportzip = Export Zip
|
||||
asset.clearall = Clear All
|
||||
asset.clearall.confirm = Are you sure that you want to clear [red]all[] assets from this map?\nThis includes images, audio, content, etc.
|
||||
asset.imports = Import Results
|
||||
asset.imported = [accent]{0} assets imported.
|
||||
asset.import.none = No valid asset files found in zip archive.
|
||||
asset.content.errors = Content Errors
|
||||
asset.content.add = Add Content
|
||||
asset.content.type = Type:
|
||||
asset.content.exists = [red]Content with that name already exists!
|
||||
asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
asset.images = Data Patch Images
|
||||
asset.image.imports = Import Results
|
||||
asset.image.imported = [accent]{0} images imported.
|
||||
asset.image.none = No valid PNG files found in zip archive.
|
||||
asset.image.error = [red]The following errors were encountered:[]
|
||||
asset.image.clearall.confirm = Are you certain that you wish to clear all images?
|
||||
asset.image.info = Image Info
|
||||
asset.image.toolarge = Image ([lightgray]{0}x{1}[]) is too large. Maximum size is {2}x{3}.
|
||||
asset.image.exists = An image with that path/name already exists:\n[lightgray]{0}
|
||||
asset.image.delete.confirm = Are you certain that you wish to delete this image?
|
||||
asset.image.name = [accent]File Name: [lightgray]{0}
|
||||
asset.image.region.name = [accent]Region Name: [lightgray]{0}
|
||||
asset.image.path = [accent]Path: [lightgray]{0}
|
||||
asset.image.env = [accent]Uses Environment Atlas: [lightgray]{0}
|
||||
asset.image.size = [accent]Size: [lightgray]{0}x{1}
|
||||
asset.image.filesize = [accent]File Size: [lightgray]{0}
|
||||
asset.image.packfailed = [red]⚠ Failed to pack sprite![]
|
||||
asset.image.packfailed.env = This is likely caused by a lack of space in the environment atlas.\nNote that environment sprites are limited to a 512x512 total area.
|
||||
|
||||
asset.emoji.delete = Delete Selected ({0})
|
||||
asset.emoji.notfound = Image with specified name not found.
|
||||
asset.emoji.exists = An emoji with that name already exists.
|
||||
images = Hình Ảnh
|
||||
asset.title = Bản Vá Dữ Liệu & Tài Sản
|
||||
asset.guide = Hướng Dẫn Sử Dụng
|
||||
asset.bundle.exists = Một gói ngôn ngữ với đường dẫn '{0}' đã có rồi.
|
||||
asset.importzip = Nhập Gói Zip Tài Sản
|
||||
asset.exportzip = Xuất Gói Zip Tài Sản
|
||||
asset.image.importzip = Nhập Gói Zip Hình Ảnh
|
||||
asset.image.exportzip = Xuất Gói Zip Hình Ảnh
|
||||
asset.clearall = Xóa Tất Cả
|
||||
asset.clearall.confirm = Bạn có chắc rằng bạn muốn xóa [red]tất cả[] tài sản khỏi bản đồ này?\nBao gồm cả hình ảnh, âm thanh, nội dung, v.v...
|
||||
asset.imports = Kết Quả Nhập
|
||||
asset.imported = [accent]{0} tài sản đã nhập.
|
||||
asset.import.none = Không tìn thấy tập tin tài sản hợp lệ trong lưu trữ zip.
|
||||
asset.content.errors = Lỗi Nội Dung
|
||||
asset.content.add = Thêm Nội Dung
|
||||
asset.content.type = Kiểu:
|
||||
asset.content.exists = [red]Nội dung với tên đó đã có rồi!
|
||||
asset.content.badname = [red]Tên không hợp lệ! Hầu hết các biểu tượng không được phép.
|
||||
asset.content.import.file = Nhập Tệp
|
||||
asset.content.import.clipboard = Nhập Từ Bộ Nhớ Tạm
|
||||
asset.exists = Một tài sản có kiểu đó với đường dẫn/tên giống nhau đã có rồi:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = Tài sản này không thể định vị được.\nĐiều này có thể do nhập sai dữ liệu, hoặc một bản lưu đã xuất không hợp lệ.
|
||||
asset.audio.invalid = Không thể nạp âm thanh.\nChắc rằng đó là tập tin OGG hoặc MP3 hợp lệ.
|
||||
asset.delete.confirm = Bạn có chắc chắn muốn xóa tài sản này không?
|
||||
asset.images = Hình Ảnh Bản Vá Dữ Liệu
|
||||
asset.image.imports = Kết Quả Nhập
|
||||
asset.image.imported = [accent]{0} hình ảnh đã nhập.
|
||||
asset.image.none = Không tìn thấy tập tin PNG hợp lệ trong lưu trữ zip.
|
||||
asset.image.error = [red]Đã gặp phải những lỗi sau:[]
|
||||
asset.image.clearall.confirm = Bạn có chắc chắn muốn xóa tất cả hình ảnh không?
|
||||
asset.image.info = Thông Tin Hình Ảnh
|
||||
asset.image.toolarge = Hình ảnh ([lightgray]{0}x{1}[]) quá lớn. Kích thước tối đa là {2}x{3}.
|
||||
asset.image.exists = Một hình ảnh với đường dẫn/tên đã có rồi:\n[lightgray]{0}
|
||||
asset.image.delete.confirm = Bạn có chắc chắn muốn xóa hình ảnh này không?
|
||||
asset.image.name = [accent]Tên Tập Tin: [lightgray]{0}
|
||||
asset.image.region.name = [accent]Tên Vùng: [lightgray]{0}
|
||||
asset.image.path = [accent]Đường Dẫn: [lightgray]{0}
|
||||
asset.image.env = [accent]Dùng Bản Khung Môi Trường: [lightgray]{0}
|
||||
asset.image.size = [accent]Kích Thước: [lightgray]{0}x{1}
|
||||
asset.image.filesize = [accent]Kích Thước Tập Tin: [lightgray]{0}
|
||||
asset.image.packfailed = [red]⚠ Đóng gói bản đồ ảnh thất bại![]
|
||||
asset.image.packfailed.env = Điều này thường do là thiếu không gian trong bản khung môi trường.\nLưu ý rằng bản đồ môi trường bị giới hạn diện tích tổng thể 512x512.
|
||||
|
||||
workshop = Workshop
|
||||
waves.title = Đợt
|
||||
@@ -608,8 +604,6 @@ waves.max = đơn vị tối đa
|
||||
waves.guardian = Trùm
|
||||
waves.preview = Xem trước
|
||||
waves.random = Ngẫu nhiên
|
||||
waves.copy = Sao chép vào Bộ nhớ tạm
|
||||
waves.load = Nạp từ Bộ nhớ tạm
|
||||
waves.invalid = Đợt không hợp lệ trong bộ nhớ tạm.
|
||||
waves.copied = Đã sao chép các đợt.
|
||||
waves.none = Không có kẻ địch được xác định.\nLưu ý rằng bố cục mỗi đợt trống sẽ tự động được thay thế bằng bố cục mặc định.
|
||||
@@ -633,7 +627,7 @@ all = Tất cả
|
||||
editor.default = [lightgray]<Mặc định>
|
||||
details = Chi tiết...
|
||||
edit = Chỉnh sửa
|
||||
edit.menu = Edit...
|
||||
edit.menu = Chỉnh sửa...
|
||||
variables = Biến số
|
||||
logic.error.toolong = Mã bộ xử lý quá dài (Giới hạn: {0} byte đã nén, độ dài thực sự: {1} byte)
|
||||
logic.clear.confirm = Bạn có muốn xóa sạch tất cả mã khỏi bộ xử lý này?
|
||||
@@ -999,7 +993,6 @@ sector.mycelialBastion.name = Pháo Đài Sợi Nấm
|
||||
sector.frontier.name = Biên Giới
|
||||
sector.sunkenPier.name = Đê Tàu Chìm
|
||||
sector.littoralShipyard.name = Xưởng Tàu Duyên Hải
|
||||
sector.cruxscape.name = Địa Thế Hiểm Yếu
|
||||
sector.geothermalStronghold.name = Thành Trì Địa Nhiệt
|
||||
|
||||
sector.groundZero.description = Vị trí tối ưu để bắt đầu một lần nữa. Mối đe dọa của kẻ địch thấp. Ít tài nguyên.\n\nThu thập càng nhiều đồng và chì càng tốt.\nTiến lên.
|
||||
@@ -1097,7 +1090,7 @@ settings.resetKey = Đặt lại
|
||||
settings.controls = Điều Khiển
|
||||
settings.game = Trò Chơi
|
||||
settings.sound = Âm Thanh
|
||||
settings.dev = Developer Options
|
||||
settings.dev = Tùy Chọn Nhà Phát Triển
|
||||
settings.graphics = Đồ Họa
|
||||
settings.cleardata = Xóa Dữ Liệu Trò Chơi...
|
||||
settings.clear.confirm = Bạn có chắc chắn muốn xóa dữ liệu này không?\nThực hiện xong không thể hoàn tác!
|
||||
@@ -1147,7 +1140,7 @@ stat.targetsground = Mục tiêu mặt đất
|
||||
stat.crushdamage = Sát thương nghiền nát
|
||||
stat.legsplashdamage = Sát Thương Lan Tỏa Từ Chân
|
||||
stat.itemsmoved = Tốc độ dịch chuyển
|
||||
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
|
||||
stat.itemsmoved.info = Lưu lượng thường không tuyến tính và phụ thuộc vào FPS/TPS.
|
||||
stat.launchtime = Thời gian giữa các lần phóng
|
||||
stat.shootrange = Phạm vi
|
||||
stat.size = Kích thước
|
||||
@@ -1426,10 +1419,10 @@ setting.milliseconds = {0} mili-giây
|
||||
setting.fullscreen.name = Toàn màn hình
|
||||
setting.fps.name = Hiện FPS & Ping
|
||||
setting.console.name = Bật Bảng điều khiển
|
||||
setting.drawhitboxes.name = Display Hitboxes
|
||||
setting.drawhitboxes.name = Hiển Thị Khung Va Chạm
|
||||
setting.showperformance.name = Display Performance Metrics
|
||||
setting.buildingtimestep.name = Fixed Building Timestep
|
||||
setting.buildingtimestep.description = Runs buildings on a fixed timestep with constant delta,\nas opposed to every frame with variable delta.\nIf buildings cannot be updated fast enough, the game will slow down.\nIf you don't know what that means, don't touch this option.
|
||||
setting.buildingtimestep.name = Bước Thời Gian Công Trình Cố Định
|
||||
setting.buildingtimestep.description = Thực hiện công trình trong bước thời gian cố định với hằng số thời gian,\nngược lại mỗi khung hình với biến số thời gian.\nNếu công trình không thể cập nhật đủ nhanh, trò chơi sẽ chậm xuống.\nNếu bạn không biết nó có nghĩa gì, đừng đụng vào tùy chọn này.
|
||||
setting.smoothcamera.name = Khung quay mượt mà
|
||||
setting.detach-camera.name = Máy quay tự do
|
||||
setting.detach-camera.description = Nếu bật, máy quay di chuyển độc lập với đơn vị người chơi.\nCài đặt này có thể gán vào một phím nóng.
|
||||
@@ -1460,7 +1453,7 @@ setting.hidedisplays.name = Ẩn hiển thị logic
|
||||
setting.macnotch.name = Giao diện phù hợp với hiển thị tai thỏ
|
||||
setting.macnotch.description = Cần khởi động lại để áp dụng các thay đổi
|
||||
|
||||
steam.friendsonly = Chỉ bạn bè
|
||||
steam.friendsonly = Chỉ Bạn Bè Trên Steam
|
||||
steam.friendsonly.tooltip = Liệu chỉ bạn bè trên Steam mới có thể tham gia trò chơi của bạn hay không.\nBỏ chọn ô này sẽ làm trò chơi của bạn công khai - mọi người có thể tham gia.
|
||||
setting.maxmagnificationmultiplierpercent.name = Tầm xa tối thiểu của máy quay
|
||||
setting.minmagnificationmultiplierpercent.name = Tầm xa tối đa của máy quay
|
||||
@@ -1632,7 +1625,7 @@ rules.enemyCheat = Tài Nguyên Kẻ Địch Vô Hạn
|
||||
rules.blockhealthmultiplier = Hệ Số Độ Bền Khối
|
||||
rules.blockdamagemultiplier = Hệ Số Sát Thương Của Khối
|
||||
rules.unitfactoryactivation = Trễ Kích Hoạt Nhà Máy Chế Tạo Đơn Vị
|
||||
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
|
||||
rules.unitfactoryactivation.objective = Kích Hoạt Nhà Máy Đơn Vị: {0}
|
||||
rules.unitbuildspeedmultiplier = Hệ Số Tốc Độ Sản Xuất Đơn Vị
|
||||
rules.unitcostmultiplier = Hệ Số Chi Phí Sản Xuất Đơn Vị
|
||||
rules.unithealthmultiplier = Hệ Số Độ Bền Của Đơn Vị
|
||||
@@ -1674,7 +1667,7 @@ rules.invasions = Kẻ Địch Xâm Lược Phân Khu
|
||||
rules.legacylaunchpads = Cơ chế bệ phóng di sản
|
||||
rules.legacylaunchpads.info = Cho phép dùng bệ phóng mà không cần bệ đáp, như trong bản 7.0.
|
||||
landingpad.legacy.disabled = [scarlet]\ue815 Đã tắt[lightgray] (Bệ phóng di sản được bật)
|
||||
rules.hidespawns = Hide Enemy Spawns
|
||||
rules.hidespawns = Ẩn Khu Kẻ Địch Xuất Hiện
|
||||
rules.randomwaveai = Đợt Tấn Công AI Không Đoán Trước
|
||||
rules.pauseDisabled = Tắt Tạm Dừng
|
||||
rules.fire = Lửa
|
||||
@@ -2319,7 +2312,7 @@ ff.arc = Bệ súng :arc: [accent]Arc[] cần có năng lượng để hoạt đ
|
||||
fungalpass.tutorial1 = Dùng [accent]các đơn vị[] để phòng thủ công trình và tấn công kẻ địch.\nNghiên cứu và đặt một :ground-factory: [accent]nhà máy lục quân[].
|
||||
fungalpass.tutorial2 = Chọn đơn vị :dagger: [accent]Dagger[] trong nhà máy.\nSản xuất 3 đơn vị.
|
||||
|
||||
frontier.tutorial1 = :additive-reconstructor: [accent]Máy tái thiết cấp cộng[]\nnâng cấp đơn vị bậc 1 thành bậc 2\ndùng :silicon: silicon và :graphite: than chì.\n\n[accent]Nghiên cứu và và tái thiết\nmột []:dagger:[accent] dagger thành một []:mace:[accent] mace.
|
||||
frontier.tutorial1 = :additive-reconstructor: [accent]Máy tái thiết cấp cộng[]\nnâng cấp đơn vị bậc 1 thành bậc 2\ndùng :silicon: silicon và :graphite: than chì.\n\n[accent]Tái thiết\nmột []:dagger:[accent] dagger thành một []:mace:[accent] mace.
|
||||
frontier.tutorial2 = Các đợt được gửi [accent]vô hạn[] đến khi tất cả lõi kẻ địch [unlaunched]bị tiêu diệt.
|
||||
frontier.tutorial3 = [accent]Tấn công căn cứ kẻ địch nhanh chóng để ngăn việc các đợt lên cao[].
|
||||
|
||||
@@ -2473,7 +2466,7 @@ block.force-projector.description = Tạo ra một trường lực lục giác x
|
||||
block.shock-mine.description = Giải phóng tia điện khi tiếp xúc với đơn vị đối phương.
|
||||
block.conveyor.description = Vận chuyển vật phẩm về phía trước.
|
||||
block.titanium-conveyor.description = Vận chuyển vật phẩm về phía trước. Nhanh hơn băng chuyền tiêu chuẩn.
|
||||
block.plastanium-conveyor.description = Vận chuyển vật phẩm về phía trước theo lô. Nhận các vật phẩm ở phía sau và dỡ chúng theo ba hướng ở phía trước. Yêu cầu nhiều điểm tải và dỡ hàng để có hiệu quả cao nhất.
|
||||
block.plastanium-conveyor.description = Vận chuyển vật phẩm về phía trước theo lô. Nhận các vật phẩm ở phía sau và dỡ chúng theo ba hướng ở phía trước. Yêu cầu nhiều điểm tải và dỡ hàng để có lưu lượng cao nhất.
|
||||
block.junction.description = Hoạt động như một cầu nối cho hai băng chuyền băng qua nhau.
|
||||
block.bridge-conveyor.description = Vận chuyển vật phẩm qua nhiều loại địa hình hoặc công trình.
|
||||
block.phase-conveyor.description = Vận chuyển tức thời vật phẩm qua địa hình hoặc công trình. Phạm vi dài hơn cầu nối, nhưng cần năng lượng.
|
||||
@@ -2779,7 +2772,7 @@ lst.setprop = Thiết đặt một thuộc tính của đơn vị hoặc công t
|
||||
lst.effect = Tạo một phần hiệu ứng nhỏ.
|
||||
lst.sync = Đồng bộ biến số qua mạng.\nChỉ gọi tối đa 20 lần mỗi giây cho mỗi biến.
|
||||
lst.playsound = Phát một âm thanh.\nÂm lượng và hướng xoay có thể là một giá trị toàn cục, hoặc được tính toán dựa vào vị trí.
|
||||
lst.playmusic = Plays a music track by name, e.g. [accent]"game1"[].\nIf [accent]interrupt[] is true, the previously playing music will be stopped.\nPlaying with null music and interrupt set to true will stop the current track.\nNote that music from data patches must be prefixed with [accent]dp-[].
|
||||
lst.playmusic = Phát một bản nhạc theo tên, vd: [accent]"game1"[].\nNếu [accent]interrupt[] là [accent]true[], nhạc đang phát trước đó sẽ bị dừng lại.\nPhát nhạc tên [accent]null[] và [accent]interrupt[] là [accent]true[] sẽ dừng bản phát hiện tại.\nLưu ý rằng nhạc từ bản vá dữ liệu phải bắt đầu với [accent]dp-[].
|
||||
lst.makemarker = Tạo mới điểm đánh dấu logic trên thế giới.\nMột định danh cho điểm đánh dấu này phải được cung cấp.\nĐiểm đánh dấu hiện tại bị giới hạn 20,000 trên mỗi thế giới.
|
||||
lst.setmarker = Thiết đặt một thuộc tính cho một điểm đánh dấu.\nĐịnh danh phải giống như định danh ở chỉ lệnh Tạo Điểm đánh dấu (Make Marker).\nGiá trị [accent]null[] sẽ bị phớt lờ.
|
||||
lst.localeprint = Thêm một giá trị thuộc tính ngôn ngữ của bản đồ vào bộ đệm văn bản.\nĐể thiết đặt gói ngôn ngữ trong trình chỉnh sửa bản đồ, xem qua [accent]Thông tin bản đồ > Gói ngôn ngữ[].\nNếu máy khách là một thiết bị di động, sẽ cố in thuộc tính kết thúc bằng ".mobile" trước tiên.
|
||||
|
||||
@@ -19,7 +19,7 @@ clipboardcopy = 这个服务器想要将文本复制到你的剪贴板。你确
|
||||
linkfail = 无法打开链接!\n链接已复制到你的剪贴板。
|
||||
screenshot = 截图已保存到 {0}
|
||||
screenshot.invalid = 地图太大了,可能没有足够的内存进行截图。
|
||||
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
|
||||
screenshot.error = 未能截图。你的设备可能不支持这么大的截图。
|
||||
gameover = 游戏结束
|
||||
gameover.disconnect = 断开连接
|
||||
gameover.pvp = [accent]{0}[] 队获胜!
|
||||
@@ -179,7 +179,7 @@ mod.incompletedependencies.details = 此模组无法加载,因为缺少或无
|
||||
mod.requiresversion = 需要游戏版本:[red]{0}
|
||||
|
||||
mod.errors = 加载内容时发生错误。
|
||||
mod.errors.map = [scarlet]Errors have occurred loading map content. All custom content has been disabled.[]\nThis map will likely not function correctly.
|
||||
mod.errors.map = [scarlet]加载地图内容时发生错误。自定义内容已经全部禁用。[]\n地图可能发生异常。
|
||||
mod.noerrorplay = [red]你的模组发生了错误。[] 请禁用受影响的模组或修复错误后再进行游戏。
|
||||
mod.enable = 启用
|
||||
mod.requiresrestart = 游戏将关闭以应用模组更改。
|
||||
@@ -331,10 +331,10 @@ cantconnect = 无法加入游戏([accent]{0}[])。
|
||||
connecting = [accent]连接中…
|
||||
reconnecting = [accent]重新连接…
|
||||
|
||||
connecting.establish = [accent]Establishing connection...
|
||||
receiving.world = [accent]Receiving world data ({0})...
|
||||
receiving.assets = [accent]Receiving assets ({0})...
|
||||
receiving.assets.fail = Error occurred while receiving assets.
|
||||
connecting.establish = [accent]建立连接中...
|
||||
receiving.world = [accent]接收世界数据中 ({0})...
|
||||
receiving.assets = [accent]接收资源中 ({0})...
|
||||
receiving.assets.fail = 接收资源时发生错误。
|
||||
|
||||
server.port = 端口:
|
||||
server.invalidport = 端口号无效!
|
||||
@@ -352,10 +352,10 @@ save.export = 导出存档
|
||||
save.import.invalid = [accent]此存档无效!
|
||||
save.import.fail = [scarlet]导入存档失败:[accent]{0}
|
||||
save.export.fail = [scarlet]导出存档失败:[accent]{0}
|
||||
save.export.needsload = [scarlet]⚠ This save contains embedded assets.[]\nLoad into this save before exporting it.
|
||||
save.assets.missing = Missing Assets
|
||||
save.assets.missing.list = Asset List...
|
||||
save.assets.missing.info = [scarlet]⚠ This save contains missing assets![]\n\n[lightgray]This is likely because the save file was not properly exported.\n[lightgray]When sharing saves, only export through the in-game UI. Do not copy save files directly.\n[lightgray]If transferring files is necessary, make sure the [accent]assetCache[] folder is copied as well.
|
||||
save.export.needsload = [scarlet]⚠ 此地图内嵌有资源文件。[]\n在导出地图前先加载它们。
|
||||
save.assets.missing = 缺失资源
|
||||
save.assets.missing.list = 资源列表...
|
||||
save.assets.missing.info = [scarlet]⚠ 这个地图缺失资源![]\n\n[lightgray]这可能是导出不当导致的。\n[lightgray]分享存档需要通过游戏内界面,不应直接复制文件。\n[lightgray]如果有必要传输文件,确保 [accent]assetCache[] 文件夹也被复制。
|
||||
save.import = 导入存档
|
||||
save.newslot = 存档名称:
|
||||
save.rename = 重命名
|
||||
@@ -516,78 +516,74 @@ editor.filters.planetselect = 选择星球
|
||||
editor.shiftx = X 轴平移
|
||||
editor.shifty = Y 轴平移
|
||||
|
||||
asset.emoji = Emojis
|
||||
asset.patch = Patch
|
||||
asset.content = Content
|
||||
asset.bundle = Translation Bundle
|
||||
asset.image = Image
|
||||
asset.sound = Sound
|
||||
asset.music = Music
|
||||
asset.patch = 补丁
|
||||
asset.content = 内容
|
||||
asset.bundle = 语言包
|
||||
asset.image = 图像
|
||||
asset.sound = 音效
|
||||
asset.music = 音乐
|
||||
|
||||
content.unit = Unit
|
||||
content.item = Item
|
||||
content.liquid = Liquid
|
||||
content.block = Block
|
||||
content.planet = Planet
|
||||
content.weather = Weather
|
||||
content.status = Status Effect
|
||||
content.unit = 单位
|
||||
content.item = 物品
|
||||
content.liquid = 流体
|
||||
content.block = 方块
|
||||
content.planet = 行星
|
||||
content.weather = 天气
|
||||
content.status = 状态效果
|
||||
|
||||
patch.set = Patchset: {0}
|
||||
patch.set = 补丁集:{0}
|
||||
patch.none = [lightgray]未加载补丁集。
|
||||
patch.errors = 补丁集出错
|
||||
patch.importerror = 导入补丁集失败
|
||||
patch.delete.confirm = 您确定要删除此补丁集吗?
|
||||
patch.path = Path:
|
||||
patch.path = 路径:
|
||||
patch.fields = {0} 处变动
|
||||
|
||||
bundle.lines = {0} lines
|
||||
bundle.lines = {0} 行
|
||||
|
||||
images = Images
|
||||
asset.title = Data Patches & Assets
|
||||
asset.guide = Usage Guide
|
||||
asset.bundle.exists = A bundle with path '{0}' already exists.
|
||||
asset.importzip = Import Asset Zip
|
||||
asset.exportzip = Export Asset Zip
|
||||
asset.image.importzip = Import Zip
|
||||
asset.image.exportzip = Export Zip
|
||||
asset.clearall = Clear All
|
||||
asset.clearall.confirm = Are you sure that you want to clear [red]all[] assets from this map?\nThis includes images, audio, content, etc.
|
||||
asset.imports = Import Results
|
||||
asset.imported = [accent]{0} assets imported.
|
||||
asset.import.none = No valid asset files found in zip archive.
|
||||
asset.content.errors = Content Errors
|
||||
asset.content.add = Add Content
|
||||
asset.content.type = Type:
|
||||
asset.content.exists = [red]Content with that name already exists!
|
||||
asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
asset.images = Data Patch Images
|
||||
asset.image.imports = Import Results
|
||||
asset.image.imported = [accent]{0} images imported.
|
||||
asset.image.none = No valid PNG files found in zip archive.
|
||||
asset.image.error = [red]The following errors were encountered:[]
|
||||
asset.image.clearall.confirm = Are you certain that you wish to clear all images?
|
||||
asset.image.info = Image Info
|
||||
asset.image.toolarge = Image ([lightgray]{0}x{1}[]) is too large. Maximum size is {2}x{3}.
|
||||
asset.image.exists = An image with that path/name already exists:\n[lightgray]{0}
|
||||
asset.image.delete.confirm = Are you certain that you wish to delete this image?
|
||||
asset.image.name = [accent]File Name: [lightgray]{0}
|
||||
asset.image.region.name = [accent]Region Name: [lightgray]{0}
|
||||
asset.image.path = [accent]Path: [lightgray]{0}
|
||||
asset.image.env = [accent]Uses Environment Atlas: [lightgray]{0}
|
||||
asset.image.size = [accent]Size: [lightgray]{0}x{1}
|
||||
asset.image.filesize = [accent]File Size: [lightgray]{0}
|
||||
asset.image.packfailed = [red]⚠ Failed to pack sprite![]
|
||||
asset.image.packfailed.env = This is likely caused by a lack of space in the environment atlas.\nNote that environment sprites are limited to a 512x512 total area.
|
||||
|
||||
asset.emoji.delete = Delete Selected ({0})
|
||||
asset.emoji.notfound = Image with specified name not found.
|
||||
asset.emoji.exists = An emoji with that name already exists.
|
||||
images = 图像
|
||||
asset.title = 补丁与资源
|
||||
asset.guide = 用法指南
|
||||
asset.bundle.exists = 已有路径为'{0}'的文件存在。
|
||||
asset.importzip = 导入资源压缩包
|
||||
asset.exportzip = 导出资源压缩包
|
||||
asset.image.importzip = 导入压缩包
|
||||
asset.image.exportzip = 导出压缩包
|
||||
asset.clearall = 全部清除
|
||||
asset.clearall.confirm = 你确定要清除此地图[red]所有[]的资源文件吗?\n这包括图像,音频和内容等。
|
||||
asset.imports = 导入结果
|
||||
asset.imported = [accent]导入 {0} 个资源
|
||||
asset.import.none = 在压缩包归档中未找到有效资源文件。
|
||||
asset.content.errors = 内容错误
|
||||
asset.content.add = 添加内容
|
||||
asset.content.type = 类型:
|
||||
asset.content.exists = [red]已有同名内容!
|
||||
asset.content.badname = [red]无效名称!大部分保留字都无法使用。
|
||||
asset.content.import.file = 导入文件
|
||||
asset.content.import.clipboard = 从剪贴板导入
|
||||
asset.exists = 已有此类资源文件:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = 无法找到此资源文件。\n这可能是导入或导出不当引起的。
|
||||
asset.audio.invalid = 无法加载音频文件。\n确保其为有效的 OGG 或 MP3 文件。
|
||||
asset.delete.confirm = 你确定要删除此资源吗?
|
||||
asset.images = 数据补丁图像
|
||||
asset.image.imports = 导入结果
|
||||
asset.image.imported = [accent]导入了 {0} 张图像
|
||||
asset.image.none = 在压缩包归档中没有有效的 PNG 文件。
|
||||
asset.image.error = [red]遇到了以下错误:[]
|
||||
asset.image.clearall.confirm = 你确定要删除所有图像吗?
|
||||
asset.image.info = 图像信息
|
||||
asset.image.toolarge = 图像 ([lightgray]{0}x{1}[]) 过大,最大尺寸为 {2}x{3}.
|
||||
asset.image.exists = 已有相同图像:\n[lightgray]{0}
|
||||
asset.image.delete.confirm = 你确定要删除此图像吗?
|
||||
asset.image.name = [accent]文件名:[lightgray]{0}
|
||||
asset.image.region.name = [accent]贴图名:[lightgray]{0}
|
||||
asset.image.path = [accent]路径: [lightgray]{0}
|
||||
asset.image.env = [accent]使用环境图集: [lightgray]{0}
|
||||
asset.image.size = [accent]尺寸: [lightgray]{0}x{1}
|
||||
asset.image.filesize = [accent]文件大小: [lightgray]{0}
|
||||
asset.image.packfailed = [red]⚠无法打包图像:[]
|
||||
asset.image.packfailed.env = 这可能是环境图集空间不足导致的。\n注意,环境贴图最大为 512x512。
|
||||
|
||||
workshop = 创意工坊
|
||||
waves.title = 波次
|
||||
@@ -608,8 +604,6 @@ waves.max = 最大单位数
|
||||
waves.guardian = Boss
|
||||
waves.preview = 预览
|
||||
waves.random = 随机
|
||||
waves.copy = 复制到剪贴板
|
||||
waves.load = 从剪贴板读取
|
||||
waves.invalid = 剪贴板中的波次信息无效。
|
||||
waves.copied = 波次信息已复制。
|
||||
waves.none = 没有定义敌人波次。\n注意,这将自动替换为默认的波次列表。
|
||||
@@ -999,7 +993,6 @@ sector.mycelialBastion.name = 菌丝堡垒
|
||||
sector.frontier.name = 边陲哨站
|
||||
sector.sunkenPier.name = 沉没码头
|
||||
sector.littoralShipyard.name = 海滨船厂
|
||||
sector.cruxscape.name = 赤色总部
|
||||
sector.geothermalStronghold.name = 熔石要塞
|
||||
|
||||
sector.groundZero.description = 这是最佳起点。敌人威胁较低,资源稀少。\n尽量收集铅和铜。\n然后继续前进。
|
||||
@@ -1097,7 +1090,7 @@ settings.resetKey = 恢复默认
|
||||
settings.controls = 控制
|
||||
settings.game = 游戏
|
||||
settings.sound = 声音
|
||||
settings.dev = Developer Options
|
||||
settings.dev = 开发者选项
|
||||
settings.graphics = 图形
|
||||
settings.cleardata = 清除游戏数据
|
||||
settings.clear.confirm = 确认要清除该数据吗?\n此操作无法撤销!
|
||||
@@ -1147,7 +1140,7 @@ stat.targetsground = 攻击地面单位
|
||||
stat.crushdamage = 碾压伤害
|
||||
stat.legsplashdamage = 践踏伤害
|
||||
stat.itemsmoved = 移动速度
|
||||
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
|
||||
stat.itemsmoved.info = 吞吐量与时间并不是线性关系,易受FPS/TPS影响。
|
||||
stat.launchtime = 发射间隔
|
||||
stat.shootrange = 范围
|
||||
stat.size = 尺寸
|
||||
@@ -1426,10 +1419,10 @@ setting.milliseconds = {0} 毫秒
|
||||
setting.fullscreen.name = 全屏
|
||||
setting.fps.name = 显示帧数和网络延迟
|
||||
setting.console.name = 启用控制台
|
||||
setting.drawhitboxes.name = Display Hitboxes
|
||||
setting.showperformance.name = Display Performance Metrics
|
||||
setting.buildingtimestep.name = Fixed Building Timestep
|
||||
setting.buildingtimestep.description = Runs buildings on a fixed timestep with constant delta,\nas opposed to every frame with variable delta.\nIf buildings cannot be updated fast enough, the game will slow down.\nIf you don't know what that means, don't touch this option.
|
||||
setting.drawhitboxes.name = 显示碰撞箱
|
||||
setting.showperformance.name = 显示性能表现
|
||||
setting.buildingtimestep.name = 固定建筑时间步进
|
||||
setting.buildingtimestep.description = 以固定的时间间隔更新建筑实体,\n与原有的每帧时间间隔可变相反。\n如果建筑更新过慢,则会拖慢游戏。\n如果你不知道这意味着什么,不要改变这个选项。
|
||||
setting.smoothcamera.name = 平滑镜头
|
||||
setting.detach-camera.name = 自由视角
|
||||
setting.detach-camera.description = 启用后,视角可独立于玩家单位自由移动。\n此设置可绑定快捷键。
|
||||
@@ -1572,9 +1565,9 @@ keybind.chat_mode.name = 切换聊天模式
|
||||
keybind.drop_unit.name = 释放单位
|
||||
keybind.zoom_minimap.name = 小地图缩放
|
||||
keybind.detach_camera.name = 切换自由视角
|
||||
keybind.teleport_cursor.name = Teleport To Cursor (Sandbox)
|
||||
keybind.teleport_cursor.name = 传送到指针位置(沙盒模式)
|
||||
keybind.debug_hitboxes.name = 切换调试碰撞箱
|
||||
keybind.performance_metrics.name = Toggle Performance Metrics
|
||||
keybind.performance_metrics.name = 切换性能表现显示
|
||||
mode.help.title = 游戏模式说明
|
||||
mode.survival.name = 生存
|
||||
mode.survival.description = 通常的游戏模式,资源有限,自动生成敌人波次。\n[gray]需要地图中有敌方出生点和己方核心。
|
||||
@@ -1632,7 +1625,7 @@ rules.enemyCheat = 敌人无限资源
|
||||
rules.blockhealthmultiplier = 建筑生命倍率
|
||||
rules.blockdamagemultiplier = 建筑伤害倍率
|
||||
rules.unitfactoryactivation = 单位工厂延迟激活
|
||||
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
|
||||
rules.unitfactoryactivation.objective = 单位工厂激活时间: {0}
|
||||
rules.unitbuildspeedmultiplier = 单位生产速度倍率
|
||||
rules.unitcostmultiplier = 单位生产花费倍率
|
||||
rules.unithealthmultiplier = 单位生命倍率
|
||||
@@ -1674,7 +1667,7 @@ rules.invasions = 敌方入侵区块
|
||||
rules.legacylaunchpads = 旧版发射台机制
|
||||
rules.legacylaunchpads.info = 允许使用没有接收台的发射台(与 7.0 版本一致)。
|
||||
landingpad.legacy.disabled = [scarlet]\ue815 禁用[lightgray] (旧版发射台已启用)
|
||||
rules.hidespawns = Hide Enemy Spawns
|
||||
rules.hidespawns = 隐藏敌人出生点
|
||||
rules.randomwaveai = 不可预测的 AI 波次
|
||||
rules.pauseDisabled = 禁用暂停
|
||||
rules.fire = 允许火焰产生并蔓延
|
||||
@@ -2307,10 +2300,10 @@ gz.zone3 = 波次即将开始。\n做好准备。
|
||||
gz.finish = 建造更多炮塔,挖掘更多资源,\n击退所有波次以[accent]占领区块[]。
|
||||
|
||||
ff.coal = 使用 :mechanical-drill: [accent]机械钻头[]来开采:ore-coal: [accent]煤炭[]、
|
||||
ff.graphitepress = :tree: 研究并放置 :graphite-press: [accent]石墨压缩机[]、
|
||||
ff.graphitepress = :tree: 研究并放置 :graphite-press: [accent]石墨压缩机[]。
|
||||
ff.craft = 将 :coal: 煤炭放入 :graphite-press: [accent]石墨压缩机[]。\n它将会向邻近传送带输出 :graphite: 石墨。\n将 :graphite: 石墨从 :graphite-press: [accent]石墨压缩机[]中移至核心。
|
||||
ff.generator = :coal: 煤炭也可以作为 :combustion-generator: [accent]火力发电机[]的燃料。\n研究并放置一个 :combustion-generator: [accent]火力发电机[]。
|
||||
ff.coalpower = 将 :coal: 煤炭放至发电机中产出[accent]:power: 电力[]。
|
||||
ff.generator = :coal: 煤炭也可以充当 :combustion-generator: [accent]火力发电机[]的燃料。\n研究并放置一个 :combustion-generator: [accent]火力发电机[]。
|
||||
ff.coalpower = 将 :coal: 煤炭放入发电机中产出[accent]:power: 电力[]。
|
||||
ff.coalpower.objective = :combustion-generator: 产出电力
|
||||
ff.node = :power-node: [accent]电力节点[]可以将电力传输到附近的方块。\n研究并在发电机旁放置一个 :power-node: [accent]电力节点[]。
|
||||
ff.battery = :battery: [accent]电池[]可以存储电力。\n研究并在电力节点旁放置一个 :battery: [accent]电池[]。
|
||||
@@ -2339,7 +2332,7 @@ atolls.carry2 = 1:命令巨像单位移动到地面单位[accent]上方[]。
|
||||
atolls.carry3 = 2:选择 \ue87b [accent]拾取单位[]命令,来让巨像拾起地面单位。
|
||||
atolls.carry4 = 3:指挥并移动[accent]携有单位[]的巨像。
|
||||
atolls.carry5 = 4:选择 \ue879 [accent]卸载载荷[]命令,来让巨像放下它携带的单位。
|
||||
atolls.carry6 = 可以在[accent]回顾这些步骤。
|
||||
atolls.carry6 = 可以再[accent]回顾这些步骤[]。
|
||||
atolls.carry7 = 跟随指示,在敌人基地旁空降单位。
|
||||
atolls.noairunit = 这座基地防守森严,无法用空军单位攻破。
|
||||
atolls.2strategies = 有两种策略可以摧毁这座基地。
|
||||
@@ -2686,7 +2679,7 @@ unit.vela.description = 发射巨大的持续激光束攻击敌人并引起燃
|
||||
unit.corvus.description = 发射巨大的爆发激光束,摧毁敌人并修复己方建筑。可以跨越大多数地形。
|
||||
unit.crawler.description = 冲向敌人并自毁,造成大范围爆炸。
|
||||
unit.atrax.description = 向地面目标发射削弱性的球状矿渣液。可以跨越大多数地形。
|
||||
unit.spiroct.description = 向敌人发射较弱的激光束,并在该过程中自我修复。可以跨越大多数地形。
|
||||
unit.spiroct.description = 向敌人发射弱化性的激光束,并在该过程中自我修复。可以跨越大多数地形。
|
||||
unit.arkyid.description = 向敌人发射大型激光束,并在该过程中自我修复。可以跨越大多数地形。
|
||||
unit.toxopid.description = 向敌人发射大型带电集束炮弹和穿透性激光。可以跨越大多数地形。
|
||||
unit.flare.description = 向敌人发射标准子弹。
|
||||
@@ -2779,7 +2772,7 @@ lst.setprop = 设置单位或建筑物的属性。
|
||||
lst.effect = 创建一个粒子效果。
|
||||
lst.sync = 在网络中同步一个变量。\n最多每秒调用 10 次。
|
||||
lst.playsound = 播放声音。\n音量和声场位置可以是全局值,也可以根据位置计算得出。
|
||||
lst.playmusic = Plays a music track by name, e.g. [accent]"game1"[].\nIf [accent]interrupt[] is true, the previously playing music will be stopped.\nPlaying with null music and interrupt set to true will stop the current track.\nNote that music from data patches must be prefixed with [accent]dp-[].
|
||||
lst.playmusic = 按名称播放音乐,如[accent]"game1"[].\n如果[accent]interrupt[]设置为 true ,先前播放的音乐将会中止\n播放 null 并把 interrupt 设置为 true 可以停止音乐。\n注意,数据补丁中的音乐需加上[accent]dp-[]前缀。
|
||||
lst.makemarker = 在世界中创建一个新的逻辑标记。\n必须提供一个用于标识该标记的 ID。\n目前每个世界限制最多 20000 个标记。
|
||||
lst.setmarker = 为标记设置属性。\n使用的 ID 必须与制作标记指令中的相同。
|
||||
lst.localeprint = 将地图本地化文本属性值添加到文本缓冲区中。\n要在地图编辑器中设置地图本地化包,请检查 [accent]地图信息 > 本地化包[]。\n如果客户端是移动设备,则尝试首先打印以 “.mobile” 结尾的属性。
|
||||
|
||||
@@ -125,7 +125,7 @@ save.quit = 儲存並退出
|
||||
maps = 地圖
|
||||
maps.browse = 瀏覽地圖
|
||||
continue = 繼續
|
||||
maps.none = [lightgray]找不到地圖!
|
||||
maps.none = [lightgray]找不到地圖!
|
||||
invalid = 無效
|
||||
pickcolor = 選擇顏色
|
||||
color = Color
|
||||
@@ -134,7 +134,7 @@ export = Export
|
||||
preparingconfig = 設定準備中
|
||||
preparingcontent = 內容準備中
|
||||
uploadingcontent = 內容上傳中
|
||||
content.createdby = Created by: {0}
|
||||
content.createdby = 由 {0} 製作
|
||||
uploadingpreviewfile = 上傳預覽文件
|
||||
committingchanges = 遞交變更
|
||||
done = 完成
|
||||
@@ -142,8 +142,8 @@ feature.unsupported = 您的裝置不支援此功能。
|
||||
|
||||
mods.initfailed = [red]⚠[] Mindustry 無法啟動。這可能是因模組造成。\n\n為了避免不斷閃退,[red]所有的模組已被停用。[]
|
||||
mods = 模組
|
||||
mods.name = Mod:
|
||||
mods.none = [lightgray]找不到模組!
|
||||
mods.name = 模組:
|
||||
mods.none = [lightgray]找不到模組!
|
||||
mods.guide = 模組指南
|
||||
mods.report = 回報錯誤
|
||||
mods.openfolder = 開啟模組資料夾
|
||||
@@ -156,7 +156,7 @@ mod.enabled = [lightgray]已啟用
|
||||
mod.disabled = [scarlet]已禁用
|
||||
mod.multiplayer.compatible = [gray]與多人模式相容
|
||||
mod.disable = 禁用
|
||||
mod.version = Version:
|
||||
mod.version = 版本:
|
||||
mod.content = 內容:
|
||||
mod.delete.error = 無法刪除模組,檔案可能在使用中。
|
||||
|
||||
@@ -169,7 +169,7 @@ mod.circulardependencies = [red]循環依賴錯誤
|
||||
mod.incompletedependencies = [red]依賴項缺失
|
||||
|
||||
mod.requiresversion.details = 所需最低遊戲版本: [accent]{0}[]\n您的遊戲版本過低。此模組需要更新的遊戲版本(通常是beta/alpha版本)才能運作
|
||||
mod.incompatiblemod.details = This mod is incompatible with the latest version of the game. The author must update it, and add [accent]minGameVersion: 154[] to its [accent]mod.json[] file.
|
||||
mod.incompatiblemod.details = 此模組和遊戲的最新版本不相容。模組作者必須更新模組,並將[accent]minGameVersion: 154[]添加到[accent]mod.json[]檔案當中。
|
||||
mod.blacklisted.details = 這個模組已被手動列入黑名單,因為它在此版本的遊戲中引起崩潰或其他問題。請勿使用。
|
||||
mod.missingdependencies.details = 此模組缺少依賴項:{0}
|
||||
mod.erroredcontent.details = 此模組在加載時引發錯誤。請求模組作者修復它們。
|
||||
@@ -179,7 +179,7 @@ mod.incompletedependencies.details = 由於無效或缺失的依賴項,此模
|
||||
mod.requiresversion = 需要遊戲版本:[red]{0}
|
||||
|
||||
mod.errors = 載入內容時發生錯誤
|
||||
mod.errors.map = [scarlet]Errors have occurred loading map content. All custom content has been disabled.[]\nThis map will likely not function correctly.
|
||||
mod.errors.map = [scarlet]載入地圖資料時發生了錯誤,所有自定義內容已停用。[]\n此地圖可能無法正常運作。
|
||||
mod.noerrorplay = [scarlet]您使用了有問題的模組。[] 遊戲前請先停用相關模組或修正問題。
|
||||
mod.enable = 啟用
|
||||
mod.requiresrestart = 遊戲將立即關閉以套用模組變更。
|
||||
@@ -201,15 +201,15 @@ mod.dependencies.soft = (optional)
|
||||
mod.dependencies.download = 導入
|
||||
mod.dependencies.downloadreq = 導入需求
|
||||
mod.dependencies.downloadall = 全部導入
|
||||
mod.dependencies.status = Import Results
|
||||
mod.dependencies.success = 下載成功:
|
||||
mod.dependencies.failure = 下載失敗:
|
||||
mod.dependencies.imported = 下載模組需要的依賴項?
|
||||
mod.dependencies.status = 載入結果
|
||||
mod.dependencies.success = 下載成功:
|
||||
mod.dependencies.failure = 下載失敗:
|
||||
mod.dependencies.imported = 下載模組需要的依賴項?
|
||||
|
||||
about.button = 關於
|
||||
name = 名稱:
|
||||
noname = 請先選擇一個[accent]玩家名稱[]。
|
||||
search = 搜尋:
|
||||
search = 搜尋:
|
||||
planetmap = 星球地圖
|
||||
launchcore = 發射核心
|
||||
filename = 檔案名稱︰
|
||||
@@ -220,9 +220,9 @@ campaign.select = 選擇戰役出發點
|
||||
campaign.none = [lightgray]選擇初始星球。\n星球隨時都可以切換。
|
||||
campaign.erekir = 更新、更精緻的內容。戰役大部分都是連貫性的。\n\n難度更高,但有高品質的地圖和整體的經驗。
|
||||
campaign.serpulo = 較舊的內容,經典的體驗。更加開放且有更多內容。\n\n有可能會有不平衡的地圖以及戰役機制,較不完美。
|
||||
campaign.difficulty = Difficulty
|
||||
campaign.rework.title = Campaign Changes Notice
|
||||
campaign.rework.serpulo = [accent]⚠ The Serpulo campaign has been reworked.[]\n\nSector positions and difficulty have changed. You may encounter issues relating to leftover campaign saves from the old layout.\n\nFor a cleaner experience, consider resetting your campaign saves in the settings.
|
||||
campaign.difficulty = 難易度
|
||||
campaign.rework.title = 重大更新通知
|
||||
campaign.rework.serpulo = [accent]⚠ 蕈孢星經歷了重大更新,其內容已被完全重製。[]\n\n關卡位置和難易度已被更改,來自舊版本的存檔可能會導致問題。\n\n為達到更順暢的遊戲體驗,建議您在「設定」中重置存檔資料。
|
||||
completed = [accent]完成
|
||||
techtree = 科技樹
|
||||
techtree.select = 選擇科技樹
|
||||
@@ -240,15 +240,15 @@ players.search = 搜尋
|
||||
players.notfound = [gray]沒有找到玩家
|
||||
server.closing = [accent]正在關閉伺服器……
|
||||
server.kicked.kick = 您已被踢出伺服器!
|
||||
server.kicked.whitelist = 您不在這裡的白名單內.
|
||||
server.kicked.whitelist = 您不在這裡的白名單內。
|
||||
server.kicked.serverClose = 伺服器已關閉。
|
||||
server.kicked.vote = 您已被投票踢出伺服器,再見。
|
||||
server.kicked.clientOutdated = 客戶端版本過舊!請更新遊戲!
|
||||
server.kicked.serverOutdated = 伺服器版本過舊!請聯絡伺服器管理員更新伺服器!
|
||||
server.kicked.banned = 您已經在這個伺服器中被封鎖。
|
||||
server.kicked.steamBanned = You have been banned from Steam lobbies for disruptive and shameful behavior.
|
||||
server.kicked.steamBanned = 有鑑於您的不良行為,您已被從Steam大廳封鎖。
|
||||
server.kicked.typeMismatch = 該伺服器與您的版本不相容。
|
||||
server.kicked.playerLimit = 該伺服器已滿。請等待玩家離開。
|
||||
server.kicked.playerLimit = 該伺服器已滿,請等待玩家離開。
|
||||
server.kicked.recentKick = 您最近曾被踢出伺服器。\n請稍後再進行連線。
|
||||
server.kicked.nameInUse = 伺服器中已經\n有人有相同的名稱了。
|
||||
server.kicked.nameEmpty = 您的名稱必須至少包含一個字母或數字。
|
||||
@@ -286,14 +286,14 @@ trace = 追蹤玩家
|
||||
trace.playername = 玩家名稱:[accent]{0}
|
||||
trace.ip = IP:[accent]{0}
|
||||
trace.id = ID:[accent]{0}
|
||||
trace.language = Language: [accent]{0}
|
||||
trace.language = 語言:[accent]{0}
|
||||
trace.mobile = 行動客戶端:[accent]{0}
|
||||
trace.modclient = 自訂客戶端:[accent]{0}
|
||||
trace.times.joined = 加入次數:[accent]{0}
|
||||
trace.times.kicked = 踢除次數:[accent]{0}
|
||||
trace.ips = IP:
|
||||
trace.names = 名字:
|
||||
invalidid = 無效的客戶端 ID!請遞交錯誤回報。
|
||||
trace.ips = IP:
|
||||
trace.names = 名字:
|
||||
invalidid = 無效的客戶端ID!請遞交錯誤回報。
|
||||
|
||||
player.ban = 封鎖
|
||||
player.kick = 踢除
|
||||
@@ -326,19 +326,19 @@ disconnect.error = 連線錯誤。
|
||||
disconnect.closed = 連線關閉。
|
||||
disconnect.timeout = 連線逾時。
|
||||
disconnect.data = 無法載入地圖資料!
|
||||
disconnect.snapshottimeout = Timed out while receiving UDP snapshots.\nThis may be caused by an unstable network or connection.
|
||||
disconnect.snapshottimeout = 接收UDP快照的過程逾時。\n這可能由不穩定的網路連線所導致。
|
||||
cantconnect = 無法加入遊戲 ([accent]{0}[]).
|
||||
connecting = [accent]連線中……
|
||||
reconnecting = [accent]重新連接中……
|
||||
|
||||
connecting.establish = [accent]Establishing connection...
|
||||
receiving.world = [accent]Receiving world data ({0})...
|
||||
receiving.assets = [accent]Receiving assets ({0})...
|
||||
receiving.assets.fail = Error occurred while receiving assets.
|
||||
connecting.establish = [accent]連接中……
|
||||
receiving.world = [accent]接收世界資料 ({0})……
|
||||
receiving.assets = [accent]接收資源 ({0})……
|
||||
receiving.assets.fail = 接收資源過程中發生錯誤。
|
||||
|
||||
server.port = 連接埠:
|
||||
server.invalidport = 無效的連接埠!
|
||||
server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network!
|
||||
server.error.addressinuse = [scarlet]無法在 6567 埠開啟伺服器。[]\n\n請確認您的設備或網路上沒有其他正在運行的 Mindustry 伺服器!
|
||||
server.error = [crimson]建立伺服器時發生錯誤。
|
||||
save.new = 新存檔
|
||||
save.overwrite = 您確定要覆寫存檔嗎?
|
||||
@@ -352,10 +352,10 @@ save.export = 匯出存檔
|
||||
save.import.invalid = [accent]這是個無效的存檔!
|
||||
save.import.fail = [crimson]無法匯入存檔:[accent]{0}
|
||||
save.export.fail = [crimson]無法匯出存檔:[accent]{0}
|
||||
save.export.needsload = [scarlet]⚠ This save contains embedded assets.[]\nLoad into this save before exporting it.
|
||||
save.assets.missing = Missing Assets
|
||||
save.assets.missing.list = Asset List...
|
||||
save.assets.missing.info = [scarlet]⚠ This save contains missing assets![]\n\n[lightgray]This is likely because the save file was not properly exported.\n[lightgray]When sharing saves, only export through the in-game UI. Do not copy save files directly.\n[lightgray]If transferring files is necessary, make sure the [accent]assetCache[] folder is copied as well.
|
||||
save.export.needsload = [scarlet]⚠ 此存檔包含嵌入資源。[]\n在導出此存檔前,請先將其載入。
|
||||
save.assets.missing = 找不到部分資源
|
||||
save.assets.missing.list = 資源清單……
|
||||
save.assets.missing.info = [scarlet]⚠ 找不到此存檔的部分資源![]\n\n[lightgray]這很可能是因為存檔導出過程中發生了問題。\n[lightgray]導出存檔時,請只透過遊戲內的 UI 導出,不要直接複製存檔。\n[lightgray]如果有轉移資料的需求,請確認[accent]assetCache[]資料夾有被複製到。
|
||||
save.import = 匯入存檔
|
||||
save.newslot = 存檔名稱:
|
||||
save.rename = 重新命名
|
||||
@@ -374,13 +374,13 @@ save.wave = 波次:{0}
|
||||
save.mode = 遊戲模式:{0}
|
||||
save.date = 最後存檔時間:{0}
|
||||
save.playtime = 遊玩時間:{0}
|
||||
dontshowagain = Don't show again
|
||||
dontshowagain = 不要再顯示
|
||||
warning = 警告。
|
||||
confirm = 確認
|
||||
delete = 刪除
|
||||
view.workshop = 在工作坊中查看
|
||||
workshop.listing = 編輯工作坊清單
|
||||
hide = Hide
|
||||
hide = 隱藏
|
||||
ok = 確定
|
||||
open = 開啟
|
||||
customize = 自訂
|
||||
@@ -396,17 +396,17 @@ command.enterPayload = 進入負荷方塊
|
||||
command.loadUnits = 拾取單位
|
||||
command.loadBlocks = 拾取方塊
|
||||
command.unloadPayload = 卸下負載
|
||||
command.loopPayload = Loop Unit Transfer
|
||||
command.loopPayload = 使單位傳輸循環
|
||||
stance.stop = 取消指令
|
||||
stance.shoot = 狀態:射擊
|
||||
stance.holdfire = 狀態: 停火
|
||||
stance.pursuetarget = 狀態:追逐目標
|
||||
stance.patrol = 狀態:路徑巡邏
|
||||
stance.holdposition = Stance: Hold Position
|
||||
stance.holdposition = 狀態:停在原地
|
||||
stance.ram = 狀態:衝鋒\n[lightgray]直線移動,不進行尋路。
|
||||
stance.boost = Boost
|
||||
stance.mineauto = Automatic Mining
|
||||
stance.mine = Mine Item: {0}
|
||||
stance.mineauto = 自動挖礦中
|
||||
stance.mine = 獲取資源:{0}
|
||||
openlink = 開啟連結
|
||||
copylink = 複製連結
|
||||
back = 返回
|
||||
@@ -472,9 +472,9 @@ publish.confirm = 您確定要發布嗎?\n\n[lightgray]首先確定您同意 W
|
||||
publish.error = 發佈項目時發生問題:{0}
|
||||
steam.error = Steam 服務初始化失敗。\n錯誤:{0}
|
||||
|
||||
editor.showblocks = Show Blocks
|
||||
editor.showterrain = Show Terrain
|
||||
editor.showfloor = Show Floor
|
||||
editor.showblocks = 顯示方塊
|
||||
editor.showterrain = 顯示地形
|
||||
editor.showfloor = 顯示地板
|
||||
editor.planet = 行星:
|
||||
editor.sector = 地區:
|
||||
editor.seed = 種子:
|
||||
@@ -490,12 +490,12 @@ editor.waves = 波次:
|
||||
editor.rules = 規則:
|
||||
editor.generation = 自動生成:
|
||||
editor.objectives = 目標
|
||||
editor.locales = Locale Bundles
|
||||
editor.locales = 本地封包
|
||||
editor.worldprocessors = World Processors
|
||||
editor.worldprocessors.editname = Edit Name
|
||||
editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below.
|
||||
editor.worldprocessors.editname = 編輯名稱
|
||||
editor.worldprocessors.none = [lightgray]找不到 world processor blocks!\n在地圖編輯器裡新增一個,或者使用下方的 \ue813 新增按鈕。
|
||||
editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this?
|
||||
editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall.
|
||||
editor.worldprocessors.delete.confirm = 確定要刪除這個 world processor 嗎?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall.
|
||||
editor.ingame = 在遊戲中編輯
|
||||
editor.playtest = 測試
|
||||
editor.publish.workshop = 在工作坊上發佈
|
||||
@@ -504,79 +504,79 @@ editor.center = 中心
|
||||
editor.search = 尋找地圖…
|
||||
editor.filters = 篩選地圖
|
||||
editor.filters.mode = 遊戲模式:
|
||||
editor.filters.priorities = Priorities:
|
||||
editor.filters.priorities = 優先級:
|
||||
editor.filters.type = 地圖種類:
|
||||
editor.filters.search = 搜尋的資料夾:
|
||||
editor.filters.author = 作者
|
||||
editor.filters.description = 描述
|
||||
editor.filters.modname = Mod Name
|
||||
editor.filters.prioritizemod = Mod Priority
|
||||
editor.filters.prioritizecustom = Custom Priority
|
||||
editor.filters.planetselect = Planet Selection
|
||||
editor.filters.modname = 模組名稱:
|
||||
editor.filters.prioritizemod = 模組優先級
|
||||
editor.filters.prioritizecustom = 自定義優先級
|
||||
editor.filters.planetselect = 星球選擇
|
||||
editor.shiftx = X位移
|
||||
editor.shifty = Y位移
|
||||
|
||||
asset.emoji = Emojis
|
||||
asset.patch = Patch
|
||||
asset.content = Content
|
||||
asset.bundle = Translation Bundle
|
||||
asset.image = Image
|
||||
asset.sound = Sound
|
||||
asset.music = Music
|
||||
asset.patch = 補丁
|
||||
asset.content = 內容
|
||||
asset.bundle = 翻譯封包
|
||||
asset.image = 圖片
|
||||
asset.sound = 音效
|
||||
asset.music = 音樂
|
||||
|
||||
content.unit = Unit
|
||||
content.item = Item
|
||||
content.liquid = Liquid
|
||||
content.block = Block
|
||||
content.planet = Planet
|
||||
content.weather = Weather
|
||||
content.status = Status Effect
|
||||
content.unit = 單位
|
||||
content.item = 物品
|
||||
content.liquid = 液體
|
||||
content.block = 方塊
|
||||
content.planet = 星球
|
||||
content.weather = 天氣
|
||||
content.status = 狀態效果
|
||||
|
||||
patch.set = Patchset: {0}
|
||||
patch.set = 補丁:{0}
|
||||
patch.none = [lightgray]No patchsets loaded.
|
||||
patch.errors = Patchset Errors
|
||||
patch.errors = Patchset 錯誤
|
||||
patch.importerror = Failed to import patchset
|
||||
patch.delete.confirm = Are you sure you want to delete this patchset?
|
||||
patch.path = Path:
|
||||
patch.path = 路徑:
|
||||
patch.fields = {0} fields
|
||||
|
||||
bundle.lines = {0} lines
|
||||
|
||||
images = Images
|
||||
images = 圖片
|
||||
asset.title = Data Patches & Assets
|
||||
asset.guide = Usage Guide
|
||||
asset.bundle.exists = A bundle with path '{0}' already exists.
|
||||
asset.importzip = Import Asset Zip
|
||||
asset.exportzip = Export Asset Zip
|
||||
asset.image.importzip = Import Zip
|
||||
asset.image.exportzip = Export Zip
|
||||
asset.clearall = Clear All
|
||||
asset.clearall.confirm = Are you sure that you want to clear [red]all[] assets from this map?\nThis includes images, audio, content, etc.
|
||||
asset.imports = Import Results
|
||||
asset.imported = [accent]{0} assets imported.
|
||||
asset.importzip = 導入 Asset Zip
|
||||
asset.exportzip = 導出 Asset Zip
|
||||
asset.image.importzip = 導入 Zip
|
||||
asset.image.exportzip = 導出 Zip
|
||||
asset.clearall = 全部清楚
|
||||
asset.clearall.confirm = 確定要清除此地圖中的[red]所有[]資源嗎?\n這包含圖片、音訊、內容等。
|
||||
asset.imports = 導入 Results
|
||||
asset.imported = [accent]{0} assets 已導入.
|
||||
asset.import.none = No valid asset files found in zip archive.
|
||||
asset.content.errors = Content Errors
|
||||
asset.content.add = Add Content
|
||||
asset.content.type = Type:
|
||||
asset.content.type = 類型:
|
||||
asset.content.exists = [red]Content with that name already exists!
|
||||
asset.content.badname = [red]Invalid name! Most symbols are not allowed.
|
||||
asset.content.import.file = Import File
|
||||
asset.content.import.file = 導入檔案
|
||||
asset.content.import.clipboard = Import From Clipboard
|
||||
asset.exists = An asset of that type with the same path/name already exists:\n[lightgray]{0}
|
||||
asset.exists.audio = A sound/music asset with that name is already loaded:\n[lightgray]{0}
|
||||
asset.broken = This asset file could not be located.\nThis can be caused by improper import of data, or an incorrectly exported save.
|
||||
asset.audio.invalid = Audio file could not be loaded.\nEnsure that it is a valid OGG or MP3 file.
|
||||
asset.delete.confirm = Are you sure you want to delete this asset?
|
||||
asset.images = Data Patch Images
|
||||
asset.image.imports = Import Results
|
||||
asset.image.imports = 導入 Results
|
||||
asset.image.imported = [accent]{0} images imported.
|
||||
asset.image.none = No valid PNG files found in zip archive.
|
||||
asset.image.error = [red]The following errors were encountered:[]
|
||||
asset.image.clearall.confirm = Are you certain that you wish to clear all images?
|
||||
asset.image.info = Image Info
|
||||
asset.image.info = 圖片資訊
|
||||
asset.image.toolarge = Image ([lightgray]{0}x{1}[]) is too large. Maximum size is {2}x{3}.
|
||||
asset.image.exists = An image with that path/name already exists:\n[lightgray]{0}
|
||||
asset.image.delete.confirm = Are you certain that you wish to delete this image?
|
||||
asset.image.name = [accent]File Name: [lightgray]{0}
|
||||
asset.image.name = [accent]檔案名稱:[lightgray]{0}
|
||||
asset.image.region.name = [accent]Region Name: [lightgray]{0}
|
||||
asset.image.path = [accent]Path: [lightgray]{0}
|
||||
asset.image.env = [accent]Uses Environment Atlas: [lightgray]{0}
|
||||
@@ -585,13 +585,9 @@ asset.image.filesize = [accent]File Size: [lightgray]{0}
|
||||
asset.image.packfailed = [red]⚠ Failed to pack sprite![]
|
||||
asset.image.packfailed.env = This is likely caused by a lack of space in the environment atlas.\nNote that environment sprites are limited to a 512x512 total area.
|
||||
|
||||
asset.emoji.delete = Delete Selected ({0})
|
||||
asset.emoji.notfound = Image with specified name not found.
|
||||
asset.emoji.exists = An emoji with that name already exists.
|
||||
|
||||
workshop = 工作坊
|
||||
waves.title = 波次
|
||||
waves.team = Team
|
||||
waves.team = 團隊
|
||||
waves.remove = 移除
|
||||
waves.every = 每
|
||||
waves.waves = 波次
|
||||
@@ -599,17 +595,15 @@ waves.health = 血量:{0}%
|
||||
waves.perspawn = 每次生成
|
||||
waves.shields = 護盾/波次
|
||||
waves.to = 至
|
||||
waves.spawn = spawn:
|
||||
waves.spawn = 生成點:
|
||||
waves.spawn.all = <all>
|
||||
waves.spawn.select = Spawn Select
|
||||
waves.spawn.none = [scarlet]地圖中找不到降落區
|
||||
waves.spawn.select = 生成點選擇
|
||||
waves.spawn.none = [scarlet]地圖中找不到敵方生成點
|
||||
waves.spawn.first = [lightgray](first {0})
|
||||
waves.max = 最大單位數
|
||||
waves.guardian = 守衛者
|
||||
waves.preview = 預覽
|
||||
waves.random = 隨機
|
||||
waves.copy = 複製到剪貼簿
|
||||
waves.load = 從剪貼簿載入
|
||||
waves.invalid = 剪貼簿中的波次無效。
|
||||
waves.copied = 波次已複製。
|
||||
waves.none = 無自訂敵人。\n請注意,若沒有波次佈局將自動替換為預設佈局。
|
||||
@@ -618,26 +612,26 @@ waves.sort.reverse = 反向排序
|
||||
waves.sort.begin = 開始
|
||||
waves.sort.health = 血量
|
||||
waves.sort.type = 兵種
|
||||
waves.search = 搜尋波...
|
||||
waves.search = 搜尋波……
|
||||
waves.filter = 單位過濾
|
||||
waves.units.hide = 全部隱藏
|
||||
waves.units.show = 全部顯示
|
||||
pause.disabled = [scarlet]Pause is disabled
|
||||
pause.disabled = [scarlet]已禁用暫停
|
||||
|
||||
#these are intentionally in lower case
|
||||
wavemode.counts = 數量
|
||||
wavemode.totals = 總數
|
||||
wavemode.health = 生命值
|
||||
|
||||
all = All
|
||||
all = 所有
|
||||
editor.default = [lightgray](預設)
|
||||
details = 詳細資訊……
|
||||
edit = 編輯……
|
||||
edit.menu = Edit...
|
||||
edit.menu = 編輯……
|
||||
variables = 變數
|
||||
logic.error.toolong = Processor code too long (Limit: {0} compressed bytes, actual length: {1} bytes)
|
||||
logic.clear.confirm = Are you sure you want to clear all code from this processor?
|
||||
logic.restart = Restart
|
||||
logic.restart = 重啟
|
||||
logic.globals = 內建變數
|
||||
|
||||
editor.name = 名稱:
|
||||
@@ -765,9 +759,9 @@ locales.applytoall = Apply Changes To All Locales
|
||||
locales.addtoother = Add To Other Locales
|
||||
locales.rollback = Rollback to last applied
|
||||
locales.filter = Property filter
|
||||
locales.searchname = Search name...
|
||||
locales.searchvalue = Search value...
|
||||
locales.searchlocale = Search locale...
|
||||
locales.searchname = 搜尋 name...
|
||||
locales.searchvalue = 搜尋 value...
|
||||
locales.searchlocale = 搜尋 locale...
|
||||
locales.byname = By name
|
||||
locales.byvalue = By value
|
||||
locales.showcorrect = Show properties that are present in all locales and have unique values everywhere
|
||||
@@ -775,7 +769,7 @@ locales.showmissing = Show properties that are missing in some locales
|
||||
locales.showsame = Show properties that have same values in different locales
|
||||
locales.viewproperty = View in all locales
|
||||
locales.viewing = Viewing property "{0}"
|
||||
locales.addicon = Add Icon
|
||||
locales.addicon = 新增 Icon
|
||||
locales.property.name = name
|
||||
locales.property.text = text
|
||||
|
||||
@@ -832,9 +826,9 @@ marker.shapetext.name = 稜框+文字標示
|
||||
marker.point.name = Point
|
||||
marker.shape.name = 稜框標示
|
||||
marker.text.name = 文字標示
|
||||
marker.line.name = Line
|
||||
marker.line.name = 線
|
||||
marker.quad.name = Quad
|
||||
marker.texture.name = Texture
|
||||
marker.texture.name = 材質
|
||||
|
||||
marker.background = 反黑背景
|
||||
marker.outline = 描邊
|
||||
@@ -844,7 +838,7 @@ objective.produce = [accent]取得:\n[]{0}[lightgray]{1}
|
||||
objective.destroyblock = [accent]摧毀:\n[]{0}[lightgray]{1}
|
||||
objective.destroyblocks = [accent]摧毀:[lightgray]{0}[white]/{1}\n{2}[lightgray]{3}
|
||||
objective.item = [accent]取得:[][lightgray]{0}[]/{1}\n{2}[lightgray]{3}
|
||||
objective.coreitem = [accent]Move into Core:\n[][lightgray]{0}[]/{1}\n{2}[lightgray]{3}
|
||||
objective.coreitem = [accent]將以下物品放入核心:\n[][lightgray]{0}[]/{1}\n{2}[lightgray]{3}
|
||||
objective.build = [accent]建造:[][lightgray]{0}[]x\n{1}[lightgray]{2}
|
||||
objective.buildunit = [accent]產生單位:[][lightgray]{0}[]x\n{1}[lightgray]{2}
|
||||
objective.destroyunits = [accent]摧毀:[][lightgray]{0}[]x 單位
|
||||
@@ -852,7 +846,7 @@ objective.enemiesapproaching = [accent]的人在 [lightgray]{0} 到達[]
|
||||
#TODO: fix the typo (escelating -> escalating) and update every objective that uses it
|
||||
objective.enemyescelating = [accent]敵人在[lightgray]{0}[]後擴大單位生產
|
||||
objective.enemyairunits = [accent]敵人在[lightgray]{0}[]後產生空軍單位
|
||||
objective.enemyunitproduction = [accent]Enemy unit production begins in [lightgray]{0}[]
|
||||
objective.enemyunitproduction = [accent]敵方單位將在[lightgray]{0}[]後開始生成
|
||||
objective.destroycore = [accent]摧毀敵人核心
|
||||
objective.command = [accent]指揮單位
|
||||
objective.nuclearlaunch = [accent]⚠ 偵測到核彈打擊: [lightgray]{0}
|
||||
@@ -863,17 +857,17 @@ loadout = 裝載
|
||||
resources = 資源
|
||||
resources.max = 最大
|
||||
bannedblocks = 禁用方塊
|
||||
unbannedblocks = Unbanned Blocks
|
||||
unbannedblocks = Unbanned 方塊
|
||||
objectives = 目標
|
||||
bannedunits = 禁用單位
|
||||
unbannedunits = Unbanned Units
|
||||
bannedunits.whitelist = Banned Units As Whitelist
|
||||
bannedblocks.whitelist = Banned Blocks As Whitelist
|
||||
unbannedunits = Unbanned 單位
|
||||
bannedunits.whitelist = Banned 單位 As Whitelist
|
||||
bannedblocks.whitelist = Banned 方塊 As Whitelist
|
||||
addall = 全部加入
|
||||
launch.from = 發射來源:[accent]{0}
|
||||
launch.capacity = 發射物品容量:[accent]{0}
|
||||
launch.destination = 目的地:{0}
|
||||
landing.sources = Source Sectors: [accent]{0}[]
|
||||
landing.sources = 來源地:[accent]{0}[]
|
||||
landing.import = Max Total Import: {0}[accent]{1}[lightgray]/min
|
||||
configure.invalid = 數值必須介於 0 到 {0}。
|
||||
add = 新增……
|
||||
@@ -889,7 +883,7 @@ error.mapnotfound = 找不到地圖!
|
||||
error.io = 網路錯誤。
|
||||
error.any = 未知網路錯誤。
|
||||
error.bloom = 初始化特效失敗。\n您的裝置可能不支援
|
||||
error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue.
|
||||
error.moddex = Mindustry 無法載入此模組。\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue.
|
||||
|
||||
weather.rain.name = 降雨
|
||||
weather.snowing.name = 降雪
|
||||
@@ -898,12 +892,12 @@ weather.sporestorm.name = 孢子風暴
|
||||
weather.fog.name = 霧
|
||||
|
||||
campaign.playtime = \uf129 [lightgray]地區遊玩時間: {0}
|
||||
campaign.complete = [accent]Congratulations.\n\nThe enemy on {0} has been defeated.\n[lightgray]The final sector has been conquered.
|
||||
campaign.complete = [accent]恭喜!\n\n{0}處盤據的敵人已被打倒。\n[lightgray]最後一個區域完成佔領了。
|
||||
|
||||
sectorlist = 地區
|
||||
sectorlist.attacked = {0} 遭受攻擊
|
||||
sectors.unexplored = [lightgray]未探索
|
||||
sectors.attempts = Attempts:
|
||||
sectors.attempts = 嘗試次數:
|
||||
sectors.resources = 資源:
|
||||
sectors.production = 生產:
|
||||
sectors.export = 輸出:
|
||||
@@ -914,12 +908,12 @@ sectors.wave = 波次:
|
||||
sectors.stored = 儲存:
|
||||
sectors.resume = 繼續
|
||||
sectors.launch = 發射
|
||||
sectors.nolaunchcandidate = No Launch Sector
|
||||
sectors.viewsubmission = \ue80d View Submissions
|
||||
sectors.nolaunchcandidate = 沒有發射起點
|
||||
sectors.viewsubmission = \ue80d 檢視 Submissions
|
||||
sectors.select = 選取
|
||||
sectors.launchselect = Select Launch Destination
|
||||
sectors.launchselect = 選擇降落處
|
||||
sectors.nonelaunch = [lightgray]無(太陽)
|
||||
sectors.redirect = Redirect Launch Pads
|
||||
sectors.redirect = 重新定向發射平台
|
||||
sectors.rename = 重新命名區域
|
||||
sectors.enemybase = [scarlet]敵方基地
|
||||
sectors.vulnerable = [scarlet]易受攻擊
|
||||
@@ -928,7 +922,7 @@ sectors.go = 進入
|
||||
sector.abandon = 放棄
|
||||
sector.abandon.confirm = 此地區的核心將會自我銷毀\n是否繼續?
|
||||
sector.curcapture = 已佔領地區
|
||||
sector.lockdown = [red]:warning:[accent] Sector currently under attack\n[lightgray]production, research, export and import disabled
|
||||
sector.lockdown = [red]:warning:[accent] 區域正受到攻擊!\n[lightgray]生產、研究、導出和導入已被禁用。
|
||||
sector.curlost = 已失去該地區
|
||||
sector.missingresources = [scarlet]核心資源不足
|
||||
sector.attacked = 地區 [accent]{0}[white] 遭受攻擊!
|
||||
@@ -939,7 +933,7 @@ sector.changeicon = 更改圖標
|
||||
sector.noswitch.title = 無法切換地區
|
||||
sector.noswitch = 當前地區遭受攻擊時,無法切換地區\n\n地區: [accent]{0}[] 於 [accent]{1}[]
|
||||
sector.view = 檢視地區
|
||||
sector.foundationrequired = [lightgray] Core: Foundation Required
|
||||
sector.foundationrequired = [lightgray] 需要核心:Foundation
|
||||
sector.shielded = [lightgray] Shielded
|
||||
|
||||
threat.low = 低
|
||||
@@ -948,9 +942,9 @@ threat.high = 高
|
||||
threat.extreme = 極高
|
||||
threat.eradication = 毀滅性
|
||||
|
||||
difficulty.guide.title = Notice
|
||||
difficulty.guide = If a sector poses too much of a challenge, campaign difficulty can be adjusted for an easier experience.
|
||||
difficulty.guide.confirm = Adjust Difficulty
|
||||
difficulty.guide.title = 提示
|
||||
difficulty.guide = 如果碰上太難的關卡,可以調整遊戲難度,讓遊戲體驗變得更容易。
|
||||
difficulty.guide.confirm = 調整難易度
|
||||
|
||||
difficulty.casual = 休閒模式
|
||||
difficulty.easy = 簡單模式
|
||||
@@ -958,10 +952,10 @@ difficulty.normal = 普通模式
|
||||
difficulty.hard = 困難模式
|
||||
difficulty.eradication = 滅絕模式
|
||||
|
||||
difficulty.enemyHealthMultiplier = Enemy Health: {0}
|
||||
difficulty.enemySpawnMultiplier = Enemy Amount: {0}
|
||||
difficulty.waveTimeMultiplier = Wave Timer: {0}
|
||||
difficulty.nomodifiers = [lightgray](No modifiers)
|
||||
difficulty.enemyHealthMultiplier = 敵方生命:{0}
|
||||
difficulty.enemySpawnMultiplier = 敵方數量:{0}
|
||||
difficulty.waveTimeMultiplier = 波次時長:{0}
|
||||
difficulty.nomodifiers = [lightgray](沒有更動)
|
||||
|
||||
planets = 行星
|
||||
|
||||
@@ -971,7 +965,7 @@ planet.sun.name = 太陽
|
||||
|
||||
sector.impact0078.name = 衝擊0078
|
||||
sector.groundZero.name = 原點
|
||||
sector.crateredBattleground.name = Cratered Battleground
|
||||
sector.crateredBattleground.name = 隕石坑戰場
|
||||
sector.frozenForest.name = 冰封森林
|
||||
sector.ruinousShores.name = 廢墟海岸
|
||||
sector.stainedMountains.name = 多色山脈
|
||||
@@ -984,28 +978,27 @@ sector.fungalPass.name = 真菌廊道
|
||||
sector.biomassFacility.name = 生物質合成工廠
|
||||
sector.windsweptIslands.name = 風之島
|
||||
sector.extractionOutpost.name = 萃取哨站
|
||||
sector.facility32m.name = Facility 32 M
|
||||
sector.taintedWoods.name = Tainted Woods
|
||||
sector.infestedCanyons.name = Infested Canyons
|
||||
sector.facility32m.name = 設施 32 M
|
||||
sector.taintedWoods.name = 被玷污的林地
|
||||
sector.infestedCanyons.name = 受感染的山谷
|
||||
sector.planetaryTerminal.name = 星際發射站
|
||||
sector.coastline.name = 海岸
|
||||
sector.navalFortress.name = 海上要塞
|
||||
sector.atolls.name = Atolls
|
||||
sector.testingGrounds.name = Testing Grounds
|
||||
sector.perilousHarbor.name = Perilous Harbor
|
||||
sector.weatheredChannels.name = Weathered Channels
|
||||
sector.testingGrounds.name = 測試場地
|
||||
sector.perilousHarbor.name = Perilous 港口
|
||||
sector.weatheredChannels.name = 風化 Channels
|
||||
sector.fallenVessel.name = Fallen Vessel
|
||||
sector.mycelialBastion.name = Mycelial Bastion
|
||||
sector.frontier.name = Frontier
|
||||
sector.sunkenPier.name = Sunken Pier
|
||||
sector.sunkenPier.name = 沉沒的 Pier
|
||||
sector.littoralShipyard.name = Littoral Shipyard
|
||||
sector.cruxscape.name = Cruxscape
|
||||
sector.geothermalStronghold.name = Geothermal Stronghold
|
||||
|
||||
sector.groundZero.description = 再次開始的最佳位置。敵人威脅程度低。資源少。\n盡可能地採集鉛與銅。\n繼續前進。
|
||||
sector.frozenForest.description = 即使是在如此靠近山脈的地方,孢子也已經擴散了。低溫無法永遠遏止它們。\n\n開始探索電力。建造火力發電機。學習如何修理方塊。
|
||||
sector.saltFlats.description = 鹽灘在沙漠的外圍。此處資源不多。\n\n敵人已在此建立了一座資源倉庫。剷除他們的核心。不要留下任何東西。
|
||||
sector.crateredBattleground.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills.
|
||||
sector.crateredBattleground.description = 隕石坑內積著深水與過去的戰役所留下的遺物。重新佔領此地。收集沙。熔製強化玻璃。抽水以冷卻炮台和鑽頭。
|
||||
sector.ruinousShores.description = 越過廢棄物就是海岸線。此處曾設有海岸防禦陣線。但剩下的不多。只有最基本的防禦結構沒有損毀,其他的一切都已然變為廢墟。\n繼續向外擴展。重新發現技術。
|
||||
sector.stainedMountains.description = 還未受孢子污染的山脈向內陸延伸。\n在此區域開採鈦金屬。學習如何使用它。\n\n這裡的敵人更為強大。不要讓他們有以最強大武力攻擊的機會。
|
||||
sector.overgrowth.description = 此區域雜草叢生,離孢子的源頭很近。\n敵人在此建立了前哨站。建造重槌機甲,把這夷為平地。
|
||||
@@ -1020,8 +1013,8 @@ sector.impact0078.description = 沉睡在此的是第一個進入本星系的星
|
||||
sector.planetaryTerminal.description = 最終目標。\n\n這麼濱海基地具有能夠發射核心到其他行星的建築。 其防禦非常嚴密。\n\n生產海上單位。盡速摧毀敵人。研究該發射建築。
|
||||
sector.coastline.description = 偵測到海軍單位科技的遺跡。擊退敵人的進攻,佔領地區,並獲得科技。
|
||||
sector.navalFortress.description = 敵人已在這個有天然防禦屏障的偏遠島嶼設置了一座海軍基地。摧毀它。獲得海上科技的進階科技。
|
||||
sector.facility32m.description = This sector contains the moldering remnants of an explosives production facility.\n\nCapture this area. Research the Blast Mixer. Produce Blast Compound for use as turret ammunition.
|
||||
sector.taintedWoods.description = [gray][optional objective][]\nRich in oil reserves, this sector contains large masses of fungal growth, making it difficult to traverse.\n\nUtilize its resources to produce Plastanium. Fend off the enemy.
|
||||
sector.facility32m.description = 此區域 contains the moldering remnants of an explosives 建造設施.\n\n佔領這個區域。研究 the Blast Mixer. 製造 Blast Compound for use as 炮台子彈。
|
||||
sector.taintedWoods.description = [gray][optional objective][]\nRich in oil reserves, this sector contains large masses of 真菌 growth, making it difficult to traverse.\n\nUtilize its resources to produce Plastanium. Fend off the enemy.
|
||||
sector.sunkenPier.description = [gray][optional objective][]\nOnce an offshore oil platform, this facility has long-since fallen into disrepair.\n\nHigh amounts of enemy naval units detected. Be prepared for attacks from multiple directions.
|
||||
sector.atolls.description = [gray][optional objective][]\nMultiple enemy naval bases have been detected at this location.\n\nUtilize Mega payload units to transport ground forces into attack positions. Build naval units to destroy the peripheral outposts.
|
||||
sector.frontier.description = A small enemy outpost has been detected here.\n\nBuild Mono units in order to harvest resources more effectively. Utilize the Additive Reconstructor to construct stronger units.
|
||||
@@ -1084,8 +1077,8 @@ status.blasted.name = 爆炸
|
||||
status.corroded.name = Corroded
|
||||
status.unmoving.name = 靜止
|
||||
status.boss.name = 守衛者
|
||||
status.slow.name = Slow
|
||||
status.fast.name = Fast
|
||||
status.slow.name = 慢速
|
||||
status.fast.name = 快速
|
||||
status.shielded.name = Shielded
|
||||
status.disarmed.name = Disarmed
|
||||
|
||||
@@ -1097,7 +1090,7 @@ settings.resetKey = 重設按鍵
|
||||
settings.controls = 控制
|
||||
settings.game = 遊戲
|
||||
settings.sound = 音效
|
||||
settings.dev = Developer Options
|
||||
settings.dev = 開發者選項
|
||||
settings.graphics = 圖形
|
||||
settings.cleardata = 清除遊戲資料……
|
||||
settings.clear.confirm = 您確定要清除資料嗎?\n此動作無法復原!
|
||||
@@ -1141,11 +1134,11 @@ stat.opposites = 衝突狀態
|
||||
stat.powercapacity = 蓄電量
|
||||
stat.powershot = 能量/射擊
|
||||
stat.damage = 傷害
|
||||
stat.frequency = Frequency
|
||||
stat.frequency = 頻率
|
||||
stat.targetsair = 攻擊空中目標
|
||||
stat.targetsground = 攻擊地面目標
|
||||
stat.crushdamage = Crush Damage
|
||||
stat.legsplashdamage = Leg Splash Damage
|
||||
stat.crushdamage = Crush 傷害
|
||||
stat.legsplashdamage = Leg Splash 傷害
|
||||
stat.itemsmoved = 移動速度
|
||||
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
|
||||
stat.launchtime = 發射間隔
|
||||
@@ -1163,7 +1156,7 @@ stat.itemcapacity = 物品容量
|
||||
stat.memorycapacity = 記憶體容量
|
||||
stat.basepowergeneration = 基礎能量生產
|
||||
stat.productiontime = 生產時間
|
||||
stat.warmuptime = Warmup Time
|
||||
stat.warmuptime = 暖機時間
|
||||
stat.repairtime = 方塊完全修復時間
|
||||
stat.repairspeed = 修復速度
|
||||
stat.weapons = 武器
|
||||
@@ -1190,8 +1183,8 @@ stat.reload = 射擊速率
|
||||
stat.ammo = 彈藥
|
||||
stat.shieldhealth = 護盾生命值
|
||||
stat.cooldowntime = 冷確時間
|
||||
stat.regenerationrate = Regeneration Rate
|
||||
stat.activationtime = Activation Time
|
||||
stat.regenerationrate = 回復速度
|
||||
stat.activationtime = 發動時間
|
||||
stat.explosiveness = 爆炸性
|
||||
stat.basedeflectchance = 基礎偏移量
|
||||
stat.lightningchance = 燃燒機率
|
||||
@@ -1221,7 +1214,7 @@ stat.buildspeedmultiplier = 建造速度加成
|
||||
stat.reactive = 狀態傷害加成
|
||||
stat.immunities = 免疫
|
||||
stat.healing = 治癒
|
||||
stat.efficiency = [stat]{0}% Efficiency
|
||||
stat.efficiency = [stat]{0}% 效率
|
||||
|
||||
ability.forcefield = 防護力場
|
||||
ability.forcefield.description = 投射一個可以吸收子彈的防護力場
|
||||
@@ -1255,7 +1248,7 @@ ability.liquidexplode.description = 在死亡時產生液體
|
||||
|
||||
ability.stat.firingrate = [stat]{0}/秒[lightgray] 射擊速度
|
||||
ability.stat.regen = [stat]{0}[lightgray]生命恢復/秒
|
||||
ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse
|
||||
ability.stat.pulseregen = [stat]{0}[lightgray] 生命/pulse
|
||||
ability.stat.shield = [stat]{0}[lightgray]護盾
|
||||
ability.stat.repairspeed = [stat]{0}/秒[lightgray]修復速度
|
||||
ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance
|
||||
@@ -1271,7 +1264,7 @@ ability.stat.buildtime = [stat]{0} 秒[lightgray]建造時間
|
||||
bar.displaytoolarge = Dimensions too large\n(Max: {0}x{0})
|
||||
bar.onlycoredeposit = 僅允許向核心放置物品
|
||||
bar.drilltierreq = 需要更好的鑽頭
|
||||
bar.nobatterypower = Insufficieny Battery Power
|
||||
bar.nobatterypower = 電池能量不足
|
||||
bar.noresources = 缺少資源
|
||||
bar.corereq = 需由核心升級
|
||||
bar.corefloor = 需要核心地塊
|
||||
@@ -1280,7 +1273,7 @@ bar.drillspeed = 鑽頭速度:{0}/秒
|
||||
bar.pumpspeed = 液體泵送速度:{0}/秒
|
||||
bar.efficiency = 效率:{0}%
|
||||
bar.boost = 速度加成:+{0}%
|
||||
bar.powerbuffer = Battery Power: {0}/{1}
|
||||
bar.powerbuffer = 電池能量:{0}/{1}
|
||||
bar.powerbalance = 能量變化:{0}
|
||||
bar.powerstored = 能量存量:{0}/{1}
|
||||
bar.poweramount = 能量:{0}
|
||||
@@ -1291,7 +1284,7 @@ bar.capacity = 容量:{0}
|
||||
bar.unitcap = {0} {1}/{2}
|
||||
bar.liquid = 液體
|
||||
bar.heat = 熱
|
||||
bar.cooldown = Cooldown
|
||||
bar.cooldown = 冷卻
|
||||
bar.instability = 不穩定度
|
||||
bar.heatamount = 熱: {0}
|
||||
bar.heatpercent = 熱: {0} ({1}%)
|
||||
@@ -1381,8 +1374,8 @@ category.items = 物品
|
||||
category.crafting = 需求
|
||||
category.function = 功能
|
||||
category.optional = 額外的強化效果
|
||||
setting.alwaysmusic.name = Always Play Music
|
||||
setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals.
|
||||
setting.alwaysmusic.name = 一直播放音樂
|
||||
setting.alwaysmusic.description = 開啟時,音樂會一直循環播放。\n關閉時,音樂會隨機開始播放,並間隔隨機長度的時間。
|
||||
setting.skipcoreanimation.name = 跳過核心發射/降落動畫
|
||||
setting.landscape.name = 鎖定水平畫面
|
||||
setting.shadows.name = 陰影
|
||||
@@ -1398,8 +1391,8 @@ setting.modcrashdisable.name = 閃退後停用模組
|
||||
setting.animatedwater.name = 顯示液面動畫
|
||||
setting.animatedshields.name = 顯示護盾動畫
|
||||
setting.playerindicators.name = 盟友標示
|
||||
setting.showpings.name = Show Pings
|
||||
setting.showotherbuildplans.name = Show Other Player's Build Plans
|
||||
setting.showpings.name = 顯示 Pings
|
||||
setting.showotherbuildplans.name = 顯示其他玩家的建造計劃
|
||||
setting.indicators.name = 敵方標示
|
||||
setting.autotarget.name = 自動射擊
|
||||
setting.keyboard.name = 滑鼠及鍵盤控制
|
||||
@@ -1426,7 +1419,7 @@ setting.milliseconds = {0}毫秒
|
||||
setting.fullscreen.name = 全螢幕
|
||||
setting.fps.name = 顯示FPS與延遲
|
||||
setting.console.name = 啟用搖桿
|
||||
setting.drawhitboxes.name = Display Hitboxes
|
||||
setting.drawhitboxes.name = 顯示碰撞箱
|
||||
setting.showperformance.name = Display Performance Metrics
|
||||
setting.buildingtimestep.name = Fixed Building Timestep
|
||||
setting.buildingtimestep.description = Runs buildings on a fixed timestep with constant delta,\nas opposed to every frame with variable delta.\nIf buildings cannot be updated fast enough, the game will slow down.\nIf you don't know what that means, don't touch this option.
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -377,7 +377,7 @@ public class SoundControl{
|
||||
//start thread with all the sources that were added during launch
|
||||
Core.app.post(() -> {
|
||||
if(ambientThread != null){
|
||||
ambientThread.start();
|
||||
if(!ambientThread.isAlive()) ambientThread.start();
|
||||
launchingAmbientThread = false;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -2068,9 +2068,8 @@ public class Blocks{
|
||||
conveyor = new Conveyor("conveyor"){{
|
||||
requirements(Category.distribution, with(Items.copper, 1));
|
||||
health = 45;
|
||||
speed = 0.03f;
|
||||
displayedSpeed = 4.2f;
|
||||
buildCostMultiplier = 2f;
|
||||
speed = 0.046f;
|
||||
displayedSpeed = 6.5f;
|
||||
researchCost = with(Items.copper, 5);
|
||||
}};
|
||||
|
||||
@@ -2100,7 +2099,7 @@ public class Blocks{
|
||||
speed = 26;
|
||||
capacity = 6;
|
||||
health = 30;
|
||||
buildCostMultiplier = 6f;
|
||||
buildCostMultiplier = 3f;
|
||||
}};
|
||||
|
||||
itemBridge = new BufferedItemBridge("bridge-conveyor"){{
|
||||
|
||||
@@ -319,7 +319,7 @@ public class NetClient implements ApplicationListener{
|
||||
//detect and kick for foul play
|
||||
if(player != null && player.con != null && !player.con.chatRate.allow(2000, Config.chatSpamLimit.num())){
|
||||
player.con.kick(KickReason.kick);
|
||||
netServer.admins.blacklistDos(player.con.address);
|
||||
player.con.blacklist();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -537,7 +537,7 @@ public class NetClient implements ApplicationListener{
|
||||
}
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.one, priority = PacketPriority.low, unreliable = true)
|
||||
@Remote(variants = Variant.both, priority = PacketPriority.low, unreliable = true)
|
||||
public static void entitySnapshot(short amount, byte[] data){
|
||||
try{
|
||||
netClient.lastSnapshotTimestamp = Time.millis();
|
||||
@@ -591,7 +591,7 @@ public class NetClient implements ApplicationListener{
|
||||
}
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.one, priority = PacketPriority.low, unreliable = true)
|
||||
@Remote(priority = PacketPriority.low, unreliable = true)
|
||||
public static void stateSnapshot(float waveTime, int wave, int enemies, boolean paused, boolean gameOver, int timeData, byte tps, long rand0, long rand1, byte[] coreData){
|
||||
try{
|
||||
if(wave > state.wave){
|
||||
|
||||
@@ -129,6 +129,11 @@ public class NetServer implements ApplicationListener{
|
||||
private ObjectMap<String, Seq<Cons2<Player, byte[]>>> customBinaryPacketHandlers = new ObjectMap<>();
|
||||
/** Packet handlers for logic client data */
|
||||
private ObjectMap<String, Seq<Cons2<Player, Object>>> logicClientDataHandlers = new ObjectMap<>();
|
||||
/** Reused Seq<Player> for writing entity snapshots per team. */
|
||||
private Seq<Player> playersToSend = new Seq<>(false);
|
||||
private Seq<NetConnection> tempConnections = new Seq<>(false);
|
||||
/** Used for entity snapshot timing. */
|
||||
public long snapshotSyncTime;
|
||||
|
||||
public NetServer(){
|
||||
|
||||
@@ -605,25 +610,25 @@ public class NetServer implements ApplicationListener{
|
||||
(player.isAdded() ? 4 : 0) |
|
||||
(player.con.hasBegunConnecting ? 8 : 0);
|
||||
|
||||
Call.debugStatusClient(player.con, flags, player.con.lastReceivedClientSnapshot, player.con.snapshotsSent);
|
||||
Call.debugStatusClientUnreliable(player.con, flags, player.con.lastReceivedClientSnapshot, player.con.snapshotsSent);
|
||||
Call.debugStatusClient(player.con, flags, player.con.lastReceivedClientSnapshot);
|
||||
Call.debugStatusClientUnreliable(player.con, flags, player.con.lastReceivedClientSnapshot);
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.both, priority = PacketPriority.high)
|
||||
public static void debugStatusClient(int value, int lastClientSnapshot, int snapshotsSent){
|
||||
logClientStatus(true, value, lastClientSnapshot, snapshotsSent);
|
||||
public static void debugStatusClient(int value, int lastClientSnapshot){
|
||||
logClientStatus(true, value, lastClientSnapshot);
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.both, priority = PacketPriority.high, unreliable = true)
|
||||
public static void debugStatusClientUnreliable(int value, int lastClientSnapshot, int snapshotsSent){
|
||||
logClientStatus(false, value, lastClientSnapshot, snapshotsSent);
|
||||
public static void debugStatusClientUnreliable(int value, int lastClientSnapshot){
|
||||
logClientStatus(false, value, lastClientSnapshot);
|
||||
}
|
||||
|
||||
static void logClientStatus(boolean reliable, int value, int lastClientSnapshot, int snapshotsSent){
|
||||
Log.info("@ Debug status received. disconnected = @, connected = @, added = @, begunConnecting = @ lastClientSnapshot = @, snapshotsSent = @",
|
||||
static void logClientStatus(boolean reliable, int value, int lastClientSnapshot){
|
||||
Log.info("@ Debug status received. disconnected = @, connected = @, added = @, begunConnecting = @ lastClientSnapshot = @",
|
||||
reliable ? "[RELIABLE]" : "[UNRELIABLE]",
|
||||
(value & 1) != 0, (value & 2) != 0, (value & 4) != 0, (value & 8) != 0,
|
||||
lastClientSnapshot, snapshotsSent
|
||||
lastClientSnapshot
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1085,7 +1090,7 @@ public class NetServer implements ApplicationListener{
|
||||
}
|
||||
}
|
||||
|
||||
public void writeEntitySnapshot(Player player) throws IOException{
|
||||
public void writeStateSnapshot() throws IOException{
|
||||
byte tps = (byte)Math.min(Core.graphics.getFramesPerSecond(), 255);
|
||||
syncStream.reset();
|
||||
int activeTeams = (byte)state.teams.present.count(t -> t.cores.size > 0);
|
||||
@@ -1103,27 +1108,94 @@ public class NetServer implements ApplicationListener{
|
||||
|
||||
dataStream.close();
|
||||
|
||||
//write basic state data.
|
||||
Call.stateSnapshot(player.con, state.wavetime, state.wave, state.enemies, state.isPaused(), state.gameOver,
|
||||
Call.stateSnapshot(state.wavetime, state.wave, state.enemies, state.isPaused(), state.gameOver,
|
||||
universe.seconds(), tps, GlobalVars.rand.seed0, GlobalVars.rand.seed1, syncStream.toByteArray());
|
||||
}
|
||||
|
||||
/** Does not check isSyncHidden. Call this if no entities are hidden. */
|
||||
public void writeEntitySnapshotsAll() throws IOException{
|
||||
syncStream.reset();
|
||||
|
||||
int sent = 0;
|
||||
|
||||
for(Syncc entity : Groups.sync){
|
||||
writeEntity(entity, dataStream);
|
||||
|
||||
sent++;
|
||||
|
||||
if(syncStream.size() > maxSnapshotSize){
|
||||
dataStream.close();
|
||||
Call.entitySnapshot((short)sent, syncStream.toByteArray());
|
||||
sent = 0;
|
||||
syncStream.reset();
|
||||
}
|
||||
}
|
||||
|
||||
if(sent > 0){
|
||||
dataStream.close();
|
||||
|
||||
Call.entitySnapshot((short)sent, syncStream.toByteArray());
|
||||
}
|
||||
}
|
||||
|
||||
/** Checks isSyncHidden for only one player per team. Called if FoW is enabled. */
|
||||
public void writeEntitySnapshotsTeam(Team team, Seq<Player> players) throws IOException{
|
||||
syncStream.reset();
|
||||
|
||||
hiddenIds.clear();
|
||||
int sent = 0;
|
||||
tempConnections.clear();
|
||||
|
||||
for(Player player : players){
|
||||
//player.con must not be null here (the players seq must ONLY contain non-local connected clients)
|
||||
tempConnections.add(player.con);
|
||||
}
|
||||
|
||||
for(Syncc entity : Groups.sync){
|
||||
//TODO write to special list
|
||||
if(entity.isSyncHidden(player)){
|
||||
if(entity.isSyncHidden(team)){
|
||||
hiddenIds.add(entity.id());
|
||||
continue;
|
||||
}
|
||||
|
||||
//write all entities now
|
||||
dataStream.writeInt(entity.id()); //write id
|
||||
dataStream.writeByte(entity.classId() & 0xFF); //write type ID
|
||||
entity.beforeWrite();
|
||||
entity.writeSync(dataStreamWrites); //write entity itself
|
||||
writeEntity(entity, dataStream);
|
||||
|
||||
sent++;
|
||||
|
||||
if(syncStream.size() > maxSnapshotSize){
|
||||
dataStream.close();
|
||||
sendEntitySnapshots(tempConnections, (short)sent, syncStream.toByteArray());
|
||||
sent = 0;
|
||||
syncStream.reset();
|
||||
}
|
||||
}
|
||||
|
||||
if(sent > 0){
|
||||
dataStream.close();
|
||||
sendEntitySnapshots(tempConnections, (short)sent, syncStream.toByteArray());
|
||||
}
|
||||
|
||||
if(hiddenIds.size > 0){
|
||||
var packet = new HiddenSnapshotCallPacket();
|
||||
packet.ids = hiddenIds;
|
||||
net.send(packet, tempConnections, false);
|
||||
}
|
||||
}
|
||||
|
||||
protected void sendEntitySnapshots(Seq<NetConnection> connections, short amount, byte[] data){
|
||||
var packet = new EntitySnapshotCallPacket();
|
||||
packet.amount = amount;
|
||||
packet.data = data;
|
||||
net.send(packet, connections, false);
|
||||
}
|
||||
|
||||
/** Writes a custom snapshot containing player-local entities; this is for entities other players don't see. */
|
||||
public void writeCustomEntitySnapshot(Player player, Iterable<Syncc> entities) throws IOException{
|
||||
syncStream.reset();
|
||||
|
||||
int sent = 0;
|
||||
|
||||
for(Syncc entity : entities){
|
||||
writeEntity(entity, dataStream);
|
||||
|
||||
sent++;
|
||||
|
||||
@@ -1140,12 +1212,13 @@ public class NetServer implements ApplicationListener{
|
||||
|
||||
Call.entitySnapshot(player.con, (short)sent, syncStream.toByteArray());
|
||||
}
|
||||
}
|
||||
|
||||
if(hiddenIds.size > 0){
|
||||
Call.hiddenSnapshot(player.con, hiddenIds);
|
||||
}
|
||||
|
||||
player.con.snapshotsSent++;
|
||||
protected void writeEntity(Syncc entity, DataOutputStream dataStream) throws IOException{
|
||||
dataStream.writeInt(entity.id());
|
||||
dataStream.writeByte(entity.classId() & 0xFF);
|
||||
entity.beforeWrite();
|
||||
entity.writeSync(dataStreamWrites);
|
||||
}
|
||||
|
||||
public String fixName(String name){
|
||||
@@ -1203,22 +1276,37 @@ public class NetServer implements ApplicationListener{
|
||||
Groups.player.each(p -> !p.isLocal(), player -> {
|
||||
if(player.con == null || !player.con.isConnected()){
|
||||
onDisconnect(player, "disappeared");
|
||||
return;
|
||||
}
|
||||
|
||||
var connection = player.con;
|
||||
|
||||
if(Time.timeSinceMillis(connection.syncTime) < interval || !connection.hasConnected) return;
|
||||
|
||||
connection.syncTime = Time.millis();
|
||||
|
||||
try{
|
||||
writeEntitySnapshot(player);
|
||||
}catch(IOException e){
|
||||
Log.err(e);
|
||||
}
|
||||
});
|
||||
|
||||
if(Time.timeSinceMillis(snapshotSyncTime) >= interval){
|
||||
snapshotSyncTime = Time.millis();
|
||||
|
||||
writeStateSnapshot();
|
||||
|
||||
if(Vars.state.rules.fog){
|
||||
//Serialize by teams
|
||||
for(Team team : Team.all){ //Not Teams.active, because players can be on inactive teams
|
||||
var tdata = team.data();
|
||||
playersToSend.selectFrom(tdata.players, p -> !p.isLocal() && p.con.hasConnected);
|
||||
if(!playersToSend.isEmpty()){
|
||||
writeEntitySnapshotsTeam(team, playersToSend);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
//Serialize once for all players
|
||||
writeEntitySnapshotsAll();
|
||||
}
|
||||
|
||||
//write custom player-specific entities (usually labels)
|
||||
for(Player player : Groups.player){
|
||||
if(player.con != null && player.con.hasConnected && player.con.localEntities.size > 0){
|
||||
writeCustomEntitySnapshot(player, player.con.localEntities);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(Groups.player.size() > 0 && Core.settings.getBool("blocksync") && blockSyncTime.poll()){
|
||||
writeBlockSnapshots();
|
||||
}
|
||||
|
||||
@@ -188,7 +188,7 @@ public class EditorTile extends Tile{
|
||||
}
|
||||
|
||||
private void updateStatic(){
|
||||
editor.renderer.updateStatic(x, y);
|
||||
if(!headless) editor.renderer.updateStatic(x, y);
|
||||
}
|
||||
|
||||
private boolean skip(){
|
||||
|
||||
@@ -56,7 +56,7 @@ public class MapEditor{
|
||||
tags.put("steamid", map.file.parent().name());
|
||||
}
|
||||
load(() -> MapIO.loadMap(map, context));
|
||||
renderer.resize(width(), height());
|
||||
if(!headless) renderer.resize(width(), height());
|
||||
loading = false;
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ public class MapEditor{
|
||||
|
||||
createTiles(pixmap.width, pixmap.height);
|
||||
load(() -> MapIO.readImage(pixmap, tiles()));
|
||||
renderer.resize(width(), height());
|
||||
if(!headless) renderer.resize(width(), height());
|
||||
}
|
||||
|
||||
public void updateRenderer(){
|
||||
|
||||
@@ -91,12 +91,12 @@ public class MapGenerateDialog extends BaseDialog{
|
||||
p.table(Tex.button, in -> {
|
||||
in.defaults().size(280f, 60f).left();
|
||||
|
||||
in.button("@waves.copy", Icon.copy, style, () -> {
|
||||
in.button("@copy.clipboard", Icon.copy, style, () -> {
|
||||
dialog.hide();
|
||||
|
||||
Core.app.setClipboardText(JsonIO.write(filters));
|
||||
}).marginLeft(12f).row();
|
||||
in.button("@waves.load", Icon.download, style, () -> {
|
||||
in.button("@load.clipboard", Icon.download, style, () -> {
|
||||
dialog.hide();
|
||||
try{
|
||||
filters.set(JsonIO.read(Seq.class, Core.app.getClipboardText()));
|
||||
|
||||
@@ -430,12 +430,12 @@ public class MapLocalesDialog extends BaseDialog{
|
||||
p.table(Tex.button, t -> {
|
||||
t.defaults().size(350f, 60f).left();
|
||||
|
||||
t.button("@waves.copy", Icon.copy, Styles.flatt, () -> {
|
||||
t.button("@copy.clipboard", Icon.copy, Styles.flatt, () -> {
|
||||
Core.app.setClipboardText(writeLocale(locale));
|
||||
ui.showInfoFade("@copied");
|
||||
dialog.hide();
|
||||
}).marginLeft(12f).row();
|
||||
t.button("@waves.load", Icon.download, Styles.flatt, () -> {
|
||||
t.button("@load.clipboard", Icon.download, Styles.flatt, () -> {
|
||||
locales.put(locale, readLocale(Core.app.getClipboardText()));
|
||||
buildTables();
|
||||
saved = false;
|
||||
@@ -456,12 +456,12 @@ public class MapLocalesDialog extends BaseDialog{
|
||||
p.table(Tex.button, t -> {
|
||||
t.defaults().size(450f, 60f).left();
|
||||
|
||||
t.button("@waves.copy", Icon.copy, Styles.flatt, () -> {
|
||||
t.button("@copy.clipboard", Icon.copy, Styles.flatt, () -> {
|
||||
Core.app.setClipboardText(writeBundles());
|
||||
ui.showInfoFade("@copied");
|
||||
dialog.hide();
|
||||
}).marginLeft(12f).row();
|
||||
t.button("@waves.load", Icon.download, Styles.flatt, () -> {
|
||||
t.button("@load.clipboard", Icon.download, Styles.flatt, () -> {
|
||||
locales = readBundles(Core.app.getClipboardText());
|
||||
buildTables();
|
||||
saved = false;
|
||||
|
||||
@@ -414,7 +414,7 @@ public class MapObjectivesDialog extends BaseDialog{
|
||||
t.left();
|
||||
t.margin(10f);
|
||||
|
||||
if(name.length() > 0) t.add(name + ":").color(Pal.accent);
|
||||
if(name.length() > 0) t.add(name).color(Pal.accent);
|
||||
t.add().growX();
|
||||
|
||||
Cell<ImageButton> remove = null;
|
||||
@@ -494,13 +494,13 @@ public class MapObjectivesDialog extends BaseDialog{
|
||||
var style = Styles.cleart;
|
||||
t.defaults().size(280f, 64f).pad(2f);
|
||||
|
||||
t.button("@waves.copy", Icon.copy, style, () -> {
|
||||
t.button("@copy.clipboard", Icon.copy, style, () -> {
|
||||
ui.showInfoFade("@copied");
|
||||
Core.app.setClipboardText(JsonIO.write(new MapObjectives(canvas.objectives)));
|
||||
dialog.hide();
|
||||
}).disabled(b -> canvas.objectives.isEmpty()).marginLeft(12f).row();
|
||||
|
||||
t.button("@waves.load", Icon.download, style, () -> {
|
||||
t.button("@load.clipboard", Icon.download, style, () -> {
|
||||
try{
|
||||
rebuildObjectives(new Seq<>(JsonIO.read(MapObjectives.class, Core.app.getClipboardText()).all));
|
||||
}catch(Exception e){
|
||||
|
||||
@@ -57,13 +57,13 @@ public class WaveInfoDialog extends BaseDialog{
|
||||
var style = Styles.cleart;
|
||||
t.defaults().size(280f, 64f).pad(2f);
|
||||
|
||||
t.button("@waves.copy", Icon.copy, style, () -> {
|
||||
t.button("@copy.clipboard", Icon.copy, style, () -> {
|
||||
ui.showInfoFade("@waves.copied");
|
||||
Core.app.setClipboardText(maps.writeWaves(groups));
|
||||
dialog.hide();
|
||||
}).disabled(b -> groups == null || groups.isEmpty()).marginLeft(12f).row();
|
||||
|
||||
t.button("@waves.load", Icon.download, style, () -> {
|
||||
t.button("@load.clipboard", Icon.download, style, () -> {
|
||||
try{
|
||||
groups = maps.readWaves(Core.app.getClipboardText());
|
||||
buildGroups();
|
||||
|
||||
@@ -94,10 +94,8 @@ public class MapAudioView implements AssetView{
|
||||
|
||||
list.button(Icon.trash, Styles.graySquarei, iconMed, () -> {
|
||||
ui.showConfirm("@asset.delete.confirm", () -> {
|
||||
if(audioSource != null){
|
||||
audioSource.dispose();
|
||||
}
|
||||
assets.remove(asset);
|
||||
state.data.reloadAudio();
|
||||
diag.rebuild();
|
||||
});
|
||||
}).size(h);
|
||||
@@ -106,7 +104,7 @@ public class MapAudioView implements AssetView{
|
||||
}
|
||||
|
||||
if(list.getChildren().isEmpty()){
|
||||
list.add("@patch.none");
|
||||
list.add("@none.found");
|
||||
}
|
||||
|
||||
list.add(new Element(){
|
||||
@@ -142,6 +140,9 @@ public class MapAudioView implements AssetView{
|
||||
if(other != null){
|
||||
ui.showErrorMessage(Core.bundle.format("asset.exists", other.name + " (" + other.path + ")"));
|
||||
return;
|
||||
}else if(Core.assets.getOrNull("dp-" + name, Music.class) != null || Core.assets.getOrNull("dp-" + name, Sound.class) != null){
|
||||
ui.showErrorMessage(Core.bundle.format("asset.exists.audio", name));
|
||||
return;
|
||||
}
|
||||
|
||||
DataAsset asset = (type == DataAssetType.music ? new MusicAsset() : new SoundAsset());
|
||||
|
||||
@@ -3,6 +3,7 @@ package mindustry.entities.comp;
|
||||
import arc.util.io.*;
|
||||
import mindustry.*;
|
||||
import mindustry.annotations.Annotations.*;
|
||||
import mindustry.game.*;
|
||||
import mindustry.gen.*;
|
||||
|
||||
import java.nio.*;
|
||||
@@ -21,7 +22,7 @@ abstract class SyncComp implements Entityc{
|
||||
void afterSync(){}
|
||||
void interpolate(){}
|
||||
|
||||
boolean isSyncHidden(Player player){
|
||||
boolean isSyncHidden(Team team){
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -213,9 +213,9 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
|
||||
|
||||
@Override
|
||||
@Replace
|
||||
public boolean isSyncHidden(Player player){
|
||||
public boolean isSyncHidden(Team team){
|
||||
//shooting reveals position so bullets can be seen
|
||||
return !isShooting() && inFogTo(player.team());
|
||||
return !isShooting() && inFogTo(team);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -17,14 +17,14 @@ import mindustry.ui.*;
|
||||
public abstract class WorldLabelComp implements Posc, Drawc, Syncc{
|
||||
@Import int id;
|
||||
@Import float x, y;
|
||||
@Import boolean added;
|
||||
|
||||
public static final byte
|
||||
flagBackground = 1,
|
||||
flagOutline = 2,
|
||||
flagAlignLeft = 4,
|
||||
flagAlignRight = 8,
|
||||
flagAutoscale = 16,
|
||||
flagOnlyParentVisible = 32;
|
||||
flagBackground = 1 << 0,
|
||||
flagOutline = 1 << 1,
|
||||
flagAlignLeft = 1 << 2,
|
||||
flagAlignRight = 1 << 3,
|
||||
flagAutoscale = 1 << 4;
|
||||
|
||||
public String text = "sample text";
|
||||
public float fontSize = 1f, z = Layer.playerName + 1;
|
||||
@@ -37,6 +37,7 @@ public abstract class WorldLabelComp implements Posc, Drawc, Syncc{
|
||||
|
||||
@Replace
|
||||
public float clipSize(){
|
||||
if(parent != null) return Float.MAX_VALUE;
|
||||
return text.length() * 10f * fontSize;
|
||||
}
|
||||
|
||||
@@ -54,9 +55,6 @@ public abstract class WorldLabelComp implements Posc, Drawc, Syncc{
|
||||
if(parent != null){
|
||||
x += parent.x();
|
||||
y += parent.y();
|
||||
if((flags & flagOnlyParentVisible) != 0 && !parent.isLocal()){
|
||||
return;
|
||||
}
|
||||
}
|
||||
drawAt(text, x, y, z, flags, fontSize, Align.center, (flags & flagAlignLeft) != 0 ? Align.left : (flags & flagAlignRight) != 0 ? Align.right : Align.center);
|
||||
}
|
||||
@@ -111,6 +109,21 @@ public abstract class WorldLabelComp implements Posc, Drawc, Syncc{
|
||||
Draw.z(z);
|
||||
}
|
||||
|
||||
/** Makes this label visible only to the specific player. This must be called instead of add(). */
|
||||
public void show(Player player){
|
||||
if(added || player.con == null) return;
|
||||
player.con.localEntities.add(this);
|
||||
added = true;
|
||||
}
|
||||
|
||||
/** Hides this player-specific label. If you used {@link #show(Player)} previously, you must call this method instead of {@link #hide()}! */
|
||||
public void hide(Player player){
|
||||
if(!added || player.con == null) return;
|
||||
player.con.localEntities.remove(this);
|
||||
Call.removeWorldLabel(player.con, id);
|
||||
added = false;
|
||||
}
|
||||
|
||||
/** This MUST be called instead of remove()! */
|
||||
public void hide(){
|
||||
remove();
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
package mindustry.entities.effect;
|
||||
|
||||
import arc.*;
|
||||
import arc.graphics.*;
|
||||
import arc.graphics.g2d.*;
|
||||
import arc.util.*;
|
||||
import mindustry.entities.*;
|
||||
|
||||
/** Effect that renders noise layers over the camera view. */
|
||||
public class NoiseEffect extends Effect{
|
||||
public String noisePath = "sprites/distortAlpha.png";
|
||||
public @Nullable Color color;
|
||||
public float noiseScl = 1000f;
|
||||
public float opacity = 0.3f;
|
||||
public float baseSpeed = 0.4f;
|
||||
public float intensity = 1f;
|
||||
public float windX = 1f;
|
||||
public float windY = 0f;
|
||||
public int layers = 4;
|
||||
public float layerSpeedMul = -1.3f;
|
||||
public float layerAlphaMul = 0.7f;
|
||||
public float layerSclMul = 0.8f;
|
||||
public float layerColorMul = 0.9f;
|
||||
public Texture tex;
|
||||
|
||||
@Override
|
||||
public void render(EffectContainer e){
|
||||
if(tex == null){
|
||||
tex = Core.assets.getOrNull(noisePath, Texture.class);
|
||||
}
|
||||
if(tex == null) return;
|
||||
|
||||
Color col = Tmp.c2.set(color != null ? color : e.color).mul(1f, 1f, 1f, e.fout());
|
||||
drawNoiseLayers(tex, col, noiseScl, opacity, baseSpeed, intensity, windX, windY, layers, layerSpeedMul, layerAlphaMul, layerSclMul, layerColorMul);
|
||||
Draw.reset();
|
||||
}
|
||||
|
||||
public static void drawNoiseLayers(Texture noise, Color color, float noisescl, float opacity, float baseSpeed, float intensity, float vwindx, float vwindy,
|
||||
int layers, float layerSpeedM, float layerAlphaM, float layerSclM, float layerColorM){
|
||||
float sspeed = 1f, sscl = 1f, salpha = 1f, offset = 0f;
|
||||
Color col = Tmp.c1.set(color);
|
||||
for(int i = 0; i < layers; i++){
|
||||
drawNoise(noise, col, noisescl * sscl, salpha * opacity, sspeed * baseSpeed, intensity, vwindx, vwindy, offset);
|
||||
sspeed *= layerSpeedM;
|
||||
salpha *= layerAlphaM;
|
||||
sscl *= layerSclM;
|
||||
offset += 0.29f;
|
||||
col.mul(layerColorM);
|
||||
}
|
||||
}
|
||||
|
||||
public static void drawNoise(Texture noise, Color color, float noisescl, float opacity, float baseSpeed, float intensity, float vwindx, float vwindy, float offset){
|
||||
Draw.alpha(opacity);
|
||||
Draw.tint(color);
|
||||
|
||||
float speed = baseSpeed * intensity;
|
||||
float windx = vwindx * speed, windy = vwindy * speed;
|
||||
|
||||
float scale = 1f / noisescl;
|
||||
float scroll = Time.time * scale + offset;
|
||||
Tmp.tr1.texture = noise;
|
||||
Core.camera.bounds(Tmp.r1);
|
||||
Tmp.tr1.set(Tmp.r1.x * scale, Tmp.r1.y * scale, (Tmp.r1.x + Tmp.r1.width) * scale, (Tmp.r1.y + Tmp.r1.height) * scale);
|
||||
Tmp.tr1.scroll(-windx * scroll, -windy * scroll);
|
||||
Draw.rect(Tmp.tr1, Core.camera.position.x, Core.camera.position.y, Core.camera.width, -Core.camera.height);
|
||||
}
|
||||
}
|
||||
@@ -59,7 +59,6 @@ public class Binding{
|
||||
unitCommandRebuild = KeyBind.add("unit_command_rebuild", KeyCode.unset),
|
||||
unitCommandAssist = KeyBind.add("unit_command_assist", KeyCode.unset),
|
||||
unitCommandMine = KeyBind.add("unit_command_mine", KeyCode.unset),
|
||||
unitCommandBoost = KeyBind.add("unit_command_boost", KeyCode.unset),
|
||||
unitCommandEnterPayload = KeyBind.add("unit_command_enter_payload", KeyCode.unset),
|
||||
unitCommandLoadUnits = KeyBind.add("unit_command_load_units", KeyCode.unset),
|
||||
unitCommandLoadBlocks = KeyBind.add("unit_command_load_blocks", KeyCode.unset),
|
||||
@@ -86,7 +85,7 @@ public class Binding{
|
||||
|
||||
zoom = KeyBind.add("zoom", new Axis(KeyCode.scroll), "view"),
|
||||
detachCamera = KeyBind.add("detach_camera", KeyCode.unset),
|
||||
teleportCursor = KeyBind.add("teleport_cusor", KeyCode.unset),
|
||||
teleportCursor = KeyBind.add("teleport_cursor", KeyCode.unset),
|
||||
menu = KeyBind.add("menu", Vars.android ? KeyCode.back : KeyCode.escape),
|
||||
fullscreen = KeyBind.add("fullscreen", KeyCode.f11),
|
||||
pause = KeyBind.add("pause", KeyCode.space),
|
||||
|
||||
@@ -743,7 +743,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
||||
if(player == null || build == null || player.dead()) return;
|
||||
|
||||
//make sure player is allowed to control the building
|
||||
if(net.server() && !netServer.admins.allowAction(player, ActionType.buildSelect, action -> action.tile = build.tile)){
|
||||
if(net.server() && (!state.rules.possessionAllowed && player.bestCore() != build || !netServer.admins.allowAction(player, ActionType.buildSelect, action -> action.tile = build.tile))){
|
||||
throw new ValidateException(player, "Player cannot control a building.");
|
||||
}
|
||||
|
||||
|
||||
@@ -548,7 +548,7 @@ public abstract class SaveVersion extends SaveFileReader{
|
||||
|
||||
for(int i = 0; i < total; i++){
|
||||
byte typeId = stream.readByte();
|
||||
if(typeId < 0 || typeId >= DataAssetType.all.length) throw new IOException("Invalid asset type ID: " + typeId);
|
||||
if(typeId < 0 || typeId >= DataAssetType.all.length) throw new IOException("Invalid asset type ID: " + typeId + ". You are likely loading trying to load a save from a newer version of the game, possibly a beta.");
|
||||
|
||||
String path = stream.readUTF();
|
||||
boolean embedded = stream.readBoolean();
|
||||
|
||||
@@ -38,8 +38,6 @@ public class GlobalVars{
|
||||
private UnlockableContent[][] logicIdToContent;
|
||||
private int[][] contentIdToLogicId;
|
||||
|
||||
public static final Seq<String> soundNames = new Seq<>();
|
||||
|
||||
public void init(){
|
||||
putEntryOnly("sectionProcessor");
|
||||
|
||||
@@ -101,7 +99,6 @@ public class GlobalVars{
|
||||
for(Sound sound : Core.assets.getAll(Sound.class, new Seq<>(Sound.class))){
|
||||
if(sound != Sounds.none && sound.file != null){
|
||||
String name = sound.file.nameWithoutExtension();
|
||||
soundNames.add(name);
|
||||
put("@sfx-" + name, Sounds.getSoundId(sound));
|
||||
}
|
||||
}
|
||||
@@ -303,6 +300,10 @@ public class GlobalVars{
|
||||
}
|
||||
}
|
||||
|
||||
public void remove(String name){
|
||||
vars.remove(name);
|
||||
}
|
||||
|
||||
public LVar put(String name, Object value){
|
||||
return put(name, value, false);
|
||||
}
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
package mindustry.logic;
|
||||
|
||||
import arc.*;
|
||||
import arc.audio.*;
|
||||
import arc.func.*;
|
||||
import arc.graphics.*;
|
||||
import arc.scene.style.*;
|
||||
import arc.scene.ui.*;
|
||||
import arc.scene.ui.layout.*;
|
||||
import arc.struct.*;
|
||||
import arc.util.*;
|
||||
import mindustry.*;
|
||||
import mindustry.annotations.Annotations.*;
|
||||
@@ -2384,11 +2386,20 @@ public class LStatements{
|
||||
table.button(b -> {
|
||||
b.image(Icon.pencilSmall);
|
||||
|
||||
Seq<String> soundNames = new Seq<>();
|
||||
|
||||
for(var entry : Core.assets.getAllEntries(Sound.class, new Seq<>())){
|
||||
if(entry.value != Sounds.none && entry.value.file != null){
|
||||
soundNames.add(Strings.getFileNameWithoutExtension(entry.key));
|
||||
}
|
||||
}
|
||||
soundNames.sort();
|
||||
|
||||
String soundName = id.startsWith("@sfx-") ? id.substring(5) : id;
|
||||
b.clicked(() -> showSelect(b, GlobalVars.soundNames.toArray(String.class), soundName, t -> {
|
||||
b.clicked(() -> showSelect(b, soundNames.toArray(String.class), soundName, t -> {
|
||||
id = "@sfx-" + t;
|
||||
build(table);
|
||||
}, 2, cell -> cell.size(160, 50)));
|
||||
}, 3, cell -> cell.size(170, 50)));
|
||||
}, Styles.logict, () -> {}).size(40).color(table.color).left().padLeft(-1);
|
||||
|
||||
row(table);
|
||||
|
||||
@@ -246,8 +246,6 @@ public class Map implements Comparable<Map>, Publishable{
|
||||
public String toString(){
|
||||
return "Map{" +
|
||||
"file='" + file + '\'' +
|
||||
", custom=" + custom +
|
||||
", tags=" + tags +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ public class SectorSubmissions{
|
||||
register(76, "Tyrant-classZzz", "https://discord.com/channels/391020510269669376/1379926833411391580/1479890094486716499", extreme);
|
||||
register(47, "tinport", "https://discord.com/channels/391020510269669376/1379926802591645820/1481778410018570274", extreme);
|
||||
register(225, "Summi", "https://discord.com/channels/391020510269669376/1379926925719376152/1419026814826709103", extreme);
|
||||
register(111, "enwyz", "https://discord.com/channels/391020510269669376/1379926842659569864/1517216621616169084", extreme);
|
||||
register(111, "enwyz", "https://discord.com/channels/391020510269669376/1379926842659569864/1523343841472675853", eradication);
|
||||
register(176, "wpx", "https://discord.com/channels/391020510269669376/1379926887203213353/1419025548696621209", extreme);
|
||||
register(13, "chocomint", "https://discord.com/channels/391020510269669376/1379926785164312810/1518092246300229677", extreme);
|
||||
register(259, "tinport", "https://discord.com/channels/391020510269669376/1379928048245280871/1381300770866987049", extreme);
|
||||
@@ -41,7 +41,7 @@ public class SectorSubmissions{
|
||||
register(69, "Oct", "https://discord.com/channels/391020510269669376/1379926831326822610/1406230980120940556", high);
|
||||
register(92, "Locla^Glass", "https://discord.com/channels/391020510269669376/1379926835621527615/1484550444369051772", high);
|
||||
register(197, "Hengryton Luck", "https://discord.com/channels/391020510269669376/1379926916911599676/1423257237341863966", extreme);
|
||||
register(67, "Ếch ngồi đáy giếng", "https://discord.com/channels/391020510269669376/1379926828696866898/1389981795386396768", extreme);
|
||||
register(67, "-RosaliaGream-", "https://discord.com/channels/391020510269669376/1379926828696866898/1523254871187521589", eradication);
|
||||
//180 has an alternate submission that may be more appropriate in terms of difficulty: https://discord.com/channels/391020510269669376/1379926889648619580/1411534650412892185
|
||||
register(180, "Locla^Glass", "https://discord.com/channels/391020510269669376/1379926889648619580/1426523800815538178", extreme);
|
||||
register(55, "Amomogus391", "https://discord.com/channels/391020510269669376/1379926823277695189/1478733623829200910", eradication);
|
||||
@@ -50,11 +50,11 @@ public class SectorSubmissions{
|
||||
//191 has several alternate submissions
|
||||
register(191, "tinport", "https://discord.com/channels/391020510269669376/1379926912004001914/1421139764819660884", eradication);
|
||||
//alternate, more difficult submission: https://discord.com/channels/391020510269669376/1379926782966497322/1416145231853781022
|
||||
register(6, "Locla^Glass", "https://discord.com/channels/391020510269669376/1379926782966497322/1516634498307985460", extreme);
|
||||
register(6, "Locla^Glass", "https://discord.com/channels/391020510269669376/1506531529847869590/1522968348575400129", extreme);
|
||||
register(265, "Dem0", "https://discord.com/channels/391020510269669376/1379928052921929891/1450757980206137359", extreme);
|
||||
register(161, "Hengryton Luck", "https://discord.com/channels/391020510269669376/1379926882203730024/1416686287204782217", extreme);
|
||||
register(24, "Stormrider", "https://discord.com/channels/391020510269669376/1379926797042581716/1419213541512187935", eradication);
|
||||
register(263, "Locla^Glass", "https://discord.com/channels/391020510269669376/1379928050010951694/1518065606161862710", eradication);
|
||||
register(24, "Stormrider", "https://discord.com/channels/391020510269669376/1379926797042581716/1419213541512187935", extreme);
|
||||
register(263, "Locla^Glass", "https://discord.com/channels/391020510269669376/1506531529847869590/1522968537256300677", eradication);
|
||||
register(66, "quad", "https://discord.com/channels/391020510269669376/1379926825941078128/1419165493008535706", extreme);
|
||||
register(248, "iqtik123", "https://discord.com/channels/391020510269669376/1379926979129774151/1417864622412922890", high);
|
||||
register(133, "wpx", "https://discord.com/channels/391020510269669376/1379926871227240770/1419018550932279440", extreme);
|
||||
@@ -75,7 +75,7 @@ public class SectorSubmissions{
|
||||
register(242, "cyan", "https://discord.com/channels/391020510269669376/1379926873152164004/1470268689201889464", eradication);
|
||||
register(243, "Jamespire", "https://discord.com/channels/391020510269669376/1379926876457537547/1484013941477609543", eradication);
|
||||
register(247, "Locla^Glass", "https://discord.com/channels/391020510269669376/1379926976361533752/1431827990295220266", eradication);
|
||||
register(245, "Grushashusha", "https://discord.com/channels/391020510269669376/1379926971286290584/1485245072034365462", eradication);
|
||||
register(245, "Grushashusha", "https://discord.com/channels/391020510269669376/1379926971286290584/1523071426033221733", eradication);
|
||||
register(27, "Stormrider", "https://discord.com/channels/391020510269669376/1379926798833287289/1451252137224044722", unreasonable)
|
||||
.showHidden = true;
|
||||
|
||||
|
||||
@@ -68,6 +68,7 @@ public class ClassMap{
|
||||
classes.put("SpaceLiquidBulletType", mindustry.entities.bullet.SpaceLiquidBulletType.class);
|
||||
classes.put("ExplosionEffect", mindustry.entities.effect.ExplosionEffect.class);
|
||||
classes.put("MultiEffect", mindustry.entities.effect.MultiEffect.class);
|
||||
classes.put("NoiseEffect", mindustry.entities.effect.NoiseEffect.class);
|
||||
classes.put("ParticleEffect", mindustry.entities.effect.ParticleEffect.class);
|
||||
classes.put("RadialEffect", mindustry.entities.effect.RadialEffect.class);
|
||||
classes.put("SeqEffect", mindustry.entities.effect.SeqEffect.class);
|
||||
|
||||
@@ -4,6 +4,7 @@ import arc.*;
|
||||
import arc.audio.*;
|
||||
import arc.files.*;
|
||||
import arc.struct.*;
|
||||
import arc.util.*;
|
||||
import mindustry.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.mod.data.*;
|
||||
@@ -14,13 +15,18 @@ public class DataAudioLoader{
|
||||
|
||||
private Seq<Sound> loadedSounds = new Seq<>();
|
||||
private Seq<Music> loadedMusic = new Seq<>();
|
||||
private Seq<String> registered = new Seq<>();
|
||||
private ObjectSet<String> registered = new ObjectSet<>();
|
||||
|
||||
public void load(Seq<SoundAsset> sounds, Seq<MusicAsset> musics){
|
||||
|
||||
int nextSoundId = soundIdOffset + 1;
|
||||
|
||||
for(var asset : sounds){
|
||||
if(registered.contains(prefix + asset.name)){
|
||||
Log.warn("Duplicate audio file: " + asset.name);
|
||||
continue;
|
||||
}
|
||||
|
||||
Fi file = asset.getCacheFile();
|
||||
Sound sound = Vars.headless || file == null ? new Sound() : Sound.createStream(file);
|
||||
loadedSounds.add(sound);
|
||||
@@ -29,11 +35,17 @@ public class DataAudioLoader{
|
||||
|
||||
if(Vars.headless || !Core.audio.initialized() || sound.file == null) continue;
|
||||
|
||||
Vars.logicVars.put("@sfx-" + prefix + asset.name, nextSoundId - 1, false);
|
||||
|
||||
Core.assets.addAsset(prefix + asset.name, Sound.class, sound);
|
||||
registered.add(prefix + asset.name);
|
||||
}
|
||||
|
||||
for(var asset : musics){
|
||||
if(registered.contains(prefix + asset.name)){
|
||||
Log.warn("Duplicate audio file: " + asset.name);
|
||||
continue;
|
||||
}
|
||||
Fi file = asset.getCacheFile();
|
||||
Music music = Vars.headless || file == null ? new Music() : Music.create(file);
|
||||
loadedMusic.add(music);
|
||||
@@ -57,7 +69,11 @@ public class DataAudioLoader{
|
||||
|
||||
if(!Vars.headless){
|
||||
for(String reg : registered){
|
||||
Core.assets.unload(reg);
|
||||
Vars.logicVars.remove("@sfx-" + reg);
|
||||
try{
|
||||
Core.assets.unload(reg);
|
||||
}catch(Exception ignored){ //unloading shouldn't throw an error, but ignore it just in case
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -32,9 +32,9 @@ public class Mods implements Loadable{
|
||||
private static final String[] metaFiles = {"mod.json", "mod.hjson", "plugin.json", "plugin.hjson"};
|
||||
//it would be nice to parse semver and have syntax like "<1.0.5" here, but mods clearly don't use semver and it's an inconsistent mess
|
||||
private static final ObjectSet<String> blacklistedMods = ObjectSet.with(
|
||||
"ui-lib", "braindustry", "schema", "scheme-size:1.0.5", "scheme-size:1.0.4",
|
||||
"scheme-size:1.0.3", "scheme-size:1.0.1", "scheme-size:1.0.0", "scheme-size:1.1.0",
|
||||
"scheme-size:1.0.4.1"
|
||||
"ui-lib", "braindustry", "schema", "scheme-size:1.0.5", "scheme-size:1.0.4", "scheme-size:1.0.3", "scheme-size:1.0.1", "scheme-size:1.0.0", "scheme-size:1.1.0", "scheme-size:1.0.4.1",
|
||||
//new patch API as of build 159 breaks older versions of the patch editor
|
||||
"patch-editor:1.10.1", "patch-editor:1.10.0", "patch-editor:1.9.5", "patch-editor:1.9.4", "patch-editor:1.9.3"
|
||||
);
|
||||
|
||||
private Json json = new Json();
|
||||
|
||||
@@ -36,6 +36,7 @@ public class ArcNetProvider implements NetProvider{
|
||||
|
||||
private static final LZ4SafeDecompressor decompressor = LZ4Factory.fastestInstance().safeDecompressor();
|
||||
private static final LZ4Compressor compressor = LZ4Factory.fastestInstance().fastCompressor();
|
||||
private static final ThreadLocal<Seq<Connection>> writeConnections = Threads.local(Seq::new);
|
||||
|
||||
private volatile int playerLimitCache, packetSpamLimit;
|
||||
private Ratekeeper clientUdpErrorRate = new Ratekeeper();
|
||||
@@ -162,7 +163,7 @@ public class ArcNetProvider implements NetProvider{
|
||||
if(packetSpamLimit > 0 && !k.packetRate.allow(3000, packetSpamLimit)){
|
||||
Log.warn("Blacklisting IP '@' as potential DOS attack - packet spam.", k.address);
|
||||
connection.close(DcReason.closed);
|
||||
netServer.admins.blacklistDos(k.address);
|
||||
k.blacklist();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -329,6 +330,49 @@ public class ArcNetProvider implements NetProvider{
|
||||
return connections;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendAllServer(Object object, Iterable<NetConnection> connections, boolean reliable){
|
||||
//build up list of underlying arcnet connections for faster bulk transfer
|
||||
var cons = writeConnections.get();
|
||||
cons.clear();
|
||||
for(var con : connections){
|
||||
if(con instanceof ArcConnection ac){
|
||||
cons.add(ac.connection);
|
||||
}
|
||||
}
|
||||
|
||||
if(reliable){
|
||||
server.sendToAllTCP(object, cons);
|
||||
}else{
|
||||
server.sendToAllUDP(object, cons);
|
||||
}
|
||||
|
||||
cons.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendAllServer(Object object, boolean reliable){
|
||||
if(reliable){
|
||||
server.sendToAllTCP(object);
|
||||
}else{
|
||||
server.sendToAllUDP(object);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendExceptServer(NetConnection except, Object object, boolean reliable){
|
||||
if(!(except instanceof ArcConnection con)){
|
||||
NetProvider.super.sendExceptServer(except, object, reliable);
|
||||
return;
|
||||
}
|
||||
|
||||
if(reliable){
|
||||
server.sendToAllExceptTCP(con.connection.getID(), object);
|
||||
}else{
|
||||
server.sendToAllExceptUDP(con.connection.getID(), object);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hostServer(int port) throws IOException{
|
||||
connections.clear();
|
||||
@@ -351,7 +395,7 @@ public class ArcNetProvider implements NetProvider{
|
||||
mainExecutor.submit(server::stop);
|
||||
}
|
||||
|
||||
class ArcConnection extends NetConnection{
|
||||
public class ArcConnection extends NetConnection{
|
||||
public final Connection connection;
|
||||
|
||||
long lastErrorTime;
|
||||
@@ -366,6 +410,17 @@ public class ArcNetProvider implements NetProvider{
|
||||
return connection.isConnected();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void blacklist(){
|
||||
//Blacklist TCP address
|
||||
super.blacklist();
|
||||
//Blacklist UDP address
|
||||
var address = connection.getRemoteAddressUDP();
|
||||
if(address != null){
|
||||
netServer.admins.blacklistDos(address.getAddress().getHostAddress());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendStream(Streamable stream){
|
||||
connection.addListener(new InputStreamSender(stream.stream, 1024){
|
||||
@@ -402,8 +457,7 @@ public class ArcNetProvider implements NetProvider{
|
||||
}
|
||||
}
|
||||
}catch(Exception e){
|
||||
Log.err(e);
|
||||
Log.info("Error sending packet. Disconnecting invalid client!");
|
||||
Log.err("Error sending packet. Disconnecting invalid client!", e);
|
||||
connection.close(DcReason.error);
|
||||
|
||||
if(connection.getArbitraryData() instanceof ArcConnection k){
|
||||
|
||||
@@ -243,21 +243,20 @@ public class Net{
|
||||
/** Send an object to all connected clients, or to the server if this is a client.*/
|
||||
public void send(Object object, boolean reliable){
|
||||
if(server){
|
||||
for(NetConnection con : provider.getConnections()){
|
||||
con.send(object, reliable);
|
||||
}
|
||||
provider.sendAllServer(object, reliable);
|
||||
}else{
|
||||
provider.sendClient(object, reliable);
|
||||
}
|
||||
}
|
||||
|
||||
/** Server bulk-send to several clients. */
|
||||
public void send(Object object, Iterable<NetConnection> connections, boolean reliable){
|
||||
provider.sendAllServer(object, connections, reliable);
|
||||
}
|
||||
|
||||
/** Send an object to everyone EXCEPT a certain client. Server-side only.*/
|
||||
public void sendExcept(NetConnection except, Object object, boolean reliable){
|
||||
for(NetConnection con : getConnections()){
|
||||
if(con != except){
|
||||
con.send(object, reliable);
|
||||
}
|
||||
}
|
||||
provider.sendExceptServer(except, object, reliable);
|
||||
}
|
||||
|
||||
public @Nullable StreamBuilder getCurrentStream(){
|
||||
@@ -413,6 +412,30 @@ public class Net{
|
||||
|
||||
/** Networking implementation. */
|
||||
public interface NetProvider{
|
||||
|
||||
/** Sends a packet to a specific list of clients. */
|
||||
default void sendAllServer(Object object, Iterable<NetConnection> connections, boolean reliable){
|
||||
for(NetConnection con : connections){
|
||||
con.send(object, reliable);
|
||||
}
|
||||
}
|
||||
|
||||
/** Sends a packet to all connected clients. */
|
||||
default void sendAllServer(Object object, boolean reliable){
|
||||
for(NetConnection con : getConnections()){
|
||||
con.send(object, reliable);
|
||||
}
|
||||
}
|
||||
|
||||
/** Sends a packet to all connected clients, except the specified one. */
|
||||
default void sendExceptServer(NetConnection except, Object object, boolean reliable){
|
||||
for(NetConnection con : getConnections()){
|
||||
if(con != except){
|
||||
con.send(object, reliable);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Connect to a server. */
|
||||
void connectClient(String ip, int port, Runnable success) throws IOException;
|
||||
|
||||
|
||||
@@ -16,14 +16,11 @@ public abstract class NetConnection{
|
||||
public boolean mobile, modclient;
|
||||
public @Nullable Player player;
|
||||
public boolean kicked = false;
|
||||
public long syncTime;
|
||||
|
||||
/** When this connection was established. */
|
||||
public long connectTime = Time.millis();
|
||||
/** ID of last received client snapshot. */
|
||||
public int lastReceivedClientSnapshot = -1;
|
||||
/** Count of snapshots sent from server. */
|
||||
public int snapshotsSent;
|
||||
/** Timestamp of last received snapshot. */
|
||||
public long lastReceivedClientTime;
|
||||
/** Build requests that have been recently rejected. This is cleared every snapshot. */
|
||||
@@ -32,6 +29,8 @@ public abstract class NetConnection{
|
||||
public Ratekeeper chatRate = new Ratekeeper();
|
||||
/** Handles packet spam rate limits. */
|
||||
public Ratekeeper packetRate = new Ratekeeper();
|
||||
/** Entities that only this player will get synced to them. */
|
||||
public Seq<Syncc> localEntities = new Seq<>(false);
|
||||
|
||||
//TODO: refactor to state enum
|
||||
public boolean hasConnected, hasBegunConnecting, determiningAssets, receivingAssets, hasDisconnected;
|
||||
@@ -129,6 +128,10 @@ public abstract class NetConnection{
|
||||
}
|
||||
}
|
||||
|
||||
public void blacklist(){
|
||||
netServer.admins.blacklistDos(address);
|
||||
}
|
||||
|
||||
public abstract void send(Object object, boolean reliable);
|
||||
|
||||
public abstract void close();
|
||||
|
||||
@@ -12,6 +12,7 @@ import arc.util.noise.*;
|
||||
import mindustry.annotations.Annotations.*;
|
||||
import mindustry.content.*;
|
||||
import mindustry.ctype.*;
|
||||
import mindustry.entities.effect.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.graphics.*;
|
||||
import mindustry.world.*;
|
||||
@@ -235,33 +236,12 @@ public class Weather extends UnlockableContent{
|
||||
}
|
||||
|
||||
public static void drawNoiseLayers(Texture noise, Color color, float noisescl, float opacity, float baseSpeed, float intensity, float vwindx, float vwindy,
|
||||
int layers, float layerSpeedM , float layerAlphaM, float layerSclM, float layerColorM){
|
||||
float sspeed = 1f, sscl = 1f, salpha = 1f, offset = 0f;
|
||||
Color col = Tmp.c1.set(color);
|
||||
for(int i = 0; i < layers; i++){
|
||||
drawNoise(noise, col, noisescl * sscl, salpha * opacity, sspeed * baseSpeed, intensity, vwindx, vwindy, offset);
|
||||
sspeed *= layerSpeedM;
|
||||
salpha *= layerAlphaM;
|
||||
sscl *= layerSclM;
|
||||
offset += 0.29f;
|
||||
col.mul(layerColorM);
|
||||
}
|
||||
int layers, float layerSpeedM, float layerAlphaM, float layerSclM, float layerColorM){
|
||||
NoiseEffect.drawNoiseLayers(noise, color, noisescl, opacity, baseSpeed, intensity, vwindx, vwindy, layers, layerSpeedM, layerAlphaM, layerSclM, layerColorM);
|
||||
}
|
||||
|
||||
public static void drawNoise(Texture noise, Color color, float noisescl, float opacity, float baseSpeed, float intensity, float vwindx, float vwindy, float offset){
|
||||
Draw.alpha(opacity);
|
||||
Draw.tint(color);
|
||||
|
||||
float speed = baseSpeed * intensity;
|
||||
float windx = vwindx * speed, windy = vwindy * speed;
|
||||
|
||||
float scale = 1f / noisescl;
|
||||
float scroll = Time.time * scale + offset;
|
||||
Tmp.tr1.texture = noise;
|
||||
Core.camera.bounds(Tmp.r1);
|
||||
Tmp.tr1.set(Tmp.r1.x*scale, Tmp.r1.y*scale, (Tmp.r1.x + Tmp.r1.width)*scale, (Tmp.r1.y + Tmp.r1.height)*scale);
|
||||
Tmp.tr1.scroll(-windx * scroll, -windy * scroll);
|
||||
Draw.rect(Tmp.tr1, Core.camera.position.x, Core.camera.position.y, Core.camera.width, -Core.camera.height);
|
||||
NoiseEffect.drawNoise(noise, color, noisescl, opacity, baseSpeed, intensity, vwindx, vwindy, offset);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -81,6 +81,7 @@ public class FileChooser{
|
||||
if(fileName == null){
|
||||
fileName = "file." + extensions[0];
|
||||
}
|
||||
fileName = Strings.sanitizeFilename(fileName);
|
||||
}
|
||||
|
||||
/** Submits the request to handle a single file. */
|
||||
|
||||
@@ -200,7 +200,7 @@ public class Menus{
|
||||
}
|
||||
|
||||
//internal use only
|
||||
@Remote
|
||||
@Remote(variants = Variant.both)
|
||||
public static void removeWorldLabel(int id){
|
||||
var label = Groups.label.getByID(id);
|
||||
if(label != null){
|
||||
|
||||
@@ -7,6 +7,7 @@ import arc.scene.ui.*;
|
||||
import arc.scene.ui.layout.*;
|
||||
import arc.struct.*;
|
||||
import arc.util.*;
|
||||
import mindustry.core.UI;
|
||||
import mindustry.ctype.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.graphics.*;
|
||||
@@ -64,7 +65,7 @@ public class ContentInfoDialog extends BaseDialog{
|
||||
table.row();
|
||||
}
|
||||
|
||||
table.add("[lightgray]" + content.displayDescription()).wrap().fillX().padLeft(any ? 10 : 0).width(500f).padTop(any ? 0 : 10).left();
|
||||
table.add("[lightgray]" + UI.formatIcons(content.displayDescription())).wrap().fillX().padLeft(any ? 10 : 0).width(500f).padTop(any ? 0 : 10).left();
|
||||
table.row();
|
||||
|
||||
if(!content.stats.useCategories && any){
|
||||
@@ -100,7 +101,7 @@ public class ContentInfoDialog extends BaseDialog{
|
||||
}
|
||||
|
||||
if(content.details != null){
|
||||
table.add("[gray]" + (content.unlocked() || !content.hideDetails ? content.details : Iconc.lock + " " + Core.bundle.get("unlock.incampaign"))).pad(6).padTop(20).width(400f).wrap().fillX();
|
||||
table.add("[gray]" + (content.unlocked() || !content.hideDetails ? UI.formatIcons(content.details) : Iconc.lock + " " + Core.bundle.get("unlock.incampaign"))).pad(6).padTop(20).width(400f).wrap().fillX();
|
||||
table.row();
|
||||
}
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@ public class CustomRulesDialog extends BaseDialog{
|
||||
var style = Styles.cleart;
|
||||
t.defaults().size(280f, 64f).pad(2f);
|
||||
|
||||
t.button("@waves.copy", Icon.copy, style, () -> {
|
||||
t.button("@copy.clipboard", Icon.copy, style, () -> {
|
||||
ui.showInfoFade("@copied");
|
||||
|
||||
//hack: don't write the spawns, they just waste space
|
||||
@@ -80,7 +80,7 @@ public class CustomRulesDialog extends BaseDialog{
|
||||
dialog.hide();
|
||||
}).marginLeft(12f).row();
|
||||
|
||||
t.button("@waves.load", Icon.download, style, () -> {
|
||||
t.button("@load.clipboard", Icon.download, style, () -> {
|
||||
try{
|
||||
Rules newRules = JsonIO.read(Rules.class, Core.app.getClipboardText());
|
||||
//objectives and spawns are considered to be map-specific; don't use them
|
||||
|
||||
@@ -107,8 +107,11 @@ public class ShockwaveTower extends Block{
|
||||
|
||||
@Override
|
||||
public double sense(LAccess sensor) {
|
||||
if(sensor == LAccess.progress) return reloadCounter / reload;
|
||||
return super.sense(sensor);
|
||||
return switch(sensor){
|
||||
case progress -> reloadCounter / reload;
|
||||
case heat -> heat;
|
||||
default -> super.sense(sensor);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@ public class PowerTurret extends Turret{
|
||||
return switch(sensor){
|
||||
case ammo -> power == null ? 0f : power.status;
|
||||
case ammoCapacity -> 1;
|
||||
case heat -> heatRequirement > 0 ? heat : Float.NaN;
|
||||
default -> super.sense(sensor);
|
||||
};
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import mindustry.*;
|
||||
import mindustry.entities.units.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.graphics.*;
|
||||
import mindustry.logic.*;
|
||||
import mindustry.ui.*;
|
||||
import mindustry.world.*;
|
||||
import mindustry.world.draw.*;
|
||||
@@ -88,6 +89,12 @@ public class HeatConductor extends Block{
|
||||
heat = calculateHeat(sideHeat, cameFrom);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double sense(LAccess sensor){
|
||||
if(sensor == LAccess.heat) return heat;
|
||||
return super.sense(sensor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public float warmup(){
|
||||
return heat;
|
||||
|
||||
@@ -4,6 +4,7 @@ import arc.math.*;
|
||||
import arc.struct.*;
|
||||
import arc.util.io.*;
|
||||
import mindustry.graphics.*;
|
||||
import mindustry.logic.*;
|
||||
import mindustry.ui.*;
|
||||
import mindustry.world.blocks.production.*;
|
||||
import mindustry.world.draw.*;
|
||||
@@ -60,6 +61,12 @@ public class HeatProducer extends GenericCrafter{
|
||||
return heat;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double sense(LAccess sensor){
|
||||
if(sensor == LAccess.heat) return heat;
|
||||
return super.sense(sensor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(Writes write){
|
||||
super.write(write);
|
||||
|
||||
@@ -51,6 +51,7 @@ public class LogicDisplay extends Block{
|
||||
|
||||
public int displaySize = 64;
|
||||
public float scaleFactor = 1f;
|
||||
public Color backgroundColor = Pal.darkerMetal;
|
||||
|
||||
static{
|
||||
Events.on(ResetEvent.class, e -> displays.clear());
|
||||
@@ -134,7 +135,7 @@ public class LogicDisplay extends Block{
|
||||
if(buffer == null){
|
||||
buffer = new FrameBuffer(displaySize, displaySize);
|
||||
//clear the buffer - some OSs leave garbage in it
|
||||
buffer.begin(Pal.darkerMetal);
|
||||
buffer.begin(backgroundColor);
|
||||
buffer.end();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -186,7 +186,7 @@ public class TileableLogicDisplay extends LogicDisplay{
|
||||
Draw.proj(0, 0, root.buffer.width, root.buffer.height);
|
||||
|
||||
//clear the buffer - some OSs leave garbage in it
|
||||
root.buffer.begin(Pal.darkerMetal);
|
||||
root.buffer.begin(backgroundColor);
|
||||
if(root.prevBuffers != null){
|
||||
for(var other : root.prevBuffers){
|
||||
Draw.rect(Draw.wrap(other.buffer.texture), (other.x - originX) * 32 + other.buffer.width / 2f, (other.y - originY) * 32 + other.buffer.height / 2f, other.buffer.width, -other.buffer.height);
|
||||
|
||||
@@ -3,6 +3,7 @@ package mindustry.world.blocks.power;
|
||||
import arc.math.*;
|
||||
import arc.util.io.*;
|
||||
import mindustry.graphics.*;
|
||||
import mindustry.logic.*;
|
||||
import mindustry.ui.*;
|
||||
import mindustry.world.blocks.heat.*;
|
||||
import mindustry.world.draw.*;
|
||||
@@ -62,6 +63,12 @@ public class HeaterGenerator extends ConsumeGenerator{
|
||||
return heat;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double sense(LAccess sensor){
|
||||
if(sensor == LAccess.heat) return heat;
|
||||
return super.sense(sensor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(Writes write){
|
||||
super.write(write);
|
||||
|
||||
@@ -12,6 +12,7 @@ import mindustry.entities.*;
|
||||
import mindustry.entities.effect.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.graphics.*;
|
||||
import mindustry.logic.*;
|
||||
import mindustry.ui.*;
|
||||
import mindustry.world.blocks.heat.*;
|
||||
import mindustry.world.meta.*;
|
||||
@@ -151,6 +152,12 @@ public class VariableReactor extends PowerGenerator{
|
||||
return maxHeat;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double sense(LAccess sensor){
|
||||
if(sensor == LAccess.heat) return heat;
|
||||
return super.sense(sensor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(Writes write){
|
||||
super.write(write);
|
||||
|
||||
@@ -3,6 +3,7 @@ package mindustry.world.blocks.production;
|
||||
import arc.*;
|
||||
import arc.math.*;
|
||||
import mindustry.graphics.*;
|
||||
import mindustry.logic.*;
|
||||
import mindustry.ui.*;
|
||||
import mindustry.world.blocks.heat.*;
|
||||
import mindustry.world.meta.*;
|
||||
@@ -71,6 +72,12 @@ public class HeatCrafter extends GenericCrafter{
|
||||
return Mathf.clamp(heat / heatRequirement);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double sense(LAccess sensor){
|
||||
if(sensor == LAccess.heat) return heat;
|
||||
return super.sense(sensor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public float efficiencyScale(){
|
||||
float over = Math.max(heat - heatRequirement, 0f);
|
||||
|
||||
@@ -12,7 +12,7 @@ import mindustry.world.blocks.production.*;
|
||||
|
||||
/** An implementation of custom rendering behavior for a crafter block.
|
||||
* This is used mostly for mods. */
|
||||
public abstract class DrawBlock{
|
||||
public class DrawBlock{
|
||||
protected static final Rand rand = new Rand();
|
||||
|
||||
/** If set, the icon is overridden to be these strings, in order. Each string is a suffix. */
|
||||
|
||||
+1
-1
@@ -26,4 +26,4 @@ org.gradle.caching=true
|
||||
org.gradle.internal.http.socketTimeout=100000
|
||||
org.gradle.internal.http.connectionTimeout=100000
|
||||
android.enableR8.fullMode=false
|
||||
archash=34ae63d126
|
||||
archash=359e2b01bf
|
||||
|
||||
@@ -249,6 +249,14 @@ tasks.register('updateScripts', JavaExec){
|
||||
workingDir = "../"
|
||||
}
|
||||
|
||||
tasks.register('fixMaps', JavaExec){
|
||||
dependsOn classes
|
||||
mainClass = "mindustry.tools.MapFixer"
|
||||
classpath = sourceSets.main.runtimeClasspath
|
||||
standardInput = System.in
|
||||
workingDir = "../core/assets"
|
||||
}
|
||||
|
||||
tasks.register('updateBundles'){
|
||||
doLast{
|
||||
def uniEscape = { String string ->
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
package mindustry.tools;
|
||||
|
||||
import arc.*;
|
||||
import arc.backend.headless.*;
|
||||
import arc.files.*;
|
||||
import arc.util.*;
|
||||
import mindustry.*;
|
||||
import mindustry.core.*;
|
||||
import mindustry.editor.*;
|
||||
import mindustry.io.*;
|
||||
import mindustry.maps.*;
|
||||
import mindustry.maps.Map;
|
||||
import mindustry.net.*;
|
||||
import mindustry.type.*;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import static mindustry.Vars.*;
|
||||
|
||||
public class MapFixer{
|
||||
|
||||
public static void main(String[] args){
|
||||
Log.useColors = false;
|
||||
|
||||
Reflect.set(Maps.class, "useDefaultFolder", false);
|
||||
Reflect.set(Maps.class, "defaultMapNames", new Fi("maps")
|
||||
.findAll(f -> f.extEquals("msav"))
|
||||
.map(f -> f.path().replace(".msav", "").replace("maps/", "")).toArray(String.class));
|
||||
|
||||
ApplicationCore core = new ApplicationCore(){
|
||||
@Override
|
||||
public void setup(){
|
||||
Core.settings.setDataDirectory(new Fi("../../tools/build/test_data"));
|
||||
Core.bundle = I18NBundle.createBundle(Core.files.internal("bundles/bundle"), Locale.ENGLISH);
|
||||
headless = true;
|
||||
net = new Net(null);
|
||||
tree = new FileTree();
|
||||
Vars.init();
|
||||
world = new World();
|
||||
content.createBaseContent();
|
||||
mods.loadScripts();
|
||||
content.createModContent();
|
||||
|
||||
add(logic = new Logic());
|
||||
add(netServer = new NetServer());
|
||||
|
||||
content.init();
|
||||
editor = new MapEditor();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(){
|
||||
super.init();
|
||||
|
||||
fixMapNames();
|
||||
}
|
||||
};
|
||||
|
||||
new HeadlessApplication(core);
|
||||
}
|
||||
|
||||
static void fixMapNames(){
|
||||
Fi root = Core.files.local("maps");
|
||||
root.walk(f -> {
|
||||
try{
|
||||
Map map = maps.all().find(m -> m.file.absolutePath().equals(f.absolutePath()));
|
||||
if(map == null) return;
|
||||
|
||||
SectorPreset preset = content.sectors().find(s -> s.generator.map.file.absolutePath().equals(f.absolutePath()));
|
||||
if(preset == null) return;
|
||||
|
||||
String targetName = preset.requireUnlock ? preset.localizedName : f.nameWithoutExtension();
|
||||
|
||||
editor.beginEdit(map);
|
||||
|
||||
if(!map.name().equals(targetName)){
|
||||
Log.info("Changed name: '@' -> '@'", map.name(), targetName);
|
||||
map.tags.put("name", targetName);
|
||||
|
||||
MapIO.writeMap(f, map);
|
||||
}
|
||||
}catch(Throwable t){
|
||||
Log.err(t);
|
||||
System.exit(1);
|
||||
}
|
||||
});
|
||||
|
||||
System.exit(0);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user