Compare commits

...
143 Commits
Author SHA1 Message Date
Github Actions b70ea8afd6 Automatic class mapping update 2026-06-17 17:09:10 +00:00
Anuken fe6e3b03ba it works but it's bad 2026-06-17 13:06:59 -04:00
Anuken 0849ed8cfc progress 2026-06-17 13:01:14 -04:00
Anuken 715c099dcc progress 2026-06-17 12:48:04 -04:00
Anuken f9da9a3fe1 progress 2026-06-17 12:47:21 -04:00
Anuken d4449289a8 it actually works 2026-06-17 12:36:28 -04:00
Anuken adaf3112ed progress 2026-06-17 12:18:58 -04:00
Anuken 6524fc07a7 Merge branch 'master' of https://github.com/Anuken/Mindustry into liquid-thread-test 2026-06-17 12:02:25 -04:00
Anuken 54e2c15ae4 Reverted building sleep changes 2026-06-17 11:46:48 -04:00
Anuken 5c224a49b6 progress 2026-06-17 11:45:17 -04:00
Anuken fad7afb97e Minor block optimizations 2026-06-16 17:13:17 -04:00
Anuken d5c78639f3 Minor turret optimization 2026-06-16 16:00:11 -04:00
Anuken b91d26c509 Better PerfCounter average display 2026-06-16 10:54:49 -04:00
Anuken 051a2b6548 Fixed duct/conduit proximity recache 2026-06-15 16:44:07 -04:00
Anuken dfd08a8b69 Boulder shadow rendering fix 2026-06-15 16:25:30 -04:00
Anuken 3f40a4a63d Optimizations for specific Erekir block rendering 2026-06-15 16:21:04 -04:00
Anuken a782e23e57 Optimizations for specific Erekir block rendering 2026-06-15 16:20:56 -04:00
Anuken b74a466157 Duct optimization 2026-06-15 16:03:21 -04:00
Anuken c7e7f7e58c More block rendering optimization 2026-06-15 15:07:18 -04:00
Anuken 760440fd24 Fixed annotation processor warnings 2026-06-15 11:27:18 -04:00
Anuken 856ea50676 Fixed map dialog crash 2026-06-15 11:05:59 -04:00
Anuken dbd90bf843 zoom-out LOD system + bugfixes 2026-06-15 10:20:30 -04:00
Anuken 8daf0a6619 Fixed fog recache 2026-06-15 01:57:36 -04:00
Anuken 6a9d23a2ef Generate icons for content in data patch editor 2026-06-15 01:50:48 -04:00
Anuken 4d3cb54f7e Load sounds on demand (saves ~200mb RAM on startup) 2026-06-14 14:38:12 -04:00
Anuken 22444e2d8e Merge remote-tracking branch 'origin/master' 2026-06-14 08:59:48 -04:00
Anuken 11a2016412 Crash fix 2026-06-14 08:59:42 -04:00
Github Actions 39588af3e4 Automatic bundle update 2026-06-14 06:37:41 +00:00
Anuken 99faf69fca Log errors for failed screenshots 2026-06-14 02:36:19 -04:00
Anuken 0eec03c366 Fixed shielded walls not drawing 2026-06-14 02:18:23 -04:00
Anuken 950e46e360 Crash fix 2026-06-14 02:13:02 -04:00
Anuken 489d3d4777 Merge branch 'static-block-optimization' of https://github.com/Anuken/Mindustry 2026-06-14 02:00:13 -04:00
Anuken 07f17b1538 Mend projector optimization 2026-06-13 23:41:07 -04:00
Anuken f42ba5adc8 More minor fixes 2026-06-13 22:44:23 -04:00
Anuken 6313b5b589 API fix 2026-06-13 22:33:28 -04:00
Anuken 77d15c71cc arc 2026-06-13 22:22:11 -04:00
Anuken 5ffc3aca6a arc 2026-06-13 22:22:03 -04:00
Anuken ffe6d8b356 Merge branch 'master' of https://github.com/Anuken/Mindustry into static-block-optimization 2026-06-13 22:12:43 -04:00
Anuken 13ee5512b2 Fixed insane GC spam in weather rendering 2026-06-13 22:08:52 -04:00
Anuken 3c36fccdf4 Merge remote-tracking branch 'origin/static-block-optimization' into static-block-optimization 2026-06-13 22:02:01 -04:00
Anuken cd626b5718 Fixed a few details 2026-06-13 22:01:56 -04:00
Github Actions a684e5b864 Automatic class mapping update 2026-06-14 01:34:38 +00:00
Anuken e919f0d60a Experimental static drawing optimization 2026-06-13 21:32:29 -04:00
Anuken 35b883c065 Updated some asset-related bundle keys 2026-06-13 10:07:39 -04:00
Anuken fe95be6bd2 Fixed sound assets playing over editor music 2026-06-12 22:50:47 -04:00
Anuken 2bec423fd7 arc 2026-06-12 20:05:03 -04:00
Github Actions 5ddbc7d25e Automatic class mapping update 2026-06-12 23:13:19 +00:00
Anuken 7b829e3c3f Merge remote-tracking branch 'origin/master' 2026-06-12 19:10:51 -04:00
Github Actions e9c0648240 Automatic bundle update 2026-06-12 22:57:47 +00:00
Anuken 8a2b01fb27 Merge remote-tracking branch 'origin/data-patch-assets' into data-patch-assets 2026-06-12 18:56:28 -04:00
Anuken 3fa77d326c Fixed some issues with bundle assets 2026-06-12 18:56:22 -04:00
Github Actions 651886db35 Automatic bundle update 2026-06-12 19:51:56 +00:00
Anuken 0a4e5ca80e Many content asset fixes 2026-06-12 15:50:33 -04:00
Anuken ef6a54580d Merge remote-tracking branch 'origin/data-patch-assets' into data-patch-assets 2026-06-11 18:41:37 -04:00
Anuken ff3907d6f4 File chooser system refactor 2026-06-11 18:41:25 -04:00
Github Actions d36e7e5e45 Automatic bundle update 2026-06-11 02:50:11 +00:00
Anuken e9cb036af1 Merge remote-tracking branch 'origin/data-patch-assets' into data-patch-assets 2026-06-10 22:48:51 -04:00
Anuken ed8fc1fa1b Semi-functional tab for adding/viewing map content 2026-06-10 22:48:45 -04:00
Github Actions c9b1c3f5ff Automatic bundle update 2026-06-10 18:01:50 +00:00
Anuken 3f16c75e06 Merge remote-tracking branch 'origin/data-patch-assets' into data-patch-assets 2026-06-10 14:00:28 -04:00
Anuken 9ab30eda4a Audio asset view, other misc fixes 2026-06-10 14:00:21 -04:00
Github Actions 467327b5b0 Automatic bundle update 2026-06-10 04:27:15 +00:00
Anuken 32da99fcc1 WIP asset view dialog 2026-06-10 00:25:51 -04:00
Anuken 178cd16010 Optimizations that don't even belong in this branch 2026-06-08 23:47:46 -04:00
Anuken 7357cef274 Asset type reordering 2026-06-08 19:04:44 -04:00
Anuken 033e489904 Proper sound icon for settings 2026-06-08 13:26:00 -04:00
Anuken 6de284f6eb Updated font with new icons 2026-06-08 12:52:36 -04:00
Anuken 776c5bcb82 WIP asset view 2026-06-06 16:35:55 -04:00
Anuken 8779326e78 Unit tests 2026-06-04 13:36:44 -04:00
Anuken 4dfa4a2348 Merge remote-tracking branch 'origin/data-patch-assets' into data-patch-assets 2026-06-03 18:26:06 -04:00
Anuken 39cc6cfd6d Misc minor fixes 2026-06-03 18:25:58 -04:00
Github Actions 98ef75a581 Automatic bundle update 2026-06-03 15:55:27 +00:00
Anuken ab69f947ef Merge remote-tracking branch 'origin/data-patch-assets' into data-patch-assets 2026-06-03 11:54:04 -04:00
Anuken a9bc173016 Incremental asset downloading 2026-06-03 11:53:56 -04:00
Github Actions 72181c154d Automatic bundle update 2026-06-03 01:24:40 +00:00
Anuken acc8eda33f Merge remote-tracking branch 'origin/data-patch-assets' into data-patch-assets 2026-06-02 21:23:18 -04:00
Anuken a5ea0ee39e Faster asset transfer & asset transfer loading bar 2026-06-02 21:23:11 -04:00
Github Actions ee44bc3143 Automatic bundle update 2026-06-02 18:38:50 +00:00
Anuken c9106ef256 Merge remote-tracking branch 'origin/data-patch-assets' into data-patch-assets 2026-06-02 14:37:25 -04:00
Anuken d44b9ae317 Various fixes related to content assets 2026-06-02 14:37:01 -04:00
Github Actions dd29c202ef Automatic bundle update 2026-06-01 16:16:17 +00:00
Anuken 1ed80c59fd Embed assets when exporting save 2026-06-01 12:14:53 -04:00
Anuken 17d8aa5dc2 Server embedded asset fix 2026-06-01 02:52:23 -04:00
Anuken dc490696ac WIP: External asset cache 2026-06-01 02:41:25 -04:00
Anuken 8764208045 Merge remote-tracking branch 'origin/data-patch-assets' into data-patch-assets 2026-05-31 15:44:26 -04:00
Anuken 536e460fce Misc data patching fixes 2026-05-31 15:44:19 -04:00
Github Actions b1dc1513e5 Automatic bundle update 2026-05-30 20:23:40 +00:00
Anuken fdef57d38f Server rule file, planet data patch support, logic script class 2026-05-30 16:21:57 -04:00
Anuken e11ada7ef2 Rule/planet/server/logic music playing support 2026-05-30 12:46:28 -04:00
Cardillan 4a925237ae Fix wrong allowed size displayed in an error message (#12151) 2026-05-30 10:34:40 -04:00
Anuken 62ee68679d Better validation for content 2026-05-30 01:16:59 -04:00
Anuken 01d1d3adf0 Actually functional asset addition system 2026-05-29 20:45:06 -04:00
Anuken 67c9b2d276 WIP data patch asset system 2026-05-29 17:07:52 -04:00
Github Actions eae56c4230 Automatic bundle update 2026-05-29 15:55:16 +00:00
EggleEggandAnuken d02fcfad46 Display 10/s movespeed in conveyor instead of 11/s (#11978)
* Display 10/s movespeed in conveyor instead of 11/s

* Apply suggestions from code review

Co-authored-by: Anuken <arnukren@gmail.com>

---------

Co-authored-by: Anuken <arnukren@gmail.com>
2026-05-29 11:53:41 -04:00
EggleEgg 317fef8887 Hide enemy spawns instead of show enemy spawns (#12093)
* Hide enemy spawns instead of show enemy spawns

* hidespawns not hidepawns smh

* remove old stupid comment from pull
2026-05-29 11:52:29 -04:00
zvenios 7ecec5548e Remove flare from units.omura.description in bundles (#12136) 2026-05-29 11:48:37 -04:00
Anuken f42b6d58ec Merge remote-tracking branch 'origin/master' 2026-05-29 11:39:57 -04:00
Anuken bce8c14efb Fixed #12131 2026-05-29 11:39:51 -04:00
Github Actions c68ca5ee87 Automatic class mapping update 2026-05-29 15:12:43 +00:00
Anuken 8e21f0a113 Fixed #12140 2026-05-29 11:10:41 -04:00
Anuken 03dc7b0ac5 Merge remote-tracking branch 'origin/master' 2026-05-29 10:53:04 -04:00
Anuken 5afb043fb2 Fixed #12127 2026-05-29 10:52:58 -04:00
Space 389b748395 Fixed issue(ammoParts don't work if parts.size == 0) (#12144) 2026-05-29 10:44:02 -04:00
Github Actions 6103e5b664 Automatic bundle update 2026-05-29 03:18:57 +00:00
Anuken ac10d2b082 Objective text for unit factories activating 2026-05-28 23:17:36 -04:00
Anuken 47c398f744 Triggering CI 2026-05-28 13:39:16 -04:00
Anuken b192b13250 Fixed assets jar + added CI scripts for it 2026-05-28 13:36:15 -04:00
Anuken ae0c0966d3 arc 2026-05-28 11:51:45 -04:00
Anuken a1330c444c arc 2026-05-28 11:13:31 -04:00
Anuken f4f7f3cc1d Target java 17 for annotations subproject 2026-05-28 11:04:35 -04:00
Anuken 8927383d7b Merge remote-tracking branch 'origin/master' 2026-05-27 16:50:06 -04:00
Anuken 506647e70b Server jline support 2026-05-27 16:50:00 -04:00
Github Actions ed9ad45332 Automatic bundle update 2026-05-27 20:29:17 +00:00
Anuken 07ded59fb8 Merge remote-tracking branch 'origin/master' 2026-05-27 16:28:01 -04:00
Anuken c2e1e97862 Show message when no files are imported 2026-05-27 16:27:35 -04:00
Anuken 66257c15af RoboVM compilation fix 2026-05-27 16:15:42 -04:00
Anuken d6ecbcdf11 Triggering build CI 2026-05-27 15:37:39 -04:00
Anuken 52da06729b Upgrading to Java 17 target without jabel (seeing if CI fails) 2026-05-27 15:30:19 -04:00
Anuken c04a67bc85 Use STB-based image reading for pixmaps in patch images 2026-05-27 15:17:19 -04:00
Anuken 47a477dedd Merge remote-tracking branch 'origin/master' 2026-05-27 14:53:34 -04:00
Anuken 45ae083eea Removed unused sprite 2026-05-27 14:53:04 -04:00
Anuken 4040d1995a Merge branch 'data-patch-images' of https://github.com/Anuken/Mindustry
# Conflicts:
#	core/assets/bundles/bundle_cs.properties
2026-05-27 14:52:19 -04:00
Anuken a620647376 Data patch save format changes 2026-05-27 14:50:59 -04:00
Anuken 3d970138ca Merge remote-tracking branch 'origin/data-patch-images' into data-patch-images 2026-05-27 10:08:15 -04:00
Anuken 385c147975 Minor structural refactoring 2026-05-27 10:08:04 -04:00
Github Actions 29f67110be Automatic bundle update 2026-05-26 20:47:10 +00:00
Anuken 0eb8dd5170 Data patch image dialog 2026-05-26 16:45:40 -04:00
Anuken 3b85f6a499 Fixed previews 2026-05-26 13:25:52 -04:00
Anuken b907b839bf Full data patch image support 2026-05-26 11:57:51 -04:00
Anuken 16fb1154ef WIP data patch image support 2026-05-25 23:20:14 -04:00
zvenios c4622772f8 Update omura bundle_ru.properties (#12126) 2026-05-25 19:51:35 -04:00
WarmWooly c994662b97 Bugfix: Held items turn into ghost copper when respawning (#12121)
* unitClear(): droppingItem = false

* Undone change (wrong file!)

* droppingItem = false (desktop respawn)

* droppingItem = false (mobile respawn)
2026-05-25 19:46:28 -04:00
Anuken 017b6e86f7 Fixed #12124 2026-05-25 19:45:28 -04:00
EggleEgg a86146faa2 Bugfix: Md timeToArrive not accounting for timescale in bullet (#12117) 2026-05-25 01:28:59 -04:00
Anuken 05b2ecd4eb Fixed #12112 2026-05-24 20:09:08 -04:00
Anuken 430a4ce59e Fixed #12113 2026-05-24 20:03:57 -04:00
Anuken 4fff0f9af7 Better status effect display 2026-05-24 19:49:17 -04:00
Anuken e830e65247 Merge remote-tracking branch 'origin/master' 2026-05-24 16:07:27 -04:00
Anuken 990fe2bdf8 Display shields stacked on health for payload units 2026-05-24 16:07:17 -04:00
Anuken 0358038b71 Revert "Added shield health bar when commanding a shielded unit. (#12043)"
This reverts commit 7b541c72c9.
2026-05-24 15:54:36 -04:00
IYanHuaandAnuken 9ad195b68b Fixed the issue where pop-ups left after logging out of the server could not be closed. (#12111)
* Fixed the issue where pop-ups left after logging out of the server could not be closed.

* Apply suggestion from @Anuken

---------

Co-authored-by: Anuken <arnukren@gmail.com>
2026-05-23 23:49:55 -04:00
Anuken 5911a7a0f5 WIP data patcher IO changes 2026-05-18 21:06:28 -04:00
260 changed files with 9495 additions and 2019 deletions
+9 -1
View File
@@ -50,7 +50,7 @@ jobs:
cd ../Mindustry
- name: Create artifacts
run: |
./gradlew desktop:dist server:dist core:depsJar core:mergedJavadoc -Pbuildversion=${RELEASE_VERSION:1}
./gradlew desktop:dist server:dist core:depsJar core:assetsJar core:mergedJavadoc -Pbuildversion=${RELEASE_VERSION:1}
- name: Update docs
run: |
cd ../
@@ -97,3 +97,11 @@ jobs:
file: core/build/libs/core-release-deps.jar
asset_name: dependencies.jar
tag: ${{ github.ref }}
- name: Upload assets JAR
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: core/build/libs/core-release-assets.jar
asset_name: assets.jar
tag: ${{ github.ref }}
+2 -2
View File
@@ -75,8 +75,8 @@ android{
}
compileOptions{
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
flavorDimensions = ["google"]
@@ -5,20 +5,22 @@ import android.app.*;
import android.content.*;
import android.content.pm.*;
import android.net.*;
import android.os.Build.*;
import android.os.*;
import android.os.Build.*;
import android.telephony.*;
import arc.*;
import arc.backend.android.*;
import arc.files.*;
import arc.func.*;
import arc.scene.ui.layout.*;
import arc.struct.*;
import arc.util.*;
import dalvik.system.*;
import mindustry.*;
import mindustry.game.Saves.*;
import mindustry.io.*;
import mindustry.net.*;
import mindustry.ui.*;
import mindustry.ui.FileChooser.*;
import mindustry.ui.dialogs.*;
import java.io.*;
@@ -30,7 +32,7 @@ import static mindustry.Vars.*;
public class AndroidLauncher extends AndroidApplication{
public static final int PERMISSION_REQUEST_CODE = 1;
boolean doubleScaleTablets = true;
FileChooser chooser;
FileChooserDialog chooser;
Runnable permCallback;
@Override
@@ -97,8 +99,7 @@ public class AndroidLauncher extends AndroidApplication{
}
};
}catch(SecurityException e){
//`setReadOnly` to jar file in `/sdcard/Android/data/...` does not work on some Android 14 device
//But in `/data/...` it works
//`setReadOnly` to jar file in `/sdcard/Android/data/...` does not work on some Android 14 devices, but in `/data/...`, it does
if(Build.VERSION.SDK_INT < VERSION_CODES.O_MR1){
throw e;
@@ -127,27 +128,34 @@ public class AndroidLauncher extends AndroidApplication{
}
@Override
public void showFileChooser(boolean open, String title, String extension, Cons<Fi> cons){
showFileChooser(open, title, cons, extension);
}
void showFileChooser(boolean open, String title, Cons<Fi> cons, String... extensions){
public void showFileChooser(FileChooserParams params){
try{
String extension = extensions[0];
String extension = params.extensions[0];
if(VERSION.SDK_INT >= VERSION_CODES.Q){
Intent intent = new Intent(open ? Intent.ACTION_OPEN_DOCUMENT : Intent.ACTION_CREATE_DOCUMENT);
Intent intent = new Intent(params.open ? Intent.ACTION_OPEN_DOCUMENT : Intent.ACTION_CREATE_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType(extension.equals("zip") && !open && extensions.length == 1 ? "application/zip" : "*/*");
intent.putExtra(Intent.EXTRA_TITLE, "export." + extension);
intent.setType(extension.equals("zip") && !params.open && params.extensions.length == 1 ? "application/zip" : "*/*");
intent.putExtra(Intent.EXTRA_TITLE, params.fileName);
if(params.allowMultiple){
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
}
addResultListener(i -> startActivityForResult(intent, i), (code, in) -> {
if(code == Activity.RESULT_OK && in != null && in.getData() != null){
Uri uri = in.getData();
Uri[] uris;
if(in.getClipData() != null){
uris = new Uri[in.getClipData().getItemCount()];
for(int i = 0; i < uris.length; i++){
uris[i] = in.getClipData().getItemAt(i).getUri();
}
}else{
uris = new Uri[]{in.getData()};
}
if(uri.getPath().contains("(invalid)")) return;
if(uris.length == 0 || uris[0].getPath().contains("(invalid)")) return;
Core.app.post(() -> Core.app.post(() -> cons.get(new Fi(uri.getPath()){
Fi[] files = Seq.with(uris).map(uri -> new Fi(uri.getPath()){
@Override
public InputStream read(){
try{
@@ -165,18 +173,14 @@ public class AndroidLauncher extends AndroidApplication{
throw new ArcRuntimeException(e);
}
}
})));
}).toArray(Fi.class);
Core.app.post(() -> Core.app.post(() -> params.handleChooseResult(files)));
}
});
}else if(VERSION.SDK_INT >= VERSION_CODES.M && !(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED &&
checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)){
chooser = new FileChooser(title, file -> Structs.contains(extensions, file.extension().toLowerCase()), open, file -> {
if(!open){
cons.get(file.parent().child(file.nameWithoutExtension() + "." + extension));
}else{
cons.get(file);
}
});
chooser = FileChooser.createFallbackFileChooser(params);
ArrayList<String> perms = new ArrayList<>();
if(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
@@ -187,22 +191,13 @@ public class AndroidLauncher extends AndroidApplication{
}
requestPermissions(perms.toArray(new String[0]), PERMISSION_REQUEST_CODE);
}else{
if(open){
new FileChooser(title, file -> Structs.contains(extensions, file.extension().toLowerCase()), true, cons).show();
}else{
super.showFileChooser(open, "@open", extension, cons);
}
FileChooser.showFallbackFileChooser(params);
}
}catch(Throwable error){
Core.app.post(() -> Vars.ui.showException(error));
}
}
@Override
public void showMultiFileChooser(Cons<Fi> cons, String... extensions){
showFileChooser(true, "@open", cons, extensions);
}
@Override
public void beginForceLandscape(){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
@@ -235,7 +230,6 @@ public class AndroidLauncher extends AndroidApplication{
Log.err("Failed to delete cached folder", t);
}
//move to internal storage if there's no file indicating that it moved
if(!Core.files.local("files_moved").exists()){
Log.info("Moving files to external storage...");
@@ -88,6 +88,7 @@ public class Annotations{
boolean collide() default false;
boolean spatial() default false;
boolean mapping() default false;
boolean update() default false;
}
/** Indicates an entity definition. */
@@ -107,6 +108,8 @@ public class Annotations{
boolean genio() default true;
/** Whether I made a massive mistake by merging two different class branches */
boolean legacy() default false;
/** Groups to exclude. */
String[] excludeGroups() default {};
}
/** Indicates an internal interface for entity components. */
@@ -232,7 +232,7 @@ public abstract class BaseProcessor extends AbstractProcessor{
@Override
public SourceVersion getSupportedSourceVersion(){
return SourceVersion.RELEASE_8;
return SourceVersion.RELEASE_17;
}
public void process(RoundEnvironment env) throws Exception{
@@ -242,7 +242,7 @@ public class EntityProcess extends BaseProcessor{
boolean collides = an.collide();
groupDefs.add(new GroupDefinition(name,
ClassName.bestGuess(packageName + "." + groupType), types, an.spatial(), an.mapping(), collides));
ClassName.bestGuess(packageName + "." + groupType), types, an.spatial(), an.mapping(), collides, an.update()));
TypeSpec.Builder accessor = TypeSpec.interfaceBuilder("IndexableEntity__" + name);
accessor.addMethod(MethodSpec.methodBuilder("setIndex__" + name).addModifiers(Modifier.ABSTRACT, Modifier.PUBLIC).addParameter(int.class, "index").returns(void.class).build());
@@ -258,7 +258,7 @@ public class EntityProcess extends BaseProcessor{
//all component classes (not interfaces)
Seq<Stype> components = allComponents(type);
Seq<GroupDefinition> groups = groupDefs.select(g -> (!g.components.isEmpty() && !g.components.contains(s -> !components.contains(s))) || g.manualInclusions.contains(type));
Seq<GroupDefinition> groups = groupDefs.select(g -> (!g.components.isEmpty() && !Structs.contains(ann.excludeGroups(), g.name) && !g.components.contains(s -> !components.contains(s))) || g.manualInclusions.contains(type));
ObjectMap<String, Seq<Smethod>> methods = new ObjectMap<>();
ObjectMap<FieldSpec, Svar> specVariables = new ObjectMap<>();
ObjectSet<String> usedFields = new ObjectSet<>();
@@ -700,7 +700,11 @@ public class EntityProcess extends BaseProcessor{
}
}
groupUpdate.addStatement("all.update()");
for(GroupDefinition group : groupDefs){
if(group.updates){
groupUpdate.addStatement("$L.update()", group.name);
}
}
for(GroupDefinition group : groupDefs){
if(group.collides){
@@ -985,16 +989,17 @@ public class EntityProcess extends BaseProcessor{
final String name;
final ClassName baseType;
final Seq<Stype> components;
final boolean spatial, mapping, collides;
final boolean spatial, mapping, collides, updates;
final ObjectSet<Selement> manualInclusions = new ObjectSet<>();
public GroupDefinition(String name, ClassName bestType, Seq<Stype> components, boolean spatial, boolean mapping, boolean collides){
public GroupDefinition(String name, ClassName bestType, Seq<Stype> components, boolean spatial, boolean mapping, boolean collides, boolean updates){
this.baseType = bestType;
this.components = components;
this.name = name;
this.spatial = spatial;
this.mapping = mapping;
this.collides = collides;
this.updates = updates;
}
@Override
@@ -142,6 +142,19 @@ public class AssetsProcess extends BaseProcessor{
.addParameter(int.class, "id")
.returns(Sound.class)
.addStatement("return (Sound)idToSound.get(id, () -> Sounds.none)").build());
type.addMethod(MethodSpec.methodBuilder("registerSound")
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
.addParameter(Sound.class, "sound")
.addParameter(int.class, "id")
.returns(void.class)
.addStatement("idToSound.put(id, sound); soundToId.put(sound, id);").build());
type.addMethod(MethodSpec.methodBuilder("unregisterSound")
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
.addParameter(Sound.class, "sound")
.returns(void.class)
.addStatement("int id = soundToId.get(sound); if(id != 0){ soundToId.remove(sound); idToSound.remove(id); }").build());
}
HashSet<String> names = new HashSet<>();
+36 -14
View File
@@ -193,7 +193,7 @@ allprojects{
}
tasks.withType(JavaCompile){
targetCompatibility = 8
targetCompatibility = JavaVersion.VERSION_17
sourceCompatibility = JavaVersion.VERSION_17
options.encoding = "UTF-8"
options.compilerArgs += ["-Xlint:deprecation"]
@@ -214,16 +214,32 @@ allprojects{
configure(project(":annotations")){
tasks.withType(JavaCompile){
targetCompatibility = 8
sourceCompatibility = 8
targetCompatibility = JavaVersion.VERSION_17
sourceCompatibility = JavaVersion.VERSION_17
options.fork = true
options.compilerArgs.addAll([
"--add-exports", "jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED",
"--add-exports", "jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED",
"--add-exports", "jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED",
"--add-exports", "jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED",
"--add-exports", "jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED",
"--add-exports", "jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED",
"--add-exports", "jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED",
"--add-exports", "jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED",
"--add-exports", "jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED",
"--add-exports", "jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED",
"--add-exports", "jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED",
"--add-exports", "jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED",
"--add-exports", "java.base/sun.reflect.annotation=ALL-UNNAMED"
])
}
}
//compile with java 8 compatibility for everything except the annotation project
configure(subprojects - project(":annotations") - project(":tests")){
tasks.withType(JavaCompile){
options.compilerArgs.addAll(['--release', '8'])
options.compilerArgs.addAll(['--release', '17'])
}
tasks.withType(Javadoc){
@@ -254,7 +270,6 @@ project(":desktop"){
implementation "com.github.Anuken:steamworks4j:$steamworksVersion"
implementation arcModule("backends:backend-sdl")
annotationProcessor 'com.github.Anuken:jabel:0.9.0'
}
}
@@ -266,7 +281,7 @@ project(":core"){
kapt{
javacOptions{
option("-source", "17")
option("-target", "1.8")
option("-target", "17")
}
}
@@ -330,17 +345,26 @@ project(":core"){
from sourceSets.main.allSource
}
task assetsJar(type: Jar, dependsOn: ":tools:pack"){
task assetsJar(type: Jar){
archiveClassifier = 'assets'
from files("assets"){
exclude "config", "cache", "music", "sounds", "sprites/fallback"
into('assets'){
from 'assets'
exclude 'config', 'cache', 'music', 'sounds', 'sprites/fallback'
}
into('assets-raw/sprites'){
from 'assets-raw/sprites_out'
include '**/*.png'
}
}
task musicJar(type: Jar){
archiveClassifier = 'music'
from files("assets"){
include "music/*", "sounds/*"
into('assets'){
from 'assets'
include '**/*.ogg', '**/*.mp3'
}
}
@@ -358,7 +382,6 @@ project(":core"){
if(localArc && debugged()) api arcModule("extensions:recorder")
if(localArc) api arcModule(":extensions:packer")
annotationProcessor 'com.github.Anuken:jabel:0.9.0'
compileOnly project(":annotations")
if(!project.hasProperty("noKapt")) kapt project(":annotations")
}
@@ -403,7 +426,7 @@ project(":server"){
dependencies{
implementation project(":core")
implementation arcModule("backends:backend-headless")
annotationProcessor 'com.github.Anuken:jabel:0.9.0'
implementation 'org.jline:jline:4.0.0'
}
}
@@ -450,7 +473,6 @@ project(":tools"){
implementation arcModule("backends:backend-headless")
implementation("com.google.guava:guava:33.3.1-jre")
annotationProcessor 'com.github.Anuken:jabel:0.9.0'
}
}
+181 -7
View File
@@ -308,12 +308,6 @@
"discord-logo-white"
]
},
{
"uid": "dd6df3b754e8d0dbf09d9b24088f0442",
"css": "box",
"code": 59422,
"src": "iconic"
},
{
"uid": "f08ba9f0e8f9b426a92efcaa59c1e932",
"css": "reddit-alien",
@@ -1083,6 +1077,186 @@
"search": [
"arrow-note"
]
},
{
"uid": "9ea0a737ccc45d6c510dcbae56058849",
"css": "music",
"code": 59402,
"src": "fontawesome"
},
{
"uid": "81db033e704eb7c586a365559d7c0f36",
"css": "file-audio",
"code": 61895,
"src": "fontawesome"
},
{
"uid": "e44601720c64e6bb6a2d5cba6b0c588c",
"css": "volume-off",
"code": 59404,
"src": "fontawesome"
},
{
"uid": "fee6e00f36e8ca8ef3e4a62caa213bf6",
"css": "volume-down",
"code": 59423,
"src": "fontawesome"
},
{
"uid": "76857a03fbaa6857fe063b6c25aa98ed",
"css": "volume-up",
"code": 59424,
"src": "fontawesome"
},
{
"uid": "3db5347bd219f3bce6025780f5d9ef45",
"css": "tag",
"code": 59425,
"src": "fontawesome"
},
{
"uid": "a3f89e106175a5c5c4e9738870b12e55",
"css": "tags",
"code": 59432,
"src": "fontawesome"
},
{
"uid": "69bd9dfe950d07d910f39c6988364e49",
"css": "battery-4",
"code": 62016,
"src": "fontawesome"
},
{
"uid": "7ab4ec24078133effbc4e923b65ef835",
"css": "battery-3",
"code": 62017,
"src": "fontawesome"
},
{
"uid": "e430a168b45ba40aa988ca1a5034a553",
"css": "battery-2",
"code": 62018,
"src": "fontawesome"
},
{
"uid": "99f4ea74adc24022106932d84a49b055",
"css": "battery-1",
"code": 62019,
"src": "fontawesome"
},
{
"uid": "9983d2489e028d659d196915a25ef3ca",
"css": "battery-0",
"code": 62020,
"src": "fontawesome"
},
{
"uid": "26613a2e6bc41593c54bead46f8c8ee3",
"css": "file-code",
"code": 61897,
"src": "fontawesome"
},
{
"uid": "dd69d9aa589ea7bc0a82a3fe67039f4b",
"css": "file-video",
"code": 61896,
"src": "fontawesome"
},
{
"uid": "e80ae555c1413a4ec18b33fb348b4049",
"css": "file-archive",
"code": 61894,
"src": "fontawesome"
},
{
"uid": "c95735c17a10af81448c7fed98a04546",
"css": "folder-open",
"code": 59438,
"src": "fontawesome"
},
{
"uid": "b091a8bd0fdade174951f17d936f51e4",
"css": "folder-empty",
"code": 61716,
"src": "fontawesome"
},
{
"uid": "6533bdc16ab201eb3f3b27ce989cab33",
"css": "folder-open-empty",
"code": 61717,
"src": "fontawesome"
},
{
"uid": "c7a75a25880928fe76981a53eca4f926",
"css": "inbox",
"code": 59439,
"src": "fontawesome"
},
{
"uid": "6fe95ffc3c807e62647d4f814a96e0d7",
"css": "sitemap",
"code": 61672,
"src": "fontawesome"
},
{
"uid": "2c413e78faf1d6631fd7b094d14c2253",
"css": "cloud",
"code": 59441,
"src": "fontawesome"
},
{
"uid": "de2fc7a5c986ab8c622f63455d7cf814",
"css": "upload-cloud",
"code": 61678,
"src": "fontawesome"
},
{
"uid": "f5999a012fc3752386635ec02a858447",
"css": "download-cloud",
"code": 61677,
"src": "fontawesome"
},
{
"uid": "e7a4824e79002c2d8ce3047b2da8b5a2",
"css": "rain",
"code": 59442,
"src": "typicons"
},
{
"uid": "ac10a3a3077eab1b9d66509eb25fb9b4",
"css": "cloud-sun",
"code": 59448,
"src": "typicons"
},
{
"uid": "6f200a5a449259c51cd0ccf56b4c1e93",
"css": "drizzle",
"code": 59452,
"src": "typicons"
},
{
"uid": "3cac7625657b10cf706e7f332749c912",
"css": "cloud-flash",
"code": 59456,
"src": "typicons"
},
{
"uid": "364cc69fb3edb8fb21caa6a2c0489589",
"css": "cloud-wind",
"code": 59457,
"src": "typicons"
},
{
"uid": "cc05df515bebe11df3ada0a5910a8f6d",
"css": "box",
"code": 59422,
"src": "entypo"
},
{
"uid": "d5f287ad8e3a2db8f808bc09980ec3dc",
"css": "chart-alt",
"code": 59459,
"src": "typicons"
}
]
}
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 751 B

After

Width:  |  Height:  |  Size: 393 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 468 B

After

Width:  |  Height:  |  Size: 428 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 633 B

After

Width:  |  Height:  |  Size: 505 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 426 B

After

Width:  |  Height:  |  Size: 425 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 B

After

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 B

After

Width:  |  Height:  |  Size: 251 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 359 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 364 B

After

Width:  |  Height:  |  Size: 400 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 442 B

After

Width:  |  Height:  |  Size: 403 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 560 B

After

Width:  |  Height:  |  Size: 424 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 413 B

After

Width:  |  Height:  |  Size: 405 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1010 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 244 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

+96 -17
View File
@@ -19,6 +19,7 @@ clipboardcopy = This server wants to copy text to your clipboard. Are you sure y
linkfail = Failed to open link!\nThe URL has been copied to your clipboard.
screenshot = Screenshot saved to {0}
screenshot.invalid = Map too large, potentially not enough memory for screenshot.
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = Game Over
gameover.disconnect = Disconnect
gameover.pvp = The[accent] {0}[] team is victorious!
@@ -57,6 +58,13 @@ mods.github.open-release = Release Page
mods.browser.sortdate = Sort by recent
mods.browser.sortstars = Sort by stars
export.file = Export File
import.file = Import File
copy.clipboard = Copy to Clipboard
import.clipboard = Import from Clipboard
workshop.browse = Browse Workshop
workshop.share = Share on Workshop
schematic = Schematic
schematic.add = Save Schematic...
schematics = Schematics
@@ -64,12 +72,6 @@ schematic.search = Search schematics...
schematic.replace = A schematic by that name already exists. Replace it?
schematic.exists = A schematic by that name already exists.
schematic.import = Import Schematic...
schematic.exportfile = Export File
schematic.importfile = Import File
schematic.browseworkshop = Browse Workshop
schematic.copy = Copy to Clipboard
schematic.copy.import = Import from Clipboard
schematic.shareworkshop = Share on Workshop
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic
schematic.saved = Schematic saved.
schematic.delete.confirm = This schematic will be utterly eradicated.
@@ -177,6 +179,7 @@ mod.incompletedependencies.details = This mod is unable to be loaded due to inva
mod.requiresversion = Requires game version: [red]{0}
mod.errors = Errors have occurred loading content.
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 = [red]You have mods with errors.[] Either disable the affected mods or fix the errors before playing.
mod.enable = Enable
mod.requiresrestart = The game will now close to apply the mod changes.
@@ -329,7 +332,12 @@ disconnect.snapshottimeout = Timed out while receiving UDP snapshots.\nThis may
cantconnect = Unable to join game ([accent]{0}[]).
connecting = [accent]Connecting...
reconnecting = [accent]Reconnecting...
connecting.data = [accent]Loading world data...
connecting.establish = [accent]Establishing connection...
receiving.world = [accent]Receiving world data ({0})...
receiving.assets = [accent]Receiving assets ({0})...
receiving.assets.fail = I/O error occurred while receiving assets.
server.port = Port:
server.invalidport = Invalid port number!
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!
@@ -346,6 +354,13 @@ save.export = Export Save
save.import.invalid = [accent]This save is invalid!
save.import.fail = [scarlet]Failed to import save: [accent]{0}
save.export.fail = [scarlet]Failed to export save: [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.import = Import Save
save.newslot = Save name:
save.rename = Rename
@@ -481,14 +496,6 @@ editor.rules = Rules
editor.generation = Generation
editor.objectives = Objectives
editor.locales = Locale Bundles
editor.patches.guide = Patch Guide
editor.patches = Data Patches
editor.patch = Patchset: {0}
editor.patches.none = [lightgray]No patchsets loaded.
editor.patches.errors = Patchset Errors
editor.patches.importerror = Failed to import patchset
editor.patches.delete.confirm = Are you sure you want to delete this patchset?
editor.patch.fields = {0} fields
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.
@@ -513,6 +520,75 @@ editor.filters.prioritizecustom = Custom Priority
editor.filters.planetselect = Planet Selection
editor.shiftx = Shift X
editor.shifty = Shift Y
asset.patch = Patches
asset.content = Content
asset.bundle = Translation Bundles
asset.image = Images
asset.sound = Sounds
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Data Patches
patch.set = Patchset: {0}
patch.none = [lightgray]No patchsets found.
patch.errors = Patchset Errors
patch.importerror = Failed to import patchset
patch.delete.confirm = Are you sure you want to delete this patchset?
patch.path = Path:
patch.fields = {0} fields
bundle.lines = {0} lines
images = Images
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 Image Zip
asset.image.exportzip = Export Image 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.
workshop = Workshop
waves.title = Waves
waves.team = Team
@@ -531,7 +607,6 @@ waves.spawn.first = [lightgray](first {0})
waves.max = max units
waves.guardian = Guardian
waves.preview = Preview
waves.edit = Edit...
waves.random = Random
waves.copy = Copy to Clipboard
waves.load = Load from Clipboard
@@ -558,6 +633,7 @@ all = All
editor.default = [lightgray]<Default>
details = Details...
edit = Edit
edit.menu = Edit...
variables = Vars
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?
@@ -1070,6 +1146,7 @@ stat.targetsground = Targets Ground
stat.crushdamage = Crush Damage
stat.legsplashdamage = Leg Splash Damage
stat.itemsmoved = Move Speed
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = Time Between Launches
stat.shootrange = Range
stat.size = Size
@@ -1547,6 +1624,7 @@ rules.enemyCheat = Infinite Enemy Team Resources
rules.blockhealthmultiplier = Block Health Multiplier
rules.blockdamagemultiplier = Block Damage Multiplier
rules.unitfactoryactivation = Unit Factory Activation Delay
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = Unit Production Speed Multiplier
rules.unitcostmultiplier = Unit Cost Multiplier
rules.unithealthmultiplier = Unit Health Multiplier
@@ -1588,7 +1666,7 @@ rules.invasions = Enemy Sector Invasions
rules.legacylaunchpads = Legacy Launch Pad Mechanics
rules.legacylaunchpads.info = Allows using launch pads without landing pads, as in 7.0.
landingpad.legacy.disabled = [scarlet]\ue815 Disabled[lightgray] (Legacy Launch Pads enabled)
rules.showspawns = Show Enemy Spawns
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = Unpredictable Wave AI
rules.pauseDisabled = Disable Pausing
rules.fire = Fire
@@ -2693,6 +2771,7 @@ lst.setprop = Sets a property of a unit or building.
lst.effect = Create a particle effect.
lst.sync = Sync a variable across the network.\nLimited to 20 times a second per variable.
lst.playsound = Plays a sound.\nVolume and pan can be a global value, or calculated based on position.
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.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.\n[accent]null []values are ignored.
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
+94 -18
View File
@@ -19,6 +19,7 @@ clipboardcopy = Гэты сервер хоча скапіяваць тэкст
linkfail = Не атрымалася адкрыць спасылку!\nURL-адрэс быў скапіяваны ў буфер абмена.
screenshot = Cкрыншот захаваны ў {0}
screenshot.invalid = Карта занадта вялікая, магчыма, не хапае памяці для скрыншота.
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = Гульня скончана
gameover.disconnect = Адключаны
gameover.pvp = [accent]{0}[] каманда перамагла!
@@ -57,6 +58,13 @@ mods.github.open-release = Стпронка Рэлізаў
mods.browser.sortdate = Сартаваць па нядаўняму
mods.browser.sortstars = Сартаваць па зоркам
export.file = Экспартаваць файл
import.file = Імпартаваць файл
copy.clipboard = Скапіяваць у буфер абмена
import.clipboard = Уставіць з буфера абмену
workshop.browse = Browse Workshop
workshop.share = Падзяліцца ў Майстэрні
schematic = Схема
schematic.add = Захаваць схему...
schematics = Схемы
@@ -64,12 +72,6 @@ schematic.search = Пошук схемы...
schematic.replace = Схема с дадзенай назвай ужо існуе. Замяніць яе?
schematic.exists = Схема с дадзенай назвай ужо існуе.
schematic.import = Імпартаваць схему...
schematic.exportfile = Экспартаваць файл
schematic.importfile = Імпартаваць файл
schematic.browseworkshop = Прагляд Майстэрні
schematic.copy = Скапіяваць у буфер абмена
schematic.copy.import = Уставіць з буфера абмену
schematic.shareworkshop = Падзяліцца ў Майстэрні
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Адлюстраваць схему
schematic.saved = Схема захавана.
schematic.delete.confirm = Гэтая схема будзе выдалена.
@@ -177,6 +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.noerrorplay = [scarlet]У Вас ёсць мадыфікацыі з памылкамі.[] Выключыце праблемныя мадыфікацыі або выпраўце памылкі перад гульнёй.
mod.enable = Укл.
mod.requiresrestart = Цяпер гульня зачыніцца, каб прымяніць змены ў мадыфікацыях.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = Timed out while receiving UDP snapshots.\nThis may
cantconnect = Не ўдаецца далучыцца да гульні ([accent]{0}[]).
connecting = [accent]Падключэнне…
reconnecting = [accent]Перападключэнне...
connecting.data = [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.
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!
@@ -344,6 +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.import = Імпартаваць захаванне
save.newslot = Імя сохраненя:
save.rename = Перайменаваць
@@ -479,14 +491,6 @@ editor.rules = Правілы:
editor.generation = Генерацыя:
editor.objectives = Мэты
editor.locales = Locale Bundles
editor.patches.guide = Інструкцыя па патчах
editor.patches = Патчы кантэнту
editor.patch = Набор патчаў: {0}
editor.patches.none = [lightgray]Няма загружаных набораў патчаў.
editor.patches.errors = Памылка набору патчаў
editor.patches.importerror = Памылка пры імпарту Набора патчаў
editor.patches.delete.confirm = Вы жадаеце выдаліць гэты набор патчаў?
editor.patch.fields = {0} Паля
editor.worldprocessors = Сусветныя працэсары
editor.worldprocessors.editname = Змяніць назву
editor.worldprocessors.none = [lightgray]Не знойдзена ніводнага сусветнага працэсару!\nДадайце адзін у рэдактар карт, або выкарыстоўваце \ue813 Кнопку дадаць ніжэй.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Custom Priority
editor.filters.planetselect = Planet Selection
editor.shiftx = Перамяшчэнне па X
editor.shifty = Перамяшчэнне па Y
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Патчы кантэнту
patch.set = Patchset: {0}
patch.none = [lightgray]Няма загружаных набораў патчаў.
patch.errors = Памылка набору патчаў
patch.importerror = Памылка пры імпарту Набора патчаў
patch.delete.confirm = Вы жадаеце выдаліць гэты набор патчаў?
patch.path = Path:
patch.fields = {0} Паля
bundle.lines = {0} lines
images = Images
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.
workshop = Майстэрня
waves.title = Хвалі
waves.team = Каманда
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](first {0})
waves.max = максімум адзінак
waves.guardian = Вартаўнік
waves.preview = Папярэдні прагляд
waves.edit = Рэдагавацью...
waves.random = Выпадкова
waves.copy = Капіяваць у буфер абмену
waves.load = Загрузіць з буфера абмену
@@ -556,6 +628,7 @@ all = Усяго
editor.default = [lightgray]<Па змаўчанні>
details = Падрабязнасці...
edit = Рэдагаваць...
edit.menu = Edit...
variables = Пераменныя
logic.error.toolong = Processor code too long (Limit: {0} compressed bytes, actual length: {1} bytes)
logic.clear.confirm = Вы жадаеце выдаліць увесь код з гэтага працэсара?
@@ -1068,6 +1141,7 @@ stat.targetsground = Наземныя мэты
stat.crushdamage = Шкода ад падзення
stat.legsplashdamage = Шкода па вобласці ад крокаў
stat.itemsmoved = Хуткасць перамяшчэння
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = Інтэрвал запускаў
stat.shootrange = Радыус дзеяння
stat.size = Памер
@@ -1545,6 +1619,7 @@ rules.enemyCheat = Бясконцыя рэсурсы ШІ
rules.blockhealthmultiplier = Множнік здароўя блокаў
rules.blockdamagemultiplier = Множнік Пашкоджання Блокам
rules.unitfactoryactivation = Затрымка актывацыі фабрыкі юнітаў
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = Множнік хуткасці вытворчасці баяв. адз.
rules.unitcostmultiplier = Множнік Кошту Адзінак
rules.unithealthmultiplier = Множнік здароўя баяв. адз.
@@ -1586,7 +1661,7 @@ rules.invasions = Нападкі з варожых сектараў
rules.legacylaunchpads = Класічная механіка пускавых пляцовак
rules.legacylaunchpads.info = Дазваляе выкарыстоўваць пускавыя пляцоўкі без пасадачных пляцовак, як у версіі 7.0.
landingpad.legacy.disabled = [scarlet]\ue815 Выключана[lightgray] (Класічныя пускавыя пляцоўкі ўключаны)
rules.showspawns = Паказваць кропку з'яўлення ворага
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = Непрадсказальны ШІ хвалей
rules.pauseDisabled = Выключыць паўзы
rules.fire = Агонь
@@ -2615,7 +2690,7 @@ unit.risso.description = Страляе шквалам ракет і куль п
unit.minke.description = Страляе выбуховымі і звычайнымі кулямі па ўсім ворагам паблізу.
unit.bryde.description = Страляе дальнабойнай артылерыяй і ракетамі па ўсім ворагам паблізу.
unit.sei.description = Страляе шквалам ракет і прбіўных куль па ўсіх ворагах паблізу
unit.omura.description = Страляе дальнабойным прабіўным промнем. Вырабляе ўспышак.
unit.omura.description = Страляе дальнабойным прабіўным промнем.
unit.alpha.description = Абараняе ядро Аскепак ад ворагаў. Будуе будынкі.
unit.beta.description = Абараняе ядро Штаб ад ворагаў. Будуе будынкі.
unit.gamma.description = Абараняе ядро Атам ад ворагаў. Будуе будынкі.
@@ -2691,6 +2766,7 @@ lst.setprop = Sets a property of a unit or building.
lst.effect = Create a particle effect.
lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most.
lst.playsound = Plays a sound.\nVolume and pan can be a global value, or calculated based on position.
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.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
+94 -18
View File
@@ -19,6 +19,7 @@ clipboardcopy = This server wants to copy text to your clipboard. Are you sure y
linkfail = Неуспех при отваряне на връзка!\nURL адресът е копиран в клипборда ви.
screenshot = Записана екранна снимка в {0}
screenshot.invalid = Картата е твърде голяма, възможно е да не достига памет за екранната снимка.
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = Играта свърши.
gameover.disconnect = Прекъснете връзката
gameover.pvp = [accent]{0}[] отбор спечели!
@@ -57,6 +58,13 @@ mods.github.open-release = Страница на изданията
mods.browser.sortdate = Сортирай по дата
mods.browser.sortstars = Сортирай по рейтинг
export.file = Изнасяне във файл
import.file = Внасяне от файл
copy.clipboard = Копирай в Клипборда
import.clipboard = Внеси от Клипборда
workshop.browse = Browse Workshop
workshop.share = Сподели в Работилницата
schematic = Схема
schematic.add = Запази Схема...
schematics = Схеми
@@ -64,12 +72,6 @@ schematic.search = Търсене из схемите...
schematic.replace = Вече съществува схема с това име. Да бъде ли заместена?
schematic.exists = Вече съществува схема с това име.
schematic.import = Внасяне на Схема...
schematic.exportfile = Изнасяне във файл
schematic.importfile = Внасяне от файл
schematic.browseworkshop = Работилница
schematic.copy = Копирай в Клипборда
schematic.copy.import = Внеси от Клипборда
schematic.shareworkshop = Сподели в Работилницата
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Обърни схемата
schematic.saved = Схемате беше запазена.
schematic.delete.confirm = Тази схема ще бъде напълно унищожена.
@@ -177,6 +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.noerrorplay = [scarlet]Има грешки в някои от модовете, които използвате.[] Трябва да деактивирате тези модове или да поправите грешките преди да играете.
mod.enable = Активирай
mod.requiresrestart = Играта ще се затвори за да приложи промените в модовете.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = Timed out while receiving UDP snapshots.\nThis may
cantconnect = Неуспех при свързване към игра ([accent]{0}[]).
connecting = [accent]Свързване...
reconnecting = [accent]Повторно свързване...
connecting.data = [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.
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!
@@ -344,6 +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.import = Внеси Запис
save.newslot = Име на запис:
save.rename = Преименувай
@@ -479,14 +491,6 @@ editor.rules = Правила:
editor.generation = Генериране:
editor.objectives = Задачи
editor.locales = Locale Bundles
editor.patches.guide = Patch Guide
editor.patches = Content Patches
editor.patch = Patchset: {0}
editor.patches.none = [lightgray]No patchsets loaded.
editor.patches.errors = Patchset Errors
editor.patches.importerror = Failed to import patchset
editor.patches.delete.confirm = Are you sure you want to delete this patchset?
editor.patch.fields = {0} fields
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.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Custom Priority
editor.filters.planetselect = Planet Selection
editor.shiftx = Shift X
editor.shifty = Shift Y
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Content Patches
patch.set = Patchset: {0}
patch.none = [lightgray]No patchsets loaded.
patch.errors = Patchset Errors
patch.importerror = Failed to import patchset
patch.delete.confirm = Are you sure you want to delete this patchset?
patch.path = Path:
patch.fields = {0} fields
bundle.lines = {0} lines
images = Images
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.
workshop = Работилница
waves.title = Вълни от нападатели
waves.team = Team
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](first {0})
waves.max = макс. единици
waves.guardian = Пазител
waves.preview = Преглед
waves.edit = Редактирай...
waves.random = Случаен брой
waves.copy = Кобирай в Клипборд
waves.load = Зареди от Клипборда
@@ -556,6 +628,7 @@ all = All
editor.default = [lightgray]<Стандартно>
details = Детайли...
edit = Редактирай...
edit.menu = Edit...
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?
@@ -1068,6 +1141,7 @@ stat.targetsground = Напада по земя
stat.crushdamage = Crush Damage
stat.legsplashdamage = Leg Splash Damage
stat.itemsmoved = Скорост на движение
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = Време между изстрелванията
stat.shootrange = Обхват
stat.size = Размер
@@ -1545,6 +1619,7 @@ rules.enemyCheat = Безкрайни ресурси за компютъра (Ч
rules.blockhealthmultiplier = Множител на точките живот на блокове
rules.blockdamagemultiplier = Множител на щетите на блокове
rules.unitfactoryactivation = Unit Factory Activation Delay
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = Множител на скоростта на производство на единици
rules.unitcostmultiplier = Множител на цената за единици
rules.unithealthmultiplier = Множител на точките живот на единици
@@ -1586,7 +1661,7 @@ rules.invasions = Enemy Sector Invasions
rules.legacylaunchpads = Legacy Launch Pad Mechanics
rules.legacylaunchpads.info = Allows using launch pads without landing pads, as in 7.0.
landingpad.legacy.disabled = [scarlet]\ue815 Disabled[lightgray] (Legacy Launch Pads enabled)
rules.showspawns = Show Enemy Spawns
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = Unpredictable Wave AI
rules.pauseDisabled = Disable Pausing
rules.fire = Огън
@@ -2615,7 +2690,7 @@ unit.risso.description = Изстрелва залпове от ракети и
unit.minke.description = Изстрелва сачми и стандартни муниции по наземни мишени.
unit.bryde.description = Изстрелва далекообхватни боеприпаси и ракети по врагове.
unit.sei.description = Изстрелва поредица от ракети и бронебойни куршуми по врагове.
unit.omura.description = Изстрелва далечни пробивни релсови лазери по врагове. Изгражда единици модел Факел.
unit.omura.description = Изстрелва далечни пробивни релсови лазери по врагове.
unit.alpha.description = Защитава ядро Частица от врагове. Строи сгради.
unit.beta.description = Защитава ядро Фондация от врагове. Строи сгради.
unit.gamma.description = Защитава ядро Център от врагове. Строи сгради.
@@ -2691,6 +2766,7 @@ lst.setprop = Поставя притежанието на единица или
lst.effect = Create a particle effect.
lst.sync = Синхронизира променлива през мрежата.\nПредизвиква се най-много 10 пъти в секунда.
lst.playsound = Plays a sound.\nVolume and pan can be a global value, or calculated based on position.
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.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
+94 -18
View File
@@ -19,6 +19,7 @@ clipboardcopy = This server wants to copy text to your clipboard. Are you sure y
linkfail = No s’ha pogut obrir l’enllaç!\nLa direcció URL s’ha copiat al porta-retalls.
screenshot = S’ha desat la captura de pantalla a {0}.
screenshot.invalid = El mapa és massa gran. No hi ha prou memòria per a fer la captura de pantalla.
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = Fi de la partida
gameover.disconnect = Desconnecta
gameover.pvp = Ha guanyat l’equip[accent] {0}[]!
@@ -57,6 +58,13 @@ mods.github.open-release = Pàgina de versions publicades
mods.browser.sortdate = Ordena per data
mods.browser.sortstars = Ordena per valoració
export.file = Exporta un fitxer
import.file = Importa un fitxer
copy.clipboard = Copia al porta-retalls
import.clipboard = Importa del porta-retalls
workshop.browse = Browse Workshop
workshop.share = Comparteix al Workshop de l’Steam
schematic = Esquema
schematic.add = Desa l’esquema…
schematics = Esquemes
@@ -64,12 +72,6 @@ schematic.search = Cerca esquemes…
schematic.replace = Ja hi ha un esquema amb aquest nom. Voleu reemplaçar-lo?
schematic.exists = Ja hi ha un esquema amb aquest nom.
schematic.import = Importa un esquema
schematic.exportfile = Exporta un fitxer
schematic.importfile = Importa un fitxer
schematic.browseworkshop = Explora el Workshop de l’Steam
schematic.copy = Copia al porta-retalls
schematic.copy.import = Importa del porta-retalls
schematic.shareworkshop = Comparteix al Workshop de l’Steam
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Dóna la volta a l’esquema
schematic.saved = L’esquema s’ha desat.
schematic.delete.confirm = Aquest esquema s’esborrarà.
@@ -177,6 +179,7 @@ mod.incompletedependencies.details = Aquest mod no es pot carregar perquè té u
mod.requiresversion = Cal la versió [red]{0}[] del joc.
mod.errors = S’han produït errors quan es carregava el contingut.
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]S’executen mods amb errors.[] Desactiveu els mods afectats o arregleu les errades abans de jugar.
mod.enable = Activa
mod.requiresrestart = El programa es tancarà per a aplicar els canvis.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = S’ha esgotat el temps d’espera mentre es rebien
cantconnect = No és possible unir-se a la partida ([accent]{0}[]).
connecting = [accent]Es connecta…
reconnecting = [accent]Es torna a connectar…
connecting.data = [accent]Es carreguen les dades del món…
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.
server.port = Port:
server.invalidport = El número de port no és vàlid!
server.error.addressinuse = [scarlet]El port 6567 no s’ha pogut obrir.[]\n\nAssegureu-vos que no s’executen altres servidors del Mindustry a la xarxa o dispositiu!
@@ -344,6 +352,10 @@ save.export = Exporta la desada
save.import.invalid = [accent]Aquesta desada no és vàlida!
save.import.fail = [scarlet]La desada no s’ha pogut importar: [accent]{0}
save.export.fail = [scarlet]La desada no s’ha pogut exportar: [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.import = Importa una partida desada
save.newslot = Nom del fitxer de la desada:
save.rename = Reanomena
@@ -479,14 +491,6 @@ editor.rules = Regles
editor.generation = Generació
editor.objectives = Objectius
editor.locales = Paquet de traduccions
editor.patches.guide = Guia de pedaços
editor.patches = Pedaços de continguts
editor.patch = Conjunt de pedaços: {0}
editor.patches.none = [lightgray]No s’han carregat pedaços.
editor.patches.errors = Errors del conjunt de pedaços
editor.patches.importerror = No s’ha pogut importar el conjunt de pedaços.
editor.patches.delete.confirm = Esteu segur que voleu esborrar aquest conjunt de pedaços?
editor.patch.fields = {0} camps
editor.worldprocessors = Processadors integrats
editor.worldprocessors.editname = Edita el nom
editor.worldprocessors.none = [lightgray]No s’han trobat blocs de processadors integrats!\nAfegiu-ne un a l’editor de mapes o feu servir el botó \ue813 de sota.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Custom Priority
editor.filters.planetselect = Planet Selection
editor.shiftx = Desplaça en l’eix X
editor.shifty = Desplaça en l’eix Y
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Pedaços de continguts
patch.set = Patchset: {0}
patch.none = [lightgray]No s’han carregat pedaços.
patch.errors = Errors del conjunt de pedaços
patch.importerror = No s’ha pogut importar el conjunt de pedaços.
patch.delete.confirm = Esteu segur que voleu esborrar aquest conjunt de pedaços?
patch.path = Path:
patch.fields = {0} camps
bundle.lines = {0} lines
images = Images
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.
workshop = Workshop
waves.title = Onades
waves.team = Equip
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](first {0})
waves.max = nombre màxim d’unitats
waves.guardian = Guardià
waves.preview = Previsualització
waves.edit = Edita
waves.random = Aleatori
waves.copy = Copia al porta-retalls
waves.load = Carrega del porta-retalls
@@ -556,6 +628,7 @@ all = Tots
editor.default = [lightgray]<Per defecte>
details = Detalls
edit = Edita
edit.menu = Edit...
variables = Variables
logic.error.toolong = Processor code too long (Limit: {0} compressed bytes, actual length: {1} bytes)
logic.clear.confirm = Esteu segur que voleu esborrar tot el codi d’aquest processador?
@@ -1068,6 +1141,7 @@ stat.targetsground = Dispara objectius terrestres
stat.crushdamage = Dany per aixafament
stat.legsplashdamage = Dany per aixafament
stat.itemsmoved = Velocitat de moviment
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = Temps entre llançaments
stat.shootrange = Abast
stat.size = Mida
@@ -1545,6 +1619,7 @@ rules.enemyCheat = Recursos infinits per a la IA (equip vermell)
rules.blockhealthmultiplier = Multiplicador de la salut dels blocs
rules.blockdamagemultiplier = Multiplicador del dany dels blocs
rules.unitfactoryactivation = Unit Factory Activation Delay
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = Multiplicador de la velocitat de producció d’unitats
rules.unitcostmultiplier = Multiplicador del cost de les unitats
rules.unithealthmultiplier = Multiplicador de la salut de les unitats
@@ -1586,7 +1661,7 @@ rules.invasions = Invasions de setors enemics
rules.legacylaunchpads = Mecàniques de plataformes de llançament antigues
rules.legacylaunchpads.info = Permet fer servir plataformes de llançament sense plataformes d’aterratge, com a la versió 7.0.
landingpad.legacy.disabled = [scarlet]\ue815 Desactivat[lightgray] (plataformes de llançament antigues activades)
rules.showspawns = Mostra l’aparició d’enemics
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = IA d’onades immprevisible
rules.pauseDisabled = Disable Pausing
rules.fire = Foc
@@ -2615,7 +2690,7 @@ unit.risso.description = Dispara una pluja de míssils i bales a tots els enemic
unit.minke.description = Dispara projectils i bales estàndard als objectius terrestres.
unit.bryde.description = Dispara projectils d’artilleria i míssils de llarg abast als enemics.
unit.sei.description = Dispara una pluja de míssils i bales capaces de perforar escuts als enemics.
unit.omura.description = Dispara projectils perforadors de llarg abast amb un canó electromagnètic. Construeix unitats «Flare».
unit.omura.description = Dispara projectils perforadors de llarg abast amb un canó electromagnètic.
unit.alpha.description = Defensa el nucli «Estella» dels enemics. Construeix estructures.
unit.beta.description = Defensa el nucli «Fonament» des enemics. Construeix estructures.
unit.gamma.description = Defensa el nucli «Punt neuràlgic» des enemics. Construeix estructures.
@@ -2691,6 +2766,7 @@ lst.setprop = Estableix una propietat d’una unitat o estructura.
lst.effect = Crea un efecte de partícula.
lst.sync = Sincronitza una variable a través de la xarxa.\nS’invoca com a molt 10 vegades per segon.
lst.playsound = Reprodueix un so.\nEl volum i la panoramització (pan) poden ser un valor global o calculat segons la posició.
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.makemarker = Crea una marca lògica al món.\nS’ha de donar un ID per a identificar-la.\nEs poden establir fins a 20.000 marcadors per món.
lst.setmarker = Estableix una propietat per a la marca.\nL’ID que es faci servir ha de ser el mateix que el de la instrucció de crear la marca.
lst.localeprint = Afegeix el valor d’una propietat de la traducció d’un mapa a la cua d’impressió.\nPer a establir paquets de traducció de mapes a l’editor de mapes, comproveu [accent]Informació del mapa > Paquets de traducció[].\nSi el client és un dispositiu mòbil, primer intenta imprimir una propietat que acabi en «.mobile».
+94 -18
View File
@@ -19,6 +19,7 @@ clipboardcopy = Tento server chce zkopírovat text do tvé schránky. Opravdu ch
linkfail = Nepodařilo se otevřít odkaz!\nAdresa URL byla zkopírována do schránky.
screenshot = Snímek obrazovky uložen {0}
screenshot.invalid = Mapa je moc velká, nemusí být dost paměti pro získání snímku obrazovky.
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = Konec hry
gameover.disconnect = Odpojit
gameover.pvp = Vyhrál tým [accent]{0}[]!
@@ -57,6 +58,13 @@ mods.github.open-release = Stránka Vydání
mods.browser.sortdate = Řadit podle nedávných
mods.browser.sortstars = Řadit podle hvězd
export.file = Exportovat soubor
import.file = Importovat soubor
copy.clipboard = Zkopírovat do schránky
import.clipboard = Importovat ze schránky
workshop.browse = Browse Workshop
workshop.share = Sdílet skrze Workshop na Steamu
schematic = Šablona
schematic.add = Uložit šablonu...
schematics = Šablony
@@ -64,12 +72,6 @@ schematic.search = Vyhledat šablonu...
schematic.replace = Šablona s tímto názvem již existuje. Chceš ji nahradit?
schematic.exists = Šablona s tímto názvem již existuje.
schematic.import = Importuji šablonu...
schematic.exportfile = Exportovat soubor
schematic.importfile = Importovat soubor
schematic.browseworkshop = Procházet Workshop na Steamu
schematic.copy = Zkopírovat do schránky
schematic.copy.import = Importovat ze schránky
schematic.shareworkshop = Sdílet skrze Workshop na Steamu
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Převrátit šablonu
schematic.saved = Šablona byla uložena.
schematic.delete.confirm = Šablona bude kompletně vyhlazena.
@@ -177,6 +179,7 @@ mod.incompletedependencies.details = Tato modifikace nelze načíst kvůli nepla
mod.requiresversion = Vyžaduje verzi hry: [red]{0}
mod.errors = Při načítání obsahu hry se vyskytly problémy.
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]Máš modifikace s chybami.[] Buď zakaž dotčené modifikace, nebo oprav chyby před tím, než začneš hrát.
mod.enable = Povolit
mod.requiresrestart = Hra bude ukončena, aby bylo možné nasadit modifikace.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = Při získávání UDP snímků vypršel čas spoje
cantconnect = Není možno se připojit ke hře ([accent]{0}[]).
connecting = [accent]Připojuji se...[]
reconnecting = [accent]Znovu se připojuji...
connecting.data = [accent]Načítám data ze serveru...[]
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.
server.port = Port:
server.invalidport = Neplatné číslo portu!
server.error.addressinuse = [scarlet]Nepodařilo se otevřít port 6567.[]\n\nUjistěte se, že na vašem zařízení nebo ve vaší síti neběží žádný jiný Mindustry server!
@@ -344,6 +352,10 @@ save.export = Exportovat uložení hry
save.import.invalid = [accent]Toto uložení není v pořádku![]
save.import.fail = [scarlet]Nepodařilo se importovat uložení hry: [accent]{0}[]
save.export.fail = [scarlet]Nepodařilo se exportovat uložení hry: [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.import = Importovat uložení hry
save.newslot = Uložit hru:
save.rename = Přejmenovat
@@ -479,14 +491,6 @@ editor.rules = Pravidla:
editor.generation = Generace:
editor.objectives = Úkoly:
editor.locales = Balíky jazyků
editor.patches.guide = Průvodce záplatami
editor.patches = Záplaty obsahu
editor.patch = Sada záplat: {0}
editor.patches.none = [lightgray]Nejsou načteny žádné sady záplat.
editor.patches.errors = Chyby sady záplat
editor.patches.importerror = Nepodařilo se importovat sadu záplat
editor.patches.delete.confirm = Opravdu chceš tuto sadu záplat smazat?
editor.patch.fields = {0} polí
editor.worldprocessors = Globální Procesor
editor.worldprocessors.editname = Upravit název
editor.worldprocessors.none = [lightgray]Nebyly nalezeny žádné bloky světového procesoru!\nPřidej jeden v editoru map, nebo použij tlačítko \ue813 Přidat níže.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Vlastní priorita
editor.filters.planetselect = Výběr planety
editor.shiftx = Posun X
editor.shifty = Posun Y
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Záplaty obsahu
patch.set = Patchset: {0}
patch.none = [lightgray]Nejsou načteny žádné sady záplat.
patch.errors = Chyby sady záplat
patch.importerror = Nepodařilo se importovat sadu záplat
patch.delete.confirm = Opravdu chceš tuto sadu záplat smazat?
patch.path = Path:
patch.fields = {0} polí
bundle.lines = {0} lines
images = Images
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.
workshop = Workshop na Steamu
waves.title = Vlny
waves.team = Tým
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](první {0})
waves.max = max. jednotek
waves.guardian = Strážce
waves.preview = Náhled
waves.edit = Upravit....
waves.random = Náhodně
waves.copy = Uložit do schránky
waves.load = Načíst ze schránky
@@ -556,6 +628,7 @@ all = Vše
editor.default = [lightgray]<Výchozí>[]
details = Podrobnosti...
edit = Upravit...
edit.menu = Edit...
variables = Hodnoty
logic.error.toolong = Processor code too long (Limit: {0} compressed bytes, actual length: {1} bytes)
logic.clear.confirm = Opravdu chcete z tohoto procesoru odstranit veškerý kód?
@@ -1068,6 +1141,7 @@ stat.targetsground = Zaměřuje pozemní jednotky
stat.crushdamage = Drtivé poškození
stat.legsplashdamage = Plošné poškození nohou
stat.itemsmoved = Rychlost pohybu
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = Čas mezi vysláním
stat.shootrange = Dostřel
stat.size = Velikost
@@ -1545,6 +1619,7 @@ rules.enemyCheat = Neomezeně surovin pro umělou inteligenci
rules.blockhealthmultiplier = Násobek zdraví bloků
rules.blockdamagemultiplier = Násobek poškození bloků
rules.unitfactoryactivation = Zpoždění aktivace továrny na jednotky
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = Násobek rychlosti výroby jednotek
rules.unitcostmultiplier = Násobek ceny jednotek
rules.unithealthmultiplier = Násobek zdraví jednotek
@@ -1586,7 +1661,7 @@ rules.invasions = Invaze nepřátelských sektorů
rules.legacylaunchpads = Starší mechanika vysílacích plošin
rules.legacylaunchpads.info = Umožňuje používat vysílací plošiny bez přistávacích plošin, stejně jako ve verzi 7.0.
landingpad.legacy.disabled = [scarlet]\ue815 Zakázáno[lightgray] (starší vysílací plošiny povoleny)
rules.showspawns = Zobrazit místa zrození nepřátel
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = Nepředvídatelná AI vln
rules.pauseDisabled = Zakázat pozastavení
rules.fire = Výstřel
@@ -2615,7 +2690,7 @@ unit.risso.description = Střílí palbu raket a střel na všechny blízké nep
unit.minke.description = Střílí patrony a základní střely na blízké pozemní cíle.
unit.bryde.description = Střílí na nepřátele dělostřelecké granáty a rakety dlouhého doletu.
unit.sei.description = Střílí na nepřátele palbu raket a průbojných střel.
unit.omura.description = Střílí na nepřátele průrazné šrouby s dlouhým doletem. Vytváří jednotky Záře.
unit.omura.description = Střílí na nepřátele průrazné šrouby s dlouhým doletem.
unit.alpha.description = Brání jádro Odštěpek před nepřáteli. Staví konstrukce.
unit.beta.description = Brání jádro Základ před nepřáteli. Staví konstrukce.
unit.gamma.description = Brání jádro Atom před nepřáteli. Staví konstrukce.
@@ -2691,6 +2766,7 @@ lst.setprop = Nastaví vlastnost jednotky nebo budovy.
lst.effect = Vytvoří částicový efekt.
lst.sync = Synchronizuje proměnnou přes síť.\nOmezeno na 20× za sekundu na proměnnou.
lst.playsound = Přehraje zvuk.\nHlasitost a posun mohou být globální hodnotou nebo vypočteny podle pozice.
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.makemarker = Vytvoří ve světě novou logickou značku.\nJe nutné zadat ID pro identifikaci této značky.\nZnačky jsou momentálně omezeny na 20 000 na svět.
lst.setmarker = Nastaví vlastnost značky.\nPoužité ID musí být stejné jako v instrukci Make Marker.\nHodnoty [accent]null []jsou ignorovány.
lst.localeprint = Přidá hodnotu vlastnosti lokalizace mapy do textového bufferu.\nPro nastavení lokalizačních balíčků mapy v editoru map zkontroluj [accent]Informace o mapě > Lokalizační balíčky[].\nPokud je klient mobilní zařízení, nejdříve se pokusí vypsat vlastnost končící na ".mobile".
+94 -18
View File
@@ -19,6 +19,7 @@ clipboardcopy = This server wants to copy text to your clipboard. Are you sure y
linkfail = Kunne ikke åbne link!\n Linkets URL er kopieret til din udklipsholder.
screenshot = Screenshot gemt i {0}
screenshot.invalid = Banen er for stor; der er ikke nok hukommelse til et skærmbillede.
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = Game Over
gameover.disconnect = Disconnect
gameover.pvp = [accent] {0}[] hold har vundet!
@@ -57,6 +58,13 @@ mods.github.open-release = Release Page
mods.browser.sortdate = Sort by recent
mods.browser.sortstars = Sort by stars
export.file = Exporter fil
import.file = Importer fil
copy.clipboard = Kopier til udklipsholder
import.clipboard = Importer fra udklipsholder
workshop.browse = Browse Workshop
workshop.share = Del på Workshop
schematic = Skabelon
schematic.add = Gem skabelon...
schematics = Skabeloner
@@ -64,12 +72,6 @@ schematic.search = Search schematics...
schematic.replace = En skabelon med det navn eksisterer allerede - vil du erstatte denne?
schematic.exists = En skabelon med det navn eksisterer allerede.
schematic.import = Importer skabelon ...
schematic.exportfile = Exporter fil
schematic.importfile = Importer fil
schematic.browseworkshop = Søg i Workshop
schematic.copy = Kopier til udklipsholder
schematic.copy.import = Importer fra udklipsholder
schematic.shareworkshop = Del på Workshop
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Vend skabelon
schematic.saved = Skabelon gemt.
schematic.delete.confirm = Denne skabelon vil være væk for altid.
@@ -177,6 +179,7 @@ mod.incompletedependencies.details = This mod is unable to be loaded due to inva
mod.requiresversion = Requires game version: [red]{0}
mod.errors = Fejl ved afhentning af indhold.
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]Du har mods med fejl.[] Deaktiver det eller løs fejl før du starter spillet.
mod.enable = Aktiver
mod.requiresrestart = Spillet vil nu lukke for at tilføje mod ændringerne
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = Timed out while receiving UDP snapshots.\nThis may
cantconnect = Kunne ikke deltage i spil ([accent]{0}[]).
connecting = [accent]Forbinder...
reconnecting = [accent]Reconnecting...
connecting.data = [accent]Indlæser bane-data...
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.
server.port = Port:
server.invalidport = Ugyldigt port-nummer!
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!
@@ -344,6 +352,10 @@ save.export = Eksporter gem
save.import.invalid = [accent]Dette gem er i stykker!
save.import.fail = [crimson]Kunne ikke importere gem: [accent]{0}
save.export.fail = [crimson]Kunne ikke eksportere gem: [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.import = Import Gem
save.newslot = Gem-navn:
save.rename = Omdøb
@@ -479,14 +491,6 @@ editor.rules = Regler:
editor.generation = Generering:
editor.objectives = Objectives
editor.locales = Locale Bundles
editor.patches.guide = Patch Guide
editor.patches = Content Patches
editor.patch = Patchset: {0}
editor.patches.none = [lightgray]No patchsets loaded.
editor.patches.errors = Patchset Errors
editor.patches.importerror = Failed to import patchset
editor.patches.delete.confirm = Are you sure you want to delete this patchset?
editor.patch.fields = {0} fields
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.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Custom Priority
editor.filters.planetselect = Planet Selection
editor.shiftx = Shift X
editor.shifty = Shift Y
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Content Patches
patch.set = Patchset: {0}
patch.none = [lightgray]No patchsets loaded.
patch.errors = Patchset Errors
patch.importerror = Failed to import patchset
patch.delete.confirm = Are you sure you want to delete this patchset?
patch.path = Path:
patch.fields = {0} fields
bundle.lines = {0} lines
images = Images
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.
workshop = Workshop
waves.title = Bølger
waves.team = Team
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](first {0})
waves.max = max units
waves.guardian = Vogter
waves.preview = Forhåndsvisning
waves.edit = Rediger...
waves.random = Random
waves.copy = Kopier til udklipsholder
waves.load = Indlæs fra udklipsholder
@@ -556,6 +628,7 @@ all = All
editor.default = [lightgray]<standard>
details = Detaljer...
edit = Rediger...
edit.menu = Edit...
variables = Vars
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?
@@ -1068,6 +1141,7 @@ stat.targetsground = Skyder fodgængere
stat.crushdamage = Crush Damage
stat.legsplashdamage = Leg Splash Damage
stat.itemsmoved = Bevægelseshastighed
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = Tid mellem affyringer
stat.shootrange = Rækkevidde
stat.size = Størrelse
@@ -1545,6 +1619,7 @@ rules.enemyCheat = Uendelig AI (rødt hold) resurser.
rules.blockhealthmultiplier = Blok-helbreds-forstærker.
rules.blockdamagemultiplier = Blok-skade-forstærker.
rules.unitfactoryactivation = Unit Factory Activation Delay
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = Enheds-produktionshastigheds-forstærker
rules.unitcostmultiplier = Unit Cost Multiplier
rules.unithealthmultiplier = Enheds-helbreds-forstærker
@@ -1586,7 +1661,7 @@ rules.invasions = Enemy Sector Invasions
rules.legacylaunchpads = Legacy Launch Pad Mechanics
rules.legacylaunchpads.info = Allows using launch pads without landing pads, as in 7.0.
landingpad.legacy.disabled = [scarlet]\ue815 Disabled[lightgray] (Legacy Launch Pads enabled)
rules.showspawns = Show Enemy Spawns
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = Unpredictable Wave AI
rules.pauseDisabled = Disable Pausing
rules.fire = Ild
@@ -2615,7 +2690,7 @@ unit.risso.description = Fires a barrage of missiles and bullets at all nearby e
unit.minke.description = Fires shells and standard bullets at nearby ground targets.
unit.bryde.description = Fires long-range artillery shells and missiles at enemies.
unit.sei.description = Fires a barrage of missiles and armor-piercing bullets at enemies.
unit.omura.description = Fires a long-range piercing railgun bolt at enemies. Constructs flare units.
unit.omura.description = Fires a long-range piercing railgun bolt at enemies.
unit.alpha.description = Defends the Shard core from enemies. Builds structures.
unit.beta.description = Defends the Foundation core from enemies. Builds structures.
unit.gamma.description = Defends the Nucleus core from enemies. Builds structures.
@@ -2691,6 +2766,7 @@ lst.setprop = Sets a property of a unit or building.
lst.effect = Create a particle effect.
lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most.
lst.playsound = Plays a sound.\nVolume and pan can be a global value, or calculated based on position.
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.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
+94 -18
View File
@@ -19,6 +19,7 @@ clipboardcopy = This server wants to copy text to your clipboard. Are you sure y
linkfail = Fehler beim Öffnen des Links!\nDie URL wurde in die Zwischenablage kopiert.
screenshot = Screenshot gespeichert unter {0}
screenshot.invalid = Karte zu groß! Eventuell nicht ausreichend Arbeitsspeicher für Screenshot.
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = Der Kern wurde zerstört.
gameover.disconnect = Verbindung trennen
gameover.pvp = Das[accent] {0}[] Team ist siegreich!
@@ -57,6 +58,13 @@ mods.github.open-release = Versionen Webseite
mods.browser.sortdate = Nach neuesten sortieren
mods.browser.sortstars = Nach Sternen sortieren
export.file = Datei exportieren
import.file = Datei importieren
copy.clipboard = In Zwischenablage kopieren
import.clipboard = Aus Zwischenablage importieren
workshop.browse = Browse Workshop
workshop.share = Im Workshop teilen
schematic = Entwurf
schematic.add = Entwurf speichern...
schematics = Entwürfe
@@ -64,12 +72,6 @@ schematic.search = Suche nach Entwürfen...
schematic.replace = Es gibt bereits einen Entwurf mit diesem Namen. Diesen ersetzen?
schematic.exists = Es gibt schon einen Entwurf mit diesem Namen.
schematic.import = Entwurf importieren...
schematic.exportfile = Datei exportieren
schematic.importfile = Datei importieren
schematic.browseworkshop = Workshop durchsuchen
schematic.copy = In Zwischenablage kopieren
schematic.copy.import = Aus Zwischenablage importieren
schematic.shareworkshop = Im Workshop teilen
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Entwurf umkehren
schematic.saved = Entwurf gespeichert.
schematic.delete.confirm = Dieser Entwurf wird vollständig vernichtet.
@@ -177,6 +179,7 @@ mod.incompletedependencies.details = Diese Mod kann aufgrund fehlenden oder ung
mod.requiresversion = Benötigt Spielversion: [red]{0}
mod.errors = Beim Laden von Inhalt sind Fehler aufgetreten.
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 = [red]Du hast Mods mit Fehlern.[] Deaktiviere die Mods oder behebe die Fehler, bevor du spielst.
mod.enable = Aktivieren
mod.requiresrestart = Das Spiel wird jetzt beendet, um die Mod-Änderungen anzuwenden.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = Zeitüberschreitung beim Empfangen von UDP-Snapshot
cantconnect = Nicht möglich beizutreten ([accent]{0}[]).
connecting = [accent] Verbinde...
reconnecting = [accent]Verbindung wird wiederhergestellt...
connecting.data = [accent] Welt wird geladen...
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.
server.port = Port:
server.invalidport = Falscher Port!
server.error.addressinuse = [scarlet]Fehler beim Öffnen des Servers auf Port 6567.[]\n\nStelle sicher, dass keine anderen Mindustry-Server auf deinem Gerät oder Netzwerk laufen!
@@ -344,6 +352,10 @@ save.export = Spielstand exportieren
save.import.invalid = [accent]Dieser Spielstand ist ungültig!
save.import.fail = [crimson]Spielstand konnte nicht importiert werden: [accent]{0}
save.export.fail = [crimson]Spielstand konnte nicht exportiert werden: [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.import = Spielstand importieren
save.newslot = Name:
save.rename = Umbenennen
@@ -479,14 +491,6 @@ editor.rules = Regeln
editor.generation = Generator
editor.objectives = Ziele
editor.locales = Sprach-Bundle
editor.patches.guide = Patch Guide
editor.patches = Content Patches
editor.patch = Patchset: {0}
editor.patches.none = [lightgray]No patchsets loaded.
editor.patches.errors = Patchset Errors
editor.patches.importerror = Failed to import patchset
editor.patches.delete.confirm = Are you sure you want to delete this patchset?
editor.patch.fields = {0} fields
editor.worldprocessors = Weltprozessoren
editor.worldprocessors.editname = Name bearbeiten
editor.worldprocessors.none = [lightgray]Keine Weltprozessor-Blöcke gefunden!\nFüge einen im Karteneditor hinzu oder benutze den \ue813 Hinzufügen-Button unten.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Custom Priority
editor.filters.planetselect = Planet Selection
editor.shiftx = Verschieben X
editor.shifty = Verschieben Y
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Content Patches
patch.set = Patchset: {0}
patch.none = [lightgray]No patchsets loaded.
patch.errors = Patchset Errors
patch.importerror = Failed to import patchset
patch.delete.confirm = Are you sure you want to delete this patchset?
patch.path = Path:
patch.fields = {0} fields
bundle.lines = {0} lines
images = Images
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.
workshop = Workshop
waves.title = Wellen
waves.team = Team
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](first {0})
waves.max = maximale Einheiten
waves.guardian = Boss
waves.preview = Vorschau
waves.edit = Bearbeiten...
waves.random = Zufällig
waves.copy = In die Zwischenablage kopieren
waves.load = Aus der Zwischenablage laden
@@ -556,6 +628,7 @@ all = All
editor.default = [lightgray]<Standard>
details = Details
edit = Bearbeiten
edit.menu = Edit...
variables = Variablen
logic.error.toolong = Processor code too long (Limit: {0} compressed bytes, actual length: {1} bytes)
logic.clear.confirm = Willst du wirklich den gesamten Code aus diesem Prozessor löschen?
@@ -1068,6 +1141,7 @@ stat.targetsground = Visiert Bodeneinheiten an
stat.crushdamage = Crush Damage
stat.legsplashdamage = Leg Splash Damage
stat.itemsmoved = Bewegungsgeschwindigkeit
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = Zeit zwischen Starts
stat.shootrange = Reichweite
stat.size = Größe
@@ -1545,6 +1619,7 @@ rules.enemyCheat = Unbegrenzte gegnerische Ressourcen
rules.blockhealthmultiplier = Block-Lebenspunkte-Multiplikator
rules.blockdamagemultiplier = Block-Schaden-Multiplikator
rules.unitfactoryactivation = Unit Factory Activation Delay
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = Einheiten-Baugeschwindigkeit Multiplikator
rules.unitcostmultiplier = Einheit-Baukosten Multiplikator
rules.unithealthmultiplier = Einheit-Lebenspunkte-Multiplikator
@@ -1586,7 +1661,7 @@ rules.invasions = Enemy Sector Invasions
rules.legacylaunchpads = Legacy Launch Pad Mechaniken
rules.legacylaunchpads.info = Launchpads können ohne Landepads benutzt werden, wie in Version 7.0.
landingpad.legacy.disabled = [scarlet]\ue815 Deaktiviert[lightgray] (Legacy Launch Pads aktiviert)
rules.showspawns = Show Enemy Spawns
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = Unvorhersehbare Wellen-KI
rules.pauseDisabled = Disable Pausing
rules.fire = Feuer
@@ -2615,7 +2690,7 @@ unit.risso.description = Schießt ein Sperrfeuer aus Raketen und Kugeln auf alle
unit.minke.description = Schießt Geschosse und Kugeln auf Feinde.
unit.bryde.description = Schießt Artilleriegeschosse und Raketen mit großer Reichweite auf alle feindlichen Ziele.
unit.sei.description = Schießt ein Sperrfeuer aus Raketen und durchdringende Geschosse auf feindliche Ziele.
unit.omura.description = Schießt eine Railgun mit hoher Reichweite, um Gegner zu zerstören. Stellt Flare-Einheiten her.
unit.omura.description = Schießt eine Railgun mit hoher Reichweite, um Gegner zu zerstören.
unit.alpha.description = Beschützt den Scherbenkern vor Feinden. Baut Blöcke.
unit.beta.description = Beschützt den Fundamentkern vor Feinden. Baut Blöcke.
unit.gamma.description = Beschützt den Nukleuskern vor Feinden. Baut Blöcke.
@@ -2691,6 +2766,7 @@ lst.setprop = Setzt eine Eigenschaft einer Einheit oder eines Blockes.
lst.effect = Erstelle einen Partikeleffekt
lst.sync = Synchronisiert eine Variable im Netzwerk.\nWird maximal 10 Mal pro Sekunde ausgefürht.
lst.playsound = Spielt einen Ton.\nDie Lautstärke kann ein fester Wert sein, oder anhand der Position berechnet werden. (weiter weg: leiser)
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.makemarker = Erstelle einen neuen Logikmarker in der Welt.\nEine ID zur Identifizierung muss angegeben werden.\nDerzeit können nur maximal 20.000 Marker pro Welt platziert werden.
lst.setmarker = Lege eine Eigenschaft für einen Marker fest.\nDie ID muss die selbe wie bei der Erstellung des Markers sein.
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
+93 -17
View File
@@ -19,6 +19,7 @@ clipboardcopy = Este servidor quiere copiar texto a tu portapapeles. ¿Estás se
linkfail = ¡Error al abrir el enlace!\nLa URL se ha copiado al portapapeles.
screenshot = Captura de pantalla guardada en {0}
screenshot.invalid = El mapa es demasiado grande, no hay suficiente memoria para la captura de pantalla.
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = Fin de la partida
gameover.disconnect = Desconectarse
gameover.pvp = ¡El equipo[accent] {0}[] ha ganado!
@@ -57,6 +58,13 @@ mods.github.open-release = Lista de versiones
mods.browser.sortdate = Más recientes
mods.browser.sortstars = Mejor valorados
export.file = Exportar archivo
import.file = Importar archivo
copy.clipboard = Copiar al portapapeles
import.clipboard = Importar desde el portapapeles
workshop.browse = Browse Workshop
workshop.share = Compartir en Steam Workshop
schematic = Esquema
schematic.add = Guardar esquema...
schematics = Esquemas
@@ -64,12 +72,6 @@ schematic.search = Buscar esquemas..
schematic.replace = Ya existe un esquema con ese nombre. ¿Quieres reemplazarlo?
schematic.exists = Ya existe un esquema con ese nombre.
schematic.import = Importar esquema...
schematic.exportfile = Exportar archivo
schematic.importfile = Importar archivo
schematic.browseworkshop = Buscar en Steam Workshop
schematic.copy = Copiar al portapapeles
schematic.copy.import = Importar desde el portapapeles
schematic.shareworkshop = Compartir en Steam Workshop
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Invertir esquema
schematic.saved = Esquema guardado.
schematic.delete.confirm = Este esquema será absolutamente erradicado.
@@ -177,6 +179,7 @@ mod.incompletedependencies.details = Este mod no se puede cargar debido a depend
mod.requiresversion = Requiere la versión del juego: [red]{0}
mod.errors = Ha ocurrido un fallo al cargar el contenido.
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]Se están ejecutando algunos mods con fallos.[]Debes deshabilitarlos o arreglar los errores antes de jugar.
mod.enable = Activar
mod.requiresrestart = El juego se cerrará para aplicar los cambios del mod.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = Tiempo de espera agotado al recibir instantánea UD
cantconnect = No es posible unirse a la partida ([accent]{0}[]).
connecting = [accent]Conectando...
reconnecting = [accent]Reconectado...
connecting.data = [accent]Cargando datos del mundo...
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.
server.port = Puerto:
server.invalidport = ¡El número de puerto no es valido!
server.error.addressinuse = [scarlet]Error al abrir servidor en puerto 6567.[]\n\n¡Asegúrate que no haya otros servidores Mindustry corriendo en tu dispositivo o red!
@@ -344,6 +352,10 @@ save.export = Exportar archivo de guardado
save.import.invalid = [accent]¡Este archivo no es válido!
save.import.fail = [scarlet]Hubo un fallo al importar el archivo de guardado: [accent]{0}
save.export.fail = [scarlet]Ha fallado la exportación del guardado: [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.import = Importar guardado
save.newslot = Nombre del archivo de guardado:
save.rename = Renombrar
@@ -479,14 +491,6 @@ editor.rules = Normas:
editor.generation = Generación:
editor.objectives = Objetivos
editor.locales = Paquetes de localización
editor.patches.guide = Guia de parches
editor.patches = Parches de datos
editor.patch = Conjunto de parches: {0}
editor.patches.none = [lightgray]No hay conjuntos de parches cargados.
editor.patches.errors = Errores del conjunto de parches
editor.patches.importerror = Error al importar el conjunto de parches
editor.patches.delete.confirm = ¿Estas seguro de eliminar este conjunto de parches?
editor.patch.fields = {0} campos
editor.worldprocessors = Procesadores estáticos
editor.worldprocessors.editname = Editar nombre
editor.worldprocessors.none = [lightgray]¡No se encontraron procesadores estáticos!\nAñade uno en el editor del mapa, o usa el botón \ue813 Añadir.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Priorizar Personalizados
editor.filters.planetselect = Planet Selection
editor.shiftx = Trasladar X
editor.shifty = Trasladar Y
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Parches de datos
patch.set = Patchset: {0}
patch.none = [lightgray]No hay conjuntos de parches cargados.
patch.errors = Errores del conjunto de parches
patch.importerror = Error al importar el conjunto de parches
patch.delete.confirm = ¿Estas seguro de eliminar este conjunto de parches?
patch.path = Path:
patch.fields = {0} campos
bundle.lines = {0} lines
images = Images
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.
workshop = Steam Workshop
waves.title = Oleadas
waves.team = Equipo
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](primero {0})
waves.max = máximo de unidades
waves.guardian = Guardián
waves.preview = Vista previa
waves.edit = Editar...
waves.random = Aleatorizadas
waves.copy = Copiar al portapapeles
waves.load = Cargar del portapapeles
@@ -556,6 +628,7 @@ all = Todos
editor.default = [lightgray]<Por defecto>
details = Detalles...
edit = Editar...
edit.menu = Edit...
variables = Variables
logic.error.toolong = Processor code too long (Limit: {0} compressed bytes, actual length: {1} bytes)
logic.clear.confirm = ¿Seguro quieres limpiar todo el código de este procesador?
@@ -1068,6 +1141,7 @@ stat.targetsground = Apunta a tierra
stat.crushdamage = Daño de aplastamiento
stat.legsplashdamage = Daño de área por pisotón
stat.itemsmoved = Velocidad de movimiento
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = Tiempo entre lanzamientos
stat.shootrange = Alcance
stat.size = Tamaño
@@ -1545,6 +1619,7 @@ rules.enemyCheat = La IA (Equipo Rojo) tiene recursos infinitos
rules.blockhealthmultiplier = Multiplicador de vida de estructuras
rules.blockdamagemultiplier = Multiplicador de daño de estructuras
rules.unitfactoryactivation = Retardo de activación de las fabricas de unidades
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = Multiplicador de velocidad de producción de unidades
rules.unitcostmultiplier = Multiplicador de costo de unidades
rules.unithealthmultiplier = Multiplicador de vida de unidades
@@ -1586,7 +1661,7 @@ rules.invasions = Invasiones de sector enemigo
rules.legacylaunchpads = Mecánicas antiguas de la plataforma de lanzamiento
rules.legacylaunchpads.info = Permite usar plataformas de lanzamiento sin plataformas de aterrizaje, como en la versión 7.0.
landingpad.legacy.disabled = [scarlet]\ue815 Desactivado[lightgray] (Plataformas de lanzamiento antiguas activadas)
rules.showspawns = Mostrar puntos de aparición de unidades enemigas
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = IA de las oleadas impredecible
rules.pauseDisabled = Desactivar la pausa
rules.fire = Fuego
@@ -2691,6 +2766,7 @@ lst.setprop = Establece una propiedad de una unidad o construcción.
lst.effect = Crea un efecto de partículas.
lst.sync = Sincroniza una variable a través de la red.\nSolo se invoca 10 veces por segundo como máximo.
lst.playsound = Reproduce un sonido.\nEl volumen y la panorámica pueden ser valores globales, o pueden ser calculados basados en posició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.makemarker = Crea un nuevo marcador lógico en el mundo.\nUna ID para identificar este marcador debe proporcionarse.\nLos marcadores se limitan actualmente a 20,000 por mapa.
lst.setmarker = Establece una propiedad para un marcador.\nLa ID usada debe ser la misma que se uso en la instrucción Make Marker.
lst.localeprint = Añade el valor de una propiedad de localización al buffer de texto.\nPara establecer conjuntos de localización en el editor del mapa, revisa [accent]Información del mapa > Paquetes de localización[].\nSi el cliente es un dispositivo móvil, trata de imprimir primero una propiedad con terminación ".mobile".
+94 -18
View File
@@ -19,6 +19,7 @@ clipboardcopy = This server wants to copy text to your clipboard. Are you sure y
linkfail = Lingi avamine ebaõnnestus!\nVeebiaadress kopeeriti.
screenshot = Kuvatõmmis salvestati: {0}
screenshot.invalid = Maailm on liiga suur: kuvatõmmise salvestamiseks ei pruugi olla piisavalt mälu.
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = Mäng läbi!
gameover.disconnect = Lahku
gameover.pvp = Võistkond[accent] {0}[] võitis!
@@ -57,6 +58,13 @@ mods.github.open-release = Väljastusleht
mods.browser.sortdate = Sorteeri uusimad enne
mods.browser.sortstars = Sorteeri tähtede järgi
export.file = Ekspordi Fail
import.file = Impordi Fail
copy.clipboard = Kopeeri Lõikelauale
import.clipboard = Impordi Lõikelaualt
workshop.browse = Browse Workshop
workshop.share = Jaga Workshop'is
schematic = Skeem
schematic.add = Salvesta Skeem...
schematics = Skeemid
@@ -64,12 +72,6 @@ schematic.search = Otsi skeemide hulgast...
schematic.replace = Selle nimega skeem juba eksisteerib. Asenda?
schematic.exists = Selle nimega skeem juba eksisteerib.
schematic.import = Impordi Skeem...
schematic.exportfile = Ekspordi Fail
schematic.importfile = Impordi Fail
schematic.browseworkshop = Lehitse Workshop'i
schematic.copy = Kopeeri Lõikelauale
schematic.copy.import = Impordi Lõikelaualt
schematic.shareworkshop = Jaga Workshop'is
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Peegelda Skeem
schematic.saved = Skeem salvestatud.
schematic.delete.confirm = See skeem hävitatakse täielikult.
@@ -177,6 +179,7 @@ mod.incompletedependencies.details = This mod is unable to be loaded due to inva
mod.requiresversion = Requires game version: [red]{0}
mod.errors = Errors have occurred loading content.
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]You have mods with errors.[] Either disable the affected mods or fix the errors before playing.
mod.enable = Enable
mod.requiresrestart = The game will now close to apply the mod changes.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = Timed out while receiving UDP snapshots.\nThis may
cantconnect = Mänguga ei saanud liituda ([accent]{0}[]).
connecting = [accent]Ühendamine...
reconnecting = [accent]Reconnecting...
connecting.data = [accent]Maailma andmete allalaadimine...
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.
server.port = Port:
server.invalidport = Ebasobiv pordi number!
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!
@@ -344,6 +352,10 @@ save.export = Ekspordi
save.import.invalid = [accent]See salvestis on kehtetu!
save.import.fail = [crimson]Salvestise importimine ebaõnnestus: [accent]{0}
save.export.fail = [crimson]Salvestise eksportimine ebaõnnestus: [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.import = Impordi
save.newslot = Salvestise nimi:
save.rename = Nimeta ümber
@@ -479,14 +491,6 @@ editor.rules = Reeglid:
editor.generation = Genereerimine:
editor.objectives = Objectives
editor.locales = Locale Bundles
editor.patches.guide = Patch Guide
editor.patches = Content Patches
editor.patch = Patchset: {0}
editor.patches.none = [lightgray]No patchsets loaded.
editor.patches.errors = Patchset Errors
editor.patches.importerror = Failed to import patchset
editor.patches.delete.confirm = Are you sure you want to delete this patchset?
editor.patch.fields = {0} fields
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.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Custom Priority
editor.filters.planetselect = Planet Selection
editor.shiftx = Shift X
editor.shifty = Shift Y
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Content Patches
patch.set = Patchset: {0}
patch.none = [lightgray]No patchsets loaded.
patch.errors = Patchset Errors
patch.importerror = Failed to import patchset
patch.delete.confirm = Are you sure you want to delete this patchset?
patch.path = Path:
patch.fields = {0} fields
bundle.lines = {0} lines
images = Images
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.
workshop = Workshop
waves.title = Lahingulained
waves.team = Team
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](first {0})
waves.max = max units
waves.guardian = Guardian
waves.preview = Eelvaade
waves.edit = Muuda...
waves.random = Random
waves.copy = Kopeeri puhvrisse
waves.load = Lae puhvrist
@@ -556,6 +628,7 @@ all = All
editor.default = [lightgray]<Vaikimisi>
details = Üksikasjad...
edit = Muuda...
edit.menu = Edit...
variables = Vars
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?
@@ -1068,6 +1141,7 @@ stat.targetsground = Sihib maapinnale
stat.crushdamage = Crush Damage
stat.legsplashdamage = Leg Splash Damage
stat.itemsmoved = Transportimise kiirus
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = Aeg lendutõusude vahel
stat.shootrange = Ulatus
stat.size = Suurus
@@ -1545,6 +1619,7 @@ rules.enemyCheat = [scarlet]Vaenlastel[] on lõputult ressursse
rules.blockhealthmultiplier = Block Health Multiplier
rules.blockdamagemultiplier = Block Damage Multiplier
rules.unitfactoryactivation = Unit Factory Activation Delay
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = Väeüksuste tootmiskiiruse kordaja
rules.unitcostmultiplier = Unit Cost Multiplier
rules.unithealthmultiplier = Väeüksuste elude kordaja
@@ -1586,7 +1661,7 @@ rules.invasions = Enemy Sector Invasions
rules.legacylaunchpads = Legacy Launch Pad Mechanics
rules.legacylaunchpads.info = Allows using launch pads without landing pads, as in 7.0.
landingpad.legacy.disabled = [scarlet]\ue815 Disabled[lightgray] (Legacy Launch Pads enabled)
rules.showspawns = Show Enemy Spawns
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = Unpredictable Wave AI
rules.pauseDisabled = Disable Pausing
rules.fire = Fire
@@ -2615,7 +2690,7 @@ unit.risso.description = Fires a barrage of missiles and bullets at all nearby e
unit.minke.description = Fires shells and standard bullets at nearby ground targets.
unit.bryde.description = Fires long-range artillery shells and missiles at enemies.
unit.sei.description = Fires a barrage of missiles and armor-piercing bullets at enemies.
unit.omura.description = Fires a long-range piercing railgun bolt at enemies. Constructs flare units.
unit.omura.description = Fires a long-range piercing railgun bolt at enemies.
unit.alpha.description = Defends the Shard core from enemies. Builds structures.
unit.beta.description = Defends the Foundation core from enemies. Builds structures.
unit.gamma.description = Defends the Nucleus core from enemies. Builds structures.
@@ -2691,6 +2766,7 @@ lst.setprop = Sets a property of a unit or building.
lst.effect = Create a particle effect.
lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most.
lst.playsound = Plays a sound.\nVolume and pan can be a global value, or calculated based on position.
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.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
+94 -18
View File
@@ -19,6 +19,7 @@ clipboardcopy = This server wants to copy text to your clipboard. Are you sure y
linkfail = Huts egin du esteka irekitzean!\nURL-a zure arbelera kopiatu da.
screenshot = Pantaila-argazkia {0} helbidean gorde da
screenshot.invalid = Mapa handiegia, baliteke pantaila-argazkirako memoria nahiko ez egotea.
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = Partida amaitu da
gameover.disconnect = Deskonektatu
gameover.pvp = [accent] {0}[] taldeak irabazi du!
@@ -57,6 +58,13 @@ mods.github.open-release = Bertsioaren orria
mods.browser.sortdate = Ordenatu dataren arabera
mods.browser.sortstars = Ordenatu izarren arabera
export.file = Esportatu fitxategia
import.file = Inportatu fitxategia
copy.clipboard = Kopiatu arbelera
import.clipboard = Inportatu arbeletik
workshop.browse = Browse Workshop
workshop.share = Partekatu tailerrean
schematic = Eskema
schematic.add = Gorde eskema...
schematics = Eskemak
@@ -64,12 +72,6 @@ schematic.search = Search schematics...
schematic.replace = Badago izen bereko eskema bat. Ordeztu nahi duzu?
schematic.exists = Badago izen bereko eskema bat.
schematic.import = Inportatu eskema...
schematic.exportfile = Esportatu fitxategia
schematic.importfile = Inportatu fitxategia
schematic.browseworkshop = Arakatu tailerra
schematic.copy = Kopiatu arbelera
schematic.copy.import = Inportatu arbeletik
schematic.shareworkshop = Partekatu tailerrean
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: itzulbiratu eskema
schematic.saved = Eskema gordeta.
schematic.delete.confirm = Eskema hau behin betiko suntsituko da.
@@ -177,6 +179,7 @@ mod.incompletedependencies.details = Mod hau ezin da kargatu dependentzia elbarr
mod.requiresversion = Beharrezko joko bertsioa: [red]{0}
mod.errors = Erroreak gertatu dira edukia kargatzean.
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]Erroreak dituzten mod-ak dituzu.[] Desgaitu kaltetutako mod-ak edo konpondu erroreak jolastu aurretik.
mod.enable = Gaitu
mod.requiresrestart = Jolasa itxi egingo da mod-aren aldaketak aplikatzeko.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = Denbora agortuta UDPren argazkiak jasotzen zituen b
cantconnect = Ezin izan da partidara elkartu ([accent]{0}[]).
connecting = [accent]Konektatzen...
reconnecting = [accent]Birkonektatzen...
connecting.data = [accent]Munduaren datuak kargatzen...
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.
server.port = Ataka:
server.invalidport = Ataka zenbaki baliogabea!
server.error.addressinuse = [scarlet]Errorea zerbitzaria 6567 portuan konektatzerakoan.[]\n\nZiurtatu beste Mindustry zerbitzaririk ez dabilela zure gailuan edo sarean!
@@ -344,6 +352,10 @@ save.export = Esportatu gordetako partida
save.import.invalid = [accent]Gordetako partida hau baliogabea da!
save.import.fail = [crimson]Huts egin du gordetako partida inportatzean: [accent]{0}
save.export.fail = [crimson]Huts egin du gordetako partida esportatzean: [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.import = Inportatu gordetako partida
save.newslot = Gordetako partidaren izena:
save.rename = Aldatu izena
@@ -479,14 +491,6 @@ editor.rules = Arauak:
editor.generation = Sorrarazi:
editor.objectives = Helburuak
editor.locales = Eskualde-konfigurazioko paketeak
editor.patches.guide = Adabakien gida
editor.patches = Eduki adabakiak
editor.patch = Adabaki multzoa: {0}
editor.patches.none = [lightgray]Ez dago adabaki multzorik kargatuta.
editor.patches.errors = Adabaki multzoen erroreak
editor.patches.importerror = Errorea adabakien multzoa inportatzean
editor.patches.delete.confirm = Ziur zaude adabaki multzo hau ezabatu nahi duzula?
editor.patch.fields = {0} eremuak
editor.worldprocessors = Munduko prozesadoreak
editor.worldprocessors.editname = Izena editatu
editor.worldprocessors.none = [lightgray]Ez dira munduko prozesadore blokeak aurkitu!\nGehitu bat mapa-editorean edo erabili \ue813 Gehitu botoia segituan.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Custom Priority
editor.filters.planetselect = Planet Selection
editor.shiftx = Shift X
editor.shifty = Shift Y
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Eduki adabakiak
patch.set = Patchset: {0}
patch.none = [lightgray]Ez dago adabaki multzorik kargatuta.
patch.errors = Adabaki multzoen erroreak
patch.importerror = Errorea adabakien multzoa inportatzean
patch.delete.confirm = Ziur zaude adabaki multzo hau ezabatu nahi duzula?
patch.path = Path:
patch.fields = {0} eremuak
bundle.lines = {0} lines
images = Images
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.
workshop = Lantegia
waves.title = Boladak
waves.team = Taldea
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](first {0})
waves.max = unitate maximoa
waves.guardian = Zaindaria
waves.preview = Aurrebista
waves.edit = Editatu...
waves.random = Ausaz
waves.copy = Kopiatu arbelera
waves.load = Kargatu arbeletik
@@ -556,6 +628,7 @@ all = Denak
editor.default = [lightgray]<Lehenetsia>
details = Xehetasunak...
edit = Editatu...
edit.menu = Edit...
variables = aldagaiak
logic.error.toolong = Processor code too long (Limit: {0} compressed bytes, actual length: {1} bytes)
logic.clear.confirm = Ziur zaude prozesadore honen kode guztia garbitu nahi duzula?
@@ -1068,6 +1141,7 @@ stat.targetsground = Lurrera tirokatzen du
stat.crushdamage = Zapalketak eragindako kaltea
stat.legsplashdamage = Hanketako zipriztinek eragindako kalteak.
stat.itemsmoved = Garraio-abiadura
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = Egozketen arteko denbora
stat.shootrange = Irismena
stat.size = Neurria
@@ -1545,6 +1619,7 @@ rules.enemyCheat = AI-k (talde gorriak) baliabide amaigabeak ditu
rules.blockhealthmultiplier = Blokeen osasun biderkatzailea
rules.blockdamagemultiplier = Blokeen kalte biderkatzailea
rules.unitfactoryactivation = Unit Factory Activation Delay
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = Unitateen sorrerarako abiadura-biderkatzailea
rules.unitcostmultiplier = Unit Cost Multiplier
rules.unithealthmultiplier = Unitateen osasun-biderkatzailea
@@ -1586,7 +1661,7 @@ rules.invasions = Etsaien sektorearen inbasioak
rules.legacylaunchpads = Oinordetzan hartutako jaurtiketa-plataformaren mekanika
rules.legacylaunchpads.info = 7.0 bertsioan bezala, lurreratze-plataformarik gabeko jaurtiketa-plataformak erabiltzea baimentzen du.
landingpad.legacy.disabled = [scarlet]\ue815 Desgaituta[lightgray] (Oinordetzan hartutako jaurtiketa plataforma gaitu)
rules.showspawns = Etsaien spawn-ak erakutsi
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = Olatu aurreikusezinen AI
rules.pauseDisabled = Disable Pausing
rules.fire = Sua
@@ -2615,7 +2690,7 @@ unit.risso.description = Fires a barrage of missiles and bullets at all nearby e
unit.minke.description = Fires shells and standard bullets at nearby ground targets.
unit.bryde.description = Fires long-range artillery shells and missiles at enemies.
unit.sei.description = Fires a barrage of missiles and armor-piercing bullets at enemies.
unit.omura.description = Fires a long-range piercing railgun bolt at enemies. Constructs flare units.
unit.omura.description = Fires a long-range piercing railgun bolt at enemies.
unit.alpha.description = Defends the Shard core from enemies. Builds structures.
unit.beta.description = Defends the Foundation core from enemies. Builds structures.
unit.gamma.description = Defends the Nucleus core from enemies. Builds structures.
@@ -2691,6 +2766,7 @@ lst.setprop = Sets a property of a unit or building.
lst.effect = Create a particle effect.
lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most.
lst.playsound = Plays a sound.\nVolume and pan can be a global value, or calculated based on position.
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.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
+94 -18
View File
@@ -19,6 +19,7 @@ clipboardcopy = This server wants to copy text to your clipboard. Are you sure y
linkfail = Linkin avaaminen epäonnistui!\nOsoite on kopioitu leikepöydällesi.
screenshot = Kuvankaappaus tallennettu sijaintiin {0}
screenshot.invalid = Kartta liian laaja, levytila voi olla liian vähissä kuvankaappausta varten.
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = Peli ohi
gameover.disconnect = Katkaise yhteys
gameover.pvp = [accent] {0}[] joukkue voittaa!
@@ -57,6 +58,13 @@ mods.github.open-release = Julkaisusivu
mods.browser.sortdate = Järjestä laskevaan aikajärjestykseen
mods.browser.sortstars = Järjestä tähtien määrän perusteella
export.file = Vie tiedosto
import.file = Tuo tiedosto
copy.clipboard = Kopioi leikepöydälle
import.clipboard = Tuo leikepöydältä
workshop.browse = Browse Workshop
workshop.share = Jaa Workshoppiin
schematic = Kaavio
schematic.add = Tallenna kaavio...
schematics = Kaaviot
@@ -64,12 +72,6 @@ schematic.search = Search schematics...
schematic.replace = Kaavio tällä nimellä on jo olemassa. Haluatko korvata sen?
schematic.exists = Kaavio tällä nimellä on jo olemassa.
schematic.import = Tuo kaavio...
schematic.exportfile = Vie tiedosto
schematic.importfile = Tuo tiedosto
schematic.browseworkshop = Selaa Steam Workshoppia
schematic.copy = Kopioi leikepöydälle
schematic.copy.import = Tuo leikepöydältä
schematic.shareworkshop = Jaa Workshoppiin
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Käännä Kaavio
schematic.saved = Kaavio tallennettu.
schematic.delete.confirm = Tämä kaavio poistetaan.
@@ -177,6 +179,7 @@ mod.incompletedependencies.details = This mod is unable to be loaded due to inva
mod.requiresversion = Requires game version: [red]{0}
mod.errors = Virheitä on tapahtunut pelin ladatessa.
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]Sinulla on virheellisiä modeja.[] Joko poista ne käytöstä tai korjaa virheet.
mod.enable = Käytä
mod.requiresrestart = Peli suljetaan jotta muutokset voisivat toteutua.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = Timed out while receiving UDP snapshots.\nThis may
cantconnect = Peliin ei voitu liittyä ([accent]{0}[]).
connecting = [accent]Yhdistetään...
reconnecting = [accent]Yhdistetään uudelleen...
connecting.data = [accent]Ladataan maailman tietoja...
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.
server.port = Portti:
server.invalidport = Tällä portilla ei löytynyt peliä!
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!
@@ -344,6 +352,10 @@ save.export = Vie tallennus
save.import.invalid = [accent]Tämä tallennus on kelvoton!
save.import.fail = [crimson]Tallennuksen tuominen epäonnistui: [accent]{0}
save.export.fail = [crimson]Tallennuksen vieminen epäonnistui: [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.import = Tuo tallennus
save.newslot = Tallennuksen nimi:
save.rename = Nimeä uudelleen
@@ -479,14 +491,6 @@ editor.rules = Säännöt:
editor.generation = Generaatio:
editor.objectives = Tehtävät
editor.locales = Locale Bundles
editor.patches.guide = Patch Guide
editor.patches = Content Patches
editor.patch = Patchset: {0}
editor.patches.none = [lightgray]No patchsets loaded.
editor.patches.errors = Patchset Errors
editor.patches.importerror = Failed to import patchset
editor.patches.delete.confirm = Are you sure you want to delete this patchset?
editor.patch.fields = {0} fields
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.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Custom Priority
editor.filters.planetselect = Planet Selection
editor.shiftx = Siirrä X-akselin suunnassa
editor.shifty = Siirrä Y-akselin suunnassa
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Content Patches
patch.set = Patchset: {0}
patch.none = [lightgray]No patchsets loaded.
patch.errors = Patchset Errors
patch.importerror = Failed to import patchset
patch.delete.confirm = Are you sure you want to delete this patchset?
patch.path = Path:
patch.fields = {0} fields
bundle.lines = {0} lines
images = Images
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.
workshop = Työpaja
waves.title = Tasot
waves.team = Team
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](first {0})
waves.max = maksimijoukot
waves.guardian = Vartija
waves.preview = Esikatselu
waves.edit = Muokkaa...
waves.random = Random
waves.copy = Kopioi leikepöydälle
waves.load = Lataa leikepöydältä
@@ -556,6 +628,7 @@ all = All
editor.default = [lightgray]<Oletus>
details = Yksityiskohdat...
edit = Muokkaa...
edit.menu = Edit...
variables = Muuttujat
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?
@@ -1068,6 +1141,7 @@ stat.targetsground = Hyökkää maahan
stat.crushdamage = Crush Damage
stat.legsplashdamage = Leg Splash Damage
stat.itemsmoved = Liikkumisnopeus
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = Aika laukaisujen välillä
stat.shootrange = Kantama
stat.size = Koko
@@ -1545,6 +1619,7 @@ rules.enemyCheat = Loputtomat AI:n (punaisen joukkueen) resurssit
rules.blockhealthmultiplier = Palikkojen elämäpistekerroin
rules.blockdamagemultiplier = Palikkojen vahinkokerroin
rules.unitfactoryactivation = Unit Factory Activation Delay
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = Yksikköjen tuotantonopeuskerroin
rules.unitcostmultiplier = Unit Cost Multiplier
rules.unithealthmultiplier = Yksikköjen elämäpistekerroin
@@ -1586,7 +1661,7 @@ rules.invasions = Enemy Sector Invasions
rules.legacylaunchpads = Legacy Launch Pad Mechanics
rules.legacylaunchpads.info = Allows using launch pads without landing pads, as in 7.0.
landingpad.legacy.disabled = [scarlet]\ue815 Disabled[lightgray] (Legacy Launch Pads enabled)
rules.showspawns = Show Enemy Spawns
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = Unpredictable Wave AI
rules.pauseDisabled = Disable Pausing
rules.fire = Tuli
@@ -2615,7 +2690,7 @@ unit.risso.description = Ampuu ryöpyn ohjuksia ja ammuksia kaikkiin läheisiin
unit.minke.description = Ampuu kranaatteja ja normaaleja ammuksia läheisiin maakohteisiin.
unit.bryde.description = Ampuu pitkän kantaman tykistötulta ja ohjuksia vihollisiin.
unit.sei.description = Ampuu ryöpyn ohjuksia ja haarniskan läpäiseviä ammuksia vihollisiin.
unit.omura.description = Ampuu pitkän kantaman lävistävän raidetykin vasaman vihollisiin. Tuottaa Flare-yksiköitä.
unit.omura.description = Ampuu pitkän kantaman lävistävän raidetykin vasaman vihollisiin.
unit.alpha.description = Puolustaa Siru-ydintä vihollisilta. Rakentaa rakennuksia.
unit.beta.description = Puolustaa Pohjaus-ydintä vihollisilta. Rakentaa rakennuksia.
unit.gamma.description = Puolustaa Tuma-ydintä vihollisilta. Rakentaa rakennuksia.
@@ -2691,6 +2766,7 @@ lst.setprop = Sets a property of a unit or building.
lst.effect = Create a particle effect.
lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most.
lst.playsound = Plays a sound.\nVolume and pan can be a global value, or calculated based on position.
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.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
+94 -18
View File
@@ -19,6 +19,7 @@ clipboardcopy = This server wants to copy text to your clipboard. Are you sure y
linkfail = Hindi mabuksan ang link!\nKinopya na sa iyong clipboard ang URL.
screenshot = Kinunan na ang screenshot sa {0}
screenshot.invalid = Masiyadong malaki ang lugar, maaaring kulang ang espasyo para sa screenshot.
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = Natapos ang laro.
gameover.disconnect = Nawalan ka ng koneksyon.
gameover.pvp = Ang[accent] {0}[] na pangkat ay nanalo!
@@ -57,6 +58,13 @@ mods.github.open-release = Pahina ng mga ipinalabas na bersyon
mods.browser.sortdate = Uriin sa pinakabago
mods.browser.sortstars = Uriin sa kasikatan
export.file = Mag-export ng File
import.file = Kumuha ng File
copy.clipboard = Kopyahin sa Clipboard
import.clipboard = Kunin mula sa Clipboard
workshop.browse = Browse Workshop
workshop.share = Ibahagi sa Workshop
schematic = Eskematiko
schematic.add = I-adya ang Eskematiko...
schematics = Mga Eskematiko
@@ -64,12 +72,6 @@ schematic.search = Search eskematiko...
schematic.replace = Ang eskematiko na ito ay magkaparehas ng pangalan. Gusto mo bang palitan ito?
schematic.exists = Ang eskematiko na ito ay magkaparehas ng pangalan.
schematic.import = Kunin ang eskematiko...
schematic.exportfile = Mag-export ng File
schematic.importfile = Kumuha ng File
schematic.browseworkshop = Maghanap sa Workshop
schematic.copy = Kopyahin sa Clipboard
schematic.copy.import = Kunin mula sa Clipboard
schematic.shareworkshop = Ibahagi sa Workshop
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Baligtarin ang eskematiko
schematic.saved = Nabago na ang eskematiko.
schematic.delete.confirm = Ang eskematiko na ito ay tuluyang mawawala.
@@ -177,6 +179,7 @@ mod.incompletedependencies.details = Hindi ma-load ang mod na ito dahil sa di-wa
mod.requiresversion = Nangangailangan ng bersyon ng laro: [red]{0}
mod.errors = May mga pagkamali na naitala habang binubuksan ang nilalaman.
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]May mga pangbago kang may pagkamali.[] Maaaring huwag munang paganahin ang mga apektadong pangbago o hindi kaya ay ayusin ang mga pagkamali bago maglaro.
mod.enable = Paganahin
mod.requiresrestart = Ang laro ay magsasara upang mailagay ang mga pagbabago sa pangbago.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = Timed out while receiving UDP snapshots.\nThis may
cantconnect = Hindi kayant sumali sa larong ([accent]{0}[]).
connecting = [accent]Connecting...
reconnecting = [accent]Reconnecting...
connecting.data = [accent]Loading world data...
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.
server.port = Port:
server.invalidport = Invalid port number!
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!
@@ -344,6 +352,10 @@ save.export = Ipamigay ang Save
save.import.invalid = [accent]Hindi puwede ang intong save!
save.import.fail = [scarlet]Pumalya ang pag-kuha ng save: [accent]{0}
save.export.fail = [scarlet]Pumalya ang pag-bigay ng save: [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.import = Kumuha ng Save
save.newslot = Pangalan ng save:
save.rename = Ipangalan ulit
@@ -479,14 +491,6 @@ editor.rules = Mga Alintuntunin:
editor.generation = Pagbuo:
editor.objectives = Mga Gawain
editor.locales = Locale Bundles
editor.patches.guide = Patch Guide
editor.patches = Content Patches
editor.patch = Patchset: {0}
editor.patches.none = [lightgray]No patchsets loaded.
editor.patches.errors = Patchset Errors
editor.patches.importerror = Failed to import patchset
editor.patches.delete.confirm = Are you sure you want to delete this patchset?
editor.patch.fields = {0} fields
editor.worldprocessors = Proseso ng Map
editor.worldprocessors.editname = Iedit ang pangalan
editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Custom Priority
editor.filters.planetselect = Planet Selection
editor.shiftx = Shift ang X
editor.shifty = Shift ang Y
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Content Patches
patch.set = Patchset: {0}
patch.none = [lightgray]No patchsets loaded.
patch.errors = Patchset Errors
patch.importerror = Failed to import patchset
patch.delete.confirm = Are you sure you want to delete this patchset?
patch.path = Path:
patch.fields = {0} fields
bundle.lines = {0} lines
images = Images
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.
workshop = Workshop
waves.title = Magaatake
waves.team = Pangkat
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](first {0})
waves.max = max units
waves.guardian = Guardian
waves.preview = Preview
waves.edit = Edit...
waves.random = Random
waves.copy = I-Copy to Clipboard
waves.load = I-Load mula sa Clipboard
@@ -556,6 +628,7 @@ all = Lahat
editor.default = [lightgray]<Default>
details = Mga Detalya...
edit = Edit...
edit.menu = Edit...
variables = Vars
logic.error.toolong = Processor code too long (Limit: {0} compressed bytes, actual length: {1} bytes)
logic.clear.confirm = Sigurado ka bang na gusto mo itangal ang lahat na code sa itong processor?
@@ -1068,6 +1141,7 @@ stat.targetsground = Tinatarget ng mga Ground
stat.crushdamage = Crush Damage
stat.legsplashdamage = Leg Splash Damage
stat.itemsmoved = Bilis ng Pag-galaw
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = Oras sa pagitan ng mga launches
stat.shootrange = Saklaw
stat.size = Laki
@@ -1545,6 +1619,7 @@ rules.enemyCheat = Infinite AI (Red Team) Resources
rules.blockhealthmultiplier = Block Health Multiplier
rules.blockdamagemultiplier = Block Damage Multiplier
rules.unitfactoryactivation = Unit Factory Activation Delay
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = Unit Production Speed Multiplier
rules.unitcostmultiplier = Unit Cost Multiplier
rules.unithealthmultiplier = Unit Health Multiplier
@@ -1586,7 +1661,7 @@ rules.invasions = Enemy Sector Invasions
rules.legacylaunchpads = Legacy Launch Pad Mechanics
rules.legacylaunchpads.info = Allows using launch pads without landing pads, as in 7.0.
landingpad.legacy.disabled = [scarlet]\ue815 Disabled[lightgray] (Legacy Launch Pads enabled)
rules.showspawns = Show Enemy Spawns
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = Unpredictable Wave AI
rules.pauseDisabled = Disable Pausing
rules.fire = Fire
@@ -2615,7 +2690,7 @@ unit.risso.description = Fires a barrage of missiles and bullets at all nearby e
unit.minke.description = Fires shells and standard bullets at nearby ground targets.
unit.bryde.description = Fires long-range artillery shells and missiles at enemies.
unit.sei.description = Fires a barrage of missiles and armor-piercing bullets at enemies.
unit.omura.description = Fires a long-range piercing railgun bolt at enemies. Constructs flare units.
unit.omura.description = Fires a long-range piercing railgun bolt at enemies.
unit.alpha.description = Defends the Shard core from enemies. Builds structures.
unit.beta.description = Defends the Foundation core from enemies. Builds structures.
unit.gamma.description = Defends the Nucleus core from enemies. Builds structures.
@@ -2691,6 +2766,7 @@ lst.setprop = Sets a property of a unit or building.
lst.effect = Create a particle effect.
lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most.
lst.playsound = Plays a sound.\nVolume and pan can be a global value, or calculated based on position.
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.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
+94 -18
View File
@@ -19,6 +19,7 @@ clipboardcopy = Ce serveur souhaite copier du texte dans votre presse-papiers. V
linkfail = L'ouverture du lien a échoué ! \nL'URL a été copiée dans votre presse-papier.
screenshot = Capture d'écran sauvegardée dans {0}
screenshot.invalid = Carte trop grande, potentiellement pas assez de mémoire pour la capture d'écran.
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = Partie terminée
gameover.disconnect = Déconnecté
gameover.pvp = L'équipe[accent] {0}[] a gagné !
@@ -57,6 +58,13 @@ mods.github.open-release = Page Github
mods.browser.sortdate = Classer par date
mods.browser.sortstars = Classer par étoiles
export.file = Exporter le fichier
import.file = Importer un fichier
copy.clipboard = Copier dans le presse-papier
import.clipboard = Importer depuis presse-papier
workshop.browse = Browse Workshop
workshop.share = Partager sur le Steam Workshop
schematic = Schéma
schematic.add = Enregistrer le Schéma
schematics = Schémas
@@ -64,12 +72,6 @@ schematic.search = Chercher des schémas...
schematic.replace = Un schéma avec ce nom existe déjà. Voulez-vous le remplacer ?
schematic.exists = Un schéma avec ce nom existe déjà.
schematic.import = Importer un schéma
schematic.exportfile = Exporter le fichier
schematic.importfile = Importer un fichier
schematic.browseworkshop = Consulter le Steam Workshop
schematic.copy = Copier dans le presse-papier
schematic.copy.import = Importer depuis presse-papier
schematic.shareworkshop = Partager sur le Steam Workshop
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Retourner le schéma
schematic.saved = Schéma enregistré.
schematic.delete.confirm = Ce schéma sera supprimé définitivement !
@@ -177,6 +179,7 @@ mod.incompletedependencies.details = Ce mod ne peut pas être chargé en raison
mod.requiresversion = Requiert la version: [red]{0}
mod.errors = Des erreurs se sont produites lors du chargement du contenu.
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]Vous avez des mods avec des erreurs.[] Désactivez les mods concernés ou corrigez les erreurs avant de jouer.
mod.enable = Activer
mod.requiresrestart = Le jeu va maintenant se fermer pour appliquer les modifications du mod.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = Délai d'attente expiré en attendant la reception
cantconnect = Impossible de rejoindre ([accent]{0}[]).
connecting = [accent]Connexion...
reconnecting = [accent]Reconnexion...
connecting.data = [accent]Chargement des données du monde...
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.
server.port = Port :
server.invalidport = Numéro de port invalide !
server.error.addressinuse = [scarlet]Echec d'ouverture du port 6567.[]\n\nVérifier qu'aucun autre logiciel ne fonctionne sur ce port!
@@ -344,6 +352,10 @@ save.export = Exporter une sauvegarde
save.import.invalid = [accent]Cette sauvegarde est invalide !
save.import.fail = [crimson]L'importation de la sauvegarde\na échoué: [accent]{0}
save.export.fail = [crimson]L'exportation de la sauvegarde\na échoué: [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.import = Importer une sauvegarde
save.newslot = Nom de la sauvegarde :
save.rename = Renommer
@@ -479,14 +491,6 @@ editor.rules = Règles
editor.generation = Génération
editor.objectives = Objectifs
editor.locales = Traductions
editor.patches.guide = Guide de patch
editor.patches = Ensembles de patchs
editor.patch = Ensemble de patchs : {0}
editor.patches.none = [lightgray]Aucun ensemble de patchs chargé.
editor.patches.errors = Erreurs dans l'ensemble de patchs
editor.patches.importerror = Impossible d'importer l'ensemble de patchs
editor.patches.delete.confirm = Supprimer cet ensemble de patchs ?
editor.patch.fields = {0} champs
editor.worldprocessors = Processeurs globaux
editor.worldprocessors.editname = Editer le nom
editor.worldprocessors.none = [lightgray]Aucun processeur global trouvé !\nAjoutez-en un dans l'éditeur de carte, ou utilisez le bouton \ue813 Ajouter ci-dessous.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Priorité personnalisée
editor.filters.planetselect = Planet Selection
editor.shiftx = Décalage X
editor.shifty = Décalage Y
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Ensembles de patchs
patch.set = Patchset: {0}
patch.none = [lightgray]Aucun ensemble de patchs chargé.
patch.errors = Erreurs dans l'ensemble de patchs
patch.importerror = Impossible d'importer l'ensemble de patchs
patch.delete.confirm = Supprimer cet ensemble de patchs ?
patch.path = Path:
patch.fields = {0} champs
bundle.lines = {0} lines
images = Images
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.
workshop = Steam Workshop
waves.title = Vagues
waves.team = Équipe
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](first {0})
waves.max = unités maximum
waves.guardian = Gardien
waves.preview = Prévisualiser
waves.edit = Modifier...
waves.random = Aléatoire
waves.copy = Copier dans le presse-papiers
waves.load = Coller depuis le presse-papiers
@@ -556,6 +628,7 @@ all = Tout
editor.default = [lightgray]<par défaut>
details = Détails...
edit = Modifier...
edit.menu = Edit...
variables = Variables
logic.error.toolong = Processor code too long (Limit: {0} compressed bytes, actual length: {1} bytes)
logic.clear.confirm = Êtes-vous sûr de vouloir supprimer tout le code de ce processeur?
@@ -1068,6 +1141,7 @@ stat.targetsground = Cibles Terrestres
stat.crushdamage = Dégâts d'écrasement
stat.legsplashdamage = Dégâts de zone des jambes
stat.itemsmoved = Vitesse de Déplacement
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = Temps entre chaque lancement
stat.shootrange = Portée de tir
stat.size = Taille
@@ -1545,6 +1619,7 @@ rules.enemyCheat = Ressources infinies pour l'IA (équipe rouge)
rules.blockhealthmultiplier = Multiplicateur de Santé des Blocs
rules.blockdamagemultiplier = Multiplicateur de Dégât des Blocs
rules.unitfactoryactivation = Délai d'activation des usines d'unités
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = Multiplicateur de Vitesse de Construction des Unités
rules.unitcostmultiplier = Multiplicateur du coût de fabrication des Unités
rules.unithealthmultiplier = Multiplicateur de Santé des Unités
@@ -1586,7 +1661,7 @@ rules.invasions = L'ennemi peut attaquer vos secteurs
rules.legacylaunchpads = Anciennes rampes de lancement
rules.legacylaunchpads.info = Permet d'utiliser des rampes de lancement sans plateformes d'atterrissage, comme en 7.0.
landingpad.legacy.disabled = [scarlet]\ue815 Désactivé[lightgray] (ancien fonctionnement des rampes de lancement activées)
rules.showspawns = Afficher les points d'apparition ennemis
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = IA de vagues imprévisible
rules.pauseDisabled = Désactiver la pause
rules.fire = Feu
@@ -2615,7 +2690,7 @@ unit.risso.description = Tire un barrage de missiles et de balles aux ennemis pr
unit.minke.description = Tire des obus et des balles normales aux ennemis proches.
unit.bryde.description = Tire des obus d'artillerie à longue portée et des missiles aux ennemis proches.
unit.sei.description = Tire un barrage de missiles et de balles perçantes aux ennemis proches.
unit.omura.description = Tire avec un canon à rails à longue portée, une puissante balle perçante aux ennemis proches. Possède une usine à flares.
unit.omura.description = Tire avec un canon à rails à longue portée, une puissante balle perçante aux ennemis proches.
unit.alpha.description = Défend le Noyau fragment contre les ennemis. Peut construire des structures.
unit.beta.description = Défend le Noyau fondation contre les ennemis. Peut construire des structures.
unit.gamma.description = Défend le Noyau épicentre contre les ennemis. Peut construire des structures.
@@ -2691,6 +2766,7 @@ lst.setprop = Change une propriété d'une unité ou d'un bâtiment.
lst.effect = Crée un effet de particules.
lst.sync = Synchronise une variable dans le réseau.\nLimité à 20 fois par seconde et par variable.
lst.playsound = Joue un son.\nLe volume et le pan peuvent être une valeur globale, ou calculés selon la position.
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.makemarker = Crée un marqueur dans le monde.\nUn ID pour identifier le marqueur doit être donné.\nLes marqueurs sont limités à 20,000 par monde.
lst.setmarker = Change une propriété d'un marqueur.\nL'ID utilisé doit être le même que celui de l'instruction "Make Marker".
lst.localeprint = Ajoute la valeur d'une propriété de traduction à la mémoire tampon de texte.\nPour définir des traductions dans l'éditeur de carte, consultez [accent]Infos de carte > Traductions[].\nSi le client est un appareil mobile, essaie d'abord d'imprimer une propriété se terminant par ".mobile".
+93 -17
View File
@@ -19,6 +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.
gameover = A játéknak vége
gameover.disconnect = A kapcsolat megszakadt
gameover.pvp = A(z)[accent] {0}[] csapat nyert!
@@ -57,6 +58,13 @@ mods.github.open-release = Kiadások oldala
mods.browser.sortdate = Legutóbbiak
mods.browser.sortstars = Legjobbra értékeltek
export.file = Exportálás fájlba
import.file = Importálás fájlból
copy.clipboard = Másolás a vágólapra
import.clipboard = Importálás a vágólapról
workshop.browse = Browse Workshop
workshop.share = Megosztás a Steam Műhelyben
schematic = Vázlat
schematic.add = Vázlat mentése…
schematics = Vázlatok
@@ -64,12 +72,6 @@ schematic.search = Vázlat keresése…
schematic.replace = Már létezik ilyen nevű vázlat. Lecseréled?
schematic.exists = Már létezik ilyen nevű vázlat.
schematic.import = Vázlat importálása…
schematic.exportfile = Exportálás fájlba
schematic.importfile = Importálás fájlból
schematic.browseworkshop = Steam Műhely megtekintése
schematic.copy = Másolás a vágólapra
schematic.copy.import = Importálás a vágólapról
schematic.shareworkshop = Megosztás a Steam Műhelyben
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Vázlat tükrözése
schematic.saved = Vázlat mentve.
schematic.delete.confirm = Ez a vázlat törölve lesz.
@@ -177,6 +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.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.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = Időtúllépés történt az UDP-pillanatképek fog
cantconnect = Nem sikerült kapcsolódni a(z) ([accent]{0}[]) játékhoz.
connecting = [accent]Kapcsolódás…
reconnecting = [accent]Újrakapcsolódás…
connecting.data = [accent]Világadatok betöltése…
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.
server.port = Port:
server.invalidport = Érvénytelen port!
server.error.addressinuse = [scarlet]Nem sikerült megnyitni a kiszolgálót a 6567-es porton.[]\n\nGyőződj meg arról, hogy nem fut más Mindustry kiszolgáló az eszközön vagy a hálózaton!
@@ -344,6 +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.import = Mentés importálása
save.newslot = Mentés neve:
save.rename = Átnevezés
@@ -479,14 +491,6 @@ editor.rules = Szabályok
editor.generation = Előállítás
editor.objectives = Célok
editor.locales = Nyelvi csomagok
editor.patches.guide = Útmutató a javítócsomagokhoz
editor.patches = Javítócsomag-adatok
editor.patch = Javítócsomagok: {0}
editor.patches.none = [lightgray]Nincsenek javítócsomagok betöltve.
editor.patches.errors = Javítócsomag-hibák
editor.patches.importerror = Nem sikerült importálni a javítócsomagot
editor.patches.delete.confirm = Biztosan törölni szeretnéd ezt a javítócsomagot?
editor.patch.fields = {0} mező
editor.worldprocessors = Világprocesszorok
editor.worldprocessors.editname = Név szerkesztése
editor.worldprocessors.none = [lightgray]Nem találhatók világprocesszor-blokkok!\nAdj hozzá egyet a pályaszerkesztőben vagy használd az alábbi \ue813 hozzáadás gombot.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Egyéni előnyben részesítés
editor.filters.planetselect = Bolygóválasztás
editor.shiftx = X-eltolás
editor.shifty = Y-eltolás
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Javítócsomag-adatok
patch.set = Patchset: {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.fields = {0} mező
bundle.lines = {0} lines
images = Images
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.
workshop = Steam Műhely
waves.title = Hullámok
waves.team = Csapat
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](első {0})
waves.max = egységkorlát
waves.guardian = Őrző
waves.preview = Előnézet
waves.edit = Szerkesztés…
waves.random = Véletlenszerű
waves.copy = Másolás a vágólapra
waves.load = Betöltés a vágólapról
@@ -556,6 +628,7 @@ all = Összes
editor.default = [lightgray]<Alapértelmezett>
details = Részletek…
edit = Szerkesztés
edit.menu = Edit...
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?
@@ -1068,6 +1141,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.launchtime = Kilövések közötti idő
stat.shootrange = Hatótávolság
stat.size = Méret
@@ -1545,6 +1619,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.unitbuildspeedmultiplier = Egységek gyártási sebességszorzója
rules.unitcostmultiplier = Egységek költségszorzója
rules.unithealthmultiplier = Egységek életpontszorzója
@@ -1586,7 +1661,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.showspawns = Ellenséges kezdőpontok megjelenítése a minitérképen
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = Kiszámíthatatlan ellenséges támadások (MI)
rules.pauseDisabled = Szüneteltetés letiltása
rules.fire = Tűz
@@ -2691,6 +2766,7 @@ 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.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.
+93 -17
View File
@@ -19,6 +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.
gameover = Permainan Selesai
gameover.disconnect = Jaringan Terputus
gameover.pvp = Tim[accent] {0}[] menang!
@@ -57,6 +58,13 @@ 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
copy.clipboard = Salin ke papan klip
import.clipboard = Impor dari papan klip
workshop.browse = Browse Workshop
workshop.share = Bagikan di Workshop
schematic = Skematik
schematic.add = Menyimpan skematik...
schematics = Kumpulan skematik
@@ -64,12 +72,6 @@ schematic.search = Cari skematik...
schematic.replace = Skematik dengan nama tersebut telah ada. Ganti dengan yang baru?
schematic.exists = Skematik dengan nama tersebut telah ada.
schematic.import = Mengimpor skematik...
schematic.exportfile = Ekspor Berkas
schematic.importfile = Impor Berkas
schematic.browseworkshop = Cari di Workshop
schematic.copy = Salin ke papan klip
schematic.copy.import = Impor dari papan klip
schematic.shareworkshop = Bagikan di Workshop
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Balik Skematik
schematic.saved = Skematik telah disimpan.
schematic.delete.confirm = Skematik ini akan benar-benar dihapus.
@@ -177,6 +179,7 @@ mod.incompletedependencies.details = Mod ini gagal memuat karena kekurangan depe
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.enable = Aktifkan
mod.requiresrestart = Game akan ditutup untuk mengaktifkan perubahan mod.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = Waktu koneksi habis selama menerima snapshot UDP.\n
cantconnect = Gagal bergabung ke permainan ([accent]{0}[]).
connecting = [accent]Menghubungkan...
reconnecting = [accent]Menghubungkan kembali...
connecting.data = [accent]Memuat data dunia...
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.
server.port = Port:
server.invalidport = Nomor port tidak valid!
server.error.addressinuse = [scarlet]Gagal membuka server di port 6567.[]\n\nPastikan tidak ada server Mindustry lain yang berjalan di perangkat atau jaringan Anda!
@@ -344,6 +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.import = Impor Simpanan
save.newslot = Simpan nama:
save.rename = Ganti nama
@@ -479,14 +491,6 @@ editor.rules = Peraturan:
editor.generation = Generasi:
editor.objectives = Tujuan Peta
editor.locales = Paket Lokal
editor.patches.guide = Panduan Patch Data
editor.patches = Patch Data
editor.patch = Patchset: {0}
editor.patches.none = [lightgray]Tidak ada patchset yang dimuat.
editor.patches.errors = Daftar Patchset Error
editor.patches.importerror = Gagal mengimpor patchset
editor.patches.delete.confirm = Apakah Anda yakin ingin menghapus patchset ini?
editor.patch.fields = {0} bidang
editor.worldprocessors = Prosesor Dunia
editor.worldprocessors.editname = Sunting Nama
editor.worldprocessors.none = [lightgray]Tidak ada blok prosesor dunia yang ditemukan!\nTambahkan satu di penyunting peta, atau gunakan \ue813 tombol Tambah di bawah.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Prioritas Kustom
editor.filters.planetselect = Pemilihan Planet
editor.shiftx = Shift X
editor.shifty = Shift Y
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Patch Data
patch.set = Patchset: {0}
patch.none = [lightgray]Tidak ada patchset yang dimuat.
patch.errors = Daftar Patchset Error
patch.importerror = Gagal mengimpor patchset
patch.delete.confirm = Apakah Anda yakin ingin menghapus patchset ini?
patch.path = Path:
patch.fields = {0} bidang
bundle.lines = {0} lines
images = Images
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.
workshop = Workshop
waves.title = Gelombang
waves.team = Tim
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](pertama {0})
waves.max = unit maksimum
waves.guardian = Penjaga
waves.preview = Pratinjau
waves.edit = Sunting...
waves.random = Acak
waves.copy = Salin ke Papan Klip
waves.load = Tempel dari Papan Klip
@@ -556,6 +628,7 @@ all = Semua
editor.default = [lightgray]<Standar>
details = Detail...
edit = Sunting
edit.menu = Edit...
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?
@@ -1068,6 +1141,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.launchtime = Selang Waktu Peluncuran
stat.shootrange = Jarak
stat.size = Ukuran
@@ -1545,6 +1619,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.unitbuildspeedmultiplier = Penggandaan Kecepatan Produksi Unit
rules.unitcostmultiplier = Penggandaan Bahan Produksi Unit
rules.unithealthmultiplier = Penggandaan Nyawa Unit
@@ -1586,7 +1661,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.showspawns = Tampilkan Zona Pendaratan Musuh
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = Gelombang AI yang Tak Terduga
rules.pauseDisabled = Nonaktifkan Jeda
rules.fire = Api
@@ -2691,6 +2766,7 @@ 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.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.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.
+94 -18
View File
@@ -19,6 +19,7 @@ clipboardcopy = This server wants to copy text to your clipboard. Are you sure y
linkfail = Impossibile aprire il link! L'URL è stato copiato negli appunti.
screenshot = Screenshot salvato a {0}
screenshot.invalid = Mappa troppo pesante, probabilmente non c'è abbastanza spazio sul disco.
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = Hai Perso.
gameover.disconnect = Disconnetti
gameover.pvp = La squadra[accent] {0}[] ha vinto!
@@ -57,6 +58,13 @@ mods.github.open-release = Pagina delle versioni di Mindustry
mods.browser.sortdate = Ordinato per data
mods.browser.sortstars = Ordinato per stelle
export.file = Esporta File
import.file = Importa File
copy.clipboard = Copia negli Appunti
import.clipboard = Importa dagli Appunti
workshop.browse = Browse Workshop
workshop.share = Condividi nel Workshop
schematic = Schematica
schematic.add = Salva Schematica...
schematics = Schematiche
@@ -64,12 +72,6 @@ schematic.search = Search schematics...
schematic.replace = Esiste già una schematica con questo nome. Sostituirla?
schematic.exists = Esiste già una schematica con questo nome.
schematic.import = Importa schematica
schematic.exportfile = Esporta File
schematic.importfile = Importa File
schematic.browseworkshop = Sfoglia il Workshop
schematic.copy = Copia negli Appunti
schematic.copy.import = Importa dagli Appunti
schematic.shareworkshop = Condividi nel Workshop
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Ruota Schematica
schematic.saved = Schematica salvata.
schematic.delete.confirm = Questa schematica sarà cancellata definitivamente.
@@ -177,6 +179,7 @@ mod.incompletedependencies.details = Questa mod non è in grado di essere carica
mod.requiresversion = Requires game version: [red]{0}
mod.errors = Si sono verificati degli errori durante il caricamento del contenuto.
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]Sono presenti delle mod con errori.[] Puoi disabilitare le mod affette oppure sistemarle prima di giocare.
mod.enable = Abilita
mod.requiresrestart = Il gioco verrà chiuso per applicare i cambiamenti.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = Timed out while receiving UDP snapshots.\nThis may
cantconnect = Impossibile unirsi alla partita ([accent]{0}[]).
connecting = [accent]Connessione in corso...
reconnecting = [accent]Riconnessione in corso...
connecting.data = [accent]Caricamento del mondo...
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.
server.port = Porta:
server.invalidport = Numero porta non valido!
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!
@@ -344,6 +352,10 @@ save.export = Esporta Salvataggio
save.import.invalid = [accent]Questo salvataggio non è valido!
save.import.fail = [scarlet]Impossibile importare il salvataggio: [accent]{0}
save.export.fail = [scarlet]Impossibile esportare il salvataggio: [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.import = Importa Salvataggio
save.newslot = Nome:
save.rename = Rinomina
@@ -479,14 +491,6 @@ editor.rules = Regole:
editor.generation = Generazione:
editor.objectives = Obiettivi
editor.locales = Locale Bundles
editor.patches.guide = Patch Guide
editor.patches = Content Patches
editor.patch = Patchset: {0}
editor.patches.none = [lightgray]No patchsets loaded.
editor.patches.errors = Patchset Errors
editor.patches.importerror = Failed to import patchset
editor.patches.delete.confirm = Are you sure you want to delete this patchset?
editor.patch.fields = {0} fields
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.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Custom Priority
editor.filters.planetselect = Planet Selection
editor.shiftx = Shift X
editor.shifty = Shift Y
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Content Patches
patch.set = Patchset: {0}
patch.none = [lightgray]No patchsets loaded.
patch.errors = Patchset Errors
patch.importerror = Failed to import patchset
patch.delete.confirm = Are you sure you want to delete this patchset?
patch.path = Path:
patch.fields = {0} fields
bundle.lines = {0} lines
images = Images
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.
workshop = Workshop
waves.title = Ondate
waves.team = Team
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](first {0})
waves.max = numero massimo unità
waves.guardian = Guardiano
waves.preview = Anteprima
waves.edit = Modifica...
waves.random = Random
waves.copy = Copia negli Appunti
waves.load = Carica dagli Appunti
@@ -556,6 +628,7 @@ all = All
editor.default = [lightgray]<Predefinito>
details = Dettagli...
edit = Modifica...
edit.menu = Edit...
variables = Vars
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?
@@ -1068,6 +1141,7 @@ stat.targetsground = Attacca Nemici Terreni
stat.crushdamage = Crush Damage
stat.legsplashdamage = Leg Splash Damage
stat.itemsmoved = Velocità
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = Tempo tra Lanci
stat.shootrange = Raggio
stat.size = Dimensione
@@ -1545,6 +1619,7 @@ rules.enemyCheat = Risorse AI (squadra Rossa) Infinite
rules.blockhealthmultiplier = Moltiplicatore Salute Blocco
rules.blockdamagemultiplier = Moltiplicatore Danno Blocco
rules.unitfactoryactivation = Unit Factory Activation Delay
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = Moltiplicatore Velocità Costruzione Unità
rules.unitcostmultiplier = Moltiplicatore Costo Unità
rules.unithealthmultiplier = Moltiplicatore Vita Unità
@@ -1586,7 +1661,7 @@ rules.invasions = Enemy Sector Invasions
rules.legacylaunchpads = Legacy Launch Pad Mechanics
rules.legacylaunchpads.info = Allows using launch pads without landing pads, as in 7.0.
landingpad.legacy.disabled = [scarlet]\ue815 Disabled[lightgray] (Legacy Launch Pads enabled)
rules.showspawns = Show Enemy Spawns
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = Unpredictable Wave AI
rules.pauseDisabled = Disable Pausing
rules.fire = Fuoco
@@ -2615,7 +2690,7 @@ unit.risso.description = Spara una raffica di missili e proiettili ai nemici nel
unit.minke.description = Spara proiettili incendiari e standard alle unità terrene.
unit.bryde.description = Spara proiettili e missili a lungo raggio ai nemici.
unit.sei.description = Spara raffiche di missili e proiettili corazzati e perforanti ai nemici.
unit.omura.description = Utilizza un bullone sparatato grazie a due binari a scorrimento accelerati da un campo elettromagnetico. Lunga gittata e perforazione estrema. Costruisce unità flare.
unit.omura.description = Utilizza un bullone sparatato grazie a due binari a scorrimento accelerati da un campo elettromagnetico. Lunga gittata e perforazione estrema.
unit.alpha.description = Difende il nucleo Frammento dai nemici. Costruisce strutture.
unit.beta.description = Difende il nucleo Fondamento dai nemici. Costruisce strutture.
unit.gamma.description = Difende il nucleo Kernel dai nemici. Costruisce strutture.
@@ -2691,6 +2766,7 @@ lst.setprop = Sets a property of a unit or building.
lst.effect = Create a particle effect.
lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most.
lst.playsound = Plays a sound.\nVolume and pan can be a global value, or calculated based on position.
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.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
+94 -18
View File
@@ -19,6 +19,7 @@ clipboardcopy = このサーバーはクリップボードにテキストをコ
linkfail = リンクを開けませんでした!\nURLをクリップボードにコピーしました。
screenshot = スクリーンショットを {0} に保存しました。
screenshot.invalid = マップが広すぎます。スクリーンショットに必要なメモリが足りない可能性があります。
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = ゲームオーバー
gameover.disconnect = 切断
gameover.pvp = [accent] {0}[] チームの勝利!
@@ -57,6 +58,13 @@ mods.github.open-release = リリースページ
mods.browser.sortdate = 新しいものから並べる
mods.browser.sortstars = お気に入り数で並べる
export.file = ファイルに出力する
import.file = ファイルから読み込む
copy.clipboard = クリップボードにコピーする
import.clipboard = クリップボードから読み込む
workshop.browse = Browse Workshop
workshop.share = ワークショップで共有する
schematic = 設計図
schematic.add = 設計図を保存
schematics = 設計図一覧
@@ -64,12 +72,6 @@ schematic.search = 設計図を探す...
schematic.replace = その名前の設計図は既に存在しています。上書きしますか?
schematic.exists = その名前の設計図は既に存在しています。
schematic.import = 設計図をインポート
schematic.exportfile = ファイルに出力する
schematic.importfile = ファイルから読み込む
schematic.browseworkshop = ワークショップを表示する
schematic.copy = クリップボードにコピーする
schematic.copy.import = クリップボードから読み込む
schematic.shareworkshop = ワークショップで共有する
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: 反転
schematic.saved = 設計図を保存しました。
schematic.delete.confirm = この設計図は完全に削除されます。よろしいですか
@@ -177,6 +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.noerrorplay = [scarlet]以下のModにエラーがあります。[] Modを無効化するか、エラーを修正してください。
mod.enable = 有効化
mod.requiresrestart = このModをインストールするためにはゲームの再起動が必要です。
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = UDPスナップショットの受信中にタイム
cantconnect = ゲームに参加できませんでした。 ([accent]{0}[])
connecting = [accent]接続中...
reconnecting = [accent]再接続中...
connecting.data = [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.
server.port = ポート:
server.invalidport = 無効なポート番号です!
server.error.addressinuse = [scarlet]ポート6567でサーバーを開けませんでした。[]\n\nあなたのデバイスまたはネットワーク上で、他のMindustryサーバーが起動していないことを確認してください!
@@ -344,6 +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.import = インポート
save.newslot = セーブ名:
save.rename = 名前を変更
@@ -479,14 +491,6 @@ editor.rules = ルール:
editor.generation = 生成:
editor.objectives = オブジェクティブ
editor.locales = ロケールバンドル
editor.patches.guide = パッチガイド
editor.patches = コンテンツパッチ
editor.patch = パッチセット: {0}
editor.patches.none = [lightgray]パッチセットは読み込みされていません
editor.patches.errors = パッチセットのエラー
editor.patches.importerror = パッチセットのインポートに失敗しました
editor.patches.delete.confirm = このパッチセットを削除しますか?
editor.patch.fields = {0} フィールド
editor.worldprocessors = ワールドプロセッサー
editor.worldprocessors.editname = 名前の変更
editor.worldprocessors.none = [lightgray]ワールドプロセッサーが見つかりません!\nマップエディターで追加するか、下の \ue813 追加ボタンを使用してください。
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = カスタムの優先度
editor.filters.planetselect = Planet Selection
editor.shiftx = Shift X
editor.shifty = Shift Y
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = コンテンツパッチ
patch.set = Patchset: {0}
patch.none = [lightgray]パッチセットは読み込みされていません
patch.errors = パッチセットのエラー
patch.importerror = パッチセットのインポートに失敗しました
patch.delete.confirm = このパッチセットを削除しますか?
patch.path = Path:
patch.fields = {0} フィールド
bundle.lines = {0} lines
images = Images
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.
workshop = ワークショップ
waves.title = ウェーブ
waves.team = チーム
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](first {0})
waves.max = 最大ユニット数
waves.guardian = ガーディアン
waves.preview = プレビュー
waves.edit = 編集...
waves.random = ランダム
waves.copy = クリップボードにコピー
waves.load = クリップボードから読み込む
@@ -556,6 +628,7 @@ all = All
editor.default = [lightgray]<デフォルト>
details = 詳細...
edit = 編集...
edit.menu = Edit...
variables = 変数
logic.error.toolong = プロセッサのコードが長すぎます(制限: 圧縮後 {0} バイト、実際の長さ: {1} バイト)
logic.clear.confirm = このプロセッサからすべてのコードを消去しますか?
@@ -1068,6 +1141,7 @@ stat.targetsground = 対地攻撃
stat.crushdamage = クラッシュダメージ
stat.legsplashdamage = 踏みつぶしダメージ
stat.itemsmoved = 輸送速度
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = 発射の待機時間
stat.shootrange = 範囲
stat.size = 大きさ
@@ -1545,6 +1619,7 @@ rules.enemyCheat = 敵(赤チーム)の資源の無限化
rules.blockhealthmultiplier = ブロック体力倍率
rules.blockdamagemultiplier = ブロックダメージ倍率
rules.unitfactoryactivation = ユニット工場の起動遅延
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = ユニット製造速度倍率
rules.unitcostmultiplier = ユニット製造コスト倍率
rules.unithealthmultiplier = ユニット体力倍率
@@ -1586,7 +1661,7 @@ rules.invasions = 敵セクター侵攻
rules.legacylaunchpads = 旧発射台仕様
rules.legacylaunchpads.info = 着陸台なしで発射台を使用できるようにします(v7.0仕様)。
landingpad.legacy.disabled = [scarlet]\ue815 無効[lightgray](旧発射台は有効)
rules.showspawns = 敵発生地表示
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = 不規則なウェーブAI
rules.pauseDisabled = 一時停止の無効化
rules.fire = 火災
@@ -2615,7 +2690,7 @@ unit.risso.description = 近くの敵にミサイルと弾丸の弾幕を発射
unit.minke.description = 近くの地上目標に砲弾と標準的な弾丸を発射します。
unit.bryde.description = 敵に長距離砲弾とミサイルを発射します。
unit.sei.description = 敵にミサイルと徹甲弾の弾幕を発射します。
unit.omura.description = 敵に長距離かつ貫通性能を持つレールガンボルトを発射します。\nフレアユニットを生産します。
unit.omura.description = 敵に長距離かつ貫通性能を持つレールガンボルトを発射します。
unit.alpha.description = シャードコアを敵から守ります。\n建造物を建築します。
unit.beta.description = ファンデーションコアを敵から守ります。\n建造物を建築します。
unit.gamma.description = ニュークリアスコアを敵から守ります。\n建造物を建築します。
@@ -2691,6 +2766,7 @@ lst.setprop = ユニットまたは建物のプロパティを設定します。
lst.effect = パーティクルエフェクトを作成します。
lst.sync = ネットワーク経由で変数を同期します。\n最大で1秒間に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.makemarker = ワールドに新しいロジックマーカーを作成します。\nこのマーカーを識別するためのIDを指定する必要があります。\nマーカーは現在、1ワールドにつき最大20,000個までです。
lst.setmarker = マーカーのプロパティを設定します。\n使用するIDは"Make Marker"命令で指定したものと同じである必要があります。
lst.localeprint = マップのロケールプロパティの値をテキストバッファに追加します。\nマップエディタでロケールバンドルを設定するには、[accent]Map Info > Locale Bundles[] を確認してください。\nクライアントがモバイルの場合、末尾が ".mobile" のプロパティを優先して出力します。
+93 -17
View File
@@ -19,6 +19,7 @@ clipboardcopy = 이 서버에서 텍스트를 클립보드에 복사하려고
linkfail = 링크를 열지 못했습니다!\nURL이 클립보드에 복사되었습니다.
screenshot = 스크린샷이 {0} 에 저장되었습니다.
screenshot.invalid = 맵이 너무 커서 스크린샷에 사용될 메모리가 부족합니다.
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = 게임 오버
gameover.disconnect = 연결 끊기
gameover.pvp = [accent]{0}[] 팀이 승리했습니다!
@@ -57,6 +58,13 @@ mods.github.open-release = 릴리즈 페이지
mods.browser.sortdate = 최근 업데이트
mods.browser.sortstars = 추천(스타) 수
export.file = 파일 내보내기
import.file = 파일 가져오기
copy.clipboard = 클립보드에 복사
import.clipboard = 클립보드에서 가져오기
workshop.browse = Browse Workshop
workshop.share = 창작마당에 공유
schematic = 설계도
schematic.add = 설계도 저장하기
schematics = 설계도
@@ -64,12 +72,6 @@ schematic.search = 설계도 검색하기
schematic.replace = 해당 이름의 설계도가 이미 존재합니다. 교체하시겠습니까?
schematic.exists = 해당 이름의 설계도가 이미 존재합니다.
schematic.import = 설계도 가져오기
schematic.exportfile = 파일 내보내기
schematic.importfile = 파일 가져오기
schematic.browseworkshop = 창작마당 검색
schematic.copy = 클립보드에 복사
schematic.copy.import = 클립보드에서 가져오기
schematic.shareworkshop = 창작마당에 공유
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: 설계도 뒤집기
schematic.saved = 설계도 저장됨
schematic.delete.confirm = 이 설계도는 완전히 삭제될 것입니다.
@@ -177,6 +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.noerrorplay = [scarlet]오류가 있는 모드가 있습니다.[] 영향을 받는 모드를 비활성화하거나 플레이하기 전에 오류를 수정하세요.
mod.enable = 활성화
mod.requiresrestart = 모드 변경 사항을 적용하기 위해 게임을 종료합니다.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = UDP 스냅샷을 수신하는 동안 시간이 초
cantconnect = [accent]{0}[] 게임에 참여할 수 없습니다.
connecting = [accent]연결 중...
reconnecting = [accent]재접속 중...
connecting.data = [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.
server.port = 포트:
server.invalidport = 잘못된 포트 번호입니다!
server.error.addressinuse = [scarlet]포트 6567에서 서버를 열지 못했습니다.[]\n\n다른 Mindustry 서버가 귀하의 장치나 네트워크에서 실행되고 있지 않은지 확인하세요!
@@ -344,6 +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.import = 저장 가져오기
save.newslot = 저장 이름:
save.rename = 이름 변경
@@ -479,14 +491,6 @@ editor.rules = 규칙
editor.generation = 지형 생성
editor.objectives = 목표
editor.locales = 로케일 번들
editor.patches.guide = 패치 가이드
editor.patches = 데이터 패치
editor.patch = 패치셋: {0}
editor.patches.none = [lightgray]패치셋이 로드되지 않음.
editor.patches.errors = 패치셋 에러
editor.patches.importerror = 패치셋을 가져오는데 실패됨
editor.patches.delete.confirm = 이 패치셋을 삭제하시겠습니까?
editor.patch.fields = {0} 필드
editor.worldprocessors = 월드 프로세서
editor.worldprocessors.editname = 이름 수정
editor.worldprocessors.none = [lightgray]월드 프로세서 블록을 찾을 수 없습니다!\n맵 편집기에서 추가하거나 아래의 \ue813 추가 버튼을 사용하세요.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = 사용자 지정 우선순위
editor.filters.planetselect = Planet Selection
editor.shiftx = X축 밀기
editor.shifty = Y축 밀기
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = 데이터 패치
patch.set = Patchset: {0}
patch.none = [lightgray]패치셋이 로드되지 않음.
patch.errors = 패치셋 에러
patch.importerror = 패치셋을 가져오는데 실패됨
patch.delete.confirm = 이 패치셋을 삭제하시겠습니까?
patch.path = Path:
patch.fields = {0} 필드
bundle.lines = {0} lines
images = Images
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.
workshop = 창작마당
waves.title = 단계
waves.team = 팀
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](처음 {0}개)
waves.max = 기까지
waves.guardian = 수호자
waves.preview = 미리보기
waves.edit = 편집
waves.random = 무작위
waves.copy = 클립보드로 복사하기
waves.load = 클립보드에서 불러오기
@@ -556,6 +628,7 @@ all = 모두
editor.default = [lightgray]<기본값>
details = 설명...
edit = 편집...
edit.menu = Edit...
variables = 변수
logic.error.toolong = Processor code too long (Limit: {0} compressed bytes, actual length: {1} bytes)
logic.clear.confirm = 이 프로세서의 모든 코드를 삭제하시겠습니까?
@@ -1068,6 +1141,7 @@ stat.targetsground = 지상 조준
stat.crushdamage = 파쇄 피해
stat.legsplashdamage = 다리 짓밟기 피해
stat.itemsmoved = 이동 속도
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = 출격 간격
stat.shootrange = 사거리
stat.size = 크기
@@ -1545,6 +1619,7 @@ rules.enemyCheat = 적 AI 무한자원
rules.blockhealthmultiplier = 블록 체력 배수
rules.blockdamagemultiplier = 블록 피해량 배수
rules.unitfactoryactivation = 유닛 공장 활성화 지연
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = 유닛 생산속도 배수
rules.unitcostmultiplier = 유닛 비용 배수
rules.unithealthmultiplier = 유닛 체력 배수
@@ -1586,7 +1661,7 @@ rules.invasions = 적 지역 침공
rules.legacylaunchpads = 구 발사 패드 메커니즘
rules.legacylaunchpads.info = 7.0에서와 같이 착륙 패드 없이 발사 패드를 사용할 수 있습니다.
landingpad.legacy.disabled = [scarlet]\ue815 비활성화 됨[lightgray] (구 발사 패드 메커니즘 활성화 상태)
rules.showspawns = 적 스폰 표시
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = 무작위 단계 AI
rules.pauseDisabled = 일시 중지 비활성화
rules.fire = 방화 허용
@@ -2691,6 +2766,7 @@ lst.setprop = 유닛 혹은 건물의 속성을 설정합니다.
lst.effect = 파티클 효과를 만듭니다.
lst.sync = 네트워크 전체에서 변수를 동기화합니다.\n1초에 최대 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.makemarker = 월드에 새로운 논리 마커를 만듭니다.\n 이 마커를 식별할 ID를 제공해야 합니다.\n 현재 마커는 월드당 20,000개로 제한되어 있습니다.
lst.setmarker = 마커의 속성을 설정합니다.\n사용된 ID는 마커 만들기 지침에서와 동일해야 합니다.
lst.localeprint = 텍스트 버퍼에 맵 로케일 번들 속성 값을 추가합니다.\n맵 편집기에서 맵 로케일 번들을 설정하려면 [accent]맵 정보 > 로케일 번들[]을 선택합니다.\n클라이언트가 모바일 기기인 경우 먼저 ".mobile"로 끝나는 속성을 print하려고 시도합니다.
+94 -18
View File
@@ -19,6 +19,7 @@ clipboardcopy = This server wants to copy text to your clipboard. Are you sure y
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.
gameover = Žaidimas Baigtas
gameover.disconnect = Atsijungti
gameover.pvp = [accent] {0}[] komanda laimėjo!
@@ -57,6 +58,13 @@ mods.github.open-release = Leidimų puslapis
mods.browser.sortdate = Rūšioti pagal naujausius
mods.browser.sortstars = Rūšiuoti pagal žvaigždes
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.share = Dalintis Dirbtuvėje
schematic = Schema
schematic.add = Išsaugoti schemą...
schematics = Schemos
@@ -64,12 +72,6 @@ schematic.search = Ieškoti schemas...
schematic.replace = Schema šiuo pavadinimu jau egzistuoja. Pakeisti?
schematic.exists = Schema šiuo pavadinimu jau egzistuoja.
schematic.import = Importuoti schemą...
schematic.exportfile = Eksportuoti failą
schematic.importfile = Importuoti failą
schematic.browseworkshop = Naršyti Dirbtuvę
schematic.copy = Kopijuoti į iškarpinę
schematic.copy.import = Importuoti iš iškarpinės
schematic.shareworkshop = Dalintis Dirbtuvėje
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Apversti schemą
schematic.saved = Schema išsaugota.
schematic.delete.confirm = Ši schema bus negrįžtamai pašalinta.
@@ -177,6 +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.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.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = Timed out while receiving UDP snapshots.\nThis may
cantconnect = Negalima prisijungti prie žaidimo ([accent]{0}[]).
connecting = [accent]Prisijungiama...
reconnecting = [accent]Reconnecting...
connecting.data = [accent]Kraunama pasaulio informacija...
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.
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!
@@ -344,6 +352,10 @@ save.export = Eksportuoti Išsaugojimą
save.import.invalid = [accent]Šis išsaugojimas yra kalidingas!
save.import.fail = [crimson]Nepavyko importuoti išsaugojimo: [accent]{0}
save.export.fail = [crimson]Nepavyko exportuoti išsaugojimo: [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.import = Importuoti išsaugojimą
save.newslot = Išsaugojimo pavadinimas:
save.rename = Pervadinti
@@ -479,14 +491,6 @@ editor.rules = Taisyklės:
editor.generation = Generacija:
editor.objectives = Objectives
editor.locales = Locale Bundles
editor.patches.guide = Patch Guide
editor.patches = Content Patches
editor.patch = Patchset: {0}
editor.patches.none = [lightgray]No patchsets loaded.
editor.patches.errors = Patchset Errors
editor.patches.importerror = Failed to import patchset
editor.patches.delete.confirm = Are you sure you want to delete this patchset?
editor.patch.fields = {0} fields
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.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Custom Priority
editor.filters.planetselect = Planet Selection
editor.shiftx = Shift X
editor.shifty = Shift Y
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Content Patches
patch.set = Patchset: {0}
patch.none = [lightgray]No patchsets loaded.
patch.errors = Patchset Errors
patch.importerror = Failed to import patchset
patch.delete.confirm = Are you sure you want to delete this patchset?
patch.path = Path:
patch.fields = {0} fields
bundle.lines = {0} lines
images = Images
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.
workshop = Dirbtuvė
waves.title = Bangos
waves.team = Team
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](first {0})
waves.max = max units
waves.guardian = Guardian
waves.preview = Apžiūra
waves.edit = Redaguoti...
waves.random = Random
waves.copy = Kopijuoti į iškarpinę
waves.load = Užkrauti iš iškarpinės
@@ -556,6 +628,7 @@ all = All
editor.default = [lightgray]<Numatytasis>
details = Detaliau...
edit = Redaguoti...
edit.menu = Edit...
variables = Vars
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?
@@ -1068,6 +1141,7 @@ stat.targetsground = Šaudo į žemės taikinius
stat.crushdamage = Crush Damage
stat.legsplashdamage = Leg Splash Damage
stat.itemsmoved = Judėjimo Greitis
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = Laikas Tarp Paleidimų
stat.shootrange = Atstumas
stat.size = Dydis
@@ -1545,6 +1619,7 @@ rules.enemyCheat = Neriboti Kompiuterio (Raudonosios Komandos) Resursai
rules.blockhealthmultiplier = Blokų Gyvybių Daugiklis
rules.blockdamagemultiplier = Block Damage Multiplier
rules.unitfactoryactivation = Unit Factory Activation Delay
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = Vienetų Gamybos Greičio Daugiklis
rules.unitcostmultiplier = Unit Cost Multiplier
rules.unithealthmultiplier = Vienetų Gyvybių Daugiklis
@@ -1586,7 +1661,7 @@ rules.invasions = Enemy Sector Invasions
rules.legacylaunchpads = Legacy Launch Pad Mechanics
rules.legacylaunchpads.info = Allows using launch pads without landing pads, as in 7.0.
landingpad.legacy.disabled = [scarlet]\ue815 Disabled[lightgray] (Legacy Launch Pads enabled)
rules.showspawns = Show Enemy Spawns
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = Unpredictable Wave AI
rules.pauseDisabled = Disable Pausing
rules.fire = Fire
@@ -2615,7 +2690,7 @@ unit.risso.description = Fires a barrage of missiles and bullets at all nearby e
unit.minke.description = Fires shells and standard bullets at nearby ground targets.
unit.bryde.description = Fires long-range artillery shells and missiles at enemies.
unit.sei.description = Fires a barrage of missiles and armor-piercing bullets at enemies.
unit.omura.description = Fires a long-range piercing railgun bolt at enemies. Constructs flare units.
unit.omura.description = Fires a long-range piercing railgun bolt at enemies.
unit.alpha.description = Defends the Shard core from enemies. Builds structures.
unit.beta.description = Defends the Foundation core from enemies. Builds structures.
unit.gamma.description = Defends the Nucleus core from enemies. Builds structures.
@@ -2691,6 +2766,7 @@ lst.setprop = Sets a property of a unit or building.
lst.effect = Create a particle effect.
lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most.
lst.playsound = Plays a sound.\nVolume and pan can be a global value, or calculated based on position.
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.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
+94 -18
View File
@@ -19,6 +19,7 @@ clipboardcopy = This server wants to copy text to your clipboard. Are you sure y
linkfail = Kon link niet openen!\nDe URL is gekopieerd naar je klembord
screenshot = Schermafbeeling opgeslagen in {0}
screenshot.invalid = Map is te groot, er is mogelijk niet genoeg geheugen beschikbaar voor een schermafbeelding.
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = Spel afgelopen
gameover.disconnect = Disconnect
gameover.pvp = Het[accent] {0}[] team heeft gewonnen!
@@ -57,6 +58,13 @@ mods.github.open-release = Release Pagina
mods.browser.sortdate = Sorteer op recentst
mods.browser.sortstars = Sorteer op sterren
export.file = Exporteer bestand
import.file = Importeer bestand
copy.clipboard = Kopi�ren naar Klembord
import.clipboard = Importeren van Klembord
workshop.browse = Browse Workshop
workshop.share = Delen op de Werkplaats
schematic = Ontwerp
schematic.add = Bewaar ontwerp...
schematics = Ontwerpen
@@ -64,12 +72,6 @@ schematic.search = Search schematics...
schematic.replace = Er bestaat al een ontwerp met die naam. Overschrijven?
schematic.exists = Een ontwerp met die naam bestaat al.
schematic.import = Importeer ontwerp...
schematic.exportfile = Exporteer bestand
schematic.importfile = Importeer bestand
schematic.browseworkshop = Blader werkplaats
schematic.copy = Kopi�ren naar Klembord
schematic.copy.import = Importeren van Klembord
schematic.shareworkshop = Delen op de Werkplaats
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Spiegel ontwerp
schematic.saved = Ontwerp bewaard.
schematic.delete.confirm = Dit ontwerp zal in een zwart gat verdwijnen.
@@ -177,6 +179,7 @@ mod.incompletedependencies.details = This mod is unable to be loaded due to inva
mod.requiresversion = Vereist spelversie: [red]{0}
mod.errors = Er hebben zich fouten voordaan tijdens het laden van de inhoud.
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 = [red]Je mods bevatten fouten.[] Zet de mods uit of los de problemen op voordat je verder gaat met spelen.
mod.enable = Activeer
mod.requiresrestart = Het spel zal nu afsluiten om de veranderingen aan de mods door te voeren.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = Timed out while receiving UDP snapshots.\nThis may
cantconnect = Geen verbinding mogelijk ([accent]{0}[]).
connecting = [accent]Aan het verbinden...
reconnecting = [accent]Aan het herverbinden...
connecting.data = [accent]Wereld aan het laden...
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.
server.port = Poort:
server.invalidport = Poort is geen geldig getal!
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!
@@ -344,6 +352,10 @@ save.export = Exporteer Save
save.import.invalid = [accent]Deze save is ongeldig!
save.import.fail = [crimson]Importeren van save mislukt: [accent]{0}
save.export.fail = [crimson]Exporteren van save mislukt: [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.import = Importeer Save
save.newslot = Save naam:
save.rename = Hernoem
@@ -479,14 +491,6 @@ editor.rules = Regels:
editor.generation = Generatie:
editor.objectives = Doelen
editor.locales = Locale Bundles
editor.patches.guide = Patch Guide
editor.patches = Content Patches
editor.patch = Patchset: {0}
editor.patches.none = [lightgray]No patchsets loaded.
editor.patches.errors = Patchset Errors
editor.patches.importerror = Failed to import patchset
editor.patches.delete.confirm = Are you sure you want to delete this patchset?
editor.patch.fields = {0} fields
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.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Custom Priority
editor.filters.planetselect = Planet Selection
editor.shiftx = Shift X
editor.shifty = Shift Y
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Content Patches
patch.set = Patchset: {0}
patch.none = [lightgray]No patchsets loaded.
patch.errors = Patchset Errors
patch.importerror = Failed to import patchset
patch.delete.confirm = Are you sure you want to delete this patchset?
patch.path = Path:
patch.fields = {0} fields
bundle.lines = {0} lines
images = Images
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.
workshop = Werkplaats
waves.title = Rondes
waves.team = Team
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](first {0})
waves.max = maximale eenheden
waves.guardian = Bewaker
waves.preview = Voorvertoning
waves.edit = Bewerk...
waves.random = Random
waves.copy = Kopieer naar klembord
waves.load = Laad van klembord
@@ -556,6 +628,7 @@ all = All
editor.default = [lightgray]<Standaard>
details = Details...
edit = Bewerk...
edit.menu = Edit...
variables = Vars
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?
@@ -1068,6 +1141,7 @@ stat.targetsground = Gronddoelwitten
stat.crushdamage = Crush Damage
stat.legsplashdamage = Leg Splash Damage
stat.itemsmoved = Beweegingssnelheid
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = Tijd tussen lanceringen
stat.shootrange = Bereik
stat.size = Formaat
@@ -1545,6 +1619,7 @@ rules.enemyCheat = Oneindige AI Materialen
rules.blockhealthmultiplier = Blok Levenspunten Vermenigvuldiger
rules.blockdamagemultiplier = Blokschade Vermenigvuldiger
rules.unitfactoryactivation = Unit Factory Activation Delay
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = Eenheid Spawnsnelheid Vermenigvuldiger
rules.unitcostmultiplier = Eenheidskosten Vermenigvuldiger
rules.unithealthmultiplier = Eenheid Levenspunten Vermenigvuldiger
@@ -1586,7 +1661,7 @@ rules.invasions = Enemy Sector Invasions
rules.legacylaunchpads = Legacy Launch Pad Mechanics
rules.legacylaunchpads.info = Allows using launch pads without landing pads, as in 7.0.
landingpad.legacy.disabled = [scarlet]\ue815 Disabled[lightgray] (Legacy Launch Pads enabled)
rules.showspawns = Show Enemy Spawns
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = Unpredictable Wave AI
rules.pauseDisabled = Disable Pausing
rules.fire = Vuur
@@ -2615,7 +2690,7 @@ unit.risso.description = Fires a barrage of missiles and bullets at all nearby e
unit.minke.description = Fires shells and standard bullets at nearby ground targets.
unit.bryde.description = Fires long-range artillery shells and missiles at enemies.
unit.sei.description = Fires a barrage of missiles and armor-piercing bullets at enemies.
unit.omura.description = Fires a long-range piercing railgun bolt at enemies. Constructs flare units.
unit.omura.description = Fires a long-range piercing railgun bolt at enemies.
unit.alpha.description = Defends the Shard core from enemies. Builds structures.
unit.beta.description = Defends the Foundation core from enemies. Builds structures.
unit.gamma.description = Defends the Nucleus core from enemies. Builds structures.
@@ -2691,6 +2766,7 @@ lst.setprop = Sets a property of a unit or building.
lst.effect = Create a particle effect.
lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most.
lst.playsound = Plays a sound.\nVolume and pan can be a global value, or calculated based on position.
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.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
+94 -18
View File
@@ -19,6 +19,7 @@ clipboardcopy = This server wants to copy text to your clipboard. Are you sure y
linkfail = Openen van link mislukt!\nDe link is gekopiëerd naar je klembord.
screenshot = Locatie screenshot: {0}
screenshot.invalid = Kaart te groot, mogelijks te weinig geheugen voor een screenshot te kunnen maken.
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = Game Over
gameover.disconnect = Disconnect
gameover.pvp = Het[accent] {0}[] team heeft gewonnen!
@@ -57,6 +58,13 @@ mods.github.open-release = Release Page
mods.browser.sortdate = Sort by recent
mods.browser.sortstars = Sort by stars
export.file = Exporteer Bestand
import.file = Exporteer Bestand
copy.clipboard = Kopieer naar Klembord
import.clipboard = Importeer vanaf Klembord
workshop.browse = Browse Workshop
workshop.share = Deel op Workshop
schematic = Blauwdruk
schematic.add = Blauwdruk Opslaan...
schematics = Blauwdrukken
@@ -64,12 +72,6 @@ schematic.search = Search schematics...
schematic.replace = Er bestaat al een blaudruk met deze naam. Vervangen?
schematic.exists = A schematic by that name already exists.
schematic.import = Importeer Blauwdruk...
schematic.exportfile = Exporteer Bestand
schematic.importfile = Exporteer Bestand
schematic.browseworkshop = Browse Workshop
schematic.copy = Kopieer naar Klembord
schematic.copy.import = Importeer vanaf Klembord
schematic.shareworkshop = Deel op Workshop
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic
schematic.saved = Blauwdruk opgeslagen.
schematic.delete.confirm = This schematic will be utterly eradicated.
@@ -177,6 +179,7 @@ mod.incompletedependencies.details = This mod is unable to be loaded due to inva
mod.requiresversion = Requires game version: [red]{0}
mod.errors = Errors have occurred loading content.
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]You have mods with errors.[] Either disable the affected mods or fix the errors before playing.
mod.enable = Schakel in
mod.requiresrestart = The game will now close to apply the mod changes.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = Timed out while receiving UDP snapshots.\nThis may
cantconnect = Kon niet tot het spel toetreden. ([accent]{0}[]).
connecting = [accent]Verbinden...
reconnecting = [accent]Reconnecting...
connecting.data = [accent]Laden map data...
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.
server.port = Poort:
server.invalidport = Ongeldige poort!
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!
@@ -344,6 +352,10 @@ save.export = Exporteer Save
save.import.invalid = [accent]Deze save is ongeldig!
save.import.fail = [crimson]Save importeren mislukt: [accent]{0}
save.export.fail = [crimson]Save exporteren mislukt: [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.import = Importeer Save
save.newslot = Naam van de save:
save.rename = Naam wijzigen
@@ -479,14 +491,6 @@ editor.rules = Rules:
editor.generation = Generation:
editor.objectives = Objectives
editor.locales = Locale Bundles
editor.patches.guide = Patch Guide
editor.patches = Content Patches
editor.patch = Patchset: {0}
editor.patches.none = [lightgray]No patchsets loaded.
editor.patches.errors = Patchset Errors
editor.patches.importerror = Failed to import patchset
editor.patches.delete.confirm = Are you sure you want to delete this patchset?
editor.patch.fields = {0} fields
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.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Custom Priority
editor.filters.planetselect = Planet Selection
editor.shiftx = Shift X
editor.shifty = Shift Y
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Content Patches
patch.set = Patchset: {0}
patch.none = [lightgray]No patchsets loaded.
patch.errors = Patchset Errors
patch.importerror = Failed to import patchset
patch.delete.confirm = Are you sure you want to delete this patchset?
patch.path = Path:
patch.fields = {0} fields
bundle.lines = {0} lines
images = Images
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.
workshop = Workshop
waves.title = Waves
waves.team = Team
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](first {0})
waves.max = max units
waves.guardian = Guardian
waves.preview = Preview
waves.edit = Edit...
waves.random = Random
waves.copy = Copy to Clipboard
waves.load = Load from Clipboard
@@ -556,6 +628,7 @@ all = All
editor.default = [lightgray]<Default>
details = Details...
edit = Edit...
edit.menu = Edit...
variables = Vars
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?
@@ -1068,6 +1141,7 @@ stat.targetsground = Targets Ground
stat.crushdamage = Crush Damage
stat.legsplashdamage = Leg Splash Damage
stat.itemsmoved = Move Speed
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = Time Between Launches
stat.shootrange = Range
stat.size = Size
@@ -1545,6 +1619,7 @@ rules.enemyCheat = Infinite AI (Red Team) Resources
rules.blockhealthmultiplier = Block Health Multiplier
rules.blockdamagemultiplier = Block Damage Multiplier
rules.unitfactoryactivation = Unit Factory Activation Delay
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
rules.unitcostmultiplier = Unit Cost Multiplier
rules.unithealthmultiplier = Unit Health Multiplier
@@ -1586,7 +1661,7 @@ rules.invasions = Enemy Sector Invasions
rules.legacylaunchpads = Legacy Launch Pad Mechanics
rules.legacylaunchpads.info = Allows using launch pads without landing pads, as in 7.0.
landingpad.legacy.disabled = [scarlet]\ue815 Disabled[lightgray] (Legacy Launch Pads enabled)
rules.showspawns = Show Enemy Spawns
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = Unpredictable Wave AI
rules.pauseDisabled = Disable Pausing
rules.fire = Fire
@@ -2615,7 +2690,7 @@ unit.risso.description = Fires a barrage of missiles and bullets at all nearby e
unit.minke.description = Fires shells and standard bullets at nearby ground targets.
unit.bryde.description = Fires long-range artillery shells and missiles at enemies.
unit.sei.description = Fires a barrage of missiles and armor-piercing bullets at enemies.
unit.omura.description = Fires a long-range piercing railgun bolt at enemies. Constructs flare units.
unit.omura.description = Fires a long-range piercing railgun bolt at enemies.
unit.alpha.description = Defends the Shard core from enemies. Builds structures.
unit.beta.description = Defends the Foundation core from enemies. Builds structures.
unit.gamma.description = Defends the Nucleus core from enemies. Builds structures.
@@ -2691,6 +2766,7 @@ lst.setprop = Sets a property of a unit or building.
lst.effect = Create a particle effect.
lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most.
lst.playsound = Plays a sound.\nVolume and pan can be a global value, or calculated based on position.
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.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
+93 -17
View File
@@ -19,6 +19,7 @@ clipboardcopy = Ten serwer chce skopiować tekst do schowka. Czy na pewno chcesz
linkfail = Nie udało się otworzyć linku!\nURL został skopiowany.
screenshot = Zapisano zrzut ekranu w {0}
screenshot.invalid = Zrzut ekranu jest zbyt duży. Najprawdopodobniej brakuje miejsca w pamięci urządzenia.
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = Koniec Gry
gameover.disconnect = Rozłącz
gameover.pvp = Zwyciężyła drużyna [accent]{0}[]!
@@ -57,6 +58,13 @@ mods.github.open-release = Strona z wydaniem
mods.browser.sortdate = Sortuj wg ostatnich
mods.browser.sortstars = Sortuj wg gwiazdek
export.file = Eksportuj plik
import.file = Importuj plik
copy.clipboard = Kopiuj do schowka
import.clipboard = Importuj ze schowka
workshop.browse = Browse Workshop
workshop.share = Podziel się na Warsztacie
schematic = Schemat
schematic.add = Zapisz schemat...
schematics = Schematy
@@ -64,12 +72,6 @@ schematic.search = Wyszukaj schematy...
schematic.replace = Schemat o tej nazwie już istnieje. Czy chcesz go zastąpić?
schematic.exists = Schemat o tej nazwie już istnieje.
schematic.import = Importuj Schemat...
schematic.exportfile = Eksportuj plik
schematic.importfile = Importuj plik
schematic.browseworkshop = Przeglądaj Warsztat
schematic.copy = Kopiuj do schowka
schematic.copy.import = Importuj ze schowka
schematic.shareworkshop = Podziel się na Warsztacie
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Odwróć schemat
schematic.saved = Schemat zapisany.
schematic.delete.confirm = Ten schemat zostanie usunięty.
@@ -177,6 +179,7 @@ mod.incompletedependencies.details = Nie można załadować modyfikacji z powodu
mod.requiresversion = Wymagana wersja gry: [red]{0}
mod.errors = Wystąpił błąd podczas ładowania treści.
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]Twoje modyfikacje zawierają błędy.[] Wyłącz je lub napraw błędy przed rozpoczęciem gry.
mod.enable = Włącz
mod.requiresrestart = Gra zostanie wyłączona aby wprowadzić zmiany w modyfikacji.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = Przekroczono czas oczekiwania na pakiety UDP.\nMoż
cantconnect = Nie można dołączyć do gry ([accent]{0}[]).
connecting = [accent]Łączenie...
reconnecting = [accent]Ponowne łączenie...
connecting.data = [accent]Ładowanie danych świata...
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.
server.port = Port:
server.invalidport = Nieprawidłowy numer portu.
server.error.addressinuse = [scarlet]Nie udało się uruchomić serwera na porcie 6567.[]\n\nUpewnij się, że żaden inny serwer Mindustry nie działa na twoim urządzeniu ani w sieci!
@@ -344,6 +352,10 @@ save.export = Eksportuj
save.import.invalid = [accent]Zapis gry jest niepoprawny!
save.import.fail = [crimson]Nie udało się zaimportować zapisu: [accent]{0}
save.export.fail = [crimson]Nie udało się wyeksportować zapisu: [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.import = Importuj zapis
save.newslot = Zapisz nazwę:
save.rename = Zmień nazwę
@@ -479,14 +491,6 @@ editor.rules = Zasady:
editor.generation = Generacja:
editor.objectives = Cele
editor.locales = Pakiety regionalne
editor.patches.guide = Przewodnik po łatkach
editor.patches = Łatki danych
editor.patch = Zestaw łatek: {0}
editor.patches.none = [lightgray]Brak załadowanych zestawów łatek.
editor.patches.errors = Błędy zestawu łatek
editor.patches.importerror = Nie udało się zaimportować zestawu łatek
editor.patches.delete.confirm = Czy na pewno chcesz usunąć ten zestaw łatek?
editor.patch.fields = {0} pola
editor.worldprocessors = Procesory Świata
editor.worldprocessors.editname = Edytuj nazwę
editor.worldprocessors.none = [lightgray]Nie znaleziono bloków procesorów świata!\nDodaj jeden w edytorze map lub użyj przycisku \ue813 Dodaj poniżej.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Własny Priorytet
editor.filters.planetselect = Planet Selection
editor.shiftx = Przesunięcie X
editor.shifty = Przesunięcie Y
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Łatki danych
patch.set = Patchset: {0}
patch.none = [lightgray]Brak załadowanych zestawów łatek.
patch.errors = Błędy zestawu łatek
patch.importerror = Nie udało się zaimportować zestawu łatek
patch.delete.confirm = Czy na pewno chcesz usunąć ten zestaw łatek?
patch.path = Path:
patch.fields = {0} pola
bundle.lines = {0} lines
images = Images
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.
workshop = Warsztat
waves.title = Fale
waves.team = Drużyna
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](first {0})
waves.max = maks. jednostek
waves.guardian = Strażnik
waves.preview = Podgląd
waves.edit = Edytuj...
waves.random = Losowe
waves.copy = Kopiuj Do Schowka
waves.load = Załaduj Ze Schowka
@@ -556,6 +628,7 @@ all = Wszystko
editor.default = [lightgray]<Domyślne>
details = Detale...
edit = Edytuj...
edit.menu = Edit...
variables = Zmienne
logic.error.toolong = Processor code too long (Limit: {0} compressed bytes, actual length: {1} bytes)
logic.clear.confirm = Czy na pewno chcesz wyczyścić cały kod z tego procesora??
@@ -1068,6 +1141,7 @@ stat.targetsground = Namierza wrogów lądowych
stat.crushdamage = Obrażenia od zmiażdżenia
stat.legsplashdamage = Obrażenia od uderzenia nóg
stat.itemsmoved = Prędkość poruszania się
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = Czas pomiędzy wystrzeleniami
stat.shootrange = Zasięg
stat.size = Rozmiar
@@ -1545,6 +1619,7 @@ rules.enemyCheat = Nieskończone Zasoby SI (wroga)
rules.blockhealthmultiplier = Mnożnik Życia Bloków
rules.blockdamagemultiplier = Mnożnik Uszkodzeń Bloków
rules.unitfactoryactivation = Opóźnienie aktywacji fabryki jednostek
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = Mnożnik Prędkości Tworzenia Jednostek
rules.unitcostmultiplier = Mnożnik Kosztu Jednostek
rules.unithealthmultiplier = Mnożnik Życia Jednostek
@@ -1586,7 +1661,7 @@ rules.invasions = Inwazje wrogich sektorów
rules.legacylaunchpads = Mechanika starszych platform startowych
rules.legacylaunchpads.info = Umożliwia korzystanie z platform startowych bez lądowisk, jak w wersji 7.0.
landingpad.legacy.disabled = [scarlet]\ue815 Wyłączone[lightgray] (Starsze platformy startowe włączone)
rules.showspawns = Pokaż miejsca odrodzenia się wroga
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = Nieprzewidywalne AI fal
rules.pauseDisabled = Wyłącz pauzę
rules.fire = Ogień
@@ -2691,6 +2766,7 @@ lst.setprop = Ustaw właściwość jednostki lub budynku.
lst.effect = Stwórz efekt cząsteczki.
lst.sync = Synchronizuje zmienną poprzez sieć.\nWywoływane maksymalnie 10 razy na sekundę.
lst.playsound = Odtwarza dźwięk.\nGłośność i panorama mogą być wartością globalną lub obliczoną na podstawie pozycji.
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.makemarker = Stwórz nowy marker logiki.\nMusisz podać ID, aby móc go później zidentyfikować.\nLimit markerów to 20,000.
lst.setmarker = Ustaw właściwości markera.\nID markera musi być takie samo jak podczas jego tworzenia.
lst.localeprint = Dodaje wartość właściwości locale mapy do bufora tekstu.\nAby ustawić pakiety locale mapy w edytorze map, sprawdź [accent]Informacje o mapie > Pakiety locale[].\nJeśli klient jest urządzeniem mobilnym, próbuje wydrukować właściwość kończącą się na ".mobile".
+94 -18
View File
@@ -19,6 +19,7 @@ clipboardcopy = This server wants to copy text to your clipboard. Are you sure y
linkfail = Falha ao abrir o link\nO Url foi copiado para a área de transferência.
screenshot = Screenshot salva para {0}
screenshot.invalid = Este mapa é grande demais, você pode estar potencialmente sem memória suficiente para captura de tela.
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = Fim de jogo.
gameover.disconnect = Desconectado
gameover.pvp = O time[accent] {0}[] ganhou!
@@ -57,6 +58,13 @@ mods.github.open-release = Página da versão
mods.browser.sortdate = Ordenar por mais recente
mods.browser.sortstars = Ordenar por estrelas
export.file = Exportar Arquivo
import.file = Importar Arquivo
copy.clipboard = Copiar para a área de transferência
import.clipboard = Importar da área de transferência
workshop.browse = Browse Workshop
workshop.share = Compartilhar na Oficina
schematic = Esquema
schematic.add = Salvar esquema...
schematics = Esquemas
@@ -64,12 +72,6 @@ schematic.search = Procurar esquemas...
schematic.replace = Um esquema com esse nome já existe. Substituí-lo?
schematic.exists = Um esquema com esse nome já existe.
schematic.import = Importar esquema...
schematic.exportfile = Exportar Arquivo
schematic.importfile = Importar Arquivo
schematic.browseworkshop = Navegar pela Oficina
schematic.copy = Copiar para a área de transferência
schematic.copy.import = Importar da área de transferência
schematic.shareworkshop = Compartilhar na Oficina
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Espelhar Esquema
schematic.saved = Esquema salvo.
schematic.delete.confirm = Esse esquema será apagado. Tem certeza?
@@ -177,6 +179,7 @@ mod.incompletedependencies.details = Este mod não pode ser carregado devido a d
mod.requiresversion = Requer a versão do jogo: [red]{0}
mod.errors = Ocorreram erros ao carregar o conteúdo.
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]Você tem mods com erros.[] Desative os mods afetados ou conserte os erros antes de jogar.
mod.enable = Ativar
mod.requiresrestart = O jogo irá fechar para aplicar as mudanças do mod.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = Tempo esgotado ao receber snapshots UDP.\nIsso pode
cantconnect = Impossível conectar ([accent]{0}[]).
connecting = [accent]Conectando...
reconnecting = [accent]Reconectando...
connecting.data = [accent]Carregando dados do mundo...
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.
server.port = Porta:
server.invalidport = Numero de porta inválido!
server.error.addressinuse = [scarlet]Falha ao abrir o servidor na porta 6567.[]\n\nCertifique-se de que nenhum outro servidor de Mindustry esteja rodando!
@@ -344,6 +352,10 @@ save.export = Exportar Jogo Salvo
save.import.invalid = [accent]Este jogo salvo é inválido!
save.import.fail = [crimson]Falha ao importar jogo salvo: [accent]{0}
save.export.fail = [crimson]Falha ao exportar jogo salvo: [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.import = Importar jogo salvo
save.newslot = Nome do jogo salvo:
save.rename = Renomear
@@ -479,14 +491,6 @@ editor.rules = Regras:
editor.generation = Geração:
editor.objectives = Objetivos:
editor.locales = Pacotes de Localidade
editor.patches.guide = Guia de Patches
editor.patches = Content Patches
editor.patch = Conjunto de Patches: {0}
editor.patches.none = [lightgray]Nenhum conjunto de patches carregado.
editor.patches.errors = Erros no Conjunto de Patches
editor.patches.importerror = Falha ao importar o conjunto de patches
editor.patches.delete.confirm = Tem certeza de que deseja excluir este conjunto de patches?
editor.patch.fields = {0} campos
editor.worldprocessors = Processadores de Mundo
editor.worldprocessors.editname = Editar Nome
editor.worldprocessors.none = [lightgray]Nenhum bloco de processador de mundo encontrado!\nAdicione um no editor de mapas ou use o botão \ue813 Adicionar abaixo.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Prioridade Personalizada
editor.filters.planetselect = Planet Selection
editor.shiftx = Deslocar X
editor.shifty = Deslocar Y
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Content Patches
patch.set = Patchset: {0}
patch.none = [lightgray]Nenhum conjunto de patches carregado.
patch.errors = Erros no Conjunto de Patches
patch.importerror = Falha ao importar o conjunto de patches
patch.delete.confirm = Tem certeza de que deseja excluir este conjunto de patches?
patch.path = Path:
patch.fields = {0} campos
bundle.lines = {0} lines
images = Images
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.
workshop = Oficina
waves.title = Hordas
waves.team = Equipe
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](first {0})
waves.max = quantidade máxima
waves.guardian = Guardião
waves.preview = Pré-visualizar
waves.edit = Editar...
waves.random = Aleatório
waves.copy = Copiar para área de transferência
waves.load = Carregar da área de transferência
@@ -556,6 +628,7 @@ all = Tudo
editor.default = [lightgray]<padrão>
details = Detalhes...
edit = Editar...
edit.menu = Edit...
variables = Variáveis
logic.error.toolong = Processor code too long (Limit: {0} compressed bytes, actual length: {1} bytes)
logic.clear.confirm = Tem certeza de que deseja limpar todo o código deste processador?
@@ -1068,6 +1141,7 @@ stat.targetsground = Mira no chão
stat.crushdamage = Dano de Esmagamento
stat.legsplashdamage = Dano de Área das Pernas
stat.itemsmoved = Velocidade de movimento
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = Tempo entre Disparos
stat.shootrange = Alcance
stat.size = Tamanho
@@ -1545,6 +1619,7 @@ rules.enemyCheat = Recursos de IA Infinitos
rules.blockhealthmultiplier = Multiplicador de vida do bloco
rules.blockdamagemultiplier = Multiplicador de dano do bloco
rules.unitfactoryactivation = Unit Factory Activation Delay
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = Multiplicador de velocidade de criação de unidade
rules.unitcostmultiplier = Multiplicador de Custo de Unidade
rules.unithealthmultiplier = Multiplicador de vida de unidade
@@ -1586,7 +1661,7 @@ rules.invasions = Invasões de Setores Inimigos
rules.legacylaunchpads = Mecânicas Legadas de Plataforma de Lançamento
rules.legacylaunchpads.info = Permite usar plataformas de lançamento sem plataformas de pouso, como na v7.0.
landingpad.legacy.disabled = [scarlet]\ue815 Desativado[lightgray] (Plataformas de Lançamento Legadas ativadas)
rules.showspawns = Mostrar Spawns Inimigos
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = IA de Horda Imprevisível
rules.pauseDisabled = Disable Pausing
rules.fire = Fogo
@@ -2615,7 +2690,7 @@ unit.risso.description = Dispara uma barragem de mísseis e projéteis em todos
unit.minke.description = Dispara granadas e projéteis padrões em alvos terrestres.
unit.bryde.description = Dispara granadas de artilharia de longo alcance e mísseis em todos os inimigos em volta.
unit.sei.description = Dispara uma barragem de mísseis e projéteis penetradoras de armadura em inimigos.
unit.omura.description = Dispara um raio de longo alcance atravessador em inimigos. Constrói unidades flare.
unit.omura.description = Dispara um raio de longo alcance atravessador em inimigos.
unit.alpha.description = Defende o Fragmento do Núcleo de inimigos. Constrói estruturas.
unit.beta.description = Defende a Fundação do Núcleo de inimigos. Constrói estruturas.
unit.gamma.description = Defende o Centro do Núcleo de inimigos. Constrói estruturas.
@@ -2691,6 +2766,7 @@ lst.setprop = Define uma propriedade de uma unidade ou edifício.
lst.effect = Criar um efeito de partícula.
lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most.
lst.playsound = Toca um som.\nVolume e direção podem ser globais ou calculados por posição.
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.makemarker = Cria um novo marcador lógico no mundo.\nLimite de 20.000 por mundo.
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
lst.localeprint = Adiciona o valor de uma propriedade de localidade do mapa ao buffer de texto.\nVeja em [accent]Info do Mapa > Pacotes de Localidade[].
+94 -18
View File
@@ -19,6 +19,7 @@ clipboardcopy = This server wants to copy text to your clipboard. Are you sure y
linkfail = Falha ao abrir a ligação\nO Url foi copiado para a área de transferência
screenshot = Captura de ecrã gravada em {0}
screenshot.invalid = Mapa grande demais, potencialmente sem memória suficiente para captura.
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = O núcleo foi destruído.
gameover.disconnect = Desconectar
gameover.pvp = A equipa [accent] {0}[] ganhou!
@@ -57,6 +58,13 @@ mods.github.open-release = Página da versão
mods.browser.sortdate = Ordenar por mais recente
mods.browser.sortstars = Ordenar por estrelas
export.file = Exportar Ficheiro
import.file = Importar Ficheiro
copy.clipboard = Copiar para a área de transferência
import.clipboard = Importar da área de transferência
workshop.browse = Browse Workshop
workshop.share = Partilhar na Workshop
schematic = Esquema
schematic.add = Guardar Esquema...
schematics = Esquemas
@@ -64,12 +72,6 @@ schematic.search = Procurar esquemas...
schematic.replace = Um esquema com esse nome já existe. Deseja substituí-lo?
schematic.exists = Um esquema com esse nome já existe.
schematic.import = Importar Esquema...
schematic.exportfile = Exportar Ficheiro
schematic.importfile = Importar Ficheiro
schematic.browseworkshop = Pesquisar no Workshop
schematic.copy = Copiar para a área de transferência
schematic.copy.import = Importar da área de transferência
schematic.shareworkshop = Partilhar na Workshop
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Rodar Esquema
schematic.saved = Esquema gravado.
schematic.delete.confirm = Este esquema irá ser completamente apagado.
@@ -177,6 +179,7 @@ mod.incompletedependencies.details = Este mod não pôde ser carregado devido a
mod.requiresversion = Requer a versão do jogo: [red]{0}
mod.errors = Ocorreram erros ao carregar o conteúdo.
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]Tens mods com erros.[] Desativa os mods afetados ou corrije os erros antes de jogar.
mod.enable = Ativar
mod.requiresrestart = O jogo irá fechar para aplicar as alterações do mod.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = Timed out while receiving UDP snapshots.\nThis may
cantconnect = Impossível conectar ([accent]{0}[]).
connecting = [accent]A conectar...
reconnecting = [accent]A reconectar...
connecting.data = [accent]A carregar o dados do mundo...
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.
server.port = Porta:
server.invalidport = Número de porta inválido!
server.error.addressinuse = [scarlet]Falhou ao iniciar o servidor na porta 6567.[]\n\nCertifica-te que não existem outros servidores do Mindustry em funcionamento no teu dispositivo ou rede local!
@@ -344,6 +352,10 @@ save.export = Exportar save
save.import.invalid = [accent]Este save é inválido!
save.import.fail = [crimson]Falha ao importar o save: [accent]{0}
save.export.fail = [crimson]Falha ao exportar o save: [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.import = Importar save
save.newslot = Nome do save:
save.rename = Renomear
@@ -479,14 +491,6 @@ editor.rules = Regras:
editor.generation = Geração:
editor.objectives = Objectivos
editor.locales = Pacotes Locais
editor.patches.guide = Patch Guide
editor.patches = Content Patches
editor.patch = Patchset: {0}
editor.patches.none = [lightgray]No patchsets loaded.
editor.patches.errors = Patchset Errors
editor.patches.importerror = Failed to import patchset
editor.patches.delete.confirm = Are you sure you want to delete this patchset?
editor.patch.fields = {0} fields
editor.worldprocessors = Processadores Globais
editor.worldprocessors.editname = Mudar Nome
editor.worldprocessors.none = [lightgray]Nenhum bloco de processadr global encontrado!\nAdiciona um no Editor, ou usa o botão \ue813 Adicionar abaixo.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Custom Priority
editor.filters.planetselect = Planet Selection
editor.shiftx = Mover no eixo X
editor.shifty = Mover no eixo Y
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Content Patches
patch.set = Patchset: {0}
patch.none = [lightgray]No patchsets loaded.
patch.errors = Patchset Errors
patch.importerror = Failed to import patchset
patch.delete.confirm = Are you sure you want to delete this patchset?
patch.path = Path:
patch.fields = {0} fields
bundle.lines = {0} lines
images = Images
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.
workshop = Workshop
waves.title = Hordas
waves.team = Team
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](first {0})
waves.max = quantidade máxima de unidades
waves.guardian = Guardião
waves.preview = Pré-visualizar
waves.edit = Editar...
waves.random = Aleatório
waves.copy = Copiar para área de transferência
waves.load = Carregar da área de transferência
@@ -556,6 +628,7 @@ all = Tudo
editor.default = [lightgray]<Padrão>
details = Detalhes...
edit = Editar...
edit.menu = Edit...
variables = Variáveis
logic.error.toolong = Processor code too long (Limit: {0} compressed bytes, actual length: {1} bytes)
logic.clear.confirm = Tens a certeza que querea apagar todo o código deste procesador?
@@ -1068,6 +1141,7 @@ stat.targetsground = Mirar no Chão
stat.crushdamage = Crush Damage
stat.legsplashdamage = Leg Splash Damage
stat.itemsmoved = Velocidade de movimento
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = Tempo entre Tiros
stat.shootrange = Alcance de Tiro
stat.size = Tamanho
@@ -1545,6 +1619,7 @@ rules.enemyCheat = Recursos Infinitos para a Equipa Inimiga
rules.blockhealthmultiplier = Multiplicador de Vida do Bloco
rules.blockdamagemultiplier = Multiplicador de Dano do Bloco
rules.unitfactoryactivation = Unit Factory Activation Delay
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = Multiplicador de Velocidade de Criação de Unidades
rules.unitcostmultiplier = Multiplicador de Custo de Unidades
rules.unithealthmultiplier = Multiplicador de Vida de Unidades
@@ -1586,7 +1661,7 @@ rules.invasions = Invasões de Setores Inimigos
rules.legacylaunchpads = Legacy Launch Pad Mechanics
rules.legacylaunchpads.info = Allows using launch pads without landing pads, as in 7.0.
landingpad.legacy.disabled = [scarlet]\ue815 Disabled[lightgray] (Legacy Launch Pads enabled)
rules.showspawns = Mostrar Spawn de Inimigos
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = IA de hordas imprevisível
rules.pauseDisabled = Disable Pausing
rules.fire = Fogo
@@ -2615,7 +2690,7 @@ unit.risso.description = Dispara uma barragem de mísseis e projéteis em todos
unit.minke.description = Dispara granadas e projéteis padrões em alvos terrestres.
unit.bryde.description = Dispara granadas de artilharia de longo alcance e mísseis em todos os inimigos em volta.
unit.sei.description = Dispara uma barragem de mísseis e projéteis penetradoras de armadura em inimigos.
unit.omura.description = Dispara um raio de longo alcance atravessador em inimigos. Constrói unidades flare.
unit.omura.description = Dispara um raio de longo alcance atravessador em inimigos.
unit.alpha.description = Defende o Fragmento do Núcleo de inimigos. Constrói estruturas.
unit.beta.description = Defende a Fundação do Núcleo de inimigos. Constrói estruturas.
unit.gamma.description = Defende o Centro do Núcleo de inimigos. Constrói estruturas.
@@ -2691,6 +2766,7 @@ lst.setprop = Define uma propriedade de uma unidade ou edifício.
lst.effect = Create a particle effect.
lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most.
lst.playsound = Plays a sound.\nVolume and pan can be a global value, or calculated based on position.
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.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
+94 -18
View File
@@ -19,6 +19,7 @@ clipboardcopy = This server wants to copy text to your clipboard. Are you sure y
linkfail = Linkul nu a putut fi deschis!\nAdresa URL a fost copiată.
screenshot = Captură de ecran salvată la {0}
screenshot.invalid = Harta e prea mare. Se poate să nu existe suficientă memorie pentru captura de ecran
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = Jocul s-a încheiat
gameover.disconnect = Deconectare
gameover.pvp = Echipa [accent] {0}[] este câștigătoare!
@@ -57,6 +58,13 @@ mods.github.open-release = Release Page
mods.browser.sortdate = Cele mai recente
mods.browser.sortstars = Cele mai multe stele
export.file = Exportă Fișier
import.file = Importă Fișier
copy.clipboard = Copiază în Clipboard
import.clipboard = Importă din Clipboard
workshop.browse = Browse Workshop
workshop.share = Partajează pe Workshop
schematic = Schemă
schematic.add = Salvează Schema...
schematics = Scheme
@@ -64,12 +72,6 @@ schematic.search = Search schematics...
schematic.replace = O schemă cu acel nume există deja. O înlocuiți?
schematic.exists = O schemă cu acel nume există deja.
schematic.import = Importă Schema...
schematic.exportfile = Exportă Fișier
schematic.importfile = Importă Fișier
schematic.browseworkshop = Intră pe Workshop
schematic.copy = Copiază în Clipboard
schematic.copy.import = Importă din Clipboard
schematic.shareworkshop = Partajează pe Workshop
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Întoarce Schema
schematic.saved = Schemă salvată.
schematic.delete.confirm = Schema această va fi ștearsă permanent.
@@ -177,6 +179,7 @@ mod.incompletedependencies.details = This mod is unable to be loaded due to inva
mod.requiresversion = Requires game version: [red]{0}
mod.errors = Au apărut erori la încărcarea conținutului.
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]Modurile tale au erori.[] Dezactivează modurile afectate sau repară erorile înainte să joci.
mod.enable = Activează
mod.requiresrestart = Jocul se va închide acum pt a aplica modificările modurilor.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = Timed out while receiving UDP snapshots.\nThis may
cantconnect = Nu te-ai putut alătura jocului ([accent]{0}[]).
connecting = [accent]Conectare...
reconnecting = [accent]Reconectare...
connecting.data = [accent]Se încarcă datele hărții...
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.
server.port = Port:
server.invalidport = Număr de port invalid!
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!
@@ -344,6 +352,10 @@ save.export = Exportă Salvarea
save.import.invalid = [accent]Salvarea aceasta e invalidă!
save.import.fail = [scarlet]Importul salvării a eșuat: [accent]{0}
save.export.fail = [scarlet]Exportul salvării a eșuat: [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.import = Importă Salvarea
save.newslot = Numele Salvării:
save.rename = Redenumire
@@ -479,14 +491,6 @@ editor.rules = Reguli:
editor.generation = Generare:
editor.objectives = Objectives
editor.locales = Locale Bundles
editor.patches.guide = Patch Guide
editor.patches = Content Patches
editor.patch = Patchset: {0}
editor.patches.none = [lightgray]No patchsets loaded.
editor.patches.errors = Patchset Errors
editor.patches.importerror = Failed to import patchset
editor.patches.delete.confirm = Are you sure you want to delete this patchset?
editor.patch.fields = {0} fields
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.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Custom Priority
editor.filters.planetselect = Planet Selection
editor.shiftx = Shift X
editor.shifty = Shift Y
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Content Patches
patch.set = Patchset: {0}
patch.none = [lightgray]No patchsets loaded.
patch.errors = Patchset Errors
patch.importerror = Failed to import patchset
patch.delete.confirm = Are you sure you want to delete this patchset?
patch.path = Path:
patch.fields = {0} fields
bundle.lines = {0} lines
images = Images
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.
workshop = Workshop
waves.title = Valuri
waves.team = Team
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](first {0})
waves.max = unități maxime
waves.guardian = Gardian
waves.preview = Previzualizare
waves.edit = Editează...
waves.random = Random
waves.copy = Copiază în Clipboard
waves.load = Încarcă din Clipboard
@@ -556,6 +628,7 @@ all = All
editor.default = [lightgray]<Prestabilit>
details = Detalii...
edit = Editează...
edit.menu = Edit...
variables = Vars
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?
@@ -1068,6 +1141,7 @@ stat.targetsground = Lovește Artilerie
stat.crushdamage = Crush Damage
stat.legsplashdamage = Leg Splash Damage
stat.itemsmoved = Viteză de Mișcare a Materialelor
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = Timp între Lansări
stat.shootrange = Rază
stat.size = Mărime
@@ -1545,6 +1619,7 @@ rules.enemyCheat = Resurse infinite pt AI (echipa roșie)
rules.blockhealthmultiplier = Multiplicatorul Vieții Blocurilor
rules.blockdamagemultiplier = Multiplicatorul Deteriorării Blocurilor
rules.unitfactoryactivation = Unit Factory Activation Delay
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = Multiplicatorul Vitezei de Producere a Unităților
rules.unitcostmultiplier = Unit Cost Multiplier
rules.unithealthmultiplier = Multiplicatorul Vieții Unităților
@@ -1586,7 +1661,7 @@ rules.invasions = Enemy Sector Invasions
rules.legacylaunchpads = Legacy Launch Pad Mechanics
rules.legacylaunchpads.info = Allows using launch pads without landing pads, as in 7.0.
landingpad.legacy.disabled = [scarlet]\ue815 Disabled[lightgray] (Legacy Launch Pads enabled)
rules.showspawns = Show Enemy Spawns
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = Unpredictable Wave AI
rules.pauseDisabled = Disable Pausing
rules.fire = Foc
@@ -2615,7 +2690,7 @@ unit.risso.description = Trage un baraj de rachete și gloanțe către toți ina
unit.minke.description = Trage cu capsule și gloanțe standard către artileria inamică din apropiere.
unit.bryde.description = Trage cu capsule de artilerie și rachete către inamici pe distanțe lungi.
unit.sei.description = Trage cu un baraj de rachete și gloanțe care penetrează scuturile inamicilor.
unit.omura.description = Trage cu un railgun cu gloanțe care penetrează scuturile inamice pe distanțe lungi. Construiește unități Flare.
unit.omura.description = Trage cu un railgun cu gloanțe care penetrează scuturile inamice pe distanțe lungi.
unit.alpha.description = Apără nucleul Shard de inamici. Construiește structuri.
unit.beta.description = Apără nucleul Foundation de inamici. Construiește structuri.
unit.gamma.description = Apără nucleul Core de inamici. Construiește structuri.
@@ -2691,6 +2766,7 @@ lst.setprop = Sets a property of a unit or building.
lst.effect = Create a particle effect.
lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most.
lst.playsound = Plays a sound.\nVolume and pan can be a global value, or calculated based on position.
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.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
+94 -18
View File
@@ -19,6 +19,7 @@ clipboardcopy = Этот сервер хочет скопировать текс
linkfail = Не удалось открыть ссылку!\nURL-адрес был скопирован в буфер обмена.
screenshot = Скриншот сохранён в {0}
screenshot.invalid = Карта слишком большая, возможно, не хватает памяти для скриншота.
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = Игра окончена
gameover.disconnect = Отключение
gameover.pvp = Команда [accent]{0}[] победила!
@@ -57,6 +58,13 @@ mods.github.open-release = Страница релиза
mods.browser.sortdate = Сортировка по дате изменения
mods.browser.sortstars = Сортировка по количеству звёзд
export.file = Экспортировать файл
import.file = Импортировать файл
copy.clipboard = Скопировать в буфер обмена
import.clipboard = Вставить из буфера обмена
workshop.browse = Browse Workshop
workshop.share = Поделиться в Мастерской
schematic = Схема
schematic.add = Сохранить схему...
schematics = Схемы
@@ -64,12 +72,6 @@ schematic.search = Поиск схем...
schematic.replace = Схема с таким названием уже существует. Заменить её?
schematic.exists = Схема с таким названием уже существует.
schematic.import = Импортировать схему...
schematic.exportfile = Экспортировать файл
schematic.importfile = Импортировать файл
schematic.browseworkshop = Просмотр Мастерской
schematic.copy = Скопировать в буфер обмена
schematic.copy.import = Вставить из буфера обмена
schematic.shareworkshop = Поделиться в Мастерской
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Отразить схему
schematic.saved = Схема сохранена.
schematic.delete.confirm = Эта схема будет поджарена Испепелителем.
@@ -177,6 +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.noerrorplay = [scarlet]У Вас есть модификации с ошибками.[] Выключите проблемные модификации или исправьте ошибки перед игрой.
mod.enable = Вкл.
mod.requiresrestart = Теперь игра закроется, чтобы применить изменения в модификациях.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = Превышено время ожидания пр
cantconnect = Не удаётся присоединиться к игре ([accent]{0}[]).
connecting = [accent]Подключение...
reconnecting = [accent]Переподключение...
connecting.data = [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.
server.port = Порт:
server.invalidport = Неверный номер порта!
server.error.addressinuse = [scarlet]Не удалось открыть сервер на порте 6567.[]\n\nУбедитесь, что у вас не запущены другие сервера Mindustry!
@@ -344,6 +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.import = Импортировать сохранение
save.newslot = Имя сохранения:
save.rename = Переименовать
@@ -479,14 +491,6 @@ editor.rules = Правила:
editor.generation = Генерация:
editor.objectives = Цели
editor.locales = Наборы локалей
editor.patches.guide = Руководство по патчам
editor.patches = Патчи контента
editor.patch = Набор патчей: {0}
editor.patches.none = [lightgray]Ни одного набора патчей не загружено.
editor.patches.errors = Ошибки набора патчей
editor.patches.importerror = Не удалось импортировать набор патчей
editor.patches.delete.confirm = Вы уверены, что хотите удалить этот набор патчей?
editor.patch.fields = Параметров: {0}
editor.worldprocessors = Мировые процессоры
editor.worldprocessors.editname = Изменить название
editor.worldprocessors.none = [lightgray]Не найдено ни одного блока мирового процессора\nДобавьте его в редакторе карт или воспользуйтесь кнопкой "\ue813 Добавить" ниже.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Пользовательский приори
editor.filters.planetselect = Planet Selection
editor.shiftx = Сдвиг по X
editor.shifty = Сдвиг по Y
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Патчи контента
patch.set = Patchset: {0}
patch.none = [lightgray]Ни одного набора патчей не загружено.
patch.errors = Ошибки набора патчей
patch.importerror = Не удалось импортировать набор патчей
patch.delete.confirm = Вы уверены, что хотите удалить этот набор патчей?
patch.path = Path:
patch.fields = Параметров: {0}
bundle.lines = {0} lines
images = Images
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.
workshop = Мастерская
waves.title = Волны
waves.team = Команда
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](first {0})
waves.max = максимум единиц
waves.guardian = Страж
waves.preview = Предварительный просмотр
waves.edit = Редактировать...
waves.random = Случайно
waves.copy = Копировать в буфер обмена
waves.load = Загрузить из буфера обмена
@@ -556,6 +628,7 @@ all = всего
editor.default = [lightgray]<По умолчанию>
details = Подробности...
edit = Редактировать...
edit.menu = Edit...
variables = Переменные
logic.error.toolong = Processor code too long (Limit: {0} compressed bytes, actual length: {1} bytes)
logic.clear.confirm = Вы уверены, что хотите удалить весь код из этого процессора?
@@ -1068,6 +1141,7 @@ stat.targetsground = Наземные цели
stat.crushdamage = Урон от падения
stat.legsplashdamage = Урон по области от ног
stat.itemsmoved = Скорость перемещения
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = Интервал запусков
stat.shootrange = Радиус действия
stat.size = Размер
@@ -1545,6 +1619,7 @@ rules.enemyCheat = Бесконечные ресурсы у ИИ
rules.blockhealthmultiplier = Множитель прочности блоков
rules.blockdamagemultiplier = Множитель урона блоков
rules.unitfactoryactivation = Unit Factory Activation Delay
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = Множитель скорости производства боев. ед.
rules.unitcostmultiplier = Множитель стоимости боев. ед.
rules.unithealthmultiplier = Множитель прочности боев. ед.
@@ -1586,7 +1661,7 @@ rules.invasions = Вторжения врагов на сектора
rules.legacylaunchpads = Старые пусковые площадки
rules.legacylaunchpads.info = Позволяет использовать старые пусковые площадки из версии 7.0.
landingpad.legacy.disabled = [scarlet]\ue815 Выключено[lightgray] ("Старые пусковые площадки" включены)
rules.showspawns = Показывать появление врагов
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = Непредсказуемый ИИ волн
rules.pauseDisabled = Отключить паузы
rules.fire = Огонь
@@ -2615,7 +2690,7 @@ unit.risso.description = Стреляет залпами ракет и пуль
unit.minke.description = Стреляет артиллерийскими снарядами и стандартными пулями по наземным целям.
unit.bryde.description = Стреляет дальнобойными артиллерийскими снарядами и ракетами по врагам.
unit.sei.description = Стреляет залпами ракет и бронебойных пуль по врагам.
unit.omura.description = Стреляет дальнобойным пробивающим снарядом из рельсотрона по врагам. Производит единицы «Вспышка».
unit.omura.description = Стреляет дальнобойным пробивающим снарядом из рельсотрона по врагам.
unit.alpha.description = Защищает ядро «Осколок» от врагов. Основная строительная единица.
unit.beta.description = Защищает ядро «Штаб» от врагов. Основная строительная единица.
unit.gamma.description = Защищает ядро «Атом» от врагов. Основная строительная единица.
@@ -2691,6 +2766,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.makemarker = Создать новый логический маркер.\nНужно указать ID маркера.\nМаксимум 20000 маркеров.
lst.setmarker = Установить значение маркера.\nID маркера должен соответствовать указанному в строке создания маркера.
lst.localeprint = Добавляет данные локалей в текстовый буфер.\nЧтобы добавить локали, зайдите в [accent]Информация о карте > Наборы локалей[].\nЕсли клиент на мобильном устройсте, сначала попытается найти строку с окончанием ".mobile".
+94 -18
View File
@@ -19,6 +19,7 @@ clipboardcopy = This server wants to copy text to your clipboard. Are you sure y
linkfail = Nemoguće otvoriti link!\nURL adresa je iskopirana
screenshot = Snimanje ekrana izvršeno {0}
screenshot.invalid = Mapa je prevelika, moguće je da nema dovoljno memorije za snimanje ekrana.
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = Igra gotova.
gameover.disconnect = Prekini vezu
gameover.pvp = [accent] {0}[] tim je pobedio!
@@ -57,6 +58,13 @@ mods.github.open-release = Otvori Stranicu
mods.browser.sortdate = Sortiraj od najnovijeg to najstarijeg
mods.browser.sortstars = Sortiraj po broju "zvezdica"
export.file = Izvezi dokument
import.file = Uvezi dokument
copy.clipboard = Iskopiraj u privremenu memoriju
import.clipboard = Uvezi is privremene memoriju
workshop.browse = Browse Workshop
workshop.share = Podeli na radionici
schematic = Šeme
schematic.add = Snimi šemu
schematics = Šeme
@@ -64,12 +72,6 @@ schematic.search = Search schematics...
schematic.replace = Već postoji šema pod ovim imenom. Zameniti?
schematic.exists = Šema sa ovimn imenom već postoji.
schematic.import = Uvezi šemu.
schematic.exportfile = Izvezi dokument
schematic.importfile = Uvezi dokument
schematic.browseworkshop = Pretraži radionicu
schematic.copy = Iskopiraj u privremenu memoriju
schematic.copy.import = Uvezi is privremene memoriju
schematic.shareworkshop = Podeli na radionici
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Prevrni šemu.
schematic.saved = Šema snimljena.
schematic.delete.confirm = Šema će biti potpuno uništena.
@@ -177,6 +179,7 @@ mod.incompletedependencies.details = This mod is unable to be loaded due to inva
mod.requiresversion = Requires game version: [red]{0}
mod.errors = Greške su nastale tokom učitavanja sadržaja.
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]Imate modove sa greškama.[] Onemogućite te modove, ili ispravite greške.
mod.enable = Omogući
mod.requiresrestart = Igra će se zatvoriti da ažurira modove.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = Timed out while receiving UDP snapshots.\nThis may
cantconnect = Ne može se pridružiti igri ([accent]{0}[]).
connecting = [accent]Povezivanje...
reconnecting = [accent]Ponovno povezivanje...
connecting.data = [accent]Učitavanje podataka...
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.
server.port = Port:
server.invalidport = Invalid port number!
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!
@@ -344,6 +352,10 @@ save.export = Izvezi Snimak
save.import.invalid = [accent]This save is invalid!
save.import.fail = [scarlet]Greška u uvozu snimka: [accent]{0}
save.export.fail = [scarlet]Greška u izvozu snimka: [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.import = Uvezi Snimak
save.newslot = Ime snimka:
save.rename = Preimenuj
@@ -479,14 +491,6 @@ editor.rules = Pravila:
editor.generation = Generisanje:
editor.objectives = Zadaci
editor.locales = Locale Bundles
editor.patches.guide = Patch Guide
editor.patches = Content Patches
editor.patch = Patchset: {0}
editor.patches.none = [lightgray]No patchsets loaded.
editor.patches.errors = Patchset Errors
editor.patches.importerror = Failed to import patchset
editor.patches.delete.confirm = Are you sure you want to delete this patchset?
editor.patch.fields = {0} fields
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.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Custom Priority
editor.filters.planetselect = Planet Selection
editor.shiftx = Pomeri X
editor.shifty = Pomeri Y
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Content Patches
patch.set = Patchset: {0}
patch.none = [lightgray]No patchsets loaded.
patch.errors = Patchset Errors
patch.importerror = Failed to import patchset
patch.delete.confirm = Are you sure you want to delete this patchset?
patch.path = Path:
patch.fields = {0} fields
bundle.lines = {0} lines
images = Images
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.
workshop = Radionica
waves.title = Talasi
waves.team = Team
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](first {0})
waves.max = maksimalno jedinica
waves.guardian = Čuvar
waves.preview = Prikaz
waves.edit = Izmeni...
waves.random = Random
waves.copy = Kopiraj u Privremenu Memoriju
waves.load = Učitaj iz Privremene Memorije
@@ -556,6 +628,7 @@ all = All
editor.default = [lightgray]<Default>
details = Detalji...
edit = Izmeni...
edit.menu = Edit...
variables = Varijabla
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?
@@ -1068,6 +1141,7 @@ stat.targetsground = Nišani zemlju
stat.crushdamage = Crush Damage
stat.legsplashdamage = Leg Splash Damage
stat.itemsmoved = Brzina kretanja
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = Vreme između lansiranja
stat.shootrange = Domet
stat.size = Veličina
@@ -1545,6 +1619,7 @@ rules.enemyCheat = Beskonačnost Neprijateljskih Resursa
rules.blockhealthmultiplier = Block Health Multiplier
rules.blockdamagemultiplier = Block Damage Multiplier
rules.unitfactoryactivation = Unit Factory Activation Delay
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = Unit Production Speed Multiplier
rules.unitcostmultiplier = Unit Cost Multiplier
rules.unithealthmultiplier = Unit Health Multiplier
@@ -1586,7 +1661,7 @@ rules.invasions = Enemy Sector Invasions
rules.legacylaunchpads = Legacy Launch Pad Mechanics
rules.legacylaunchpads.info = Allows using launch pads without landing pads, as in 7.0.
landingpad.legacy.disabled = [scarlet]\ue815 Disabled[lightgray] (Legacy Launch Pads enabled)
rules.showspawns = Show Enemy Spawns
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = Unpredictable Wave AI
rules.pauseDisabled = Disable Pausing
rules.fire = Plamen
@@ -2615,7 +2690,7 @@ unit.risso.description = Ispaljuje baraž raketa i metaka na sve obljižnje nepr
unit.minke.description = ispaljuje granate i metke na obljižnje zemne mete.
unit.bryde.description = Ispaljuje dugo-dometne artiljerijske granate i rakete na neprijatelje.
unit.sei.description = Ispaljuje baraž raketa i oklopno-probojnih metaka na neprijatelje.
unit.omura.description = Fires a long-range piercing railgun bolt at enemies. Gradi balkja jedinice.
unit.omura.description = Fires a long-range piercing railgun bolt at enemies.
unit.alpha.description = Štiti Krhotina jezgro od neprijatelja. Gradi građevine.
unit.beta.description = Štiti Fondacija jezgro od neprijatelja. Gradi građevine.
unit.gamma.description = Štiti Nukleus jezgro od neprijatelja. Gradi građevine.
@@ -2691,6 +2766,7 @@ lst.setprop = Sets a property of a unit or building.
lst.effect = Create a particle effect.
lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most.
lst.playsound = Plays a sound.\nVolume and pan can be a global value, or calculated based on position.
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.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
+94 -18
View File
@@ -19,6 +19,7 @@ clipboardcopy = This server wants to copy text to your clipboard. Are you sure y
linkfail = Kunde inte öppna länken!\nLänken har kopierats till ditt urklipp.
screenshot = Skärmdump har sparats till {0}
screenshot.invalid = Karta för stor, potentiellt inte tillräckligt minne för skärmdump.
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = Spel Slut
gameover.disconnect = Frånkoppla
gameover.pvp = Laget [accent] {0}[] vann!
@@ -57,6 +58,13 @@ mods.github.open-release = Release Page
mods.browser.sortdate = Sortera efter senaste
mods.browser.sortstars = Sortera efter stjärnor
export.file = Exportera Fil
import.file = Importera Fil
copy.clipboard = Kopiera till urklipp
import.clipboard = Importera från urklipp
workshop.browse = Browse Workshop
workshop.share = Dela på Workshoppen
schematic = Schematic
schematic.add = Spara Schematic...
schematics = Schematics
@@ -64,12 +72,6 @@ schematic.search = Search schematics...
schematic.replace = En schematic med det namnet finns redan. Byt ut den?
schematic.exists = En schematic med det namnet finns redan.
schematic.import = Importera Schematic...
schematic.exportfile = Exportera Fil
schematic.importfile = Importera Fil
schematic.browseworkshop = Öppna Workshoppen
schematic.copy = Kopiera till urklipp
schematic.copy.import = Importera från urklipp
schematic.shareworkshop = Dela på Workshoppen
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Vänd Schematic
schematic.saved = Schematic sparad.
schematic.delete.confirm = Den här schematicen kommer bli ytterst borttagen.
@@ -177,6 +179,7 @@ mod.incompletedependencies.details = This mod is unable to be loaded due to inva
mod.requiresversion = Requires game version: [red]{0}
mod.errors = Fel har inträffat under laddning av innehåll.
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]Du har moddar med fel.[] Stäng antingen av de drabbade moddarna eller fixa felen innan du spelar.
mod.enable = Aktivera
mod.requiresrestart = Spelet kommer nu att stängas av för att tillämpa mod ändringarna.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = Timed out while receiving UDP snapshots.\nThis may
cantconnect = Unable to join game ([accent]{0}[]).
connecting = [accent]Ansluter...
reconnecting = [accent]Reconnecting...
connecting.data = [accent]Loading world data...
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.
server.port = Port:
server.invalidport = Ogiltigt portnummer!
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!
@@ -344,6 +352,10 @@ save.export = Exportera
save.import.invalid = [accent]This save is invalid!
save.import.fail = [crimson]Failed to import save: [accent]{0}
save.export.fail = [crimson]Failed to export save: [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.import = Importera
save.newslot = Namn:
save.rename = Byt namn
@@ -479,14 +491,6 @@ editor.rules = Regler:
editor.generation = Generering:
editor.objectives = Objectives
editor.locales = Locale Bundles
editor.patches.guide = Patch Guide
editor.patches = Content Patches
editor.patch = Patchset: {0}
editor.patches.none = [lightgray]No patchsets loaded.
editor.patches.errors = Patchset Errors
editor.patches.importerror = Failed to import patchset
editor.patches.delete.confirm = Are you sure you want to delete this patchset?
editor.patch.fields = {0} fields
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.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Custom Priority
editor.filters.planetselect = Planet Selection
editor.shiftx = Shift X
editor.shifty = Shift Y
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Content Patches
patch.set = Patchset: {0}
patch.none = [lightgray]No patchsets loaded.
patch.errors = Patchset Errors
patch.importerror = Failed to import patchset
patch.delete.confirm = Are you sure you want to delete this patchset?
patch.path = Path:
patch.fields = {0} fields
bundle.lines = {0} lines
images = Images
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.
workshop = Workshop
waves.title = Vågor
waves.team = Team
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](first {0})
waves.max = max units
waves.guardian = Guardian
waves.preview = Förhandsvisning
waves.edit = Ändra...
waves.random = Random
waves.copy = Kopiera till Urklipp
waves.load = Läs från Urklipp
@@ -556,6 +628,7 @@ all = All
editor.default = [lightgray]<Default>
details = Details...
edit = Redigera...
edit.menu = Edit...
variables = Vars
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?
@@ -1068,6 +1141,7 @@ stat.targetsground = Targets Ground
stat.crushdamage = Crush Damage
stat.legsplashdamage = Leg Splash Damage
stat.itemsmoved = Move Speed
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = Time Between Launches
stat.shootrange = Range
stat.size = Storlek
@@ -1545,6 +1619,7 @@ rules.enemyCheat = Infinite AI (Red Team) Resources
rules.blockhealthmultiplier = Block Health Multiplier
rules.blockdamagemultiplier = Block Damage Multiplier
rules.unitfactoryactivation = Unit Factory Activation Delay
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = Unit Production Speed Multiplier
rules.unitcostmultiplier = Unit Cost Multiplier
rules.unithealthmultiplier = Unit Health Multiplier
@@ -1586,7 +1661,7 @@ rules.invasions = Enemy Sector Invasions
rules.legacylaunchpads = Legacy Launch Pad Mechanics
rules.legacylaunchpads.info = Allows using launch pads without landing pads, as in 7.0.
landingpad.legacy.disabled = [scarlet]\ue815 Disabled[lightgray] (Legacy Launch Pads enabled)
rules.showspawns = Show Enemy Spawns
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = Unpredictable Wave AI
rules.pauseDisabled = Disable Pausing
rules.fire = Fire
@@ -2615,7 +2690,7 @@ unit.risso.description = Fires a barrage of missiles and bullets at all nearby e
unit.minke.description = Fires shells and standard bullets at nearby ground targets.
unit.bryde.description = Fires long-range artillery shells and missiles at enemies.
unit.sei.description = Fires a barrage of missiles and armor-piercing bullets at enemies.
unit.omura.description = Fires a long-range piercing railgun bolt at enemies. Constructs flare units.
unit.omura.description = Fires a long-range piercing railgun bolt at enemies.
unit.alpha.description = Defends the Shard core from enemies. Builds structures.
unit.beta.description = Defends the Foundation core from enemies. Builds structures.
unit.gamma.description = Defends the Nucleus core from enemies. Builds structures.
@@ -2691,6 +2766,7 @@ lst.setprop = Sets a property of a unit or building.
lst.effect = Create a particle effect.
lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most.
lst.playsound = Plays a sound.\nVolume and pan can be a global value, or calculated based on position.
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.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
+93 -17
View File
@@ -19,6 +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.
gameover = จบเกม
gameover.disconnect = ออก
gameover.pvp = ทีมที่ชนะคือทีม [accent]{0}[]!
@@ -57,6 +58,13 @@ mods.github.open-release = หน้าเวอร์ชั่น
mods.browser.sortdate = เรียงตามล่าสุด
mods.browser.sortstars = เรียงตามคะแนนดาว
export.file = ส่งออกไฟล์
import.file = นำเข้าไฟล์
copy.clipboard = คัดลอกไปที่คลิปบอร์ด
import.clipboard = นำเข้าจากคลิปบอร์ด
workshop.browse = Browse Workshop
workshop.share = แชร์บนเวิร์กช็อป
schematic = แผนผัง
schematic.add = บันทึกแผนผัง...
schematics = แผนผัง
@@ -64,12 +72,6 @@ schematic.search = ค้นหาแผนผัง...
schematic.replace = มีแผนผังที่ใช้ชื่อนี้แล้ว แทนที่เลยไหม?
schematic.exists = มีแผนผังในชื่อนั้นอยู่แล้ว
schematic.import = นำเข้าแผนผัง...
schematic.exportfile = ส่งออกไฟล์
schematic.importfile = นำเข้าไฟล์
schematic.browseworkshop = ค้นหาในเวิร์กช็อป
schematic.copy = คัดลอกไปที่คลิปบอร์ด
schematic.copy.import = นำเข้าจากคลิปบอร์ด
schematic.shareworkshop = แชร์บนเวิร์กช็อป
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: กลับแผนผัง
schematic.saved = บันทึกแผนผังแล้ว
schematic.delete.confirm = แผนผังนี้จะถูกกำจัดให้หมดสิ้นไม่เหลือซาก
@@ -177,6 +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.noerrorplay = [scarlet]คุณมีม็อดที่มีข้อผิดพลาด[] กรุณาปิดม็อดนั้นๆ หรือแก้ไขข้อผิดพลาดก่อนที่จะเล่น
mod.enable = เปิดใช้งาน
mod.requiresrestart = เกมจะปิดตัวลงเพื่อติดตั้งม็อด
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = หมดเวลาในระหว่างก
cantconnect = ไม่สามารถเข้าร่วมเซิร์ฟเวอร์ ([accent]{0}[])
connecting = [accent]กำลังเชื่อมต่อ...
reconnecting = [accent]กำลังเชื่อมต่อใหม่...
connecting.data = [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.
server.port = พอร์ต:
server.invalidport = เลขพอร์ตไม่ถูกต้อง!
server.error.addressinuse = [scarlet]เกิดข้อผิดพลาดในการเปิดเซิร์ฟเวอร์บนพอร์ต 6567[]\n\nโปรดตรวจสอบให้แน่ใจว่าไม่มีเซิร์ฟเวอร์ Mindustry อื่นทำงานอยู่บนอุปกรณ์หรือเครือข่ายของคุณ!
@@ -344,6 +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.import = นำเข้าเซฟ
save.newslot = ชื่อเซฟ:
save.rename = เปลี่ยนชื่อ
@@ -479,14 +491,6 @@ editor.rules = กฎ
editor.generation = เจนเนอเรชั่น
editor.objectives = เป้าหมาย
editor.locales = ชุดภาษาท้องถิ่น
editor.patches.guide = คู่มือการใช้แพตช์
editor.patches = แพตช์เนื้อหา
editor.patch = ชุดแพตช์: {0}
editor.patches.none = [lightgray]ไม่มีชุดแพตช์ที่โหลดมา
editor.patches.errors = ข้อผิดพลาดชุดแพตช์
editor.patches.importerror = เกิดข้อผิดพลาดในการนำเข้าชุดแพตช์
editor.patches.delete.confirm = คุณแน่ใจหรือว่าจะลบชุดแพตช์นี้?
editor.patch.fields = {0} ฟิลด์
editor.worldprocessors = ตัวประมวลผลโลก
editor.worldprocessors.editname = แก้ไขชื่อ
editor.worldprocessors.none = [lightgray]ไม่พบตัวประมวลผลโลกในแมพ!\nสามารถไปเพิ่มในตัวแก้ไขแมพ หรือกดปุ่ม \ue813 เพิ่ม ด้านล่าง
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = กำหนดเองมาก่อน
editor.filters.planetselect = เลือกดาวเคราะห์
editor.shiftx = เลื่อน X
editor.shifty = เลื่อน Y
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = แพตช์เนื้อหา
patch.set = Patchset: {0}
patch.none = [lightgray]ไม่มีชุดแพตช์ที่โหลดมา
patch.errors = ข้อผิดพลาดชุดแพตช์
patch.importerror = เกิดข้อผิดพลาดในการนำเข้าชุดแพตช์
patch.delete.confirm = คุณแน่ใจหรือว่าจะลบชุดแพตช์นี้?
patch.path = Path:
patch.fields = {0} ฟิลด์
bundle.lines = {0} lines
images = Images
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.
workshop = เวิร์กช็อป
waves.title = คลื่น
waves.team = ทีม
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray]({0} จุดแรก)
waves.max = ยูนิตสูงสุด
waves.guardian = ผู้พิทักษ์
waves.preview = พรีวิว
waves.edit = แก้ไข...
waves.random = สุ่ม
waves.copy = คัดลอกไปยังคลิปบอร์ด
waves.load = โหลดจากคลิปบอร์ด
@@ -556,6 +628,7 @@ all = ทั้งหมด
editor.default = [lightgray]<ค่าเริ่มต้น>
details = รายละเอียด...
edit = แก้ไข...
edit.menu = Edit...
variables = ตัวแปร
logic.error.toolong = โค้ดตัวประมวลผลยาวเกินไป (ความยาวจำกัด: {0} ไบต์บีบอัด ความยาวจริง: {1} ไบต์)
logic.clear.confirm = คุณแน่ใจหรือว่าจะเคลียร์โค้ดทั้งหมดของตัวประมวลผลนี้?
@@ -1068,6 +1141,7 @@ stat.targetsground = ยิงพื้นดิน
stat.crushdamage = ดาเมจบดขยี้
stat.legsplashdamage = ดาเมจกระจายจากขา
stat.itemsmoved = ความเร็วการเคลื่อนย้าย
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = เวลาระหว่างการส่ง
stat.shootrange = ระยะยิง
stat.size = ขนาด
@@ -1545,6 +1619,7 @@ rules.enemyCheat = ทีมศัตรูมีทรัพยากรไม
rules.blockhealthmultiplier = พหุคูณพลังชีวิตของบล็อก
rules.blockdamagemultiplier = พหุคูณดาเมจของบล็อก
rules.unitfactoryactivation = ดีเลย์การเปิดใช้งานโรงงานยูนิต
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = พหุคูณความเร็วในการสร้างยูนิต
rules.unitcostmultiplier = พหุคูณราคาทรัพยากรของยูนิต
rules.unithealthmultiplier = พหุคูณพลังชีวิตของยูนิต
@@ -1586,7 +1661,7 @@ rules.invasions = การรุกรานของฐานทัพศั
rules.legacylaunchpads = กลไกฐานส่งทรัพยากรแบบเก่า
rules.legacylaunchpads.info = อนุญาตการใช้ฐานส่งทรัพยากรรุ่นเก่า (เวอร์ชั่น 7.0) โดยไม่ต้องใช้ฐานลงจอดทรัพยากร
landingpad.legacy.disabled = [scarlet]\ue815 ปิดใช้งาน[lightgray] (เปิดใช้งานกลไกฐานส่งทรัพยากรแบบเก่าอยู่)
rules.showspawns = แสดงจุดเกิดศัตรู
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = AI คลื่นแบบคาดเดาไม่ได้
rules.pauseDisabled = ปิดการหยุดชั่วคราว
rules.fire = ไฟ
@@ -2691,6 +2766,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.makemarker = สร้างเครื่องหมายลอจิกใหม่ขึ้นมาในแมพ\nจะต้องเพิ่ม ID เข้าไปเพื่อบ่งชี้เครื่องหมายนี้\nเครื่องหมายจำกัดได้แค่ 20,000 ต่อแมพในตอนนี้
lst.setmarker = ตั้งค่าคุณสมบัติให้กับเครื่องหมาย\nID ของเครื่องหมายที่ใช้จะต้องเป็น ID เดียวกันกับในคำสั่ง Make Marker\nค่า[accent]ว่างเปล่า[]จะถูกข้าม
lst.localeprint = เพิ่มค่าชุดภาษาท้องถิ่นของแมพลงไปยังคิวข้อความเพื่อตั้งค่าชุดภาษาของแมพในตัวแก้ไข ให้เปิด [accent]ข้อมูลแมพ > ชุดภาษาท้องถิ่น[].\nถ้าหากผู้เล่นอยู่ในมือถือ ให้ลองปริ้นค่าโดยลงท้ายด้วย ".mobile" ก่อน
+94 -18
View File
@@ -19,6 +19,7 @@ clipboardcopy = This server wants to copy text to your clipboard. Are you sure y
linkfail = Link Acilamadi!\nLink sizin icin kopyalandi.
screenshot = Screenshot saved to {0}
screenshot.invalid = Map too large, potentially not enough memory for screenshot.
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = Cekirdegin yok edildi.
gameover.disconnect = Disconnect
gameover.pvp = The[accent] {0}[] team is victorious!
@@ -57,6 +58,13 @@ mods.github.open-release = Release Page
mods.browser.sortdate = Sort by recent
mods.browser.sortstars = Sort by stars
export.file = Export File
import.file = Import File
copy.clipboard = Copy to Clipboard
import.clipboard = Import from Clipboard
workshop.browse = Browse Workshop
workshop.share = Share on Workshop
schematic = Schematic
schematic.add = Save Schematic...
schematics = Schematics
@@ -64,12 +72,6 @@ schematic.search = Search schematics...
schematic.replace = A schematic by that name already exists. Replace it?
schematic.exists = A schematic by that name already exists.
schematic.import = Import Schematic...
schematic.exportfile = Export File
schematic.importfile = Import File
schematic.browseworkshop = Browse Workshop
schematic.copy = Copy to Clipboard
schematic.copy.import = Import from Clipboard
schematic.shareworkshop = Share on Workshop
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic
schematic.saved = Schematic saved.
schematic.delete.confirm = This schematic will be utterly eradicated.
@@ -177,6 +179,7 @@ mod.incompletedependencies.details = This mod is unable to be loaded due to inva
mod.requiresversion = Requires game version: [red]{0}
mod.errors = Errors have occurred loading content.
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]You have mods with errors.[] Either disable the affected mods or fix the errors before playing.
mod.enable = Enable
mod.requiresrestart = The game will now close to apply the mod changes.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = Timed out while receiving UDP snapshots.\nThis may
cantconnect = Unable to join game ([accent]{0}[]).
connecting = [accent]Baglaniliyor
reconnecting = [accent]Reconnecting...
connecting.data = [accent]Loading world data...
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.
server.port = Link:
server.invalidport = Geçersiz Oyun numarasi!
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!
@@ -344,6 +352,10 @@ save.export = Kayiti tasi
save.import.invalid = [accent]Kayit gecersiz!
save.import.fail = [crimson]Failed to import save: [accent]{0}
save.export.fail = [crimson]Failed to export save: [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.import = Kayit al
save.newslot = Kayit ismi:
save.rename = Yeniden adlandir
@@ -479,14 +491,6 @@ editor.rules = Rules:
editor.generation = Generation:
editor.objectives = Objectives
editor.locales = Locale Bundles
editor.patches.guide = Patch Guide
editor.patches = Content Patches
editor.patch = Patchset: {0}
editor.patches.none = [lightgray]No patchsets loaded.
editor.patches.errors = Patchset Errors
editor.patches.importerror = Failed to import patchset
editor.patches.delete.confirm = Are you sure you want to delete this patchset?
editor.patch.fields = {0} fields
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.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Custom Priority
editor.filters.planetselect = Planet Selection
editor.shiftx = Shift X
editor.shifty = Shift Y
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Content Patches
patch.set = Patchset: {0}
patch.none = [lightgray]No patchsets loaded.
patch.errors = Patchset Errors
patch.importerror = Failed to import patchset
patch.delete.confirm = Are you sure you want to delete this patchset?
patch.path = Path:
patch.fields = {0} fields
bundle.lines = {0} lines
images = Images
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.
workshop = Workshop
waves.title = Waves
waves.team = Team
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](first {0})
waves.max = max units
waves.guardian = Guardian
waves.preview = Preview
waves.edit = Edit...
waves.random = Random
waves.copy = Copy to Clipboard
waves.load = Load from Clipboard
@@ -556,6 +628,7 @@ all = All
editor.default = [lightgray]<Default>
details = Details...
edit = Edit...
edit.menu = Edit...
variables = Vars
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?
@@ -1068,6 +1141,7 @@ stat.targetsground = Targets Ground
stat.crushdamage = Crush Damage
stat.legsplashdamage = Leg Splash Damage
stat.itemsmoved = Move Speed
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = Time Between Launches
stat.shootrange = Menzil
stat.size = Buyukluk
@@ -1545,6 +1619,7 @@ rules.enemyCheat = Infinite AI Resources
rules.blockhealthmultiplier = Block Health Multiplier
rules.blockdamagemultiplier = Block Damage Multiplier
rules.unitfactoryactivation = Unit Factory Activation Delay
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
rules.unitcostmultiplier = Unit Cost Multiplier
rules.unithealthmultiplier = Unit Health Multiplier
@@ -1586,7 +1661,7 @@ rules.invasions = Enemy Sector Invasions
rules.legacylaunchpads = Legacy Launch Pad Mechanics
rules.legacylaunchpads.info = Allows using launch pads without landing pads, as in 7.0.
landingpad.legacy.disabled = [scarlet]\ue815 Disabled[lightgray] (Legacy Launch Pads enabled)
rules.showspawns = Show Enemy Spawns
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = Unpredictable Wave AI
rules.pauseDisabled = Disable Pausing
rules.fire = Fire
@@ -2615,7 +2690,7 @@ unit.risso.description = Fires a barrage of missiles and bullets at all nearby e
unit.minke.description = Fires shells and standard bullets at nearby ground targets.
unit.bryde.description = Fires long-range artillery shells and missiles at enemies.
unit.sei.description = Fires a barrage of missiles and armor-piercing bullets at enemies.
unit.omura.description = Fires a long-range piercing railgun bolt at enemies. Constructs flare units.
unit.omura.description = Fires a long-range piercing railgun bolt at enemies.
unit.alpha.description = Defends the Shard core from enemies. Builds structures.
unit.beta.description = Defends the Foundation core from enemies. Builds structures.
unit.gamma.description = Defends the Nucleus core from enemies. Builds structures.
@@ -2691,6 +2766,7 @@ lst.setprop = Sets a property of a unit or building.
lst.effect = Create a particle effect.
lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most.
lst.playsound = Plays a sound.\nVolume and pan can be a global value, or calculated based on position.
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.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
+94 -18
View File
@@ -19,6 +19,7 @@ clipboardcopy = Sunucu Panona metin kopyalamak istiyor. Bunu yapmak istediğine
linkfail = Link açılamadı!\nURL kopyalandı.
screenshot = Ekran görüntüsü {0} konumuna kaydedildi
screenshot.invalid = Harita çok büyük, muhtemelen ekran görüntüsü için yeterli bellek yok.
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = Oyun Bitti
gameover.disconnect = Bağlantı Koptu!
gameover.pvp = [accent] {0}[] Takımı kazandı!
@@ -57,6 +58,13 @@ mods.github.open-release = Yayım Sayfası
mods.browser.sortdate = En yeniye göre sırala
mods.browser.sortstars = Yıldız sayısına göre sırala
export.file = Dışarı Aktar
import.file = İçeri Aktar
copy.clipboard = Panoya Kopyala
import.clipboard = Panodan Yapıştır
workshop.browse = Browse Workshop
workshop.share = Atölyede paylaş
schematic = Şema
schematic.add = Şemayı Kaydet...
schematics = Şemalar
@@ -64,12 +72,6 @@ schematic.search = Şema ara...
schematic.replace = Aynı adda bir şema zaten var. Üzerine yazılsın mı?
schematic.exists = Aynı adda bir şema zaten var.
schematic.import = Şemayı İçeri Aktar...
schematic.exportfile = Dışarı Aktar
schematic.importfile = İçeri Aktar
schematic.browseworkshop = Atölyeyi araştır
schematic.copy = Panoya Kopyala
schematic.copy.import = Panodan Yapıştır
schematic.shareworkshop = Atölyede paylaş
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Şemayı döndür
schematic.saved = Şema Kaydedildi.
schematic.delete.confirm = Bu şema tamamen yok edilecek.
@@ -177,6 +179,7 @@ mod.incompletedependencies.details = Eksik veya yanlış bağlılıklardan dolay
mod.requiresversion = Şu oyun sürümü gerekiyor: [red]{0}
mod.errors = İçerik yüklenirken bir hata oluştu.
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]Hatalı modlarınız var.[] Oynamadan önce bu modları devre dışı bırakın veya dosyadaki hataları düzeltin.
mod.enable = Etkinleştir
mod.requiresrestart = Oyun mod değişikliklerini uygulamak için kapatılacak.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = UDP anlık görüntüleri alınırken zaman aşım
cantconnect = Oyuna girilemiyor ([accent]{0}[]).
connecting = [accent]Bağlanılıyor...
reconnecting = [accent]Yeniden Bağlanılıyor...
connecting.data = [accent]Dünya verisi yükleniyor...
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.
server.port = Port:
server.invalidport = Geçersiz port sayısı!
server.error.addressinuse = [scarlet]Port 6567 açılamadı.[]\n\nCihaz ve internetinde başka bir Mindustry sunucusu açık olmadığından emin ol!
@@ -344,6 +352,10 @@ save.export = Kaydı Dışa Aktar
save.import.invalid = [accent]Bu kayıt geçersiz!
save.import.fail = [crimson]Kayıt içe aktarılamadı: [accent]{0}
save.export.fail = [crimson]Kayıt dışa aktarılamadı: [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.import = Kaydı İçe Aktar
save.newslot = İsmi kaydet:
save.rename = Yeniden isimlendir
@@ -479,14 +491,6 @@ editor.rules = Kurallar:
editor.generation = Oluşum:
editor.objectives = Görevler:
editor.locales = Dil Paketleri
editor.patches.guide = Yama Haritası
editor.patches = İçerik Yamaları
editor.patch = Yamalar: {0}
editor.patches.none = [lightgray]Yama bulunamadı.
editor.patches.errors = Yama Hataları
editor.patches.importerror = Yamalar yüklenirken hata oluştu
editor.patches.delete.confirm = Bu yamaları silmek istediğine emin misin?
editor.patch.fields = {0} alanlar
editor.worldprocessors = Evrensel İşlemciler
editor.worldprocessors.editname = Adı Düzenle
editor.worldprocessors.none = [lightgray]Evrensel İşlemci bloğu bulunamadı!\nHarita düzenleyicisinden ekleyin veya aşağıdaki \ue813 Ekle butonunu kullanın.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Özel Öncelik
editor.filters.planetselect = Planet Selection
editor.shiftx = X Ekseninde Kaydır
editor.shifty = Y Ekseninde Kaydır
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = İçerik Yamaları
patch.set = Patchset: {0}
patch.none = [lightgray]Yama bulunamadı.
patch.errors = Yama Hataları
patch.importerror = Yamalar yüklenirken hata oluştu
patch.delete.confirm = Bu yamaları silmek istediğine emin misin?
patch.path = Path:
patch.fields = {0} alanlar
bundle.lines = {0} lines
images = Images
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.
workshop = Atölye
waves.title = Dalgalar
waves.team = Takım
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](ilk {0})
waves.max = maks birim
waves.guardian = Gardiyan
waves.preview = Önizleme
waves.edit = Düzenle...
waves.random = Rastgele
waves.copy = Panodan kopyala
waves.load = Panodan yükle
@@ -556,6 +628,7 @@ all = Tüm
editor.default = [lightgray]<Varsayılan>
details = Detaylar...
edit = Düzenle...
edit.menu = Edit...
variables = Değişkenler
logic.error.toolong = Processor code too long (Limit: {0} compressed bytes, actual length: {1} bytes)
logic.clear.confirm = Bu işlemciden bütün kodları silmek istediğinize emin misiniz?
@@ -1068,6 +1141,7 @@ stat.targetsground = Yeri Hedefler Mi
stat.crushdamage = Ezme Hasarı
stat.legsplashdamage = Ayak Basım Hasarı
stat.itemsmoved = Hareket Hızı
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = Fırlatmalar Arasındaki Süre
stat.shootrange = Menzil
stat.size = Boyut
@@ -1545,6 +1619,7 @@ rules.enemyCheat = Sınırsız YZ (Düşman Takım) Kaynakları
rules.blockhealthmultiplier = Blok Can Çarpanı
rules.blockdamagemultiplier = Blok Hasar Çarpanı
rules.unitfactoryactivation = Birim Fabrika Aktifleşme Gecikmesi
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = Birim Üretim Hız Çarpanı
rules.unitcostmultiplier = Birim Fiyat Çarpanı
rules.unithealthmultiplier = Birim Can Çarpanı
@@ -1586,7 +1661,7 @@ rules.invasions = Düşman Sektör Saldırıları
rules.legacylaunchpads = Eski Fırlatış Rampası Mekanikleri
rules.legacylaunchpads.info = v7den kalma Eski Fırlatış Rampası Mekaniklerini kullanmanı sağlar
landingpad.legacy.disabled = [scarlet]\ue815 Devre Dışı[lightgray] (Eski Fırltış Rampaları Artık Kullanılamaz)
rules.showspawns = Düşman Doğuş Noktalarını Göster
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = Tahmin Edilemez Dalgalar
rules.pauseDisabled = Duraklatmayı Devre Dışı Bırak (Erkek Adam Oyunu Durdurmaz)
rules.fire = Ateş
@@ -2615,7 +2690,7 @@ unit.risso.description = Yakındaki düşmanlara Füze atar.
unit.minke.description = Yakındaki düşmanlara basit mermi ve toplarla saldırır.
unit.bryde.description = Düşmanlara uzun menzil havanıyla saldırır.
unit.sei.description = Düşmanlara füze atar ve devasa zırh delici mermilerle saldırır.
unit.omura.description = Uzun menzil bir ışın atıcıya sahiptir. Mermisi nerdeyse her bolğu delebilir. Flare üretir.
unit.omura.description = Uzun menzil bir ışın atıcıya sahiptir. Mermisi nerdeyse her bolğu delebilir.
unit.alpha.description = Çekirdeği korur. Bina inşa eder.
unit.beta.description = Çekirdeği korur. Bina inşa eder.
unit.gamma.description = Çekirdeği korur. Bina inşa eder.
@@ -2691,6 +2766,7 @@ lst.setprop = Bir bina veya birime nitelik atar.
lst.effect = Parçacık efekti oluştur.
lst.sync = Ağ boyunca bir değişkeni senkronize et.\nSaniyede en fazla 10 kere yapılabilir.
lst.playsound = Bir ses çal.\nSes şiddeti bir küresel değer olabilir veya konuma göre belirlenebilir.
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.makemarker = Dünyada yeni bir İşlemci İşareti koy.\nBu İşarete bir Kimlik adamalısın.\nDünya başına 20.000 limit bulunmakta.
lst.setmarker = Bir İşlemci İşareti için bir arazi seç.\nKimlik, İşaret Koyucudaki ile aynı olmalı.
lst.localeprint = Harita yerel paket özellik değerini metin arabelleğine ekleyin.\nHarita düzenleyicide harita yerel ayar paketlerini ayarlamak için şunu işaretleyin: [accent]Harita Bilgisi > Yerel Paketler[].\nİstemci bir mobil cihazsa, önce ".mobile" ile biten bir özelliği yazdırmaya çalışır.
+94 -18
View File
@@ -19,6 +19,7 @@ clipboardcopy = Цей сервер хоче скопіювати текст д
linkfail = Не вдалося перейти за посиланням!\nURL-адреса скопійована в буфер обміну.
screenshot = Зняток мапи збережено до {0}
screenshot.invalid = Мапа занадто велика, тому, мабуть, не вистачає пам’яті для знятку мапи.
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = Гра завершена
gameover.disconnect = Від’єднатися
gameover.pvp = [accent]{0}[] перемогли!
@@ -57,6 +58,13 @@ mods.github.open-release = Посилання
mods.browser.sortdate = Сортувати за давністю
mods.browser.sortstars = Сортувати за популярністю
export.file = Експортувати файл
import.file = Імпортувати файл
copy.clipboard = Копіювати в буфер обміну
import.clipboard = Імпортувати з клавіатури
workshop.browse = Browse Workshop
workshop.share = Поширити в Майстерню
schematic = Схема
schematic.add = Зберегти схему…
schematics = Схеми
@@ -64,12 +72,6 @@ schematic.search = Шукати схеми...
schematic.replace = Схема з такою назвою вже є. Замінити її?
schematic.exists = Схема з такою назвою вже є.
schematic.import = Імпортувати схему…
schematic.exportfile = Експортувати файл
schematic.importfile = Імпортувати файл
schematic.browseworkshop = Переглянути в Майстерні
schematic.copy = Копіювати в буфер обміну
schematic.copy.import = Імпортувати з клавіатури
schematic.shareworkshop = Поширити в Майстерню
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Обернути схему
schematic.saved = Схема збережена.
schematic.delete.confirm = Ви справді хочете видалити цю схему?
@@ -177,6 +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.noerrorplay = [red]Увімкнено модифікації з помилками.[] Або вимкніть проблемні модифікації, або виправте їх.
mod.enable = Увімкнути
mod.requiresrestart = А тепер гра закриється, щоби застосувати зміни модифікацій.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = Час вийшов під час отриманн
cantconnect = Не вдалося під’єднатися до гри ([accent]{0}[]).
connecting = [accent]Приєднання…
reconnecting = [accent]Повторне з’єднання…
connecting.data = [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.
server.port = Порт:
server.invalidport = Недійсний номер порту!
server.error.addressinuse = [scarlet]Помилка запуску сервера за портом 6567.[]\n\nПереконайтеся, що інші сервери Mindustry не запущені на вашому пристрої або мережі!
@@ -344,6 +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.import = Імпортувати збереження
save.newslot = Ім’я збереження:
save.rename = Перейменувати
@@ -479,14 +491,6 @@ editor.rules = Правила
editor.generation = Генерація
editor.objectives = Завдання
editor.locales = Мовні пакети
editor.patches.guide = Посібник із патчів
editor.patches = Набір патчів вмісту
editor.patch = Набір патчу: {0}
editor.patches.none = [lightgray]Набір патчів вмісту не завантажено.
editor.patches.errors = Помилки набору патчу
editor.patches.importerror = Помилка імпорту набору патчів
editor.patches.delete.confirm = Ви дійсно хочете видалити цей набір патчу?
editor.patch.fields = Кількість полів: {0}
editor.worldprocessors = Світові процесори
editor.worldprocessors.editname = Редагувати назву
editor.worldprocessors.none = [lightgray]Блоки світового процесора не знайдено!\nДодайте його у редакторі мапи або скористайтеся кнопкою \ue813 «Додати» нижче.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Власні
editor.filters.planetselect = Планети
editor.shiftx = Зміщення за віссю X
editor.shifty = Зміщення за віссю Y
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Набір патчів вмісту
patch.set = Patchset: {0}
patch.none = [lightgray]Набір патчів вмісту не завантажено.
patch.errors = Помилки набору патчу
patch.importerror = Помилка імпорту набору патчів
patch.delete.confirm = Ви дійсно хочете видалити цей набір патчу?
patch.path = Path:
patch.fields = Кількість полів: {0}
bundle.lines = {0} lines
images = Images
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.
workshop = Майстерня
waves.title = Хвилі
waves.team = Команда
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](Перша {0})
waves.max = макс. одиниць
waves.guardian = Вартовий
waves.preview = Попередній перегляд
waves.edit = Редагувати…
waves.random = Випадково
waves.copy = Копіювати в буфер обміну
waves.load = Завантажити з буфера обміну
@@ -556,6 +628,7 @@ all = Усе
editor.default = [lightgray]<За замовчуванням>
details = Подробиці…
edit = Змінити…
edit.menu = Edit...
variables = Змінні
logic.error.toolong = Processor code too long (Limit: {0} compressed bytes, actual length: {1} bytes)
logic.clear.confirm = Ви впевнені, що хочете очистити весь код в цьому процесорі?
@@ -1068,6 +1141,7 @@ stat.targetsground = Наземні противники
stat.crushdamage = Шкода трощенням
stat.legsplashdamage = Шкода ніг по ділянці
stat.itemsmoved = Швидкість переміщення
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = Час між запусками
stat.shootrange = Радіус дії
stat.size = Розмір
@@ -1545,6 +1619,7 @@ rules.enemyCheat = Нескінченні ресурси для червоної
rules.blockhealthmultiplier = Множник здоров’я будівель
rules.blockdamagemultiplier = Множник шкоди будівель
rules.unitfactoryactivation = Затримка активації заводів одиниць
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = Множник швидкості виробництва бойових одиниць
rules.unitcostmultiplier = Множник вартості одиниць
rules.unithealthmultiplier = Множник здоров’я бойових одиниць
@@ -1586,7 +1661,7 @@ rules.invasions = Наступ ворожих сексторів
rules.legacylaunchpads = Класичний пусковий майданчик
rules.legacylaunchpads.info = Дозволяє використовувати пусковий майданчик без посадкових майданчиків, як у v7.
landingpad.legacy.disabled = [scarlet]\ue815 Вимкнено[lightgray] (Увімкнено класичний пусковий майданчик)
rules.showspawns = Показати точки висадки
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = Непередбачувані хвилі з ШІ
rules.pauseDisabled = Вимкнути використання паузи
rules.fire = Вогонь
@@ -2615,7 +2690,7 @@ unit.risso.description = Англійська назва: Risso\nВистріл
unit.minke.description = Англійська назва: Minke\nВистрілює запальними снарядами та стандартними кулями по найближчих наземних цілях.
unit.bryde.description = Англійська назва: Bryde\nВистрілює у ворогів артилерійськими снарядами та ракетами великої дальності.
unit.sei.description = Англійська назва: Sei\nВистрілює у ворогів шквалом ракет і бронебійних куль.
unit.omura.description = Англійська назва: Omura\nВистрілює у ворогів далекобійним болтом, що пробиває броню. Виробляє повітряних спалахів.
unit.omura.description = Англійська назва: Omura\nВистрілює у ворогів далекобійним болтом, що пробиває броню.
unit.alpha.description = Англійська назва: Alpha\nЗахищає ядро «Уламок» від противників. Будує споруди.
unit.beta.description = Англійська назва: Beta\nЗахищає ядро «Штаб» від противників. Будує споруди.
unit.gamma.description = Англійська назва: Gamma\nЗахищає ядро «Атом» від противників. Будує споруди.
@@ -2691,6 +2766,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.makemarker = Створює новий логічний маркер у світі.\nПотрібно надати ідентифікатор для ідентифікації цього маркера.\nНаразі кількість маркерів на світ обмежена 20 тисячами.
lst.setmarker = Установлює властивість для маркера.\nВикористаний ідентифікатор має збігатися з інструкцією «Створити маркер».
lst.localeprint = Додає значення властивості мовного пакету мапи до текстового буфера.\nЩоб встановити мовний пакет мапи в редакторі мапи, перейдіть до [accent]Інформація про мапу > Мовні пакети[].\nЯкщо клієнтом є мобільний пристрій, то спочатку намагається надрукувати властивість, що закінчується на «.mobile».
+93 -17
View File
@@ -19,6 +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.
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!
@@ -57,6 +58,13 @@ 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
copy.clipboard = Sao chép vào Bộ nhớ tạm
import.clipboard = Thêm từ Bộ nhớ tạm
workshop.browse = Browse Workshop
workshop.share = Chia sẻ lên Workshop
schematic = Bản thiết kế
schematic.add = Lưu bản thiết kế...
schematics = Các bản thiết kế
@@ -64,12 +72,6 @@ schematic.search = Tìm kiếm các bản thiết kế...
schematic.replace = Bản thiết kế có tên đó đã tồn tại. Thay thế nó?
schematic.exists = Bản thiết kế có tên đó đã tồn tại.
schematic.import = Nhập Bản thiết kế...
schematic.exportfile = Xuất tệp
schematic.importfile = Nhập tệp
schematic.browseworkshop = Duyệt qua Workshop
schematic.copy = Sao chép vào Bộ nhớ tạm
schematic.copy.import = Thêm từ Bộ nhớ tạm
schematic.shareworkshop = Chia sẻ lên Workshop
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Lật bản thiết kế
schematic.saved = Đã lưu bản thiết kế.
schematic.delete.confirm = Bản thiết kế này sẽ bị xóa hoàn toàn.
@@ -177,6 +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.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.
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = Đã hết thời gian trong khi nhận ảnh chụ
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.data = [accent]Đang tải dữ liệu thế giớ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.
server.port = Cổng:
server.invalidport = Số cổng không hợp lệ!
server.error.addressinuse = [scarlet]Mở máy chủ trên cổng 6567 thất bại.[]\n\nChắc rằng không có máy chủ Mindustry nào đang chạy trên thiết bị hoặc mạng của bạn!
@@ -344,6 +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.import = Nhập bản lưu
save.newslot = Tên bản lưu:
save.rename = Đổi tên
@@ -479,14 +491,6 @@ editor.rules = Quy tắc
editor.generation = Tạo ra
editor.objectives = Mục tiêu nhiệm vụ
editor.locales = Gói ngôn ngữ
editor.patches.guide = Hướng Dẫn Bản Vá
editor.patches = Bản Vá Dữ Liệu
editor.patch = Bộ vá: {0}
editor.patches.none = [lightgray]Không có bản vá nào được nạp.
editor.patches.errors = Lỗi Bộ Vá
editor.patches.importerror = Nhập bộ vá thất bại
editor.patches.delete.confirm = Bạn có chắc chắn muốn xóa bộ vá này không?
editor.patch.fields = {0} trường
editor.worldprocessors = Các bộ xử lý thế giới
editor.worldprocessors.editname = Sửa tên
editor.worldprocessors.none = [lightgray]không tìm thấy khối bộ xử lý thế giới nào!\nThêm một bộ trong trình chỉnh sửa bản đồ, hoặc dùng nút \ue813 Thêm ở dưới.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Ưu Tiên Tùy Chỉnh
editor.filters.planetselect = Chọn Hành Tinh
editor.shiftx = Dịch theo X
editor.shifty = Dịch theo Y
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Bản Vá Dữ Liệu
patch.set = Patchset: {0}
patch.none = [lightgray]Không có bản vá nào được nạp.
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.fields = {0} trường
bundle.lines = {0} lines
images = Images
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.
workshop = Workshop
waves.title = Đợt
waves.team = Đội
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray]({0} điểm đầu tiên)
waves.max = đơn vị tối đa
waves.guardian = Trùm
waves.preview = Xem trước
waves.edit = Chỉnh sửa...
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
@@ -556,6 +628,7 @@ all = Tất cả
editor.default = [lightgray]<Mặc định>
details = Chi tiết...
edit = Chỉnh sửa
edit.menu = Edit...
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?
@@ -1068,6 +1141,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.launchtime = Thời gian giữa các lần phóng
stat.shootrange = Phạm vi
stat.size = Kích thước
@@ -1545,6 +1619,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.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ị
@@ -1586,7 +1661,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.showspawns = Hiện Khu Kẻ Địch Xuất Hiện
rules.hidespawns = Hide Enemy Spawns
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
@@ -2691,6 +2766,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.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.
+93 -17
View File
@@ -19,6 +19,7 @@ clipboardcopy = 这个服务器想要将文本复制到你的剪贴板。你确
linkfail = 无法打开链接!\n链接已复制到你的剪贴板。
screenshot = 截图已保存到 {0}
screenshot.invalid = 地图太大了,可能没有足够的内存进行截图。
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = 游戏结束
gameover.disconnect = 断开连接
gameover.pvp = [accent]{0}[] 队获胜!
@@ -57,6 +58,13 @@ mods.github.open-release = 发布页面
mods.browser.sortdate = 按最近排序
mods.browser.sortstars = 按星标数排序
export.file = 导出文件
import.file = 导入文件
copy.clipboard = 复制到剪贴板
import.clipboard = 从剪贴板导入
workshop.browse = Browse Workshop
workshop.share = 分享到创意工坊
schematic = 蓝图
schematic.add = 保存蓝图
schematics = 蓝图
@@ -64,12 +72,6 @@ schematic.search = 搜索蓝图
schematic.replace = 已有同名蓝图。是否替换?
schematic.exists = 已有同名蓝图。
schematic.import = 导入蓝图
schematic.exportfile = 导出文件
schematic.importfile = 导入文件
schematic.browseworkshop = 浏览创意工坊
schematic.copy = 复制到剪贴板
schematic.copy.import = 从剪贴板导入
schematic.shareworkshop = 分享到创意工坊
schematic.flip = [accent][[{0}][]/[accent][[{1}][]:翻转蓝图
schematic.saved = 蓝图已保存。
schematic.delete.confirm = 确定删除这个蓝图?
@@ -177,6 +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.noerrorplay = [red]你的模组发生了错误。[] 请禁用受影响的模组或修复错误后再进行游戏。
mod.enable = 启用
mod.requiresrestart = 游戏将关闭以应用模组更改。
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = 接收 UDP 快照超时。\n可能是由于网络
cantconnect = 无法加入游戏([accent]{0}[])。
connecting = [accent]连接中…
reconnecting = [accent]重新连接…
connecting.data = [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.
server.port = 端口:
server.invalidport = 端口号无效!
server.error.addressinuse = [scarlet]无法在端口 6567 上开启服务器。[]\n\n请确保没有其他 Mindustry 服务器在你的设备或网络中运行!
@@ -344,6 +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.import = 导入存档
save.newslot = 存档名称:
save.rename = 重命名
@@ -479,14 +491,6 @@ editor.rules = 规则
editor.generation = 生成
editor.objectives = 目标
editor.locales = 本地化语言包
editor.patches.guide = 数据包指南
editor.patches = 数据包
editor.patch = 补丁集: {0}
editor.patches.none = [lightgray]未加载补丁集。
editor.patches.errors = 补丁集出错
editor.patches.importerror = 导入补丁集失败
editor.patches.delete.confirm = 您确定要删除此补丁集吗?
editor.patch.fields = {0} 处变动
editor.worldprocessors = 世界处理器
editor.worldprocessors.editname = 命名
editor.worldprocessors.none = [lightgray]未找到世界处理器!\n请在地图编辑器中添加或使用下方的 \ue813 添加按钮。
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = 自定义优先
editor.filters.planetselect = 选择星球
editor.shiftx = X 轴平移
editor.shifty = Y 轴平移
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = 数据包
patch.set = Patchset: {0}
patch.none = [lightgray]未加载补丁集。
patch.errors = 补丁集出错
patch.importerror = 导入补丁集失败
patch.delete.confirm = 您确定要删除此补丁集吗?
patch.path = Path:
patch.fields = {0} 处变动
bundle.lines = {0} lines
images = Images
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.
workshop = 创意工坊
waves.title = 波次
waves.team = 队伍
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](前 {0} 个)
waves.max = 最大单位数
waves.guardian = Boss
waves.preview = 预览
waves.edit = 编辑
waves.random = 随机
waves.copy = 复制到剪贴板
waves.load = 从剪贴板读取
@@ -556,6 +628,7 @@ all = 所有
editor.default = [lightgray]< 默认 >
details = 详情
edit = 编辑
edit.menu = Edit...
variables = 变量
logic.error.toolong = 处理器代码过长(限制长度:{0} 字节,实际长度:{1} 字节)
logic.clear.confirm = 确定要清除此处理器中的所有代码吗?
@@ -1068,6 +1141,7 @@ stat.targetsground = 攻击地面单位
stat.crushdamage = 碾压伤害
stat.legsplashdamage = 践踏伤害
stat.itemsmoved = 移动速度
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = 发射间隔
stat.shootrange = 范围
stat.size = 尺寸
@@ -1545,6 +1619,7 @@ rules.enemyCheat = 敌人无限资源
rules.blockhealthmultiplier = 建筑生命倍率
rules.blockdamagemultiplier = 建筑伤害倍率
rules.unitfactoryactivation = 单位工厂延迟激活
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = 单位生产速度倍率
rules.unitcostmultiplier = 单位生产花费倍率
rules.unithealthmultiplier = 单位生命倍率
@@ -1586,7 +1661,7 @@ rules.invasions = 敌方入侵区块
rules.legacylaunchpads = 旧版发射台机制
rules.legacylaunchpads.info = 允许使用没有接收台的发射台(与 7.0 版本一致)。
landingpad.legacy.disabled = [scarlet]\ue815 禁用[lightgray] (旧版发射台已启用)
rules.showspawns = 显示敌方单位出生点
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = 不可预测的 AI 波次
rules.pauseDisabled = 禁用暂停
rules.fire = 允许火焰产生并蔓延
@@ -2691,6 +2766,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.makemarker = 在世界中创建一个新的逻辑标记。\n必须提供一个用于标识该标记的 ID。\n目前每个世界限制最多 20000 个标记。
lst.setmarker = 为标记设置属性。\n使用的 ID 必须与制作标记指令中的相同。
lst.localeprint = 将地图本地化文本属性值添加到文本缓冲区中。\n要在地图编辑器中设置地图本地化包,请检查 [accent]地图信息 > 本地化包[]。\n如果客户端是移动设备,则尝试首先打印以 “.mobile” 结尾的属性。
+94 -18
View File
@@ -19,6 +19,7 @@ clipboardcopy = This server wants to copy text to your clipboard. Are you sure y
linkfail = 無法打開連結!\n我們已將該網址複製到您的剪貼簿。
screenshot = 截圖儲存到{0}
screenshot.invalid = 地圖太大了,可能沒有足夠的記憶體用於截圖。
screenshot.error = Failed to take screenshot. Your device likely does not support screenshots this large.
gameover = 遊戲結束
gameover.disconnect = 斷線
gameover.pvp = [accent]{0}[]隊獲勝!
@@ -57,6 +58,13 @@ mods.github.open-release = 發行網頁
mods.browser.sortdate = 以最近篩選
mods.browser.sortstars = 以星數篩選
export.file = 匯出檔案
import.file = 匯入檔案
copy.clipboard = 複製到剪貼簿
import.clipboard = 從剪貼簿匯入
workshop.browse = Browse Workshop
workshop.share = 分享到工作坊
schematic = 藍圖
schematic.add = 儲存藍圖……
schematics = 藍圖
@@ -64,12 +72,6 @@ schematic.search = 搜尋藍圖...
schematic.replace = 相同名稱的藍圖已經存在。是否取代它?
schematic.exists = 相同名稱的藍圖已經存在。
schematic.import = 匯入藍圖……
schematic.exportfile = 匯出檔案
schematic.importfile = 匯入檔案
schematic.browseworkshop = 瀏覽工作坊
schematic.copy = 複製到剪貼簿
schematic.copy.import = 從剪貼簿匯入
schematic.shareworkshop = 分享到工作坊
schematic.flip = [accent][[{0}][]/[accent][[{1}][]:翻轉藍圖
schematic.saved = 藍圖已儲存。
schematic.delete.confirm = 該藍圖將被完全清除。
@@ -177,6 +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.noerrorplay = [scarlet]您使用了有問題的模組。[] 遊戲前請先停用相關模組或修正問題。
mod.enable = 啟用
mod.requiresrestart = 遊戲將立即關閉以套用模組變更。
@@ -327,7 +330,12 @@ disconnect.snapshottimeout = Timed out while receiving UDP snapshots.\nThis may
cantconnect = 無法加入遊戲 ([accent]{0}[]).
connecting = [accent]連線中……
reconnecting = [accent]重新連接中……
connecting.data = [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.
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!
@@ -344,6 +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.import = 匯入存檔
save.newslot = 存檔名稱:
save.rename = 重新命名
@@ -479,14 +491,6 @@ editor.rules = 規則:
editor.generation = 自動生成:
editor.objectives = 目標
editor.locales = Locale Bundles
editor.patches.guide = Patch Guide
editor.patches = Content Patches
editor.patch = Patchset: {0}
editor.patches.none = [lightgray]No patchsets loaded.
editor.patches.errors = Patchset Errors
editor.patches.importerror = Failed to import patchset
editor.patches.delete.confirm = Are you sure you want to delete this patchset?
editor.patch.fields = {0} fields
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.
@@ -511,6 +515,75 @@ editor.filters.prioritizecustom = Custom Priority
editor.filters.planetselect = Planet Selection
editor.shiftx = X位移
editor.shifty = Y位移
asset.patch = Patch
asset.content = Content
asset.bundle = Translation Bundle
asset.image = Image
asset.sound = Sound
asset.music = Music
content.unit = Unit
content.item = Item
content.liquid = Liquid
content.block = Block
content.planet = Planet
content.weather = Weather
content.status = Status Effect
patches = Content Patches
patch.set = Patchset: {0}
patch.none = [lightgray]No patchsets loaded.
patch.errors = Patchset Errors
patch.importerror = Failed to import patchset
patch.delete.confirm = Are you sure you want to delete this patchset?
patch.path = Path:
patch.fields = {0} fields
bundle.lines = {0} lines
images = Images
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.
workshop = 工作坊
waves.title = 波次
waves.team = Team
@@ -529,7 +602,6 @@ waves.spawn.first = [lightgray](first {0})
waves.max = 最大單位數
waves.guardian = 守衛者
waves.preview = 預覽
waves.edit = 編輯……
waves.random = 隨機
waves.copy = 複製到剪貼簿
waves.load = 從剪貼簿載入
@@ -556,6 +628,7 @@ all = All
editor.default = [lightgray](預設)
details = 詳細資訊……
edit = 編輯……
edit.menu = Edit...
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?
@@ -1068,6 +1141,7 @@ stat.targetsground = 攻擊地面目標
stat.crushdamage = Crush Damage
stat.legsplashdamage = Leg Splash Damage
stat.itemsmoved = 移動速度
stat.itemsmoved.info = Throughput is often not linear and tied to FPS/TPS.
stat.launchtime = 發射間隔
stat.shootrange = 範圍
stat.size = 大小
@@ -1545,6 +1619,7 @@ rules.enemyCheat = 電腦無限資源
rules.blockhealthmultiplier = 建築物耐久度加成
rules.blockdamagemultiplier = 建築物傷害加成
rules.unitfactoryactivation = Unit Factory Activation Delay
rules.unitfactoryactivation.objective = Unit Factories Activating: {0}
rules.unitbuildspeedmultiplier = 單位建設速度加成
rules.unitcostmultiplier = 單位生產花費倍率
rules.unithealthmultiplier = 單位血量加成
@@ -1586,7 +1661,7 @@ rules.invasions = Enemy Sector Invasions
rules.legacylaunchpads = Legacy Launch Pad Mechanics
rules.legacylaunchpads.info = Allows using launch pads without landing pads, as in 7.0.
landingpad.legacy.disabled = [scarlet]\ue815 Disabled[lightgray] (Legacy Launch Pads enabled)
rules.showspawns = Show Enemy Spawns
rules.hidespawns = Hide Enemy Spawns
rules.randomwaveai = Unpredictable Wave AI
rules.pauseDisabled = Disable Pausing
rules.fire = 火
@@ -2615,7 +2690,7 @@ unit.risso.description = 對附近所有敵人發射大量飛彈和子彈的迷
unit.minke.description = 對附近陸上敵人發射大砲和普通子彈的小型迫砲艇。
unit.bryde.description = 對敵人發射遠程高射砲彈以及飛彈的巡邏艇。
unit.sei.description = 對敵人發射大量飛彈和穿甲彈。
unit.omura.description = 對敵人發射遠程穿透型砲彈。建造曳光戰機。
unit.omura.description = 對敵人發射遠程穿透型砲彈。
unit.alpha.description = 抵禦敵軍對核心:碎片的攻擊。建造建築物。
unit.beta.description = 抵禦敵軍對核心:基地的攻擊。建造建築物。
unit.gamma.description = 抵禦敵軍對核心:核子的攻擊。建造建築物。
@@ -2691,6 +2766,7 @@ lst.setprop = Sets a property of a unit or building.
lst.effect = Create a particle effect.
lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most.
lst.playsound = Plays a sound.\nVolume and pan can be a global value, or calculated based on position.
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.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
Binary file not shown.
Binary file not shown.
+1
View File
@@ -17,6 +17,7 @@ const floatp = method => new Floatp(){get: method}
const cons = method => new Cons(){get: method}
const prov = method => new Prov(){get: method}
const func = method => new Func(){get: method}
const getRealClass = value => Vars.mods.getScripts().getClass(value);
const newEffect = (lifetime, renderer) => new Effect.Effect(lifetime, new Effect.EffectRenderer({render: renderer}))
Call = Packages.mindustry.gen.Call
+4 -2
View File
@@ -19,6 +19,7 @@ const floatp = method => new Floatp(){get: method}
const cons = method => new Cons(){get: method}
const prov = method => new Prov(){get: method}
const func = method => new Func(){get: method}
const getRealClass = value => Vars.mods.getScripts().getClass(value);
const newEffect = (lifetime, renderer) => new Effect.Effect(lifetime, new Effect.EffectRenderer({render: renderer}))
Call = Packages.mindustry.gen.Call
@@ -75,6 +76,7 @@ importPackage(Packages.mindustry.content)
importPackage(Packages.mindustry.core)
importPackage(Packages.mindustry.ctype)
importPackage(Packages.mindustry.editor)
importPackage(Packages.mindustry.editor.data)
importPackage(Packages.mindustry.entities)
importPackage(Packages.mindustry.entities.abilities)
importPackage(Packages.mindustry.entities.bullet)
@@ -95,6 +97,7 @@ importPackage(Packages.mindustry.maps.filters)
importPackage(Packages.mindustry.maps.generators)
importPackage(Packages.mindustry.maps.planet)
importPackage(Packages.mindustry.mod)
importPackage(Packages.mindustry.mod.data)
importPackage(Packages.mindustry.net)
importPackage(Packages.mindustry.service)
importPackage(Packages.mindustry.type)
@@ -113,7 +116,6 @@ importPackage(Packages.mindustry.world.blocks.defense.turrets)
importPackage(Packages.mindustry.world.blocks.distribution)
importPackage(Packages.mindustry.world.blocks.environment)
importPackage(Packages.mindustry.world.blocks.heat)
importPackage(Packages.mindustry.world.blocks.legacy)
importPackage(Packages.mindustry.world.blocks.liquid)
importPackage(Packages.mindustry.world.blocks.logic)
importPackage(Packages.mindustry.world.blocks.payloads)
@@ -185,7 +187,7 @@ const LaunchItemEvent = Packages.mindustry.game.EventType.LaunchItemEvent
const SectorInvasionEvent = Packages.mindustry.game.EventType.SectorInvasionEvent
const SectorLoseEvent = Packages.mindustry.game.EventType.SectorLoseEvent
const SaveLoadEvent = Packages.mindustry.game.EventType.SaveLoadEvent
const ContentPatchLoadEvent = Packages.mindustry.game.EventType.ContentPatchLoadEvent
const DataPatchLoadEvent = Packages.mindustry.game.EventType.DataPatchLoadEvent
const WorldLoadEndEvent = Packages.mindustry.game.EventType.WorldLoadEndEvent
const WorldLoadBeginEvent = Packages.mindustry.game.EventType.WorldLoadBeginEvent
const WorldLoadEvent = Packages.mindustry.game.EventType.WorldLoadEvent
+2 -10
View File
@@ -105,20 +105,12 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform
@Override
public Sound loadSync(AssetManager manager, String fileName, Fi file, SoundParameter parameter){
if(parameter != null && parameter.sound != null){
mainExecutor.submit(() -> parameter.sound.load(file));
parameter.sound.loadLazy(file);
return parameter.sound;
}else{
Sound sound = new Sound();
mainExecutor.submit(() -> {
try{
sound.load(file);
}catch(Throwable t){
Log.err("Error loading sound: " + file, t);
}
});
sound.loadLazy(file);
return sound;
}
}
+7 -1
View File
@@ -232,6 +232,8 @@ public class Vars implements Loadable{
public static Fi customMapDirectory;
/** data subdirectory used for custom map previews */
public static Fi mapPreviewDirectory;
/** directory for extracted assets */
public static Fi assetCacheDirectory;
/** tmp subdirectory for map conversion */
public static Fi tmpDirectory;
/** data subdirectory used for saves */
@@ -263,7 +265,7 @@ public class Vars implements Loadable{
public static Locale[] locales;
//the main executor will only have at most [cores] number of threads active
public static ExecutorService mainExecutor = Threads.executor("Main Executor", OS.cores);
public static ExecutorService mainExecutor = Core.executor;
public static FileTree tree = new FileTree();
public static Net net;
@@ -280,6 +282,7 @@ public class Vars implements Loadable{
public static GlobalVars logicVars;
public static MapEditor editor;
public static AvoidanceProcess avoidance;
public static DataAssetCache assetCache;
public static GameService service = new GameService();
public static Universe universe;
@@ -339,6 +342,7 @@ public class Vars implements Loadable{
saveDirectory = dataDirectory.child("saves/");
tmpDirectory = dataDirectory.child("tmp/");
modDirectory = dataDirectory.child("mods/");
assetCacheDirectory = dataDirectory.child("assetCache");
schematicDirectory = dataDirectory.child("schematics/");
bebuildDirectory = dataDirectory.child("be_builds/");
serverCacheFile = dataDirectory.child("server_list.json");
@@ -364,6 +368,7 @@ public class Vars implements Loadable{
fogControl = new FogControl();
bases = new BaseRegistry();
logicVars = new GlobalVars();
assetCache = new DataAssetCache();
javaPath =
new Fi(OS.prop("java.home")).child("bin/java").exists() ? new Fi(OS.prop("java.home")).child("bin/java").absolutePath() :
Core.files.local("jre/bin/java").exists() ? Core.files.local("jre/bin/java").absolutePath() : // Unix
@@ -384,6 +389,7 @@ public class Vars implements Loadable{
emptyTile = new Tile(Short.MAX_VALUE - 20, Short.MAX_VALUE - 20);
});
assetCache.load();
mods.load();
maps.load();
}
+18 -10
View File
@@ -99,14 +99,14 @@ public class BlockIndexer{
Item drop;
int qx = tile.x / quadrantSize, qy = tile.y / quadrantSize;
if(tile.block() == Blocks.air){
if((drop = tile.drop()) != null){
if((drop = tile.drop()) != null && ores.length > drop.id){
//add position of quadrant to list
if(ores[drop.id] == null) ores[drop.id] = new IntSeq[quadWidth][quadHeight];
if(ores[drop.id][qx][qy] == null) ores[drop.id][qx][qy] = new IntSeq(false, 16);
ores[drop.id][qx][qy].add(tile.pos());
allOres.increment(drop);
}
}else if((drop = tile.wallDrop()) != null){
}else if((drop = tile.wallDrop()) != null && wallOres.length > drop.id){
//add position of quadrant to list
if(wallOres[drop.id] == null) wallOres[drop.id] = new IntSeq[quadWidth][quadHeight];
if(wallOres[drop.id][qx][qy] == null) wallOres[drop.id][qx][qy] = new IntSeq(false, 16);
@@ -242,7 +242,7 @@ public class BlockIndexer{
int pos = tile.pos();
if(tile.block() == Blocks.air){
if(drop != null){ //floor
if(drop != null && ores.length > drop.id){ //floor
if(ores[drop.id] == null) ores[drop.id] = new IntSeq[quadWidth][quadHeight];
if(ores[drop.id][qx][qy] == null) ores[drop.id][qx][qy] = new IntSeq(false, 16);
if(ores[drop.id][qx][qy].addUnique(pos)){
@@ -255,7 +255,7 @@ public class BlockIndexer{
if(old == 1) updatePresentOres();
}
}else{
if(wallDrop != null){ //wall
if(wallDrop != null && wallOres.length > wallDrop.id){ //wall
if(wallOres[wallDrop.id] == null) wallOres[wallDrop.id] = new IntSeq[quadWidth][quadHeight];
if(wallOres[wallDrop.id][qx][qy] == null) wallOres[wallDrop.id][qx][qy] = new IntSeq(false, 16);
if(wallOres[wallDrop.id][qx][qy].addUnique(pos)){
@@ -264,7 +264,7 @@ public class BlockIndexer{
}
}
if(drop != null && ores != null && ores[drop.id] != null && ores[drop.id][qx][qy] != null && ores[drop.id][qx][qy].removeValue(pos)){ //floor
if(drop != null && ores != null && drop.id < ores.length && ores[drop.id] != null && ores[drop.id][qx][qy] != null && ores[drop.id][qx][qy].removeValue(pos)){ //floor
int old = allOres.increment(drop, -1);
if(old == 1) updatePresentOres();
}
@@ -274,7 +274,7 @@ public class BlockIndexer{
/** @return whether a certain block is anywhere on this map. */
public boolean isBlockPresent(Block block){
return blocksPresent != null && blocksPresent[block.id];
return blocksPresent != null && block.id < blocksPresent.length && blocksPresent[block.id];
}
private void clearFlags(){
@@ -454,6 +454,10 @@ public class BlockIndexer{
}
public Building findEnemyTile(Team team, float x, float y, float range, BuildingPriorityf priority, Boolf<Building> pred){
return findEnemyTile(team, x, y, range, priority, pred, null);
}
public Building findEnemyTile(Team team, float x, float y, float range, BuildingPriorityf priority, Boolf<Building> pred, @Nullable Team source){
Building target = null;
float targetDist = 0;
@@ -461,7 +465,7 @@ public class BlockIndexer{
Team enemy = activeTeams.items[i];
if(enemy == team || (enemy == Team.derelict && !state.rules.coreCapture)) continue;
Building candidate = indexer.findTile(enemy, x, y, range, b -> pred.get(b) && b.isDiscovered(team), true);
Building candidate = findTile(enemy, x, y, range, b -> pred.get(b) && b.isDiscovered(team), true, source);
if(candidate == null) continue;
//if a block has the same priority, the closer one should be targeted
@@ -488,6 +492,10 @@ public class BlockIndexer{
}
public Building findTile(Team team, float x, float y, float range, Boolf<Building> pred, boolean usePriority){
return findTile(team, x, y, range, pred, usePriority, null);
}
public Building findTile(Team team, float x, float y, float range, Boolf<Building> pred, boolean usePriority, @Nullable Team source){
Building closest = null;
float dst = 0;
var buildings = team.data().buildingTree;
@@ -499,7 +507,7 @@ public class BlockIndexer{
for(int i = 0; i < breturnArray.size; i++){
var next = breturnArray.items[i];
if(!pred.get(next) || !next.block.targetable) continue;
if(!pred.get(next) || (next.team != source && !next.block.targetable)) continue;
float bdst = next.dst(x, y) - next.hitSize() / 2f;
if(bdst < range && (closest == null ||
@@ -517,7 +525,7 @@ public class BlockIndexer{
/** Find the closest ore block relative to a position. */
public Tile findClosestOre(float xp, float yp, Item item){
if(ores[item.id] != null){
if(item.id < ores.length && ores[item.id] != null){
float minDst = 0f;
Tile closest = null;
for(int qx = 0; qx < quadWidth; qx++){
@@ -544,7 +552,7 @@ public class BlockIndexer{
/** Find the closest ore wall relative to a position. */
public Tile findClosestWallOre(float xp, float yp, Item item){
//(stolen from foo's client :))))
if(wallOres[item.id] != null){
if(item.id < wallOres.length && wallOres[item.id] != null){
float minDst = 0f;
Tile closest = null;
for(int qx = 0; qx < quadWidth; qx++){
@@ -0,0 +1,27 @@
package mindustry.audio;
import arc.audio.*;
import arc.util.*;
/** In serialization contexts, data assets may not be loaded yet. This provides a way to lazily get music from the asset manager on demand. */
public class MusicContainer{
public String name = "";
private @Nullable Music cached;
private boolean accessed;
public MusicContainer(String name){
this.name = name;
}
public MusicContainer(){
}
public Music get(){
if(accessed) return cached;
accessed = true;
return cached = SoundControl.findMusic(name);
}
}
+55 -7
View File
@@ -33,7 +33,7 @@ public class SoundControl{
protected long lastPlayed;
protected @Nullable Music current;
protected float fade;
protected boolean silenced;
protected boolean silenced, keepSilent;
protected boolean wasPlaying;
protected AudioFilter filter = new BiquadFilter(){{
@@ -50,7 +50,7 @@ public class SoundControl{
boolean boss = state.rules.spawns.contains(group -> group.getSpawned(state.wave - 2) > 0 && group.effect == StatusEffects.boss);
if(boss){
playOnce(bossMusic.random(lastRandomPlayed));
playOnce(getBossMusic().random(lastRandomPlayed));
}else if(Mathf.chance(musicWaveChance)){
playRandom();
}
@@ -159,7 +159,10 @@ public class SoundControl{
Core.audio.setPaused(Core.audio.soundBus.id, state.isPaused());
if(state.isMenu()){
if(keepSilent){
keepSilent = false;
stop();
}else if(state.isMenu()){
silenced = false;
if(ui.planet.isShown()){
play(ui.planet.state.planet.launchMusic);
@@ -175,7 +178,7 @@ public class SoundControl{
//this just fades out the last track to make way for ingame music
silence();
if(Core.settings.getBool("alwaysmusic")){
if(alwaysPlayMusic()){
if(current == null){
playRandom();
}
@@ -191,6 +194,10 @@ public class SoundControl{
updateLoops();
}
public void keepSilent(){
keepSilent = true;
}
protected void updateLoops(){
//clear loops when in menu
if(!state.isGame()){
@@ -233,17 +240,48 @@ public class SoundControl{
});
}
public void playMusic(@Nullable Music music, boolean interrupt){
if(interrupt && current != null){
current.stop();
current = null;
}
playOnce(music);
}
public boolean isPlaying(){
return current != null && current.isPlaying();
}
/** Plays a random track.*/
public void playRandom(){
if(state.boss() != null){
playOnce(bossMusic.random(lastRandomPlayed));
playOnce(getBossMusic().random(lastRandomPlayed));
}else if(isDark()){
playOnce(darkMusic.random(lastRandomPlayed));
playOnce(getDarkMusic().random(lastRandomPlayed));
}else{
playOnce(ambientMusic.random(lastRandomPlayed));
playOnce(getAmbientMusic().random(lastRandomPlayed));
}
}
protected boolean alwaysPlayMusic(){
return state.rules.alwaysPlayMusic || Core.settings.getBool("alwaysmusic") || (state.getPlanet() != null && state.getPlanet().alwaysPlayMusic);
}
protected Seq<Music> getBossMusic(){
if(state.rules.darkMusic != null) return state.rules.darkMusic.map(MusicContainer::get).removeAll(m -> m == null);
return state.getPlanet() != null && state.getPlanet().darkMusic != null ? state.getPlanet().darkMusic : bossMusic;
}
protected Seq<Music> getAmbientMusic(){
if(state.rules.ambientMusic != null) return state.rules.ambientMusic.map(MusicContainer::get).removeAll(m -> m == null);
return state.getPlanet() != null && state.getPlanet().ambientMusic != null ? state.getPlanet().ambientMusic : ambientMusic;
}
protected Seq<Music> getDarkMusic(){
if(state.rules.darkMusic != null) return state.rules.darkMusic.map(MusicContainer::get).removeAll(m -> m == null);
return state.getPlanet() != null && state.getPlanet().darkMusic != null ? state.getPlanet().darkMusic : darkMusic;
}
/** Whether to play dark music.*/
protected boolean isDark(){
if(player.team().data().hasCore() && player.team().data().core().healthf() < 0.85f){
@@ -345,4 +383,14 @@ public class SoundControl{
int soundID;
float curVolume, totalVolume;
}
public static @Nullable Music findMusic(String name){
if(name == null) return null;
Music cached = Core.assets.getOrNull(name, Music.class);
if(cached == null) cached = Core.assets.getOrNull(name + ".ogg", Music.class);
if(cached == null) cached = Core.assets.getOrNull(name + ".mp3", Music.class);
if(cached == null) cached = Core.assets.getOrNull("music/" + name + ".ogg", Music.class);
if(cached == null) cached = Core.assets.getOrNull("music/" + name + ".mp3", Music.class);
return cached;
}
}
+1 -1
View File
@@ -78,7 +78,7 @@ public class SoundPriority{
sameGroup(shootArc, shootPulsar);
for(var sound : Core.assets.getAll(Sound.class, new Seq<>())){
sound.setMinConcurrentInterrupt(Math.min(0.25f, sound.getLength() * 0.5f));
sound.setMinConcurrentInterruptFraction(0.25f, 0.5f);
}
mechStepSmall.setMinConcurrentInterrupt(0.5f);
+15 -15
View File
@@ -719,52 +719,52 @@ public class Blocks{
sclMax = 100f;
}};
boulder = new Prop("boulder"){{
boulder = new StaticProp("boulder"){{
variants = 2;
stone.asFloor().decoration = craters.asFloor().decoration = charr.asFloor().decoration = this;
}};
snowBoulder = new Prop("snow-boulder"){{
snowBoulder = new StaticProp("snow-boulder"){{
variants = 2;
snow.asFloor().decoration = ice.asFloor().decoration = iceSnow.asFloor().decoration = salt.asFloor().decoration = this;
}};
shaleBoulder = new Prop("shale-boulder"){{
shaleBoulder = new StaticProp("shale-boulder"){{
variants = 2;
shale.asFloor().decoration = this;
}};
sandBoulder = new Prop("sand-boulder"){{
sandBoulder = new StaticProp("sand-boulder"){{
variants = 2;
sand.asFloor().decoration = this;
}};
daciteBoulder = new Prop("dacite-boulder"){{
daciteBoulder = new StaticProp("dacite-boulder"){{
variants = 2;
dacite.asFloor().decoration = this;
}};
basaltBoulder = new Prop("basalt-boulder"){{
basaltBoulder = new StaticProp("basalt-boulder"){{
variants = 2;
basalt.asFloor().decoration = hotrock.asFloor().decoration = darksand.asFloor().decoration = magmarock.asFloor().decoration = this;
}};
carbonBoulder = new Prop("carbon-boulder"){{
carbonBoulder = new StaticProp("carbon-boulder"){{
variants = 2;
carbonStone.asFloor().decoration = this;
}};
ferricBoulder = new Prop("ferric-boulder"){{
ferricBoulder = new StaticProp("ferric-boulder"){{
variants = 2;
ferricStone.asFloor().decoration = ferricCraters.asFloor().decoration = this;
}};
beryllicBoulder = new Prop("beryllic-boulder"){{
beryllicBoulder = new StaticProp("beryllic-boulder"){{
variants = 2;
beryllicStone.asFloor().decoration = this;
}};
yellowStoneBoulder = new Prop("yellow-stone-boulder"){{
yellowStoneBoulder = new StaticProp("yellow-stone-boulder"){{
variants = 2;
yellowStone.asFloor().decoration = regolith.asFloor().decoration = yellowStonePlates.asFloor().decoration = this;
}};
@@ -801,22 +801,22 @@ public class Blocks{
shadowOffset = -2.5f;
}};
crystallineBoulder = new Prop("crystalline-boulder"){{
crystallineBoulder = new StaticProp("crystalline-boulder"){{
variants = 2;
crystallineStone.asFloor().decoration = this;
}};
redIceBoulder = new Prop("red-ice-boulder"){{
redIceBoulder = new StaticProp("red-ice-boulder"){{
variants = 3;
redIce.asFloor().decoration = this;
}};
rhyoliteBoulder = new Prop("rhyolite-boulder"){{
rhyoliteBoulder = new StaticProp("rhyolite-boulder"){{
variants = 3;
rhyolite.asFloor().decoration = roughRhyolite.asFloor().decoration = this;
}};
redStoneBoulder = new Prop("red-stone-boulder"){{
redStoneBoulder = new StaticProp("red-stone-boulder"){{
variants = 4;
denseRedStone.asFloor().decoration = redStone.asFloor().decoration = this;
}};
@@ -2091,7 +2091,7 @@ public class Blocks{
requirements(Category.distribution, with(Items.copper, 1, Items.lead, 1, Items.titanium, 1));
health = 65;
speed = 0.08f;
displayedSpeed = 11f;
displayedSpeed = 10f;
}};
plastaniumConveyor = new StackConveyor("plastanium-conveyor"){{
+3 -3
View File
@@ -74,7 +74,7 @@ public class Planets{
ruleSetter = r -> {
r.waveTeam = Team.malis;
r.placeRangeCheck = false;
r.showSpawns = true;
r.hideSpawns = false;
r.fog = true;
r.staticFog = true;
r.lighting = false;
@@ -82,7 +82,7 @@ public class Planets{
r.onlyDepositCore = true;
};
campaignRuleDefaults.fog = true;
campaignRuleDefaults.showSpawns = true;
campaignRuleDefaults.hideSpawns = false;
campaignRuleDefaults.rtsAI = true;
unlockedOnLand.add(Blocks.coreBastion);
@@ -141,7 +141,7 @@ public class Planets{
ruleSetter = r -> {
r.waveTeam = Team.crux;
r.placeRangeCheck = false;
r.showSpawns = false;
r.hideSpawns = true;
r.coreDestroyClear = true;
};
showRtsAIRule = true;
+5 -2
View File
@@ -85,7 +85,7 @@ public class TechTree{
/** For roots only. If true, this needs to be unlocked before it is selectable in the research dialog. Does not apply when you are on the planet itself. */
public boolean requiresUnlock = false;
/** Requirement node. */
public @Nullable TechNode parent;
public @Nullable TechNode parent, rootNode;
/** Multipliers for research costs on a per-item basis. Inherits from parent. */
public @Nullable ObjectFloatMap<Item> researchCostMultipliers;
/** Content to be researched. */
@@ -104,6 +104,7 @@ public class TechTree{
public TechNode(@Nullable TechNode parent, UnlockableContent content, ItemStack[] requirements){
if(parent != null){
parent.children.add(this);
rootNode = parent.rootNode == null ? parent : parent.rootNode;
planet = parent.planet;
researchCostMultipliers = parent.researchCostMultipliers;
}else if(researchCostMultipliers == null){
@@ -194,7 +195,9 @@ public class TechTree{
//save finished requirements by item type
for(ItemStack stack : finishedRequirements){
Core.settings.put("req-" + content.name + "-" + stack.item.name, stack.amount);
String key = "req-" + content.name + "-" + stack.item.name;
//don't write a bunch of zeroes to the settings
if(Core.settings.getInt(key, 0) != stack.amount) Core.settings.put(key, stack.amount);
}
}
}
+14 -1
View File
@@ -194,7 +194,7 @@ public class ContentLoader{
if(list.size > 0 && list.peek() == content){
list.pop();
}
throw new IllegalArgumentException("Two content objects cannot have the same name! (issue: '" + content.name + "')");
throw new IllegalArgumentException("Two content objects defined with the same name: '" + content.name + "'");
}
if(currentMod != null){
content.minfo.mod = currentMod;
@@ -266,6 +266,19 @@ public class ContentLoader{
return (ObjectMap<String, T>)contentNameMap[type.ordinal()];
}
/** Only use this for modded/data patcher content. */
public void remove(@Nullable Content content){
if(content == null) return;
var type = content.getContentType();
getBy(type).remove(content);
if(content instanceof MappableContent m){
getNamesBy(type).remove(m.name);
if(nameMap.get(m.name) == m) nameMap.remove(m.name);
}
content.removeContent();
}
//utility methods, just makes things a bit shorter
public Seq<Block> blocks(){
+4 -1
View File
@@ -8,6 +8,7 @@ import mindustry.gen.*;
import mindustry.maps.*;
import mindustry.mod.*;
import mindustry.type.*;
import mindustry.world.*;
import mindustry.world.blocks.*;
import static mindustry.Vars.*;
@@ -43,8 +44,10 @@ public class GameState{
public Attributes envAttrs = new Attributes();
/** Team data. Gets reset every new game. */
public Teams teams = new Teams();
/** Runs liquids in a new thread. */
public LiquidManager liquids = new LiquidManager();
/** Handles JSON edits of game content. */
public DataPatcher patcher = new DataPatcher();
public DataManager data = new DataManager();
/** Number of enemies in the game; only used clientside in servers. */
public int enemies;
/** Map being playtested (not edited!) */
+10 -7
View File
@@ -297,18 +297,19 @@ public class Logic implements ApplicationListener{
}
public void reset(){
State prev = state.getState();
state.patcher.unapply();
//recreate gamestate - sets state to menu
state = new GameState();
//fire change event, since it was technically changed
Events.fire(new StateChangeEvent(prev, State.menu));
Groups.clear();
Time.clear();
Events.fire(new ResetEvent());
world.tiles = new Tiles(0, 0);
state.liquids.stop();
state.data.unload();
State prev = state.getState();
//recreate gamestate - sets state to menu
state = new GameState();
//fire change event, since it was technically changed
Events.fire(new StateChangeEvent(prev, State.menu));
Core.settings.manualSave();
}
@@ -559,6 +560,8 @@ public class Logic implements ApplicationListener{
runWave();
}
state.liquids.checkUpdate();
//apply weather attributes
state.envAttrs.clear();
state.envAttrs.add(state.rules.attributes);
+55 -3
View File
@@ -13,6 +13,7 @@ import arc.util.serialization.*;
import arc.util.serialization.JsonValue.*;
import mindustry.*;
import mindustry.annotations.Annotations.*;
import mindustry.audio.*;
import mindustry.core.GameState.*;
import mindustry.entities.*;
import mindustry.entities.units.*;
@@ -89,7 +90,7 @@ public class NetClient implements ApplicationListener{
}
ui.loadfrag.hide();
ui.loadfrag.show("@connecting.data");
ui.loadfrag.show("@connecting.establish");
ui.loadfrag.setButton(() -> {
ui.loadfrag.hide();
@@ -146,11 +147,53 @@ public class NetClient implements ApplicationListener{
});
net.handleClient(WorldStream.class, data -> {
Log.info("Received world data: @ bytes.", data.stream.available());
Log.info("Received world data: @", Strings.formatByteCount(data.stream.available()));
NetworkIO.loadWorld(new InflaterInputStream(data.stream));
finishConnecting();
});
net.handleClient(AssetRequirementStream.class, data -> {
Seq<String> required = NetworkIO.readRequiredAssets(new InflaterInputStream(data.stream));
ShortSeq missing = new ShortSeq();
for(int i = 0; i < required.size; i++){
if(!assetCache.has(required.get(i))){
missing.add((short)i);
}
}
Log.info("Requesting @ asset(s) from the server.", missing.size);
Call.requestAssets(missing.toArray());
});
net.handleClient(StreamBegin.class, data -> {
boolean isWorld = data.type == Net.packetIdWorldStream, isAssets = data.type == Net.packetIdAssetStream;
if(isWorld || isAssets){
ui.loadfrag.showProgressBar();
ui.loadfrag.setProgress(0f);
ui.loadfrag.snapProgress();
ui.loadfrag.setText(Core.bundle.format(isWorld ? "receiving.world" : "receiving.assets", Strings.formatByteCount(data.total)));
}
if(isAssets){
//make this new thread block as it loads the assets
Threads.daemon(() -> {
Log.info("Receiving asset data: @", Strings.formatByteCount(data.total));
try{
NetworkIO.loadAssets(data.incrementalStream);
//after receiving assets, tell the server that the client is ready to handle the world
Core.app.post(Call::requestWorld);
}catch(Exception e){
Core.app.post(() -> {
ui.showException("@receiving.assets.fail", e);
disconnectQuietly();
});
}
});
}
});
}
public void addPacketHandler(String type, Cons<String> handler){
@@ -199,6 +242,15 @@ public class NetClient implements ApplicationListener{
clientPacketReliable(type, contents);
}
@Remote(variants = Variant.both)
public static void playMusic(String musicName, boolean interrupt){
if(musicName == null || headless) return;
//play null = stop music
Music music = SoundControl.findMusic(musicName);
control.sound.playMusic(music, interrupt);
}
@Remote(variants = Variant.both, unreliable = true, called = Loc.server)
public static void sound(Sound sound, float volume, float pitch, float pan){
if(sound == null || headless) return;
@@ -418,7 +470,7 @@ public class NetClient implements ApplicationListener{
net.setClientLoaded(false);
ui.loadfrag.show("@connecting.data");
ui.loadfrag.show("@connecting.establish");
ui.loadfrag.setButton(() -> {
ui.loadfrag.hide();
+69 -10
View File
@@ -21,6 +21,7 @@ import mindustry.gen.*;
import mindustry.graphics.*;
import mindustry.io.TypeIO.*;
import mindustry.logic.*;
import mindustry.mod.data.*;
import mindustry.net.*;
import mindustry.net.Administration.*;
import mindustry.net.Packets.*;
@@ -30,7 +31,6 @@ import mindustry.world.meta.*;
import java.io.*;
import java.net.*;
import java.nio.*;
import java.util.zip.*;
import static arc.util.Log.*;
import static mindustry.Vars.*;
@@ -306,7 +306,7 @@ public class NetServer implements ApplicationListener{
//playing in pvp mode automatically assigns players to teams
player.team(assignTeam(player));
sendWorldData(player);
sendWorldAndAssets(player);
platform.updateRPC();
@@ -316,6 +316,17 @@ public class NetServer implements ApplicationListener{
registerCommands();
}
public void sendWorldAndAssets(Player player){
if(state.data.hasExternalAssets()){
player.con.determiningAssets = true;
player.con.receivingAssets = false;
player.con.hasConnected = false;
sendAssetRequirements(player);
}else{
sendWorldData(player);
}
}
@Override
public void init(){
mods.eachClass(mod -> mod.registerClientCommands(clientCommands));
@@ -513,15 +524,21 @@ public class NetServer implements ApplicationListener{
return assigner.assign(current, players);
}
public void sendWorldData(Player player){
ByteArrayOutputStream stream = new ByteArrayOutputStream();
DeflaterOutputStream def = new FastDeflaterOutputStream(stream);
NetworkIO.writeWorld(player, def);
WorldStream data = new WorldStream();
data.stream = new ByteArrayInputStream(stream.toByteArray());
player.con.sendStream(data);
public void sendAssetRequirements(Player player){
var assets = state.data.getAllExternalAssets();
mainExecutor.submit(() -> {
var stream = new ByteArrayOutputStream();
NetworkIO.writeRequiredAssets(new FastDeflaterOutputStream(stream), assets);
player.con.sendStreamAsync(new AssetRequirementStream(), stream);
});
}
debug("Packed @ bytes of world data to @ (@ / @)", stream.size(), player.name, player.con.address, player.uuid());
public void sendWorldData(Player player){
var stream = new ByteArrayOutputStream();
NetworkIO.writeWorld(player, new FastDeflaterOutputStream(stream));
player.con.sendStream(new WorldStream(), stream);
debug("Packed @ of world data to @ (@ / @)", Strings.formatByteCount(stream.size()), player.name, player.con.address, player.uuid());
}
public void addPacketHandler(String type, Cons2<Player, String> handler){
@@ -889,6 +906,48 @@ public class NetServer implements ApplicationListener{
}
}
@Remote(targets = Loc.client, priority = PacketPriority.high)
public static void requestWorld(Player player){
if(!player.con.hasBegunConnecting || player.con.determiningAssets || !player.con.receivingAssets || player.con.hasConnected) return;
player.con.receivingAssets = false;
netServer.sendWorldData(player);
}
@Remote(targets = Loc.client, priority = PacketPriority.high)
public static void requestAssets(Player player, short[] ids){
if(!player.con.hasBegunConnecting || !player.con.determiningAssets || player.con.receivingAssets || player.con.hasConnected) return;
player.con.determiningAssets = false;
player.con.receivingAssets = true;
if(ids.length == 0){ //no assets required, all cached
player.con.receivingAssets = false;
netServer.sendWorldData(player);
}else{
Seq<DataAsset> res = new Seq<>();
Seq<DataAsset> allAssets = state.data.getAllExternalAssets();
for(short id : ids){
if(id >= allAssets.size || id < 0) continue;
res.add(allAssets.get(id));
}
//packing the data and reading it from disk can be async; it shouldn't need to block the main thread.
mainExecutor.submit(() -> {
try{
var stream = new ByteArrayOutputStream();
NetworkIO.writeAssets(stream, res);
debug("Packed @ of asset data to @ (@ / @)", Strings.formatByteCount(stream.size()), player.name, player.con.address, player.uuid());
player.con.sendStreamAsync(new AssetStream(), stream);
}catch(Exception e){
Log.err(e);
}
});
}
}
@Remote(targets = Loc.client, priority = PacketPriority.high)
public static void connectConfirm(Player player){
if(player.con.kicked) return;
+2 -2
View File
@@ -13,8 +13,8 @@ public enum PerfCounter{
public static final PerfCounter[] all = values();
static final int meanWindow = 30;
static final int refreshTimeMillis = 500;
static final int meanWindow = 120;
static final int refreshTimeMillis = 100;
private long valueRefreshTime;
private float refreshValue;
+4 -67
View File
@@ -2,22 +2,18 @@ package mindustry.core;
import arc.*;
import arc.files.*;
import arc.func.*;
import arc.math.*;
import arc.struct.*;
import arc.util.*;
import arc.util.serialization.*;
import mindustry.mod.*;
import mindustry.net.*;
import mindustry.net.Net.*;
import mindustry.type.*;
import mindustry.ui.dialogs.*;
import mindustry.ui.FileChooser.*;
import rhino.*;
import java.net.*;
import static mindustry.Vars.*;
public interface Platform{
/** Dynamically creates a class loader for a jar file. This loader must be child-first. */
@@ -106,68 +102,9 @@ public interface Platform{
default void shareFile(Fi file){
}
default void export(String name, String extension, FileWriter writer){
if(!ios){
platform.showFileChooser(false, extension, file -> {
ui.loadAnd(() -> {
try{
writer.write(file);
}catch(Throwable e){
ui.showException(e);
Log.err(e);
}
});
});
}else{
ui.loadAnd(() -> {
try{
Fi result = Core.files.local(name + "." + extension);
writer.write(result);
platform.shareFile(result);
}catch(Throwable e){
ui.showException(e);
Log.err(e);
}
});
}
}
/**
* Show a file chooser.
* @param cons Selection listener
* @param open Whether to open or save files
* @param extension File extension to filter
* @param title The title of the native dialog
*/
default void showFileChooser(boolean open, String title, String extension, Cons<Fi> cons){
defaultFileDialog(open, title, extension, cons);
}
/**
* Show a file chooser for multiple file types.
* @param cons Selection listener
* @param extensions File extensions to filter
*/
default void showMultiFileChooser(Cons<Fi> cons, String... extensions){
defaultMultiFileChooser(cons, extensions);
}
default void showFileChooser(boolean open, String extension, Cons<Fi> cons){
showFileChooser(open, open ? "@open": "@save", extension, cons);
}
static void defaultFileDialog(boolean open, String title, String extension, Cons<Fi> cons){
new FileChooser(title, file -> file.extEquals(extension), open, file -> {
if(!open){
cons.get(file.parent().child(file.nameWithoutExtension() + "." + extension));
}else{
cons.get(file);
}
}).show();
}
static void defaultMultiFileChooser(Cons<Fi> cons, String... extensions){
new FileChooser("@open", file -> Structs.contains(extensions, file.extension().toLowerCase()), true, cons).show();
/** Do not call directly; use the builder pattern in {@link mindustry.ui.FileChooser}. */
default void showFileChooser(FileChooserParams params){
throw new IllegalArgumentException("Not implemented on this platform!");
}
/** Hide the app. Android only. */
+41 -30
View File
@@ -198,6 +198,8 @@ public class Renderer implements ApplicationListener{
camera.width = graphics.getWidth() / camerascale;
camera.height = graphics.getHeight() / camerascale;
Lod.update();
if(state.isMenu()){
landTime = 0f;
graphics.clear(Color.black);
@@ -580,38 +582,47 @@ public class Renderer implements ApplicationListener{
return;
}
FrameBuffer buffer = new FrameBuffer(w, h);
try{
Lod.disable = true;
FrameBuffer buffer = new FrameBuffer(w, h);
drawWeather = false;
float vpW = camera.width, vpH = camera.height, px = camera.position.x, py = camera.position.y;
disableUI = true;
camera.width = w;
camera.height = h;
camera.position.x = w / 2f + tilesize / 2f;
camera.position.y = h / 2f + tilesize / 2f;
buffer.begin(Color.clear);
draw();
Draw.flush();
byte[] lines = ScreenUtils.getFrameBufferPixels(0, 0, w, h, true);
buffer.end();
disableUI = false;
camera.width = vpW;
camera.height = vpH;
camera.position.set(px, py);
drawWeather = true;
buffer.dispose();
drawWeather = false;
float vpW = camera.width, vpH = camera.height, px = camera.position.x, py = camera.position.y;
disableUI = true;
camera.width = w;
camera.height = h;
camera.position.x = w / 2f + tilesize / 2f;
camera.position.y = h / 2f + tilesize / 2f;
buffer.begin(Color.clear);
draw();
Draw.flush();
byte[] lines = ScreenUtils.getFrameBufferPixels(0, 0, w, h, true);
buffer.end();
disableUI = false;
camera.width = vpW;
camera.height = vpH;
camera.position.set(px, py);
drawWeather = true;
buffer.dispose();
mainExecutor.submit(() -> {
for(int i = 0; i < lines.length; i += 4){
lines[i + 3] = (byte)255;
}
Pixmap fullPixmap = new Pixmap(w, h);
Buffers.copy(lines, 0, fullPixmap.pixels, lines.length);
Fi file = screenshotDirectory.child("screenshot-" + Time.millis() + ".png");
PixmapIO.writePng(file, fullPixmap);
fullPixmap.dispose();
app.post(() -> ui.showInfoFade(bundle.format("screenshot", file.toString())));
});
}catch(Throwable e){
Log.err(e);
Vars.ui.showException("@screenshot.error", e);
}finally{
Lod.disable = false;
}
Threads.thread(() -> {
for(int i = 0; i < lines.length; i += 4){
lines[i + 3] = (byte)255;
}
Pixmap fullPixmap = new Pixmap(w, h);
Buffers.copy(lines, 0, fullPixmap.pixels, lines.length);
Fi file = screenshotDirectory.child("screenshot-" + Time.millis() + ".png");
PixmapIO.writePng(file, fullPixmap);
fullPixmap.dispose();
app.post(() -> ui.showInfoFade(bundle.format("screenshot", file.toString())));
});
}
public static class EnvRenderer{
+7 -2
View File
@@ -130,7 +130,7 @@ public class UI implements ApplicationListener, Loadable{
Dialog.setHideAction(() -> sequence(fadeOut(0.1f)));
Tooltips.getInstance().animations = false;
Tooltips.getInstance().textProvider = text -> new Tooltip(t -> t.background(Styles.black6).margin(4f).add(text));
Tooltips.getInstance().textProvider = text -> new Tooltip(t -> t.background(Styles.black8).margin(4f).add(text));
if(mobile){
Tooltips.getInstance().offsetY += Scl.scl(60f);
}
@@ -717,7 +717,12 @@ public class UI implements ApplicationListener, Loadable{
/** Shows a menu that hides when another followUp-menu is shown or when nothing is selected.
* @see UI#showMenu(String, String, String[][], Intc) */
public void showFollowUpMenu(int menuId, String title, String message, String[][] options, Intc callback) {
Dialog dialog = newMenuDialog(title, message, options, (option, myself) -> callback.get(option));
Dialog dialog = newMenuDialog(title, message, options, (option, myself) -> {
callback.get(option);
if(!state.isGame()){
myself.hide();
}
});
dialog.closeOnBack(() -> {
followUpMenus.remove(menuId);
callback.get(-1);
-1
View File
@@ -299,7 +299,6 @@ public class World{
private void setSectorRules(Sector sector, boolean saveInfo){
state.map = new Map(StringMap.of("name", sector.preset == null ? sector.planet.localizedName + "; Sector " + sector.id : sector.preset.localizedName));
state.rules.sector = sector;
state.rules.weather.clear();
sector.planet.generator.addWeather(sector, state.rules);
+11 -1
View File
@@ -3,8 +3,10 @@ package mindustry.ctype;
import arc.files.*;
import arc.util.*;
import mindustry.*;
import mindustry.mod.*;
import mindustry.annotations.Annotations.*;
import mindustry.mod.Mods.*;
import mindustry.mod.*;
import mindustry.mod.data.*;
/** Base class for a content type that is loaded in {@link mindustry.core.ContentLoader}. */
@NoPatch
@@ -12,6 +14,8 @@ public abstract class Content implements Comparable<Content>{
public short id;
/** Info on which mod this content was loaded from. */
public ModContentInfo minfo = new ModContentInfo();
/** If true, this content is invalid (added in a data patch and then removed). */
public boolean removed;
public Content(){
this.id = (short)Vars.content.getBy(getContentType()).size;
@@ -24,6 +28,10 @@ public abstract class Content implements Comparable<Content>{
*/
public abstract ContentType getContentType();
/** Called when this content is removed in a data patch. */
@CallSuper
public void removeContent(){}
/** Called after all content and modules are created. Do not use to load regions or texture data! */
public void init(){}
@@ -76,5 +84,7 @@ public abstract class Content implements Comparable<Content>{
public @Nullable String error;
/** Base throwable that caused the error. */
public @Nullable Throwable baseError;
/** If this was loaded as part of a save, this is the associated content asset. Null for mods. */
public @Nullable ContentAsset asset;
}
}
+26 -19
View File
@@ -8,30 +8,37 @@ import mindustry.world.*;
/** Do not rearrange, ever! */
public enum ContentType{
item(Item.class),
block(Block.class),
mech_UNUSED(null),
bullet(BulletType.class),
liquid(Liquid.class),
status(StatusEffect.class),
unit(UnitType.class),
weather(Weather.class),
effect_UNUSED(null),
sector(SectorPreset.class),
loadout_UNUSED(null),
typeid_UNUSED(null),
error(null),
planet(Planet.class),
ammo_UNUSED(null),
team(TeamEntry.class),
unitCommand(UnitCommand.class),
unitStance(UnitStance.class);
item("items", Item.class),
block("blocks", Block.class),
mech_UNUSED,
bullet("bullets", BulletType.class),
liquid("liquids", Liquid.class),
status("statuses", StatusEffect.class),
unit("units", UnitType.class),
weather("weather", Weather.class),
effect_UNUSED,
sector("sectors", SectorPreset.class),
loadout_UNUSED,
typeid_UNUSED,
error,
planet("planets", Planet.class),
ammo_UNUSED(),
team("teams", TeamEntry.class),
unitCommand("unitCommands", UnitCommand.class),
unitStance("unitStances", UnitStance.class);
public static final ContentType[] all = values();
public final @Nullable Class<? extends Content> contentClass;
public final String folderName;
ContentType(Class<? extends Content> contentClass){
ContentType(){
this.contentClass = null;
this.folderName = "unused";
}
ContentType(String folderName, Class<? extends Content> contentClass){
this.contentClass = contentClass;
this.folderName = folderName;
}
}
@@ -173,7 +173,7 @@ public abstract class UnlockableContent extends MappableContent{
if(!makeNew || !packer.has(name + "-outline")){
String regName = name + (makeNew ? "-outline" : "");
if(packer.registerOutlined(regName)){
PixmapRegion base = Core.atlas.getPixmap(region);
PixmapRegion base = packer.get(region);
var result = Pixmaps.outline(base, outlineColor, outlineRadius);
Drawf.checkBleed(result);
packer.add(page, regName, result);
@@ -185,7 +185,7 @@ public abstract class UnlockableContent extends MappableContent{
protected void makeOutline(MultiPacker packer, TextureRegion region, String name, Color outlineColor, int outlineRadius){
if(region.found() && packer.registerOutlined(name)){
PixmapRegion base = Core.atlas.getPixmap(region);
PixmapRegion base = packer.get(region);
var result = Pixmaps.outline(base, outlineColor, outlineRadius);
Drawf.checkBleed(result);
packer.add(PageType.main, name, result);
@@ -246,7 +246,7 @@ public class EditorRenderer implements Disposable{
tmpTiles.clear();
if(!cache.isEmpty()){
cache.build(renderer.blocks.floor.getIndexData());
cache.build(SpriteIndices.get());
chunks[cx][cy] = cache;
}
}
@@ -94,7 +94,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
t.button("@editor.import", Icon.download, () -> createDialog("@editor.import",
"@editor.importmap", "@editor.importmap.description", Icon.download, (Runnable)loadDialog::show,
"@editor.importfile", "@editor.importfile.description", Icon.file, (Runnable)() ->
platform.showFileChooser(true, mapExtension, file -> ui.loadAnd(() -> {
FileChooser.open(mapExtension).submit(file -> ui.loadAnd(() -> {
maps.tryCatchMapError(() -> {
if(MapIO.isImage(file)){
ui.showInfo("@editor.errorimage");
@@ -105,7 +105,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
})),
"@editor.importimage", "@editor.importimage.description", Icon.fileImage, (Runnable)() ->
platform.showFileChooser(true, "png", file ->
FileChooser.open("png").submit(file ->
ui.loadAnd(() -> {
try{
Pixmap pixmap = new Pixmap(file);
@@ -124,9 +124,9 @@ public class MapEditorDialog extends Dialog implements Disposable{
t.button("@editor.export", Icon.upload, () -> createDialog("@editor.export",
"@editor.exportfile", "@editor.exportfile.description", Icon.file,
(Runnable)() -> platform.export(editor.tags.get("name", "unknown"), mapExtension, file -> MapIO.writeMap(file, editor.createMap(file))),
(Runnable)() -> FileChooser.export(editor.tags.get("name", "unknown"), mapExtension, file -> MapIO.writeMap(file, editor.createMap(file))),
"@editor.exportimage", "@editor.exportimage.description", Icon.fileImage,
(Runnable)() -> platform.export(editor.tags.get("name", "unknown"), "png", file -> {
(Runnable)() -> FileChooser.export(editor.tags.get("name", "unknown"), "png", file -> {
Pixmap out = MapIO.writeImage(editor.tiles());
file.writePng(out);
out.dispose();
@@ -831,6 +831,10 @@ public class MapEditorDialog extends Dialog implements Disposable{
rebuildBlockSelection("");
}
public void rebuildBlockSelection(){
rebuildBlockSelection("");
}
private void rebuildBlockSelection(String searchText){
blockSelection.clear();
+3 -2
View File
@@ -3,6 +3,7 @@ package mindustry.editor;
import arc.scene.ui.*;
import arc.struct.*;
import mindustry.*;
import mindustry.editor.data.*;
import mindustry.game.*;
import mindustry.gen.*;
import mindustry.io.*;
@@ -20,7 +21,7 @@ public class MapInfoDialog extends BaseDialog{
private MapObjectivesDialog objectives = new MapObjectivesDialog();
private MapLocalesDialog locales = new MapLocalesDialog();
private MapProcessorsDialog processors = new MapProcessorsDialog();
private MapPatchesDialog patches = new MapPatchesDialog();
private MapAssetsDialog patches = new MapAssetsDialog();
public MapInfoDialog(){
super("@editor.mapinfo");
@@ -117,7 +118,7 @@ public class MapInfoDialog extends BaseDialog{
r.row();
r.button("@editor.patches", Icon.file, style, () -> {
r.button("@patches", Icon.file, style, () -> {
hide();
patches.show();
}).marginLeft(10f);
@@ -486,8 +486,8 @@ public class MapObjectivesDialog extends BaseDialog{
buttons.defaults().size(160f, 64f).pad(2f);
buttons.button("@back", Icon.left, MapObjectivesDialog.this::hide);
buttons.button("@add", Icon.add, () -> getProvider(MapObjective.class).get(new TypeInfo(MapObjective.class), canvas::query));
buttons.button("@waves.edit", Icon.edit, () -> {
BaseDialog dialog = new BaseDialog("@waves.edit");
buttons.button("@edit.menu", Icon.edit, () -> {
BaseDialog dialog = new BaseDialog("@edit.menu");
dialog.addCloseButton();
dialog.setFillParent(false);
dialog.cont.table(Tex.button, t -> {
@@ -1,163 +0,0 @@
package mindustry.editor;
import arc.*;
import arc.func.*;
import arc.scene.ui.TextButton.*;
import arc.scene.ui.layout.*;
import arc.struct.*;
import arc.util.*;
import arc.util.serialization.*;
import mindustry.*;
import mindustry.gen.*;
import mindustry.ui.*;
import mindustry.ui.dialogs.*;
import static mindustry.Vars.*;
public class MapPatchesDialog extends BaseDialog{
private Table list;
public MapPatchesDialog(){
super("@editor.patches");
shown(this::setup);
addCloseButton();
buttons.button("@editor.patches.guide", Icon.link, () -> Core.app.openURI(patchesGuideURL)).size(200, 64f);
buttons.button("@add", Icon.add, () -> showImport(this::addPatch)).size(200f, 64f);
cont.top();
getCell(cont).grow();
cont.pane(t -> list = t);
}
private void setup(){
list.clearChildren();
var patches = state.patcher.patches;
if(patches.isEmpty()){
list.add("@editor.patches.none");
}else{
Table t = list;
t.defaults().pad(4f);
float h = 50f;
for(var patch : patches){
int fields = countFields(patch.json);
if(patch.warnings.size > 0){
t.button(Icon.warning, Styles.graySquarei, iconMed, () -> {
BaseDialog dialog = new BaseDialog("@editor.patches.errors");
dialog.cont.top().pane(p -> {
p.top();
for(var warning : patch.warnings){
p.table(Styles.grayPanel, in -> {
in.add(warning.replaceAll("\t", " "), Styles.monoLabel).grow().wrap();
}).margin(6f).growX().pad(3f).row();
}
}).grow();
dialog.addCloseButton();
dialog.show();
}).size(h);
}else{
t.add().size(h);
}
t.button((patch.name.isEmpty() ? "<unnamed>\n" : "[accent]" + patch.name + "\n") + "[lightgray][[" + Core.bundle.format("editor.patch.fields", fields) + "]", Styles.grayt, () -> {
BaseDialog dialog = new BaseDialog(Core.bundle.format("editor.patch", patch.name.isEmpty() ? "<unnamed>" : patch.name));
dialog.cont.top().pane(p -> {
p.top();
p.table(Styles.grayPanel, in -> {
in.add(patch.patch.replaceAll("\t", " "), Styles.monoLabel).grow().wrap().left().labelAlign(Align.left);
}).margin(6f).growX().pad(5f).row();
}).grow();
dialog.addCloseButton();
dialog.show();
}).size(mobile ? 390f : 450f, h).margin(10f).with(b -> {
b.getLabel().setAlignment(Align.left, Align.left);
});
t.button(Icon.copy, Styles.graySquarei, Vars.iconMed, () -> {
Core.app.setClipboardText(patch.patch);
ui.showInfoFade("@copied");
}).size(h);
t.button(Icon.refresh, Styles.graySquarei, Vars.iconMed, () -> {
showImport(str -> addPatch(str, patches.indexOf(patch)));
}).size(h);
t.button(Icon.trash, Styles.graySquarei, iconMed, () -> {
ui.showConfirm("@editor.patches.delete.confirm", () -> {
patches.remove(patch);
setup();
});
}).size(h);
t.row();
}
}
}
void showImport(Cons<String> handler){
BaseDialog dialog = new BaseDialog("@editor.import");
dialog.cont.pane(p -> {
p.margin(10f);
p.table(Tex.button, t -> {
TextButtonStyle style = Styles.flatt;
t.defaults().size(280f, 60f).left();
t.row();
t.button("@schematic.copy.import", Icon.copy, style, () -> {
dialog.hide();
handler.get(Core.app.getClipboardText());
}).marginLeft(12f).disabled(b -> Core.app.getClipboardText() == null);
t.row();
t.button("@schematic.importfile", Icon.download, style, () -> platform.showMultiFileChooser(file -> {
dialog.hide();
handler.get(file.readString());
}, "json", "hjson", "json5")).marginLeft(12f);
t.row();
});
});
dialog.addCloseButton();
dialog.show();
}
void addPatch(String patch){
addPatch(patch, -1);
}
void addPatch(String patch, int replaceIndex){
var oldPatches = state.patcher.patches.copy();
try{
Jval.read(patch); //validation
Seq<String> patches = state.patcher.patches.map(p -> p.patch);
if(replaceIndex == -1){
patches.add(patch);
}else{
patches.set(replaceIndex, patch);
}
state.patcher.apply(patches);
setup();
}catch(Exception e){
state.patcher.patches.set(oldPatches);
ui.showException("@editor.patches.importerror", e);
}
}
int countFields(JsonValue value){
if(value.isObject() || value.isArray()){
int sum = 0;
for(var child : value){
sum += countFields(child);
}
return Math.max(sum, 1);
}else{
return 1;
}
}
}
@@ -49,8 +49,8 @@ public class WaveInfoDialog extends BaseDialog{
addCloseButton();
buttons.button("@waves.edit", Icon.edit, () -> {
BaseDialog dialog = new BaseDialog("@waves.edit");
buttons.button("@edit.menu", Icon.edit, () -> {
BaseDialog dialog = new BaseDialog("@edit.menu");
dialog.addCloseButton();
dialog.setFillParent(false);
dialog.cont.table(Tex.button, t -> {
@@ -0,0 +1,8 @@
package mindustry.editor.data;
import arc.scene.ui.layout.*;
public interface AssetView{
void build(MapAssetsDialog diag, Table table);
void buildButtons(MapAssetsDialog diag, Table buttons);
}
@@ -0,0 +1,274 @@
package mindustry.editor.data;
import arc.*;
import arc.files.*;
import arc.scene.style.*;
import arc.scene.ui.TextButton.*;
import arc.scene.ui.*;
import arc.scene.ui.layout.*;
import arc.struct.*;
import arc.util.*;
import mindustry.ctype.*;
import mindustry.gen.*;
import mindustry.graphics.*;
import mindustry.mod.*;
import mindustry.mod.data.*;
import mindustry.ui.*;
import mindustry.ui.dialogs.*;
import java.io.*;
import java.util.*;
import java.util.zip.*;
import static mindustry.Vars.*;
public class MapAssetsDialog extends BaseDialog{
private static final TextureRegionDrawable[] typeIcons = {
Icon.fileCode,
Icon.box,
Icon.fileText,
Icon.image,
Icon.volumeUp,
Icon.music
};
private AssetView[] views = {
new MapPatchesView(),
new MapContentView(),
new MapBundlesView(),
new MapImagesView(),
new MapAudioView(DataAssetType.sound),
new MapAudioView(DataAssetType.music),
};
TextField searchField;
@Nullable String searchString;
private Table list;
private DataAssetType currentType = DataAssetType.music;
public MapAssetsDialog(){
super("@patches");
shown(() -> {
searchString = null;
searchField.setText("");
changeType(DataAssetType.patch);
});
hidden(() -> {
list.clearChildren();
//in case items are added
DataPatcher.fixContentArrays();
//show new blocks
ui.editor.rebuildBlockSelection();
});
makeButtonOverlay();
titleTable.remove();
Table types = new Table();
types.defaults().size(50f).pad(4f);
types.button(Icon.menu, Styles.graySquarei, this::showEditMenu);
types.image(Tex.whiteui, Pal.accent).size(4f, 50f);
for(DataAssetType type : DataAssetType.all){
types.button(typeIcons[type.ordinal()], Styles.grayTogglei, () -> changeType(type))
.checked(b -> currentType == type).tooltip(type.localized());
}
types.image(Tex.whiteui, Pal.accent).size(4f, 50f);
types.table(Styles.grayPanel, t -> {
t.margin(8f);
t.label(() -> currentType.localized());
}).height(50f).width(Float.NEGATIVE_INFINITY);
types.add().growX();
types.button("@asset.guide", Icon.link, Styles.grayt, () -> Core.app.openURI(patchesGuideURL)).marginLeft(10f).size(200f, 50f).pad(4f);
cont.top().left();
cont.add(types).growX().left().row();
cont.table(search -> {
search.image(Icon.zoom);
searchField = search.field("", t -> {
searchString = t.length() > 0 ? t.toLowerCase() : null;
rebuild();
}).growX().get();
searchField.setMessageText("@search");
}).growX().row();
cont.pane(t -> list = t).grow().top();
}
void changeType(DataAssetType type){
currentType = type;
buttons.clearChildren();
addCloseButton();
views[currentType.ordinal()].buildButtons(this, buttons);
//make sure new assets appear correctly when switching to the content view
if(type == DataAssetType.content){
state.data.reloadContent(false);
state.data.regenerateContentSprites(false);
}
rebuild();
}
void rebuild(){
list.center().top();
list.clearChildren();
list.marginBottom(70f);
views[currentType.ordinal()].build(this, list);
}
void showEditMenu(){
BaseDialog dialog = new BaseDialog("@edit.menu");
dialog.cont.pane(p -> {
p.margin(10f);
p.table(Tex.button, t -> {
TextButtonStyle style = Styles.flatt;
t.defaults().size(280f, 60f).left();
t.button("@asset.importzip", Icon.download, style, () -> FileChooser.open("zip").submit(file -> {
//Android doesn't allow accessing the file contents outside the callback; other platforms either copy it already, or don't have dumb permission issues
Fi targetFile;
if(OS.isAndroid){
targetFile = tmpDirectory.child(file.name());
file.copyTo(targetFile);
}else{
targetFile = file;
}
dialog.hide();
ui.loadAnd(() -> {
try{
Seq<DataAsset> results = new Seq<>();
Fi zipped = new ZipFi(targetFile);
Seq<String> errors = new Seq<>();
//force regen
state.data.clearGeneratedImages();
for(var type : DataAssetType.all){
Fi folder = zipped.child(type.folder);
//content has sub-dirs based on type, which need to be passed as context to the reader
if(type == DataAssetType.content){
for(ContentType ctype : ContentAsset.loadableContent){
Fi subfolder = folder.child(ctype.folderName);
Seq<Fi> files = subfolder.findAll(f -> type.extensions.contains(f.extension().toLowerCase(Locale.ROOT)));
for(Fi cfile : files){
String path = cfile.absolutePath().substring(subfolder.absolutePath().length() + 1);
if(state.data.hasAssetNameOrPath(type, Strings.getFileNameWithoutExtension(path), path)){
errors.add("Asset of type '" + type + "' with name/path '" + path + "' already exists.");
continue;
}
try{
ContentAsset asset = new ContentAsset(cfile.absolutePath().substring(subfolder.absolutePath().length() + 1), ctype, cfile.readString());
results.add(asset);
}catch(Throwable e){
Log.err(e);
errors.add("Error loading content asset: " + cfile + ": " + Strings.getSimpleMessage( e));
}
}
}
}else{
Seq<Fi> files = folder.findAll(f -> type.extensions.contains(f.extension().toLowerCase(Locale.ROOT)));
for(Fi cfile : files){
String path = cfile.absolutePath().substring(folder.absolutePath().length() + 1);
if(state.data.hasAssetNameOrPath(type, Strings.getFileNameWithoutExtension(path), path)){
errors.add("Asset of type '" + type + "' with name/path '" + path + "' already exists.");
continue;
}
try{
var asset = type.create();
asset.readFromZip(path, cfile);
results.add(asset);
}catch(Throwable e){
Log.err(e);
errors.add("Error loading data asset: " + cfile + ": " + Strings.getSimpleMessage(e));
}
}
}
}
//close zip file contents
zipped.delete();
if(results.size > 0){
var prev = state.data.getAllAssets().copy();
prev.addAll(results);
prev.sort();
state.data.load(prev);
if(state.data.getContent().size > 0){
//TODO: packs twice (bad)
state.data.regenerateContentSprites(false);
}
rebuild();
}
var idiag = new BaseDialog("@asset.image.imports");
if(results.size > 0) idiag.cont.add(Core.bundle.format("asset.imported", results.size)).row();
if(!errors.isEmpty()){
idiag.cont.add("@asset.image.error").padBottom(10f).row();
idiag.cont.pane(ep -> {
ep.add(Seq.with(errors).toString("\n", s -> "[gray]- []" + s)).labelAlign(Align.left, Align.left).grow();
});
}else if(results.size == 0){
idiag.cont.add("@asset.import.none");
}
idiag.buttons.button("@ok", Icon.ok, idiag::hide).size(200f, 64f);
idiag.show();
}catch(Throwable e){
ui.showException(e);
}
});
})).marginLeft(12f).row();
t.button("@asset.exportzip", Icon.upload, style, () -> FileChooser.export("assets", "zip", file -> {
dialog.hide();
try(OutputStream fos = file.write(false, 8192); ZipOutputStream zos = new ZipOutputStream(fos)){
for(var asset : state.data.getAllAssets()){
String path = asset.getFullPath();
if(asset.isAlwaysEmbedded()){
zos.putNextEntry(new ZipEntry(path));
zos.write(asset.getData());
zos.closeEntry();
}else{
Fi cacheFile = asset.getCacheFile();
if(cacheFile == null) continue;
zos.putNextEntry(new ZipEntry(path));
zos.write(cacheFile.readBytes());
zos.closeEntry();
}
}
}
})).marginLeft(12f).row();
t.button("@asset.clearall", Icon.trash, style, () -> {
dialog.hide();
ui.showConfirm("@asset.clearall.confirm", () -> {
state.data.unload();
rebuild();
});
}).marginLeft(12f).row();
});
});
dialog.addCloseButton();
dialog.show();
}
}
@@ -0,0 +1,165 @@
package mindustry.editor.data;
import arc.*;
import arc.audio.*;
import arc.files.*;
import arc.scene.*;
import arc.scene.event.*;
import arc.scene.ui.*;
import arc.scene.ui.layout.*;
import arc.util.*;
import mindustry.*;
import mindustry.core.*;
import mindustry.gen.*;
import mindustry.mod.*;
import mindustry.mod.data.*;
import mindustry.ui.*;
import static mindustry.Vars.*;
public class MapAudioView implements AssetView{
public final DataAssetType type;
public @Nullable AudioSource lastPlaying;
public MapAudioView(DataAssetType type){
this.type = type;
}
@Override
public void build(MapAssetsDialog diag, Table list){
var assets = state.data.getAssets(type);
float h = 50f;
list.defaults().pad(4f);
for(var asset : assets){
if(diag.searchString != null && !asset.name.toLowerCase().contains(diag.searchString)) continue;
Fi file = asset.getCacheFile();
var audioSource = (AudioSource)Core.assets.getOrNull(DataAudioLoader.prefix + asset.name, (Class<?>)(type == DataAssetType.music ? Music.class : Sound.class));
if(file == null || audioSource == null || !audioSource.valid()){
list.button(Icon.warning, Styles.graySquarei, iconMed, () -> ui.showInfo(file == null ? "@asset.broken" : "@asset.audio.invalid")).size(h);
}else{
list.button(Icon.play, Styles.graySquarei, iconMed, () -> {
if(lastPlaying != null && lastPlaying.countPlaying() > 0){
lastPlaying.stop();
if(lastPlaying == audioSource){
return;
}
}
if(audioSource instanceof Music m){
lastPlaying = m;
m.play();
}else if(audioSource instanceof Sound s){
lastPlaying = s;
var bus = s.bus;
s.bus = control.sound.uiBus;
s.play();
s.bus = bus;
}
}).update(i -> i.getStyle().imageUp = audioSource != null && audioSource.countPlaying() > 0 ? Icon.pause : Icon.play).size(h);
}
list.table(Styles.grayPanel, in -> {
in.add("[accent]" + asset.name + "\n" + "[lightgray][[" + (audioSource == null ? "?" : UI.formatTime(audioSource.getLength() * 60f)) + "]").labelAlign(Align.left).grow();
if(audioSource instanceof Music m){
var slider = new Slider(0f, m.getLength(), 0.1f, false);
slider.moved(value -> {
if(lastPlaying == m){
m.setPosition(value);
}
});
//only ogg can seek
slider.touchable = asset.path.endsWith(".ogg") ? Touchable.enabled : Touchable.disabled;
slider.visible(() -> {
boolean valid = lastPlaying == m && m.isPlaying();
if(valid){
slider.setValue(m.getPosition(), false);
}
return valid;
});
Label label = new Label(() -> slider.visible ? UI.formatTime(slider.getValue() * 60f) : "");
label.setAlignment(Align.center);
label.setStyle(Styles.outlineLabel);
label.touchable = Touchable.disabled;
in.stack(slider, label).growX().height(42f);
}
}).size(mobile ? 390f : 450f, h).margin(10f);
list.button(Icon.export, Styles.graySquarei, Vars.iconMed, () -> FileChooser.export(asset.name, Strings.getFileExtension(asset.path), file::copyTo)).size(h).disabled(file == null);
list.button(Icon.trash, Styles.graySquarei, iconMed, () -> {
ui.showConfirm("@asset.delete.confirm", () -> {
if(audioSource != null){
audioSource.dispose();
}
assets.remove(asset);
diag.rebuild();
});
}).size(h);
list.row();
}
if(list.getChildren().isEmpty()){
list.add("@patch.none");
}
list.add(new Element(){
@Override
public boolean remove(){
if(lastPlaying != null){
lastPlaying.stop();
}
return super.remove();
}
@Override
public void act(float delta){
if(lastPlaying != null && lastPlaying.countPlaying() > 0){
control.sound.keepSilent();
}
}
});
}
@Override
public void buildButtons(MapAssetsDialog diag, Table buttons){
buttons.button("@add", Icon.add, () -> {
FileChooser.open("ogg", "mp3").submitMulti(result -> {
var assets = state.data.getAssets(type);
for(Fi file : result){
try{
String name = file.nameWithoutExtension();
String path = file.name();
var other = state.data.getAssets(type).find(p -> (p.path.equalsIgnoreCase(path) || p.name.equalsIgnoreCase(name)));
if(other != null){
ui.showErrorMessage(Core.bundle.format("asset.exists", other.name + " (" + other.path + ")"));
return;
}
DataAsset asset = (type == DataAssetType.music ? new MusicAsset() : new SoundAsset());
asset.setPath(path);
asset.updateData(file.readBytes());
assets.add(asset);
}catch(Exception e){
ui.showException(e);
}
}
assets.sort();
state.data.reloadAudio();
diag.rebuild();
lastPlaying = null;
});
}).size(190f, 64f);
}
}
@@ -0,0 +1,163 @@
package mindustry.editor.data;
import arc.*;
import arc.files.*;
import arc.func.*;
import arc.scene.ui.TextButton.*;
import arc.scene.ui.layout.*;
import arc.struct.*;
import arc.util.*;
import arc.util.io.*;
import mindustry.*;
import mindustry.gen.*;
import mindustry.mod.data.*;
import mindustry.ui.*;
import mindustry.ui.dialogs.*;
import java.io.*;
import static mindustry.Vars.*;
public class MapBundlesView implements AssetView{
@Override
public void build(MapAssetsDialog diag, Table list){
float h = 50f;
var bundles = state.data.getBundles();
list.defaults().pad(4f);
for(var bundle : bundles){
if(diag.searchString != null && !bundle.name.toLowerCase().contains(diag.searchString)) continue;
Fi file = bundle.getCacheFile();
if(file == null){
list.button(Icon.warning, Styles.graySquarei, iconMed, () -> ui.showInfo("@asset.broken")).size(h);
}else{
list.add().size(h);
}
bundle.tryLoadCache();
list.button(("[accent]" + bundle.name + "\n") + "[lightgray][[" + Core.bundle.format("bundle.lines", (bundle.cachedBundle == null ? null : bundle.cachedBundle.size)) + "]", Styles.grayt, () -> {
BaseDialog dialog = new BaseDialog(bundle.name);
dialog.cont.top().pane(p -> {
p.top();
p.table(Styles.grayPanel, in -> {
try{
in.add(file.readString().replaceAll("\t", " "), Styles.monoLabel).grow().wrap().left().labelAlign(Align.left);
}catch(Exception e){
ui.showException(e);
}
}).margin(6f).growX().pad(5f).row();
}).grow();
dialog.addCloseButton();
dialog.show();
}).size(mobile ? 390f : 450f, h).margin(10f).with(b -> {
b.getLabel().setAlignment(Align.left, Align.left);
}).disabled(v -> file == null);
list.button(Icon.refresh, Styles.graySquarei, Vars.iconMed, () -> {
Cons<String> handler = str -> {
bundle.updateData(str.getBytes(Strings.utf8));
diag.rebuild();
};
BaseDialog dialog = new BaseDialog("@editor.import");
dialog.cont.pane(p -> {
p.margin(10f);
p.table(Tex.button, t -> {
TextButtonStyle style = Styles.flatt;
t.defaults().size(280f, 60f).left();
t.row();
t.button("@import.clipboard", Icon.copy, style, () -> {
dialog.hide();
handler.get(Core.app.getClipboardText());
}).marginLeft(12f).disabled(b -> Core.app.getClipboardText() == null);
t.row();
t.button("@import.file", Icon.download, style, () -> FileChooser.open("properties", "txt").submit(f -> {
dialog.hide();
handler.get(f.readString());
})).marginLeft(12f);
t.row();
});
});
dialog.addCloseButton();
dialog.show();
}).size(h);
list.button(Icon.export, Styles.graySquarei, Vars.iconMed, () -> {
BaseDialog dialog = new BaseDialog("@editor.export");
dialog.addCloseButton();
dialog.cont.pane(p -> {
p.margin(10f);
p.table(Tex.button, t -> {
TextButtonStyle style = Styles.flatt;
t.defaults().size(280f, 60f).left();
t.row();
t.button("@copy.clipboard", Icon.copy, style, () -> {
dialog.hide();
try{
Core.app.setClipboardText(file.readString());
ui.showInfoFade("@copied");
}catch(Exception e){
ui.showException(e);
}
}).marginLeft(12f).disabled(b -> Core.app.getClipboardText() == null);
t.row();
t.button("@export.file", Icon.export, style, () -> {
dialog.hide();
FileChooser.export(bundle.name, "properties", file::copyTo);
}).marginLeft(12f);
t.row();
});
});
dialog.show();
}).size(h).disabled(file == null);
list.button(Icon.trash, Styles.graySquarei, iconMed, () -> {
ui.showConfirm("@asset.delete.confirm", () -> {
bundles.remove(bundle);
diag.rebuild();
});
}).size(h);
list.row();
}
if(list.getChildren().isEmpty()){
list.add("@patch.none");
}
}
@Override
public void buildButtons(MapAssetsDialog diag, Table buttons){
buttons.button("@add", Icon.add, () -> {
FileChooser.open("properties", "txt").submitMulti(files -> {
for(var file : files){
String path = file.name();
String text = file.readString();
try{
if(state.data.hasAssetPath(DataAssetType.bundle, path)){
ui.showErrorMessage(Core.bundle.format("asset.bundle.exists", path));
continue;
}
var map = new StringMap();
PropertiesUtils.load(map, new StringReader(text));
byte[] bytes = text.getBytes(Strings.utf8);
BundleAsset bundle = new BundleAsset();
bundle.setPath(path);
bundle.updateData(bytes);
state.data.getBundles().add(bundle);
}catch(Exception e){
ui.showException(e);
}
diag.rebuild();
}
});
}).size(190f, 64f);
}
}
@@ -0,0 +1,247 @@
package mindustry.editor.data;
import arc.*;
import arc.func.*;
import arc.graphics.*;
import arc.scene.event.*;
import arc.scene.style.*;
import arc.scene.ui.TextButton.*;
import arc.scene.ui.layout.*;
import arc.struct.*;
import arc.util.*;
import mindustry.*;
import mindustry.ctype.*;
import mindustry.gen.*;
import mindustry.graphics.*;
import mindustry.mod.data.*;
import mindustry.ui.*;
import mindustry.ui.dialogs.*;
import java.util.regex.*;
import static mindustry.Vars.*;
public class MapContentView implements AssetView{
private static final Pattern unsafeNamePattern = Pattern.compile("[\\[\\]{}`!@#$%^&8*();:,]");
static ObjectMap<ContentType, TextureRegionDrawable> contentIcons = ObjectMap.of(
ContentType.item, Icon.box,
ContentType.liquid, Icon.liquid,
ContentType.unit, Icon.units,
ContentType.block, Icon.distribution,
ContentType.planet, Icon.planet,
ContentType.weather, Icon.drizzle,
ContentType.status, Icon.power
);
@Override
public void build(MapAssetsDialog diag, Table list){
float h = 50f;
var contents = state.data.getContent();
ContentType lastType = null;
list.defaults().pad(4f);
for(var content : contents){
if(diag.searchString != null && !content.name.toLowerCase().contains(diag.searchString)) continue;
if(lastType != content.type){
lastType = content.type;
list.table(t -> {
t.left();
t.image(contentIcons.get(content.type)).color(Color.lightGray).size(iconSmall);
t.add("@content." + content.type.name()).left().color(Color.lightGray).padLeft(12f).padRight(4f);
t.image(Tex.whiteui).growX().color(Color.lightGray).height(4f);
}).colspan(6).fillX().padBottom(8f).row();
}
if(content.warnings.size > 0){
list.button(Icon.warning, Styles.graySquarei, iconMed, () -> {
BaseDialog dialog = new BaseDialog("@asset.content.errors");
dialog.cont.top().pane(p -> {
p.top();
var warns = content.warnings;
if(content.errored){
warns = new Seq<>();
warns.add(Iconc.warning + " This content has critical errors, and cannot be used until the errors are fixed.");
warns.addAll(content.warnings);
}
for(var warning : warns){
p.table(Styles.grayPanel, in -> {
in.add(warning.replaceAll("\t", " "), Styles.monoLabel).grow().wrap();
}).margin(6f).growX().pad(3f).row();
}
}).grow();
dialog.addCloseButton();
dialog.show();
}).size(h);
}else{
list.add().size(h);
}
list.button(content.content instanceof UnlockableContent u && (u.uiIcon.found() || u.fullIcon.found()) ? new TextureRegionDrawable(u.uiIcon.found() ? u.uiIcon : u.fullIcon) :
contentIcons.get(content.type, Icon.warning), Styles.graySquarei, iconMed, () -> {}).touchable(Touchable.disabled).size(h);
list.button(("[accent]" + content.name + "\n") + "[lightgray]" + Core.bundle.get("content." + content.type), Styles.grayt, () -> {
BaseDialog dialog = new BaseDialog(content.name);
dialog.cont.top().pane(p -> {
p.top();
p.table(Styles.grayPanel, in -> {
in.add(content.data.replaceAll("\t", " "), Styles.monoLabel).grow().wrap().left().labelAlign(Align.left);
}).margin(6f).growX().pad(5f).row();
}).grow();
dialog.addCloseButton();
dialog.show();
}).size(mobile ? 390f : 450f, h).margin(10f).with(b -> {
b.getLabel().setAlignment(Align.left, Align.left);
});
list.button(Icon.refresh, Styles.graySquarei, Vars.iconMed, () -> {
Cons<String> handler = str -> {
content.data = str;
ui.loadAnd(() -> {
state.data.reloadContent(false);
state.data.regenerateContentSprites(false);
diag.rebuild();
});
};
BaseDialog dialog = new BaseDialog("@editor.import");
dialog.cont.pane(p -> {
p.margin(10f);
p.table(Tex.button, t -> {
TextButtonStyle style = Styles.flatt;
t.defaults().size(280f, 60f).left();
t.row();
t.button("@import.clipboard", Icon.copy, style, () -> {
dialog.hide();
handler.get(Core.app.getClipboardText());
}).marginLeft(12f).disabled(b -> Core.app.getClipboardText() == null);
t.row();
t.button("@import.file", Icon.download, style, () -> FileChooser.open("json", "hjson", "json5").submit(file -> {
dialog.hide();
handler.get(file.readString());
})).marginLeft(12f);
t.row();
});
});
dialog.addCloseButton();
dialog.show();
}).size(h);
list.button(Icon.export, Styles.graySquarei, Vars.iconMed, () -> {
BaseDialog dialog = new BaseDialog("@editor.export");
dialog.addCloseButton();
dialog.cont.pane(p -> {
p.margin(10f);
p.table(Tex.button, t -> {
TextButtonStyle style = Styles.flatt;
t.defaults().size(280f, 60f).left();
t.row();
t.button("@copy.clipboard", Icon.copy, style, () -> {
dialog.hide();
Core.app.setClipboardText(content.data);
ui.showInfoFade("@copied");
}).marginLeft(12f).disabled(b -> Core.app.getClipboardText() == null);
t.row();
t.button("@export.file", Icon.export, style, () -> {
dialog.hide();
FileChooser.export(content.name, "json", file -> file.writeString(content.data));
}).marginLeft(12f);
t.row();
});
});
dialog.show();
}).size(h);
list.button(Icon.trash, Styles.graySquarei, iconMed, () -> {
ui.showConfirm("@asset.delete.confirm", () -> {
contents.remove(content);
Vars.content.remove(content.content);
diag.rebuild();
});
}).size(h);
list.row();
}
if(list.getChildren().isEmpty()){
list.add("@patch.none");
}
}
@Override
public void buildButtons(MapAssetsDialog diag, Table buttons){
buttons.button("@add", Icon.add, () -> showImport(diag)).size(190f, 64f);
}
void addContent(MapAssetsDialog diag, ContentType type, String path, String data){
ui.loadAnd(() -> {
ContentAsset asset = new ContentAsset(path, type, data);
state.data.getContent().add(asset);
state.data.reloadContent(false);
state.data.regenerateContentSprites(false);
diag.rebuild();
});
}
void showImport(MapAssetsDialog diag){
ContentType[] selected = {ContentType.item};
boolean[] invalid = {false};
BaseDialog choose = new BaseDialog("@asset.content.add");
choose.setFillParent(false);
choose.closeOnBack();
choose.cont.add("@name").padRight(10f);
var nameField = choose.cont.field("", text -> {})
.with(t -> {
t.setFilter((field, c) -> !Character.isWhitespace(c));
t.setValidator(MapContentView::isSafeContentName);
t.changed(() -> invalid[0] = content.byName(t.getText()) != null || !t.isValid());
}).width(400f).get();
choose.cont.row();
choose.cont.add("@asset.content.type").padRight(10f);
choose.cont.table(t -> {
t.table(Styles.grayPanel, c -> {
c.margin(8f);
c.label(() -> "@content." + selected[0].name());
}).height(50f).pad(4f).marginLeft(5f).marginRight(5f).width(160f);
t.image(Tex.whiteui, Pal.accent).size(4f, 50f).pad(4f);
for(ContentType type : ContentAsset.loadableContent){
t.button(contentIcons.get(type), Styles.grayTogglei, iconMed, () -> selected[0] = type).checked(b -> selected[0] == type).size(50f).pad(4f).tooltip("@content." + type.name());
}
});
choose.cont.row();
choose.cont.label(() -> !nameField.isValid() ? "@asset.content.badname" : "@asset.content.exists").colspan(2).visible(() -> invalid[0]);
choose.buttons.button("@cancel", Icon.cancel, choose::hide).size(170f, 64f);
choose.buttons.button("@asset.content.import.file", Icon.fileText, () -> FileChooser.open("json", "json5", "hjson").submit(file -> {
choose.hide();
addContent(diag, selected[0], nameField.getText() + ".json", file.readString());
diag.rebuild();
})).size(200f, 64f).disabled(b -> nameField.getText().isEmpty() || invalid[0]);
choose.buttons.button("@asset.content.import.clipboard", Icon.copy, () -> {
String text = Core.app.getClipboardText();
if(text == null) return;
choose.hide();
addContent(diag, selected[0], nameField.getText() + ".json", text);
}).size(200f, 64f).disabled(b -> nameField.getText().isEmpty() || invalid[0] || Core.app.getClipboardText() == null);
choose.show();
}
static boolean isSafeContentName(String name){
return Strings.isSafeFilename(name) && !unsafeNamePattern.matcher(name).find();
}
}
@@ -0,0 +1,314 @@
package mindustry.editor.data;
import arc.*;
import arc.files.*;
import arc.graphics.*;
import arc.graphics.g2d.TextureAtlas.*;
import arc.graphics.g2d.*;
import arc.scene.event.*;
import arc.scene.ui.TextButton.*;
import arc.scene.ui.layout.*;
import arc.struct.*;
import arc.util.*;
import mindustry.*;
import mindustry.gen.*;
import mindustry.mod.*;
import mindustry.mod.data.*;
import mindustry.ui.*;
import mindustry.ui.dialogs.*;
import java.io.*;
import java.util.concurrent.*;
import java.util.zip.*;
import static mindustry.Vars.*;
import static mindustry.mod.DataImagePacker.*;
public class MapImagesView implements AssetView{
@Override
public void buildButtons(MapAssetsDialog diag, Table buttons){
buttons.button("@add", Icon.add, () -> {
FileChooser.open("png", "jpeg", "jpg").submitMulti(results -> {
var images = getImages();
state.data.clearGeneratedImages();
for(var result : results){
try{
Pixmap pix = new Pixmap(result);
int width = pix.width;
int height = pix.height;
Pixmaps.bleed(pix);
byte[] bytes = PixmapIO.writePngBytes(pix);
pix.dispose();
if(width > DataPatcher.maxImageSize || height > DataPatcher.maxImageSize){
ui.showErrorMessage(Core.bundle.format("asset.image.toolarge", width, height, DataPatcher.maxImageSize, DataPatcher.maxImageSize));
return;
}
String name = result.nameWithoutExtension();
String path = result.name();
var other = images.find(p -> p.path.equalsIgnoreCase(path) || p.name.equalsIgnoreCase(name));
if(other != null){
ui.showErrorMessage(Core.bundle.format("asset.image.exists", other.name + " (" + other.path + ")"));
return;
}
byte[] hash = assetCache.add(bytes);
images.add(new ImageAsset(path, hash));
}catch(Exception e){
ui.showException(e);
}
}
images.sort();
state.data.regenerateContentSprites(true);
diag.rebuild();
});
}).size(190f, 64f);
buttons.button("@edit", Icon.menu, () -> {
BaseDialog dialog = new BaseDialog("@edit.menu");
dialog.cont.pane(p -> {
p.margin(10f);
p.table(Tex.button, t -> {
TextButtonStyle style = Styles.flatt;
t.defaults().size(280f, 60f).left();
t.button("@asset.image.importzip", Icon.download, style, () -> FileChooser.open("zip").submit(file -> {
//Android doesn't allow accessing the file contents outside the callback; other platforms either copy it already, or don't have dumb permission issues
Fi targetFile;
if(OS.isAndroid){
targetFile = tmpDirectory.child(file.name());
file.copyTo(targetFile);
}else{
targetFile = file;
}
dialog.hide();
ui.loadAnd(() -> {
try{
class Result{
int width, height;
Fi path;
byte[] hash; //null if width/height invalid
}
Seq<Future<?>> images = new Seq<>();
var errors = new CopyOnWriteArrayList<String>();
Fi zipped = new ZipFi(targetFile);
zipped.walk(ifile -> {
if(ifile.extEquals("png")){
images.add(mainExecutor.submit(() -> {
try{
Result res = new Result();
res.path = ifile;
byte[] bytes = ifile.readBytes();
Pixmap pix = new Pixmap(bytes);
res.width = pix.width;
res.height = pix.height;
if(res.width < DataPatcher.maxImageSize && res.height < DataPatcher.maxImageSize){
Pixmaps.bleed(pix);
bytes = PixmapIO.writePngBytes(pix);
res.hash = assetCache.add(bytes);
}
pix.dispose();
return res;
}catch(Throwable error){
errors.add("[accent]" + ifile.path() + "[white]: " + Strings.getSimpleMessage(error));
return null;
}
}));
}
});
Threads.awaitAll(images);
zipped.delete(); //closes the zip file
int imported = 0;
state.data.clearGeneratedImages();
for(var future : images){
var image = (Result)future.get();
if(image != null){
if(image.width > DataPatcher.maxImageSize || image.height > DataPatcher.maxImageSize || image.hash == null){
errors.add("[accent]" + image.path + "[white]: " + Core.bundle.format("asset.image.toolarge", image.width, image.height, DataPatcher.maxImageSize, DataPatcher.maxImageSize));
continue;
}
String path = image.path.pathWithoutExtension(), name = image.path.nameWithoutExtension();
var other = getImages().find(op -> !op.isGenerated() && (op.path.equalsIgnoreCase(path) || op.name.equalsIgnoreCase(name)));
if(other != null){
errors.add("[accent]" + image.path + "[white]: " + Core.bundle.format("asset.image.exists", other.name + " (" + other.path + ")").replace("\n", " "));
continue;
}
getImages().removeAll(i -> i.isGenerated() && i.name.equals(name));
getImages().add(new ImageAsset(path, image.hash));
imported ++;
}
}
getImages().sort();
state.data.reloadImages(getImages());
state.data.regenerateContentSprites(true);
diag.rebuild();
var idiag = new BaseDialog("@asset.image.imports");
if(imported > 0) idiag.cont.add(Core.bundle.format("asset.image.imported", imported)).row();
if(!errors.isEmpty()){
idiag.cont.add("@asset.image.error").padBottom(10f).row();
idiag.cont.pane(ep -> {
ep.add(Seq.with(errors).toString("\n", s -> "[gray]- []" + s)).labelAlign(Align.left, Align.left).grow();
});
}else if(imported == 0){
idiag.cont.add("@asset.image.none");
}
idiag.buttons.button("@ok", Icon.ok, idiag::hide).size(200f, 64f);
idiag.show();
}catch(Throwable e){
ui.showException(e);
}
});
})).marginLeft(12f).row();
t.button("@asset.image.exportzip", Icon.upload, style, () -> FileChooser.export("images", "zip", file -> {
dialog.hide();
try(OutputStream fos = file.write(false, 4096); ZipOutputStream zos = new ZipOutputStream(fos)){
for(var image : getImages()){
Fi cacheFile = image.getCacheFile();
if(cacheFile == null) continue;
zos.putNextEntry(new ZipEntry(image.path + ".png"));
zos.write(cacheFile.readBytes());
zos.closeEntry();
}
}
})).marginLeft(12f).row();
t.button("@asset.clearall", Icon.trash, style, () -> {
dialog.hide();
ui.showConfirm("@asset.image.clearall.confirm", () -> {
getImages().clear();
state.data.reloadImages(getImages());
diag.rebuild();
});
}).marginLeft(12f).row();
});
});
dialog.addCloseButton();
dialog.show();
});
}
@Override
public void build(MapAssetsDialog diag, Table inner){
inner.clearChildren();
inner.top().left();
float size = 200f;
int cols = (int)Math.max(1, Core.graphics.getWidth() / Scl.scl(size + 12f));
int i = 0;
for(var image : getImages()){
//showing generated images is confusing, so don't.
if(image.isGenerated()) continue;
if(diag.searchString != null && !image.path.toLowerCase().contains(diag.searchString)) continue;
TextureRegion region = Core.atlas.find(regionPrefix + image.name, "nomap");
boolean found = Core.atlas.has(regionPrefix + image.name);
@Nullable Fi cacheFile = image.getCacheFile();
int iwidth = found ? region.width : 1, iheight = found ? region.height : 1;
int ilength = cacheFile != null && cacheFile.exists() ? (int)cacheFile.length() : 0;
Runnable showInfo = () -> {
BaseDialog d = new BaseDialog("@asset.image.info");
float maxSize = Math.min(Core.graphics.getHeight(), Core.graphics.getHeight()) / Scl.scl(1f) * 0.8f - Scl.scl(64f + 60f);
d.cont.top();
d.cont.add(new BorderImage(region, 4f)).scaling(Scaling.fit).with(bi -> bi.drawAlpha = bi.forceNearest = true).size(maxSize).row();
d.cont.row().defaults().left();
boolean env = image.path.contains("blocks/environment/");
if(!found){
d.cont.add(Core.bundle.get("asset.image.packfailed") + (env ? "\n" + Core.bundle.get("asset.image.packfailed.env") : "")).row();
}
d.cont.add(Core.bundle.format("asset.image.name", image.name)).row();
d.cont.add(Core.bundle.format("asset.image.region.name", regionPrefix + image.name)).row();
d.cont.add(Core.bundle.format("asset.image.path", image.name)).row();
d.cont.add(Core.bundle.format("asset.image.env", env)).row();
d.cont.add(Core.bundle.format("asset.image.size", iwidth, iheight)).row();
d.cont.add(Core.bundle.format("asset.image.filesize", Strings.formatByteCount(ilength)));
d.addCloseButton();
d.show();
};
inner.table(Styles.grayPanel, t -> {
t.margin(5f);
t.top();
t.add(new BorderImage(region, 4f)).scaling(Scaling.fit).with(b -> b.drawAlpha = true).size(size - 10f).with(img -> {
img.addListener(new HandCursorListener());
img.clicked(showInfo);
}).row();
t.add((found ? "" : "[red]⚠[] ") + image.name).tooltip(regionPrefix + image.name + "\n[lightgray]" + image.path).ellipsis(true).left().width(size - 10f).growX().row();
t.add(iwidth + "x" + iheight).tooltip(Strings.formatByteCount(ilength)).color(Color.lightGray).left().growX().row();
t.table(b -> {
b.left();
b.defaults().size((size - 10f) / 4f);
var istyle = Styles.emptyi;
b.button(Icon.pencil, istyle, () -> {
ui.showTextInput("@save.rename", "@patch.path", image.path, res -> {
if(!res.endsWith(".png")) res = res + ".png";
Fi fi = new Fi(res);
String name = fi.nameWithoutExtension();
String path = fi.pathWithoutExtension();
var other = getImages().find(p -> p != image && !p.isGenerated() && (p.path.equalsIgnoreCase(path) || p.name.equalsIgnoreCase(name)));
if(other != null){
ui.showErrorMessage(Core.bundle.format("asset.image.exists", other.name + " (" + other.path + ")"));
}else{
//move and rename associated atlas region
if(region instanceof AtlasRegion at && at.name.equals(regionPrefix + image.name)){
var map = Core.atlas.getRegionMap();
map.remove(regionPrefix + image.name);
map.put(regionPrefix + name, at);
at.name = regionPrefix + name;
}
image.setPath(fi.path());
image.name = name;
diag.rebuild();
}
});
});
b.button(Icon.info, istyle, showInfo);
b.button(Icon.export, istyle, () -> {
FileChooser.export(image.name, "png", out -> image.getCacheFileNoNull().copyTo(out));
});
b.button(Icon.trash, istyle, () -> {
ui.showConfirm("@asset.image.delete.confirm", () -> {
Core.atlas.getRegionMap().remove(regionPrefix + image.name);
getImages().remove(image);
diag.rebuild();
});
}).padTop(2f);
}).growX();
}).pad(4f).width(size).uniformY();
if(++i % cols == 0){
inner.row();
}
}
if(inner.getChildren().isEmpty()){
inner.center().add("@none.found").pad(10f);
}
}
private Seq<ImageAsset> getImages(){
return Vars.state.data.getImages();
}
}
@@ -0,0 +1,161 @@
package mindustry.editor.data;
import arc.*;
import arc.func.*;
import arc.scene.ui.TextButton.*;
import arc.scene.ui.layout.*;
import arc.util.*;
import arc.util.serialization.*;
import mindustry.*;
import mindustry.gen.*;
import mindustry.mod.data.*;
import mindustry.ui.*;
import mindustry.ui.dialogs.*;
import static mindustry.Vars.*;
public class MapPatchesView implements AssetView{
@Override
public void buildButtons(MapAssetsDialog diag, Table buttons){
buttons.button("@add", Icon.add, () -> showImport(s -> {
addPatch(s);
diag.rebuild();
})).size(190f, 64f);
}
@Override
public void build(MapAssetsDialog diag, Table list){
float h = 50f;
var patches = state.data.getPatches();
list.defaults().pad(4f);
for(var patch : patches){
if(diag.searchString != null && !patch.name.toLowerCase().contains(diag.searchString)) continue;
int fields = countFields(patch.json);
if(patch.warnings.size > 0){
list.button(Icon.warning, Styles.graySquarei, iconMed, () -> {
BaseDialog dialog = new BaseDialog("@patch.errors");
dialog.cont.top().pane(p -> {
p.top();
for(var warning : patch.warnings){
p.table(Styles.grayPanel, in -> {
in.add(warning.replaceAll("\t", " "), Styles.monoLabel).grow().wrap();
}).margin(6f).growX().pad(3f).row();
}
}).grow();
dialog.addCloseButton();
dialog.show();
}).size(h);
}else{
list.add().size(h);
}
list.button((patch.name.isEmpty() ? "<unnamed>\n" : "[accent]" + patch.name + "\n") + "[lightgray][[" + Core.bundle.format("patch.fields", fields) + "]", Styles.grayt, () -> {
BaseDialog dialog = new BaseDialog(Core.bundle.format("patch.set", patch.name.isEmpty() ? "<unnamed>" : patch.name));
dialog.cont.top().pane(p -> {
p.top();
p.table(Styles.grayPanel, in -> {
in.add(patch.patch.replaceAll("\t", " "), Styles.monoLabel).grow().wrap().left().labelAlign(Align.left);
}).margin(6f).growX().pad(5f).row();
}).grow();
dialog.addCloseButton();
dialog.show();
}).size(mobile ? 390f : 450f, h).margin(10f).with(b -> {
b.getLabel().setAlignment(Align.left, Align.left);
});
list.button(Icon.copy, Styles.graySquarei, Vars.iconMed, () -> {
Core.app.setClipboardText(patch.patch);
ui.showInfoFade("@copied");
}).size(h);
list.button(Icon.refresh, Styles.graySquarei, Vars.iconMed, () -> {
showImport(str -> {
addPatch(str, patches.indexOf(patch));
diag.rebuild();
});
}).size(h);
list.button(Icon.trash, Styles.graySquarei, iconMed, () -> {
ui.showConfirm("@patch.delete.confirm", () -> {
patches.remove(patch);
diag.rebuild();
});
}).size(h);
list.row();
}
if(list.getChildren().isEmpty()){
list.add("@patch.none");
}
}
void showImport(Cons<String> handler){
BaseDialog dialog = new BaseDialog("@editor.import");
dialog.cont.pane(p -> {
p.margin(10f);
p.table(Tex.button, t -> {
TextButtonStyle style = Styles.flatt;
t.defaults().size(280f, 60f).left();
t.row();
t.button("@import.clipboard", Icon.copy, style, () -> {
dialog.hide();
handler.get(Core.app.getClipboardText());
}).marginLeft(12f).disabled(b -> Core.app.getClipboardText() == null);
t.row();
//currently doesn't allow multi import because it could be replacing exactly 1 patch
t.button("@import.file", Icon.download, style, () -> FileChooser.open("json", "hjson", "json5").submit(file -> {
dialog.hide();
handler.get(file.readString());
})).marginLeft(12f);
t.row();
});
});
dialog.addCloseButton();
dialog.show();
}
void addPatch(String patch){
addPatch(patch, -1);
}
void addPatch(String patch, int replaceIndex){
var patches = state.data.getPatches();
var oldPatches = patches.copy();
try{
Jval.read(patch); //validation
if(replaceIndex == -1){
patches.add(new PatchAsset(patch));
}else{
patches.set(replaceIndex, new PatchAsset(patch));
}
state.data.reloadPatches(patches);
}catch(Exception e){
patches.set(oldPatches);
ui.showException("@patch.importerror", e);
}
}
int countFields(JsonValue value){
if(value.isObject() || value.isArray()){
int sum = 0;
for(var child : value){
sum += countFields(child);
}
return Math.max(sum, 1);
}else{
return 1;
}
}
}
+2 -2
View File
@@ -4,11 +4,11 @@ import mindustry.annotations.Annotations.*;
import mindustry.gen.*;
class GroupDefs<G>{
@GroupDef(value = Entityc.class) G all;
@GroupDef(value = Entityc.class, update = true) G all;
@GroupDef(value = Playerc.class, mapping = true) G player;
@GroupDef(value = Bulletc.class, spatial = true, collide = true) G bullet;
@GroupDef(value = Unitc.class, spatial = true, mapping = true) G unit;
@GroupDef(value = Buildingc.class) G build;
@GroupDef(value = Buildingc.class, update = true) G build;
@GroupDef(value = Syncc.class, mapping = true) G sync;
@GroupDef(value = Drawc.class) G draw;
@GroupDef(value = Firec.class) G fire;
+6 -1
View File
@@ -265,13 +265,18 @@ public class Units{
/** Returns the closest target enemy. First, units are checked, then tile entities. */
public static Teamc closestTarget(Team team, float x, float y, float range, Boolf<Unit> unitPred, Boolf<Building> tilePred){
return closestTarget(team, x, y, range, null, unitPred, tilePred);
}
/** Returns the closest target enemy. First, units are checked, then tile entities. */
public static Teamc closestTarget(Team team, float x, float y, float range, @Nullable Team sourceTeam, Boolf<Unit> unitPred, Boolf<Building> tilePred){
if(team == Team.derelict) return null;
Unit unit = closestEnemy(team, x, y, range, unitPred);
if(unit != null){
return unit;
}else{
return findEnemyTile(team, x, y, range, tilePred);
return indexer.findEnemyTile(team, x, y, range, UnitSorts.buildingDefault, tilePred, sourceTeam);
}
}
@@ -0,0 +1,5 @@
package mindustry.entities.abilities;
public class EmptyDataAbility extends Ability{
}

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